]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.simd] all: merge master (57362e9) into dev.simd
authorCherry Mui <cherryyz@google.com>
Thu, 13 Nov 2025 21:43:45 +0000 (16:43 -0500)
committerCherry Mui <cherryyz@google.com>
Thu, 13 Nov 2025 21:54:07 +0000 (16:54 -0500)
Conflicts:

- src/cmd/compile/internal/ir/symtab.go
- src/cmd/compile/internal/ssa/prove.go
- src/cmd/compile/internal/ssa/rewriteAMD64.go
- src/cmd/compile/internal/ssagen/intrinsics.go
- src/cmd/compile/internal/typecheck/builtin.go
- src/internal/buildcfg/exp.go
- src/internal/strconv/ftoa.go
- test/codegen/stack.go

Manually resolved some conflicts:

- Use internal/strconv for simd.String, remove internal/ftoa
- prove.go is just copied from the one on the main branch. We
  have cherry-picked the changes to prove.go to main branch, so
  our copy is identical to an old version of the one on the main
  branch. There are CLs landed after our cherry-picks. Just copy
  it over to adopt the new code.

Merge List:

+ 2025-11-13 57362e9814 go/types, types2: check for direct cycles as a separate phase
+ 2025-11-13 099e0027bd cmd/go/internal/modfetch: consolidate global vars
+ 2025-11-13 028375323f cmd/go/internal/modfetch/codehost: fix flaky TestReadZip
+ 2025-11-13 4ebf295b0b runtime: prefer to restart Ps on the same M after STW
+ 2025-11-13 625d8e9b9c runtime/pprof: fix goroutine leak profile tests for noopt
+ 2025-11-13 4684a26c26 spec: remove cycle restriction for type parameters
+ 2025-11-13 0f9c8fb29d cmd/asm,cmd/internal/obj/riscv: add support for riscv compressed instructions
+ 2025-11-13 a15d036ce2 cmd/internal/obj/riscv: implement better bit pattern encoding
+ 2025-11-12 abb241a789 cmd/internal/obj/loong64: add {,X}VS{ADD,SUB}.{B/H/W/V}{,U} instructions support
+ 2025-11-12 0929d21978 cmd/go: keep objects alive while stopping cleanups
+ 2025-11-12 f03d06ec1a runtime: fix list test memory management for mayMoreStack
+ 2025-11-12 48127f656b crypto/internal/fips140/sha3: remove outdated TODO
+ 2025-11-12 c3d1d42764 sync/atomic: amend comments for Value.{Swap,CompareAndSwap}
+ 2025-11-12 e0807ba470 cmd/compile: don't clear ptrmask in fillptrmask
+ 2025-11-12 66318d2b4b internal/abi: correctly describe result in Name.Name doc comment
+ 2025-11-12 34aef89366 cmd/compile: use FCLASSD for subnormal checks on riscv64
+ 2025-11-12 0c28789bd7 net/url: disallow raw IPv6 addresses in host
+ 2025-11-12 4e761b9a18 cmd/compile: optimize liveness in stackalloc
+ 2025-11-12 956909ff84 crypto/x509: move BetterTLS suite from crypto/tls
+ 2025-11-12 6525f46707 cmd/link: change shdr and phdr from arrays to slices
+ 2025-11-12 d3aeba1670 runtime: switch p.gcFractionalMarkTime to atomic.Int64
+ 2025-11-12 8873e8bea2 runtime,runtime/pprof: clean up goroutine leak profile writing
+ 2025-11-12 b8b84b789e cmd/go: clarify the -o testflag is only for copying the binary
+ 2025-11-12 c761b26b56 mime: parse media types that contain braces
+ 2025-11-12 65858a146e os/exec: include Cmd.Start in the list of methods that run Cmd
+ 2025-11-11 4bfc3a9d14 std,cmd: go fix -any std cmd
+ 2025-11-11 2263d4aabd runtime: doubly-linked sched.midle list
+ 2025-11-11 046dce0e54 runtime: use new list type for spanSPMCs
+ 2025-11-11 5f11275457 runtime: reusable intrusive doubly-linked list
+ 2025-11-11 951cf0501b internal/trace/testtrace: fix flag name typos
+ 2025-11-11 2750f95291 cmd/go: implement accurate pseudo-versions for Mercurial
+ 2025-11-11 b709a3e8b4 cmd/go/internal/vcweb: cache hg servers
+ 2025-11-11 426ef30ecf cmd/go: implement -reuse for Mercurial repos
+ 2025-11-10 5241d114f5 spec: more precise prose for special case of append
+ 2025-11-10 cdf64106f6 go/types, types2: first argument to append must never be be nil
+ 2025-11-10 a0eb4548cf .gitignore: ignore go test artifacts
+ 2025-11-10 bf58e7845e internal/trace: add "command" to convert text traces to raw
+ 2025-11-10 052c192a4c runtime: fix lock rank for work.spanSPMCs.lock
+ 2025-11-10 bc5ffe5c79 internal/runtime/sys,math/bits: eliminate bounds checks on len8tab
+ 2025-11-10 32f8d6486f runtime: document that tracefpunwindoff applies to some profilers
+ 2025-11-10 1c1c1942ba cmd/go: remove redundant AVX regex in security flag checks
+ 2025-11-10 3b3d6b9e5d cmd/internal/obj/arm64: shorten constant integer loads
+ 2025-11-10 5f4b5f1a19 runtime/msan: use different msan routine for copying
+ 2025-11-10 0fe6c8e8c8 runtime: tweak wording for comment of mcache.flushGen
+ 2025-11-10 95a0e5adc1 sync: don't call Done when f() panics in WaitGroup.Go
+ 2025-11-08 e8ed85d6c2 cmd/go: update goSum if necessary
+ 2025-11-08 b76103c08e cmd/go: output missing GoDebug entries
+ 2025-11-07 47a63a331d cmd/go: rewrite hgrepo1 test repo to be deterministic
+ 2025-11-07 7995751d3a cmd/go: copy git reuse and support repos to hg
+ 2025-11-07 66c7ca7fb3 cmd/go: improve TestScript/reuse_git
+ 2025-11-07 de84ac55c6 cmd/link: clean up some comments to Go standards
+ 2025-11-07 5cd1b73772 runtime: correctly print panics before fatal-ing on defer
+ 2025-11-07 91ca80f970 runtime/cgo: improve error messages after pointer panic
+ 2025-11-07 d36e88f21f runtime: tweak wording for doc
+ 2025-11-06 ad3ccd92e4 cmd/link: move pclntab out of relro section
+ 2025-11-06 43b91e7abd iter: fix a tiny doc comment bug
+ 2025-11-06 48c7fa13c6 Revert "runtime: remove the pc field of _defer struct"
+ 2025-11-05 8111104a21 cmd/internal/obj/loong64: add {,X}VSHUF.{B/H/W/V} instructions support
+ 2025-11-05 2e2072561c cmd/internal/obj/loong64: add {,X}VEXTRINS.{B,H,W,V} instruction support
+ 2025-11-05 01c29d1f0b internal/chacha8rand: replace VORV with instruction VMOVQ on loong64
+ 2025-11-05 f01a1841fd cmd/compile: fix error message on loong64
+ 2025-11-05 8cf7a0b4c9 cmd/link: support weak binding on darwin
+ 2025-11-05 2dd7e94e16 cmd/go: use go.dev instead of golang.org in flag errors
+ 2025-11-05 28f1ad5782 cmd/go: fix TestScript/govcs
+ 2025-11-05 daa220a1c9 cmd/go: silence TLS handshake errors during test
+ 2025-11-05 3ae9e95002 cmd/go: fix TestCgoPkgConfig on darwin with pkg-config installed
+ 2025-11-05 a494a26bc2 cmd/go: fix TestScript/vet_flags
+ 2025-11-05 a8fb94969c cmd/go: fix TestScript/tool_build_as_needed
+ 2025-11-05 04f05219c4 cmd/cgo: skip escape checks if call site has no argument
+ 2025-11-04 9f3a108ee0 os: ignore O_TRUNC errors on named pipes and terminal devices on Windows
+ 2025-11-04 0e1bd8b5f1 cmd/link, runtime: don't store text start in pcHeader
+ 2025-11-04 7347b54727 cmd/link: don't generate .gosymtab section
+ 2025-11-04 6914dd11c0 cmd/link: add and use new SymKind SFirstUnallocated
+ 2025-11-04 f5f14262d0 cmd/link: remove misleading comment
+ 2025-11-04 61de3a9dae cmd/link: remove unused SFILEPATH symbol kind
+ 2025-11-04 8e2bd267b5 cmd/link: add comments for SymKind values
+ 2025-11-04 16705b962e cmd/compile: faster liveness analysis in regalloc
+ 2025-11-04 a5fe6791d7 internal/syscall/windows: fix ReOpenFile sentinel error value
+ 2025-11-04 a7d174ccaa cmd/compile/internal/ssa: simplify riscv64 FCLASSD rewrite rules
+ 2025-11-04 856238615d runtime: amend doc for setPinned
+ 2025-11-04 c7ccbddf22 cmd/compile/internal/ssa: more aggressive on dead auto elim
+ 2025-11-04 75b2bb1d1a cmd/cgo: drop pre-1.18 support
+ 2025-11-04 dd839f1d00 internal/strconv: handle %f with fixedFtoa when possible
+ 2025-11-04 6e165b4d17 cmd/compile: implement Avg64u, Hmul64, Hmul64u for wasm
+ 2025-11-04 9f6590f333 encoding/pem: don't reslice in failure modes
+ 2025-11-03 34fec512ce internal/strconv: extract fixed-precision ftoa from ftoaryu.go
+ 2025-11-03 162ba6cc40 internal/strconv: add tests and benchmarks for ftoaFixed
+ 2025-11-03 9795c7ba22 internal/strconv: fix pow10 off-by-one in exponent result
+ 2025-11-03 ad5e941a45 cmd/internal/obj/loong64: using {xv,v}slli.d to perform copying between vector registers
+ 2025-11-03 dadbac0c9e cmd/internal/obj/loong64: add VPERMI.W, XVPERMI.{W,V,Q} instruction support
+ 2025-11-03 e2c6a2024c runtime: avoid append in printint, printuint
+ 2025-11-03 c93cc603cd runtime: allow Stack to traceback goroutines in syscall _Grunning window
+ 2025-11-03 b5353fd90a runtime: don't panic in castogscanstatus
+ 2025-11-03 43491f8d52 cmd/cgo: use the export'ed file/line in error messages
+ 2025-11-03 aa94fdf0cc cmd/go: link to go.dev/doc/godebug for removed GODEBUG settings
+ 2025-11-03 4d2b03d2fc crypto/tls: add BetterTLS test coverage
+ 2025-11-03 0c4444e13d cmd/internal/obj: support arm64 FMOVQ large offset encoding
+ 2025-11-03 85bec791a0 cmd/go/testdata/script: loosen list_empty_importpath for freebsd
+ 2025-11-03 17b57078ab internal/runtime/cgobench: add cgo callback benchmark
+ 2025-11-03 5f8fdb720c cmd/go: move functions to methods
+ 2025-11-03 0a95856b95 cmd/go: eliminate additional global variable
+ 2025-11-03 f93186fb44 cmd/go/internal/telemetrystats: count cgo usage
+ 2025-11-03 eaf28a27fd runtime: update outdated comments for deferprocStack
+ 2025-11-03 e12d8a90bf all: remove extra space in the comments
+ 2025-11-03 c5559344ac internal/profile: optimize Parse allocs
+ 2025-11-03 5132158ac2 bytes: add Buffer.Peek
+ 2025-11-03 361d51a6b5 runtime: remove the pc field of _defer struct
+ 2025-11-03 00ee1860ce crypto/internal/constanttime: expose intrinsics to the FIPS 140-3 packages
+ 2025-11-02 388c41c412 cmd/go: skip git sha256 tests if git < 2.29
+ 2025-11-01 385dc33250 runtime: prevent time.Timer.Reset(0) from deadlocking testing/synctest tests
+ 2025-10-31 99b724f454 cmd/go: document purego convention
+ 2025-10-31 27937289dc runtime: avoid zeroing scavenged memory
+ 2025-10-30 89dee70484 runtime: prioritize panic output over racefini
+ 2025-10-30 8683bb846d runtime: optimistically CAS atomicstatus directly in enter/exitsyscall
+ 2025-10-30 5b8e850340 runtime: don't track scheduling latency for _Grunning <-> _Gsyscall
+ 2025-10-30 251814e580 runtime: document tracer invariants explicitly
+ 2025-10-30 7244e9221f runtime: eliminate _Psyscall
+ 2025-10-30 5ef19c0d0c strconv: delete divmod1e9
+ 2025-10-30 d32b1f02c3 runtime: delete timediv
+ 2025-10-30 cbbd385cb8 strconv: remove arch-specific decision in formatBase10
+ 2025-10-30 6aca04a73a reflect: correct internal docs for uncommonType
+ 2025-10-30 235b4e729d cmd/compile/internal/ssa: model right shift more precisely
+ 2025-10-30 d44db293f9 go/token: fix a typo in a comment
+ 2025-10-30 cdc6b559ca strconv: remove hand-written divide on 32-bit systems
+ 2025-10-30 1e5bb416d8 cmd/compile: implement bits.Mul64 on 32-bit systems
+ 2025-10-30 38317c44e7 crypto/internal/fips140/aes: fix CTR generator
+ 2025-10-29 3be9a0e014 go/types, types: proceed with correct (invalid) type in case of a selector error
+ 2025-10-29 d2c5fa0814 strconv: remove &0xFF trick in formatBase10
+ 2025-10-29 9bbda7c99d cmd/compile: make prove understand div, mod better
+ 2025-10-29 915c1839fe test/codegen: simplify asmcheck pattern matching
+ 2025-10-29 32ee3f3f73 runtime: tweak example code for gorecover
+ 2025-10-29 da3fb90b23 crypto/internal/fips140/bigmod: fix extendedGCD comment
+ 2025-10-29 9035f7aea5 runtime: use internal/strconv
+ 2025-10-29 49c1da474d internal/itoa, internal/runtime/strconv: delete
+ 2025-10-29 b2a346bbd1 strconv: move all but Quote to internal/strconv
+ 2025-10-28 041f564b3e internal/runtime/gc/scan: avoid memory destination on VPCOMPRESSQ
+ 2025-10-28 81afd3a59b cmd/compile: extend ppc64 MADDLD to match const ADDconst & MULLDconst
+ 2025-10-28 ea50d61b66 cmd/compile: name change isDirect -> isDirectAndComparable
+ 2025-10-28 bd4dc413cd cmd/compile: don't optimize away a panicing interface comparison
+ 2025-10-28 30c047d0d0 cmd/compile: extend loong MOV*idx rules to match ADDshiftLLV
+ 2025-10-28 46e5e2b09a runtime: define PanicBounds in funcdata.h
+ 2025-10-28 3da0356685 crypto/internal/fips140test: collect 300M entropy samples for ESV
+ 2025-10-28 d5953185d5 runtime: amend comments a bit
+ 2025-10-28 12c8d14d94 errors: document that the target of Is must be comparable
+ 2025-10-28 1f4d14e493 go/types, types2: pull up package-level object sort to a separate phase
+ 2025-10-28 b8aa1ee442 go/types, types2: reduce locks held at once in resolveUnderlying
+ 2025-10-28 24af441437 cmd/compile: rewrite proved multiplies by 0 or 1 into CondSelect
+ 2025-10-28 2d33a456c6 cmd/compile: move branchelim supported arches to Config
+ 2025-10-27 2c91c33e88 crypto/subtle,cmd/compile: add intrinsics for ConstantTimeSelect and *Eq
+ 2025-10-27 73d7635fae cmd/compile: add generic rules to remove bool → int → bool roundtrips
+ 2025-10-27 1662d55247 cmd/compile: do not Zext bools to 64bits in amd64 CMOV generation rules
+ 2025-10-27 b8468d8c4e cmd/compile: introduce bytesizeToConst to cleanup switches in prove
+ 2025-10-27 9e25c2f6de cmd/link: internal linking support for windows/arm64
+ 2025-10-27 ff2ebf69c4 internal/runtime/gc/scan: correct size class size check
+ 2025-10-27 9a77aa4f08 cmd/compile: add position info to sccp debug messages
+ 2025-10-27 77dc138030 cmd/compile: teach prove about unsigned rounding-up divide
+ 2025-10-27 a0f33b2887 cmd/compile: change !l.nonzero() into l.maybezero()
+ 2025-10-27 5453b788fd cmd/compile: optimize Add64carry with unused carries into plain Add64
+ 2025-10-27 2ce5aab79e cmd/compile: remove 68857 ModU flowLimit workaround in prove
+ 2025-10-27 a50de4bda7 cmd/compile: remove 68857 min & max flowLimit workaround in prove
+ 2025-10-27 53be78630a cmd/compile: use topo-sort in prove to correctly learn facts while walking once
+ 2025-10-27 dec2b4c83d runtime: avoid bound check in freebsd binuptime
+ 2025-10-27 916e682d51 cmd/internal/obj, cmd/asm: reclassify the offset of memory access operations on loong64
+ 2025-10-27 2835b994fb cmd/go: remove global loader state variable
+ 2025-10-27 139f89226f cmd/go: use local state for telemetry
+ 2025-10-27 8239156571 cmd/go: use tagged switch
+ 2025-10-27 d741483a1f cmd/go: increase stmt threshold on amd64
+ 2025-10-27 a6929cf4a7 cmd/go: removed unused code in toolchain.Exec
+ 2025-10-27 180c07e2c1 go/types, types2: clarify docs for resolveUnderlying
+ 2025-10-27 d8a32f3d4b go/types, types2: wrap Named.fromRHS into Named.rhs
+ 2025-10-27 b2af92270f go/types, types2: verify stateMask transitions in debug mode
+ 2025-10-27 92decdcbaa net/url: further speed up escape and unescape
+ 2025-10-27 5f4ec3541f runtime: remove unused cgoCheckUsingType function
+ 2025-10-27 189f2c08cc time: rewrite IsZero method to use wall and ext fields
+ 2025-10-27 f619b4a00d cmd/go: reorder parameters so that context is first
+ 2025-10-27 f527994c61 sync: update comments for Once.done
+ 2025-10-26 5dcaf9a01b runtime: add GOEXPERIMENT=runtimefree
+ 2025-10-26 d7a52f9369 cmd/compile: use MOV(D|F) with const for Const(64|32)F on riscv64
+ 2025-10-26 6f04a92be3 internal/chacha8rand: provide vector implementation for riscv64
+ 2025-10-26 54e3adc533 cmd/go: use local loader state in test
+ 2025-10-26 ca379b1c56 cmd/go: remove loaderstate dependency
+ 2025-10-26 83a44bde64 cmd/go: remove unused loader state
+ 2025-10-26 7e7cd9de68 cmd/go: remove temporary rf cleanup script
+ 2025-10-26 53ad68de4b cmd/compile: allow unaligned load/store on Wasm
+ 2025-10-25 12ec09f434 cmd/go: use local state object in work.runBuild and work.runInstall
+ 2025-10-24 643f80a11f runtime: add ppc and s390 to 32 build constraints for gccgo
+ 2025-10-24 0afbeb5102 runtime: add ppc and s390 to linux 32 bits syscall build constraints for gccgo
+ 2025-10-24 7b506d106f cmd/go: use local state object in `generate.runGenerate`
+ 2025-10-24 26a8a21d7f cmd/go: use local state object in `env.runEnv`
+ 2025-10-24 f2dd3d7e31 cmd/go: use local state object in `vet.runVet`
+ 2025-10-24 784700439a cmd/go: use local state object in pkg `workcmd`
+ 2025-10-24 69673e9be2 cmd/go: use local state object in `tool.runTool`
+ 2025-10-24 2e12c5db11 cmd/go: use local state object in `test.runTest`
+ 2025-10-24 fe345ff2ae cmd/go: use local state object in `modget.runGet`
+ 2025-10-24 d312e27e8b cmd/go: use local state object in pkg `modcmd`
+ 2025-10-24 ea9cf26aa1 cmd/go: use local state object in `list.runList`
+ 2025-10-24 9926e1124e cmd/go: use local state object in `bug.runBug`
+ 2025-10-24 2c4fd7b2cd cmd/go: use local state object in `run.runRun`
+ 2025-10-24 ade9f33e1f cmd/go: add loaderstate as field on `mvsReqs`
+ 2025-10-24 ccf4192a31 cmd/go: make ImportMissingError work with local state
+ 2025-10-24 f5403f15f0 debug/pe: check for zdebug_gdb_scripts section in testDWARF
+ 2025-10-24 a26f860fa4 runtime: use 32-bit hash for maps on Wasm
+ 2025-10-24 747fe2efed encoding/json/v2: fix typo in documentation about errors.AsType
+ 2025-10-24 94f47fc03f cmd/link: remove pointless assignment in SetSymAlign
+ 2025-10-24 e6cff69051 crypto/x509: move constraint checking after chain building
+ 2025-10-24 f5f69a3de9 encoding/json/jsontext: avoid pinning application data in pools
+ 2025-10-24 a6a59f0762 encoding/json/v2: use slices.Sort directly
+ 2025-10-24 0d3dab9b1d crypto/x509: simplify candidate chain filtering
+ 2025-10-24 29046398bb cmd/go: refactor injection of modload.LoaderState
+ 2025-10-24 c18fa69e52 cmd/go: make ErrNoModRoot work with local state
+ 2025-10-24 296ecc918d cmd/go: add modload.State parameter to AllowedFunc
+ 2025-10-24 c445a61e52 cmd/go: add loaderstate as field on `QueryMatchesMainModulesError`
+ 2025-10-24 6ac40051d3 cmd/go: remove module loader state from ccompile
+ 2025-10-24 6a5a452528 cmd/go: inject vendor dir into builder struct
+ 2025-10-23 dfac972233 crypto/pbkdf2: add missing error return value in example
+ 2025-10-23 47bf8f073e unique: fix inconsistent panic prefix in canonmap cleanup path
+ 2025-10-23 03bd43e8bb go/types, types2: rename Named.resolve to unpack
+ 2025-10-23 9fcdc814b2 go/types, types2: rename loaded namedState to lazyLoaded
+ 2025-10-23 8401512a9b go/types, types2: rename complete namedState to hasMethods
+ 2025-10-23 cf826bfcb4 go/types, types2: set t.underlying exactly once in resolveUnderlying
+ 2025-10-23 c4e910895b net/url: speed up escape and unescape
+ 2025-10-23 3f6ac3a10f go/build: use slices.Equal
+ 2025-10-23 839da71f89 encoding/pem: properly calculate end indexes
+ 2025-10-23 39ed968832 cmd: update golang.org/x/arch for riscv64 disassembler
+ 2025-10-23 ca448191c9 all: replace Split in loops with more efficient SplitSeq
+ 2025-10-23 107fcb70de internal/goroot: replace HasPrefix+TrimPrefix with CutPrefix
+ 2025-10-23 8378276d66 strconv: optimize int-to-decimal and use consistently
+ 2025-10-23 e5688d0bdd cmd/internal/obj/riscv: simplify validation and encoding of raw instructions
+ 2025-10-22 77fc27972a doc/next: improve new(expr) release note
+ 2025-10-22 d94a8c56ad runtime: cleanup pagetrace
+ 2025-10-22 02728a2846 crypto/internal/fips140test: add entropy SHA2-384 testing
+ 2025-10-22 f92e01c117 runtime/cgo: fix cgoCheckArg description
+ 2025-10-22 50586182ab runtime: use backoff and ISB instruction to reduce contention in (*lfstack).pop and (*spanSet).pop on arm64
+ 2025-10-22 1ff59f3dd3 strconv: clean up powers-of-10 table, tests
+ 2025-10-22 7c9fa4d5e9 cmd/go: check if build output should overwrite files with renames
+ 2025-10-22 557b4d6e0f comment: change slice to string in function comment/help
+ 2025-10-22 d09a8c8ef4 go/types, types2: simplify locking in Named.resolveUnderlying
+ 2025-10-22 5a42af7f6c go/types, types2: in resolveUnderlying, only compute path when needed
+ 2025-10-22 4bdb55b5b8 go/types, types2: rename Named.under to Named.resolveUnderlying
+ 2025-10-21 29d43df8ab go/build, cmd/go: use ast.ParseDirective for go:embed
+ 2025-10-21 4e695dd634 go/ast: add ParseDirective for parsing directive comments
+ 2025-10-21 06e57e60a7 go/types, types2: only report version errors if new(expr) is ok otherwise
+ 2025-10-21 6c3d0d259f path/filepath: reword documentation for Rel
+ 2025-10-21 39fd61ddb0 go/types, types2: guard Named.underlying with Named.mu
+ 2025-10-21 4a0115c886 runtime,syscall: implement and use syscalln on darwin
+ 2025-10-21 261c561f5a all: gofmt -w
+ 2025-10-21 c9c78c06ef strconv: embed testdata in test
+ 2025-10-21 8f74f9daf4 sync: re-enable race even when panicking
+ 2025-10-21 8a6c64f4fe syscall: use rawSyscall6 to call ptrace in forkAndExecInChild
+ 2025-10-21 4620db72d2 runtime: use timer_settime64 on 32-bit Linux
+ 2025-10-21 b31dc77cea os: support deleting read-only files in RemoveAll on older Windows versions
+ 2025-10-21 46cc532900 cmd/compile/internal/ssa: fix typo in comment
+ 2025-10-21 2163a58021 crypto/internal/fips140/entropy: increase AllocsPerRun iterations
+ 2025-10-21 306eacbc11 cmd/go/testdata/script: disable list_empty_importpath test on Windows
+ 2025-10-21 a5a249d6a6 all: eliminate unnecessary type conversions
+ 2025-10-21 694182d77b cmd/internal/obj/ppc64: improve large prologue generation
+ 2025-10-21 b0dcb95542 cmd/compile: leave the horses alone
+ 2025-10-21 9a5a1202f4 runtime: clean dead architectures from go:build constraint
+ 2025-10-21 8539691d0c crypto/internal/fips140/entropy: move to crypto/internal/entropy/v1.0.0
+ 2025-10-20 99cf4d671c runtime: save lasx and lsx registers in loong64 async preemption
+ 2025-10-20 79ae97fe9b runtime: make procyieldAsm no longer loop infinitely if passed 0
+ 2025-10-20 f838faffe2 runtime: wrap procyield assembly and check for 0
+ 2025-10-20 ee4d2c312d runtime/trace: dump test traces on validation failure
+ 2025-10-20 7b81a1e107 net/url: reduce allocs in Encode
+ 2025-10-20 e425176843 cmd/asm: fix typo in comment
+ 2025-10-20 dc9a3e2a65 runtime: fix generation skew with trace reentrancy
+ 2025-10-20 df33c17091 runtime: add _Gdeadextra status
+ 2025-10-20 7503856d40 cmd/go: inject loaderstate into matcher function
+ 2025-10-20 d57c3fd743 cmd/go: inject State parameter into `work.runInstall`
+ 2025-10-20 e94a5008f6 cmd/go: inject State parameter into `work.runBuild`
+ 2025-10-20 d9e6f95450 cmd/go: inject State parameter into `workcmd.runSync`
+ 2025-10-20 9769a61e64 cmd/go: inject State parameter into `modget.runGet`
+ 2025-10-20 f859799ccf cmd/go: inject State parameter into `modcmd.runVerify`
+ 2025-10-20 0f820aca29 cmd/go: inject State parameter into `modcmd.runVendor`
+ 2025-10-20 92aa3e9e98 cmd/go: inject State parameter into `modcmd.runInit`
+ 2025-10-20 e176dff41c cmd/go: inject State parameter into `modcmd.runDownload`
+ 2025-10-20 e7c66a58d5 cmd/go: inject State parameter into `toolchain.Select`
+ 2025-10-20 4dc3dd9a86 cmd/go: add loaderstate to Switcher
+ 2025-10-20 bcf7da1595 cmd/go: convert functions to methods
+ 2025-10-20 0d3044f965 cmd/go: make Reset work with any State instance
+ 2025-10-20 386d81151d cmd/go: make setState work with any State instance
+ 2025-10-20 a420aa221e cmd/go: inject State parameter into `tool.runTool`
+ 2025-10-20 441e7194a4 cmd/go: inject State parameter into `test.runTest`
+ 2025-10-20 35e8309be2 cmd/go: inject State parameter into `list.runList`
+ 2025-10-20 29a81624f7 cmd/go: inject state parameter into `fmtcmd.runFmt`
+ 2025-10-20 f7eaea02fd cmd/go: inject state parameter into `clean.runClean`
+ 2025-10-20 58a8fdb6cf cmd/go: inject State parameter into `bug.runBug`
+ 2025-10-20 8d0bef7ffe runtime: add linkname documentation and guidance
+ 2025-10-20 3e43f48cb6 encoding/asn1: use reflect.TypeAssert to improve performance
+ 2025-10-20 4ad5585c2c runtime: fix _rt0_ppc64x_lib on aix
+ 2025-10-17 a5f55a441e cmd/fix: add modernize and inline analyzers
+ 2025-10-17 80876f4b42 cmd/go/internal/vet: tweak help doc
+ 2025-10-17 b5aefe07e5 all: remove unnecessary loop variable copies in tests
+ 2025-10-17 5137c473b6 go/types, types2: remove references to under function in comments
+ 2025-10-17 dbbb1bfc91 all: correct name for comments
+ 2025-10-17 0983090171 encoding/pem: properly decode strange PEM data
+ 2025-10-17 36863d6194 runtime: unify riscv64 library entry point
+ 2025-10-16 0c14000f87 go/types, types2: remove under(Type) in favor of Type.Underlying()
+ 2025-10-16 1099436f1b go/types, types2: change and enforce lifecycle of Named.fromRHS and Named.underlying fields
+ 2025-10-16 41f5659347 go/types, types2: remove superfluous unalias call (minor cleanup)
+ 2025-10-16 e7351c03c8 runtime: use DC ZVA instead of its encoding in WORD in arm64 memclr
+ 2025-10-16 6cbe0920c4 cmd: update to x/tools@7d9453cc
+ 2025-10-15 45eee553e2 cmd/internal/obj: move ARM64RegisterExtension from cmd/asm/internal/arch
+ 2025-10-15 27f9a6705c runtime: increase repeat count for alloc test
+ 2025-10-15 b68cebd809 net/http/httptest: record failed ResponseWriter writes
+ 2025-10-15 f1fed742eb cmd: fix three printf problems reported by newest vet
+ 2025-10-15 0984dcd757 cmd/compile: fix an error in comments
+ 2025-10-15 31f82877e8 go/types, types2: fix misleading internal comment
+ 2025-10-15 6346349f56 cmd/compile: replace angle brackets with square
+ 2025-10-15 284379cdfc cmd/compile: remove rematerializable values from live set across calls
+ 2025-10-15 519ae514ab cmd/compile: eliminate bound check for slices of the same length
+ 2025-10-15 b5a29cca48 cmd/distpack: add fix tool to inventory
+ 2025-10-15 bb5eb51715 runtime/pprof: fix errors in pprof_test
+ 2025-10-15 5c9a26c7f8 cmd/compile: use arm64 neon in LoweredMemmove/LoweredMemmoveLoop
+ 2025-10-15 61d1ff61ad cmd/compile: use block starting position for phi line number
+ 2025-10-15 5b29875c8e cmd/go: inject State parameter into `run.runRun`
+ 2025-10-15 5113496805 runtime/pprof: skip flaky test TestProfilerStackDepth/heap for now
+ 2025-10-15 36086e85f8 cmd/go: create temporary cleanup script
+ 2025-10-14 7056c71d32 cmd/compile: disable use of new saturating float-to-int conversions
+ 2025-10-14 6d5b13793f Revert "cmd/compile: make 386 float-to-int conversions match amd64"
+ 2025-10-14 bb2a14252b Revert "runtime: adjust softfloat corner cases to match amd64/arm64"
+ 2025-10-14 3bc9d9fa83 Revert "cmd/compile: make wasm match other platforms for FP->int32/64 conversions"
+ 2025-10-14 ee5af46172 encoding/json: avoid misleading errors under goexperiment.jsonv2
+ 2025-10-14 11d3d2f77d cmd/internal/obj/arm64: add support for PAC instructions
+ 2025-10-14 4dbf1a5a4c cmd/compile/internal/devirtualize: do not track assignments to non-PAUTO
+ 2025-10-14 0ddb5ed465 cmd/compile/internal/devirtualize: use FatalfAt instead of Fatalf where possible
+ 2025-10-14 0a239bcc99 Revert "net/url: disallow raw IPv6 addresses in host"
+ 2025-10-14 5a9ef44bc0 cmd/compile/internal/devirtualize: fix OCONVNOP assertion
+ 2025-10-14 3765758b96 go/types, types2: minor cleanup (remove TODO)
+ 2025-10-14 f6b9d56aff crypto/internal/fips140/entropy: fix benign race
+ 2025-10-14 60f6d2f623 crypto/internal/fips140/entropy: support SHA-384 sizes for ACVP tests
+ 2025-10-13 6fd8e88d07 encoding/json/v2: restrict presence of default options
+ 2025-10-13 1abc6b0204 go/types, types2: permit type cycles through type parameter lists
+ 2025-10-13 9fdd6904da strconv: add tests that Java once mishandled
+ 2025-10-13 9b8742f2e7 cmd/compile: don't depend on arch-dependent conversions in the compiler
+ 2025-10-13 0e64ee1286 encoding/json/v2: report EOF for top-level values in UnmarshalDecode
+ 2025-10-13 6bcd97d9f4 all: replace calls to errors.As with errors.AsType
+ 2025-10-11 1cd71689f2 crypto/x509: rework fix for CVE-2025-58187
+ 2025-10-11 8aa1efa223 cmd/link: in TestFallocate, only check number of blocks on Darwin
+ 2025-10-10 b497a29d25 encoding/json: fix regression in quoted numbers under goexperiment.jsonv2
+ 2025-10-10 48bb7a6114 cmd/compile: repair bisection behavior for float-to-unsigned conversion
+ 2025-10-10 e8a53538b4 runtime: fail TestGoroutineLeakProfile on data race
+ 2025-10-10 e3be2d1b2b net/url: disallow raw IPv6 addresses in host
+ 2025-10-10 aced4c79a2 net/http: strip request body headers on POST to GET redirects
+ 2025-10-10 584a89fe74 all: omit unnecessary reassignment
+ 2025-10-10 69e8279632 net/http: set cookie host to Request.Host when available
+ 2025-10-10 6f4c63ba63 cmd/go: unify "go fix" and "go vet"
+ 2025-10-10 955a5a0dc5 runtime: support arm64 Neon in async preemption
+ 2025-10-10 5368e77429 net/http: run TestRequestWriteTransport with fake time to avoid flakes
+ 2025-10-09 c53cb642de internal/buildcfg: enable greenteagc experiment for loong64
+ 2025-10-09 954fdcc51a cmd/compile: declare no output register for loong64 LoweredAtomic{And,Or}32 ops
+ 2025-10-09 19a30ea3f2 cmd/compile: call generated size-specialized malloc functions directly
+ 2025-10-09 80f3bb5516 reflect: remove timeout in TestChanOfGC
+ 2025-10-09 9db7e30bb4 net/url: allow IP-literals with IPv4-mapped IPv6 addresses
+ 2025-10-09 8d810286b3 cmd/compile: make wasm match other platforms for FP->int32/64 conversions
+ 2025-10-09 b9f3accdcf runtime: adjust softfloat corner cases to match amd64/arm64
+ 2025-10-09 78d75b3799 cmd/compile: make 386 float-to-int conversions match amd64
+ 2025-10-09 0e466a8d1d cmd/compile: modify float-to-[u]int so that amd64 and arm64 match
+ 2025-10-08 4837fbe414 net/http/httptest: check whether response bodies are allowed
+ 2025-10-08 ee163197a8 path/filepath: return cleaned path from Rel
+ 2025-10-08 de9da0de30 cmd/compile/internal/devirtualize: improve concrete type analysis
+ 2025-10-08 ae094a1397 crypto/internal/fips140test: make entropy file pair names match
+ 2025-10-08 941e5917c1 runtime: cleanup comments from asm_ppc64x.s improvements
+ 2025-10-08 d945600d06 cmd/gofmt: change -d to exit 1 if diffs exist
+ 2025-10-08 d4830c6130 cmd/internal/obj: fix Link.Diag printf errors
+ 2025-10-08 e1ca1de123 net/http: format pprof.go
+ 2025-10-08 e5d004c7a8 net/http: update HTTP/2 documentation to reference new config features
+ 2025-10-08 97fd6bdecc cmd/compile: fuse NaN checks with other comparisons
+ 2025-10-07 78b43037dc cmd/go: refactor usage of `workFilePath`
+ 2025-10-07 bb1ca7ae81 cmd/go, testing: add TB.ArtifactDir and -artifacts flag
+ 2025-10-07 1623927730 cmd/go: refactor usage of `requirements`
+ 2025-10-07 a1661e776f Revert "crypto/internal/fips140/subtle: add assembly implementation of xorBytes for mips64x"
+ 2025-10-07 cb81270113 Revert "crypto/internal/fips140/subtle: add assembly implementation of xorBytes for mipsx"
+ 2025-10-07 f2d0d05d28 cmd/go: refactor usage of `MainModules`
+ 2025-10-07 f7a68d3804 archive/tar: set a limit on the size of GNU sparse file 1.0 regions
+ 2025-10-07 463165699d net/mail: avoid quadratic behavior in mail address parsing
+ 2025-10-07 5ede095649 net/textproto: avoid quadratic complexity in Reader.ReadResponse
+ 2025-10-07 5ce8cd16f3 encoding/pem: make Decode complexity linear
+ 2025-10-07 f6f4e8b3ef net/url: enforce stricter parsing of bracketed IPv6 hostnames
+ 2025-10-07 7dd54e1fd7 runtime: make work.spanSPMCs.all doubly-linked
+ 2025-10-07 3ee761739b runtime: free spanQueue on P destroy
+ 2025-10-07 8709a41d5e encoding/asn1: prevent memory exhaustion when parsing using internal/saferio
+ 2025-10-07 9b9d02c5a0 net/http: add httpcookiemaxnum GODEBUG option to limit number of cookies parsed
+ 2025-10-07 3fc4c79fdb crypto/x509: improve domain name verification
+ 2025-10-07 6e4007e8cf crypto/x509: mitigate DoS vector when intermediate certificate contains DSA public key
+ 2025-10-07 6f7926589d cmd/go: refactor usage of `modRoots`
+ 2025-10-07 11d5484190 runtime: fix self-deadlock on sbrk platforms
+ 2025-10-07 2e52060084 cmd/go: refactor usage of `RootMode`
+ 2025-10-07 f86ddb54b5 cmd/go: refactor usage of `ForceUseModules`
+ 2025-10-07 c938051dd0 Revert "cmd/compile: redo arm64 LR/FP save and restore"
+ 2025-10-07 6469954203 runtime: assert p.destroy runs with GC not running
+ 2025-10-06 4c0fd3a2b4 internal/goexperiment: remove the synctest GOEXPERIMENT
+ 2025-10-06 c1e6e49d5d fmt: reduce Errorf("x") allocations to match errors.New("x")
+ 2025-10-06 7fbf54bfeb internal/buildcfg: enable greenteagc experiment by default
+ 2025-10-06 7bfeb43509 cmd/go: refactor usage of `initialized`
+ 2025-10-06 1d62e92567 test/codegen: make sure assignment results are used.
+ 2025-10-06 4fca79833f runtime: delete redundant code in the page allocator
+ 2025-10-06 719dfcf8a8 cmd/compile: redo arm64 LR/FP save and restore
+ 2025-10-06 f3312124c2 runtime: remove batching from spanSPMC free
+ 2025-10-06 24416458c2 cmd/go: export type State
+ 2025-10-06 c2fb15164b testing/synctest: remove Run
+ 2025-10-06 ac2ec82172 runtime: bump thread count slack for TestReadMetricsSched
+ 2025-10-06 e74b224b7c crypto/tls: streamline BoGo testing w/ -bogo-local-dir
+ 2025-10-06 3a05e7b032 spec: close tag
+ 2025-10-03 2a71af11fc net/url: improve URL docs
+ 2025-10-03 ee5369b003 cmd/link: add LIBRARY statement only with -buildmode=cshared
+ 2025-10-03 1bca4c1673 cmd/compile: improve slicemask removal
+ 2025-10-03 38b26f29f1 cmd/compile: remove stores to unread parameters
+ 2025-10-03 003b5ce1bc cmd/compile: fix SIMD const rematerialization condition
+ 2025-10-03 d91148c7a8 cmd/compile: enhance prove to infer bounds in slice len/cap calculations
+ 2025-10-03 20c9377e47 cmd/compile: enhance the chunked indexing case to include reslicing
+ 2025-10-03 ad3db2562e cmd/compile: handle rematerialized op for incompatible reg constraint
+ 2025-10-03 18cd4a1fc7 cmd/compile: use the right type for spill slot
+ 2025-10-03 1caa95acfa cmd/compile: enhance prove to deal with double-offset IsInBounds checks
+ 2025-10-03 ec70d19023 cmd/compile: rewrite to elide Slicemask from len==c>0 slicing
+ 2025-10-03 10e7968849 cmd/compile: accounts rematerialize ops's output reginfo
+ 2025-10-03 ab043953cb cmd/compile: minor tweak for race detector
+ 2025-10-03 ebb72bef44 cmd/compile: don't treat devel compiler as a released compiler
+ 2025-10-03 c54dc1418b runtime: support valgrind (but not asan) in specialized malloc functions
+ 2025-10-03 a7917eed70 internal/buildcfg: enable specializedmalloc experiment
+ 2025-10-03 630799c6c9 crypto/tls: add flag to render HTML BoGo report

Change-Id: I6bf904c523a77ee7d3dea9c8ae72292f8a5f2ba5

40 files changed:
1  2 
src/cmd/compile/internal/inline/inl.go
src/cmd/compile/internal/ir/expr.go
src/cmd/compile/internal/ir/symtab.go
src/cmd/compile/internal/ssa/_gen/AMD64.rules
src/cmd/compile/internal/ssa/_gen/generic.rules
src/cmd/compile/internal/ssa/_gen/genericOps.go
src/cmd/compile/internal/ssa/_gen/rulegen.go
src/cmd/compile/internal/ssa/block.go
src/cmd/compile/internal/ssa/compile.go
src/cmd/compile/internal/ssa/config.go
src/cmd/compile/internal/ssa/decompose.go
src/cmd/compile/internal/ssa/expand_calls.go
src/cmd/compile/internal/ssa/func.go
src/cmd/compile/internal/ssa/opGen.go
src/cmd/compile/internal/ssa/regalloc.go
src/cmd/compile/internal/ssa/rewriteAMD64.go
src/cmd/compile/internal/ssa/rewritegeneric.go
src/cmd/compile/internal/ssa/sizeof_test.go
src/cmd/compile/internal/ssa/value.go
src/cmd/compile/internal/ssagen/intrinsics.go
src/cmd/compile/internal/ssagen/intrinsics_test.go
src/cmd/compile/internal/ssagen/ssa.go
src/cmd/compile/internal/typecheck/_builtin/runtime.go
src/cmd/compile/internal/typecheck/builtin.go
src/cmd/compile/internal/types/type.go
src/cmd/compile/internal/types2/stdlib_test.go
src/cmd/dist/test.go
src/cmd/internal/testdir/testdir_test.go
src/go/build/deps_test.go
src/go/types/stdlib_test.go
src/internal/buildcfg/exp.go
src/internal/goexperiment/flags.go
src/runtime/asm_amd64.s
src/runtime/export_test.go
src/runtime/mkpreempt.go
src/runtime/os_darwin.go
src/runtime/panic.go
src/runtime/proc.go
src/runtime/sys_darwin_amd64.s
src/simd/string.go

Simple merge
index 0cfa2a2262f070f379245bf2ee9ee29f92053b5e,f8eb45788093122289b324bcc9170dee8943b984..344985f7be1e669989428e05c62122a612705efa
@@@ -13,48 -13,50 +13,51 @@@ import 
  var Syms symsStruct
  
  type symsStruct struct {
-       AssertE2I         *obj.LSym
-       AssertE2I2        *obj.LSym
-       Asanread          *obj.LSym
-       Asanwrite         *obj.LSym
-       CgoCheckMemmove   *obj.LSym
-       CgoCheckPtrWrite  *obj.LSym
-       CheckPtrAlignment *obj.LSym
-       Deferproc         *obj.LSym
-       Deferprocat       *obj.LSym
-       DeferprocStack    *obj.LSym
-       Deferreturn       *obj.LSym
-       Duffcopy          *obj.LSym
-       Duffzero          *obj.LSym
-       GCWriteBarrier    [8]*obj.LSym
-       Goschedguarded    *obj.LSym
-       Growslice         *obj.LSym
-       InterfaceSwitch   *obj.LSym
-       MallocGC          *obj.LSym
-       Memmove           *obj.LSym
-       Msanread          *obj.LSym
-       Msanwrite         *obj.LSym
-       Msanmove          *obj.LSym
-       Newobject         *obj.LSym
-       Newproc           *obj.LSym
-       PanicBounds       *obj.LSym
-       PanicExtend       *obj.LSym
-       Panicdivide       *obj.LSym
-       Panicshift        *obj.LSym
-       PanicdottypeE     *obj.LSym
-       PanicdottypeI     *obj.LSym
-       Panicnildottype   *obj.LSym
-       Panicoverflow     *obj.LSym
-       PanicSimdImm      *obj.LSym
-       Racefuncenter     *obj.LSym
-       Racefuncexit      *obj.LSym
-       Raceread          *obj.LSym
-       Racereadrange     *obj.LSym
-       Racewrite         *obj.LSym
-       Racewriterange    *obj.LSym
-       TypeAssert        *obj.LSym
-       WBZero            *obj.LSym
-       WBMove            *obj.LSym
+       AssertE2I                 *obj.LSym
+       AssertE2I2                *obj.LSym
+       Asanread                  *obj.LSym
+       Asanwrite                 *obj.LSym
+       CgoCheckMemmove           *obj.LSym
+       CgoCheckPtrWrite          *obj.LSym
+       CheckPtrAlignment         *obj.LSym
+       Deferproc                 *obj.LSym
+       Deferprocat               *obj.LSym
+       DeferprocStack            *obj.LSym
+       Deferreturn               *obj.LSym
+       Duffcopy                  *obj.LSym
+       Duffzero                  *obj.LSym
+       GCWriteBarrier            [8]*obj.LSym
+       Goschedguarded            *obj.LSym
+       Growslice                 *obj.LSym
+       InterfaceSwitch           *obj.LSym
+       MallocGC                  *obj.LSym
+       MallocGCSmallNoScan       [27]*obj.LSym
+       MallocGCSmallScanNoHeader [27]*obj.LSym
+       MallocGCTiny              [16]*obj.LSym
+       Memmove                   *obj.LSym
+       Msanread                  *obj.LSym
+       Msanwrite                 *obj.LSym
+       Msanmove                  *obj.LSym
+       Newobject                 *obj.LSym
+       Newproc                   *obj.LSym
+       PanicBounds               *obj.LSym
+       PanicExtend               *obj.LSym
+       Panicdivide               *obj.LSym
+       Panicshift                *obj.LSym
+       PanicdottypeE             *obj.LSym
+       PanicdottypeI             *obj.LSym
+       Panicnildottype           *obj.LSym
+       Panicoverflow             *obj.LSym
++      PanicSimdImm              *obj.LSym
+       Racefuncenter             *obj.LSym
+       Racefuncexit              *obj.LSym
+       Raceread                  *obj.LSym
+       Racereadrange             *obj.LSym
+       Racewrite                 *obj.LSym
+       Racewriterange            *obj.LSym
+       TypeAssert                *obj.LSym
+       WBZero                    *obj.LSym
+       WBMove                    *obj.LSym
        // Wasm
        SigPanic         *obj.LSym
        Staticuint64s    *obj.LSym
Simple merge
index 372d238a1ce78e6448b9211943db3f70c750ce9d,bdfb5cedbcc060b0768b8d913a00fe82e16c50d7..f8cbd1c9a4ac1f07c34df81954bcc02a2862b6b9
@@@ -587,10 -594,8 +596,10 @@@ var passOrder = [...]constraint
        {"memcombine", "lower"},
        // late opt transform some CondSelects into math.
        {"branchelim", "late opt"},
-       // ranchelim is an arch-independent pass.
+       // branchelim is an arch-independent pass.
        {"branchelim", "lower"},
 +      // lower needs cpu feature information (for SIMD)
 +      {"cpufeatures", "lower"},
  }
  
  func init() {
Simple merge
index 9d7ee4bea8daa7de85d167990242657e3d8b488d,264f4b3bf378f1301e86bf19bd69baf3182f68d4..4dd7faeebf3dfed39493f2da7d5efac5e8a371cb
@@@ -46679,42539 -40709,185 +46703,42584 @@@ var opcodeTable = [...]opInfo
                        },
                },
        },
 -
        {
 -              name:    "Last",
 -              argLen:  -1,
 -              generic: true,
 +              name:      "VSCALEFPS256load",
 +              auxType:   auxSymOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVSCALEFPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
        },
        {
 -              name:        "Add8",
 -              argLen:      2,
 -              commutative: true,
 -              generic:     true,
 +              name:      "VSCALEFPS512load",
 +              auxType:   auxSymOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVSCALEFPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
        },
        {
 -              name:        "Add16",
 -              argLen:      2,
 -              commutative: true,
 -              generic:     true,
 +              name:      "VSCALEFPSMasked128load",
 +              auxType:   auxSymOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVSCALEFPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
        },
        {
 -              name:        "Add32",
 -              argLen:      2,
 -              commutative: true,
 -              generic:     true,
 +              name:      "VSCALEFPSMasked256load",
 +              auxType:   auxSymOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVSCALEFPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
        },
        {
 -              name:        "Add64",
 -              argLen:      2,
 -              commutative: true,
 -              generic:     true,
 +              name:      "VSCALEFPSMasked512load",
 +              auxType:   auxSymOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVSCALEFPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
        },
        {
 -              name:    "AddPtr",
 -              argLen:  2,
 -              generic: true,
 +              name:      "VSQRTPD512load",
 +              auxType:   auxSymOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVSQRTPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
        },
        {
 -              name:        "Add32F",
 -              argLen:      2,
 -              commutative: true,
 -              generic:     true,
 +              name:      "VSQRTPDMasked128load",
 +              auxType:   auxSymOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVSQRTPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
        },
        {
 -              name:        "Add64F",
 -              argLen:      2,
 -              commutative: true,
 -              generic:     true,
 +              name:      "VSQRTPDMasked256load",
 +              auxType:   auxSymOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVSQRTPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
        },
        {
 -              name:    "Sub8",
 -              argLen:  2,
 -              generic: true,
 +              name:      "VSQRTPDMasked512load",
 +              auxType:   auxSymOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVSQRTPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
        },
        {
 -              name:    "Sub16",
 -              argLen:  2,
 -              generic: true,
 +              name:      "VSQRTPS512load",
 +              auxType:   auxSymOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVSQRTPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
        },
        {
 -              name:    "Sub32",
 -              argLen:  2,
 -              generic: true,
 +              name:      "VSQRTPSMasked128load",
 +              auxType:   auxSymOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVSQRTPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
        },
        {
 -              name:    "Sub64",
 -              argLen:  2,
 -              generic: true,
 +              name:      "VSQRTPSMasked256load",
 +              auxType:   auxSymOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVSQRTPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
        },
        {
 -              name:    "SubPtr",
 -              argLen:  2,
 -              generic: true,
 +              name:      "VSQRTPSMasked512load",
 +              auxType:   auxSymOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVSQRTPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
        },
        {
 -              name:    "Sub32F",
 -              argLen:  2,
 -              generic: true,
 +              name:      "VSUBPD512load",
 +              auxType:   auxSymOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVSUBPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
        },
        {
 -              name:    "Sub64F",
 -              argLen:  2,
 -              generic: true,
 +              name:      "VSUBPDMasked128load",
 +              auxType:   auxSymOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVSUBPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
        },
        {
 -              name:        "Mul8",
 -              argLen:      2,
 -              commutative: true,
 -              generic:     true,
 +              name:      "VSUBPDMasked256load",
 +              auxType:   auxSymOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVSUBPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
        },
        {
 -              name:        "Mul16",
 -              argLen:      2,
 -              commutative: true,
 -              generic:     true,
 +              name:      "VSUBPDMasked512load",
 +              auxType:   auxSymOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVSUBPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
        },
        {
 -              name:        "Mul32",
 -              argLen:      2,
 -              commutative: true,
 -              generic:     true,
 +              name:      "VSUBPS512load",
 +              auxType:   auxSymOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVSUBPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
        },
        {
 -              name:        "Mul64",
 -              argLen:      2,
 -              commutative: true,
 -              generic:     true,
 +              name:      "VSUBPSMasked128load",
 +              auxType:   auxSymOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVSUBPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
        },
        {
 -              name:        "Mul32F",
 -              argLen:      2,
 -              commutative: true,
 -              generic:     true,
 +              name:      "VSUBPSMasked256load",
 +              auxType:   auxSymOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVSUBPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
        },
        {
 -              name:        "Mul64F",
 -              argLen:      2,
 -              commutative: true,
 -              generic:     true,
 +              name:      "VSUBPSMasked512load",
 +              auxType:   auxSymOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVSUBPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
        },
        {
 -              name:    "Div32F",
 -              argLen:  2,
 -              generic: true,
 +              name:      "VCMPPD512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVCMPPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                      },
 +              },
        },
        {
 -              name:    "Div64F",
 -              argLen:  2,
 -              generic: true,
 +              name:      "VCMPPDMasked128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVCMPPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                      },
 +              },
        },
        {
 -              name:        "Hmul32",
 -              argLen:      2,
 -              commutative: true,
 -              generic:     true,
 -      },
 +              name:      "VCMPPDMasked256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVCMPPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VCMPPDMasked512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVCMPPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VCMPPS512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVCMPPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VCMPPSMasked128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVCMPPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VCMPPSMasked256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVCMPPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VCMPPSMasked512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVCMPPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VGF2P8AFFINEINVQB128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVGF2P8AFFINEINVQB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VGF2P8AFFINEINVQB256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVGF2P8AFFINEINVQB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VGF2P8AFFINEINVQB512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVGF2P8AFFINEINVQB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VGF2P8AFFINEINVQBMasked128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVGF2P8AFFINEINVQB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VGF2P8AFFINEINVQBMasked256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVGF2P8AFFINEINVQB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VGF2P8AFFINEINVQBMasked512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVGF2P8AFFINEINVQB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VGF2P8AFFINEQB128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVGF2P8AFFINEQB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VGF2P8AFFINEQB256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVGF2P8AFFINEQB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VGF2P8AFFINEQB512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVGF2P8AFFINEQB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VGF2P8AFFINEQBMasked128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVGF2P8AFFINEQB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VGF2P8AFFINEQBMasked256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVGF2P8AFFINEQB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VGF2P8AFFINEQBMasked512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVGF2P8AFFINEQB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPCMPD512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPCMPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPCMPDMasked128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVPCMPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPCMPDMasked256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVPCMPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPCMPDMasked512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVPCMPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPCMPQ512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPCMPQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPCMPQMasked128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVPCMPQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPCMPQMasked256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVPCMPQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPCMPQMasked512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVPCMPQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPCMPUD512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPCMPUD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPCMPUDMasked128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVPCMPUD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPCMPUDMasked256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVPCMPUD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPCMPUDMasked512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVPCMPUD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPCMPUQ512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPCMPUQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPCMPUQMasked128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVPCMPUQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPCMPUQMasked256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVPCMPUQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPCMPUQMasked512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVPCMPUQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPROLD128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVPROLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPROLD256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVPROLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPROLD512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVPROLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPROLDMasked128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPROLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPROLDMasked256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPROLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPROLDMasked512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPROLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPROLQ128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVPROLQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPROLQ256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVPROLQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPROLQ512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVPROLQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPROLQMasked128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPROLQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPROLQMasked256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPROLQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPROLQMasked512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPROLQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPRORD128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVPRORD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPRORD256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVPRORD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPRORD512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVPRORD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPRORDMasked128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPRORD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPRORDMasked256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPRORD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPRORDMasked512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPRORD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPRORQ128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVPRORQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPRORQ256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVPRORQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPRORQ512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVPRORQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPRORQMasked128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPRORQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPRORQMasked256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPRORQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPRORQMasked512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPRORQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSHLDD128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSHLDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSHLDD256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSHLDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSHLDD512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSHLDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSHLDDMasked128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSHLDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSHLDDMasked256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSHLDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSHLDDMasked512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSHLDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSHLDQ128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSHLDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSHLDQ256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSHLDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSHLDQ512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSHLDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSHLDQMasked128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSHLDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSHLDQMasked256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSHLDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSHLDQMasked512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSHLDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSHRDD128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSHRDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSHRDD256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSHRDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSHRDD512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSHRDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSHRDDMasked128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSHRDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSHRDDMasked256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSHRDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSHRDDMasked512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSHRDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSHRDQ128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSHRDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSHRDQ256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSHRDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSHRDQ512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSHRDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSHRDQMasked128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSHRDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSHRDQMasked256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSHRDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSHRDQMasked512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    4,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSHRDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSHUFD512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSHUFD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSHUFDMasked128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSHUFD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSHUFDMasked256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSHUFD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSHUFDMasked512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSHUFD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSLLD512constload",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSLLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSLLDMasked128constload",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSLLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSLLDMasked256constload",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSLLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSLLDMasked512constload",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSLLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSLLQ512constload",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSLLQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSLLQMasked128constload",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSLLQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSLLQMasked256constload",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSLLQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSLLQMasked512constload",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSLLQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSRAD512constload",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSRAD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSRADMasked128constload",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSRAD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSRADMasked256constload",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSRAD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSRADMasked512constload",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSRAD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSRAQ128constload",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSRAQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSRAQ256constload",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSRAQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSRAQ512constload",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSRAQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSRAQMasked128constload",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSRAQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSRAQMasked256constload",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSRAQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSRAQMasked512constload",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSRAQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSRLD512constload",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSRLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSRLDMasked128constload",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSRLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSRLDMasked256constload",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSRLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSRLDMasked512constload",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSRLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSRLQ512constload",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSRLQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSRLQMasked128constload",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSRLQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSRLQMasked256constload",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSRLQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VPSRLQMasked512constload",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVPSRLQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPTERNLOGD128load",
 +              auxType:      auxSymValAndOff,
 +              argLen:       4,
 +              resultInArg0: true,
 +              symEffect:    SymRead,
 +              asm:          x86.AVPTERNLOGD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPTERNLOGD256load",
 +              auxType:      auxSymValAndOff,
 +              argLen:       4,
 +              resultInArg0: true,
 +              symEffect:    SymRead,
 +              asm:          x86.AVPTERNLOGD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPTERNLOGD512load",
 +              auxType:      auxSymValAndOff,
 +              argLen:       4,
 +              resultInArg0: true,
 +              symEffect:    SymRead,
 +              asm:          x86.AVPTERNLOGD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPTERNLOGQ128load",
 +              auxType:      auxSymValAndOff,
 +              argLen:       4,
 +              resultInArg0: true,
 +              symEffect:    SymRead,
 +              asm:          x86.AVPTERNLOGQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPTERNLOGQ256load",
 +              auxType:      auxSymValAndOff,
 +              argLen:       4,
 +              resultInArg0: true,
 +              symEffect:    SymRead,
 +              asm:          x86.AVPTERNLOGQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPTERNLOGQ512load",
 +              auxType:      auxSymValAndOff,
 +              argLen:       4,
 +              resultInArg0: true,
 +              symEffect:    SymRead,
 +              asm:          x86.AVPTERNLOGQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VREDUCEPD128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVREDUCEPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VREDUCEPD256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVREDUCEPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VREDUCEPD512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVREDUCEPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VREDUCEPDMasked128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVREDUCEPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VREDUCEPDMasked256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVREDUCEPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VREDUCEPDMasked512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVREDUCEPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VREDUCEPS128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVREDUCEPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VREDUCEPS256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVREDUCEPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VREDUCEPS512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVREDUCEPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VREDUCEPSMasked128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVREDUCEPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VREDUCEPSMasked256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVREDUCEPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VREDUCEPSMasked512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVREDUCEPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VRNDSCALEPD128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVRNDSCALEPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VRNDSCALEPD256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVRNDSCALEPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VRNDSCALEPD512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVRNDSCALEPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VRNDSCALEPDMasked128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVRNDSCALEPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VRNDSCALEPDMasked256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVRNDSCALEPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VRNDSCALEPDMasked512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVRNDSCALEPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VRNDSCALEPS128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVRNDSCALEPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VRNDSCALEPS256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVRNDSCALEPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VRNDSCALEPS512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    2,
 +              symEffect: SymRead,
 +              asm:       x86.AVRNDSCALEPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VRNDSCALEPSMasked128load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVRNDSCALEPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VRNDSCALEPSMasked256load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVRNDSCALEPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VRNDSCALEPSMasked512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVRNDSCALEPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VSHUFPD512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVSHUFPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "VSHUFPS512load",
 +              auxType:   auxSymValAndOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       x86.AVSHUFPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 72057594037977087}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R15 SB
 +                              {0, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VADDPDMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVADDPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VADDPDMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVADDPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VADDPDMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVADDPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VADDPSMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVADDPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VADDPSMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVADDPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VADDPSMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVADDPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VBROADCASTSDMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVBROADCASTSD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VBROADCASTSDMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVBROADCASTSD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VBROADCASTSSMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVBROADCASTSS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VBROADCASTSSMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVBROADCASTSS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VBROADCASTSSMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVBROADCASTSS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VCVTPS2UDQMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVCVTPS2UDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VCVTPS2UDQMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVCVTPS2UDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VCVTPS2UDQMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVCVTPS2UDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VCVTTPS2DQMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVCVTTPS2DQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VCVTTPS2DQMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVCVTTPS2DQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VCVTTPS2DQMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVCVTTPS2DQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VDIVPDMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVDIVPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VDIVPDMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVDIVPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VDIVPDMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVDIVPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VDIVPSMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVDIVPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VDIVPSMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVDIVPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VDIVPSMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVDIVPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VGF2P8MULBMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVGF2P8MULB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VGF2P8MULBMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVGF2P8MULB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VGF2P8MULBMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVGF2P8MULB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VMAXPDMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVMAXPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VMAXPDMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVMAXPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VMAXPDMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVMAXPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VMAXPSMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVMAXPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VMAXPSMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVMAXPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VMAXPSMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVMAXPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VMINPDMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVMINPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VMINPDMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVMINPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VMINPDMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVMINPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VMINPSMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVMINPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VMINPSMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVMINPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VMINPSMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVMINPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VMULPDMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVMULPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VMULPDMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVMULPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VMULPDMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVMULPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VMULPSMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVMULPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VMULPSMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVMULPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VMULPSMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVMULPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPABSBMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPABSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPABSBMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPABSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPABSBMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPABSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPABSDMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPABSD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPABSDMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPABSD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPABSDMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPABSD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPABSQMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPABSQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPABSQMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPABSQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPABSQMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPABSQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPABSWMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPABSW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPABSWMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPABSW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPABSWMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPABSW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPACKSSDWMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPACKSSDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPACKSSDWMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPACKSSDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPACKSSDWMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPACKSSDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPACKUSDWMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPACKUSDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPACKUSDWMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPACKUSDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPACKUSDWMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPACKUSDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPADDBMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPADDB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPADDBMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPADDB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPADDBMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPADDB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPADDDMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPADDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPADDDMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPADDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPADDDMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPADDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPADDQMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPADDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPADDQMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPADDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPADDQMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPADDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPADDSBMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPADDSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPADDSBMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPADDSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPADDSBMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPADDSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPADDSWMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPADDSW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPADDSWMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPADDSW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPADDSWMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPADDSW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPADDUSBMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPADDUSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPADDUSBMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPADDUSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPADDUSBMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPADDUSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPADDUSWMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPADDUSW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPADDUSWMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPADDUSW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPADDUSWMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPADDUSW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPADDWMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPADDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPADDWMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPADDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPADDWMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPADDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPANDDMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPANDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPANDDMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPANDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPANDDMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPANDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPANDQMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPANDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPANDQMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPANDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPANDQMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPANDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPAVGBMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPAVGB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPAVGBMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPAVGB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPAVGBMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPAVGB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPAVGWMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPAVGW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPAVGWMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPAVGW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPAVGWMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPAVGW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPBROADCASTBMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPBROADCASTB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPBROADCASTBMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPBROADCASTB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPBROADCASTBMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPBROADCASTB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPBROADCASTDMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPBROADCASTD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPBROADCASTDMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPBROADCASTD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPBROADCASTDMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPBROADCASTD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPBROADCASTQMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPBROADCASTQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPBROADCASTQMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPBROADCASTQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPBROADCASTQMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPBROADCASTQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPBROADCASTWMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPBROADCASTW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPBROADCASTWMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPBROADCASTW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPBROADCASTWMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPBROADCASTW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPLZCNTDMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPLZCNTD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPLZCNTDMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPLZCNTD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPLZCNTDMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPLZCNTD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPLZCNTQMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPLZCNTQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPLZCNTQMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPLZCNTQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPLZCNTQMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPLZCNTQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMADDUBSWMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMADDUBSW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMADDUBSWMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMADDUBSW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMADDUBSWMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMADDUBSW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMADDWDMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMADDWD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMADDWDMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMADDWD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMADDWDMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMADDWD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMAXSBMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMAXSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMAXSBMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMAXSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMAXSBMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMAXSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMAXSDMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMAXSD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMAXSDMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMAXSD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMAXSDMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMAXSD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMAXSQMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMAXSQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMAXSQMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMAXSQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMAXSQMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMAXSQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMAXSWMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMAXSW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMAXSWMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMAXSW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMAXSWMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMAXSW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMAXUBMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMAXUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMAXUBMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMAXUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMAXUBMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMAXUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMAXUDMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMAXUD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMAXUDMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMAXUD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMAXUDMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMAXUD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMAXUQMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMAXUQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMAXUQMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMAXUQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMAXUQMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMAXUQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMAXUWMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMAXUW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMAXUWMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMAXUW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMAXUWMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMAXUW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMINSBMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMINSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMINSBMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMINSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMINSBMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMINSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMINSDMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMINSD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMINSDMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMINSD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMINSDMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMINSD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMINSQMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMINSQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMINSQMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMINSQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMINSQMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMINSQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMINSWMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMINSW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMINSWMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMINSW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMINSWMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMINSW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMINUBMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMINUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMINUBMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMINUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMINUBMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMINUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMINUDMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMINUD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMINUDMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMINUD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMINUDMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMINUD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMINUQMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMINUQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMINUQMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMINUQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMINUQMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMINUQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMINUWMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMINUW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMINUWMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMINUW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMINUWMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMINUW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVDBMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVDB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVDWMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVDWMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVQBMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVQB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVQDMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVQD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVQDMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVQD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVQWMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVQW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVSDBMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVSDB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVSDWMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVSDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVSDWMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVSDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVSQBMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVSQB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVSQDMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVSQD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVSQDMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVSQD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVSQWMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVSQW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVSWBMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVSWB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVSWBMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVSWB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVSXBDMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVSXBD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVSXBDMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVSXBD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVSXBDMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVSXBD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVSXBQMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVSXBQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVSXBQMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVSXBQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVSXBQMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVSXBQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVSXBWMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVSXBW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVSXBWMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVSXBW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVSXBWMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVSXBW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVSXDQMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVSXDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVSXDQMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVSXDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVSXDQMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVSXDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVSXWDMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVSXWD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVSXWDMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVSXWD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVSXWDMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVSXWD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVSXWQMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVSXWQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVSXWQMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVSXWQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVSXWQMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVSXWQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVUSDBMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVUSDB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVUSDWMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVUSDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVUSDWMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVUSDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVUSQBMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVUSQB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVUSQDMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVUSQD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVUSQDMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVUSQD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVUSQWMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVUSQW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVUSWBMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVUSWB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVUSWBMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVUSWB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVWBMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVWB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVWBMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVWB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVZXBDMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVZXBD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVZXBDMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVZXBD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVZXBDMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVZXBD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVZXBQMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVZXBQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVZXBQMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVZXBQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVZXBQMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVZXBQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVZXBWMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVZXBW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVZXBWMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVZXBW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVZXBWMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVZXBW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVZXDQMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVZXDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVZXDQMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVZXDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVZXDQMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVZXDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVZXWDMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVZXWD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVZXWDMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVZXWD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVZXWDMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVZXWD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVZXWQMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVZXWQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVZXWQMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVZXWQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMOVZXWQMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPMOVZXWQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMULHUWMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMULHUW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMULHUWMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMULHUW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMULHUWMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMULHUW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMULHWMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMULHW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMULHWMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMULHW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMULHWMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMULHW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMULLDMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMULLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMULLDMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMULLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMULLDMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMULLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMULLQMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMULLQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMULLQMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMULLQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMULLQMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMULLQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMULLWMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMULLW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMULLWMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMULLW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPMULLWMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPMULLW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPOPCNTBMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPOPCNTB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPOPCNTBMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPOPCNTB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPOPCNTBMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPOPCNTB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPOPCNTDMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPOPCNTD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPOPCNTDMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPOPCNTD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPOPCNTDMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPOPCNTD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPOPCNTQMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPOPCNTQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPOPCNTQMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPOPCNTQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPOPCNTQMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPOPCNTQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPOPCNTWMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPOPCNTW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPOPCNTWMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPOPCNTW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPOPCNTWMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPOPCNTW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPORDMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPORD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPORDMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPORD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPORDMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPORD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPORQMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPORQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPORQMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPORQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPORQMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPORQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPROLVDMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPROLVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPROLVDMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPROLVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPROLVDMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPROLVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPROLVQMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPROLVQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPROLVQMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPROLVQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPROLVQMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPROLVQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPRORVDMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPRORVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPRORVDMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPRORVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPRORVDMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPRORVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPRORVQMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPRORVQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPRORVQMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPRORVQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPRORVQMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPRORVQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSHUFBMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSHUFB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSHUFBMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSHUFB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSHUFBMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSHUFB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSLLVDMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSLLVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSLLVDMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSLLVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSLLVDMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSLLVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSLLVQMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSLLVQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSLLVQMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSLLVQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSLLVQMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSLLVQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSLLVWMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSLLVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSLLVWMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSLLVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSLLVWMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSLLVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRAVDMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRAVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRAVDMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRAVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRAVDMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRAVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRAVQMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRAVQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRAVQMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRAVQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRAVQMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRAVQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRAVWMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRAVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRAVWMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRAVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRAVWMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRAVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRLVDMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRLVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRLVDMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRLVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRLVDMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRLVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRLVQMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRLVQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRLVQMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRLVQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRLVQMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRLVQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRLVWMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRLVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRLVWMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRLVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRLVWMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRLVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSUBBMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSUBB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSUBBMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSUBB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSUBBMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSUBB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSUBDMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSUBD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSUBDMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSUBD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSUBDMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSUBD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSUBQMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSUBQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSUBQMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSUBQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSUBQMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSUBQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSUBSBMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSUBSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSUBSBMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSUBSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSUBSBMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSUBSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSUBSWMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSUBSW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSUBSWMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSUBSW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSUBSWMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSUBSW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSUBUSBMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSUBUSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSUBUSBMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSUBUSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSUBUSBMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSUBUSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSUBUSWMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSUBUSW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSUBUSWMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSUBUSW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSUBUSWMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSUBUSW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSUBWMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSUBW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSUBWMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSUBW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSUBWMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSUBW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPXORDMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPXORD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPXORDMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPXORD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPXORDMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPXORD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPXORQMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPXORQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPXORQMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPXORQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPXORQMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPXORQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VRCP14PDMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVRCP14PD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VRCP14PDMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVRCP14PD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VRCP14PDMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVRCP14PD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VRCP14PSMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVRCP14PS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VRCP14PSMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVRCP14PS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VRCP14PSMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVRCP14PS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VRSQRT14PDMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVRSQRT14PD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VRSQRT14PDMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVRSQRT14PD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VRSQRT14PDMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVRSQRT14PD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VRSQRT14PSMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVRSQRT14PS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VRSQRT14PSMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVRSQRT14PS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VRSQRT14PSMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVRSQRT14PS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VSCALEFPDMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVSCALEFPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VSCALEFPDMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVSCALEFPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VSCALEFPDMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVSCALEFPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VSCALEFPSMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVSCALEFPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VSCALEFPSMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVSCALEFPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VSCALEFPSMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVSCALEFPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VSQRTPDMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVSQRTPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VSQRTPDMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVSQRTPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VSQRTPDMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVSQRTPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VSQRTPSMasked128Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVSQRTPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VSQRTPSMasked256Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVSQRTPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VSQRTPSMasked512Merging",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVSQRTPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VSUBPDMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVSUBPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VSUBPDMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVSUBPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VSUBPDMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVSUBPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VSUBPSMasked128Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVSUBPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VSUBPSMasked256Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVSUBPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VSUBPSMasked512Merging",
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVSUBPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPROLDMasked128Merging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPROLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPROLDMasked256Merging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPROLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPROLDMasked512Merging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPROLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPROLQMasked128Merging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPROLQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPROLQMasked256Merging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPROLQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPROLQMasked512Merging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPROLQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPRORDMasked128Merging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPRORD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPRORDMasked256Merging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPRORD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPRORDMasked512Merging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPRORD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPRORQMasked128Merging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPRORQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPRORQMasked256Merging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPRORQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPRORQMasked512Merging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPRORQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSHLDDMasked128Merging",
 +              auxType:      auxUInt8,
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSHLDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSHLDDMasked256Merging",
 +              auxType:      auxUInt8,
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSHLDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSHLDDMasked512Merging",
 +              auxType:      auxUInt8,
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSHLDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSHLDQMasked128Merging",
 +              auxType:      auxUInt8,
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSHLDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSHLDQMasked256Merging",
 +              auxType:      auxUInt8,
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSHLDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSHLDQMasked512Merging",
 +              auxType:      auxUInt8,
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSHLDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSHLDWMasked128Merging",
 +              auxType:      auxUInt8,
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSHLDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSHLDWMasked256Merging",
 +              auxType:      auxUInt8,
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSHLDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSHLDWMasked512Merging",
 +              auxType:      auxUInt8,
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSHLDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSHRDDMasked128Merging",
 +              auxType:      auxUInt8,
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSHRDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSHRDDMasked256Merging",
 +              auxType:      auxUInt8,
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSHRDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSHRDDMasked512Merging",
 +              auxType:      auxUInt8,
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSHRDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSHRDQMasked128Merging",
 +              auxType:      auxUInt8,
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSHRDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSHRDQMasked256Merging",
 +              auxType:      auxUInt8,
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSHRDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSHRDQMasked512Merging",
 +              auxType:      auxUInt8,
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSHRDQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSHRDWMasked128Merging",
 +              auxType:      auxUInt8,
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSHRDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSHRDWMasked256Merging",
 +              auxType:      auxUInt8,
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSHRDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSHRDWMasked512Merging",
 +              auxType:      auxUInt8,
 +              argLen:       4,
 +              resultInArg0: true,
 +              asm:          x86.AVPSHRDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {3, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {2, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSHUFDMasked128Merging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSHUFD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSHUFDMasked256Merging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSHUFD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSHUFDMasked512Merging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSHUFD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSHUFHWMasked128Merging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSHUFHW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSHUFHWMasked256Merging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSHUFHW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSHUFHWMasked512Merging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSHUFHW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSLLDMasked128constMerging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSLLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSLLDMasked256constMerging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSLLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSLLDMasked512constMerging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSLLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSLLQMasked128constMerging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSLLQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSLLQMasked256constMerging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSLLQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSLLQMasked512constMerging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSLLQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSLLWMasked128constMerging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSLLW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSLLWMasked256constMerging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSLLW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSLLWMasked512constMerging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSLLW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRADMasked128constMerging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRAD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRADMasked256constMerging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRAD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRADMasked512constMerging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRAD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRAQMasked128constMerging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRAQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRAQMasked256constMerging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRAQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRAQMasked512constMerging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRAQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRAWMasked128constMerging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRAW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRAWMasked256constMerging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRAW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRAWMasked512constMerging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRAW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRLDMasked128constMerging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRLDMasked256constMerging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRLDMasked512constMerging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRLQMasked128constMerging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRLQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRLQMasked256constMerging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRLQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRLQMasked512constMerging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRLQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRLWMasked128constMerging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRLW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRLWMasked256constMerging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRLW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VPSRLWMasked512constMerging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVPSRLW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VREDUCEPDMasked128Merging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVREDUCEPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VREDUCEPDMasked256Merging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVREDUCEPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VREDUCEPDMasked512Merging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVREDUCEPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VREDUCEPSMasked128Merging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVREDUCEPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VREDUCEPSMasked256Merging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVREDUCEPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VREDUCEPSMasked512Merging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVREDUCEPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VRNDSCALEPDMasked128Merging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVRNDSCALEPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VRNDSCALEPDMasked256Merging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVRNDSCALEPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VRNDSCALEPDMasked512Merging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVRNDSCALEPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VRNDSCALEPSMasked128Merging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVRNDSCALEPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VRNDSCALEPSMasked256Merging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVRNDSCALEPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "VRNDSCALEPSMasked512Merging",
 +              auxType:      auxUInt8,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          x86.AVRNDSCALEPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 71494644084506624}, // K1 K2 K3 K4 K5 K6 K7
 +                              {0, 281472829161472},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                              {1, 281474976645120},   // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281472829161472}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31
 +                      },
 +              },
 +      },
 +
 +      {
 +              name:        "ADD",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm.AADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ADDconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     arm.AADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 30719}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 SP R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SUB",
 +              argLen: 2,
 +              asm:    arm.ASUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SUBconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     arm.ASUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "RSB",
 +              argLen: 2,
 +              asm:    arm.ARSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "RSBconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     arm.ARSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MUL",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm.AMUL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:        "HMUL",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm.AMULL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:        "HMULU",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm.AMULLU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "CALLudiv",
 +              argLen:       2,
 +              clobberFlags: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 2}, // R1
 +                              {1, 1}, // R0
 +                      },
 +                      clobbers: 20492, // R2 R3 R12 R14
 +                      outputs: []outputInfo{
 +                              {0, 1}, // R0
 +                              {1, 2}, // R1
 +                      },
 +              },
 +      },
 +      {
 +              name:        "ADDS",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm.AADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ADDSconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     arm.AADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:        "ADC",
 +              argLen:      3,
 +              commutative: true,
 +              asm:         arm.AADC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ADCconst",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.AADC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
++      {
++              name:        "ADCS",
++              argLen:      3,
++              commutative: true,
++              asm:         arm.AADC,
++              reg: regInfo{
++                      inputs: []inputInfo{
++                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
++                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
++                      },
++                      outputs: []outputInfo{
++                              {1, 0},
++                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
++                      },
++              },
++      },
 +      {
 +              name:   "SUBS",
 +              argLen: 2,
 +              asm:    arm.ASUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SUBSconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     arm.ASUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "RSBSconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     arm.ARSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SBC",
 +              argLen: 3,
 +              asm:    arm.ASBC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SBCconst",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.ASBC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "RSCconst",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.ARSC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULLU",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm.AMULLU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MULA",
 +              argLen: 3,
 +              asm:    arm.AMULA,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MULS",
 +              argLen: 3,
 +              asm:    arm.AMULS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:        "ADDF",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm.AADDF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:        "ADDD",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm.AADDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SUBF",
 +              argLen: 2,
 +              asm:    arm.ASUBF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SUBD",
 +              argLen: 2,
 +              asm:    arm.ASUBD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULF",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm.AMULF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULD",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm.AMULD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:        "NMULF",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm.ANMULF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:        "NMULD",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm.ANMULD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "DIVF",
 +              argLen: 2,
 +              asm:    arm.ADIVF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "DIVD",
 +              argLen: 2,
 +              asm:    arm.ADIVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:         "MULAF",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          arm.AMULAF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {2, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:         "MULAD",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          arm.AMULAD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {2, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:         "MULSF",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          arm.AMULSF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {2, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:         "MULSD",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          arm.AMULSD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {2, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:         "FMULAD",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          arm.AFMULAD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {2, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:        "AND",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ANDconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     arm.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:        "OR",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm.AORR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ORconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     arm.AORR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:        "XOR",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm.AEOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "XORconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     arm.AEOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "BIC",
 +              argLen: 2,
 +              asm:    arm.ABIC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "BICconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     arm.ABIC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "BFX",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     arm.ABFX,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "BFXU",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     arm.ABFXU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MVN",
 +              argLen: 1,
 +              asm:    arm.AMVN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "NEGF",
 +              argLen: 1,
 +              asm:    arm.ANEGF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "NEGD",
 +              argLen: 1,
 +              asm:    arm.ANEGD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SQRTD",
 +              argLen: 1,
 +              asm:    arm.ASQRTD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SQRTF",
 +              argLen: 1,
 +              asm:    arm.ASQRTF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ABSD",
 +              argLen: 1,
 +              asm:    arm.AABSD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CLZ",
 +              argLen: 1,
 +              asm:    arm.ACLZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "REV",
 +              argLen: 1,
 +              asm:    arm.AREV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "REV16",
 +              argLen: 1,
 +              asm:    arm.AREV16,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "RBIT",
 +              argLen: 1,
 +              asm:    arm.ARBIT,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SLL",
 +              argLen: 2,
 +              asm:    arm.ASLL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SLLconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     arm.ASLL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SRL",
 +              argLen: 2,
 +              asm:    arm.ASRL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SRLconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     arm.ASRL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SRA",
 +              argLen: 2,
 +              asm:    arm.ASRA,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SRAconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     arm.ASRA,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SRR",
 +              argLen: 2,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SRRconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ADDshiftLL",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.AADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ADDshiftRL",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.AADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ADDshiftRA",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.AADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SUBshiftLL",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.ASUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SUBshiftRL",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.ASUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SUBshiftRA",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.ASUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "RSBshiftLL",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.ARSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "RSBshiftRL",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.ARSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "RSBshiftRA",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.ARSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ANDshiftLL",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ANDshiftRL",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ANDshiftRA",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ORshiftLL",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.AORR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ORshiftRL",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.AORR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ORshiftRA",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.AORR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "XORshiftLL",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.AEOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "XORshiftRL",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.AEOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "XORshiftRA",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.AEOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "XORshiftRR",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.AEOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "BICshiftLL",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.ABIC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "BICshiftRL",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.ABIC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "BICshiftRA",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.ABIC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "MVNshiftLL",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     arm.AMVN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "MVNshiftRL",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     arm.AMVN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "MVNshiftRA",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     arm.AMVN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ADCshiftLL",
 +              auxType: auxInt32,
 +              argLen:  3,
 +              asm:     arm.AADC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ADCshiftRL",
 +              auxType: auxInt32,
 +              argLen:  3,
 +              asm:     arm.AADC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ADCshiftRA",
 +              auxType: auxInt32,
 +              argLen:  3,
 +              asm:     arm.AADC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SBCshiftLL",
 +              auxType: auxInt32,
 +              argLen:  3,
 +              asm:     arm.ASBC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SBCshiftRL",
 +              auxType: auxInt32,
 +              argLen:  3,
 +              asm:     arm.ASBC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SBCshiftRA",
 +              auxType: auxInt32,
 +              argLen:  3,
 +              asm:     arm.ASBC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "RSCshiftLL",
 +              auxType: auxInt32,
 +              argLen:  3,
 +              asm:     arm.ARSC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "RSCshiftRL",
 +              auxType: auxInt32,
 +              argLen:  3,
 +              asm:     arm.ARSC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "RSCshiftRA",
 +              auxType: auxInt32,
 +              argLen:  3,
 +              asm:     arm.ARSC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ADDSshiftLL",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.AADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ADDSshiftRL",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.AADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ADDSshiftRA",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.AADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SUBSshiftLL",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.ASUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SUBSshiftRL",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.ASUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SUBSshiftRA",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.ASUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "RSBSshiftLL",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.ARSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "RSBSshiftRL",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.ARSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "RSBSshiftRA",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.ARSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ADDshiftLLreg",
 +              argLen: 3,
 +              asm:    arm.AADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ADDshiftRLreg",
 +              argLen: 3,
 +              asm:    arm.AADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ADDshiftRAreg",
 +              argLen: 3,
 +              asm:    arm.AADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SUBshiftLLreg",
 +              argLen: 3,
 +              asm:    arm.ASUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SUBshiftRLreg",
 +              argLen: 3,
 +              asm:    arm.ASUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SUBshiftRAreg",
 +              argLen: 3,
 +              asm:    arm.ASUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "RSBshiftLLreg",
 +              argLen: 3,
 +              asm:    arm.ARSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "RSBshiftRLreg",
 +              argLen: 3,
 +              asm:    arm.ARSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "RSBshiftRAreg",
 +              argLen: 3,
 +              asm:    arm.ARSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ANDshiftLLreg",
 +              argLen: 3,
 +              asm:    arm.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ANDshiftRLreg",
 +              argLen: 3,
 +              asm:    arm.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ANDshiftRAreg",
 +              argLen: 3,
 +              asm:    arm.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ORshiftLLreg",
 +              argLen: 3,
 +              asm:    arm.AORR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ORshiftRLreg",
 +              argLen: 3,
 +              asm:    arm.AORR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ORshiftRAreg",
 +              argLen: 3,
 +              asm:    arm.AORR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "XORshiftLLreg",
 +              argLen: 3,
 +              asm:    arm.AEOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "XORshiftRLreg",
 +              argLen: 3,
 +              asm:    arm.AEOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "XORshiftRAreg",
 +              argLen: 3,
 +              asm:    arm.AEOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "BICshiftLLreg",
 +              argLen: 3,
 +              asm:    arm.ABIC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "BICshiftRLreg",
 +              argLen: 3,
 +              asm:    arm.ABIC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "BICshiftRAreg",
 +              argLen: 3,
 +              asm:    arm.ABIC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MVNshiftLLreg",
 +              argLen: 2,
 +              asm:    arm.AMVN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MVNshiftRLreg",
 +              argLen: 2,
 +              asm:    arm.AMVN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MVNshiftRAreg",
 +              argLen: 2,
 +              asm:    arm.AMVN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ADCshiftLLreg",
 +              argLen: 4,
 +              asm:    arm.AADC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ADCshiftRLreg",
 +              argLen: 4,
 +              asm:    arm.AADC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ADCshiftRAreg",
 +              argLen: 4,
 +              asm:    arm.AADC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SBCshiftLLreg",
 +              argLen: 4,
 +              asm:    arm.ASBC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SBCshiftRLreg",
 +              argLen: 4,
 +              asm:    arm.ASBC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SBCshiftRAreg",
 +              argLen: 4,
 +              asm:    arm.ASBC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "RSCshiftLLreg",
 +              argLen: 4,
 +              asm:    arm.ARSC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "RSCshiftRLreg",
 +              argLen: 4,
 +              asm:    arm.ARSC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "RSCshiftRAreg",
 +              argLen: 4,
 +              asm:    arm.ARSC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ADDSshiftLLreg",
 +              argLen: 3,
 +              asm:    arm.AADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ADDSshiftRLreg",
 +              argLen: 3,
 +              asm:    arm.AADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ADDSshiftRAreg",
 +              argLen: 3,
 +              asm:    arm.AADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SUBSshiftLLreg",
 +              argLen: 3,
 +              asm:    arm.ASUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SUBSshiftRLreg",
 +              argLen: 3,
 +              asm:    arm.ASUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SUBSshiftRAreg",
 +              argLen: 3,
 +              asm:    arm.ASUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "RSBSshiftLLreg",
 +              argLen: 3,
 +              asm:    arm.ARSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "RSBSshiftRLreg",
 +              argLen: 3,
 +              asm:    arm.ARSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "RSBSshiftRAreg",
 +              argLen: 3,
 +              asm:    arm.ARSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMP",
 +              argLen: 2,
 +              asm:    arm.ACMP,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CMPconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     arm.ACMP,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:        "CMN",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm.ACMN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CMNconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     arm.ACMN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:        "TST",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm.ATST,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "TSTconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     arm.ATST,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:        "TEQ",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm.ATEQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "TEQconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     arm.ATEQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPF",
 +              argLen: 2,
 +              asm:    arm.ACMPF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPD",
 +              argLen: 2,
 +              asm:    arm.ACMPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CMPshiftLL",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.ACMP,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CMPshiftRL",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.ACMP,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CMPshiftRA",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.ACMP,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CMNshiftLL",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.ACMN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CMNshiftRL",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.ACMN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CMNshiftRA",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.ACMN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "TSTshiftLL",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.ATST,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "TSTshiftRL",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.ATST,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "TSTshiftRA",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.ATST,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "TEQshiftLL",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.ATEQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "TEQshiftRL",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.ATEQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "TEQshiftRA",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     arm.ATEQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {1, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPshiftLLreg",
 +              argLen: 3,
 +              asm:    arm.ACMP,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPshiftRLreg",
 +              argLen: 3,
 +              asm:    arm.ACMP,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPshiftRAreg",
 +              argLen: 3,
 +              asm:    arm.ACMP,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMNshiftLLreg",
 +              argLen: 3,
 +              asm:    arm.ACMN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMNshiftRLreg",
 +              argLen: 3,
 +              asm:    arm.ACMN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMNshiftRAreg",
 +              argLen: 3,
 +              asm:    arm.ACMN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "TSTshiftLLreg",
 +              argLen: 3,
 +              asm:    arm.ATST,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "TSTshiftRLreg",
 +              argLen: 3,
 +              asm:    arm.ATST,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "TSTshiftRAreg",
 +              argLen: 3,
 +              asm:    arm.ATST,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "TEQshiftLLreg",
 +              argLen: 3,
 +              asm:    arm.ATEQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "TEQshiftRLreg",
 +              argLen: 3,
 +              asm:    arm.ATEQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "TEQshiftRAreg",
 +              argLen: 3,
 +              asm:    arm.ATEQ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPF0",
 +              argLen: 1,
 +              asm:    arm.ACMPF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPD0",
 +              argLen: 1,
 +              asm:    arm.ACMPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:              "MOVWconst",
 +              auxType:           auxInt32,
 +              argLen:            0,
 +              rematerializeable: true,
 +              asm:               arm.AMOVW,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:              "MOVFconst",
 +              auxType:           auxFloat64,
 +              argLen:            0,
 +              rematerializeable: true,
 +              asm:               arm.AMOVF,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:              "MOVDconst",
 +              auxType:           auxFloat64,
 +              argLen:            0,
 +              rematerializeable: true,
 +              asm:               arm.AMOVD,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:              "MOVWaddr",
 +              auxType:           auxSymOff,
 +              argLen:            1,
 +              rematerializeable: true,
 +              symEffect:         SymAddr,
 +              asm:               arm.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294975488}, // SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVBload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            arm.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294998015}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 SP R14 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVBUload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            arm.AMOVBU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294998015}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 SP R14 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            arm.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294998015}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 SP R14 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHUload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            arm.AMOVHU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294998015}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 SP R14 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            arm.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294998015}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 SP R14 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVFload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            arm.AMOVF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294998015}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 SP R14 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVDload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            arm.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294998015}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 SP R14 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVBstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            arm.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 22527},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {0, 4294998015}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 SP R14 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            arm.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 22527},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {0, 4294998015}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 SP R14 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            arm.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 22527},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {0, 4294998015}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 SP R14 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVFstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            arm.AMOVF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294998015}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 SP R14 SB
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVDstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            arm.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294998015}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 SP R14 SB
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWloadidx",
 +              argLen: 3,
 +              asm:    arm.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 22527},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {0, 4294998015}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 SP R14 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "MOVWloadshiftLL",
 +              auxType: auxInt32,
 +              argLen:  3,
 +              asm:     arm.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 22527},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {0, 4294998015}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 SP R14 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "MOVWloadshiftRL",
 +              auxType: auxInt32,
 +              argLen:  3,
 +              asm:     arm.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 22527},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {0, 4294998015}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 SP R14 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "MOVWloadshiftRA",
 +              auxType: auxInt32,
 +              argLen:  3,
 +              asm:     arm.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 22527},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {0, 4294998015}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 SP R14 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVBUloadidx",
 +              argLen: 3,
 +              asm:    arm.AMOVBU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 22527},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {0, 4294998015}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 SP R14 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVBloadidx",
 +              argLen: 3,
 +              asm:    arm.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 22527},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {0, 4294998015}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 SP R14 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHUloadidx",
 +              argLen: 3,
 +              asm:    arm.AMOVHU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 22527},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {0, 4294998015}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 SP R14 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHloadidx",
 +              argLen: 3,
 +              asm:    arm.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 22527},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {0, 4294998015}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 SP R14 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWstoreidx",
 +              argLen: 4,
 +              asm:    arm.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 22527},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {2, 22527},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {0, 4294998015}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 SP R14 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:    "MOVWstoreshiftLL",
 +              auxType: auxInt32,
 +              argLen:  4,
 +              asm:     arm.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 22527},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {2, 22527},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {0, 4294998015}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 SP R14 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:    "MOVWstoreshiftRL",
 +              auxType: auxInt32,
 +              argLen:  4,
 +              asm:     arm.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 22527},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {2, 22527},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {0, 4294998015}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 SP R14 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:    "MOVWstoreshiftRA",
 +              auxType: auxInt32,
 +              argLen:  4,
 +              asm:     arm.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 22527},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {2, 22527},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {0, 4294998015}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 SP R14 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVBstoreidx",
 +              argLen: 4,
 +              asm:    arm.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 22527},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {2, 22527},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {0, 4294998015}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 SP R14 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHstoreidx",
 +              argLen: 4,
 +              asm:    arm.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 22527},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {2, 22527},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                              {0, 4294998015}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 SP R14 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVBreg",
 +              argLen: 1,
 +              asm:    arm.AMOVBS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVBUreg",
 +              argLen: 1,
 +              asm:    arm.AMOVBU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHreg",
 +              argLen: 1,
 +              asm:    arm.AMOVHS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHUreg",
 +              argLen: 1,
 +              asm:    arm.AMOVHU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWreg",
 +              argLen: 1,
 +              asm:    arm.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "MOVWnop",
 +              argLen:       1,
 +              resultInArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWF",
 +              argLen: 1,
 +              asm:    arm.AMOVWF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      clobbers: 2147483648, // F15
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWD",
 +              argLen: 1,
 +              asm:    arm.AMOVWD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      clobbers: 2147483648, // F15
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWUF",
 +              argLen: 1,
 +              asm:    arm.AMOVWF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      clobbers: 2147483648, // F15
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWUD",
 +              argLen: 1,
 +              asm:    arm.AMOVWD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      clobbers: 2147483648, // F15
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVFW",
 +              argLen: 1,
 +              asm:    arm.AMOVFW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      clobbers: 2147483648, // F15
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVDW",
 +              argLen: 1,
 +              asm:    arm.AMOVDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      clobbers: 2147483648, // F15
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVFWU",
 +              argLen: 1,
 +              asm:    arm.AMOVFW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      clobbers: 2147483648, // F15
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVDWU",
 +              argLen: 1,
 +              asm:    arm.AMOVDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      clobbers: 2147483648, // F15
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVFD",
 +              argLen: 1,
 +              asm:    arm.AMOVFD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVDF",
 +              argLen: 1,
 +              asm:    arm.AMOVDF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:         "CMOVWHSconst",
 +              auxType:      auxInt32,
 +              argLen:       2,
 +              resultInArg0: true,
 +              asm:          arm.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "CMOVWLSconst",
 +              auxType:      auxInt32,
 +              argLen:       2,
 +              resultInArg0: true,
 +              asm:          arm.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SRAcond",
 +              argLen: 3,
 +              asm:    arm.ASRA,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "CALLstatic",
 +              auxType:      auxCallOff,
 +              argLen:       1,
 +              clobberFlags: true,
 +              call:         true,
 +              reg: regInfo{
 +                      clobbers: 4294924287, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +              },
 +      },
 +      {
 +              name:         "CALLtail",
 +              auxType:      auxCallOff,
 +              argLen:       1,
 +              clobberFlags: true,
 +              call:         true,
 +              tailCall:     true,
 +              reg: regInfo{
 +                      clobbers: 4294924287, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +              },
 +      },
 +      {
 +              name:         "CALLclosure",
 +              auxType:      auxCallOff,
 +              argLen:       3,
 +              clobberFlags: true,
 +              call:         true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 128},   // R7
 +                              {0, 29695}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 SP R14
 +                      },
 +                      clobbers: 4294924287, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +              },
 +      },
 +      {
 +              name:         "CALLinter",
 +              auxType:      auxCallOff,
 +              argLen:       2,
 +              clobberFlags: true,
 +              call:         true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      clobbers: 4294924287, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +              },
 +      },
 +      {
 +              name:           "LoweredNilCheck",
 +              argLen:         2,
 +              nilCheck:       true,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 22527}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 g R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "Equal",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "NotEqual",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "LessThan",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "LessEqual",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "GreaterThan",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "GreaterEqual",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "LessThanU",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "LessEqualU",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "GreaterThanU",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "GreaterEqualU",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "DUFFZERO",
 +              auxType:        auxInt64,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 2}, // R1
 +                              {1, 1}, // R0
 +                      },
 +                      clobbers: 20482, // R1 R12 R14
 +              },
 +      },
 +      {
 +              name:           "DUFFCOPY",
 +              auxType:        auxInt64,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              faultOnNilArg1: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4}, // R2
 +                              {1, 2}, // R1
 +                      },
 +                      clobbers: 20487, // R0 R1 R2 R12 R14
 +              },
 +      },
 +      {
 +              name:           "LoweredZero",
 +              auxType:        auxInt64,
 +              argLen:         4,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 2},     // R1
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      clobbers: 2, // R1
 +              },
 +      },
 +      {
 +              name:           "LoweredMove",
 +              auxType:        auxInt64,
 +              argLen:         4,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              faultOnNilArg1: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4},     // R2
 +                              {1, 2},     // R1
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      clobbers: 6, // R1 R2
 +              },
 +      },
 +      {
 +              name:      "LoweredGetClosurePtr",
 +              argLen:    0,
 +              zeroWidth: true,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 128}, // R7
 +                      },
 +              },
 +      },
 +      {
 +              name:              "LoweredGetCallerSP",
 +              argLen:            1,
 +              rematerializeable: true,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:              "LoweredGetCallerPC",
 +              argLen:            0,
 +              rematerializeable: true,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredPanicBoundsRR",
 +              auxType: auxInt64,
 +              argLen:  3,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 5119}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12
 +                              {1, 5119}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredPanicBoundsRC",
 +              auxType: auxPanicBoundsC,
 +              argLen:  2,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 5119}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredPanicBoundsCR",
 +              auxType: auxPanicBoundsC,
 +              argLen:  2,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 5119}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredPanicBoundsCC",
 +              auxType: auxPanicBoundsCC,
 +              argLen:  1,
 +              call:    true,
 +              reg:     regInfo{},
 +      },
 +      {
 +              name:    "LoweredPanicExtendRR",
 +              auxType: auxInt64,
 +              argLen:  4,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 15},    // R0 R1 R2 R3
 +                              {1, 15},    // R0 R1 R2 R3
 +                              {2, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredPanicExtendRC",
 +              auxType: auxPanicBoundsC,
 +              argLen:  3,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 15}, // R0 R1 R2 R3
 +                              {1, 15}, // R0 R1 R2 R3
 +                      },
 +              },
 +      },
 +      {
 +              name:    "FlagConstant",
 +              auxType: auxFlagConstant,
 +              argLen:  0,
 +              reg:     regInfo{},
 +      },
 +      {
 +              name:   "InvertFlags",
 +              argLen: 1,
 +              reg:    regInfo{},
 +      },
 +      {
 +              name:         "LoweredWB",
 +              auxType:      auxInt64,
 +              argLen:       1,
 +              clobberFlags: true,
 +              reg: regInfo{
 +                      clobbers: 4294922240, // R12 R14 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      outputs: []outputInfo{
 +                              {0, 256}, // R8
 +                      },
 +              },
 +      },
 +
 +      {
 +              name:        "ADCSflags",
 +              argLen:      3,
 +              commutative: true,
 +              asm:         arm64.AADCS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                              {1, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ADCzerocarry",
 +              argLen: 1,
 +              asm:    arm64.AADC,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "ADD",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm64.AADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ADDconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     arm64.AADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1476395007}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ADDSconstflags",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     arm64.AADDS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "ADDSflags",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm64.AADDS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                              {1, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SUB",
 +              argLen: 2,
 +              asm:    arm64.ASUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SUBconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     arm64.ASUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SBCSflags",
 +              argLen: 3,
 +              asm:    arm64.ASBCS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                              {1, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SUBSflags",
 +              argLen: 2,
 +              asm:    arm64.ASUBS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                              {1, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MUL",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm64.AMUL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULW",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm64.AMULW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MNEG",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm64.AMNEG,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MNEGW",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm64.AMNEGW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULH",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm64.ASMULH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "UMULH",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm64.AUMULH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULL",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm64.ASMULL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "UMULL",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm64.AUMULL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "DIV",
 +              argLen: 2,
 +              asm:    arm64.ASDIV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "UDIV",
 +              argLen: 2,
 +              asm:    arm64.AUDIV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "DIVW",
 +              argLen: 2,
 +              asm:    arm64.ASDIVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "UDIVW",
 +              argLen: 2,
 +              asm:    arm64.AUDIVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOD",
 +              argLen: 2,
 +              asm:    arm64.AREM,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "UMOD",
 +              argLen: 2,
 +              asm:    arm64.AUREM,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MODW",
 +              argLen: 2,
 +              asm:    arm64.AREMW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "UMODW",
 +              argLen: 2,
 +              asm:    arm64.AUREMW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FADDS",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm64.AFADDS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FADDD",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm64.AFADDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FSUBS",
 +              argLen: 2,
 +              asm:    arm64.AFSUBS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FSUBD",
 +              argLen: 2,
 +              asm:    arm64.AFSUBD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FMULS",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm64.AFMULS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FMULD",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm64.AFMULD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FNMULS",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm64.AFNMULS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FNMULD",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm64.AFNMULD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FDIVS",
 +              argLen: 2,
 +              asm:    arm64.AFDIVS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FDIVD",
 +              argLen: 2,
 +              asm:    arm64.AFDIVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "AND",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm64.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ANDconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     arm64.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "OR",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm64.AORR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ORconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     arm64.AORR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "XOR",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm64.AEOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "XORconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     arm64.AEOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "BIC",
 +              argLen: 2,
 +              asm:    arm64.ABIC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "EON",
 +              argLen: 2,
 +              asm:    arm64.AEON,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ORN",
 +              argLen: 2,
 +              asm:    arm64.AORN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MVN",
 +              argLen: 1,
 +              asm:    arm64.AMVN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "NEG",
 +              argLen: 1,
 +              asm:    arm64.ANEG,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "NEGSflags",
 +              argLen: 1,
 +              asm:    arm64.ANEGS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "NGCzerocarry",
 +              argLen: 1,
 +              asm:    arm64.ANGC,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FABSD",
 +              argLen: 1,
 +              asm:    arm64.AFABSD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FNEGS",
 +              argLen: 1,
 +              asm:    arm64.AFNEGS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FNEGD",
 +              argLen: 1,
 +              asm:    arm64.AFNEGD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FSQRTD",
 +              argLen: 1,
 +              asm:    arm64.AFSQRTD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FSQRTS",
 +              argLen: 1,
 +              asm:    arm64.AFSQRTS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMIND",
 +              argLen: 2,
 +              asm:    arm64.AFMIND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMINS",
 +              argLen: 2,
 +              asm:    arm64.AFMINS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMAXD",
 +              argLen: 2,
 +              asm:    arm64.AFMAXD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMAXS",
 +              argLen: 2,
 +              asm:    arm64.AFMAXS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "REV",
 +              argLen: 1,
 +              asm:    arm64.AREV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "REVW",
 +              argLen: 1,
 +              asm:    arm64.AREVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "REV16",
 +              argLen: 1,
 +              asm:    arm64.AREV16,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "REV16W",
 +              argLen: 1,
 +              asm:    arm64.AREV16W,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "RBIT",
 +              argLen: 1,
 +              asm:    arm64.ARBIT,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "RBITW",
 +              argLen: 1,
 +              asm:    arm64.ARBITW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CLZ",
 +              argLen: 1,
 +              asm:    arm64.ACLZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CLZW",
 +              argLen: 1,
 +              asm:    arm64.ACLZW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "VCNT",
 +              argLen: 1,
 +              asm:    arm64.AVCNT,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "VUADDLV",
 +              argLen: 1,
 +              asm:    arm64.AVUADDLV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "LoweredRound32F",
 +              argLen:       1,
 +              resultInArg0: true,
 +              zeroWidth:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "LoweredRound64F",
 +              argLen:       1,
 +              resultInArg0: true,
 +              zeroWidth:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMADDS",
 +              argLen: 3,
 +              asm:    arm64.AFMADDS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {2, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMADDD",
 +              argLen: 3,
 +              asm:    arm64.AFMADDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {2, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FNMADDS",
 +              argLen: 3,
 +              asm:    arm64.AFNMADDS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {2, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FNMADDD",
 +              argLen: 3,
 +              asm:    arm64.AFNMADDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {2, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMSUBS",
 +              argLen: 3,
 +              asm:    arm64.AFMSUBS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {2, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMSUBD",
 +              argLen: 3,
 +              asm:    arm64.AFMSUBD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {2, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FNMSUBS",
 +              argLen: 3,
 +              asm:    arm64.AFNMSUBS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {2, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FNMSUBD",
 +              argLen: 3,
 +              asm:    arm64.AFNMSUBD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {2, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MADD",
 +              argLen: 3,
 +              asm:    arm64.AMADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {2, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MADDW",
 +              argLen: 3,
 +              asm:    arm64.AMADDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {2, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MSUB",
 +              argLen: 3,
 +              asm:    arm64.AMSUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {2, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MSUBW",
 +              argLen: 3,
 +              asm:    arm64.AMSUBW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {2, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SLL",
 +              argLen: 2,
 +              asm:    arm64.ALSL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SLLconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     arm64.ALSL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SRL",
 +              argLen: 2,
 +              asm:    arm64.ALSR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SRLconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     arm64.ALSR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SRA",
 +              argLen: 2,
 +              asm:    arm64.AASR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SRAconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     arm64.AASR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ROR",
 +              argLen: 2,
 +              asm:    arm64.AROR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "RORW",
 +              argLen: 2,
 +              asm:    arm64.ARORW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "RORconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     arm64.AROR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "RORWconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     arm64.ARORW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "EXTRconst",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.AEXTR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "EXTRWconst",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.AEXTRW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMP",
 +              argLen: 2,
 +              asm:    arm64.ACMP,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CMPconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     arm64.ACMP,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPW",
 +              argLen: 2,
 +              asm:    arm64.ACMPW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CMPWconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     arm64.ACMPW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "CMN",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm64.ACMN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CMNconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     arm64.ACMN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "CMNW",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm64.ACMNW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CMNWconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     arm64.ACMNW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "TST",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm64.ATST,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "TSTconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     arm64.ATST,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "TSTW",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         arm64.ATSTW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "TSTWconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     arm64.ATSTW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCMPS",
 +              argLen: 2,
 +              asm:    arm64.AFCMPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCMPD",
 +              argLen: 2,
 +              asm:    arm64.AFCMPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCMPS0",
 +              argLen: 1,
 +              asm:    arm64.AFCMPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCMPD0",
 +              argLen: 1,
 +              asm:    arm64.AFCMPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "MVNshiftLL",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     arm64.AMVN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "MVNshiftRL",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     arm64.AMVN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "MVNshiftRA",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     arm64.AMVN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "MVNshiftRO",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     arm64.AMVN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "NEGshiftLL",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     arm64.ANEG,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "NEGshiftRL",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     arm64.ANEG,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "NEGshiftRA",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     arm64.ANEG,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ADDshiftLL",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.AADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ADDshiftRL",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.AADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ADDshiftRA",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.AADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SUBshiftLL",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.ASUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SUBshiftRL",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.ASUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SUBshiftRA",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.ASUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ANDshiftLL",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ANDshiftRL",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ANDshiftRA",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ANDshiftRO",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ORshiftLL",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.AORR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ORshiftRL",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.AORR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ORshiftRA",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.AORR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ORshiftRO",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.AORR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "XORshiftLL",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.AEOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "XORshiftRL",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.AEOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "XORshiftRA",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.AEOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "XORshiftRO",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.AEOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "BICshiftLL",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.ABIC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "BICshiftRL",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.ABIC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "BICshiftRA",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.ABIC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "BICshiftRO",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.ABIC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "EONshiftLL",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.AEON,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "EONshiftRL",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.AEON,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "EONshiftRA",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.AEON,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "EONshiftRO",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.AEON,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ORNshiftLL",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.AORN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ORNshiftRL",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.AORN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ORNshiftRA",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.AORN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ORNshiftRO",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.AORN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CMPshiftLL",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.ACMP,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CMPshiftRL",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.ACMP,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CMPshiftRA",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.ACMP,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CMNshiftLL",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.ACMN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CMNshiftRL",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.ACMN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CMNshiftRA",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.ACMN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "TSTshiftLL",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.ATST,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "TSTshiftRL",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.ATST,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "TSTshiftRA",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.ATST,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "TSTshiftRO",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     arm64.ATST,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:         "BFI",
 +              auxType:      auxARM64BitField,
 +              argLen:       2,
 +              resultInArg0: true,
 +              asm:          arm64.ABFI,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                              {1, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:         "BFXIL",
 +              auxType:      auxARM64BitField,
 +              argLen:       2,
 +              resultInArg0: true,
 +              asm:          arm64.ABFXIL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                              {1, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SBFIZ",
 +              auxType: auxARM64BitField,
 +              argLen:  1,
 +              asm:     arm64.ASBFIZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SBFX",
 +              auxType: auxARM64BitField,
 +              argLen:  1,
 +              asm:     arm64.ASBFX,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "UBFIZ",
 +              auxType: auxARM64BitField,
 +              argLen:  1,
 +              asm:     arm64.AUBFIZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "UBFX",
 +              auxType: auxARM64BitField,
 +              argLen:  1,
 +              asm:     arm64.AUBFX,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:              "MOVDconst",
 +              auxType:           auxInt64,
 +              argLen:            0,
 +              rematerializeable: true,
 +              asm:               arm64.AMOVD,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:              "FMOVSconst",
 +              auxType:           auxFloat64,
 +              argLen:            0,
 +              rematerializeable: true,
 +              asm:               arm64.AFMOVS,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:              "FMOVDconst",
 +              auxType:           auxFloat64,
 +              argLen:            0,
 +              rematerializeable: true,
 +              asm:               arm64.AFMOVD,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:              "MOVDaddr",
 +              auxType:           auxSymOff,
 +              argLen:            1,
 +              rematerializeable: true,
 +              symEffect:         SymAddr,
 +              asm:               arm64.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372037928517632}, // SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVBload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            arm64.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVBUload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            arm64.AMOVBU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            arm64.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHUload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            arm64.AMOVHU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            arm64.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWUload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            arm64.AMOVWU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVDload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            arm64.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "FMOVSload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            arm64.AFMOVS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "FMOVDload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            arm64.AFMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LDP",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            arm64.ALDP,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LDPW",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            arm64.ALDPW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LDPSW",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            arm64.ALDPSW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "FLDPD",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            arm64.AFLDPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "FLDPS",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            arm64.AFLDPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVDloadidx",
 +              argLen: 3,
 +              asm:    arm64.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 402653183},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWloadidx",
 +              argLen: 3,
 +              asm:    arm64.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 402653183},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWUloadidx",
 +              argLen: 3,
 +              asm:    arm64.AMOVWU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 402653183},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHloadidx",
 +              argLen: 3,
 +              asm:    arm64.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 402653183},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHUloadidx",
 +              argLen: 3,
 +              asm:    arm64.AMOVHU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 402653183},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVBloadidx",
 +              argLen: 3,
 +              asm:    arm64.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 402653183},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVBUloadidx",
 +              argLen: 3,
 +              asm:    arm64.AMOVBU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 402653183},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMOVSloadidx",
 +              argLen: 3,
 +              asm:    arm64.AFMOVS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 402653183},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMOVDloadidx",
 +              argLen: 3,
 +              asm:    arm64.AFMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 402653183},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHloadidx2",
 +              argLen: 3,
 +              asm:    arm64.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 402653183},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHUloadidx2",
 +              argLen: 3,
 +              asm:    arm64.AMOVHU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 402653183},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWloadidx4",
 +              argLen: 3,
 +              asm:    arm64.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 402653183},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWUloadidx4",
 +              argLen: 3,
 +              asm:    arm64.AMOVWU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 402653183},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVDloadidx8",
 +              argLen: 3,
 +              asm:    arm64.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 402653183},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMOVSloadidx4",
 +              argLen: 3,
 +              asm:    arm64.AFMOVS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 402653183},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMOVDloadidx8",
 +              argLen: 3,
 +              asm:    arm64.AFMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 402653183},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVBstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            arm64.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            arm64.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            arm64.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVDstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            arm64.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "FMOVSstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            arm64.AFMOVS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "FMOVDstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            arm64.AFMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "STP",
 +              auxType:        auxSymOff,
 +              argLen:         4,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            arm64.ASTP,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {2, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "STPW",
 +              auxType:        auxSymOff,
 +              argLen:         4,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            arm64.ASTPW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {2, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "FSTPD",
 +              auxType:        auxSymOff,
 +              argLen:         4,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            arm64.AFSTPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {2, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "FSTPS",
 +              auxType:        auxSymOff,
 +              argLen:         4,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            arm64.AFSTPS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {2, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVBstoreidx",
 +              argLen: 4,
 +              asm:    arm64.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {2, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHstoreidx",
 +              argLen: 4,
 +              asm:    arm64.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {2, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWstoreidx",
 +              argLen: 4,
 +              asm:    arm64.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {2, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVDstoreidx",
 +              argLen: 4,
 +              asm:    arm64.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {2, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMOVSstoreidx",
 +              argLen: 4,
 +              asm:    arm64.AFMOVS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 402653183},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                              {2, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMOVDstoreidx",
 +              argLen: 4,
 +              asm:    arm64.AFMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 402653183},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                              {2, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHstoreidx2",
 +              argLen: 4,
 +              asm:    arm64.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {2, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWstoreidx4",
 +              argLen: 4,
 +              asm:    arm64.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {2, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVDstoreidx8",
 +              argLen: 4,
 +              asm:    arm64.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {2, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMOVSstoreidx4",
 +              argLen: 4,
 +              asm:    arm64.AFMOVS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 402653183},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                              {2, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMOVDstoreidx8",
 +              argLen: 4,
 +              asm:    arm64.AFMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 402653183},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                              {2, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMOVDgpfp",
 +              argLen: 1,
 +              asm:    arm64.AFMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMOVDfpgp",
 +              argLen: 1,
 +              asm:    arm64.AFMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMOVSgpfp",
 +              argLen: 1,
 +              asm:    arm64.AFMOVS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMOVSfpgp",
 +              argLen: 1,
 +              asm:    arm64.AFMOVS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVBreg",
 +              argLen: 1,
 +              asm:    arm64.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVBUreg",
 +              argLen: 1,
 +              asm:    arm64.AMOVBU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHreg",
 +              argLen: 1,
 +              asm:    arm64.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHUreg",
 +              argLen: 1,
 +              asm:    arm64.AMOVHU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWreg",
 +              argLen: 1,
 +              asm:    arm64.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWUreg",
 +              argLen: 1,
 +              asm:    arm64.AMOVWU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVDreg",
 +              argLen: 1,
 +              asm:    arm64.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:         "MOVDnop",
 +              argLen:       1,
 +              resultInArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SCVTFWS",
 +              argLen: 1,
 +              asm:    arm64.ASCVTFWS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SCVTFWD",
 +              argLen: 1,
 +              asm:    arm64.ASCVTFWD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "UCVTFWS",
 +              argLen: 1,
 +              asm:    arm64.AUCVTFWS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "UCVTFWD",
 +              argLen: 1,
 +              asm:    arm64.AUCVTFWD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SCVTFS",
 +              argLen: 1,
 +              asm:    arm64.ASCVTFS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SCVTFD",
 +              argLen: 1,
 +              asm:    arm64.ASCVTFD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "UCVTFS",
 +              argLen: 1,
 +              asm:    arm64.AUCVTFS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "UCVTFD",
 +              argLen: 1,
 +              asm:    arm64.AUCVTFD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCVTZSSW",
 +              argLen: 1,
 +              asm:    arm64.AFCVTZSSW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCVTZSDW",
 +              argLen: 1,
 +              asm:    arm64.AFCVTZSDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCVTZUSW",
 +              argLen: 1,
 +              asm:    arm64.AFCVTZUSW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCVTZUDW",
 +              argLen: 1,
 +              asm:    arm64.AFCVTZUDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCVTZSS",
 +              argLen: 1,
 +              asm:    arm64.AFCVTZSS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCVTZSD",
 +              argLen: 1,
 +              asm:    arm64.AFCVTZSD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCVTZUS",
 +              argLen: 1,
 +              asm:    arm64.AFCVTZUS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCVTZUD",
 +              argLen: 1,
 +              asm:    arm64.AFCVTZUD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCVTSD",
 +              argLen: 1,
 +              asm:    arm64.AFCVTSD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCVTDS",
 +              argLen: 1,
 +              asm:    arm64.AFCVTDS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FRINTAD",
 +              argLen: 1,
 +              asm:    arm64.AFRINTAD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FRINTMD",
 +              argLen: 1,
 +              asm:    arm64.AFRINTMD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FRINTND",
 +              argLen: 1,
 +              asm:    arm64.AFRINTND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FRINTPD",
 +              argLen: 1,
 +              asm:    arm64.AFRINTPD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FRINTZD",
 +              argLen: 1,
 +              asm:    arm64.AFRINTZD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CSEL",
 +              auxType: auxCCop,
 +              argLen:  3,
 +              asm:     arm64.ACSEL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                              {1, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CSEL0",
 +              auxType: auxCCop,
 +              argLen:  2,
 +              asm:     arm64.ACSEL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CSINC",
 +              auxType: auxCCop,
 +              argLen:  3,
 +              asm:     arm64.ACSINC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                              {1, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CSINV",
 +              auxType: auxCCop,
 +              argLen:  3,
 +              asm:     arm64.ACSINV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                              {1, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CSNEG",
 +              auxType: auxCCop,
 +              argLen:  3,
 +              asm:     arm64.ACSNEG,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                              {1, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CSETM",
 +              auxType: auxCCop,
 +              argLen:  1,
 +              asm:     arm64.ACSETM,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CCMP",
 +              auxType: auxARM64ConditionalParams,
 +              argLen:  3,
 +              asm:     arm64.ACCMP,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CCMN",
 +              auxType: auxARM64ConditionalParams,
 +              argLen:  3,
 +              asm:     arm64.ACCMN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CCMPconst",
 +              auxType: auxARM64ConditionalParams,
 +              argLen:  2,
 +              asm:     arm64.ACCMP,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CCMNconst",
 +              auxType: auxARM64ConditionalParams,
 +              argLen:  2,
 +              asm:     arm64.ACCMN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CCMPW",
 +              auxType: auxARM64ConditionalParams,
 +              argLen:  3,
 +              asm:     arm64.ACCMPW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CCMNW",
 +              auxType: auxARM64ConditionalParams,
 +              argLen:  3,
 +              asm:     arm64.ACCMNW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                              {1, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CCMPWconst",
 +              auxType: auxARM64ConditionalParams,
 +              argLen:  2,
 +              asm:     arm64.ACCMPW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CCMNWconst",
 +              auxType: auxARM64ConditionalParams,
 +              argLen:  2,
 +              asm:     arm64.ACCMNW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:         "CALLstatic",
 +              auxType:      auxCallOff,
 +              argLen:       -1,
 +              clobberFlags: true,
 +              call:         true,
 +              reg: regInfo{
 +                      clobbers: 9223372035109945343, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +              },
 +      },
 +      {
 +              name:         "CALLtail",
 +              auxType:      auxCallOff,
 +              argLen:       -1,
 +              clobberFlags: true,
 +              call:         true,
 +              tailCall:     true,
 +              reg: regInfo{
 +                      clobbers: 9223372035109945343, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +              },
 +      },
 +      {
 +              name:         "CALLclosure",
 +              auxType:      auxCallOff,
 +              argLen:       -1,
 +              clobberFlags: true,
 +              call:         true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 33554432},   // R26
 +                              {0, 1409286143}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30 SP
 +                      },
 +                      clobbers: 9223372035109945343, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +              },
 +      },
 +      {
 +              name:         "CALLinter",
 +              auxType:      auxCallOff,
 +              argLen:       -1,
 +              clobberFlags: true,
 +              call:         true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +                      clobbers: 9223372035109945343, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +              },
 +      },
 +      {
 +              name:           "LoweredNilCheck",
 +              argLen:         2,
 +              nilCheck:       true,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 402653183}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "Equal",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "NotEqual",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "LessThan",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "LessEqual",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "GreaterThan",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "GreaterEqual",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "LessThanU",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "LessEqualU",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "GreaterThanU",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "GreaterEqualU",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "LessThanF",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "LessEqualF",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "GreaterThanF",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "GreaterEqualF",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "NotLessThanF",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "NotLessEqualF",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "NotGreaterThanF",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "NotGreaterEqualF",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "LessThanNoov",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "GreaterEqualNoov",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredZero",
 +              auxType:        auxInt64,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredZeroLoop",
 +              auxType:        auxInt64,
 +              argLen:         2,
 +              needIntTemp:    true,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +                      clobbersArg0: true,
 +              },
 +      },
 +      {
 +              name:           "LoweredMove",
 +              auxType:        auxInt64,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              faultOnNilArg1: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
-                               {0, 310378495}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R26 R30
-                               {1, 310378495}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R26 R30
++                              {0, 318767103}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R26 R30
++                              {1, 318767103}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R26 R30
 +                      },
-                       clobbers: 25165824, // R24 R25
++                      clobbers: 422212481843200, // R25 F16 F17
 +              },
 +      },
 +      {
 +              name:           "LoweredMoveLoop",
 +              auxType:        auxInt64,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              faultOnNilArg1: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
-                               {0, 306184191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R26 R30
-                               {1, 306184191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R26 R30
++                              {0, 310378495}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R26 R30
++                              {1, 310378495}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R26 R30
 +                      },
-                       clobbers:     29360128, // R23 R24 R25
++                      clobbers:     422212490231808, // R24 R25 F16 F17
 +                      clobbersArg0: true,
 +                      clobbersArg1: true,
 +              },
 +      },
 +      {
 +              name:      "LoweredGetClosurePtr",
 +              argLen:    0,
 +              zeroWidth: true,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 33554432}, // R26
 +                      },
 +              },
 +      },
 +      {
 +              name:              "LoweredGetCallerSP",
 +              argLen:            1,
 +              rematerializeable: true,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:              "LoweredGetCallerPC",
 +              argLen:            0,
 +              rematerializeable: true,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "FlagConstant",
 +              auxType: auxFlagConstant,
 +              argLen:  0,
 +              reg:     regInfo{},
 +      },
 +      {
 +              name:   "InvertFlags",
 +              argLen: 1,
 +              reg:    regInfo{},
 +      },
 +      {
 +              name:           "LDAR",
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              asm:            arm64.ALDAR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LDARB",
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              asm:            arm64.ALDARB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LDARW",
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              asm:            arm64.ALDARW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "STLRB",
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              asm:            arm64.ASTLRB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "STLR",
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              asm:            arm64.ASTLR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "STLRW",
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              asm:            arm64.ASTLRW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicExchange64",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicExchange32",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicExchange8",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicExchange64Variant",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicExchange32Variant",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicExchange8Variant",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicAdd64",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicAdd32",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicAdd64Variant",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicAdd32Variant",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicCas64",
 +              argLen:          4,
 +              resultNotInArgs: true,
 +              clobberFlags:    true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {2, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicCas32",
 +              argLen:          4,
 +              resultNotInArgs: true,
 +              clobberFlags:    true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {2, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicCas64Variant",
 +              argLen:          4,
 +              resultNotInArgs: true,
 +              clobberFlags:    true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {2, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicCas32Variant",
 +              argLen:          4,
 +              resultNotInArgs: true,
 +              clobberFlags:    true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {2, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicAnd8",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              needIntTemp:     true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              asm:             arm64.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicOr8",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              needIntTemp:     true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              asm:             arm64.AORR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicAnd64",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              needIntTemp:     true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              asm:             arm64.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicOr64",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              needIntTemp:     true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              asm:             arm64.AORR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicAnd32",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              needIntTemp:     true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              asm:             arm64.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicOr32",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              needIntTemp:     true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              asm:             arm64.AORR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicAnd8Variant",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicOr8Variant",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicAnd64Variant",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicOr64Variant",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicAnd32Variant",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicOr32Variant",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 939524095},           // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 ZERO
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 R30
 +                      },
 +              },
 +      },
 +      {
 +              name:         "LoweredWB",
 +              auxType:      auxInt64,
 +              argLen:       1,
 +              clobberFlags: true,
 +              reg: regInfo{
 +                      clobbers: 9223372034975924224, // R16 R17 R30 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      outputs: []outputInfo{
 +                              {0, 16777216}, // R25
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredPanicBoundsRR",
 +              auxType: auxInt64,
 +              argLen:  3,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                              {1, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredPanicBoundsRC",
 +              auxType: auxPanicBoundsC,
 +              argLen:  2,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredPanicBoundsCR",
 +              auxType: auxPanicBoundsC,
 +              argLen:  2,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredPanicBoundsCC",
 +              auxType: auxPanicBoundsCC,
 +              argLen:  1,
 +              call:    true,
 +              reg:     regInfo{},
 +      },
 +      {
 +              name:           "PRFM",
 +              auxType:        auxInt64,
 +              argLen:         2,
 +              hasSideEffects: true,
 +              asm:            arm64.APRFM,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372038331170815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "DMB",
 +              auxType:        auxInt64,
 +              argLen:         1,
 +              hasSideEffects: true,
 +              asm:            arm64.ADMB,
 +              reg:            regInfo{},
 +      },
 +      {
 +              name:      "ZERO",
 +              argLen:    0,
 +              zeroWidth: true,
 +              fixedReg:  true,
 +              reg:       regInfo{},
 +      },
 +
 +      {
 +              name:   "NEGV",
 +              argLen: 1,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "NEGF",
 +              argLen: 1,
 +              asm:    loong64.ANEGF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "NEGD",
 +              argLen: 1,
 +              asm:    loong64.ANEGD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SQRTD",
 +              argLen: 1,
 +              asm:    loong64.ASQRTD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SQRTF",
 +              argLen: 1,
 +              asm:    loong64.ASQRTF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ABSD",
 +              argLen: 1,
 +              asm:    loong64.AABSD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CLZW",
 +              argLen: 1,
 +              asm:    loong64.ACLZW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CLZV",
 +              argLen: 1,
 +              asm:    loong64.ACLZV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CTZW",
 +              argLen: 1,
 +              asm:    loong64.ACTZW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CTZV",
 +              argLen: 1,
 +              asm:    loong64.ACTZV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "REVB2H",
 +              argLen: 1,
 +              asm:    loong64.AREVB2H,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "REVB2W",
 +              argLen: 1,
 +              asm:    loong64.AREVB2W,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "REVB4H",
 +              argLen: 1,
 +              asm:    loong64.AREVB4H,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "REVBV",
 +              argLen: 1,
 +              asm:    loong64.AREVBV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "BITREV4B",
 +              argLen: 1,
 +              asm:    loong64.ABITREV4B,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "BITREVW",
 +              argLen: 1,
 +              asm:    loong64.ABITREVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "BITREVV",
 +              argLen: 1,
 +              asm:    loong64.ABITREVV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "VPCNT64",
 +              argLen: 1,
 +              asm:    loong64.AVPCNTV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "VPCNT32",
 +              argLen: 1,
 +              asm:    loong64.AVPCNTW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "VPCNT16",
 +              argLen: 1,
 +              asm:    loong64.AVPCNTH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "ADDV",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         loong64.AADDVU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1073741817}, // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ADDVconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     loong64.AADDVU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741820}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ADDV16const",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     loong64.AADDV16,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741820}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SUBV",
 +              argLen: 2,
 +              asm:    loong64.ASUBVU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1073741817}, // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SUBVconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     loong64.ASUBVU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULV",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         loong64.AMULV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1073741817}, // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULHV",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         loong64.AMULHV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1073741817}, // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULHVU",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         loong64.AMULHVU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1073741817}, // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULH",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         loong64.AMULH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1073741817}, // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULHU",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         loong64.AMULHU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1073741817}, // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "DIVV",
 +              argLen: 2,
 +              asm:    loong64.ADIVV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1073741817}, // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "DIVVU",
 +              argLen: 2,
 +              asm:    loong64.ADIVVU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1073741817}, // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "REMV",
 +              argLen: 2,
 +              asm:    loong64.AREMV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1073741817}, // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "REMVU",
 +              argLen: 2,
 +              asm:    loong64.AREMVU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1073741817}, // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "ADDF",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         loong64.AADDF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "ADDD",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         loong64.AADDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SUBF",
 +              argLen: 2,
 +              asm:    loong64.ASUBF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SUBD",
 +              argLen: 2,
 +              asm:    loong64.ASUBD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULF",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         loong64.AMULF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULD",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         loong64.AMULD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "DIVF",
 +              argLen: 2,
 +              asm:    loong64.ADIVF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "DIVD",
 +              argLen: 2,
 +              asm:    loong64.ADIVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "AND",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         loong64.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1073741817}, // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ANDconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     loong64.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "OR",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         loong64.AOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1073741817}, // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ORconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     loong64.AOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "XOR",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         loong64.AXOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1073741817}, // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "XORconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     loong64.AXOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "NOR",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         loong64.ANOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1073741817}, // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "NORconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     loong64.ANOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ANDN",
 +              argLen: 2,
 +              asm:    loong64.AANDN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1073741817}, // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ORN",
 +              argLen: 2,
 +              asm:    loong64.AORN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1073741817}, // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FMADDF",
 +              argLen:      3,
 +              commutative: true,
 +              asm:         loong64.AFMADDF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {2, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FMADDD",
 +              argLen:      3,
 +              commutative: true,
 +              asm:         loong64.AFMADDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {2, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FMSUBF",
 +              argLen:      3,
 +              commutative: true,
 +              asm:         loong64.AFMSUBF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {2, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FMSUBD",
 +              argLen:      3,
 +              commutative: true,
 +              asm:         loong64.AFMSUBD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {2, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FNMADDF",
 +              argLen:      3,
 +              commutative: true,
 +              asm:         loong64.AFNMADDF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {2, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FNMADDD",
 +              argLen:      3,
 +              commutative: true,
 +              asm:         loong64.AFNMADDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {2, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FNMSUBF",
 +              argLen:      3,
 +              commutative: true,
 +              asm:         loong64.AFNMSUBF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {2, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FNMSUBD",
 +              argLen:      3,
 +              commutative: true,
 +              asm:         loong64.AFNMSUBD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {2, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:            "FMINF",
 +              argLen:          2,
 +              commutative:     true,
 +              resultNotInArgs: true,
 +              asm:             loong64.AFMINF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:            "FMIND",
 +              argLen:          2,
 +              commutative:     true,
 +              resultNotInArgs: true,
 +              asm:             loong64.AFMIND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:            "FMAXF",
 +              argLen:          2,
 +              commutative:     true,
 +              resultNotInArgs: true,
 +              asm:             loong64.AFMAXF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:            "FMAXD",
 +              argLen:          2,
 +              commutative:     true,
 +              resultNotInArgs: true,
 +              asm:             loong64.AFMAXD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MASKEQZ",
 +              argLen: 2,
 +              asm:    loong64.AMASKEQZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1073741817}, // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MASKNEZ",
 +              argLen: 2,
 +              asm:    loong64.AMASKNEZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1073741817}, // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCOPYSGD",
 +              argLen: 2,
 +              asm:    loong64.AFCOPYSGD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SLL",
 +              argLen: 2,
 +              asm:    loong64.ASLL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1073741817}, // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SLLV",
 +              argLen: 2,
 +              asm:    loong64.ASLLV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1073741817}, // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SLLconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     loong64.ASLL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SLLVconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     loong64.ASLLV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SRL",
 +              argLen: 2,
 +              asm:    loong64.ASRL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1073741817}, // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SRLV",
 +              argLen: 2,
 +              asm:    loong64.ASRLV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1073741817}, // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SRLconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     loong64.ASRL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SRLVconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     loong64.ASRLV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SRA",
 +              argLen: 2,
 +              asm:    loong64.ASRA,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1073741817}, // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SRAV",
 +              argLen: 2,
 +              asm:    loong64.ASRAV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1073741817}, // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SRAconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     loong64.ASRA,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SRAVconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     loong64.ASRAV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ROTR",
 +              argLen: 2,
 +              asm:    loong64.AROTR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1073741817}, // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ROTRV",
 +              argLen: 2,
 +              asm:    loong64.AROTRV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1073741817}, // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ROTRconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     loong64.AROTR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ROTRVconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     loong64.AROTRV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SGT",
 +              argLen: 2,
 +              asm:    loong64.ASGT,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1073741817}, // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SGTconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     loong64.ASGT,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SGTU",
 +              argLen: 2,
 +              asm:    loong64.ASGTU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1073741817}, // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SGTUconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     loong64.ASGTU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPEQF",
 +              argLen: 2,
 +              asm:    loong64.ACMPEQF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPEQD",
 +              argLen: 2,
 +              asm:    loong64.ACMPEQD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPGEF",
 +              argLen: 2,
 +              asm:    loong64.ACMPGEF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPGED",
 +              argLen: 2,
 +              asm:    loong64.ACMPGED,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPGTF",
 +              argLen: 2,
 +              asm:    loong64.ACMPGTF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPGTD",
 +              argLen: 2,
 +              asm:    loong64.ACMPGTD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "BSTRPICKW",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     loong64.ABSTRPICKW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "BSTRPICKV",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     loong64.ABSTRPICKV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:              "MOVVconst",
 +              auxType:           auxInt64,
 +              argLen:            0,
 +              rematerializeable: true,
 +              asm:               loong64.AMOVV,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:              "MOVFconst",
 +              auxType:           auxFloat64,
 +              argLen:            0,
 +              rematerializeable: true,
 +              asm:               loong64.AMOVF,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:              "MOVDconst",
 +              auxType:           auxFloat64,
 +              argLen:            0,
 +              rematerializeable: true,
 +              asm:               loong64.AMOVD,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:              "MOVVaddr",
 +              auxType:           auxSymOff,
 +              argLen:            1,
 +              rematerializeable: true,
 +              symEffect:         SymAddr,
 +              asm:               loong64.AMOVV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686018427387908}, // SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVBload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            loong64.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVBUload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            loong64.AMOVBU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            loong64.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHUload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            loong64.AMOVHU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            loong64.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWUload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            loong64.AMOVWU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVVload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            loong64.AMOVV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVFload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            loong64.AMOVF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVDload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            loong64.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVVloadidx",
 +              argLen: 3,
 +              asm:    loong64.AMOVV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWloadidx",
 +              argLen: 3,
 +              asm:    loong64.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWUloadidx",
 +              argLen: 3,
 +              asm:    loong64.AMOVWU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHloadidx",
 +              argLen: 3,
 +              asm:    loong64.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHUloadidx",
 +              argLen: 3,
 +              asm:    loong64.AMOVHU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVBloadidx",
 +              argLen: 3,
 +              asm:    loong64.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVBUloadidx",
 +              argLen: 3,
 +              asm:    loong64.AMOVBU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVFloadidx",
 +              argLen: 3,
 +              asm:    loong64.AMOVF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVDloadidx",
 +              argLen: 3,
 +              asm:    loong64.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVBstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            loong64.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741817},          // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            loong64.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741817},          // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            loong64.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741817},          // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVVstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            loong64.AMOVV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741817},          // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVFstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            loong64.AMOVF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                              {1, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVDstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            loong64.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                              {1, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVBstoreidx",
 +              argLen: 4,
 +              asm:    loong64.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {2, 1073741817},          // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHstoreidx",
 +              argLen: 4,
 +              asm:    loong64.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {2, 1073741817},          // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWstoreidx",
 +              argLen: 4,
 +              asm:    loong64.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {2, 1073741817},          // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVVstoreidx",
 +              argLen: 4,
 +              asm:    loong64.AMOVV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {2, 1073741817},          // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVFstoreidx",
 +              argLen: 4,
 +              asm:    loong64.AMOVF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                              {2, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVDstoreidx",
 +              argLen: 4,
 +              asm:    loong64.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                              {2, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWfpgp",
 +              argLen: 1,
 +              asm:    loong64.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWgpfp",
 +              argLen: 1,
 +              asm:    loong64.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVVfpgp",
 +              argLen: 1,
 +              asm:    loong64.AMOVV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVVgpfp",
 +              argLen: 1,
 +              asm:    loong64.AMOVV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVBreg",
 +              argLen: 1,
 +              asm:    loong64.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVBUreg",
 +              argLen: 1,
 +              asm:    loong64.AMOVBU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHreg",
 +              argLen: 1,
 +              asm:    loong64.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHUreg",
 +              argLen: 1,
 +              asm:    loong64.AMOVHU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWreg",
 +              argLen: 1,
 +              asm:    loong64.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWUreg",
 +              argLen: 1,
 +              asm:    loong64.AMOVWU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVVreg",
 +              argLen: 1,
 +              asm:    loong64.AMOVV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "MOVVnop",
 +              argLen:       1,
 +              resultInArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWF",
 +              argLen: 1,
 +              asm:    loong64.AMOVWF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWD",
 +              argLen: 1,
 +              asm:    loong64.AMOVWD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVVF",
 +              argLen: 1,
 +              asm:    loong64.AMOVVF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVVD",
 +              argLen: 1,
 +              asm:    loong64.AMOVVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "TRUNCFW",
 +              argLen: 1,
 +              asm:    loong64.ATRUNCFW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "TRUNCDW",
 +              argLen: 1,
 +              asm:    loong64.ATRUNCDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "TRUNCFV",
 +              argLen: 1,
 +              asm:    loong64.ATRUNCFV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "TRUNCDV",
 +              argLen: 1,
 +              asm:    loong64.ATRUNCDV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVFD",
 +              argLen: 1,
 +              asm:    loong64.AMOVFD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVDF",
 +              argLen: 1,
 +              asm:    loong64.AMOVDF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "LoweredRound32F",
 +              argLen:       1,
 +              resultInArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "LoweredRound64F",
 +              argLen:       1,
 +              resultInArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4611686017353646080}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "CALLstatic",
 +              auxType:      auxCallOff,
 +              argLen:       -1,
 +              clobberFlags: true,
 +              call:         true,
 +              reg: regInfo{
 +                      clobbers: 4611686018427387896, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +              },
 +      },
 +      {
 +              name:         "CALLtail",
 +              auxType:      auxCallOff,
 +              argLen:       -1,
 +              clobberFlags: true,
 +              call:         true,
 +              tailCall:     true,
 +              reg: regInfo{
 +                      clobbers: 4611686018427387896, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +              },
 +      },
 +      {
 +              name:         "CALLclosure",
 +              auxType:      auxCallOff,
 +              argLen:       -1,
 +              clobberFlags: true,
 +              call:         true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 268435456},  // R29
 +                              {0, 1071644668}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      clobbers: 4611686018427387896, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +              },
 +      },
 +      {
 +              name:         "CALLinter",
 +              auxType:      auxCallOff,
 +              argLen:       -1,
 +              clobberFlags: true,
 +              call:         true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      clobbers: 4611686018427387896, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +              },
 +      },
 +      {
 +              name:           "LoweredZero",
 +              auxType:        auxInt64,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredZeroLoop",
 +              auxType:        auxInt64,
 +              argLen:         2,
 +              needIntTemp:    true,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      clobbersArg0: true,
 +              },
 +      },
 +      {
 +              name:           "LoweredMove",
 +              auxType:        auxInt64,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              faultOnNilArg1: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1071120376}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1071120376}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      clobbers: 524288, // R20
 +              },
 +      },
 +      {
 +              name:           "LoweredMoveLoop",
 +              auxType:        auxInt64,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              faultOnNilArg1: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1070071800}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1070071800}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      clobbers:     1572864, // R20 R21
 +                      clobbersArg0: true,
 +                      clobbersArg1: true,
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicLoad8",
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicLoad32",
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicLoad64",
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicStore8",
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicStore32",
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicStore64",
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicStore8Variant",
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicStore32Variant",
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicStore64Variant",
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicExchange32",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicExchange64",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicExchange8Variant",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicAdd32",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicAdd64",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicCas32",
 +              argLen:          4,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {2, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicCas64",
 +              argLen:          4,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {2, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicCas64Variant",
 +              argLen:          4,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {2, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicCas32Variant",
 +              argLen:          4,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {2, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicAnd32",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              asm:             loong64.AAMANDDBW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
-                       outputs: []outputInfo{
-                               {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
-                       },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicOr32",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              asm:             loong64.AAMORDBW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
-                       outputs: []outputInfo{
-                               {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
-                       },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicAnd32value",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              asm:             loong64.AAMANDDBW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicAnd64value",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              asm:             loong64.AAMANDDBV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicOr32value",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              asm:             loong64.AAMORDBW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicOr64value",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              asm:             loong64.AAMORDBV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741816},          // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {0, 4611686019501129724}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredNilCheck",
 +              argLen:         2,
 +              nilCheck:       true,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FPFlagTrue",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FPFlagFalse",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "LoweredGetClosurePtr",
 +              argLen:    0,
 +              zeroWidth: true,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 268435456}, // R29
 +                      },
 +              },
 +      },
 +      {
 +              name:              "LoweredGetCallerSP",
 +              argLen:            1,
 +              rematerializeable: true,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:              "LoweredGetCallerPC",
 +              argLen:            0,
 +              rematerializeable: true,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "LoweredWB",
 +              auxType:      auxInt64,
 +              argLen:       1,
 +              clobberFlags: true,
 +              reg: regInfo{
 +                      clobbers: 4611686017353646082, // R1 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      outputs: []outputInfo{
 +                              {0, 268435456}, // R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredPubBarrier",
 +              argLen:         1,
 +              hasSideEffects: true,
 +              asm:            loong64.ADBAR,
 +              reg:            regInfo{},
 +      },
 +      {
 +              name:    "LoweredPanicBoundsRR",
 +              auxType: auxInt64,
 +              argLen:  3,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 524280}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19
 +                              {1, 524280}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredPanicBoundsRC",
 +              auxType: auxPanicBoundsC,
 +              argLen:  2,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 524280}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredPanicBoundsCR",
 +              auxType: auxPanicBoundsC,
 +              argLen:  2,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 524280}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredPanicBoundsCC",
 +              auxType: auxPanicBoundsCC,
 +              argLen:  1,
 +              call:    true,
 +              reg:     regInfo{},
 +      },
 +      {
 +              name:           "PRELD",
 +              auxType:        auxInt64,
 +              argLen:         2,
 +              hasSideEffects: true,
 +              asm:            loong64.APRELD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741820}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "PRELDX",
 +              auxType:        auxInt64,
 +              argLen:         2,
 +              hasSideEffects: true,
 +              asm:            loong64.APRELDX,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741820}, // SP R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ADDshiftLLV",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     loong64.AALSLV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073741816}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                              {1, 1073741817}, // ZERO R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 g R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1071644664}, // R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R23 R24 R25 R26 R27 R28 R29 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "ZERO",
 +              argLen:    0,
 +              zeroWidth: true,
 +              fixedReg:  true,
 +              reg:       regInfo{},
 +      },
 +
 +      {
 +              name:        "ADD",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         mips.AADDU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                              {1, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ADDconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     mips.AADDU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 536870910}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 SP g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SUB",
 +              argLen: 2,
 +              asm:    mips.ASUBU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                              {1, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SUBconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     mips.ASUBU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MUL",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         mips.AMUL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                              {1, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      clobbers: 105553116266496, // HI LO
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULT",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         mips.AMUL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                              {1, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 35184372088832}, // HI
 +                              {1, 70368744177664}, // LO
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULTU",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         mips.AMULU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                              {1, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 35184372088832}, // HI
 +                              {1, 70368744177664}, // LO
 +                      },
 +              },
 +      },
 +      {
 +              name:   "DIV",
 +              argLen: 2,
 +              asm:    mips.ADIV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                              {1, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 35184372088832}, // HI
 +                              {1, 70368744177664}, // LO
 +                      },
 +              },
 +      },
 +      {
 +              name:   "DIVU",
 +              argLen: 2,
 +              asm:    mips.ADIVU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                              {1, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 35184372088832}, // HI
 +                              {1, 70368744177664}, // LO
 +                      },
 +              },
 +      },
 +      {
 +              name:        "ADDF",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         mips.AADDF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                              {1, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "ADDD",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         mips.AADDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                              {1, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SUBF",
 +              argLen: 2,
 +              asm:    mips.ASUBF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                              {1, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SUBD",
 +              argLen: 2,
 +              asm:    mips.ASUBD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                              {1, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULF",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         mips.AMULF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                              {1, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULD",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         mips.AMULD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                              {1, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "DIVF",
 +              argLen: 2,
 +              asm:    mips.ADIVF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                              {1, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "DIVD",
 +              argLen: 2,
 +              asm:    mips.ADIVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                              {1, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "AND",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         mips.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                              {1, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ANDconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     mips.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "OR",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         mips.AOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                              {1, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ORconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     mips.AOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "XOR",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         mips.AXOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                              {1, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "XORconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     mips.AXOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "NOR",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         mips.ANOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                              {1, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "NORconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     mips.ANOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "NEG",
 +              argLen: 1,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "NEGF",
 +              argLen: 1,
 +              asm:    mips.ANEGF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "NEGD",
 +              argLen: 1,
 +              asm:    mips.ANEGD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ABSD",
 +              argLen: 1,
 +              asm:    mips.AABSD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SQRTD",
 +              argLen: 1,
 +              asm:    mips.ASQRTD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SQRTF",
 +              argLen: 1,
 +              asm:    mips.ASQRTF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SLL",
 +              argLen: 2,
 +              asm:    mips.ASLL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                              {1, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SLLconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     mips.ASLL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SRL",
 +              argLen: 2,
 +              asm:    mips.ASRL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                              {1, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SRLconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     mips.ASRL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SRA",
 +              argLen: 2,
 +              asm:    mips.ASRA,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                              {1, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SRAconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     mips.ASRA,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CLZ",
 +              argLen: 1,
 +              asm:    mips.ACLZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SGT",
 +              argLen: 2,
 +              asm:    mips.ASGT,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                              {1, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SGTconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     mips.ASGT,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SGTzero",
 +              argLen: 1,
 +              asm:    mips.ASGT,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SGTU",
 +              argLen: 2,
 +              asm:    mips.ASGTU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                              {1, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SGTUconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     mips.ASGTU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SGTUzero",
 +              argLen: 1,
 +              asm:    mips.ASGTU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPEQF",
 +              argLen: 2,
 +              asm:    mips.ACMPEQF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                              {1, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPEQD",
 +              argLen: 2,
 +              asm:    mips.ACMPEQD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                              {1, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPGEF",
 +              argLen: 2,
 +              asm:    mips.ACMPGEF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                              {1, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPGED",
 +              argLen: 2,
 +              asm:    mips.ACMPGED,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                              {1, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPGTF",
 +              argLen: 2,
 +              asm:    mips.ACMPGTF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                              {1, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPGTD",
 +              argLen: 2,
 +              asm:    mips.ACMPGTD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                              {1, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:              "MOVWconst",
 +              auxType:           auxInt32,
 +              argLen:            0,
 +              rematerializeable: true,
 +              asm:               mips.AMOVW,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:              "MOVFconst",
 +              auxType:           auxFloat32,
 +              argLen:            0,
 +              rematerializeable: true,
 +              asm:               mips.AMOVF,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:              "MOVDconst",
 +              auxType:           auxFloat64,
 +              argLen:            0,
 +              rematerializeable: true,
 +              asm:               mips.AMOVD,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:              "MOVWaddr",
 +              auxType:           auxSymOff,
 +              argLen:            1,
 +              rematerializeable: true,
 +              symEffect:         SymAddr,
 +              asm:               mips.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 140737555464192}, // SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVBload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            mips.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 140738025226238}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVBUload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            mips.AMOVBU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 140738025226238}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            mips.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 140738025226238}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHUload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            mips.AMOVHU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 140738025226238}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            mips.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 140738025226238}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVFload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            mips.AMOVF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 140738025226238}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVDload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            mips.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 140738025226238}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVBstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            mips.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 469762046},       // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                              {0, 140738025226238}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 SP g R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            mips.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 469762046},       // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                              {0, 140738025226238}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 SP g R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            mips.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 469762046},       // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                              {0, 140738025226238}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 SP g R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVFstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            mips.AMOVF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 35183835217920},  // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                              {0, 140738025226238}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 SP g R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVDstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            mips.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 35183835217920},  // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                              {0, 140738025226238}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 SP g R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVBstorezero",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            mips.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 140738025226238}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 SP g R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHstorezero",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            mips.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 140738025226238}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 SP g R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWstorezero",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            mips.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 140738025226238}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 SP g R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWfpgp",
 +              argLen: 1,
 +              asm:    mips.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWgpfp",
 +              argLen: 1,
 +              asm:    mips.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVBreg",
 +              argLen: 1,
 +              asm:    mips.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVBUreg",
 +              argLen: 1,
 +              asm:    mips.AMOVBU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHreg",
 +              argLen: 1,
 +              asm:    mips.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHUreg",
 +              argLen: 1,
 +              asm:    mips.AMOVHU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWreg",
 +              argLen: 1,
 +              asm:    mips.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "MOVWnop",
 +              argLen:       1,
 +              resultInArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "CMOVZ",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          mips.ACMOVZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                              {1, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                              {2, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "CMOVZzero",
 +              argLen:       2,
 +              resultInArg0: true,
 +              asm:          mips.ACMOVZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                              {1, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWF",
 +              argLen: 1,
 +              asm:    mips.AMOVWF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWD",
 +              argLen: 1,
 +              asm:    mips.AMOVWD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "TRUNCFW",
 +              argLen: 1,
 +              asm:    mips.ATRUNCFW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "TRUNCDW",
 +              argLen: 1,
 +              asm:    mips.ATRUNCDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVFD",
 +              argLen: 1,
 +              asm:    mips.AMOVFD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVDF",
 +              argLen: 1,
 +              asm:    mips.AMOVDF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 35183835217920}, // F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:         "CALLstatic",
 +              auxType:      auxCallOff,
 +              argLen:       1,
 +              clobberFlags: true,
 +              call:         true,
 +              reg: regInfo{
 +                      clobbers: 140737421246462, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31 F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30 HI LO
 +              },
 +      },
 +      {
 +              name:         "CALLtail",
 +              auxType:      auxCallOff,
 +              argLen:       1,
 +              clobberFlags: true,
 +              call:         true,
 +              tailCall:     true,
 +              reg: regInfo{
 +                      clobbers: 140737421246462, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31 F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30 HI LO
 +              },
 +      },
 +      {
 +              name:         "CALLclosure",
 +              auxType:      auxCallOff,
 +              argLen:       3,
 +              clobberFlags: true,
 +              call:         true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 4194304},   // R22
 +                              {0, 402653182}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 SP R31
 +                      },
 +                      clobbers: 140737421246462, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31 F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30 HI LO
 +              },
 +      },
 +      {
 +              name:         "CALLinter",
 +              auxType:      auxCallOff,
 +              argLen:       2,
 +              clobberFlags: true,
 +              call:         true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +                      clobbers: 140737421246462, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31 F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30 HI LO
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicLoad8",
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 140738025226238}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicLoad32",
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 140738025226238}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicStore8",
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 469762046},       // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                              {0, 140738025226238}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 SP g R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicStore32",
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 469762046},       // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                              {0, 140738025226238}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 SP g R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicStorezero",
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 140738025226238}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 SP g R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicExchange",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 469762046},       // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                              {0, 140738025226238}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicAdd",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 469762046},       // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                              {0, 140738025226238}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicAddconst",
 +              auxType:         auxInt32,
 +              argLen:          2,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 140738025226238}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicCas",
 +              argLen:          4,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 469762046},       // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                              {2, 469762046},       // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                              {0, 140738025226238}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicAnd",
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              unsafePoint:    true,
 +              asm:            mips.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 469762046},       // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                              {0, 140738025226238}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 SP g R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicOr",
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              unsafePoint:    true,
 +              asm:            mips.AOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 469762046},       // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                              {0, 140738025226238}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 SP g R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredZero",
 +              auxType:        auxInt32,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 2},         // R1
 +                              {1, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +                      clobbers: 2, // R1
 +              },
 +      },
 +      {
 +              name:           "LoweredMove",
 +              auxType:        auxInt32,
 +              argLen:         4,
 +              faultOnNilArg0: true,
 +              faultOnNilArg1: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4},         // R2
 +                              {1, 2},         // R1
 +                              {2, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +                      clobbers: 6, // R1 R2
 +              },
 +      },
 +      {
 +              name:           "LoweredNilCheck",
 +              argLen:         2,
 +              nilCheck:       true,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FPFlagTrue",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FPFlagFalse",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "LoweredGetClosurePtr",
 +              argLen:    0,
 +              zeroWidth: true,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 4194304}, // R22
 +                      },
 +              },
 +      },
 +      {
 +              name:              "LoweredGetCallerSP",
 +              argLen:            1,
 +              rematerializeable: true,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:              "LoweredGetCallerPC",
 +              argLen:            0,
 +              rematerializeable: true,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 335544318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "LoweredWB",
 +              auxType:      auxInt64,
 +              argLen:       1,
 +              clobberFlags: true,
 +              reg: regInfo{
 +                      clobbers: 140737219919872, // R31 F0 F2 F4 F6 F8 F10 F12 F14 F16 F18 F20 F22 F24 F26 F28 F30 HI LO
 +                      outputs: []outputInfo{
 +                              {0, 16777216}, // R25
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredPubBarrier",
 +              argLen:         1,
 +              hasSideEffects: true,
 +              asm:            mips.ASYNC,
 +              reg:            regInfo{},
 +      },
 +      {
 +              name:    "LoweredPanicBoundsRR",
 +              auxType: auxInt64,
 +              argLen:  3,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 131070}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16
 +                              {1, 131070}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredPanicBoundsRC",
 +              auxType: auxPanicBoundsC,
 +              argLen:  2,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 131070}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredPanicBoundsCR",
 +              auxType: auxPanicBoundsC,
 +              argLen:  2,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 131070}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredPanicBoundsCC",
 +              auxType: auxPanicBoundsCC,
 +              argLen:  1,
 +              call:    true,
 +              reg:     regInfo{},
 +      },
 +      {
 +              name:    "LoweredPanicExtendRR",
 +              auxType: auxInt64,
 +              argLen:  4,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 30},     // R1 R2 R3 R4
 +                              {1, 30},     // R1 R2 R3 R4
 +                              {2, 131070}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredPanicExtendRC",
 +              auxType: auxPanicBoundsC,
 +              argLen:  3,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 30}, // R1 R2 R3 R4
 +                              {1, 30}, // R1 R2 R3 R4
 +                      },
 +              },
 +      },
 +
 +      {
 +              name:        "ADDV",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         mips.AADDVU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {1, 234881023}, // ZERO R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ADDVconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     mips.AADDVU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 268435454}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SUBV",
 +              argLen: 2,
 +              asm:    mips.ASUBVU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {1, 234881023}, // ZERO R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SUBVconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     mips.ASUBVU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULV",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         mips.AMULV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {1, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504606846976}, // HI
 +                              {1, 2305843009213693952}, // LO
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULVU",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         mips.AMULVU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {1, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504606846976}, // HI
 +                              {1, 2305843009213693952}, // LO
 +                      },
 +              },
 +      },
 +      {
 +              name:   "DIVV",
 +              argLen: 2,
 +              asm:    mips.ADIVV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {1, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504606846976}, // HI
 +                              {1, 2305843009213693952}, // LO
 +                      },
 +              },
 +      },
 +      {
 +              name:   "DIVVU",
 +              argLen: 2,
 +              asm:    mips.ADIVVU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {1, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504606846976}, // HI
 +                              {1, 2305843009213693952}, // LO
 +                      },
 +              },
 +      },
 +      {
 +              name:        "ADDF",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         mips.AADDF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "ADDD",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         mips.AADDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SUBF",
 +              argLen: 2,
 +              asm:    mips.ASUBF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SUBD",
 +              argLen: 2,
 +              asm:    mips.ASUBD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULF",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         mips.AMULF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULD",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         mips.AMULD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "DIVF",
 +              argLen: 2,
 +              asm:    mips.ADIVF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "DIVD",
 +              argLen: 2,
 +              asm:    mips.ADIVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "AND",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         mips.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {1, 234881023}, // ZERO R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ANDconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     mips.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "OR",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         mips.AOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {1, 234881023}, // ZERO R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ORconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     mips.AOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "XOR",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         mips.AXOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {1, 234881023}, // ZERO R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "XORconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     mips.AXOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "NOR",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         mips.ANOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {1, 234881023}, // ZERO R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "NORconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     mips.ANOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "NEGV",
 +              argLen: 1,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "NEGF",
 +              argLen: 1,
 +              asm:    mips.ANEGF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "NEGD",
 +              argLen: 1,
 +              asm:    mips.ANEGD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ABSD",
 +              argLen: 1,
 +              asm:    mips.AABSD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SQRTD",
 +              argLen: 1,
 +              asm:    mips.ASQRTD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SQRTF",
 +              argLen: 1,
 +              asm:    mips.ASQRTF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SLLV",
 +              argLen: 2,
 +              asm:    mips.ASLLV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {1, 234881023}, // ZERO R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SLLVconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     mips.ASLLV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SRLV",
 +              argLen: 2,
 +              asm:    mips.ASRLV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {1, 234881023}, // ZERO R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SRLVconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     mips.ASRLV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SRAV",
 +              argLen: 2,
 +              asm:    mips.ASRAV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {1, 234881023}, // ZERO R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SRAVconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     mips.ASRAV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SGT",
 +              argLen: 2,
 +              asm:    mips.ASGT,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {1, 234881023}, // ZERO R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SGTconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     mips.ASGT,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SGTU",
 +              argLen: 2,
 +              asm:    mips.ASGTU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {1, 234881023}, // ZERO R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SGTUconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     mips.ASGTU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPEQF",
 +              argLen: 2,
 +              asm:    mips.ACMPEQF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPEQD",
 +              argLen: 2,
 +              asm:    mips.ACMPEQD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPGEF",
 +              argLen: 2,
 +              asm:    mips.ACMPGEF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPGED",
 +              argLen: 2,
 +              asm:    mips.ACMPGED,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPGTF",
 +              argLen: 2,
 +              asm:    mips.ACMPGTF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPGTD",
 +              argLen: 2,
 +              asm:    mips.ACMPGTD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:              "MOVVconst",
 +              auxType:           auxInt64,
 +              argLen:            0,
 +              rematerializeable: true,
 +              asm:               mips.AMOVV,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:              "MOVFconst",
 +              auxType:           auxFloat64,
 +              argLen:            0,
 +              rematerializeable: true,
 +              asm:               mips.AMOVF,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:              "MOVDconst",
 +              auxType:           auxFloat64,
 +              argLen:            0,
 +              rematerializeable: true,
 +              asm:               mips.AMOVD,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:              "MOVVaddr",
 +              auxType:           auxSymOff,
 +              argLen:            1,
 +              rematerializeable: true,
 +              symEffect:         SymAddr,
 +              asm:               mips.AMOVV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686018460942336}, // SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVBload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            mips.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVBUload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            mips.AMOVBU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            mips.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHUload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            mips.AMOVHU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            mips.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWUload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            mips.AMOVWU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVVload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            mips.AMOVV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVFload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            mips.AMOVF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVDload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            mips.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVBstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            mips.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 234881023},           // ZERO R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            mips.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 234881023},           // ZERO R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            mips.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 234881023},           // ZERO R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVVstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            mips.AMOVV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 234881023},           // ZERO R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVFstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            mips.AMOVF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                              {1, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVDstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            mips.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                              {1, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "ZERO",
 +              argLen:    0,
 +              zeroWidth: true,
 +              fixedReg:  true,
 +              reg:       regInfo{},
 +      },
 +      {
 +              name:   "MOVWfpgp",
 +              argLen: 1,
 +              asm:    mips.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWgpfp",
 +              argLen: 1,
 +              asm:    mips.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVVfpgp",
 +              argLen: 1,
 +              asm:    mips.AMOVV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVVgpfp",
 +              argLen: 1,
 +              asm:    mips.AMOVV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVBreg",
 +              argLen: 1,
 +              asm:    mips.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVBUreg",
 +              argLen: 1,
 +              asm:    mips.AMOVBU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHreg",
 +              argLen: 1,
 +              asm:    mips.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHUreg",
 +              argLen: 1,
 +              asm:    mips.AMOVHU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWreg",
 +              argLen: 1,
 +              asm:    mips.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWUreg",
 +              argLen: 1,
 +              asm:    mips.AMOVWU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVVreg",
 +              argLen: 1,
 +              asm:    mips.AMOVV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "MOVVnop",
 +              argLen:       1,
 +              resultInArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWF",
 +              argLen: 1,
 +              asm:    mips.AMOVWF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWD",
 +              argLen: 1,
 +              asm:    mips.AMOVWD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVVF",
 +              argLen: 1,
 +              asm:    mips.AMOVVF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVVD",
 +              argLen: 1,
 +              asm:    mips.AMOVVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "TRUNCFW",
 +              argLen: 1,
 +              asm:    mips.ATRUNCFW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "TRUNCDW",
 +              argLen: 1,
 +              asm:    mips.ATRUNCDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "TRUNCFV",
 +              argLen: 1,
 +              asm:    mips.ATRUNCFV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "TRUNCDV",
 +              argLen: 1,
 +              asm:    mips.ATRUNCDV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVFD",
 +              argLen: 1,
 +              asm:    mips.AMOVFD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVDF",
 +              argLen: 1,
 +              asm:    mips.AMOVDF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1152921504338411520}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "CALLstatic",
 +              auxType:      auxCallOff,
 +              argLen:       1,
 +              clobberFlags: true,
 +              call:         true,
 +              reg: regInfo{
 +                      clobbers: 4611686018393833470, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31 HI LO
 +              },
 +      },
 +      {
 +              name:         "CALLtail",
 +              auxType:      auxCallOff,
 +              argLen:       1,
 +              clobberFlags: true,
 +              call:         true,
 +              tailCall:     true,
 +              reg: regInfo{
 +                      clobbers: 4611686018393833470, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31 HI LO
 +              },
 +      },
 +      {
 +              name:         "CALLclosure",
 +              auxType:      auxCallOff,
 +              argLen:       3,
 +              clobberFlags: true,
 +              call:         true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 4194304},   // R22
 +                              {0, 201326590}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP R31
 +                      },
 +                      clobbers: 4611686018393833470, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31 HI LO
 +              },
 +      },
 +      {
 +              name:         "CALLinter",
 +              auxType:      auxCallOff,
 +              argLen:       2,
 +              clobberFlags: true,
 +              call:         true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +                      clobbers: 4611686018393833470, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31 HI LO
 +              },
 +      },
 +      {
 +              name:           "DUFFZERO",
 +              auxType:        auxInt64,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +                      clobbers: 134217730, // R1 R31
 +              },
 +      },
 +      {
 +              name:           "DUFFCOPY",
 +              auxType:        auxInt64,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              faultOnNilArg1: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4}, // R2
 +                              {1, 2}, // R1
 +                      },
 +                      clobbers: 134217734, // R1 R2 R31
 +              },
 +      },
 +      {
 +              name:           "LoweredZero",
 +              auxType:        auxInt64,
 +              argLen:         3,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 2},         // R1
 +                              {1, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +                      clobbers: 2, // R1
 +              },
 +      },
 +      {
 +              name:           "LoweredMove",
 +              auxType:        auxInt64,
 +              argLen:         4,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              faultOnNilArg1: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4},         // R2
 +                              {1, 2},         // R1
 +                              {2, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +                      clobbers: 6, // R1 R2
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicAnd32",
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              unsafePoint:    true,
 +              asm:            mips.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 234881023},           // ZERO R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicOr32",
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              unsafePoint:    true,
 +              asm:            mips.AOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 234881023},           // ZERO R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicLoad8",
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicLoad32",
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicLoad64",
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicStore8",
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 234881023},           // ZERO R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicStore32",
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 234881023},           // ZERO R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicStore64",
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 234881023},           // ZERO R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicStorezero32",
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicStorezero64",
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicExchange32",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 234881022},           // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicExchange64",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 234881022},           // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicAdd32",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 234881022},           // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicAdd64",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 234881022},           // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicAddconst32",
 +              auxType:         auxInt32,
 +              argLen:          2,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicAddconst64",
 +              auxType:         auxInt64,
 +              argLen:          2,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicCas32",
 +              argLen:          4,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 234881022},           // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {2, 234881022},           // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicCas64",
 +              argLen:          4,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 234881022},           // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {2, 234881022},           // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                              {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredNilCheck",
 +              argLen:         2,
 +              nilCheck:       true,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FPFlagTrue",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FPFlagFalse",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:      "LoweredGetClosurePtr",
 +              argLen:    0,
 +              zeroWidth: true,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 4194304}, // R22
 +                      },
 +              },
 +      },
 +      {
 +              name:              "LoweredGetCallerSP",
 +              argLen:            1,
 +              rematerializeable: true,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:              "LoweredGetCallerPC",
 +              argLen:            0,
 +              rematerializeable: true,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 167772158}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "LoweredWB",
 +              auxType:      auxInt64,
 +              argLen:       1,
 +              clobberFlags: true,
 +              reg: regInfo{
 +                      clobbers: 4611686018293170176, // R31 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31 HI LO
 +                      outputs: []outputInfo{
 +                              {0, 16777216}, // R25
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredPubBarrier",
 +              argLen:         1,
 +              hasSideEffects: true,
 +              asm:            mips.ASYNC,
 +              reg:            regInfo{},
 +      },
 +      {
 +              name:    "LoweredPanicBoundsRR",
 +              auxType: auxInt64,
 +              argLen:  3,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 131070}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16
 +                              {1, 131070}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredPanicBoundsRC",
 +              auxType: auxPanicBoundsC,
 +              argLen:  2,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 131070}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredPanicBoundsCR",
 +              auxType: auxPanicBoundsC,
 +              argLen:  2,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 131070}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredPanicBoundsCC",
 +              auxType: auxPanicBoundsCC,
 +              argLen:  1,
 +              call:    true,
 +              reg:     regInfo{},
 +      },
 +
 +      {
 +              name:        "ADD",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         ppc64.AADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:        "ADDCC",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         ppc64.AADDCC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ADDconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     ppc64.AADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ADDCCconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     ppc64.AADDCCC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      clobbers: 9223372036854775808, // XER
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FADD",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         ppc64.AFADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                              {1, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FADDS",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         ppc64.AFADDS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                              {1, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SUB",
 +              argLen: 2,
 +              asm:    ppc64.ASUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SUBCC",
 +              argLen: 2,
 +              asm:    ppc64.ASUBCC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SUBFCconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     ppc64.ASUBC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      clobbers: 9223372036854775808, // XER
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FSUB",
 +              argLen: 2,
 +              asm:    ppc64.AFSUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                              {1, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FSUBS",
 +              argLen: 2,
 +              asm:    ppc64.AFSUBS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                              {1, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "XSMINJDP",
 +              argLen: 2,
 +              asm:    ppc64.AXSMINJDP,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                              {1, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "XSMAXJDP",
 +              argLen: 2,
 +              asm:    ppc64.AXSMAXJDP,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                              {1, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULLD",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         ppc64.AMULLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULLW",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         ppc64.AMULLW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "MULLDconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     ppc64.AMULLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "MULLWconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     ppc64.AMULLW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MADDLD",
 +              argLen: 3,
 +              asm:    ppc64.AMADDLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {2, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULHD",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         ppc64.AMULHD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULHW",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         ppc64.AMULHW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULHDU",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         ppc64.AMULHDU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULHDUCC",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         ppc64.AMULHDUCC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULHWU",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         ppc64.AMULHWU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FMUL",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         ppc64.AFMUL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                              {1, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FMULS",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         ppc64.AFMULS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                              {1, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMADD",
 +              argLen: 3,
 +              asm:    ppc64.AFMADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                              {1, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                              {2, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMADDS",
 +              argLen: 3,
 +              asm:    ppc64.AFMADDS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                              {1, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                              {2, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMSUB",
 +              argLen: 3,
 +              asm:    ppc64.AFMSUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                              {1, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                              {2, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMSUBS",
 +              argLen: 3,
 +              asm:    ppc64.AFMSUBS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                              {1, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                              {2, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SRAD",
 +              argLen: 2,
 +              asm:    ppc64.ASRAD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      clobbers: 9223372036854775808, // XER
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SRAW",
 +              argLen: 2,
 +              asm:    ppc64.ASRAW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      clobbers: 9223372036854775808, // XER
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SRD",
 +              argLen: 2,
 +              asm:    ppc64.ASRD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SRW",
 +              argLen: 2,
 +              asm:    ppc64.ASRW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SLD",
 +              argLen: 2,
 +              asm:    ppc64.ASLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SLW",
 +              argLen: 2,
 +              asm:    ppc64.ASLW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ROTL",
 +              argLen: 2,
 +              asm:    ppc64.AROTL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ROTLW",
 +              argLen: 2,
 +              asm:    ppc64.AROTLW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CLRLSLWI",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     ppc64.ACLRLSLWI,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CLRLSLDI",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     ppc64.ACLRLSLDI,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:        "ADDC",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         ppc64.AADDC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      clobbers: 9223372036854775808, // XER
 +                      outputs: []outputInfo{
 +                              {1, 9223372036854775808}, // XER
 +                              {0, 1073733624},          // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SUBC",
 +              argLen: 2,
 +              asm:    ppc64.ASUBC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      clobbers: 9223372036854775808, // XER
 +                      outputs: []outputInfo{
 +                              {1, 9223372036854775808}, // XER
 +                              {0, 1073733624},          // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ADDCconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     ppc64.AADDC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 9223372036854775808}, // XER
 +                              {0, 1073733624},          // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SUBCconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     ppc64.ASUBC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 9223372036854775808}, // XER
 +                              {0, 1073733624},          // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:        "ADDE",
 +              argLen:      3,
 +              commutative: true,
 +              asm:         ppc64.AADDE,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 9223372036854775808}, // XER
 +                              {0, 1073733630},          // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630},          // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      clobbers: 9223372036854775808, // XER
 +                      outputs: []outputInfo{
 +                              {1, 9223372036854775808}, // XER
 +                              {0, 1073733624},          // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ADDZE",
 +              argLen: 2,
 +              asm:    ppc64.AADDZE,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 9223372036854775808}, // XER
 +                              {0, 1073733630},          // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      clobbers: 9223372036854775808, // XER
 +                      outputs: []outputInfo{
 +                              {1, 9223372036854775808}, // XER
 +                              {0, 1073733624},          // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SUBE",
 +              argLen: 3,
 +              asm:    ppc64.ASUBE,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {2, 9223372036854775808}, // XER
 +                              {0, 1073733630},          // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630},          // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      clobbers: 9223372036854775808, // XER
 +                      outputs: []outputInfo{
 +                              {1, 9223372036854775808}, // XER
 +                              {0, 1073733624},          // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ADDZEzero",
 +              argLen: 1,
 +              asm:    ppc64.AADDZE,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372036854775808}, // XER
 +                      },
 +                      clobbers: 9223372036854775808, // XER
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SUBZEzero",
 +              argLen: 1,
 +              asm:    ppc64.ASUBZE,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372036854775808}, // XER
 +                      },
 +                      clobbers: 9223372036854775808, // XER
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SRADconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     ppc64.ASRAD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      clobbers: 9223372036854775808, // XER
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SRAWconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     ppc64.ASRAW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      clobbers: 9223372036854775808, // XER
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SRDconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     ppc64.ASRD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SRWconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     ppc64.ASRW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SLDconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     ppc64.ASLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SLWconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     ppc64.ASLW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ROTLconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     ppc64.AROTL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ROTLWconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     ppc64.AROTLW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "EXTSWSLconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     ppc64.AEXTSWSLI,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "RLWINM",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     ppc64.ARLWNM,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "RLWNM",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     ppc64.ARLWNM,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:         "RLWMI",
 +              auxType:      auxInt64,
 +              argLen:       2,
 +              resultInArg0: true,
 +              asm:          ppc64.ARLWMI,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "RLDICL",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     ppc64.ARLDICL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "RLDICLCC",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     ppc64.ARLDICLCC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "RLDICR",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     ppc64.ARLDICR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CNTLZD",
 +              argLen: 1,
 +              asm:    ppc64.ACNTLZD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CNTLZDCC",
 +              argLen: 1,
 +              asm:    ppc64.ACNTLZDCC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CNTLZW",
 +              argLen: 1,
 +              asm:    ppc64.ACNTLZW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CNTTZD",
 +              argLen: 1,
 +              asm:    ppc64.ACNTTZD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CNTTZW",
 +              argLen: 1,
 +              asm:    ppc64.ACNTTZW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "POPCNTD",
 +              argLen: 1,
 +              asm:    ppc64.APOPCNTD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "POPCNTW",
 +              argLen: 1,
 +              asm:    ppc64.APOPCNTW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "POPCNTB",
 +              argLen: 1,
 +              asm:    ppc64.APOPCNTB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FDIV",
 +              argLen: 2,
 +              asm:    ppc64.AFDIV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                              {1, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FDIVS",
 +              argLen: 2,
 +              asm:    ppc64.AFDIVS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                              {1, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "DIVD",
 +              argLen: 2,
 +              asm:    ppc64.ADIVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "DIVW",
 +              argLen: 2,
 +              asm:    ppc64.ADIVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "DIVDU",
 +              argLen: 2,
 +              asm:    ppc64.ADIVDU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "DIVWU",
 +              argLen: 2,
 +              asm:    ppc64.ADIVWU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MODUD",
 +              argLen: 2,
 +              asm:    ppc64.AMODUD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MODSD",
 +              argLen: 2,
 +              asm:    ppc64.AMODSD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MODUW",
 +              argLen: 2,
 +              asm:    ppc64.AMODUW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MODSW",
 +              argLen: 2,
 +              asm:    ppc64.AMODSW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCTIDZ",
 +              argLen: 1,
 +              asm:    ppc64.AFCTIDZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCTIWZ",
 +              argLen: 1,
 +              asm:    ppc64.AFCTIWZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCFID",
 +              argLen: 1,
 +              asm:    ppc64.AFCFID,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCFIDS",
 +              argLen: 1,
 +              asm:    ppc64.AFCFIDS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FRSP",
 +              argLen: 1,
 +              asm:    ppc64.AFRSP,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MFVSRD",
 +              argLen: 1,
 +              asm:    ppc64.AMFVSRD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MTVSRD",
 +              argLen: 1,
 +              asm:    ppc64.AMTVSRD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "AND",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         ppc64.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ANDN",
 +              argLen: 2,
 +              asm:    ppc64.AANDN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ANDNCC",
 +              argLen: 2,
 +              asm:    ppc64.AANDNCC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:        "ANDCC",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         ppc64.AANDCC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:        "OR",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         ppc64.AOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ORN",
 +              argLen: 2,
 +              asm:    ppc64.AORN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:        "ORCC",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         ppc64.AORCC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:        "NOR",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         ppc64.ANOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:        "NORCC",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         ppc64.ANORCC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:        "XOR",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         ppc64.AXOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:        "XORCC",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         ppc64.AXORCC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:        "EQV",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         ppc64.AEQV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "NEG",
 +              argLen: 1,
 +              asm:    ppc64.ANEG,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "NEGCC",
 +              argLen: 1,
 +              asm:    ppc64.ANEGCC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "BRD",
 +              argLen: 1,
 +              asm:    ppc64.ABRD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "BRW",
 +              argLen: 1,
 +              asm:    ppc64.ABRW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "BRH",
 +              argLen: 1,
 +              asm:    ppc64.ABRH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FNEG",
 +              argLen: 1,
 +              asm:    ppc64.AFNEG,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FSQRT",
 +              argLen: 1,
 +              asm:    ppc64.AFSQRT,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FSQRTS",
 +              argLen: 1,
 +              asm:    ppc64.AFSQRTS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FFLOOR",
 +              argLen: 1,
 +              asm:    ppc64.AFRIM,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCEIL",
 +              argLen: 1,
 +              asm:    ppc64.AFRIP,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FTRUNC",
 +              argLen: 1,
 +              asm:    ppc64.AFRIZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FROUND",
 +              argLen: 1,
 +              asm:    ppc64.AFRIN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FABS",
 +              argLen: 1,
 +              asm:    ppc64.AFABS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FNABS",
 +              argLen: 1,
 +              asm:    ppc64.AFNABS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCPSGN",
 +              argLen: 2,
 +              asm:    ppc64.AFCPSGN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                              {1, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ORconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     ppc64.AOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "XORconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     ppc64.AXOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ANDCCconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     ppc64.AANDCC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:         "ANDconst",
 +              auxType:      auxInt64,
 +              argLen:       1,
 +              clobberFlags: true,
 +              asm:          ppc64.AANDCC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVBreg",
 +              argLen: 1,
 +              asm:    ppc64.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVBZreg",
 +              argLen: 1,
 +              asm:    ppc64.AMOVBZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHreg",
 +              argLen: 1,
 +              asm:    ppc64.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHZreg",
 +              argLen: 1,
 +              asm:    ppc64.AMOVHZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWreg",
 +              argLen: 1,
 +              asm:    ppc64.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWZreg",
 +              argLen: 1,
 +              asm:    ppc64.AMOVWZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVBZload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            ppc64.AMOVBZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            ppc64.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHZload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            ppc64.AMOVHZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            ppc64.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWZload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            ppc64.AMOVWZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVDload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            ppc64.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVDBRload",
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              asm:            ppc64.AMOVDBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWBRload",
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              asm:            ppc64.AMOVWBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHBRload",
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              asm:            ppc64.AMOVHBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVBZloadidx",
 +              argLen: 3,
 +              asm:    ppc64.AMOVBZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHloadidx",
 +              argLen: 3,
 +              asm:    ppc64.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHZloadidx",
 +              argLen: 3,
 +              asm:    ppc64.AMOVHZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWloadidx",
 +              argLen: 3,
 +              asm:    ppc64.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWZloadidx",
 +              argLen: 3,
 +              asm:    ppc64.AMOVWZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVDloadidx",
 +              argLen: 3,
 +              asm:    ppc64.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHBRloadidx",
 +              argLen: 3,
 +              asm:    ppc64.AMOVHBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWBRloadidx",
 +              argLen: 3,
 +              asm:    ppc64.AMOVWBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVDBRloadidx",
 +              argLen: 3,
 +              asm:    ppc64.AMOVDBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMOVDloadidx",
 +              argLen: 3,
 +              asm:    ppc64.AFMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMOVSloadidx",
 +              argLen: 3,
 +              asm:    ppc64.AFMOVS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "DCBT",
 +              auxType:        auxInt64,
 +              argLen:         2,
 +              hasSideEffects: true,
 +              asm:            ppc64.ADCBT,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVDBRstore",
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              asm:            ppc64.AMOVDBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWBRstore",
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              asm:            ppc64.AMOVWBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHBRstore",
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              asm:            ppc64.AMOVHBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "FMOVDload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            ppc64.AFMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "FMOVSload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            ppc64.AFMOVS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVBstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            ppc64.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            ppc64.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            ppc64.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVDstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            ppc64.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "FMOVDstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            ppc64.AFMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630},          // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "FMOVSstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            ppc64.AFMOVS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630},          // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVBstoreidx",
 +              argLen: 4,
 +              asm:    ppc64.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {2, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHstoreidx",
 +              argLen: 4,
 +              asm:    ppc64.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {2, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWstoreidx",
 +              argLen: 4,
 +              asm:    ppc64.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {2, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVDstoreidx",
 +              argLen: 4,
 +              asm:    ppc64.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {2, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMOVDstoreidx",
 +              argLen: 4,
 +              asm:    ppc64.AFMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630},          // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630},          // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {2, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMOVSstoreidx",
 +              argLen: 4,
 +              asm:    ppc64.AFMOVS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630},          // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630},          // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {2, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHBRstoreidx",
 +              argLen: 4,
 +              asm:    ppc64.AMOVHBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {2, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWBRstoreidx",
 +              argLen: 4,
 +              asm:    ppc64.AMOVWBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {2, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVDBRstoreidx",
 +              argLen: 4,
 +              asm:    ppc64.AMOVDBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {2, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVBstorezero",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            ppc64.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHstorezero",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            ppc64.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWstorezero",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            ppc64.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVDstorezero",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            ppc64.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:              "MOVDaddr",
 +              auxType:           auxSymOff,
 +              argLen:            1,
 +              rematerializeable: true,
 +              symEffect:         SymAddr,
 +              asm:               ppc64.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:              "MOVDconst",
 +              auxType:           auxInt64,
 +              argLen:            0,
 +              rematerializeable: true,
 +              asm:               ppc64.AMOVD,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:              "FMOVDconst",
 +              auxType:           auxFloat64,
 +              argLen:            0,
 +              rematerializeable: true,
 +              asm:               ppc64.AFMOVD,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:              "FMOVSconst",
 +              auxType:           auxFloat32,
 +              argLen:            0,
 +              rematerializeable: true,
 +              asm:               ppc64.AFMOVS,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCMPU",
 +              argLen: 2,
 +              asm:    ppc64.AFCMPU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                              {1, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMP",
 +              argLen: 2,
 +              asm:    ppc64.ACMP,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPU",
 +              argLen: 2,
 +              asm:    ppc64.ACMPU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPW",
 +              argLen: 2,
 +              asm:    ppc64.ACMPW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPWU",
 +              argLen: 2,
 +              asm:    ppc64.ACMPWU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CMPconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     ppc64.ACMP,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CMPUconst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     ppc64.ACMPU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CMPWconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     ppc64.ACMPW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CMPWUconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     ppc64.ACMPWU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ISEL",
 +              auxType: auxInt32,
 +              argLen:  3,
 +              asm:     ppc64.AISEL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ISELZ",
 +              auxType: auxInt32,
 +              argLen:  2,
 +              asm:     ppc64.AISEL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SETBC",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     ppc64.ASETBC,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SETBCR",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     ppc64.ASETBCR,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "Equal",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "NotEqual",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "LessThan",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FLessThan",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "LessEqual",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FLessEqual",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "GreaterThan",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FGreaterThan",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "GreaterEqual",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FGreaterEqual",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:      "LoweredGetClosurePtr",
 +              argLen:    0,
 +              zeroWidth: true,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 2048}, // R11
 +                      },
 +              },
 +      },
 +      {
 +              name:              "LoweredGetCallerSP",
 +              argLen:            1,
 +              rematerializeable: true,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:              "LoweredGetCallerPC",
 +              argLen:            0,
 +              rematerializeable: true,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredNilCheck",
 +              argLen:         2,
 +              clobberFlags:   true,
 +              nilCheck:       true,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      clobbers: 2147483648, // R31
 +              },
 +      },
 +      {
 +              name:         "LoweredRound32F",
 +              argLen:       1,
 +              resultInArg0: true,
 +              zeroWidth:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:         "LoweredRound64F",
 +              argLen:       1,
 +              resultInArg0: true,
 +              zeroWidth:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372032559808512}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
 +                      },
 +              },
 +      },
 +      {
 +              name:         "CALLstatic",
 +              auxType:      auxCallOff,
 +              argLen:       -1,
 +              clobberFlags: true,
 +              call:         true,
 +              reg: regInfo{
 +                      clobbers: 18446744071562059768, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29 g F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 XER
 +              },
 +      },
 +      {
 +              name:         "CALLtail",
 +              auxType:      auxCallOff,
 +              argLen:       -1,
 +              clobberFlags: true,
 +              call:         true,
 +              tailCall:     true,
 +              reg: regInfo{
 +                      clobbers: 18446744071562059768, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29 g F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 XER
 +              },
 +      },
 +      {
 +              name:         "CALLclosure",
 +              auxType:      auxCallOff,
 +              argLen:       -1,
 +              clobberFlags: true,
 +              call:         true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4096}, // R12
 +                              {1, 2048}, // R11
 +                      },
 +                      clobbers: 18446744071562059768, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29 g F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 XER
 +              },
 +      },
 +      {
 +              name:         "CALLinter",
 +              auxType:      auxCallOff,
 +              argLen:       -1,
 +              clobberFlags: true,
 +              call:         true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4096}, // R12
 +                      },
 +                      clobbers: 18446744071562059768, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29 g F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 XER
 +              },
 +      },
 +      {
 +              name:           "LoweredZero",
 +              auxType:        auxInt64,
 +              argLen:         2,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              unsafePoint:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1048576}, // R20
 +                      },
 +                      clobbers: 1048576, // R20
 +              },
 +      },
 +      {
 +              name:           "LoweredZeroShort",
 +              auxType:        auxInt64,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              unsafePoint:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredQuadZeroShort",
 +              auxType:        auxInt64,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              unsafePoint:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredQuadZero",
 +              auxType:        auxInt64,
 +              argLen:         2,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              unsafePoint:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1048576}, // R20
 +                      },
 +                      clobbers: 1048576, // R20
 +              },
 +      },
 +      {
 +              name:           "LoweredMove",
 +              auxType:        auxInt64,
 +              argLen:         3,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              faultOnNilArg1: true,
 +              unsafePoint:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1048576}, // R20
 +                              {1, 2097152}, // R21
 +                      },
 +                      clobbers: 3145728, // R20 R21
 +              },
 +      },
 +      {
 +              name:           "LoweredMoveShort",
 +              auxType:        auxInt64,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              faultOnNilArg1: true,
 +              unsafePoint:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredQuadMove",
 +              auxType:        auxInt64,
 +              argLen:         3,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              faultOnNilArg1: true,
 +              unsafePoint:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1048576}, // R20
 +                              {1, 2097152}, // R21
 +                      },
 +                      clobbers: 3145728, // R20 R21
 +              },
 +      },
 +      {
 +              name:           "LoweredQuadMoveShort",
 +              auxType:        auxInt64,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              faultOnNilArg1: true,
 +              unsafePoint:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicStore8",
 +              auxType:        auxInt64,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicStore32",
 +              auxType:        auxInt64,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicStore64",
 +              auxType:        auxInt64,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicLoad8",
 +              auxType:        auxInt64,
 +              argLen:         2,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicLoad32",
 +              auxType:        auxInt64,
 +              argLen:         2,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicLoad64",
 +              auxType:        auxInt64,
 +              argLen:         2,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicLoadPtr",
 +              auxType:        auxInt64,
 +              argLen:         2,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicAdd32",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              clobberFlags:    true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicAdd64",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              clobberFlags:    true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicExchange8",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              clobberFlags:    true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicExchange32",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              clobberFlags:    true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicExchange64",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              clobberFlags:    true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicCas64",
 +              auxType:         auxInt64,
 +              argLen:          4,
 +              resultNotInArgs: true,
 +              clobberFlags:    true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {2, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicCas32",
 +              auxType:         auxInt64,
 +              argLen:          4,
 +              resultNotInArgs: true,
 +              clobberFlags:    true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {2, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicAnd8",
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              asm:            ppc64.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicAnd32",
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              asm:            ppc64.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicOr8",
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              asm:            ppc64.AOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicOr32",
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              asm:            ppc64.AOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                              {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
 +                      },
 +              },
 +      },
 +      {
 +              name:         "LoweredWB",
 +              auxType:      auxInt64,
 +              argLen:       1,
 +              clobberFlags: true,
 +              reg: regInfo{
 +                      clobbers: 18446744072632408064, // R11 R12 R18 R19 R22 R23 R24 R25 R26 R27 R28 R29 R31 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 XER
 +                      outputs: []outputInfo{
 +                              {0, 536870912}, // R29
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredPubBarrier",
 +              argLen:         1,
 +              hasSideEffects: true,
 +              asm:            ppc64.ALWSYNC,
 +              reg:            regInfo{},
 +      },
 +      {
 +              name:    "LoweredPanicBoundsRR",
 +              auxType: auxInt64,
 +              argLen:  3,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1016}, // R3 R4 R5 R6 R7 R8 R9
 +                              {1, 1016}, // R3 R4 R5 R6 R7 R8 R9
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredPanicBoundsRC",
 +              auxType: auxPanicBoundsC,
 +              argLen:  2,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1016}, // R3 R4 R5 R6 R7 R8 R9
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredPanicBoundsCR",
 +              auxType: auxPanicBoundsC,
 +              argLen:  2,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1016}, // R3 R4 R5 R6 R7 R8 R9
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredPanicBoundsCC",
 +              auxType: auxPanicBoundsCC,
 +              argLen:  1,
 +              call:    true,
 +              reg:     regInfo{},
 +      },
 +      {
 +              name:   "InvertFlags",
 +              argLen: 1,
 +              reg:    regInfo{},
 +      },
 +      {
 +              name:   "FlagEQ",
 +              argLen: 0,
 +              reg:    regInfo{},
 +      },
 +      {
 +              name:   "FlagLT",
 +              argLen: 0,
 +              reg:    regInfo{},
 +      },
 +      {
 +              name:   "FlagGT",
 +              argLen: 0,
 +              reg:    regInfo{},
 +      },
 +
 +      {
 +              name:        "ADD",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         riscv.AADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ADDI",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     riscv.AADDI,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372037861408754}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ADDIW",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     riscv.AADDIW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "NEG",
 +              argLen: 1,
 +              asm:    riscv.ANEG,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "NEGW",
 +              argLen: 1,
 +              asm:    riscv.ANEGW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SUB",
 +              argLen: 2,
 +              asm:    riscv.ASUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SUBW",
 +              argLen: 2,
 +              asm:    riscv.ASUBW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MUL",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         riscv.AMUL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULW",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         riscv.AMULW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULH",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         riscv.AMULH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MULHU",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         riscv.AMULHU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredMuluhilo",
 +              argLen:          2,
 +              resultNotInArgs: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredMuluover",
 +              argLen:          2,
 +              resultNotInArgs: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "DIV",
 +              argLen: 2,
 +              asm:    riscv.ADIV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "DIVU",
 +              argLen: 2,
 +              asm:    riscv.ADIVU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "DIVW",
 +              argLen: 2,
 +              asm:    riscv.ADIVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "DIVUW",
 +              argLen: 2,
 +              asm:    riscv.ADIVUW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "REM",
 +              argLen: 2,
 +              asm:    riscv.AREM,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "REMU",
 +              argLen: 2,
 +              asm:    riscv.AREMU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "REMW",
 +              argLen: 2,
 +              asm:    riscv.AREMW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "REMUW",
 +              argLen: 2,
 +              asm:    riscv.AREMUW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:              "MOVaddr",
 +              auxType:           auxSymOff,
 +              argLen:            1,
 +              rematerializeable: true,
 +              symEffect:         SymAddr,
 +              asm:               riscv.AMOV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372037861408754}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:              "MOVDconst",
 +              auxType:           auxInt64,
 +              argLen:            0,
 +              rematerializeable: true,
 +              asm:               riscv.AMOV,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
++      {
++              name:              "FMOVDconst",
++              auxType:           auxFloat64,
++              argLen:            0,
++              rematerializeable: true,
++              asm:               riscv.AMOVD,
++              reg: regInfo{
++                      outputs: []outputInfo{
++                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
++                      },
++              },
++      },
++      {
++              name:              "FMOVFconst",
++              auxType:           auxFloat32,
++              argLen:            0,
++              rematerializeable: true,
++              asm:               riscv.AMOVF,
++              reg: regInfo{
++                      outputs: []outputInfo{
++                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
++                      },
++              },
++      },
 +      {
 +              name:           "MOVBload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            riscv.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372037861408754}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            riscv.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372037861408754}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            riscv.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372037861408754}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVDload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            riscv.AMOV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372037861408754}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVBUload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            riscv.AMOVBU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372037861408754}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHUload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            riscv.AMOVHU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372037861408754}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWUload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            riscv.AMOVWU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372037861408754}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVBstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            riscv.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1006632946},          // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {0, 9223372037861408754}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            riscv.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1006632946},          // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {0, 9223372037861408754}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            riscv.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1006632946},          // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {0, 9223372037861408754}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVDstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            riscv.AMOV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1006632946},          // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {0, 9223372037861408754}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVBstorezero",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            riscv.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372037861408754}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHstorezero",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            riscv.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372037861408754}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWstorezero",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            riscv.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372037861408754}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVDstorezero",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            riscv.AMOV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372037861408754}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVBreg",
 +              argLen: 1,
 +              asm:    riscv.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHreg",
 +              argLen: 1,
 +              asm:    riscv.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWreg",
 +              argLen: 1,
 +              asm:    riscv.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVDreg",
 +              argLen: 1,
 +              asm:    riscv.AMOV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVBUreg",
 +              argLen: 1,
 +              asm:    riscv.AMOVBU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHUreg",
 +              argLen: 1,
 +              asm:    riscv.AMOVHU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWUreg",
 +              argLen: 1,
 +              asm:    riscv.AMOVWU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:         "MOVDnop",
 +              argLen:       1,
 +              resultInArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SLL",
 +              argLen: 2,
 +              asm:    riscv.ASLL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SLLW",
 +              argLen: 2,
 +              asm:    riscv.ASLLW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SRA",
 +              argLen: 2,
 +              asm:    riscv.ASRA,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SRAW",
 +              argLen: 2,
 +              asm:    riscv.ASRAW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SRL",
 +              argLen: 2,
 +              asm:    riscv.ASRL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SRLW",
 +              argLen: 2,
 +              asm:    riscv.ASRLW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SLLI",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     riscv.ASLLI,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SLLIW",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     riscv.ASLLIW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SRAI",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     riscv.ASRAI,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SRAIW",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     riscv.ASRAIW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SRLI",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     riscv.ASRLI,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SRLIW",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     riscv.ASRLIW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SH1ADD",
 +              argLen: 2,
 +              asm:    riscv.ASH1ADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SH2ADD",
 +              argLen: 2,
 +              asm:    riscv.ASH2ADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SH3ADD",
 +              argLen: 2,
 +              asm:    riscv.ASH3ADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "AND",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         riscv.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ANDN",
 +              argLen: 2,
 +              asm:    riscv.AANDN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ANDI",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     riscv.AANDI,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CLZ",
 +              argLen: 1,
 +              asm:    riscv.ACLZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CLZW",
 +              argLen: 1,
 +              asm:    riscv.ACLZW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CPOP",
 +              argLen: 1,
 +              asm:    riscv.ACPOP,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CPOPW",
 +              argLen: 1,
 +              asm:    riscv.ACPOPW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CTZ",
 +              argLen: 1,
 +              asm:    riscv.ACTZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CTZW",
 +              argLen: 1,
 +              asm:    riscv.ACTZW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "NOT",
 +              argLen: 1,
 +              asm:    riscv.ANOT,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "OR",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         riscv.AOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ORN",
 +              argLen: 2,
 +              asm:    riscv.AORN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ORI",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     riscv.AORI,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "REV8",
 +              argLen: 1,
 +              asm:    riscv.AREV8,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ROL",
 +              argLen: 2,
 +              asm:    riscv.AROL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ROLW",
 +              argLen: 2,
 +              asm:    riscv.AROLW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "ROR",
 +              argLen: 2,
 +              asm:    riscv.AROR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "RORI",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     riscv.ARORI,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "RORIW",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     riscv.ARORIW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "RORW",
 +              argLen: 2,
 +              asm:    riscv.ARORW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "XNOR",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         riscv.AXNOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "XOR",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         riscv.AXOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "XORI",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     riscv.AXORI,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MIN",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         riscv.AMIN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MAX",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         riscv.AMAX,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MINU",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         riscv.AMINU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MAXU",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         riscv.AMAXU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SEQZ",
 +              argLen: 1,
 +              asm:    riscv.ASEQZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SNEZ",
 +              argLen: 1,
 +              asm:    riscv.ASNEZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SLT",
 +              argLen: 2,
 +              asm:    riscv.ASLT,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SLTI",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     riscv.ASLTI,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SLTU",
 +              argLen: 2,
 +              asm:    riscv.ASLTU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SLTIU",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     riscv.ASLTIU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:         "LoweredRound32F",
 +              argLen:       1,
 +              resultInArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:         "LoweredRound64F",
 +              argLen:       1,
 +              resultInArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CALLstatic",
 +              auxType: auxCallOff,
 +              argLen:  -1,
 +              call:    true,
 +              reg: regInfo{
 +                      clobbers: 9223372035781033968, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 g X28 X29 X30 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +              },
 +      },
 +      {
 +              name:     "CALLtail",
 +              auxType:  auxCallOff,
 +              argLen:   -1,
 +              call:     true,
 +              tailCall: true,
 +              reg: regInfo{
 +                      clobbers: 9223372035781033968, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 g X28 X29 X30 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +              },
 +      },
 +      {
 +              name:    "CALLclosure",
 +              auxType: auxCallOff,
 +              argLen:  -1,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 33554432},   // X26
 +                              {0, 1006632946}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      clobbers: 9223372035781033968, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 g X28 X29 X30 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +              },
 +      },
 +      {
 +              name:    "CALLinter",
 +              auxType: auxCallOff,
 +              argLen:  -1,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      clobbers: 9223372035781033968, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 g X28 X29 X30 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +              },
 +      },
 +      {
 +              name:           "LoweredZero",
 +              auxType:        auxSymValAndOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredZeroLoop",
 +              auxType:        auxSymValAndOff,
 +              argLen:         2,
 +              needIntTemp:    true,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      clobbersArg0: true,
 +              },
 +      },
 +      {
 +              name:           "LoweredMove",
 +              auxType:        auxSymValAndOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              faultOnNilArg1: true,
 +              symEffect:      SymWrite,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632928}, // X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632928}, // X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      clobbers: 16, // X5
 +              },
 +      },
 +      {
 +              name:           "LoweredMoveLoop",
 +              auxType:        auxSymValAndOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              faultOnNilArg1: true,
 +              symEffect:      SymWrite,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632896}, // X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {1, 1006632896}, // X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      clobbers:     48, // X5 X6
 +                      clobbersArg0: true,
 +                      clobbersArg1: true,
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicLoad8",
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372037861408754}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicLoad32",
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372037861408754}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicLoad64",
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372037861408754}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicStore8",
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1006632946},          // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {0, 9223372037861408754}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicStore32",
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1006632946},          // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {0, 9223372037861408754}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicStore64",
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1006632946},          // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                              {0, 9223372037861408754}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicExchange32",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741808},          // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 g X28 X29 X30
 +                              {0, 9223372037928517618}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 g X28 X29 X30 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicExchange64",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741808},          // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 g X28 X29 X30
 +                              {0, 9223372037928517618}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 g X28 X29 X30 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicAdd32",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741808},          // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 g X28 X29 X30
 +                              {0, 9223372037928517618}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 g X28 X29 X30 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicAdd64",
 +              argLen:          3,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741808},          // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 g X28 X29 X30
 +                              {0, 9223372037928517618}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 g X28 X29 X30 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicCas32",
 +              argLen:          4,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741808},          // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 g X28 X29 X30
 +                              {2, 1073741808},          // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 g X28 X29 X30
 +                              {0, 9223372037928517618}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 g X28 X29 X30 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredAtomicCas64",
 +              argLen:          4,
 +              resultNotInArgs: true,
 +              faultOnNilArg0:  true,
 +              hasSideEffects:  true,
 +              unsafePoint:     true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741808},          // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 g X28 X29 X30
 +                              {2, 1073741808},          // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 g X28 X29 X30
 +                              {0, 9223372037928517618}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 g X28 X29 X30 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicAnd32",
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              asm:            riscv.AAMOANDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741808},          // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 g X28 X29 X30
 +                              {0, 9223372037928517618}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 g X28 X29 X30 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicOr32",
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              asm:            riscv.AAMOORW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1073741808},          // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 g X28 X29 X30
 +                              {0, 9223372037928517618}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 g X28 X29 X30 SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredNilCheck",
 +              argLen:         2,
 +              nilCheck:       true,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632946}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "LoweredGetClosurePtr",
 +              argLen: 0,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 33554432}, // X26
 +                      },
 +              },
 +      },
 +      {
 +              name:              "LoweredGetCallerSP",
 +              argLen:            1,
 +              rematerializeable: true,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:              "LoweredGetCallerPC",
 +              argLen:            0,
 +              rematerializeable: true,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:         "LoweredWB",
 +              auxType:      auxInt64,
 +              argLen:       1,
 +              clobberFlags: true,
 +              reg: regInfo{
 +                      clobbers: 9223372034707292160, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      outputs: []outputInfo{
 +                              {0, 8388608}, // X24
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredPubBarrier",
 +              argLen:         1,
 +              hasSideEffects: true,
 +              asm:            riscv.AFENCE,
 +              reg:            regInfo{},
 +      },
 +      {
 +              name:    "LoweredPanicBoundsRR",
 +              auxType: auxInt64,
 +              argLen:  3,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1048560}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20
 +                              {1, 1048560}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredPanicBoundsRC",
 +              auxType: auxPanicBoundsC,
 +              argLen:  2,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1048560}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredPanicBoundsCR",
 +              auxType: auxPanicBoundsC,
 +              argLen:  2,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1048560}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredPanicBoundsCC",
 +              auxType: auxPanicBoundsCC,
 +              argLen:  1,
 +              call:    true,
 +              reg:     regInfo{},
 +      },
 +      {
 +              name:        "FADDS",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         riscv.AFADDS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FSUBS",
 +              argLen: 2,
 +              asm:    riscv.AFSUBS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FMULS",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         riscv.AFMULS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FDIVS",
 +              argLen: 2,
 +              asm:    riscv.AFDIVS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FMADDS",
 +              argLen:      3,
 +              commutative: true,
 +              asm:         riscv.AFMADDS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {2, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FMSUBS",
 +              argLen:      3,
 +              commutative: true,
 +              asm:         riscv.AFMSUBS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {2, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FNMADDS",
 +              argLen:      3,
 +              commutative: true,
 +              asm:         riscv.AFNMADDS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {2, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FNMSUBS",
 +              argLen:      3,
 +              commutative: true,
 +              asm:         riscv.AFNMSUBS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {2, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FSQRTS",
 +              argLen: 1,
 +              asm:    riscv.AFSQRTS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FNEGS",
 +              argLen: 1,
 +              asm:    riscv.AFNEGS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMVSX",
 +              argLen: 1,
 +              asm:    riscv.AFMVSX,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMVXS",
 +              argLen: 1,
 +              asm:    riscv.AFMVXS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCVTSW",
 +              argLen: 1,
 +              asm:    riscv.AFCVTSW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCVTSL",
 +              argLen: 1,
 +              asm:    riscv.AFCVTSL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCVTWS",
 +              argLen: 1,
 +              asm:    riscv.AFCVTWS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCVTLS",
 +              argLen: 1,
 +              asm:    riscv.AFCVTLS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:           "FMOVWload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            riscv.AMOVF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372037861408754}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "FMOVWstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            riscv.AMOVF,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372037861408754}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 SB
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FEQS",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         riscv.AFEQS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FNES",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         riscv.AFNES,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FLTS",
 +              argLen: 2,
 +              asm:    riscv.AFLTS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FLES",
 +              argLen: 2,
 +              asm:    riscv.AFLES,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredFMAXS",
 +              argLen:          2,
 +              commutative:     true,
 +              resultNotInArgs: true,
 +              asm:             riscv.AFMAXS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredFMINS",
 +              argLen:          2,
 +              commutative:     true,
 +              resultNotInArgs: true,
 +              asm:             riscv.AFMINS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FADDD",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         riscv.AFADDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FSUBD",
 +              argLen: 2,
 +              asm:    riscv.AFSUBD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FMULD",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         riscv.AFMULD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FDIVD",
 +              argLen: 2,
 +              asm:    riscv.AFDIVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FMADDD",
 +              argLen:      3,
 +              commutative: true,
 +              asm:         riscv.AFMADDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {2, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FMSUBD",
 +              argLen:      3,
 +              commutative: true,
 +              asm:         riscv.AFMSUBD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {2, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FNMADDD",
 +              argLen:      3,
 +              commutative: true,
 +              asm:         riscv.AFNMADDD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {2, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FNMSUBD",
 +              argLen:      3,
 +              commutative: true,
 +              asm:         riscv.AFNMSUBD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {2, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FSQRTD",
 +              argLen: 1,
 +              asm:    riscv.AFSQRTD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FNEGD",
 +              argLen: 1,
 +              asm:    riscv.AFNEGD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FABSD",
 +              argLen: 1,
 +              asm:    riscv.AFABSD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FSGNJD",
 +              argLen: 2,
 +              asm:    riscv.AFSGNJD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMVDX",
 +              argLen: 1,
 +              asm:    riscv.AFMVDX,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FMVXD",
 +              argLen: 1,
 +              asm:    riscv.AFMVXD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCVTDW",
 +              argLen: 1,
 +              asm:    riscv.AFCVTDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCVTDL",
 +              argLen: 1,
 +              asm:    riscv.AFCVTDL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCVTWD",
 +              argLen: 1,
 +              asm:    riscv.AFCVTWD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCVTLD",
 +              argLen: 1,
 +              asm:    riscv.AFCVTLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCVTDS",
 +              argLen: 1,
 +              asm:    riscv.AFCVTDS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCVTSD",
 +              argLen: 1,
 +              asm:    riscv.AFCVTSD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "FMOVDload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            riscv.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372037861408754}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:           "FMOVDstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            riscv.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372037861408754}, // SP X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30 SB
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FEQD",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         riscv.AFEQD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:        "FNED",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         riscv.AFNED,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FLTD",
 +              argLen: 2,
 +              asm:    riscv.AFLTD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FLED",
 +              argLen: 2,
 +              asm:    riscv.AFLED,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredFMIND",
 +              argLen:          2,
 +              commutative:     true,
 +              resultNotInArgs: true,
 +              asm:             riscv.AFMIND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:            "LoweredFMAXD",
 +              argLen:          2,
 +              commutative:     true,
 +              resultNotInArgs: true,
 +              asm:             riscv.AFMAXD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCLASSS",
 +              argLen: 1,
 +              asm:    riscv.AFCLASSS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCLASSD",
 +              argLen: 1,
 +              asm:    riscv.AFCLASSD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 9223372034707292160}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 1006632944}, // X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X28 X29 X30
 +                      },
 +              },
 +      },
 +
 +      {
 +              name:         "FADDS",
 +              argLen:       2,
 +              commutative:  true,
 +              resultInArg0: true,
 +              asm:          s390x.AFADDS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:         "FADD",
 +              argLen:       2,
 +              commutative:  true,
 +              resultInArg0: true,
 +              asm:          s390x.AFADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:         "FSUBS",
 +              argLen:       2,
 +              resultInArg0: true,
 +              asm:          s390x.AFSUBS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:         "FSUB",
 +              argLen:       2,
 +              resultInArg0: true,
 +              asm:          s390x.AFSUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:         "FMULS",
 +              argLen:       2,
 +              commutative:  true,
 +              resultInArg0: true,
 +              asm:          s390x.AFMULS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:         "FMUL",
 +              argLen:       2,
 +              commutative:  true,
 +              resultInArg0: true,
 +              asm:          s390x.AFMUL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:         "FDIVS",
 +              argLen:       2,
 +              resultInArg0: true,
 +              asm:          s390x.AFDIVS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:         "FDIV",
 +              argLen:       2,
 +              resultInArg0: true,
 +              asm:          s390x.AFDIV,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:         "FNEGS",
 +              argLen:       1,
 +              clobberFlags: true,
 +              asm:          s390x.AFNEGS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:         "FNEG",
 +              argLen:       1,
 +              clobberFlags: true,
 +              asm:          s390x.AFNEG,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:         "FMADDS",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          s390x.AFMADDS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {2, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:         "FMADD",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          s390x.AFMADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {2, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:         "FMSUBS",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          s390x.AFMSUBS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {2, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:         "FMSUB",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          s390x.AFMSUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {2, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "LPDFR",
 +              argLen: 1,
 +              asm:    s390x.ALPDFR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "LNDFR",
 +              argLen: 1,
 +              asm:    s390x.ALNDFR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CPSDR",
 +              argLen: 2,
 +              asm:    s390x.ACPSDR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "WFMAXDB",
 +              argLen: 2,
 +              asm:    s390x.AWFMAXDB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "WFMAXSB",
 +              argLen: 2,
 +              asm:    s390x.AWFMAXSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "WFMINDB",
 +              argLen: 2,
 +              asm:    s390x.AWFMINDB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "WFMINSB",
 +              argLen: 2,
 +              asm:    s390x.AWFMINSB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:    "FIDBR",
 +              auxType: auxInt8,
 +              argLen:  1,
 +              asm:     s390x.AFIDBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:           "FMOVSload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            s390x.AFMOVS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:           "FMOVDload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            s390x.AFMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:              "FMOVSconst",
 +              auxType:           auxFloat32,
 +              argLen:            0,
 +              rematerializeable: true,
 +              asm:               s390x.AFMOVS,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:              "FMOVDconst",
 +              auxType:           auxFloat64,
 +              argLen:            0,
 +              rematerializeable: true,
 +              asm:               s390x.AFMOVD,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:      "FMOVSloadidx",
 +              auxType:   auxSymOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       s390x.AFMOVS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {1, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:      "FMOVDloadidx",
 +              auxType:   auxSymOff,
 +              argLen:    3,
 +              symEffect: SymRead,
 +              asm:       s390x.AFMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {1, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:           "FMOVSstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            s390x.AFMOVS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:           "FMOVDstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            s390x.AFMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:      "FMOVSstoreidx",
 +              auxType:   auxSymOff,
 +              argLen:    4,
 +              symEffect: SymWrite,
 +              asm:       s390x.AFMOVS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56318},      // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {1, 56318},      // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {2, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:      "FMOVDstoreidx",
 +              auxType:   auxSymOff,
 +              argLen:    4,
 +              symEffect: SymWrite,
 +              asm:       s390x.AFMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56318},      // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {1, 56318},      // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {2, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:         "ADD",
 +              argLen:       2,
 +              commutative:  true,
 +              clobberFlags: true,
 +              asm:          s390x.AADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {0, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "ADDW",
 +              argLen:       2,
 +              commutative:  true,
 +              clobberFlags: true,
 +              asm:          s390x.AADDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {0, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "ADDconst",
 +              auxType:      auxInt32,
 +              argLen:       1,
 +              clobberFlags: true,
 +              asm:          s390x.AADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "ADDWconst",
 +              auxType:      auxInt32,
 +              argLen:       1,
 +              clobberFlags: true,
 +              asm:          s390x.AADDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "ADDload",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              resultInArg0:   true,
 +              clobberFlags:   true,
 +              faultOnNilArg1: true,
 +              symEffect:      SymRead,
 +              asm:            s390x.AADD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {1, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "ADDWload",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              resultInArg0:   true,
 +              clobberFlags:   true,
 +              faultOnNilArg1: true,
 +              symEffect:      SymRead,
 +              asm:            s390x.AADDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {1, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "SUB",
 +              argLen:       2,
 +              clobberFlags: true,
 +              asm:          s390x.ASUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {1, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "SUBW",
 +              argLen:       2,
 +              clobberFlags: true,
 +              asm:          s390x.ASUBW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {1, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "SUBconst",
 +              auxType:      auxInt32,
 +              argLen:       1,
 +              resultInArg0: true,
 +              clobberFlags: true,
 +              asm:          s390x.ASUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "SUBWconst",
 +              auxType:      auxInt32,
 +              argLen:       1,
 +              resultInArg0: true,
 +              clobberFlags: true,
 +              asm:          s390x.ASUBW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "SUBload",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              resultInArg0:   true,
 +              clobberFlags:   true,
 +              faultOnNilArg1: true,
 +              symEffect:      SymRead,
 +              asm:            s390x.ASUB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {1, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "SUBWload",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              resultInArg0:   true,
 +              clobberFlags:   true,
 +              faultOnNilArg1: true,
 +              symEffect:      SymRead,
 +              asm:            s390x.ASUBW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {1, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "MULLD",
 +              argLen:       2,
 +              commutative:  true,
 +              resultInArg0: true,
 +              clobberFlags: true,
 +              asm:          s390x.AMULLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {1, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "MULLW",
 +              argLen:       2,
 +              commutative:  true,
 +              resultInArg0: true,
 +              clobberFlags: true,
 +              asm:          s390x.AMULLW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {1, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "MULLDconst",
 +              auxType:      auxInt32,
 +              argLen:       1,
 +              resultInArg0: true,
 +              clobberFlags: true,
 +              asm:          s390x.AMULLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "MULLWconst",
 +              auxType:      auxInt32,
 +              argLen:       1,
 +              resultInArg0: true,
 +              clobberFlags: true,
 +              asm:          s390x.AMULLW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MULLDload",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              resultInArg0:   true,
 +              clobberFlags:   true,
 +              faultOnNilArg1: true,
 +              symEffect:      SymRead,
 +              asm:            s390x.AMULLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {1, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MULLWload",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              resultInArg0:   true,
 +              clobberFlags:   true,
 +              faultOnNilArg1: true,
 +              symEffect:      SymRead,
 +              asm:            s390x.AMULLW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {1, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "MULHD",
 +              argLen:       2,
 +              commutative:  true,
 +              resultInArg0: true,
 +              clobberFlags: true,
 +              asm:          s390x.AMULHD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      clobbers: 2048, // R11
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "MULHDU",
 +              argLen:       2,
 +              commutative:  true,
 +              resultInArg0: true,
 +              clobberFlags: true,
 +              asm:          s390x.AMULHDU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      clobbers: 2048, // R11
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "DIVD",
 +              argLen:       2,
 +              resultInArg0: true,
 +              clobberFlags: true,
 +              asm:          s390x.ADIVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      clobbers: 2048, // R11
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "DIVW",
 +              argLen:       2,
 +              resultInArg0: true,
 +              clobberFlags: true,
 +              asm:          s390x.ADIVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      clobbers: 2048, // R11
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "DIVDU",
 +              argLen:       2,
 +              resultInArg0: true,
 +              clobberFlags: true,
 +              asm:          s390x.ADIVDU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      clobbers: 2048, // R11
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "DIVWU",
 +              argLen:       2,
 +              resultInArg0: true,
 +              clobberFlags: true,
 +              asm:          s390x.ADIVWU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      clobbers: 2048, // R11
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "MODD",
 +              argLen:       2,
 +              resultInArg0: true,
 +              clobberFlags: true,
 +              asm:          s390x.AMODD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      clobbers: 2048, // R11
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "MODW",
 +              argLen:       2,
 +              resultInArg0: true,
 +              clobberFlags: true,
 +              asm:          s390x.AMODW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      clobbers: 2048, // R11
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "MODDU",
 +              argLen:       2,
 +              resultInArg0: true,
 +              clobberFlags: true,
 +              asm:          s390x.AMODDU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      clobbers: 2048, // R11
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "MODWU",
 +              argLen:       2,
 +              resultInArg0: true,
 +              clobberFlags: true,
 +              asm:          s390x.AMODWU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                              {1, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +                      clobbers: 2048, // R11
 +                      outputs: []outputInfo{
 +                              {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "AND",
 +              argLen:       2,
 +              commutative:  true,
 +              clobberFlags: true,
 +              asm:          s390x.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {1, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "ANDW",
 +              argLen:       2,
 +              commutative:  true,
 +              clobberFlags: true,
 +              asm:          s390x.AANDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {1, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "ANDconst",
 +              auxType:      auxInt64,
 +              argLen:       1,
 +              resultInArg0: true,
 +              clobberFlags: true,
 +              asm:          s390x.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "ANDWconst",
 +              auxType:      auxInt32,
 +              argLen:       1,
 +              resultInArg0: true,
 +              clobberFlags: true,
 +              asm:          s390x.AANDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "ANDload",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              resultInArg0:   true,
 +              clobberFlags:   true,
 +              faultOnNilArg1: true,
 +              symEffect:      SymRead,
 +              asm:            s390x.AAND,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {1, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "ANDWload",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              resultInArg0:   true,
 +              clobberFlags:   true,
 +              faultOnNilArg1: true,
 +              symEffect:      SymRead,
 +              asm:            s390x.AANDW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {1, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "OR",
 +              argLen:       2,
 +              commutative:  true,
 +              clobberFlags: true,
 +              asm:          s390x.AOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {1, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "ORW",
 +              argLen:       2,
 +              commutative:  true,
 +              clobberFlags: true,
 +              asm:          s390x.AORW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {1, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "ORconst",
 +              auxType:      auxInt64,
 +              argLen:       1,
 +              resultInArg0: true,
 +              clobberFlags: true,
 +              asm:          s390x.AOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "ORWconst",
 +              auxType:      auxInt32,
 +              argLen:       1,
 +              resultInArg0: true,
 +              clobberFlags: true,
 +              asm:          s390x.AORW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "ORload",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              resultInArg0:   true,
 +              clobberFlags:   true,
 +              faultOnNilArg1: true,
 +              symEffect:      SymRead,
 +              asm:            s390x.AOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {1, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "ORWload",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              resultInArg0:   true,
 +              clobberFlags:   true,
 +              faultOnNilArg1: true,
 +              symEffect:      SymRead,
 +              asm:            s390x.AORW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {1, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "XOR",
 +              argLen:       2,
 +              commutative:  true,
 +              clobberFlags: true,
 +              asm:          s390x.AXOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {1, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "XORW",
 +              argLen:       2,
 +              commutative:  true,
 +              clobberFlags: true,
 +              asm:          s390x.AXORW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {1, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "XORconst",
 +              auxType:      auxInt64,
 +              argLen:       1,
 +              resultInArg0: true,
 +              clobberFlags: true,
 +              asm:          s390x.AXOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "XORWconst",
 +              auxType:      auxInt32,
 +              argLen:       1,
 +              resultInArg0: true,
 +              clobberFlags: true,
 +              asm:          s390x.AXORW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "XORload",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              resultInArg0:   true,
 +              clobberFlags:   true,
 +              faultOnNilArg1: true,
 +              symEffect:      SymRead,
 +              asm:            s390x.AXOR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {1, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "XORWload",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              resultInArg0:   true,
 +              clobberFlags:   true,
 +              faultOnNilArg1: true,
 +              symEffect:      SymRead,
 +              asm:            s390x.AXORW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {1, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:        "ADDC",
 +              argLen:      2,
 +              commutative: true,
 +              asm:         s390x.AADDC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {1, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "ADDCconst",
 +              auxType: auxInt16,
 +              argLen:  1,
 +              asm:     s390x.AADDC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "ADDE",
 +              argLen:       3,
 +              commutative:  true,
 +              resultInArg0: true,
 +              asm:          s390x.AADDE,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {1, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SUBC",
 +              argLen: 2,
 +              asm:    s390x.ASUBC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {1, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "SUBE",
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          s390x.ASUBE,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {1, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMP",
 +              argLen: 2,
 +              asm:    s390x.ACMP,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {1, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPW",
 +              argLen: 2,
 +              asm:    s390x.ACMPW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {1, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPU",
 +              argLen: 2,
 +              asm:    s390x.ACMPU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {1, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:   "CMPWU",
 +              argLen: 2,
 +              asm:    s390x.ACMPWU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {1, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CMPconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     s390x.ACMP,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CMPWconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     s390x.ACMPW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CMPUconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     s390x.ACMPU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:    "CMPWUconst",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              asm:     s390x.ACMPWU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCMPS",
 +              argLen: 2,
 +              asm:    s390x.ACEBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FCMP",
 +              argLen: 2,
 +              asm:    s390x.AFCMPU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "LTDBR",
 +              argLen: 1,
 +              asm:    s390x.ALTDBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "LTEBR",
 +              argLen: 1,
 +              asm:    s390x.ALTEBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SLD",
 +              argLen: 2,
 +              asm:    s390x.ASLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 23550}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SLW",
 +              argLen: 2,
 +              asm:    s390x.ASLW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 23550}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SLDconst",
 +              auxType: auxUInt8,
 +              argLen:  1,
 +              asm:     s390x.ASLD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SLWconst",
 +              auxType: auxUInt8,
 +              argLen:  1,
 +              asm:     s390x.ASLW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SRD",
 +              argLen: 2,
 +              asm:    s390x.ASRD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 23550}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SRW",
 +              argLen: 2,
 +              asm:    s390x.ASRW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 23550}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SRDconst",
 +              auxType: auxUInt8,
 +              argLen:  1,
 +              asm:     s390x.ASRD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "SRWconst",
 +              auxType: auxUInt8,
 +              argLen:  1,
 +              asm:     s390x.ASRW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "SRAD",
 +              argLen:       2,
 +              clobberFlags: true,
 +              asm:          s390x.ASRAD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 23550}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "SRAW",
 +              argLen:       2,
 +              clobberFlags: true,
 +              asm:          s390x.ASRAW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 23550}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "SRADconst",
 +              auxType:      auxUInt8,
 +              argLen:       1,
 +              clobberFlags: true,
 +              asm:          s390x.ASRAD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "SRAWconst",
 +              auxType:      auxUInt8,
 +              argLen:       1,
 +              clobberFlags: true,
 +              asm:          s390x.ASRAW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "RLLG",
 +              argLen: 2,
 +              asm:    s390x.ARLLG,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 23550}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "RLL",
 +              argLen: 2,
 +              asm:    s390x.ARLL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 23550}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:    "RLLconst",
 +              auxType: auxUInt8,
 +              argLen:  1,
 +              asm:     s390x.ARLL,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "RXSBG",
 +              auxType:      auxS390XRotateParams,
 +              argLen:       2,
 +              resultInArg0: true,
 +              clobberFlags: true,
 +              asm:          s390x.ARXSBG,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {1, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "RISBGZ",
 +              auxType:      auxS390XRotateParams,
 +              argLen:       1,
 +              clobberFlags: true,
 +              asm:          s390x.ARISBGZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "NEG",
 +              argLen:       1,
 +              clobberFlags: true,
 +              asm:          s390x.ANEG,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "NEGW",
 +              argLen:       1,
 +              clobberFlags: true,
 +              asm:          s390x.ANEGW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "NOT",
 +              argLen:       1,
 +              resultInArg0: true,
 +              clobberFlags: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "NOTW",
 +              argLen:       1,
 +              resultInArg0: true,
 +              clobberFlags: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FSQRT",
 +              argLen: 1,
 +              asm:    s390x.AFSQRT,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "FSQRTS",
 +              argLen: 1,
 +              asm:    s390x.AFSQRTS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:         "LOCGR",
 +              auxType:      auxS390XCCMask,
 +              argLen:       3,
 +              resultInArg0: true,
 +              asm:          s390x.ALOCGR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                              {1, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVBreg",
 +              argLen: 1,
 +              asm:    s390x.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVBZreg",
 +              argLen: 1,
 +              asm:    s390x.AMOVBZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHreg",
 +              argLen: 1,
 +              asm:    s390x.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVHZreg",
 +              argLen: 1,
 +              asm:    s390x.AMOVHZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWreg",
 +              argLen: 1,
 +              asm:    s390x.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWZreg",
 +              argLen: 1,
 +              asm:    s390x.AMOVWZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:              "MOVDconst",
 +              auxType:           auxInt64,
 +              argLen:            0,
 +              rematerializeable: true,
 +              asm:               s390x.AMOVD,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "LDGR",
 +              argLen: 1,
 +              asm:    s390x.ALDGR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "LGDR",
 +              argLen: 1,
 +              asm:    s390x.ALGDR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "CFDBRA",
 +              argLen:       1,
 +              clobberFlags: true,
 +              asm:          s390x.ACFDBRA,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "CGDBRA",
 +              argLen:       1,
 +              clobberFlags: true,
 +              asm:          s390x.ACGDBRA,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "CFEBRA",
 +              argLen:       1,
 +              clobberFlags: true,
 +              asm:          s390x.ACFEBRA,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "CGEBRA",
 +              argLen:       1,
 +              clobberFlags: true,
 +              asm:          s390x.ACGEBRA,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "CEFBRA",
 +              argLen:       1,
 +              clobberFlags: true,
 +              asm:          s390x.ACEFBRA,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:         "CDFBRA",
 +              argLen:       1,
 +              clobberFlags: true,
 +              asm:          s390x.ACDFBRA,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:         "CEGBRA",
 +              argLen:       1,
 +              clobberFlags: true,
 +              asm:          s390x.ACEGBRA,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:         "CDGBRA",
 +              argLen:       1,
 +              clobberFlags: true,
 +              asm:          s390x.ACDGBRA,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:         "CLFEBR",
 +              argLen:       1,
 +              clobberFlags: true,
 +              asm:          s390x.ACLFEBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "CLFDBR",
 +              argLen:       1,
 +              clobberFlags: true,
 +              asm:          s390x.ACLFDBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "CLGEBR",
 +              argLen:       1,
 +              clobberFlags: true,
 +              asm:          s390x.ACLGEBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "CLGDBR",
 +              argLen:       1,
 +              clobberFlags: true,
 +              asm:          s390x.ACLGDBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "CELFBR",
 +              argLen:       1,
 +              clobberFlags: true,
 +              asm:          s390x.ACELFBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:         "CDLFBR",
 +              argLen:       1,
 +              clobberFlags: true,
 +              asm:          s390x.ACDLFBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:         "CELGBR",
 +              argLen:       1,
 +              clobberFlags: true,
 +              asm:          s390x.ACELGBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:         "CDLGBR",
 +              argLen:       1,
 +              clobberFlags: true,
 +              asm:          s390x.ACDLGBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "LEDBR",
 +              argLen: 1,
 +              asm:    s390x.ALEDBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "LDEBR",
 +              argLen: 1,
 +              asm:    s390x.ALDEBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:              "MOVDaddr",
 +              auxType:           auxSymOff,
 +              argLen:            1,
 +              rematerializeable: true,
 +              symEffect:         SymAddr,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295000064}, // SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:      "MOVDaddridx",
 +              auxType:   auxSymOff,
 +              argLen:    2,
 +              symEffect: SymAddr,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295000064}, // SP SB
 +                              {1, 56318},      // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVBZload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            s390x.AMOVBZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVBload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            s390x.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHZload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            s390x.AMOVHZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            s390x.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWZload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            s390x.AMOVWZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            s390x.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVDload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            s390x.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVWBR",
 +              argLen: 1,
 +              asm:    s390x.AMOVWBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MOVDBR",
 +              argLen: 1,
 +              asm:    s390x.AMOVDBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHBRload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            s390x.AMOVHBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWBRload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            s390x.AMOVWBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVDBRload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            s390x.AMOVDBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVBstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            s390x.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                              {1, 56319},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            s390x.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                              {1, 56319},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            s390x.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                              {1, 56319},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVDstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            s390x.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                              {1, 56319},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHBRstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            s390x.AMOVHBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {1, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWBRstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            s390x.AMOVWBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {1, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVDBRstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            s390x.AMOVDBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {1, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MVC",
 +              auxType:        auxSymValAndOff,
 +              argLen:         3,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              faultOnNilArg1: true,
 +              symEffect:      SymNone,
 +              asm:            s390x.AMVC,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {1, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MOVBZloadidx",
 +              auxType:     auxSymOff,
 +              argLen:      3,
 +              commutative: true,
 +              symEffect:   SymRead,
 +              asm:         s390x.AMOVBZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 56318},      // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MOVBloadidx",
 +              auxType:     auxSymOff,
 +              argLen:      3,
 +              commutative: true,
 +              symEffect:   SymRead,
 +              asm:         s390x.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 56318},      // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MOVHZloadidx",
 +              auxType:     auxSymOff,
 +              argLen:      3,
 +              commutative: true,
 +              symEffect:   SymRead,
 +              asm:         s390x.AMOVHZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 56318},      // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MOVHloadidx",
 +              auxType:     auxSymOff,
 +              argLen:      3,
 +              commutative: true,
 +              symEffect:   SymRead,
 +              asm:         s390x.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 56318},      // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MOVWZloadidx",
 +              auxType:     auxSymOff,
 +              argLen:      3,
 +              commutative: true,
 +              symEffect:   SymRead,
 +              asm:         s390x.AMOVWZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 56318},      // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MOVWloadidx",
 +              auxType:     auxSymOff,
 +              argLen:      3,
 +              commutative: true,
 +              symEffect:   SymRead,
 +              asm:         s390x.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 56318},      // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MOVDloadidx",
 +              auxType:     auxSymOff,
 +              argLen:      3,
 +              commutative: true,
 +              symEffect:   SymRead,
 +              asm:         s390x.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 56318},      // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MOVHBRloadidx",
 +              auxType:     auxSymOff,
 +              argLen:      3,
 +              commutative: true,
 +              symEffect:   SymRead,
 +              asm:         s390x.AMOVHBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 56318},      // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MOVWBRloadidx",
 +              auxType:     auxSymOff,
 +              argLen:      3,
 +              commutative: true,
 +              symEffect:   SymRead,
 +              asm:         s390x.AMOVWBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 56318},      // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MOVDBRloadidx",
 +              auxType:     auxSymOff,
 +              argLen:      3,
 +              commutative: true,
 +              symEffect:   SymRead,
 +              asm:         s390x.AMOVDBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 56318},      // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MOVBstoreidx",
 +              auxType:     auxSymOff,
 +              argLen:      4,
 +              commutative: true,
 +              symEffect:   SymWrite,
 +              asm:         s390x.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {1, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {2, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MOVHstoreidx",
 +              auxType:     auxSymOff,
 +              argLen:      4,
 +              commutative: true,
 +              symEffect:   SymWrite,
 +              asm:         s390x.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {1, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {2, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MOVWstoreidx",
 +              auxType:     auxSymOff,
 +              argLen:      4,
 +              commutative: true,
 +              symEffect:   SymWrite,
 +              asm:         s390x.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {1, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {2, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MOVDstoreidx",
 +              auxType:     auxSymOff,
 +              argLen:      4,
 +              commutative: true,
 +              symEffect:   SymWrite,
 +              asm:         s390x.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {1, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {2, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MOVHBRstoreidx",
 +              auxType:     auxSymOff,
 +              argLen:      4,
 +              commutative: true,
 +              symEffect:   SymWrite,
 +              asm:         s390x.AMOVHBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {1, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {2, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MOVWBRstoreidx",
 +              auxType:     auxSymOff,
 +              argLen:      4,
 +              commutative: true,
 +              symEffect:   SymWrite,
 +              asm:         s390x.AMOVWBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {1, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {2, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:        "MOVDBRstoreidx",
 +              auxType:     auxSymOff,
 +              argLen:      4,
 +              commutative: true,
 +              symEffect:   SymWrite,
 +              asm:         s390x.AMOVDBR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {1, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {2, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVBstoreconst",
 +              auxType:        auxSymValAndOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            s390x.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVHstoreconst",
 +              auxType:        auxSymValAndOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            s390x.AMOVH,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWstoreconst",
 +              auxType:        auxSymValAndOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            s390x.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVDstoreconst",
 +              auxType:        auxSymValAndOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            s390x.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                      },
 +              },
 +      },
 +      {
 +              name:           "CLEAR",
 +              auxType:        auxSymValAndOff,
 +              argLen:         2,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            s390x.ACLEAR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23550}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:         "CALLstatic",
 +              auxType:      auxCallOff,
 +              argLen:       1,
 +              clobberFlags: true,
 +              call:         true,
 +              reg: regInfo{
 +                      clobbers: 4294933503, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 g R14 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +              },
 +      },
 +      {
 +              name:         "CALLtail",
 +              auxType:      auxCallOff,
 +              argLen:       1,
 +              clobberFlags: true,
 +              call:         true,
 +              tailCall:     true,
 +              reg: regInfo{
 +                      clobbers: 4294933503, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 g R14 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +              },
 +      },
 +      {
 +              name:         "CALLclosure",
 +              auxType:      auxCallOff,
 +              argLen:       3,
 +              clobberFlags: true,
 +              call:         true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 4096},  // R12
 +                              {0, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      clobbers: 4294933503, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 g R14 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +              },
 +      },
 +      {
 +              name:         "CALLinter",
 +              auxType:      auxCallOff,
 +              argLen:       2,
 +              clobberFlags: true,
 +              call:         true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23550}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      clobbers: 4294933503, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 g R14 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +              },
 +      },
 +      {
 +              name:   "InvertFlags",
 +              argLen: 1,
 +              reg:    regInfo{},
 +      },
 +      {
 +              name:   "LoweredGetG",
 +              argLen: 1,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:      "LoweredGetClosurePtr",
 +              argLen:    0,
 +              zeroWidth: true,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 4096}, // R12
 +                      },
 +              },
 +      },
 +      {
 +              name:              "LoweredGetCallerSP",
 +              argLen:            1,
 +              rematerializeable: true,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:              "LoweredGetCallerPC",
 +              argLen:            0,
 +              rematerializeable: true,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredNilCheck",
 +              argLen:         2,
 +              clobberFlags:   true,
 +              nilCheck:       true,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:         "LoweredRound32F",
 +              argLen:       1,
 +              resultInArg0: true,
 +              zeroWidth:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:         "LoweredRound64F",
 +              argLen:       1,
 +              resultInArg0: true,
 +              zeroWidth:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:         "LoweredWB",
 +              auxType:      auxInt64,
 +              argLen:       1,
 +              clobberFlags: true,
 +              reg: regInfo{
 +                      clobbers: 4294918146, // R1 R14 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      outputs: []outputInfo{
 +                              {0, 512}, // R9
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredPanicBoundsRR",
 +              auxType: auxInt64,
 +              argLen:  3,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 7167}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12
 +                              {1, 7167}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredPanicBoundsRC",
 +              auxType: auxPanicBoundsC,
 +              argLen:  2,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 7167}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredPanicBoundsCR",
 +              auxType: auxPanicBoundsC,
 +              argLen:  2,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 7167}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredPanicBoundsCC",
 +              auxType: auxPanicBoundsCC,
 +              argLen:  1,
 +              call:    true,
 +              reg:     regInfo{},
 +      },
 +      {
 +              name:   "FlagEQ",
 +              argLen: 0,
 +              reg:    regInfo{},
 +      },
 +      {
 +              name:   "FlagLT",
 +              argLen: 0,
 +              reg:    regInfo{},
 +      },
 +      {
 +              name:   "FlagGT",
 +              argLen: 0,
 +              reg:    regInfo{},
 +      },
 +      {
 +              name:   "FlagOV",
 +              argLen: 0,
 +              reg:    regInfo{},
 +      },
 +      {
 +              name:   "SYNC",
 +              argLen: 1,
 +              asm:    s390x.ASYNC,
 +              reg:    regInfo{},
 +      },
 +      {
 +              name:           "MOVBZatomicload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            s390x.AMOVBZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWZatomicload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            s390x.AMOVWZ,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVDatomicload",
 +              auxType:        auxSymOff,
 +              argLen:         2,
 +              faultOnNilArg0: true,
 +              symEffect:      SymRead,
 +              asm:            s390x.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVBatomicstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              symEffect:      SymWrite,
 +              asm:            s390x.AMOVB,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                              {1, 56319},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVWatomicstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              symEffect:      SymWrite,
 +              asm:            s390x.AMOVW,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                              {1, 56319},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:           "MOVDatomicstore",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              symEffect:      SymWrite,
 +              asm:            s390x.AMOVD,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                              {1, 56319},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LAA",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              symEffect:      SymRdWr,
 +              asm:            s390x.ALAA,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                              {1, 56319},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LAAG",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              symEffect:      SymRdWr,
 +              asm:            s390x.ALAAG,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                              {1, 56319},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "AddTupleFirst32",
 +              argLen: 2,
 +              reg:    regInfo{},
 +      },
 +      {
 +              name:   "AddTupleFirst64",
 +              argLen: 2,
 +              reg:    regInfo{},
 +      },
 +      {
 +              name:           "LAN",
 +              argLen:         3,
 +              clobberFlags:   true,
 +              hasSideEffects: true,
 +              asm:            s390x.ALAN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                              {1, 56319},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LANfloor",
 +              argLen:         3,
 +              clobberFlags:   true,
 +              hasSideEffects: true,
 +              asm:            s390x.ALAN,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 2},     // R1
 +                              {1, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      clobbers: 2, // R1
 +              },
 +      },
 +      {
 +              name:           "LAO",
 +              argLen:         3,
 +              clobberFlags:   true,
 +              hasSideEffects: true,
 +              asm:            s390x.ALAO,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB
 +                              {1, 56319},      // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LAOfloor",
 +              argLen:         3,
 +              clobberFlags:   true,
 +              hasSideEffects: true,
 +              asm:            s390x.ALAO,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 2},     // R1
 +                              {1, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      clobbers: 2, // R1
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicCas32",
 +              auxType:        auxSymOff,
 +              argLen:         4,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              symEffect:      SymRdWr,
 +              asm:            s390x.ACS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1},     // R0
 +                              {0, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {2, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      clobbers: 1, // R0
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicCas64",
 +              auxType:        auxSymOff,
 +              argLen:         4,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              symEffect:      SymRdWr,
 +              asm:            s390x.ACSG,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 1},     // R0
 +                              {0, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {2, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      clobbers: 1, // R0
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicExchange32",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              symEffect:      SymRdWr,
 +              asm:            s390x.ACS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {1, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 1}, // R0
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredAtomicExchange64",
 +              auxType:        auxSymOff,
 +              argLen:         3,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              hasSideEffects: true,
 +              symEffect:      SymRdWr,
 +              asm:            s390x.ACSG,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                              {1, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {1, 0},
 +                              {0, 1}, // R0
 +                      },
 +              },
 +      },
 +      {
 +              name:         "FLOGR",
 +              argLen:       1,
 +              clobberFlags: true,
 +              asm:          s390x.AFLOGR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      clobbers: 2, // R1
 +                      outputs: []outputInfo{
 +                              {0, 1}, // R0
 +                      },
 +              },
 +      },
 +      {
 +              name:         "POPCNT",
 +              argLen:       1,
 +              clobberFlags: true,
 +              asm:          s390x.APOPCNT,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +              },
 +      },
 +      {
 +              name:   "MLGR",
 +              argLen: 2,
 +              asm:    s390x.AMLGR,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 8},     // R3
 +                              {0, 23551}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4}, // R2
 +                              {1, 8}, // R3
 +                      },
 +              },
 +      },
 +      {
 +              name:   "SumBytes2",
 +              argLen: 1,
 +              reg:    regInfo{},
 +      },
 +      {
 +              name:   "SumBytes4",
 +              argLen: 1,
 +              reg:    regInfo{},
 +      },
 +      {
 +              name:   "SumBytes8",
 +              argLen: 1,
 +              reg:    regInfo{},
 +      },
 +      {
 +              name:           "STMG2",
 +              auxType:        auxSymOff,
 +              argLen:         4,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            s390x.ASTMG,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 2},     // R1
 +                              {2, 4},     // R2
 +                              {0, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:           "STMG3",
 +              auxType:        auxSymOff,
 +              argLen:         5,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            s390x.ASTMG,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 2},     // R1
 +                              {2, 4},     // R2
 +                              {3, 8},     // R3
 +                              {0, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:           "STMG4",
 +              auxType:        auxSymOff,
 +              argLen:         6,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            s390x.ASTMG,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 2},     // R1
 +                              {2, 4},     // R2
 +                              {3, 8},     // R3
 +                              {4, 16},    // R4
 +                              {0, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:           "STM2",
 +              auxType:        auxSymOff,
 +              argLen:         4,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            s390x.ASTMY,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 2},     // R1
 +                              {2, 4},     // R2
 +                              {0, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:           "STM3",
 +              auxType:        auxSymOff,
 +              argLen:         5,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            s390x.ASTMY,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 2},     // R1
 +                              {2, 4},     // R2
 +                              {3, 8},     // R3
 +                              {0, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:           "STM4",
 +              auxType:        auxSymOff,
 +              argLen:         6,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              symEffect:      SymWrite,
 +              asm:            s390x.ASTMY,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 2},     // R1
 +                              {2, 4},     // R2
 +                              {3, 8},     // R3
 +                              {4, 16},    // R4
 +                              {0, 56318}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredMove",
 +              auxType:        auxInt64,
 +              argLen:         4,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              faultOnNilArg1: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 2},     // R1
 +                              {1, 4},     // R2
 +                              {2, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      clobbers: 6, // R1 R2
 +              },
 +      },
 +      {
 +              name:           "LoweredZero",
 +              auxType:        auxInt64,
 +              argLen:         3,
 +              clobberFlags:   true,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 2},     // R1
 +                              {1, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP
 +                      },
 +                      clobbers: 2, // R1
 +              },
 +      },
 +
 +      {
 +              name:    "LoweredStaticCall",
 +              auxType: auxCallOff,
 +              argLen:  1,
 +              call:    true,
 +              reg: regInfo{
 +                      clobbers: 844424930131967, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31 g
 +              },
 +      },
 +      {
 +              name:     "LoweredTailCall",
 +              auxType:  auxCallOff,
 +              argLen:   1,
 +              call:     true,
 +              tailCall: true,
 +              reg: regInfo{
 +                      clobbers: 844424930131967, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31 g
 +              },
 +      },
 +      {
 +              name:    "LoweredClosureCall",
 +              auxType: auxCallOff,
 +              argLen:  3,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                              {1, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +                      clobbers: 844424930131967, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31 g
 +              },
 +      },
 +      {
 +              name:    "LoweredInterCall",
 +              auxType: auxCallOff,
 +              argLen:  2,
 +              call:    true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +                      clobbers: 844424930131967, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31 g
 +              },
 +      },
 +      {
 +              name:              "LoweredAddr",
 +              auxType:           auxSymOff,
 +              argLen:            1,
 +              rematerializeable: true,
 +              symEffect:         SymAddr,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredMove",
 +              auxType: auxInt64,
 +              argLen:  3,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                              {1, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredZero",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "LoweredGetClosurePtr",
 +              argLen: 0,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:              "LoweredGetCallerPC",
 +              argLen:            0,
 +              rematerializeable: true,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:              "LoweredGetCallerSP",
 +              argLen:            1,
 +              rematerializeable: true,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:           "LoweredNilCheck",
 +              argLen:         2,
 +              nilCheck:       true,
 +              faultOnNilArg0: true,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:    "LoweredWB",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              reg: regInfo{
 +                      clobbers: 844424930131967, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31 g
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "LoweredConvert",
 +              argLen: 2,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "Select",
 +              argLen: 3,
 +              asm:    wasm.ASelect,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {1, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {2, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:    "I64Load8U",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     wasm.AI64Load8U,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1407374883618815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:    "I64Load8S",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     wasm.AI64Load8S,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1407374883618815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:    "I64Load16U",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     wasm.AI64Load16U,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1407374883618815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:    "I64Load16S",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     wasm.AI64Load16S,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1407374883618815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:    "I64Load32U",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     wasm.AI64Load32U,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1407374883618815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:    "I64Load32S",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     wasm.AI64Load32S,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1407374883618815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:    "I64Load",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     wasm.AI64Load,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1407374883618815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:    "I64Store8",
 +              auxType: auxInt64,
 +              argLen:  3,
 +              asm:     wasm.AI64Store8,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 281474976776191},  // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {0, 1407374883618815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP SB
 +                      },
 +              },
 +      },
 +      {
 +              name:    "I64Store16",
 +              auxType: auxInt64,
 +              argLen:  3,
 +              asm:     wasm.AI64Store16,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 281474976776191},  // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {0, 1407374883618815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP SB
 +                      },
 +              },
 +      },
 +      {
 +              name:    "I64Store32",
 +              auxType: auxInt64,
 +              argLen:  3,
 +              asm:     wasm.AI64Store32,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 281474976776191},  // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {0, 1407374883618815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP SB
 +                      },
 +              },
 +      },
 +      {
 +              name:    "I64Store",
 +              auxType: auxInt64,
 +              argLen:  3,
 +              asm:     wasm.AI64Store,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 281474976776191},  // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {0, 1407374883618815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP SB
 +                      },
 +              },
 +      },
 +      {
 +              name:    "F32Load",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     wasm.AF32Load,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1407374883618815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:    "F64Load",
 +              auxType: auxInt64,
 +              argLen:  2,
 +              asm:     wasm.AF64Load,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 1407374883618815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP SB
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:    "F32Store",
 +              auxType: auxInt64,
 +              argLen:  3,
 +              asm:     wasm.AF32Store,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 4294901760},       // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {0, 1407374883618815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP SB
 +                      },
 +              },
 +      },
 +      {
 +              name:    "F64Store",
 +              auxType: auxInt64,
 +              argLen:  3,
 +              asm:     wasm.AF64Store,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {1, 281470681743360},  // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {0, 1407374883618815}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP SB
 +                      },
 +              },
 +      },
 +      {
 +              name:              "I64Const",
 +              auxType:           auxInt64,
 +              argLen:            0,
 +              rematerializeable: true,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:              "F32Const",
 +              auxType:           auxFloat32,
 +              argLen:            0,
 +              rematerializeable: true,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:              "F64Const",
 +              auxType:           auxFloat64,
 +              argLen:            0,
 +              rematerializeable: true,
 +              reg: regInfo{
 +                      outputs: []outputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64Eqz",
 +              argLen: 1,
 +              asm:    wasm.AI64Eqz,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64Eq",
 +              argLen: 2,
 +              asm:    wasm.AI64Eq,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {1, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64Ne",
 +              argLen: 2,
 +              asm:    wasm.AI64Ne,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {1, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64LtS",
 +              argLen: 2,
 +              asm:    wasm.AI64LtS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {1, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64LtU",
 +              argLen: 2,
 +              asm:    wasm.AI64LtU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {1, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64GtS",
 +              argLen: 2,
 +              asm:    wasm.AI64GtS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {1, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64GtU",
 +              argLen: 2,
 +              asm:    wasm.AI64GtU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {1, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64LeS",
 +              argLen: 2,
 +              asm:    wasm.AI64LeS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {1, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64LeU",
 +              argLen: 2,
 +              asm:    wasm.AI64LeU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {1, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64GeS",
 +              argLen: 2,
 +              asm:    wasm.AI64GeS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {1, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64GeU",
 +              argLen: 2,
 +              asm:    wasm.AI64GeU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {1, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F32Eq",
 +              argLen: 2,
 +              asm:    wasm.AF32Eq,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F32Ne",
 +              argLen: 2,
 +              asm:    wasm.AF32Ne,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F32Lt",
 +              argLen: 2,
 +              asm:    wasm.AF32Lt,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F32Gt",
 +              argLen: 2,
 +              asm:    wasm.AF32Gt,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F32Le",
 +              argLen: 2,
 +              asm:    wasm.AF32Le,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F32Ge",
 +              argLen: 2,
 +              asm:    wasm.AF32Ge,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F64Eq",
 +              argLen: 2,
 +              asm:    wasm.AF64Eq,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F64Ne",
 +              argLen: 2,
 +              asm:    wasm.AF64Ne,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F64Lt",
 +              argLen: 2,
 +              asm:    wasm.AF64Lt,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F64Gt",
 +              argLen: 2,
 +              asm:    wasm.AF64Gt,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F64Le",
 +              argLen: 2,
 +              asm:    wasm.AF64Le,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F64Ge",
 +              argLen: 2,
 +              asm:    wasm.AF64Ge,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64Add",
 +              argLen: 2,
 +              asm:    wasm.AI64Add,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {1, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:    "I64AddConst",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              asm:     wasm.AI64Add,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64Sub",
 +              argLen: 2,
 +              asm:    wasm.AI64Sub,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {1, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64Mul",
 +              argLen: 2,
 +              asm:    wasm.AI64Mul,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {1, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64DivS",
 +              argLen: 2,
 +              asm:    wasm.AI64DivS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {1, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64DivU",
 +              argLen: 2,
 +              asm:    wasm.AI64DivU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {1, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64RemS",
 +              argLen: 2,
 +              asm:    wasm.AI64RemS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {1, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64RemU",
 +              argLen: 2,
 +              asm:    wasm.AI64RemU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {1, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64And",
 +              argLen: 2,
 +              asm:    wasm.AI64And,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {1, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64Or",
 +              argLen: 2,
 +              asm:    wasm.AI64Or,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {1, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64Xor",
 +              argLen: 2,
 +              asm:    wasm.AI64Xor,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {1, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64Shl",
 +              argLen: 2,
 +              asm:    wasm.AI64Shl,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {1, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64ShrS",
 +              argLen: 2,
 +              asm:    wasm.AI64ShrS,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {1, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64ShrU",
 +              argLen: 2,
 +              asm:    wasm.AI64ShrU,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {1, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F32Neg",
 +              argLen: 1,
 +              asm:    wasm.AF32Neg,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F32Add",
 +              argLen: 2,
 +              asm:    wasm.AF32Add,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F32Sub",
 +              argLen: 2,
 +              asm:    wasm.AF32Sub,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F32Mul",
 +              argLen: 2,
 +              asm:    wasm.AF32Mul,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F32Div",
 +              argLen: 2,
 +              asm:    wasm.AF32Div,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F64Neg",
 +              argLen: 1,
 +              asm:    wasm.AF64Neg,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F64Add",
 +              argLen: 2,
 +              asm:    wasm.AF64Add,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F64Sub",
 +              argLen: 2,
 +              asm:    wasm.AF64Sub,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F64Mul",
 +              argLen: 2,
 +              asm:    wasm.AF64Mul,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F64Div",
 +              argLen: 2,
 +              asm:    wasm.AF64Div,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64TruncSatF64S",
 +              argLen: 1,
 +              asm:    wasm.AI64TruncSatF64S,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64TruncSatF64U",
 +              argLen: 1,
 +              asm:    wasm.AI64TruncSatF64U,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64TruncSatF32S",
 +              argLen: 1,
 +              asm:    wasm.AI64TruncSatF32S,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64TruncSatF32U",
 +              argLen: 1,
 +              asm:    wasm.AI64TruncSatF32U,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F32ConvertI64S",
 +              argLen: 1,
 +              asm:    wasm.AF32ConvertI64S,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F32ConvertI64U",
 +              argLen: 1,
 +              asm:    wasm.AF32ConvertI64U,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F64ConvertI64S",
 +              argLen: 1,
 +              asm:    wasm.AF64ConvertI64S,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F64ConvertI64U",
 +              argLen: 1,
 +              asm:    wasm.AF64ConvertI64U,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F32DemoteF64",
 +              argLen: 1,
 +              asm:    wasm.AF32DemoteF64,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F64PromoteF32",
 +              argLen: 1,
 +              asm:    wasm.AF64PromoteF32,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64Extend8S",
 +              argLen: 1,
 +              asm:    wasm.AI64Extend8S,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64Extend16S",
 +              argLen: 1,
 +              asm:    wasm.AI64Extend16S,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64Extend32S",
 +              argLen: 1,
 +              asm:    wasm.AI64Extend32S,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F32Sqrt",
 +              argLen: 1,
 +              asm:    wasm.AF32Sqrt,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F32Trunc",
 +              argLen: 1,
 +              asm:    wasm.AF32Trunc,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F32Ceil",
 +              argLen: 1,
 +              asm:    wasm.AF32Ceil,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F32Floor",
 +              argLen: 1,
 +              asm:    wasm.AF32Floor,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F32Nearest",
 +              argLen: 1,
 +              asm:    wasm.AF32Nearest,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F32Abs",
 +              argLen: 1,
 +              asm:    wasm.AF32Abs,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F32Copysign",
 +              argLen: 2,
 +              asm:    wasm.AF32Copysign,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                              {1, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F64Sqrt",
 +              argLen: 1,
 +              asm:    wasm.AF64Sqrt,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F64Trunc",
 +              argLen: 1,
 +              asm:    wasm.AF64Trunc,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F64Ceil",
 +              argLen: 1,
 +              asm:    wasm.AF64Ceil,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F64Floor",
 +              argLen: 1,
 +              asm:    wasm.AF64Floor,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F64Nearest",
 +              argLen: 1,
 +              asm:    wasm.AF64Nearest,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F64Abs",
 +              argLen: 1,
 +              asm:    wasm.AF64Abs,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "F64Copysign",
 +              argLen: 2,
 +              asm:    wasm.AF64Copysign,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                              {1, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 281470681743360}, // F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64Ctz",
 +              argLen: 1,
 +              asm:    wasm.AI64Ctz,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64Clz",
 +              argLen: 1,
 +              asm:    wasm.AI64Clz,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I32Rotl",
 +              argLen: 2,
 +              asm:    wasm.AI32Rotl,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {1, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64Rotl",
 +              argLen: 2,
 +              asm:    wasm.AI64Rotl,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                              {1, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +      {
 +              name:   "I64Popcnt",
 +              argLen: 1,
 +              asm:    wasm.AI64Popcnt,
 +              reg: regInfo{
 +                      inputs: []inputInfo{
 +                              {0, 281474976776191}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 SP
 +                      },
 +                      outputs: []outputInfo{
 +                              {0, 65535}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15
 +                      },
 +              },
 +      },
 +
++      {
++              name:    "Last",
++              argLen:  -1,
++              generic: true,
++      },
 +      {
 +              name:        "Add8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Add16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Add32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Add64",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:    "AddPtr",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:        "Add32F",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Add64F",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:    "Sub8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Sub16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Sub32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Sub64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SubPtr",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Sub32F",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Sub64F",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:        "Mul8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Mul16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Mul32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Mul64",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Mul32F",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Mul64F",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:    "Div32F",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Div64F",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:        "Hmul32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Hmul32u",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Hmul64",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Hmul64u",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Mul32uhilo",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Mul64uhilo",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Mul32uover",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Mul64uover",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:    "Avg32u",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Avg64u",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Div8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Div8u",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Div16",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Div16u",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Div32",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Div32u",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Div64",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Div64u",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Div128u",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Mod8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Mod8u",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Mod16",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Mod16u",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Mod32",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Mod32u",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Mod64",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Mod64u",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:        "And8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "And16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "And32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "And64",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Or8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Or16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Or32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Or64",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Xor8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Xor16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Xor32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Xor64",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:    "Lsh8x8",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Lsh8x16",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Lsh8x32",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Lsh8x64",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Lsh16x8",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Lsh16x16",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Lsh16x32",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Lsh16x64",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Lsh32x8",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Lsh32x16",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Lsh32x32",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Lsh32x64",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Lsh64x8",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Lsh64x16",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Lsh64x32",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Lsh64x64",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh8x8",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh8x16",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh8x32",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh8x64",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh16x8",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh16x16",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh16x32",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh16x64",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh32x8",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh32x16",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh32x32",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh32x64",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh64x8",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh64x16",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh64x32",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh64x64",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh8Ux8",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh8Ux16",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh8Ux32",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh8Ux64",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh16Ux8",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh16Ux16",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh16Ux32",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh16Ux64",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh32Ux8",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh32Ux16",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh32Ux32",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh32Ux64",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh64Ux8",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh64Ux16",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh64Ux32",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Rsh64Ux64",
 +              auxType: auxBool,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:        "Eq8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Eq16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Eq32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Eq64",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqPtr",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:    "EqInter",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "EqSlice",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:        "Eq32F",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Eq64F",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Neq8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Neq16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Neq32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Neq64",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "NeqPtr",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:    "NeqInter",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "NeqSlice",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:        "Neq32F",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Neq64F",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:    "Less8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Less8U",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Less16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Less16U",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Less32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Less32U",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Less64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Less64U",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Less32F",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Less64F",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Leq8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Leq8U",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Leq16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Leq16U",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Leq32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Leq32U",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Leq64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Leq64U",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Leq32F",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Leq64F",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CondSelect",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:        "AndB",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "OrB",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqB",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "NeqB",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:    "Not",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Neg8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Neg16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Neg32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Neg64",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Neg32F",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Neg64F",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Com8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Com16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Com32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Com64",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Ctz8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Ctz16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Ctz32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Ctz64",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Ctz64On32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Ctz8NonZero",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Ctz16NonZero",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Ctz32NonZero",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Ctz64NonZero",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "BitLen8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "BitLen16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "BitLen32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "BitLen64",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Bswap16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Bswap32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Bswap64",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "BitRev8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "BitRev16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "BitRev32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "BitRev64",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "PopCount8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "PopCount16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "PopCount32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "PopCount64",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "RotateLeft64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "RotateLeft32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "RotateLeft16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "RotateLeft8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Sqrt",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Sqrt32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Floor",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Ceil",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Trunc",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Round",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "RoundToEven",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Abs",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Copysign",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Min64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Max64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Min64u",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Max64u",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Min64F",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Min32F",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Max64F",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Max32F",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "FMA",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:      "Phi",
 +              argLen:    -1,
 +              zeroWidth: true,
 +              generic:   true,
 +      },
 +      {
 +              name:    "Copy",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:         "Convert",
 +              argLen:       2,
 +              resultInArg0: true,
 +              zeroWidth:    true,
 +              generic:      true,
 +      },
 +      {
 +              name:    "ConstBool",
 +              auxType: auxBool,
 +              argLen:  0,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConstString",
 +              auxType: auxString,
 +              argLen:  0,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConstNil",
 +              argLen:  0,
 +              generic: true,
 +      },
 +      {
 +              name:    "Const8",
 +              auxType: auxInt8,
 +              argLen:  0,
 +              generic: true,
 +      },
 +      {
 +              name:    "Const16",
 +              auxType: auxInt16,
 +              argLen:  0,
 +              generic: true,
 +      },
 +      {
 +              name:    "Const32",
 +              auxType: auxInt32,
 +              argLen:  0,
 +              generic: true,
 +      },
 +      {
 +              name:    "Const64",
 +              auxType: auxInt64,
 +              argLen:  0,
 +              generic: true,
 +      },
 +      {
 +              name:    "Const32F",
 +              auxType: auxFloat32,
 +              argLen:  0,
 +              generic: true,
 +      },
 +      {
 +              name:    "Const64F",
 +              auxType: auxFloat64,
 +              argLen:  0,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConstInterface",
 +              argLen:  0,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConstSlice",
 +              argLen:  0,
 +              generic: true,
 +      },
 +      {
 +              name:      "InitMem",
 +              argLen:    0,
 +              zeroWidth: true,
 +              generic:   true,
 +      },
 +      {
 +              name:      "Arg",
 +              auxType:   auxSymOff,
 +              argLen:    0,
 +              zeroWidth: true,
 +              symEffect: SymRead,
 +              generic:   true,
 +      },
 +      {
 +              name:      "ArgIntReg",
 +              auxType:   auxNameOffsetInt8,
 +              argLen:    0,
 +              zeroWidth: true,
 +              generic:   true,
 +      },
 +      {
 +              name:      "ArgFloatReg",
 +              auxType:   auxNameOffsetInt8,
 +              argLen:    0,
 +              zeroWidth: true,
 +              generic:   true,
 +      },
 +      {
 +              name:      "Addr",
 +              auxType:   auxSym,
 +              argLen:    1,
 +              symEffect: SymAddr,
 +              generic:   true,
 +      },
 +      {
 +              name:      "LocalAddr",
 +              auxType:   auxSym,
 +              argLen:    2,
 +              symEffect: SymAddr,
 +              generic:   true,
 +      },
 +      {
 +              name:      "SP",
 +              argLen:    0,
 +              zeroWidth: true,
 +              fixedReg:  true,
 +              generic:   true,
 +      },
 +      {
 +              name:      "SB",
 +              argLen:    0,
 +              zeroWidth: true,
 +              fixedReg:  true,
 +              generic:   true,
 +      },
 +      {
 +              name:      "SPanchored",
 +              argLen:    2,
 +              zeroWidth: true,
 +              generic:   true,
 +      },
 +      {
 +              name:    "Load",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Dereference",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Store",
 +              auxType: auxTyp,
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "LoadMasked8",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "LoadMasked16",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "LoadMasked32",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "LoadMasked64",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "StoreMasked8",
 +              auxType: auxTyp,
 +              argLen:  4,
 +              generic: true,
 +      },
 +      {
 +              name:    "StoreMasked16",
 +              auxType: auxTyp,
 +              argLen:  4,
 +              generic: true,
 +      },
 +      {
 +              name:    "StoreMasked32",
 +              auxType: auxTyp,
 +              argLen:  4,
 +              generic: true,
 +      },
 +      {
 +              name:    "StoreMasked64",
 +              auxType: auxTyp,
 +              argLen:  4,
 +              generic: true,
 +      },
 +      {
 +              name:    "Move",
 +              auxType: auxTypSize,
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Zero",
 +              auxType: auxTypSize,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "StoreWB",
 +              auxType: auxTyp,
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "MoveWB",
 +              auxType: auxTypSize,
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "ZeroWB",
 +              auxType: auxTypSize,
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "WBend",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "WB",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:      "HasCPUFeature",
 +              auxType:   auxSym,
 +              argLen:    0,
 +              symEffect: SymNone,
 +              generic:   true,
 +      },
 +      {
 +              name:    "PanicBounds",
 +              auxType: auxInt64,
 +              argLen:  3,
 +              call:    true,
 +              generic: true,
 +      },
 +      {
 +              name:    "PanicExtend",
 +              auxType: auxInt64,
 +              argLen:  4,
 +              call:    true,
 +              generic: true,
 +      },
 +      {
 +              name:    "ClosureCall",
 +              auxType: auxCallOff,
 +              argLen:  -1,
 +              call:    true,
 +              generic: true,
 +      },
 +      {
 +              name:    "StaticCall",
 +              auxType: auxCallOff,
 +              argLen:  -1,
 +              call:    true,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterCall",
 +              auxType: auxCallOff,
 +              argLen:  -1,
 +              call:    true,
 +              generic: true,
 +      },
 +      {
 +              name:    "TailCall",
 +              auxType: auxCallOff,
 +              argLen:  -1,
 +              call:    true,
 +              generic: true,
 +      },
 +      {
 +              name:    "ClosureLECall",
 +              auxType: auxCallOff,
 +              argLen:  -1,
 +              call:    true,
 +              generic: true,
 +      },
 +      {
 +              name:    "StaticLECall",
 +              auxType: auxCallOff,
 +              argLen:  -1,
 +              call:    true,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterLECall",
 +              auxType: auxCallOff,
 +              argLen:  -1,
 +              call:    true,
 +              generic: true,
 +      },
 +      {
 +              name:    "TailLECall",
 +              auxType: auxCallOff,
 +              argLen:  -1,
 +              call:    true,
 +              generic: true,
 +      },
 +      {
 +              name:    "SignExt8to16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "SignExt8to32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "SignExt8to64",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "SignExt16to32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "SignExt16to64",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "SignExt32to64",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ZeroExt8to16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ZeroExt8to32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ZeroExt8to64",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ZeroExt16to32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ZeroExt16to64",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ZeroExt32to64",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Trunc16to8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Trunc32to8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Trunc32to16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Trunc64to8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Trunc64to16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Trunc64to32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Cvt32to32F",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Cvt32to64F",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Cvt64to32F",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Cvt64to64F",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Cvt32Fto32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Cvt32Fto64",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Cvt64Fto32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Cvt64Fto64",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Cvt32Fto64F",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Cvt64Fto32F",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "CvtBoolToUint8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Round32F",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Round64F",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "IsNonNil",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "IsInBounds",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "IsSliceInBounds",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:     "NilCheck",
 +              argLen:   2,
 +              nilCheck: true,
 +              generic:  true,
 +      },
 +      {
 +              name:      "GetG",
 +              argLen:    1,
 +              zeroWidth: true,
 +              generic:   true,
 +      },
 +      {
 +              name:    "GetClosurePtr",
 +              argLen:  0,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetCallerPC",
 +              argLen:  0,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetCallerSP",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "PtrIndex",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "OffPtr",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "SliceMake",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "SlicePtr",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "SliceLen",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "SliceCap",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "SlicePtrUnchecked",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ComplexMake",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ComplexReal",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ComplexImag",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "StringMake",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "StringPtr",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "StringLen",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "IMake",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ITab",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "IData",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "StructMake",
 +              argLen:  -1,
 +              generic: true,
 +      },
 +      {
 +              name:    "StructSelect",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ArrayMake0",
 +              argLen:  0,
 +              generic: true,
 +      },
 +      {
 +              name:    "ArrayMake1",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ArraySelect",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "StoreReg",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "LoadReg",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:      "FwdRef",
 +              auxType:   auxSym,
 +              argLen:    0,
 +              symEffect: SymNone,
 +              generic:   true,
 +      },
 +      {
 +              name:    "Unknown",
 +              argLen:  0,
 +              generic: true,
 +      },
 +      {
 +              name:      "VarDef",
 +              auxType:   auxSym,
 +              argLen:    1,
 +              zeroWidth: true,
 +              symEffect: SymNone,
 +              generic:   true,
 +      },
 +      {
 +              name:      "VarLive",
 +              auxType:   auxSym,
 +              argLen:    1,
 +              zeroWidth: true,
 +              symEffect: SymRead,
 +              generic:   true,
 +      },
 +      {
 +              name:      "KeepAlive",
 +              argLen:    2,
 +              zeroWidth: true,
 +              generic:   true,
 +      },
 +      {
 +              name:    "InlMark",
 +              auxType: auxInt32,
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Int64Make",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Int64Hi",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Int64Lo",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:        "Add32carry",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "Add32withcarry",
 +              argLen:      3,
 +              commutative: true,
 +              generic:     true,
 +      },
++      {
++              name:        "Add32carrywithcarry",
++              argLen:      3,
++              commutative: true,
++              generic:     true,
++      },
 +      {
 +              name:    "Sub32carry",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Sub32withcarry",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:        "Add64carry",
 +              argLen:      3,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:    "Sub64borrow",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Signmask",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Zeromask",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Slicemask",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "SpectreIndex",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SpectreSliceIndex",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "Cvt32Uto32F",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Cvt32Uto64F",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Cvt32Fto32U",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Cvt64Fto32U",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Cvt64Uto32F",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Cvt64Uto64F",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Cvt32Fto64U",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Cvt64Fto64U",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:      "Select0",
 +              argLen:    1,
 +              zeroWidth: true,
 +              generic:   true,
 +      },
 +      {
 +              name:      "Select1",
 +              argLen:    1,
 +              zeroWidth: true,
 +              generic:   true,
 +      },
 +      {
 +              name:    "MakeTuple",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SelectN",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "SelectNAddr",
 +              auxType: auxInt64,
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "MakeResult",
 +              argLen:  -1,
 +              generic: true,
 +      },
 +      {
 +              name:    "AtomicLoad8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AtomicLoad32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AtomicLoad64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AtomicLoadPtr",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AtomicLoadAcq32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AtomicLoadAcq64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:           "AtomicStore8",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicStore32",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicStore64",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicStorePtrNoWB",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicStoreRel32",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicStoreRel64",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicExchange8",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicExchange32",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicExchange64",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicAdd32",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicAdd64",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicCompareAndSwap32",
 +              argLen:         4,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicCompareAndSwap64",
 +              argLen:         4,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicCompareAndSwapRel32",
 +              argLen:         4,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicAnd8",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicOr8",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicAnd32",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicOr32",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicAnd64value",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicAnd32value",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicAnd8value",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicOr64value",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicOr32value",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicOr8value",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicStore8Variant",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicStore32Variant",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicStore64Variant",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicAdd32Variant",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicAdd64Variant",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicExchange8Variant",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicExchange32Variant",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicExchange64Variant",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicCompareAndSwap32Variant",
 +              argLen:         4,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicCompareAndSwap64Variant",
 +              argLen:         4,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicAnd64valueVariant",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicOr64valueVariant",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicAnd32valueVariant",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicOr32valueVariant",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicAnd8valueVariant",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "AtomicOr8valueVariant",
 +              argLen:         3,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "PubBarrier",
 +              argLen:         1,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:      "Clobber",
 +              auxType:   auxSymOff,
 +              argLen:    0,
 +              symEffect: SymNone,
 +              generic:   true,
 +      },
 +      {
 +              name:    "ClobberReg",
 +              argLen:  0,
 +              generic: true,
 +      },
 +      {
 +              name:           "PrefetchCache",
 +              argLen:         2,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:           "PrefetchCacheStreamed",
 +              argLen:         2,
 +              hasSideEffects: true,
 +              generic:        true,
 +      },
 +      {
 +              name:    "ZeroSIMD",
 +              argLen:  0,
 +              generic: true,
 +      },
 +      {
 +              name:    "Cvt16toMask8x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Cvt32toMask8x32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Cvt64toMask8x64",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Cvt8toMask16x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Cvt16toMask16x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Cvt32toMask16x32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Cvt8toMask32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Cvt8toMask32x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Cvt16toMask32x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Cvt8toMask64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Cvt8toMask64x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Cvt8toMask64x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "CvtMask8x16to16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "CvtMask8x32to32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "CvtMask8x64to64",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "CvtMask16x8to8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "CvtMask16x16to16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "CvtMask16x32to32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "CvtMask32x4to8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "CvtMask32x8to8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "CvtMask32x16to16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "CvtMask64x2to8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "CvtMask64x4to8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "CvtMask64x8to8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "IsZeroVec",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "AESDecryptLastRoundUint8x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AESDecryptLastRoundUint8x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AESDecryptRoundUint8x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AESDecryptRoundUint8x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AESEncryptLastRoundUint8x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AESEncryptLastRoundUint8x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AESEncryptRoundUint8x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AESEncryptRoundUint8x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AESInvMixColumnsUint32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "AbsInt8x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "AbsInt8x32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "AbsInt8x64",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "AbsInt16x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "AbsInt16x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "AbsInt16x32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "AbsInt32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "AbsInt32x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "AbsInt32x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "AbsInt64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "AbsInt64x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "AbsInt64x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "AddDotProductQuadrupleInt32x4",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "AddDotProductQuadrupleInt32x8",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "AddDotProductQuadrupleInt32x16",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "AddDotProductQuadrupleSaturatedInt32x4",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "AddDotProductQuadrupleSaturatedInt32x8",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "AddDotProductQuadrupleSaturatedInt32x16",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:        "AddFloat32x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddFloat32x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddFloat32x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddFloat64x2",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddFloat64x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddFloat64x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddInt8x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddInt8x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddInt8x64",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddInt16x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddInt16x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddInt16x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddInt32x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddInt32x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddInt32x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddInt64x2",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddInt64x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddInt64x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:    "AddPairsFloat32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AddPairsFloat32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AddPairsFloat64x2",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AddPairsFloat64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AddPairsInt16x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AddPairsInt16x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AddPairsInt32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AddPairsInt32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AddPairsSaturatedInt16x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AddPairsSaturatedInt16x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AddPairsUint16x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AddPairsUint16x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AddPairsUint32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AddPairsUint32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:        "AddSaturatedInt8x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddSaturatedInt8x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddSaturatedInt8x64",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddSaturatedInt16x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddSaturatedInt16x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddSaturatedInt16x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddSaturatedUint8x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddSaturatedUint8x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddSaturatedUint8x64",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddSaturatedUint16x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddSaturatedUint16x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddSaturatedUint16x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:    "AddSubFloat32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AddSubFloat32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AddSubFloat64x2",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AddSubFloat64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:        "AddUint8x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddUint8x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddUint8x64",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddUint16x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddUint16x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddUint16x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddUint32x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddUint32x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddUint32x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddUint64x2",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddUint64x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AddUint64x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AndInt8x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AndInt8x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AndInt8x64",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AndInt16x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AndInt16x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AndInt16x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AndInt32x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AndInt32x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AndInt32x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AndInt64x2",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AndInt64x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AndInt64x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:    "AndNotInt8x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AndNotInt8x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AndNotInt8x64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AndNotInt16x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AndNotInt16x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AndNotInt16x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AndNotInt32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AndNotInt32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AndNotInt32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AndNotInt64x2",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AndNotInt64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AndNotInt64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AndNotUint8x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AndNotUint8x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AndNotUint8x64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AndNotUint16x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AndNotUint16x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AndNotUint16x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AndNotUint32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AndNotUint32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AndNotUint32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AndNotUint64x2",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AndNotUint64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "AndNotUint64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:        "AndUint8x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AndUint8x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AndUint8x64",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AndUint16x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AndUint16x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AndUint16x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AndUint32x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AndUint32x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AndUint32x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AndUint64x2",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AndUint64x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AndUint64x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AverageUint8x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AverageUint8x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AverageUint8x64",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AverageUint16x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AverageUint16x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "AverageUint16x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:    "Broadcast128Float32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Broadcast128Float64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Broadcast128Int8x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Broadcast128Int16x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Broadcast128Int32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Broadcast128Int64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Broadcast128Uint8x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Broadcast128Uint16x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Broadcast128Uint32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Broadcast128Uint64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Broadcast256Float32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Broadcast256Float64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Broadcast256Int8x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Broadcast256Int16x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Broadcast256Int32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Broadcast256Int64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Broadcast256Uint8x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Broadcast256Uint16x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Broadcast256Uint32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Broadcast256Uint64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Broadcast512Float32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Broadcast512Float64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Broadcast512Int8x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Broadcast512Int16x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Broadcast512Int32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Broadcast512Int64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Broadcast512Uint8x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Broadcast512Uint16x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Broadcast512Uint32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "Broadcast512Uint64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "CeilFloat32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "CeilFloat32x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "CeilFloat64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "CeilFloat64x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "CompressFloat32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CompressFloat32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CompressFloat32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CompressFloat64x2",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CompressFloat64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CompressFloat64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CompressInt8x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CompressInt8x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CompressInt8x64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CompressInt16x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CompressInt16x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CompressInt16x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CompressInt32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CompressInt32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CompressInt32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CompressInt64x2",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CompressInt64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CompressInt64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CompressUint8x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CompressUint8x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CompressUint8x64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CompressUint16x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CompressUint16x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CompressUint16x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CompressUint32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CompressUint32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CompressUint32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CompressUint64x2",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CompressUint64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CompressUint64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt8Int16x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt8Int16x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt8Int16x32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt8Int32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt8Int32x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt8Int32x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt8Int64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt8Int64x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt8Int64x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt8SaturatedInt16x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt8SaturatedInt16x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt8SaturatedInt16x32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt8SaturatedInt32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt8SaturatedInt32x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt8SaturatedInt32x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt8SaturatedInt64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt8SaturatedInt64x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt8SaturatedInt64x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt16Int8x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt16Int8x32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt16Int32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt16Int32x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt16Int32x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt16Int64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt16Int64x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt16Int64x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt16SaturatedInt32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt16SaturatedInt32x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt16SaturatedInt32x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt16SaturatedInt64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt16SaturatedInt64x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt16SaturatedInt64x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt16SaturatedPackedInt32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt16SaturatedPackedInt32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt16SaturatedPackedInt32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt16x8Int8x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt32Float32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt32Float32x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt32Float32x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt32Int8x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt32Int16x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt32Int16x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt32Int64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt32Int64x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt32Int64x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt32SaturatedInt64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt32SaturatedInt64x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt32SaturatedInt64x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt32x4Int8x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt32x4Int16x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt32x8Int8x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt64Int16x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt64Int32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt64Int32x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt64x2Int8x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt64x2Int16x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt64x2Int32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt64x4Int8x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToInt64x8Int8x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint8SaturatedUint16x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint8SaturatedUint16x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint8SaturatedUint16x32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint8SaturatedUint32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint8SaturatedUint32x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint8SaturatedUint32x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint8SaturatedUint64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint8SaturatedUint64x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint8SaturatedUint64x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint8Uint16x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint8Uint16x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint8Uint16x32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint8Uint32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint8Uint32x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint8Uint32x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint8Uint64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint8Uint64x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint8Uint64x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint16SaturatedPackedUint32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint16SaturatedPackedUint32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint16SaturatedPackedUint32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint16SaturatedUint32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint16SaturatedUint32x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint16SaturatedUint32x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint16SaturatedUint64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint16SaturatedUint64x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint16SaturatedUint64x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint16Uint8x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint16Uint8x32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint16Uint32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint16Uint32x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint16Uint32x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint16Uint64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint16Uint64x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint16Uint64x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint16x8Uint8x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint32Float32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint32Float32x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint32Float32x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint32SaturatedUint64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint32SaturatedUint64x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint32SaturatedUint64x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint32Uint8x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint32Uint16x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint32Uint16x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint32Uint64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint32Uint64x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint32Uint64x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint32x4Uint8x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint32x4Uint16x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint32x8Uint8x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint64Uint16x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint64Uint32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint64Uint32x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint64x2Uint8x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint64x2Uint16x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint64x2Uint32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint64x4Int16x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint64x4Uint8x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint64x4Uint16x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ConvertToUint64x8Uint8x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "CopySignInt8x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CopySignInt8x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CopySignInt16x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CopySignInt16x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CopySignInt32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "CopySignInt32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "DivFloat32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "DivFloat32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "DivFloat32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "DivFloat64x2",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "DivFloat64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "DivFloat64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "DotProductPairsInt16x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "DotProductPairsInt16x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "DotProductPairsInt16x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "DotProductPairsSaturatedUint8x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "DotProductPairsSaturatedUint8x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "DotProductPairsSaturatedUint8x64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:        "EqualFloat32x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqualFloat32x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqualFloat32x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqualFloat64x2",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqualFloat64x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqualFloat64x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqualInt8x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqualInt8x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqualInt8x64",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqualInt16x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqualInt16x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqualInt16x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqualInt32x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqualInt32x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqualInt32x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqualInt64x2",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqualInt64x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqualInt64x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqualUint8x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqualUint8x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqualUint8x64",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqualUint16x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqualUint16x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqualUint16x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqualUint32x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqualUint32x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqualUint32x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqualUint64x2",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqualUint64x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "EqualUint64x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:    "ExpandFloat32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ExpandFloat32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ExpandFloat32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ExpandFloat64x2",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ExpandFloat64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ExpandFloat64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ExpandInt8x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ExpandInt8x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ExpandInt8x64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ExpandInt16x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ExpandInt16x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ExpandInt16x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ExpandInt32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ExpandInt32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ExpandInt32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ExpandInt64x2",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ExpandInt64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ExpandInt64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ExpandUint8x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ExpandUint8x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ExpandUint8x64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ExpandUint16x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ExpandUint16x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ExpandUint16x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ExpandUint32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ExpandUint32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ExpandUint32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ExpandUint64x2",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ExpandUint64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ExpandUint64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "FloorFloat32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "FloorFloat32x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "FloorFloat64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "FloorFloat64x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GaloisFieldMulUint8x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GaloisFieldMulUint8x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GaloisFieldMulUint8x64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetHiFloat32x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetHiFloat32x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetHiFloat64x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetHiFloat64x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetHiInt8x32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetHiInt8x64",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetHiInt16x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetHiInt16x32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetHiInt32x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetHiInt32x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetHiInt64x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetHiInt64x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetHiUint8x32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetHiUint8x64",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetHiUint16x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetHiUint16x32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetHiUint32x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetHiUint32x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetHiUint64x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetHiUint64x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetLoFloat32x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetLoFloat32x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetLoFloat64x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetLoFloat64x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetLoInt8x32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetLoInt8x64",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetLoInt16x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetLoInt16x32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetLoInt32x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetLoInt32x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetLoInt64x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetLoInt64x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetLoUint8x32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetLoUint8x64",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetLoUint16x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetLoUint16x32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetLoUint32x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetLoUint32x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetLoUint64x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GetLoUint64x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterEqualFloat32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterEqualFloat32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterEqualFloat32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterEqualFloat64x2",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterEqualFloat64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterEqualFloat64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterEqualInt8x64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterEqualInt16x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterEqualInt32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterEqualInt64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterEqualUint8x64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterEqualUint16x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterEqualUint32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterEqualUint64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterFloat32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterFloat32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterFloat32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterFloat64x2",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterFloat64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterFloat64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterInt8x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterInt8x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterInt8x64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterInt16x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterInt16x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterInt16x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterInt32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterInt32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterInt32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterInt64x2",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterInt64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterInt64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterUint8x64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterUint16x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterUint32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "GreaterUint64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveHiGroupedInt16x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveHiGroupedInt16x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveHiGroupedInt32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveHiGroupedInt32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveHiGroupedInt64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveHiGroupedInt64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveHiGroupedUint16x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveHiGroupedUint16x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveHiGroupedUint32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveHiGroupedUint32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveHiGroupedUint64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveHiGroupedUint64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveHiInt16x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveHiInt32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveHiInt64x2",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveHiUint16x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveHiUint32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveHiUint64x2",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveLoGroupedInt16x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveLoGroupedInt16x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveLoGroupedInt32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveLoGroupedInt32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveLoGroupedInt64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveLoGroupedInt64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveLoGroupedUint16x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveLoGroupedUint16x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveLoGroupedUint32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveLoGroupedUint32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveLoGroupedUint64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveLoGroupedUint64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveLoInt16x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveLoInt32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveLoInt64x2",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveLoUint16x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveLoUint32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "InterleaveLoUint64x2",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:        "IsNanFloat32x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "IsNanFloat32x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "IsNanFloat32x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "IsNanFloat64x2",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "IsNanFloat64x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "IsNanFloat64x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:    "LeadingZerosInt32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "LeadingZerosInt32x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "LeadingZerosInt32x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "LeadingZerosInt64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "LeadingZerosInt64x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "LeadingZerosInt64x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "LeadingZerosUint32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "LeadingZerosUint32x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "LeadingZerosUint32x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "LeadingZerosUint64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "LeadingZerosUint64x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "LeadingZerosUint64x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "LessEqualFloat32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "LessEqualFloat32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "LessEqualFloat32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "LessEqualFloat64x2",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "LessEqualFloat64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "LessEqualFloat64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "LessEqualInt8x64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "LessEqualInt16x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "LessEqualInt32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "LessEqualInt64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "LessEqualUint8x64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "LessEqualUint16x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "LessEqualUint32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "LessEqualUint64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "LessFloat32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "LessFloat32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "LessFloat32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "LessFloat64x2",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "LessFloat64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "LessFloat64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "LessInt8x64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "LessInt16x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "LessInt32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "LessInt64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "LessUint8x64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "LessUint16x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "LessUint32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "LessUint64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:        "MaxFloat32x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MaxFloat32x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MaxFloat32x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MaxFloat64x2",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MaxFloat64x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MaxFloat64x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MaxInt8x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MaxInt8x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MaxInt8x64",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MaxInt16x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MaxInt16x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MaxInt16x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MaxInt32x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MaxInt32x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MaxInt32x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MaxInt64x2",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MaxInt64x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MaxInt64x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MaxUint8x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MaxUint8x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MaxUint8x64",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MaxUint16x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MaxUint16x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MaxUint16x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MaxUint32x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MaxUint32x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MaxUint32x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MaxUint64x2",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MaxUint64x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MaxUint64x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MinFloat32x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MinFloat32x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MinFloat32x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MinFloat64x2",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MinFloat64x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MinFloat64x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MinInt8x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MinInt8x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MinInt8x64",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MinInt16x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MinInt16x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MinInt16x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MinInt32x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MinInt32x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MinInt32x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MinInt64x2",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MinInt64x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MinInt64x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MinUint8x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MinUint8x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MinUint8x64",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MinUint16x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MinUint16x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MinUint16x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MinUint32x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MinUint32x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MinUint32x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MinUint64x2",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MinUint64x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MinUint64x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:    "MulAddFloat32x4",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "MulAddFloat32x8",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "MulAddFloat32x16",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "MulAddFloat64x2",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "MulAddFloat64x4",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "MulAddFloat64x8",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "MulAddSubFloat32x4",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "MulAddSubFloat32x8",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "MulAddSubFloat32x16",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "MulAddSubFloat64x2",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "MulAddSubFloat64x4",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "MulAddSubFloat64x8",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:        "MulEvenWidenInt32x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulEvenWidenInt32x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulEvenWidenUint32x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulEvenWidenUint32x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulFloat32x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulFloat32x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulFloat32x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulFloat64x2",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulFloat64x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulFloat64x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulHighInt16x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulHighInt16x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulHighInt16x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulHighUint16x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulHighUint16x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulHighUint16x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulInt16x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulInt16x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulInt16x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulInt32x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulInt32x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulInt32x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulInt64x2",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulInt64x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulInt64x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:    "MulSubAddFloat32x4",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "MulSubAddFloat32x8",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "MulSubAddFloat32x16",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "MulSubAddFloat64x2",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "MulSubAddFloat64x4",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "MulSubAddFloat64x8",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:        "MulUint16x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulUint16x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulUint16x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulUint32x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulUint32x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulUint32x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulUint64x2",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulUint64x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "MulUint64x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "NotEqualFloat32x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "NotEqualFloat32x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "NotEqualFloat32x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "NotEqualFloat64x2",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "NotEqualFloat64x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "NotEqualFloat64x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "NotEqualInt8x64",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "NotEqualInt16x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "NotEqualInt32x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "NotEqualInt64x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "NotEqualUint8x64",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "NotEqualUint16x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "NotEqualUint32x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "NotEqualUint64x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:    "OnesCountInt8x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "OnesCountInt8x32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "OnesCountInt8x64",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "OnesCountInt16x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "OnesCountInt16x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "OnesCountInt16x32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "OnesCountInt32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "OnesCountInt32x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "OnesCountInt32x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "OnesCountInt64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "OnesCountInt64x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "OnesCountInt64x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "OnesCountUint8x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "OnesCountUint8x32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "OnesCountUint8x64",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "OnesCountUint16x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "OnesCountUint16x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "OnesCountUint16x32",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "OnesCountUint32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "OnesCountUint32x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "OnesCountUint32x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "OnesCountUint64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "OnesCountUint64x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "OnesCountUint64x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:        "OrInt8x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "OrInt8x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "OrInt8x64",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "OrInt16x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "OrInt16x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "OrInt16x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "OrInt32x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "OrInt32x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "OrInt32x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "OrInt64x2",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "OrInt64x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "OrInt64x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "OrUint8x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "OrUint8x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "OrUint8x64",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "OrUint16x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "OrUint16x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "OrUint16x32",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "OrUint32x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "OrUint32x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "OrUint32x16",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "OrUint64x2",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "OrUint64x4",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:        "OrUint64x8",
 +              argLen:      2,
 +              commutative: true,
 +              generic:     true,
 +      },
 +      {
 +              name:    "Permute2Float32x4",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Permute2Float32x8",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Permute2Float32x16",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Permute2Float64x2",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Permute2Float64x4",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Permute2Float64x8",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Permute2Int8x16",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Permute2Int8x32",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Permute2Int8x64",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Permute2Int16x8",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Permute2Int16x16",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Permute2Int16x32",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Permute2Int32x4",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Permute2Int32x8",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Permute2Int32x16",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Permute2Int64x2",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Permute2Int64x4",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Permute2Int64x8",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Permute2Uint8x16",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Permute2Uint8x32",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Permute2Uint8x64",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Permute2Uint16x8",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Permute2Uint16x16",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Permute2Uint16x32",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Permute2Uint32x4",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Permute2Uint32x8",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Permute2Uint32x16",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Permute2Uint64x2",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Permute2Uint64x4",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "Permute2Uint64x8",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "PermuteFloat32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "PermuteFloat32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "PermuteFloat64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "PermuteFloat64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "PermuteGroupedInt8x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "PermuteGroupedInt8x64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "PermuteGroupedUint8x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "PermuteGroupedUint8x64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "PermuteInt8x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "PermuteInt8x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "PermuteInt8x64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "PermuteInt16x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "PermuteInt16x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "PermuteInt16x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "PermuteInt32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "PermuteInt32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "PermuteInt64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "PermuteInt64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "PermuteUint8x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "PermuteUint8x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "PermuteUint8x64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "PermuteUint16x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "PermuteUint16x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "PermuteUint16x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "PermuteUint32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "PermuteUint32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "PermuteUint64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "PermuteUint64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ReciprocalFloat32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ReciprocalFloat32x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ReciprocalFloat32x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ReciprocalFloat64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ReciprocalFloat64x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ReciprocalFloat64x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ReciprocalSqrtFloat32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ReciprocalSqrtFloat32x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ReciprocalSqrtFloat32x16",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ReciprocalSqrtFloat64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ReciprocalSqrtFloat64x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "ReciprocalSqrtFloat64x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "RotateLeftInt32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "RotateLeftInt32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "RotateLeftInt32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "RotateLeftInt64x2",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "RotateLeftInt64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "RotateLeftInt64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "RotateLeftUint32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "RotateLeftUint32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "RotateLeftUint32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "RotateLeftUint64x2",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "RotateLeftUint64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "RotateLeftUint64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "RotateRightInt32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "RotateRightInt32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "RotateRightInt32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "RotateRightInt64x2",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "RotateRightInt64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "RotateRightInt64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "RotateRightUint32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "RotateRightUint32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "RotateRightUint32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "RotateRightUint64x2",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "RotateRightUint64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "RotateRightUint64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "RoundToEvenFloat32x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "RoundToEvenFloat32x8",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "RoundToEvenFloat64x2",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "RoundToEvenFloat64x4",
 +              argLen:  1,
 +              generic: true,
 +      },
 +      {
 +              name:    "SHA1Msg1Int32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SHA1Msg1Uint32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SHA1Msg2Int32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SHA1Msg2Uint32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SHA1NextEInt32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SHA1NextEUint32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SHA256Msg1Int32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SHA256Msg1Uint32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SHA256Msg2Int32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SHA256Msg2Uint32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SHA256Rounds2Int32x4",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "SHA256Rounds2Uint32x4",
 +              argLen:  3,
 +              generic: true,
 +      },
 +      {
 +              name:    "ScaleFloat32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ScaleFloat32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ScaleFloat32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ScaleFloat64x2",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ScaleFloat64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ScaleFloat64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetHiFloat32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetHiFloat32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetHiFloat64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetHiFloat64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetHiInt8x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetHiInt8x64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetHiInt16x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetHiInt16x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetHiInt32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetHiInt32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetHiInt64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetHiInt64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetHiUint8x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetHiUint8x64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetHiUint16x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetHiUint16x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetHiUint32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetHiUint32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetHiUint64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetHiUint64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetLoFloat32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetLoFloat32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetLoFloat64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetLoFloat64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetLoInt8x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetLoInt8x64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetLoInt16x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetLoInt16x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetLoInt32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetLoInt32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetLoInt64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetLoInt64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetLoUint8x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetLoUint8x64",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetLoUint16x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetLoUint16x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetLoUint32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetLoUint32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetLoUint64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "SetLoUint64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllLeftInt16x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllLeftInt16x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllLeftInt16x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllLeftInt32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllLeftInt32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllLeftInt32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllLeftInt64x2",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllLeftInt64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllLeftInt64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllLeftUint16x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllLeftUint16x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllLeftUint16x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllLeftUint32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllLeftUint32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllLeftUint32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllLeftUint64x2",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllLeftUint64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllLeftUint64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllRightInt16x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllRightInt16x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllRightInt16x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllRightInt32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllRightInt32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllRightInt32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllRightInt64x2",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllRightInt64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllRightInt64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllRightUint16x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllRightUint16x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllRightUint16x32",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllRightUint32x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllRightUint32x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllRightUint32x16",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllRightUint64x2",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllRightUint64x4",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftAllRightUint64x8",
 +              argLen:  2,
 +              generic: true,
 +      },
 +      {
 +              name:    "ShiftLeftConcatInt16x8",
 +              argLen:  3,
 +              generic: true,
 +      },
        {
 -              name:        "Hmul32u",
 -              argLen:      2,
 -              commutative: true,
 -              generic:     true,
 +              name:    "ShiftLeftConcatInt16x16",
 +              argLen:  3,
 +              generic: true,
        },
        {
 -              name:        "Hmul64",
 -              argLen:      2,
 -              commutative: true,
 -              generic:     true,
 +              name:    "ShiftLeftConcatInt16x32",
 +              argLen:  3,
 +              generic: true,
        },
        {
 -              name:        "Hmul64u",
 -              argLen:      2,
 -              commutative: true,
 -              generic:     true,
 +              name:    "ShiftLeftConcatInt32x4",
 +              argLen:  3,
 +              generic: true,
        },
        {
 -              name:        "Mul32uhilo",
 -              argLen:      2,
 -              commutative: true,
 -              generic:     true,
 +              name:    "ShiftLeftConcatInt32x8",
 +              argLen:  3,
 +              generic: true,
        },
        {
 -              name:        "Mul64uhilo",
 -              argLen:      2,
 -              commutative: true,
 -              generic:     true,
 +              name:    "ShiftLeftConcatInt32x16",
 +              argLen:  3,
 +              generic: true,
        },
        {
 -              name:        "Mul32uover",
 -              argLen:      2,
 -              commutative: true,
 -              generic:     true,
 +              name:    "ShiftLeftConcatInt64x2",
 +              argLen:  3,
 +              generic: true,
        },
        {
 -              name:        "Mul64uover",
 -              argLen:      2,
 -              commutative: true,
 -              generic:     true,
 +              name:    "ShiftLeftConcatInt64x4",
 +              argLen:  3,
 +              generic: true,
        },
        {
 -              name:    "Avg32u",
 -              argLen:  2,
 +              name:    "ShiftLeftConcatInt64x8",
 +              argLen:  3,
                generic: true,
        },
        {
index ef0bddc70a0383e1e9abfe099a1793ed722c9bcf,5982ad611a8aa7fd9c2daa0db420129cfca0250e..bf0e79de0bfe8c845f5af2332962c32ae952652d
@@@ -2963,18 -694,10 +2964,16 @@@ func rewriteValueAMD64(v *Value) bool 
                return rewriteValueAMD64_OpCtz8(v)
        case OpCtz8NonZero:
                return rewriteValueAMD64_OpCtz8NonZero(v)
 +      case OpCvt16toMask16x16:
 +              return rewriteValueAMD64_OpCvt16toMask16x16(v)
 +      case OpCvt16toMask32x16:
 +              return rewriteValueAMD64_OpCvt16toMask32x16(v)
 +      case OpCvt16toMask8x16:
 +              return rewriteValueAMD64_OpCvt16toMask8x16(v)
        case OpCvt32Fto32:
-               v.Op = OpAMD64CVTTSS2SL
-               return true
+               return rewriteValueAMD64_OpCvt32Fto32(v)
        case OpCvt32Fto64:
-               v.Op = OpAMD64CVTTSS2SQ
-               return true
+               return rewriteValueAMD64_OpCvt32Fto64(v)
        case OpCvt32Fto64F:
                v.Op = OpAMD64CVTSS2SD
                return true
        case OpCvt32to64F:
                v.Op = OpAMD64CVTSL2SD
                return true
 +      case OpCvt32toMask16x32:
 +              return rewriteValueAMD64_OpCvt32toMask16x32(v)
 +      case OpCvt32toMask8x32:
 +              return rewriteValueAMD64_OpCvt32toMask8x32(v)
        case OpCvt64Fto32:
-               v.Op = OpAMD64CVTTSD2SL
-               return true
+               return rewriteValueAMD64_OpCvt64Fto32(v)
        case OpCvt64Fto32F:
                v.Op = OpAMD64CVTSD2SS
                return true
@@@ -29449,35376 -23749,63 +29446,35667 @@@ func rewriteValueAMD64_OpAMD64VFMADD213
        v_2 := v.Args[2]
        v_1 := v.Args[1]
        v_0 := v.Args[0]
 -      // match: (XORQmodify [off1] {sym} (ADDQconst [off2] base) val mem)
 -      // cond: is32Bit(int64(off1)+int64(off2))
 -      // result: (XORQmodify [off1+off2] {sym} base val mem)
 +      // match: (VFMADD213PS512 x y l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VFMADD213PS512load {sym} [off] x y ptr mem)
        for {
 -              off1 := auxIntToInt32(v.AuxInt)
 -              sym := auxToSym(v.Aux)
 -              if v_0.Op != OpAMD64ADDQconst {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
                        break
                }
 -              off2 := auxIntToInt32(v_0.AuxInt)
 -              base := v_0.Args[0]
 -              val := v_1
 -              mem := v_2
 -              if !(is32Bit(int64(off1) + int64(off2))) {
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
                        break
                }
 -              v.reset(OpAMD64XORQmodify)
 -              v.AuxInt = int32ToAuxInt(off1 + off2)
 +              v.reset(OpAMD64VFMADD213PS512load)
 +              v.AuxInt = int32ToAuxInt(off)
                v.Aux = symToAux(sym)
 -              v.AddArg3(base, val, mem)
 +              v.AddArg4(x, y, ptr, mem)
                return true
        }
 -      // match: (XORQmodify [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
 -      // cond: is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)
 -      // result: (XORQmodify [off1+off2] {mergeSym(sym1,sym2)} base val mem)
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VFMADD213PSMasked128(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VFMADD213PSMasked128 x y l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VFMADD213PSMasked128load {sym} [off] x y ptr mask mem)
        for {
 -              off1 := auxIntToInt32(v.AuxInt)
 -              sym1 := auxToSym(v.Aux)
 -              if v_0.Op != OpAMD64LEAQ {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload128 {
                        break
                }
 -              off2 := auxIntToInt32(v_0.AuxInt)
 -              sym2 := auxToSym(v_0.Aux)
 -              base := v_0.Args[0]
 -              val := v_1
 -              mem := v_2
 -              if !(is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)) {
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
                        break
                }
 -              v.reset(OpAMD64XORQmodify)
 -              v.AuxInt = int32ToAuxInt(off1 + off2)
 -              v.Aux = symToAux(mergeSym(sym1, sym2))
 -              v.AddArg3(base, val, mem)
 +              v.reset(OpAMD64VFMADD213PSMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VFMADD213PSMasked256(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VFMADD213PSMasked256 x y l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VFMADD213PSMasked256load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VFMADD213PSMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VFMADD213PSMasked512(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VFMADD213PSMasked512 x y l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VFMADD213PSMasked512load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VFMADD213PSMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VFMADDSUB213PD128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VFMADDSUB213PD128 x y l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VFMADDSUB213PD128load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VFMADDSUB213PD128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VFMADDSUB213PD256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VFMADDSUB213PD256 x y l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VFMADDSUB213PD256load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VFMADDSUB213PD256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VFMADDSUB213PD512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VFMADDSUB213PD512 x y l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VFMADDSUB213PD512load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VFMADDSUB213PD512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VFMADDSUB213PDMasked128(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VFMADDSUB213PDMasked128 x y l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VFMADDSUB213PDMasked128load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VFMADDSUB213PDMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VFMADDSUB213PDMasked256(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VFMADDSUB213PDMasked256 x y l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VFMADDSUB213PDMasked256load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VFMADDSUB213PDMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VFMADDSUB213PDMasked512(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VFMADDSUB213PDMasked512 x y l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VFMADDSUB213PDMasked512load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VFMADDSUB213PDMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VFMADDSUB213PS128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VFMADDSUB213PS128 x y l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VFMADDSUB213PS128load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VFMADDSUB213PS128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VFMADDSUB213PS256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VFMADDSUB213PS256 x y l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VFMADDSUB213PS256load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VFMADDSUB213PS256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VFMADDSUB213PS512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VFMADDSUB213PS512 x y l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VFMADDSUB213PS512load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VFMADDSUB213PS512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VFMADDSUB213PSMasked128(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VFMADDSUB213PSMasked128 x y l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VFMADDSUB213PSMasked128load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VFMADDSUB213PSMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VFMADDSUB213PSMasked256(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VFMADDSUB213PSMasked256 x y l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VFMADDSUB213PSMasked256load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VFMADDSUB213PSMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VFMADDSUB213PSMasked512(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VFMADDSUB213PSMasked512 x y l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VFMADDSUB213PSMasked512load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VFMADDSUB213PSMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VFMSUBADD213PD128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VFMSUBADD213PD128 x y l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VFMSUBADD213PD128load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VFMSUBADD213PD128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VFMSUBADD213PD256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VFMSUBADD213PD256 x y l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VFMSUBADD213PD256load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VFMSUBADD213PD256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VFMSUBADD213PD512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VFMSUBADD213PD512 x y l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VFMSUBADD213PD512load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VFMSUBADD213PD512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VFMSUBADD213PDMasked128(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VFMSUBADD213PDMasked128 x y l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VFMSUBADD213PDMasked128load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VFMSUBADD213PDMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VFMSUBADD213PDMasked256(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VFMSUBADD213PDMasked256 x y l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VFMSUBADD213PDMasked256load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VFMSUBADD213PDMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VFMSUBADD213PDMasked512(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VFMSUBADD213PDMasked512 x y l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VFMSUBADD213PDMasked512load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VFMSUBADD213PDMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VFMSUBADD213PS128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VFMSUBADD213PS128 x y l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VFMSUBADD213PS128load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VFMSUBADD213PS128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VFMSUBADD213PS256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VFMSUBADD213PS256 x y l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VFMSUBADD213PS256load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VFMSUBADD213PS256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VFMSUBADD213PS512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VFMSUBADD213PS512 x y l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VFMSUBADD213PS512load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VFMSUBADD213PS512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VFMSUBADD213PSMasked128(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VFMSUBADD213PSMasked128 x y l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VFMSUBADD213PSMasked128load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VFMSUBADD213PSMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VFMSUBADD213PSMasked256(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VFMSUBADD213PSMasked256 x y l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VFMSUBADD213PSMasked256load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VFMSUBADD213PSMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VFMSUBADD213PSMasked512(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VFMSUBADD213PSMasked512 x y l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VFMSUBADD213PSMasked512load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VFMSUBADD213PSMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VGF2P8AFFINEINVQB128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VGF2P8AFFINEINVQB128 [c] x l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VGF2P8AFFINEINVQB128load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VGF2P8AFFINEINVQB128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VGF2P8AFFINEINVQB256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VGF2P8AFFINEINVQB256 [c] x l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VGF2P8AFFINEINVQB256load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VGF2P8AFFINEINVQB256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VGF2P8AFFINEINVQB512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VGF2P8AFFINEINVQB512 [c] x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VGF2P8AFFINEINVQB512load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VGF2P8AFFINEINVQB512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VGF2P8AFFINEINVQBMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VGF2P8AFFINEINVQBMasked128 [c] x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VGF2P8AFFINEINVQBMasked128load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VGF2P8AFFINEINVQBMasked128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VGF2P8AFFINEINVQBMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VGF2P8AFFINEINVQBMasked256 [c] x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VGF2P8AFFINEINVQBMasked256load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VGF2P8AFFINEINVQBMasked256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VGF2P8AFFINEINVQBMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VGF2P8AFFINEINVQBMasked512 [c] x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VGF2P8AFFINEINVQBMasked512load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VGF2P8AFFINEINVQBMasked512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VGF2P8AFFINEQB128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VGF2P8AFFINEQB128 [c] x l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VGF2P8AFFINEQB128load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VGF2P8AFFINEQB128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VGF2P8AFFINEQB256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VGF2P8AFFINEQB256 [c] x l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VGF2P8AFFINEQB256load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VGF2P8AFFINEQB256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VGF2P8AFFINEQB512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VGF2P8AFFINEQB512 [c] x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VGF2P8AFFINEQB512load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VGF2P8AFFINEQB512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VGF2P8AFFINEQBMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VGF2P8AFFINEQBMasked128 [c] x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VGF2P8AFFINEQBMasked128load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VGF2P8AFFINEQBMasked128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VGF2P8AFFINEQBMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VGF2P8AFFINEQBMasked256 [c] x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VGF2P8AFFINEQBMasked256load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VGF2P8AFFINEQBMasked256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VGF2P8AFFINEQBMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VGF2P8AFFINEQBMasked512 [c] x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VGF2P8AFFINEQBMasked512load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VGF2P8AFFINEQBMasked512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMAXPD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMAXPD512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VMAXPD512load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMAXPD512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMAXPDMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMAXPDMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VMAXPDMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMAXPDMasked128load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMAXPDMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMAXPDMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VMAXPDMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMAXPDMasked256load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMAXPDMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMAXPDMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VMAXPDMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMAXPDMasked512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMAXPS512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMAXPS512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VMAXPS512load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMAXPS512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMAXPSMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMAXPSMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VMAXPSMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMAXPSMasked128load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMAXPSMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMAXPSMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VMAXPSMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMAXPSMasked256load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMAXPSMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMAXPSMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VMAXPSMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMAXPSMasked512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMINPD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMINPD512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VMINPD512load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMINPD512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMINPDMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMINPDMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VMINPDMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMINPDMasked128load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMINPDMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMINPDMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VMINPDMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMINPDMasked256load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMINPDMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMINPDMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VMINPDMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMINPDMasked512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMINPS512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMINPS512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VMINPS512load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMINPS512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMINPSMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMINPSMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VMINPSMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMINPSMasked128load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMINPSMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMINPSMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VMINPSMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMINPSMasked256load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMINPSMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMINPSMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VMINPSMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMINPSMasked512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMOVD(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (VMOVD x:(MOVLload [off] {sym} ptr mem))
 +      // cond: x.Uses == 1 && clobber(x)
 +      // result: @x.Block (VMOVDload <v.Type> [off] {sym} ptr mem)
 +      for {
 +              x := v_0
 +              if x.Op != OpAMD64MOVLload {
 +                      break
 +              }
 +              off := auxIntToInt32(x.AuxInt)
 +              sym := auxToSym(x.Aux)
 +              mem := x.Args[1]
 +              ptr := x.Args[0]
 +              if !(x.Uses == 1 && clobber(x)) {
 +                      break
 +              }
 +              b = x.Block
 +              v0 := b.NewValue0(x.Pos, OpAMD64VMOVDload, v.Type)
 +              v.copyOf(v0)
 +              v0.AuxInt = int32ToAuxInt(off)
 +              v0.Aux = symToAux(sym)
 +              v0.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMOVDQU16Masked128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMOVDQU16Masked128 (VPABSW128 x) mask)
 +      // result: (VPABSWMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPABSW128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPABSWMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPADDW128 x y) mask)
 +      // result: (VPADDWMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPADDW128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPADDWMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPADDSW128 x y) mask)
 +      // result: (VPADDSWMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPADDSW128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPADDSWMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPADDUSW128 x y) mask)
 +      // result: (VPADDUSWMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPADDUSW128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPADDUSWMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPAVGW128 x y) mask)
 +      // result: (VPAVGWMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPAVGW128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPAVGWMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPBROADCASTW128 x) mask)
 +      // result: (VPBROADCASTWMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPBROADCASTW128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPBROADCASTWMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPMOVWB128 x) mask)
 +      // result: (VPMOVWBMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVWB128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVWBMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPMOVSWB128 x) mask)
 +      // result: (VPMOVSWBMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVSWB128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVSWBMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPMOVSXWD128 x) mask)
 +      // result: (VPMOVSXWDMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVSXWD128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVSXWDMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPMOVSXWQ128 x) mask)
 +      // result: (VPMOVSXWQMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVSXWQ128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVSXWQMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPMOVUSWB128 x) mask)
 +      // result: (VPMOVUSWBMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVUSWB128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVUSWBMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPMOVZXWD128 x) mask)
 +      // result: (VPMOVZXWDMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVZXWD128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVZXWDMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPMOVZXWQ128 x) mask)
 +      // result: (VPMOVZXWQMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVZXWQ128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVZXWQMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPMADDWD128 x y) mask)
 +      // result: (VPMADDWDMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMADDWD128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMADDWDMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPMADDUBSW128 x y) mask)
 +      // result: (VPMADDUBSWMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMADDUBSW128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMADDUBSWMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPMAXSW128 x y) mask)
 +      // result: (VPMAXSWMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMAXSW128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMAXSWMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPMAXUW128 x y) mask)
 +      // result: (VPMAXUWMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMAXUW128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMAXUWMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPMINSW128 x y) mask)
 +      // result: (VPMINSWMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMINSW128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMINSWMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPMINUW128 x y) mask)
 +      // result: (VPMINUWMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMINUW128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMINUWMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPMULHW128 x y) mask)
 +      // result: (VPMULHWMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMULHW128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMULHWMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPMULHUW128 x y) mask)
 +      // result: (VPMULHUWMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMULHUW128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMULHUWMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPMULLW128 x y) mask)
 +      // result: (VPMULLWMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMULLW128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMULLWMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPOPCNTW128 x) mask)
 +      // result: (VPOPCNTWMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPOPCNTW128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPOPCNTWMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPERMI2W128 x y z) mask)
 +      // result: (VPERMI2WMasked128 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMI2W128 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMI2WMasked128)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPSHUFHW128 [a] x) mask)
 +      // result: (VPSHUFHWMasked128 [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHUFHW128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHUFHWMasked128)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPERMW128 x y) mask)
 +      // result: (VPERMWMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMW128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMWMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPSHLDW128 [a] x y) mask)
 +      // result: (VPSHLDWMasked128 [a] x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHLDW128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHLDWMasked128)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPSLLW128 x y) mask)
 +      // result: (VPSLLWMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSLLW128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSLLWMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPSHRDW128 [a] x y) mask)
 +      // result: (VPSHRDWMasked128 [a] x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHRDW128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHRDWMasked128)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPSRAW128 x y) mask)
 +      // result: (VPSRAWMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRAW128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRAWMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPSRLW128 x y) mask)
 +      // result: (VPSRLWMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRLW128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRLWMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPSHLDVW128 x y z) mask)
 +      // result: (VPSHLDVWMasked128 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHLDVW128 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHLDVWMasked128)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPSLLVW128 x y) mask)
 +      // result: (VPSLLVWMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSLLVW128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSLLVWMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPSHRDVW128 x y z) mask)
 +      // result: (VPSHRDVWMasked128 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHRDVW128 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHRDVWMasked128)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPSRAVW128 x y) mask)
 +      // result: (VPSRAVWMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRAVW128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRAVWMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPSRLVW128 x y) mask)
 +      // result: (VPSRLVWMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRLVW128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRLVWMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPSUBW128 x y) mask)
 +      // result: (VPSUBWMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSUBW128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSUBWMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPSUBSW128 x y) mask)
 +      // result: (VPSUBSWMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSUBSW128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSUBSWMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPSUBUSW128 x y) mask)
 +      // result: (VPSUBUSWMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSUBUSW128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSUBUSWMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPSLLW128const [a] x) mask)
 +      // result: (VPSLLWMasked128const [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSLLW128const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSLLWMasked128const)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked128 (VPSRAW128const [a] x) mask)
 +      // result: (VPSRAWMasked128const [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRAW128const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRAWMasked128const)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMOVDQU16Masked256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMOVDQU16Masked256 (VPABSW256 x) mask)
 +      // result: (VPABSWMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPABSW256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPABSWMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPADDW256 x y) mask)
 +      // result: (VPADDWMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPADDW256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPADDWMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPADDSW256 x y) mask)
 +      // result: (VPADDSWMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPADDSW256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPADDSWMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPADDUSW256 x y) mask)
 +      // result: (VPADDUSWMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPADDUSW256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPADDUSWMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPAVGW256 x y) mask)
 +      // result: (VPAVGWMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPAVGW256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPAVGWMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPBROADCASTW256 x) mask)
 +      // result: (VPBROADCASTWMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPBROADCASTW256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPBROADCASTWMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPMOVWB256 x) mask)
 +      // result: (VPMOVWBMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVWB256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVWBMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPMOVSWB256 x) mask)
 +      // result: (VPMOVSWBMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVSWB256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVSWBMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPMOVSXWD256 x) mask)
 +      // result: (VPMOVSXWDMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVSXWD256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVSXWDMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPMOVUSWB256 x) mask)
 +      // result: (VPMOVUSWBMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVUSWB256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVUSWBMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPMOVZXWD256 x) mask)
 +      // result: (VPMOVZXWDMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVZXWD256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVZXWDMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPMOVSXWQ256 x) mask)
 +      // result: (VPMOVSXWQMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVSXWQ256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVSXWQMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPMOVZXWQ256 x) mask)
 +      // result: (VPMOVZXWQMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVZXWQ256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVZXWQMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPMADDWD256 x y) mask)
 +      // result: (VPMADDWDMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMADDWD256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMADDWDMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPMADDUBSW256 x y) mask)
 +      // result: (VPMADDUBSWMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMADDUBSW256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMADDUBSWMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPMAXSW256 x y) mask)
 +      // result: (VPMAXSWMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMAXSW256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMAXSWMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPMAXUW256 x y) mask)
 +      // result: (VPMAXUWMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMAXUW256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMAXUWMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPMINSW256 x y) mask)
 +      // result: (VPMINSWMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMINSW256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMINSWMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPMINUW256 x y) mask)
 +      // result: (VPMINUWMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMINUW256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMINUWMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPMULHW256 x y) mask)
 +      // result: (VPMULHWMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMULHW256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMULHWMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPMULHUW256 x y) mask)
 +      // result: (VPMULHUWMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMULHUW256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMULHUWMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPMULLW256 x y) mask)
 +      // result: (VPMULLWMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMULLW256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMULLWMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPOPCNTW256 x) mask)
 +      // result: (VPOPCNTWMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPOPCNTW256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPOPCNTWMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPERMI2W256 x y z) mask)
 +      // result: (VPERMI2WMasked256 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMI2W256 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMI2WMasked256)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPSHUFHW256 [a] x) mask)
 +      // result: (VPSHUFHWMasked256 [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHUFHW256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHUFHWMasked256)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPERMW256 x y) mask)
 +      // result: (VPERMWMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMW256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMWMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPSHLDW256 [a] x y) mask)
 +      // result: (VPSHLDWMasked256 [a] x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHLDW256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHLDWMasked256)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPSLLW256 x y) mask)
 +      // result: (VPSLLWMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSLLW256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSLLWMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPSHRDW256 [a] x y) mask)
 +      // result: (VPSHRDWMasked256 [a] x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHRDW256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHRDWMasked256)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPSRAW256 x y) mask)
 +      // result: (VPSRAWMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRAW256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRAWMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPSRLW256 x y) mask)
 +      // result: (VPSRLWMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRLW256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRLWMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPSHLDVW256 x y z) mask)
 +      // result: (VPSHLDVWMasked256 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHLDVW256 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHLDVWMasked256)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPSLLVW256 x y) mask)
 +      // result: (VPSLLVWMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSLLVW256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSLLVWMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPSHRDVW256 x y z) mask)
 +      // result: (VPSHRDVWMasked256 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHRDVW256 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHRDVWMasked256)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPSRAVW256 x y) mask)
 +      // result: (VPSRAVWMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRAVW256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRAVWMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPSRLVW256 x y) mask)
 +      // result: (VPSRLVWMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRLVW256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRLVWMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPSUBW256 x y) mask)
 +      // result: (VPSUBWMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSUBW256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSUBWMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPSUBSW256 x y) mask)
 +      // result: (VPSUBSWMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSUBSW256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSUBSWMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPSUBUSW256 x y) mask)
 +      // result: (VPSUBUSWMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSUBUSW256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSUBUSWMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPSLLW256const [a] x) mask)
 +      // result: (VPSLLWMasked256const [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSLLW256const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSLLWMasked256const)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked256 (VPSRAW256const [a] x) mask)
 +      // result: (VPSRAWMasked256const [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRAW256const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRAWMasked256const)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMOVDQU16Masked512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMOVDQU16Masked512 (VPABSW512 x) mask)
 +      // result: (VPABSWMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPABSW512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPABSWMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPADDW512 x y) mask)
 +      // result: (VPADDWMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPADDW512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPADDWMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPADDSW512 x y) mask)
 +      // result: (VPADDSWMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPADDSW512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPADDSWMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPADDUSW512 x y) mask)
 +      // result: (VPADDUSWMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPADDUSW512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPADDUSWMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPAVGW512 x y) mask)
 +      // result: (VPAVGWMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPAVGW512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPAVGWMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPBROADCASTW512 x) mask)
 +      // result: (VPBROADCASTWMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPBROADCASTW512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPBROADCASTWMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPMOVSXWD512 x) mask)
 +      // result: (VPMOVSXWDMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVSXWD512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVSXWDMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPMOVSXWQ512 x) mask)
 +      // result: (VPMOVSXWQMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVSXWQ512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVSXWQMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPMOVZXWD512 x) mask)
 +      // result: (VPMOVZXWDMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVZXWD512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVZXWDMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPMOVZXWQ512 x) mask)
 +      // result: (VPMOVZXWQMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVZXWQ512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVZXWQMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPMADDWD512 x y) mask)
 +      // result: (VPMADDWDMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMADDWD512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMADDWDMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPMADDUBSW512 x y) mask)
 +      // result: (VPMADDUBSWMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMADDUBSW512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMADDUBSWMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPMAXSW512 x y) mask)
 +      // result: (VPMAXSWMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMAXSW512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMAXSWMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPMAXUW512 x y) mask)
 +      // result: (VPMAXUWMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMAXUW512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMAXUWMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPMINSW512 x y) mask)
 +      // result: (VPMINSWMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMINSW512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMINSWMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPMINUW512 x y) mask)
 +      // result: (VPMINUWMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMINUW512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMINUWMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPMULHW512 x y) mask)
 +      // result: (VPMULHWMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMULHW512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMULHWMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPMULHUW512 x y) mask)
 +      // result: (VPMULHUWMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMULHUW512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMULHUWMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPMULLW512 x y) mask)
 +      // result: (VPMULLWMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMULLW512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMULLWMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPOPCNTW512 x) mask)
 +      // result: (VPOPCNTWMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPOPCNTW512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPOPCNTWMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPERMI2W512 x y z) mask)
 +      // result: (VPERMI2WMasked512 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMI2W512 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMI2WMasked512)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPSHUFHW512 [a] x) mask)
 +      // result: (VPSHUFHWMasked512 [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHUFHW512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHUFHWMasked512)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPERMW512 x y) mask)
 +      // result: (VPERMWMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMW512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMWMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPSHLDW512 [a] x y) mask)
 +      // result: (VPSHLDWMasked512 [a] x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHLDW512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHLDWMasked512)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPSLLW512 x y) mask)
 +      // result: (VPSLLWMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSLLW512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSLLWMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPSHRDW512 [a] x y) mask)
 +      // result: (VPSHRDWMasked512 [a] x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHRDW512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHRDWMasked512)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPSRAW512 x y) mask)
 +      // result: (VPSRAWMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRAW512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRAWMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPSRLW512 x y) mask)
 +      // result: (VPSRLWMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRLW512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRLWMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPSHLDVW512 x y z) mask)
 +      // result: (VPSHLDVWMasked512 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHLDVW512 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHLDVWMasked512)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPSLLVW512 x y) mask)
 +      // result: (VPSLLVWMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSLLVW512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSLLVWMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPSHRDVW512 x y z) mask)
 +      // result: (VPSHRDVWMasked512 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHRDVW512 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHRDVWMasked512)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPSRAVW512 x y) mask)
 +      // result: (VPSRAVWMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRAVW512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRAVWMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPSRLVW512 x y) mask)
 +      // result: (VPSRLVWMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRLVW512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRLVWMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPSUBW512 x y) mask)
 +      // result: (VPSUBWMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSUBW512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSUBWMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPSUBSW512 x y) mask)
 +      // result: (VPSUBSWMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSUBSW512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSUBSWMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPSUBUSW512 x y) mask)
 +      // result: (VPSUBUSWMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSUBUSW512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSUBUSWMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPSLLW512const [a] x) mask)
 +      // result: (VPSLLWMasked512const [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSLLW512const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSLLWMasked512const)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU16Masked512 (VPSRAW512const [a] x) mask)
 +      // result: (VPSRAWMasked512const [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRAW512const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRAWMasked512const)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMOVDQU32Masked128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMOVDQU32Masked128 (VPABSD128 x) mask)
 +      // result: (VPABSDMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPABSD128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPABSDMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPDPBUSD128 x y z) mask)
 +      // result: (VPDPBUSDMasked128 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPDPBUSD128 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPDPBUSDMasked128)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPDPBUSDS128 x y z) mask)
 +      // result: (VPDPBUSDSMasked128 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPDPBUSDS128 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPDPBUSDSMasked128)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VADDPS128 x y) mask)
 +      // result: (VADDPSMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VADDPS128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VADDPSMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPADDD128 x y) mask)
 +      // result: (VPADDDMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPADDD128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPADDDMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VBROADCASTSS128 x) mask)
 +      // result: (VBROADCASTSSMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VBROADCASTSS128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VBROADCASTSSMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPBROADCASTD128 x) mask)
 +      // result: (VPBROADCASTDMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPBROADCASTD128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPBROADCASTDMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VRNDSCALEPS128 [a] x) mask)
 +      // result: (VRNDSCALEPSMasked128 [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VRNDSCALEPS128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VRNDSCALEPSMasked128)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VREDUCEPS128 [a] x) mask)
 +      // result: (VREDUCEPSMasked128 [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VREDUCEPS128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VREDUCEPSMasked128)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPMOVDB128 x) mask)
 +      // result: (VPMOVDBMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVDB128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVDBMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPMOVSDB128 x) mask)
 +      // result: (VPMOVSDBMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVSDB128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVSDBMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPMOVDW128 x) mask)
 +      // result: (VPMOVDWMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVDW128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVDWMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPMOVSDW128 x) mask)
 +      // result: (VPMOVSDWMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVSDW128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVSDWMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPACKSSDW128 x y) mask)
 +      // result: (VPACKSSDWMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPACKSSDW128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPACKSSDWMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VCVTTPS2DQ128 x) mask)
 +      // result: (VCVTTPS2DQMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VCVTTPS2DQ128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VCVTTPS2DQMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPMOVSXDQ128 x) mask)
 +      // result: (VPMOVSXDQMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVSXDQ128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVSXDQMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPMOVUSDB128 x) mask)
 +      // result: (VPMOVUSDBMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVUSDB128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVUSDBMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPMOVUSDW128 x) mask)
 +      // result: (VPMOVUSDWMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVUSDW128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVUSDWMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPACKUSDW128 x y) mask)
 +      // result: (VPACKUSDWMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPACKUSDW128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPACKUSDWMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VCVTPS2UDQ128 x) mask)
 +      // result: (VCVTPS2UDQMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VCVTPS2UDQ128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VCVTPS2UDQMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPMOVZXDQ128 x) mask)
 +      // result: (VPMOVZXDQMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVZXDQ128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVZXDQMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VDIVPS128 x y) mask)
 +      // result: (VDIVPSMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VDIVPS128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VDIVPSMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPLZCNTD128 x) mask)
 +      // result: (VPLZCNTDMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPLZCNTD128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPLZCNTDMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VMAXPS128 x y) mask)
 +      // result: (VMAXPSMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VMAXPS128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VMAXPSMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPMAXSD128 x y) mask)
 +      // result: (VPMAXSDMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMAXSD128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMAXSDMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPMAXUD128 x y) mask)
 +      // result: (VPMAXUDMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMAXUD128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMAXUDMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VMINPS128 x y) mask)
 +      // result: (VMINPSMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VMINPS128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VMINPSMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPMINSD128 x y) mask)
 +      // result: (VPMINSDMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMINSD128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMINSDMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPMINUD128 x y) mask)
 +      // result: (VPMINUDMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMINUD128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMINUDMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VFMADD213PS128 x y z) mask)
 +      // result: (VFMADD213PSMasked128 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VFMADD213PS128 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VFMADD213PSMasked128)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VFMADDSUB213PS128 x y z) mask)
 +      // result: (VFMADDSUB213PSMasked128 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VFMADDSUB213PS128 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VFMADDSUB213PSMasked128)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VMULPS128 x y) mask)
 +      // result: (VMULPSMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VMULPS128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VMULPSMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPMULLD128 x y) mask)
 +      // result: (VPMULLDMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMULLD128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMULLDMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VFMSUBADD213PS128 x y z) mask)
 +      // result: (VFMSUBADD213PSMasked128 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VFMSUBADD213PS128 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VFMSUBADD213PSMasked128)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPOPCNTD128 x) mask)
 +      // result: (VPOPCNTDMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPOPCNTD128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPOPCNTDMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPERMI2PS128 x y z) mask)
 +      // result: (VPERMI2PSMasked128 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMI2PS128 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMI2PSMasked128)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPERMI2D128 x y z) mask)
 +      // result: (VPERMI2DMasked128 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMI2D128 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMI2DMasked128)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPSHUFD128 [a] x) mask)
 +      // result: (VPSHUFDMasked128 [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHUFD128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHUFDMasked128)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPROLD128 [a] x) mask)
 +      // result: (VPROLDMasked128 [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPROLD128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPROLDMasked128)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPRORD128 [a] x) mask)
 +      // result: (VPRORDMasked128 [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPRORD128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPRORDMasked128)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPROLVD128 x y) mask)
 +      // result: (VPROLVDMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPROLVD128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPROLVDMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPRORVD128 x y) mask)
 +      // result: (VPRORVDMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPRORVD128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPRORVDMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VSCALEFPS128 x y) mask)
 +      // result: (VSCALEFPSMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VSCALEFPS128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VSCALEFPSMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPSHLDD128 [a] x y) mask)
 +      // result: (VPSHLDDMasked128 [a] x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHLDD128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHLDDMasked128)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPSLLD128 x y) mask)
 +      // result: (VPSLLDMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSLLD128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSLLDMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPSHRDD128 [a] x y) mask)
 +      // result: (VPSHRDDMasked128 [a] x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHRDD128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHRDDMasked128)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPSRAD128 x y) mask)
 +      // result: (VPSRADMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRAD128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRADMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPSRLD128 x y) mask)
 +      // result: (VPSRLDMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRLD128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRLDMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPSHLDVD128 x y z) mask)
 +      // result: (VPSHLDVDMasked128 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHLDVD128 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHLDVDMasked128)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPSLLVD128 x y) mask)
 +      // result: (VPSLLVDMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSLLVD128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSLLVDMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPSHRDVD128 x y z) mask)
 +      // result: (VPSHRDVDMasked128 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHRDVD128 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHRDVDMasked128)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPSRAVD128 x y) mask)
 +      // result: (VPSRAVDMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRAVD128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRAVDMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPSRLVD128 x y) mask)
 +      // result: (VPSRLVDMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRLVD128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRLVDMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VSQRTPS128 x) mask)
 +      // result: (VSQRTPSMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VSQRTPS128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VSQRTPSMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VSUBPS128 x y) mask)
 +      // result: (VSUBPSMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VSUBPS128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VSUBPSMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPSUBD128 x y) mask)
 +      // result: (VPSUBDMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSUBD128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSUBDMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPSLLD128const [a] x) mask)
 +      // result: (VPSLLDMasked128const [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSLLD128const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSLLDMasked128const)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked128 (VPSRAD128const [a] x) mask)
 +      // result: (VPSRADMasked128const [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRAD128const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRADMasked128const)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMOVDQU32Masked256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMOVDQU32Masked256 (VPABSD256 x) mask)
 +      // result: (VPABSDMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPABSD256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPABSDMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPDPBUSD256 x y z) mask)
 +      // result: (VPDPBUSDMasked256 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPDPBUSD256 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPDPBUSDMasked256)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPDPBUSDS256 x y z) mask)
 +      // result: (VPDPBUSDSMasked256 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPDPBUSDS256 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPDPBUSDSMasked256)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VADDPS256 x y) mask)
 +      // result: (VADDPSMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VADDPS256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VADDPSMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPADDD256 x y) mask)
 +      // result: (VPADDDMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPADDD256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPADDDMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VBROADCASTSS256 x) mask)
 +      // result: (VBROADCASTSSMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VBROADCASTSS256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VBROADCASTSSMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPBROADCASTD256 x) mask)
 +      // result: (VPBROADCASTDMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPBROADCASTD256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPBROADCASTDMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VRNDSCALEPS256 [a] x) mask)
 +      // result: (VRNDSCALEPSMasked256 [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VRNDSCALEPS256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VRNDSCALEPSMasked256)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VREDUCEPS256 [a] x) mask)
 +      // result: (VREDUCEPSMasked256 [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VREDUCEPS256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VREDUCEPSMasked256)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPMOVDW256 x) mask)
 +      // result: (VPMOVDWMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVDW256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVDWMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPMOVSDW256 x) mask)
 +      // result: (VPMOVSDWMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVSDW256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVSDWMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPACKSSDW256 x y) mask)
 +      // result: (VPACKSSDWMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPACKSSDW256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPACKSSDWMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VCVTTPS2DQ256 x) mask)
 +      // result: (VCVTTPS2DQMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VCVTTPS2DQ256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VCVTTPS2DQMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPMOVSXDQ256 x) mask)
 +      // result: (VPMOVSXDQMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVSXDQ256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVSXDQMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPMOVUSDW256 x) mask)
 +      // result: (VPMOVUSDWMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVUSDW256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVUSDWMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPACKUSDW256 x y) mask)
 +      // result: (VPACKUSDWMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPACKUSDW256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPACKUSDWMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VCVTPS2UDQ256 x) mask)
 +      // result: (VCVTPS2UDQMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VCVTPS2UDQ256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VCVTPS2UDQMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPMOVZXDQ256 x) mask)
 +      // result: (VPMOVZXDQMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVZXDQ256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVZXDQMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VDIVPS256 x y) mask)
 +      // result: (VDIVPSMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VDIVPS256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VDIVPSMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPLZCNTD256 x) mask)
 +      // result: (VPLZCNTDMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPLZCNTD256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPLZCNTDMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VMAXPS256 x y) mask)
 +      // result: (VMAXPSMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VMAXPS256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VMAXPSMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPMAXSD256 x y) mask)
 +      // result: (VPMAXSDMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMAXSD256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMAXSDMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPMAXUD256 x y) mask)
 +      // result: (VPMAXUDMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMAXUD256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMAXUDMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VMINPS256 x y) mask)
 +      // result: (VMINPSMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VMINPS256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VMINPSMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPMINSD256 x y) mask)
 +      // result: (VPMINSDMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMINSD256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMINSDMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPMINUD256 x y) mask)
 +      // result: (VPMINUDMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMINUD256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMINUDMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VFMADD213PS256 x y z) mask)
 +      // result: (VFMADD213PSMasked256 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VFMADD213PS256 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VFMADD213PSMasked256)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VFMADDSUB213PS256 x y z) mask)
 +      // result: (VFMADDSUB213PSMasked256 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VFMADDSUB213PS256 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VFMADDSUB213PSMasked256)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VMULPS256 x y) mask)
 +      // result: (VMULPSMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VMULPS256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VMULPSMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPMULLD256 x y) mask)
 +      // result: (VPMULLDMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMULLD256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMULLDMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VFMSUBADD213PS256 x y z) mask)
 +      // result: (VFMSUBADD213PSMasked256 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VFMSUBADD213PS256 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VFMSUBADD213PSMasked256)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPOPCNTD256 x) mask)
 +      // result: (VPOPCNTDMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPOPCNTD256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPOPCNTDMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPERMI2PS256 x y z) mask)
 +      // result: (VPERMI2PSMasked256 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMI2PS256 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMI2PSMasked256)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPERMI2D256 x y z) mask)
 +      // result: (VPERMI2DMasked256 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMI2D256 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMI2DMasked256)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPSHUFD256 [a] x) mask)
 +      // result: (VPSHUFDMasked256 [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHUFD256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHUFDMasked256)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPERMPS256 x y) mask)
 +      // result: (VPERMPSMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMPS256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMPSMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPERMD256 x y) mask)
 +      // result: (VPERMDMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMD256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMDMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPROLD256 [a] x) mask)
 +      // result: (VPROLDMasked256 [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPROLD256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPROLDMasked256)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPRORD256 [a] x) mask)
 +      // result: (VPRORDMasked256 [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPRORD256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPRORDMasked256)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPROLVD256 x y) mask)
 +      // result: (VPROLVDMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPROLVD256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPROLVDMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPRORVD256 x y) mask)
 +      // result: (VPRORVDMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPRORVD256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPRORVDMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VSCALEFPS256 x y) mask)
 +      // result: (VSCALEFPSMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VSCALEFPS256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VSCALEFPSMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPSHLDD256 [a] x y) mask)
 +      // result: (VPSHLDDMasked256 [a] x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHLDD256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHLDDMasked256)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPSLLD256 x y) mask)
 +      // result: (VPSLLDMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSLLD256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSLLDMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPSHRDD256 [a] x y) mask)
 +      // result: (VPSHRDDMasked256 [a] x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHRDD256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHRDDMasked256)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPSRAD256 x y) mask)
 +      // result: (VPSRADMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRAD256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRADMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPSRLD256 x y) mask)
 +      // result: (VPSRLDMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRLD256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRLDMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPSHLDVD256 x y z) mask)
 +      // result: (VPSHLDVDMasked256 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHLDVD256 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHLDVDMasked256)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPSLLVD256 x y) mask)
 +      // result: (VPSLLVDMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSLLVD256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSLLVDMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPSHRDVD256 x y z) mask)
 +      // result: (VPSHRDVDMasked256 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHRDVD256 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHRDVDMasked256)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPSRAVD256 x y) mask)
 +      // result: (VPSRAVDMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRAVD256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRAVDMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPSRLVD256 x y) mask)
 +      // result: (VPSRLVDMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRLVD256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRLVDMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VSQRTPS256 x) mask)
 +      // result: (VSQRTPSMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VSQRTPS256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VSQRTPSMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VSUBPS256 x y) mask)
 +      // result: (VSUBPSMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VSUBPS256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VSUBPSMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPSUBD256 x y) mask)
 +      // result: (VPSUBDMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSUBD256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSUBDMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPSLLD256const [a] x) mask)
 +      // result: (VPSLLDMasked256const [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSLLD256const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSLLDMasked256const)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked256 (VPSRAD256const [a] x) mask)
 +      // result: (VPSRADMasked256const [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRAD256const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRADMasked256const)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMOVDQU32Masked512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMOVDQU32Masked512 (VPABSD512 x) mask)
 +      // result: (VPABSDMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPABSD512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPABSDMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPDPBUSD512 x y z) mask)
 +      // result: (VPDPBUSDMasked512 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPDPBUSD512 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPDPBUSDMasked512)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPDPBUSDS512 x y z) mask)
 +      // result: (VPDPBUSDSMasked512 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPDPBUSDS512 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPDPBUSDSMasked512)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VADDPS512 x y) mask)
 +      // result: (VADDPSMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VADDPS512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VADDPSMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPADDD512 x y) mask)
 +      // result: (VPADDDMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPADDD512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPADDDMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPANDD512 x y) mask)
 +      // result: (VPANDDMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPANDD512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPANDDMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPANDND512 x y) mask)
 +      // result: (VPANDNDMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPANDND512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPANDNDMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VBROADCASTSS512 x) mask)
 +      // result: (VBROADCASTSSMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VBROADCASTSS512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VBROADCASTSSMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPBROADCASTD512 x) mask)
 +      // result: (VPBROADCASTDMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPBROADCASTD512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPBROADCASTDMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VRNDSCALEPS512 [a] x) mask)
 +      // result: (VRNDSCALEPSMasked512 [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VRNDSCALEPS512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VRNDSCALEPSMasked512)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VREDUCEPS512 [a] x) mask)
 +      // result: (VREDUCEPSMasked512 [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VREDUCEPS512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VREDUCEPSMasked512)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPACKSSDW512 x y) mask)
 +      // result: (VPACKSSDWMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPACKSSDW512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPACKSSDWMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VCVTTPS2DQ512 x) mask)
 +      // result: (VCVTTPS2DQMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VCVTTPS2DQ512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VCVTTPS2DQMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPMOVSXDQ512 x) mask)
 +      // result: (VPMOVSXDQMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVSXDQ512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVSXDQMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPACKUSDW512 x y) mask)
 +      // result: (VPACKUSDWMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPACKUSDW512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPACKUSDWMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VCVTPS2UDQ512 x) mask)
 +      // result: (VCVTPS2UDQMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VCVTPS2UDQ512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VCVTPS2UDQMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPMOVZXDQ512 x) mask)
 +      // result: (VPMOVZXDQMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVZXDQ512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVZXDQMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VDIVPS512 x y) mask)
 +      // result: (VDIVPSMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VDIVPS512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VDIVPSMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPLZCNTD512 x) mask)
 +      // result: (VPLZCNTDMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPLZCNTD512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPLZCNTDMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VMAXPS512 x y) mask)
 +      // result: (VMAXPSMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VMAXPS512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VMAXPSMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPMAXSD512 x y) mask)
 +      // result: (VPMAXSDMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMAXSD512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMAXSDMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPMAXUD512 x y) mask)
 +      // result: (VPMAXUDMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMAXUD512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMAXUDMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VMINPS512 x y) mask)
 +      // result: (VMINPSMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VMINPS512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VMINPSMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPMINSD512 x y) mask)
 +      // result: (VPMINSDMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMINSD512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMINSDMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPMINUD512 x y) mask)
 +      // result: (VPMINUDMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMINUD512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMINUDMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VFMADD213PS512 x y z) mask)
 +      // result: (VFMADD213PSMasked512 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VFMADD213PS512 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VFMADD213PSMasked512)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VFMADDSUB213PS512 x y z) mask)
 +      // result: (VFMADDSUB213PSMasked512 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VFMADDSUB213PS512 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VFMADDSUB213PSMasked512)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VMULPS512 x y) mask)
 +      // result: (VMULPSMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VMULPS512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VMULPSMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPMULLD512 x y) mask)
 +      // result: (VPMULLDMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMULLD512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMULLDMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VFMSUBADD213PS512 x y z) mask)
 +      // result: (VFMSUBADD213PSMasked512 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VFMSUBADD213PS512 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VFMSUBADD213PSMasked512)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPOPCNTD512 x) mask)
 +      // result: (VPOPCNTDMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPOPCNTD512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPOPCNTDMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPORD512 x y) mask)
 +      // result: (VPORDMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPORD512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPORDMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPERMI2PS512 x y z) mask)
 +      // result: (VPERMI2PSMasked512 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMI2PS512 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMI2PSMasked512)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPERMI2D512 x y z) mask)
 +      // result: (VPERMI2DMasked512 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMI2D512 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMI2DMasked512)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPSHUFD512 [a] x) mask)
 +      // result: (VPSHUFDMasked512 [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHUFD512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHUFDMasked512)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPERMPS512 x y) mask)
 +      // result: (VPERMPSMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMPS512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMPSMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPERMD512 x y) mask)
 +      // result: (VPERMDMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMD512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMDMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VRCP14PS512 x) mask)
 +      // result: (VRCP14PSMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VRCP14PS512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VRCP14PSMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VRSQRT14PS512 x) mask)
 +      // result: (VRSQRT14PSMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VRSQRT14PS512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VRSQRT14PSMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPROLD512 [a] x) mask)
 +      // result: (VPROLDMasked512 [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPROLD512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPROLDMasked512)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPRORD512 [a] x) mask)
 +      // result: (VPRORDMasked512 [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPRORD512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPRORDMasked512)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPROLVD512 x y) mask)
 +      // result: (VPROLVDMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPROLVD512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPROLVDMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPRORVD512 x y) mask)
 +      // result: (VPRORVDMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPRORVD512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPRORVDMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VSCALEFPS512 x y) mask)
 +      // result: (VSCALEFPSMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VSCALEFPS512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VSCALEFPSMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPSHLDD512 [a] x y) mask)
 +      // result: (VPSHLDDMasked512 [a] x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHLDD512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHLDDMasked512)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPSLLD512 x y) mask)
 +      // result: (VPSLLDMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSLLD512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSLLDMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPSHRDD512 [a] x y) mask)
 +      // result: (VPSHRDDMasked512 [a] x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHRDD512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHRDDMasked512)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPSRAD512 x y) mask)
 +      // result: (VPSRADMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRAD512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRADMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPSRLD512 x y) mask)
 +      // result: (VPSRLDMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRLD512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRLDMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPSHLDVD512 x y z) mask)
 +      // result: (VPSHLDVDMasked512 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHLDVD512 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHLDVDMasked512)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPSLLVD512 x y) mask)
 +      // result: (VPSLLVDMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSLLVD512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSLLVDMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPSHRDVD512 x y z) mask)
 +      // result: (VPSHRDVDMasked512 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHRDVD512 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHRDVDMasked512)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPSRAVD512 x y) mask)
 +      // result: (VPSRAVDMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRAVD512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRAVDMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPSRLVD512 x y) mask)
 +      // result: (VPSRLVDMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRLVD512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRLVDMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VSQRTPS512 x) mask)
 +      // result: (VSQRTPSMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VSQRTPS512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VSQRTPSMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VSUBPS512 x y) mask)
 +      // result: (VSUBPSMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VSUBPS512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VSUBPSMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPSUBD512 x y) mask)
 +      // result: (VPSUBDMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSUBD512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSUBDMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPXORD512 x y) mask)
 +      // result: (VPXORDMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPXORD512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPXORDMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPSLLD512const [a] x) mask)
 +      // result: (VPSLLDMasked512const [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSLLD512const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSLLDMasked512const)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU32Masked512 (VPSRAD512const [a] x) mask)
 +      // result: (VPSRADMasked512const [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRAD512const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRADMasked512const)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMOVDQU64Masked128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMOVDQU64Masked128 (VPABSQ128 x) mask)
 +      // result: (VPABSQMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPABSQ128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPABSQMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VADDPD128 x y) mask)
 +      // result: (VADDPDMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VADDPD128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VADDPDMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPADDQ128 x y) mask)
 +      // result: (VPADDQMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPADDQ128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPADDQMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPBROADCASTQ128 x) mask)
 +      // result: (VPBROADCASTQMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPBROADCASTQ128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPBROADCASTQMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VRNDSCALEPD128 [a] x) mask)
 +      // result: (VRNDSCALEPDMasked128 [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VRNDSCALEPD128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VRNDSCALEPDMasked128)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VREDUCEPD128 [a] x) mask)
 +      // result: (VREDUCEPDMasked128 [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VREDUCEPD128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VREDUCEPDMasked128)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPMOVQB128 x) mask)
 +      // result: (VPMOVQBMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVQB128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVQBMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPMOVSQB128 x) mask)
 +      // result: (VPMOVSQBMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVSQB128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVSQBMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPMOVQW128 x) mask)
 +      // result: (VPMOVQWMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVQW128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVQWMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPMOVSQW128 x) mask)
 +      // result: (VPMOVSQWMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVSQW128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVSQWMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPMOVQD128 x) mask)
 +      // result: (VPMOVQDMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVQD128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVQDMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPMOVSQD128 x) mask)
 +      // result: (VPMOVSQDMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVSQD128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVSQDMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPMOVUSQB128 x) mask)
 +      // result: (VPMOVUSQBMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVUSQB128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVUSQBMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPMOVUSQW128 x) mask)
 +      // result: (VPMOVUSQWMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVUSQW128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVUSQWMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPMOVUSQD128 x) mask)
 +      // result: (VPMOVUSQDMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVUSQD128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVUSQDMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VDIVPD128 x y) mask)
 +      // result: (VDIVPDMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VDIVPD128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VDIVPDMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPLZCNTQ128 x) mask)
 +      // result: (VPLZCNTQMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPLZCNTQ128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPLZCNTQMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VMAXPD128 x y) mask)
 +      // result: (VMAXPDMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VMAXPD128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VMAXPDMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPMAXSQ128 x y) mask)
 +      // result: (VPMAXSQMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMAXSQ128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMAXSQMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPMAXUQ128 x y) mask)
 +      // result: (VPMAXUQMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMAXUQ128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMAXUQMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VMINPD128 x y) mask)
 +      // result: (VMINPDMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VMINPD128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VMINPDMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPMINSQ128 x y) mask)
 +      // result: (VPMINSQMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMINSQ128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMINSQMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPMINUQ128 x y) mask)
 +      // result: (VPMINUQMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMINUQ128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMINUQMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VFMADD213PD128 x y z) mask)
 +      // result: (VFMADD213PDMasked128 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VFMADD213PD128 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VFMADD213PDMasked128)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VFMADDSUB213PD128 x y z) mask)
 +      // result: (VFMADDSUB213PDMasked128 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VFMADDSUB213PD128 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VFMADDSUB213PDMasked128)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VMULPD128 x y) mask)
 +      // result: (VMULPDMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VMULPD128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VMULPDMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPMULLQ128 x y) mask)
 +      // result: (VPMULLQMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMULLQ128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMULLQMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VFMSUBADD213PD128 x y z) mask)
 +      // result: (VFMSUBADD213PDMasked128 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VFMSUBADD213PD128 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VFMSUBADD213PDMasked128)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPOPCNTQ128 x) mask)
 +      // result: (VPOPCNTQMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPOPCNTQ128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPOPCNTQMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPERMI2PD128 x y z) mask)
 +      // result: (VPERMI2PDMasked128 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMI2PD128 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMI2PDMasked128)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPERMI2Q128 x y z) mask)
 +      // result: (VPERMI2QMasked128 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMI2Q128 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMI2QMasked128)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VRCP14PD128 x) mask)
 +      // result: (VRCP14PDMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VRCP14PD128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VRCP14PDMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VRSQRT14PD128 x) mask)
 +      // result: (VRSQRT14PDMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VRSQRT14PD128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VRSQRT14PDMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPROLQ128 [a] x) mask)
 +      // result: (VPROLQMasked128 [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPROLQ128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPROLQMasked128)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPRORQ128 [a] x) mask)
 +      // result: (VPRORQMasked128 [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPRORQ128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPRORQMasked128)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPROLVQ128 x y) mask)
 +      // result: (VPROLVQMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPROLVQ128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPROLVQMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPRORVQ128 x y) mask)
 +      // result: (VPRORVQMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPRORVQ128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPRORVQMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VSCALEFPD128 x y) mask)
 +      // result: (VSCALEFPDMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VSCALEFPD128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VSCALEFPDMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPSHLDQ128 [a] x y) mask)
 +      // result: (VPSHLDQMasked128 [a] x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHLDQ128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHLDQMasked128)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPSLLQ128 x y) mask)
 +      // result: (VPSLLQMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSLLQ128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSLLQMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPSHRDQ128 [a] x y) mask)
 +      // result: (VPSHRDQMasked128 [a] x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHRDQ128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHRDQMasked128)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPSRAQ128 x y) mask)
 +      // result: (VPSRAQMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRAQ128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRAQMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPSRLQ128 x y) mask)
 +      // result: (VPSRLQMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRLQ128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRLQMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPSHLDVQ128 x y z) mask)
 +      // result: (VPSHLDVQMasked128 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHLDVQ128 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHLDVQMasked128)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPSLLVQ128 x y) mask)
 +      // result: (VPSLLVQMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSLLVQ128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSLLVQMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPSHRDVQ128 x y z) mask)
 +      // result: (VPSHRDVQMasked128 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHRDVQ128 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHRDVQMasked128)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPSRAVQ128 x y) mask)
 +      // result: (VPSRAVQMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRAVQ128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRAVQMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPSRLVQ128 x y) mask)
 +      // result: (VPSRLVQMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRLVQ128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRLVQMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VSQRTPD128 x) mask)
 +      // result: (VSQRTPDMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VSQRTPD128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VSQRTPDMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VSUBPD128 x y) mask)
 +      // result: (VSUBPDMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VSUBPD128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VSUBPDMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPSUBQ128 x y) mask)
 +      // result: (VPSUBQMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSUBQ128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSUBQMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPSLLQ128const [a] x) mask)
 +      // result: (VPSLLQMasked128const [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSLLQ128const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSLLQMasked128const)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked128 (VPSRAQ128const [a] x) mask)
 +      // result: (VPSRAQMasked128const [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRAQ128const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRAQMasked128const)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMOVDQU64Masked256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMOVDQU64Masked256 (VPABSQ256 x) mask)
 +      // result: (VPABSQMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPABSQ256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPABSQMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VADDPD256 x y) mask)
 +      // result: (VADDPDMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VADDPD256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VADDPDMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPADDQ256 x y) mask)
 +      // result: (VPADDQMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPADDQ256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPADDQMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VBROADCASTSD256 x) mask)
 +      // result: (VBROADCASTSDMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VBROADCASTSD256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VBROADCASTSDMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPBROADCASTQ256 x) mask)
 +      // result: (VPBROADCASTQMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPBROADCASTQ256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPBROADCASTQMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VRNDSCALEPD256 [a] x) mask)
 +      // result: (VRNDSCALEPDMasked256 [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VRNDSCALEPD256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VRNDSCALEPDMasked256)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VREDUCEPD256 [a] x) mask)
 +      // result: (VREDUCEPDMasked256 [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VREDUCEPD256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VREDUCEPDMasked256)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPMOVQD256 x) mask)
 +      // result: (VPMOVQDMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVQD256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVQDMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPMOVSQD256 x) mask)
 +      // result: (VPMOVSQDMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVSQD256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVSQDMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPMOVUSQD256 x) mask)
 +      // result: (VPMOVUSQDMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVUSQD256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVUSQDMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VDIVPD256 x y) mask)
 +      // result: (VDIVPDMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VDIVPD256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VDIVPDMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPLZCNTQ256 x) mask)
 +      // result: (VPLZCNTQMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPLZCNTQ256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPLZCNTQMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VMAXPD256 x y) mask)
 +      // result: (VMAXPDMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VMAXPD256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VMAXPDMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPMAXSQ256 x y) mask)
 +      // result: (VPMAXSQMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMAXSQ256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMAXSQMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPMAXUQ256 x y) mask)
 +      // result: (VPMAXUQMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMAXUQ256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMAXUQMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VMINPD256 x y) mask)
 +      // result: (VMINPDMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VMINPD256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VMINPDMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPMINSQ256 x y) mask)
 +      // result: (VPMINSQMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMINSQ256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMINSQMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPMINUQ256 x y) mask)
 +      // result: (VPMINUQMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMINUQ256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMINUQMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VFMADD213PD256 x y z) mask)
 +      // result: (VFMADD213PDMasked256 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VFMADD213PD256 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VFMADD213PDMasked256)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VFMADDSUB213PD256 x y z) mask)
 +      // result: (VFMADDSUB213PDMasked256 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VFMADDSUB213PD256 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VFMADDSUB213PDMasked256)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VMULPD256 x y) mask)
 +      // result: (VMULPDMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VMULPD256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VMULPDMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPMULLQ256 x y) mask)
 +      // result: (VPMULLQMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMULLQ256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMULLQMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VFMSUBADD213PD256 x y z) mask)
 +      // result: (VFMSUBADD213PDMasked256 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VFMSUBADD213PD256 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VFMSUBADD213PDMasked256)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPOPCNTQ256 x) mask)
 +      // result: (VPOPCNTQMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPOPCNTQ256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPOPCNTQMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPERMI2PD256 x y z) mask)
 +      // result: (VPERMI2PDMasked256 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMI2PD256 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMI2PDMasked256)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPERMI2Q256 x y z) mask)
 +      // result: (VPERMI2QMasked256 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMI2Q256 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMI2QMasked256)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPERMPD256 x y) mask)
 +      // result: (VPERMPDMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMPD256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMPDMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPERMQ256 x y) mask)
 +      // result: (VPERMQMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMQ256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMQMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VRCP14PD256 x) mask)
 +      // result: (VRCP14PDMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VRCP14PD256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VRCP14PDMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VRSQRT14PD256 x) mask)
 +      // result: (VRSQRT14PDMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VRSQRT14PD256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VRSQRT14PDMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPROLQ256 [a] x) mask)
 +      // result: (VPROLQMasked256 [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPROLQ256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPROLQMasked256)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPRORQ256 [a] x) mask)
 +      // result: (VPRORQMasked256 [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPRORQ256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPRORQMasked256)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPROLVQ256 x y) mask)
 +      // result: (VPROLVQMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPROLVQ256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPROLVQMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPRORVQ256 x y) mask)
 +      // result: (VPRORVQMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPRORVQ256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPRORVQMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VSCALEFPD256 x y) mask)
 +      // result: (VSCALEFPDMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VSCALEFPD256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VSCALEFPDMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPSHLDQ256 [a] x y) mask)
 +      // result: (VPSHLDQMasked256 [a] x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHLDQ256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHLDQMasked256)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPSLLQ256 x y) mask)
 +      // result: (VPSLLQMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSLLQ256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSLLQMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPSHRDQ256 [a] x y) mask)
 +      // result: (VPSHRDQMasked256 [a] x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHRDQ256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHRDQMasked256)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPSRAQ256 x y) mask)
 +      // result: (VPSRAQMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRAQ256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRAQMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPSRLQ256 x y) mask)
 +      // result: (VPSRLQMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRLQ256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRLQMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPSHLDVQ256 x y z) mask)
 +      // result: (VPSHLDVQMasked256 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHLDVQ256 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHLDVQMasked256)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPSLLVQ256 x y) mask)
 +      // result: (VPSLLVQMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSLLVQ256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSLLVQMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPSHRDVQ256 x y z) mask)
 +      // result: (VPSHRDVQMasked256 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHRDVQ256 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHRDVQMasked256)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPSRAVQ256 x y) mask)
 +      // result: (VPSRAVQMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRAVQ256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRAVQMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPSRLVQ256 x y) mask)
 +      // result: (VPSRLVQMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRLVQ256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRLVQMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VSQRTPD256 x) mask)
 +      // result: (VSQRTPDMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VSQRTPD256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VSQRTPDMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VSUBPD256 x y) mask)
 +      // result: (VSUBPDMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VSUBPD256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VSUBPDMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPSUBQ256 x y) mask)
 +      // result: (VPSUBQMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSUBQ256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSUBQMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPSLLQ256const [a] x) mask)
 +      // result: (VPSLLQMasked256const [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSLLQ256const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSLLQMasked256const)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked256 (VPSRAQ256const [a] x) mask)
 +      // result: (VPSRAQMasked256const [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRAQ256const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRAQMasked256const)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMOVDQU64Masked512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMOVDQU64Masked512 (VPABSQ512 x) mask)
 +      // result: (VPABSQMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPABSQ512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPABSQMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VADDPD512 x y) mask)
 +      // result: (VADDPDMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VADDPD512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VADDPDMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPADDQ512 x y) mask)
 +      // result: (VPADDQMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPADDQ512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPADDQMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPANDQ512 x y) mask)
 +      // result: (VPANDQMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPANDQ512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPANDQMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPANDNQ512 x y) mask)
 +      // result: (VPANDNQMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPANDNQ512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPANDNQMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VBROADCASTSD512 x) mask)
 +      // result: (VBROADCASTSDMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VBROADCASTSD512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VBROADCASTSDMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPBROADCASTQ512 x) mask)
 +      // result: (VPBROADCASTQMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPBROADCASTQ512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPBROADCASTQMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VRNDSCALEPD512 [a] x) mask)
 +      // result: (VRNDSCALEPDMasked512 [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VRNDSCALEPD512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VRNDSCALEPDMasked512)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VREDUCEPD512 [a] x) mask)
 +      // result: (VREDUCEPDMasked512 [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VREDUCEPD512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VREDUCEPDMasked512)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VDIVPD512 x y) mask)
 +      // result: (VDIVPDMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VDIVPD512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VDIVPDMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPLZCNTQ512 x) mask)
 +      // result: (VPLZCNTQMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPLZCNTQ512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPLZCNTQMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VMAXPD512 x y) mask)
 +      // result: (VMAXPDMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VMAXPD512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VMAXPDMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPMAXSQ512 x y) mask)
 +      // result: (VPMAXSQMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMAXSQ512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMAXSQMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPMAXUQ512 x y) mask)
 +      // result: (VPMAXUQMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMAXUQ512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMAXUQMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VMINPD512 x y) mask)
 +      // result: (VMINPDMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VMINPD512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VMINPDMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPMINSQ512 x y) mask)
 +      // result: (VPMINSQMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMINSQ512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMINSQMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPMINUQ512 x y) mask)
 +      // result: (VPMINUQMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMINUQ512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMINUQMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VFMADD213PD512 x y z) mask)
 +      // result: (VFMADD213PDMasked512 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VFMADD213PD512 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VFMADD213PDMasked512)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VFMADDSUB213PD512 x y z) mask)
 +      // result: (VFMADDSUB213PDMasked512 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VFMADDSUB213PD512 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VFMADDSUB213PDMasked512)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VMULPD512 x y) mask)
 +      // result: (VMULPDMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VMULPD512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VMULPDMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPMULLQ512 x y) mask)
 +      // result: (VPMULLQMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMULLQ512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMULLQMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VFMSUBADD213PD512 x y z) mask)
 +      // result: (VFMSUBADD213PDMasked512 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VFMSUBADD213PD512 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VFMSUBADD213PDMasked512)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPOPCNTQ512 x) mask)
 +      // result: (VPOPCNTQMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPOPCNTQ512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPOPCNTQMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPORQ512 x y) mask)
 +      // result: (VPORQMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPORQ512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPORQMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPERMI2PD512 x y z) mask)
 +      // result: (VPERMI2PDMasked512 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMI2PD512 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMI2PDMasked512)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPERMI2Q512 x y z) mask)
 +      // result: (VPERMI2QMasked512 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMI2Q512 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMI2QMasked512)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPERMPD512 x y) mask)
 +      // result: (VPERMPDMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMPD512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMPDMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPERMQ512 x y) mask)
 +      // result: (VPERMQMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMQ512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMQMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VRCP14PD512 x) mask)
 +      // result: (VRCP14PDMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VRCP14PD512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VRCP14PDMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VRSQRT14PD512 x) mask)
 +      // result: (VRSQRT14PDMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VRSQRT14PD512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VRSQRT14PDMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPROLQ512 [a] x) mask)
 +      // result: (VPROLQMasked512 [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPROLQ512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPROLQMasked512)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPRORQ512 [a] x) mask)
 +      // result: (VPRORQMasked512 [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPRORQ512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPRORQMasked512)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPROLVQ512 x y) mask)
 +      // result: (VPROLVQMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPROLVQ512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPROLVQMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPRORVQ512 x y) mask)
 +      // result: (VPRORVQMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPRORVQ512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPRORVQMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VSCALEFPD512 x y) mask)
 +      // result: (VSCALEFPDMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VSCALEFPD512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VSCALEFPDMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPSHLDQ512 [a] x y) mask)
 +      // result: (VPSHLDQMasked512 [a] x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHLDQ512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHLDQMasked512)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPSLLQ512 x y) mask)
 +      // result: (VPSLLQMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSLLQ512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSLLQMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPSHRDQ512 [a] x y) mask)
 +      // result: (VPSHRDQMasked512 [a] x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHRDQ512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHRDQMasked512)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPSRAQ512 x y) mask)
 +      // result: (VPSRAQMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRAQ512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRAQMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPSRLQ512 x y) mask)
 +      // result: (VPSRLQMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRLQ512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRLQMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPSHLDVQ512 x y z) mask)
 +      // result: (VPSHLDVQMasked512 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHLDVQ512 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHLDVQMasked512)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPSLLVQ512 x y) mask)
 +      // result: (VPSLLVQMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSLLVQ512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSLLVQMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPSHRDVQ512 x y z) mask)
 +      // result: (VPSHRDVQMasked512 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHRDVQ512 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHRDVQMasked512)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPSRAVQ512 x y) mask)
 +      // result: (VPSRAVQMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRAVQ512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRAVQMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPSRLVQ512 x y) mask)
 +      // result: (VPSRLVQMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRLVQ512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRLVQMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VSQRTPD512 x) mask)
 +      // result: (VSQRTPDMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VSQRTPD512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VSQRTPDMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VSUBPD512 x y) mask)
 +      // result: (VSUBPDMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VSUBPD512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VSUBPDMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPSUBQ512 x y) mask)
 +      // result: (VPSUBQMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSUBQ512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSUBQMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPXORQ512 x y) mask)
 +      // result: (VPXORQMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPXORQ512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPXORQMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPSLLQ512const [a] x) mask)
 +      // result: (VPSLLQMasked512const [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSLLQ512const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSLLQMasked512const)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU64Masked512 (VPSRAQ512const [a] x) mask)
 +      // result: (VPSRAQMasked512const [a] x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSRAQ512const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSRAQMasked512const)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMOVDQU8Masked128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMOVDQU8Masked128 (VPABSB128 x) mask)
 +      // result: (VPABSBMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPABSB128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPABSBMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked128 (VPADDB128 x y) mask)
 +      // result: (VPADDBMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPADDB128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPADDBMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked128 (VPADDSB128 x y) mask)
 +      // result: (VPADDSBMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPADDSB128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPADDSBMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked128 (VPADDUSB128 x y) mask)
 +      // result: (VPADDUSBMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPADDUSB128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPADDUSBMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked128 (VPAVGB128 x y) mask)
 +      // result: (VPAVGBMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPAVGB128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPAVGBMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked128 (VPBROADCASTB128 x) mask)
 +      // result: (VPBROADCASTBMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPBROADCASTB128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPBROADCASTBMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked128 (VPMOVSXBW128 x) mask)
 +      // result: (VPMOVSXBWMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVSXBW128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVSXBWMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked128 (VPMOVSXBD128 x) mask)
 +      // result: (VPMOVSXBDMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVSXBD128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVSXBDMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked128 (VPMOVSXBQ128 x) mask)
 +      // result: (VPMOVSXBQMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVSXBQ128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVSXBQMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked128 (VPMOVZXBW128 x) mask)
 +      // result: (VPMOVZXBWMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVZXBW128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVZXBWMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked128 (VPMOVZXBD128 x) mask)
 +      // result: (VPMOVZXBDMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVZXBD128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVZXBDMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked128 (VPMOVZXBQ128 x) mask)
 +      // result: (VPMOVZXBQMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVZXBQ128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVZXBQMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked128 (VGF2P8AFFINEINVQB128 [a] x y) mask)
 +      // result: (VGF2P8AFFINEINVQBMasked128 [a] x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VGF2P8AFFINEINVQB128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VGF2P8AFFINEINVQBMasked128)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked128 (VGF2P8AFFINEQB128 [a] x y) mask)
 +      // result: (VGF2P8AFFINEQBMasked128 [a] x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VGF2P8AFFINEQB128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VGF2P8AFFINEQBMasked128)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked128 (VGF2P8MULB128 x y) mask)
 +      // result: (VGF2P8MULBMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VGF2P8MULB128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VGF2P8MULBMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked128 (VPMAXSB128 x y) mask)
 +      // result: (VPMAXSBMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMAXSB128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMAXSBMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked128 (VPMAXUB128 x y) mask)
 +      // result: (VPMAXUBMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMAXUB128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMAXUBMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked128 (VPMINSB128 x y) mask)
 +      // result: (VPMINSBMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMINSB128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMINSBMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked128 (VPMINUB128 x y) mask)
 +      // result: (VPMINUBMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMINUB128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMINUBMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked128 (VPOPCNTB128 x) mask)
 +      // result: (VPOPCNTBMasked128 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPOPCNTB128 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPOPCNTBMasked128)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked128 (VPERMI2B128 x y z) mask)
 +      // result: (VPERMI2BMasked128 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMI2B128 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMI2BMasked128)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked128 (VPSHUFB128 x y) mask)
 +      // result: (VPSHUFBMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHUFB128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHUFBMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked128 (VPSUBB128 x y) mask)
 +      // result: (VPSUBBMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSUBB128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSUBBMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked128 (VPSUBSB128 x y) mask)
 +      // result: (VPSUBSBMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSUBSB128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSUBSBMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked128 (VPSUBUSB128 x y) mask)
 +      // result: (VPSUBUSBMasked128 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSUBUSB128 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSUBUSBMasked128)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMOVDQU8Masked256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMOVDQU8Masked256 (VPABSB256 x) mask)
 +      // result: (VPABSBMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPABSB256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPABSBMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked256 (VPADDB256 x y) mask)
 +      // result: (VPADDBMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPADDB256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPADDBMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked256 (VPADDSB256 x y) mask)
 +      // result: (VPADDSBMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPADDSB256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPADDSBMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked256 (VPADDUSB256 x y) mask)
 +      // result: (VPADDUSBMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPADDUSB256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPADDUSBMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked256 (VPAVGB256 x y) mask)
 +      // result: (VPAVGBMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPAVGB256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPAVGBMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked256 (VPBROADCASTB256 x) mask)
 +      // result: (VPBROADCASTBMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPBROADCASTB256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPBROADCASTBMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked256 (VPMOVSXBW256 x) mask)
 +      // result: (VPMOVSXBWMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVSXBW256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVSXBWMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked256 (VPMOVSXBD256 x) mask)
 +      // result: (VPMOVSXBDMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVSXBD256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVSXBDMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked256 (VPMOVSXBQ256 x) mask)
 +      // result: (VPMOVSXBQMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVSXBQ256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVSXBQMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked256 (VPMOVZXBW256 x) mask)
 +      // result: (VPMOVZXBWMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVZXBW256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVZXBWMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked256 (VPMOVZXBD256 x) mask)
 +      // result: (VPMOVZXBDMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVZXBD256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVZXBDMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked256 (VPMOVZXBQ256 x) mask)
 +      // result: (VPMOVZXBQMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVZXBQ256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVZXBQMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked256 (VGF2P8AFFINEINVQB256 [a] x y) mask)
 +      // result: (VGF2P8AFFINEINVQBMasked256 [a] x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VGF2P8AFFINEINVQB256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VGF2P8AFFINEINVQBMasked256)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked256 (VGF2P8AFFINEQB256 [a] x y) mask)
 +      // result: (VGF2P8AFFINEQBMasked256 [a] x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VGF2P8AFFINEQB256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VGF2P8AFFINEQBMasked256)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked256 (VGF2P8MULB256 x y) mask)
 +      // result: (VGF2P8MULBMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VGF2P8MULB256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VGF2P8MULBMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked256 (VPMAXSB256 x y) mask)
 +      // result: (VPMAXSBMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMAXSB256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMAXSBMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked256 (VPMAXUB256 x y) mask)
 +      // result: (VPMAXUBMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMAXUB256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMAXUBMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked256 (VPMINSB256 x y) mask)
 +      // result: (VPMINSBMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMINSB256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMINSBMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked256 (VPMINUB256 x y) mask)
 +      // result: (VPMINUBMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMINUB256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMINUBMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked256 (VPOPCNTB256 x) mask)
 +      // result: (VPOPCNTBMasked256 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPOPCNTB256 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPOPCNTBMasked256)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked256 (VPERMI2B256 x y z) mask)
 +      // result: (VPERMI2BMasked256 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMI2B256 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMI2BMasked256)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked256 (VPSHUFB256 x y) mask)
 +      // result: (VPSHUFBMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHUFB256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHUFBMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked256 (VPERMB256 x y) mask)
 +      // result: (VPERMBMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMB256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMBMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked256 (VPSUBB256 x y) mask)
 +      // result: (VPSUBBMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSUBB256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSUBBMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked256 (VPSUBSB256 x y) mask)
 +      // result: (VPSUBSBMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSUBSB256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSUBSBMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked256 (VPSUBUSB256 x y) mask)
 +      // result: (VPSUBUSBMasked256 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSUBUSB256 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSUBUSBMasked256)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMOVDQU8Masked512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMOVDQU8Masked512 (VPABSB512 x) mask)
 +      // result: (VPABSBMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPABSB512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPABSBMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked512 (VPADDB512 x y) mask)
 +      // result: (VPADDBMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPADDB512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPADDBMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked512 (VPADDSB512 x y) mask)
 +      // result: (VPADDSBMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPADDSB512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPADDSBMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked512 (VPADDUSB512 x y) mask)
 +      // result: (VPADDUSBMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPADDUSB512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPADDUSBMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked512 (VPAVGB512 x y) mask)
 +      // result: (VPAVGBMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPAVGB512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPAVGBMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked512 (VPBROADCASTB512 x) mask)
 +      // result: (VPBROADCASTBMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPBROADCASTB512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPBROADCASTBMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked512 (VPMOVSXBW512 x) mask)
 +      // result: (VPMOVSXBWMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVSXBW512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVSXBWMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked512 (VPMOVSXBD512 x) mask)
 +      // result: (VPMOVSXBDMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVSXBD512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVSXBDMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked512 (VPMOVSXBQ512 x) mask)
 +      // result: (VPMOVSXBQMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVSXBQ512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVSXBQMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked512 (VPMOVZXBW512 x) mask)
 +      // result: (VPMOVZXBWMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVZXBW512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVZXBWMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked512 (VPMOVZXBD512 x) mask)
 +      // result: (VPMOVZXBDMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVZXBD512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVZXBDMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked512 (VPMOVZXBQ512 x) mask)
 +      // result: (VPMOVZXBQMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMOVZXBQ512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMOVZXBQMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked512 (VGF2P8AFFINEINVQB512 [a] x y) mask)
 +      // result: (VGF2P8AFFINEINVQBMasked512 [a] x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VGF2P8AFFINEINVQB512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VGF2P8AFFINEINVQBMasked512)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked512 (VGF2P8AFFINEQB512 [a] x y) mask)
 +      // result: (VGF2P8AFFINEQBMasked512 [a] x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VGF2P8AFFINEQB512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_0.AuxInt)
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VGF2P8AFFINEQBMasked512)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked512 (VGF2P8MULB512 x y) mask)
 +      // result: (VGF2P8MULBMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VGF2P8MULB512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VGF2P8MULBMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked512 (VPMAXSB512 x y) mask)
 +      // result: (VPMAXSBMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMAXSB512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMAXSBMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked512 (VPMAXUB512 x y) mask)
 +      // result: (VPMAXUBMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMAXUB512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMAXUBMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked512 (VPMINSB512 x y) mask)
 +      // result: (VPMINSBMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMINSB512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMINSBMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked512 (VPMINUB512 x y) mask)
 +      // result: (VPMINUBMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPMINUB512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPMINUBMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked512 (VPOPCNTB512 x) mask)
 +      // result: (VPOPCNTBMasked512 x mask)
 +      for {
 +              if v_0.Op != OpAMD64VPOPCNTB512 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPOPCNTBMasked512)
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked512 (VPERMI2B512 x y z) mask)
 +      // result: (VPERMI2BMasked512 x y z mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMI2B512 {
 +                      break
 +              }
 +              z := v_0.Args[2]
 +              x := v_0.Args[0]
 +              y := v_0.Args[1]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMI2BMasked512)
 +              v.AddArg4(x, y, z, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked512 (VPSHUFB512 x y) mask)
 +      // result: (VPSHUFBMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSHUFB512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSHUFBMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked512 (VPERMB512 x y) mask)
 +      // result: (VPERMBMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPERMB512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPERMBMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked512 (VPSUBB512 x y) mask)
 +      // result: (VPSUBBMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSUBB512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSUBBMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked512 (VPSUBSB512 x y) mask)
 +      // result: (VPSUBSBMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSUBSB512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSUBSBMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      // match: (VMOVDQU8Masked512 (VPSUBUSB512 x y) mask)
 +      // result: (VPSUBUSBMasked512 x y mask)
 +      for {
 +              if v_0.Op != OpAMD64VPSUBUSB512 {
 +                      break
 +              }
 +              y := v_0.Args[1]
 +              x := v_0.Args[0]
 +              mask := v_1
 +              v.reset(OpAMD64VPSUBUSBMasked512)
 +              v.AddArg3(x, y, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMOVDQUload128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMOVDQUload128 [off1] {sym} x:(ADDQconst [off2] ptr) mem)
 +      // cond: is32Bit(int64(off1)+int64(off2))
 +      // result: (VMOVDQUload128 [off1+off2] {sym} ptr mem)
 +      for {
 +              off1 := auxIntToInt32(v.AuxInt)
 +              sym := auxToSym(v.Aux)
 +              x := v_0
 +              if x.Op != OpAMD64ADDQconst {
 +                      break
 +              }
 +              off2 := auxIntToInt32(x.AuxInt)
 +              ptr := x.Args[0]
 +              mem := v_1
 +              if !(is32Bit(int64(off1) + int64(off2))) {
 +                      break
 +              }
 +              v.reset(OpAMD64VMOVDQUload128)
 +              v.AuxInt = int32ToAuxInt(off1 + off2)
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      // match: (VMOVDQUload128 [off1] {sym1} x:(LEAQ [off2] {sym2} base) mem)
 +      // cond: is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)
 +      // result: (VMOVDQUload128 [off1+off2] {mergeSym(sym1, sym2)} base mem)
 +      for {
 +              off1 := auxIntToInt32(v.AuxInt)
 +              sym1 := auxToSym(v.Aux)
 +              x := v_0
 +              if x.Op != OpAMD64LEAQ {
 +                      break
 +              }
 +              off2 := auxIntToInt32(x.AuxInt)
 +              sym2 := auxToSym(x.Aux)
 +              base := x.Args[0]
 +              mem := v_1
 +              if !(is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VMOVDQUload128)
 +              v.AuxInt = int32ToAuxInt(off1 + off2)
 +              v.Aux = symToAux(mergeSym(sym1, sym2))
 +              v.AddArg2(base, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMOVDQUload256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMOVDQUload256 [off1] {sym} x:(ADDQconst [off2] ptr) mem)
 +      // cond: is32Bit(int64(off1)+int64(off2))
 +      // result: (VMOVDQUload256 [off1+off2] {sym} ptr mem)
 +      for {
 +              off1 := auxIntToInt32(v.AuxInt)
 +              sym := auxToSym(v.Aux)
 +              x := v_0
 +              if x.Op != OpAMD64ADDQconst {
 +                      break
 +              }
 +              off2 := auxIntToInt32(x.AuxInt)
 +              ptr := x.Args[0]
 +              mem := v_1
 +              if !(is32Bit(int64(off1) + int64(off2))) {
 +                      break
 +              }
 +              v.reset(OpAMD64VMOVDQUload256)
 +              v.AuxInt = int32ToAuxInt(off1 + off2)
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      // match: (VMOVDQUload256 [off1] {sym1} x:(LEAQ [off2] {sym2} base) mem)
 +      // cond: is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)
 +      // result: (VMOVDQUload256 [off1+off2] {mergeSym(sym1, sym2)} base mem)
 +      for {
 +              off1 := auxIntToInt32(v.AuxInt)
 +              sym1 := auxToSym(v.Aux)
 +              x := v_0
 +              if x.Op != OpAMD64LEAQ {
 +                      break
 +              }
 +              off2 := auxIntToInt32(x.AuxInt)
 +              sym2 := auxToSym(x.Aux)
 +              base := x.Args[0]
 +              mem := v_1
 +              if !(is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VMOVDQUload256)
 +              v.AuxInt = int32ToAuxInt(off1 + off2)
 +              v.Aux = symToAux(mergeSym(sym1, sym2))
 +              v.AddArg2(base, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMOVDQUload512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMOVDQUload512 [off1] {sym} x:(ADDQconst [off2] ptr) mem)
 +      // cond: is32Bit(int64(off1)+int64(off2))
 +      // result: (VMOVDQUload512 [off1+off2] {sym} ptr mem)
 +      for {
 +              off1 := auxIntToInt32(v.AuxInt)
 +              sym := auxToSym(v.Aux)
 +              x := v_0
 +              if x.Op != OpAMD64ADDQconst {
 +                      break
 +              }
 +              off2 := auxIntToInt32(x.AuxInt)
 +              ptr := x.Args[0]
 +              mem := v_1
 +              if !(is32Bit(int64(off1) + int64(off2))) {
 +                      break
 +              }
 +              v.reset(OpAMD64VMOVDQUload512)
 +              v.AuxInt = int32ToAuxInt(off1 + off2)
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      // match: (VMOVDQUload512 [off1] {sym1} x:(LEAQ [off2] {sym2} base) mem)
 +      // cond: is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)
 +      // result: (VMOVDQUload512 [off1+off2] {mergeSym(sym1, sym2)} base mem)
 +      for {
 +              off1 := auxIntToInt32(v.AuxInt)
 +              sym1 := auxToSym(v.Aux)
 +              x := v_0
 +              if x.Op != OpAMD64LEAQ {
 +                      break
 +              }
 +              off2 := auxIntToInt32(x.AuxInt)
 +              sym2 := auxToSym(x.Aux)
 +              base := x.Args[0]
 +              mem := v_1
 +              if !(is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VMOVDQUload512)
 +              v.AuxInt = int32ToAuxInt(off1 + off2)
 +              v.Aux = symToAux(mergeSym(sym1, sym2))
 +              v.AddArg2(base, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMOVDQUstore128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMOVDQUstore128 [off1] {sym} x:(ADDQconst [off2] ptr) val mem)
 +      // cond: is32Bit(int64(off1)+int64(off2))
 +      // result: (VMOVDQUstore128 [off1+off2] {sym} ptr val mem)
 +      for {
 +              off1 := auxIntToInt32(v.AuxInt)
 +              sym := auxToSym(v.Aux)
 +              x := v_0
 +              if x.Op != OpAMD64ADDQconst {
 +                      break
 +              }
 +              off2 := auxIntToInt32(x.AuxInt)
 +              ptr := x.Args[0]
 +              val := v_1
 +              mem := v_2
 +              if !(is32Bit(int64(off1) + int64(off2))) {
 +                      break
 +              }
 +              v.reset(OpAMD64VMOVDQUstore128)
 +              v.AuxInt = int32ToAuxInt(off1 + off2)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, val, mem)
 +              return true
 +      }
 +      // match: (VMOVDQUstore128 [off1] {sym1} x:(LEAQ [off2] {sym2} base) val mem)
 +      // cond: is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)
 +      // result: (VMOVDQUstore128 [off1+off2] {mergeSym(sym1, sym2)} base val mem)
 +      for {
 +              off1 := auxIntToInt32(v.AuxInt)
 +              sym1 := auxToSym(v.Aux)
 +              x := v_0
 +              if x.Op != OpAMD64LEAQ {
 +                      break
 +              }
 +              off2 := auxIntToInt32(x.AuxInt)
 +              sym2 := auxToSym(x.Aux)
 +              base := x.Args[0]
 +              val := v_1
 +              mem := v_2
 +              if !(is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VMOVDQUstore128)
 +              v.AuxInt = int32ToAuxInt(off1 + off2)
 +              v.Aux = symToAux(mergeSym(sym1, sym2))
 +              v.AddArg3(base, val, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMOVDQUstore256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMOVDQUstore256 [off1] {sym} x:(ADDQconst [off2] ptr) val mem)
 +      // cond: is32Bit(int64(off1)+int64(off2))
 +      // result: (VMOVDQUstore256 [off1+off2] {sym} ptr val mem)
 +      for {
 +              off1 := auxIntToInt32(v.AuxInt)
 +              sym := auxToSym(v.Aux)
 +              x := v_0
 +              if x.Op != OpAMD64ADDQconst {
 +                      break
 +              }
 +              off2 := auxIntToInt32(x.AuxInt)
 +              ptr := x.Args[0]
 +              val := v_1
 +              mem := v_2
 +              if !(is32Bit(int64(off1) + int64(off2))) {
 +                      break
 +              }
 +              v.reset(OpAMD64VMOVDQUstore256)
 +              v.AuxInt = int32ToAuxInt(off1 + off2)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, val, mem)
 +              return true
 +      }
 +      // match: (VMOVDQUstore256 [off1] {sym1} x:(LEAQ [off2] {sym2} base) val mem)
 +      // cond: is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)
 +      // result: (VMOVDQUstore256 [off1+off2] {mergeSym(sym1, sym2)} base val mem)
 +      for {
 +              off1 := auxIntToInt32(v.AuxInt)
 +              sym1 := auxToSym(v.Aux)
 +              x := v_0
 +              if x.Op != OpAMD64LEAQ {
 +                      break
 +              }
 +              off2 := auxIntToInt32(x.AuxInt)
 +              sym2 := auxToSym(x.Aux)
 +              base := x.Args[0]
 +              val := v_1
 +              mem := v_2
 +              if !(is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VMOVDQUstore256)
 +              v.AuxInt = int32ToAuxInt(off1 + off2)
 +              v.Aux = symToAux(mergeSym(sym1, sym2))
 +              v.AddArg3(base, val, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMOVDQUstore512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMOVDQUstore512 [off1] {sym} x:(ADDQconst [off2] ptr) val mem)
 +      // cond: is32Bit(int64(off1)+int64(off2))
 +      // result: (VMOVDQUstore512 [off1+off2] {sym} ptr val mem)
 +      for {
 +              off1 := auxIntToInt32(v.AuxInt)
 +              sym := auxToSym(v.Aux)
 +              x := v_0
 +              if x.Op != OpAMD64ADDQconst {
 +                      break
 +              }
 +              off2 := auxIntToInt32(x.AuxInt)
 +              ptr := x.Args[0]
 +              val := v_1
 +              mem := v_2
 +              if !(is32Bit(int64(off1) + int64(off2))) {
 +                      break
 +              }
 +              v.reset(OpAMD64VMOVDQUstore512)
 +              v.AuxInt = int32ToAuxInt(off1 + off2)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, val, mem)
 +              return true
 +      }
 +      // match: (VMOVDQUstore512 [off1] {sym1} x:(LEAQ [off2] {sym2} base) val mem)
 +      // cond: is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)
 +      // result: (VMOVDQUstore512 [off1+off2] {mergeSym(sym1, sym2)} base val mem)
 +      for {
 +              off1 := auxIntToInt32(v.AuxInt)
 +              sym1 := auxToSym(v.Aux)
 +              x := v_0
 +              if x.Op != OpAMD64LEAQ {
 +                      break
 +              }
 +              off2 := auxIntToInt32(x.AuxInt)
 +              sym2 := auxToSym(x.Aux)
 +              base := x.Args[0]
 +              val := v_1
 +              mem := v_2
 +              if !(is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VMOVDQUstore512)
 +              v.AuxInt = int32ToAuxInt(off1 + off2)
 +              v.Aux = symToAux(mergeSym(sym1, sym2))
 +              v.AddArg3(base, val, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMOVQ(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (VMOVQ x:(MOVQload [off] {sym} ptr mem))
 +      // cond: x.Uses == 1 && clobber(x)
 +      // result: @x.Block (VMOVQload <v.Type> [off] {sym} ptr mem)
 +      for {
 +              x := v_0
 +              if x.Op != OpAMD64MOVQload {
 +                      break
 +              }
 +              off := auxIntToInt32(x.AuxInt)
 +              sym := auxToSym(x.Aux)
 +              mem := x.Args[1]
 +              ptr := x.Args[0]
 +              if !(x.Uses == 1 && clobber(x)) {
 +                      break
 +              }
 +              b = x.Block
 +              v0 := b.NewValue0(x.Pos, OpAMD64VMOVQload, v.Type)
 +              v.copyOf(v0)
 +              v0.AuxInt = int32ToAuxInt(off)
 +              v0.Aux = symToAux(sym)
 +              v0.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMOVSDf2v(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (VMOVSDf2v x:(MOVSDload [off] {sym} ptr mem))
 +      // cond: x.Uses == 1 && clobber(x)
 +      // result: @x.Block (VMOVSDload <v.Type> [off] {sym} ptr mem)
 +      for {
 +              x := v_0
 +              if x.Op != OpAMD64MOVSDload {
 +                      break
 +              }
 +              off := auxIntToInt32(x.AuxInt)
 +              sym := auxToSym(x.Aux)
 +              mem := x.Args[1]
 +              ptr := x.Args[0]
 +              if !(x.Uses == 1 && clobber(x)) {
 +                      break
 +              }
 +              b = x.Block
 +              v0 := b.NewValue0(x.Pos, OpAMD64VMOVSDload, v.Type)
 +              v.copyOf(v0)
 +              v0.AuxInt = int32ToAuxInt(off)
 +              v0.Aux = symToAux(sym)
 +              v0.AddArg2(ptr, mem)
 +              return true
 +      }
 +      // match: (VMOVSDf2v x:(MOVSDconst [c] ))
 +      // result: (VMOVSDconst [c] )
 +      for {
 +              x := v_0
 +              if x.Op != OpAMD64MOVSDconst {
 +                      break
 +              }
 +              c := auxIntToFloat64(x.AuxInt)
 +              v.reset(OpAMD64VMOVSDconst)
 +              v.AuxInt = float64ToAuxInt(c)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMOVSSf2v(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (VMOVSSf2v x:(MOVSSload [off] {sym} ptr mem))
 +      // cond: x.Uses == 1 && clobber(x)
 +      // result: @x.Block (VMOVSSload <v.Type> [off] {sym} ptr mem)
 +      for {
 +              x := v_0
 +              if x.Op != OpAMD64MOVSSload {
 +                      break
 +              }
 +              off := auxIntToInt32(x.AuxInt)
 +              sym := auxToSym(x.Aux)
 +              mem := x.Args[1]
 +              ptr := x.Args[0]
 +              if !(x.Uses == 1 && clobber(x)) {
 +                      break
 +              }
 +              b = x.Block
 +              v0 := b.NewValue0(x.Pos, OpAMD64VMOVSSload, v.Type)
 +              v.copyOf(v0)
 +              v0.AuxInt = int32ToAuxInt(off)
 +              v0.Aux = symToAux(sym)
 +              v0.AddArg2(ptr, mem)
 +              return true
 +      }
 +      // match: (VMOVSSf2v x:(MOVSSconst [c] ))
 +      // result: (VMOVSSconst [c] )
 +      for {
 +              x := v_0
 +              if x.Op != OpAMD64MOVSSconst {
 +                      break
 +              }
 +              c := auxIntToFloat32(x.AuxInt)
 +              v.reset(OpAMD64VMOVSSconst)
 +              v.AuxInt = float32ToAuxInt(c)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMULPD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMULPD512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VMULPD512load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMULPD512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMULPDMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMULPDMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VMULPDMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMULPDMasked128load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMULPDMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMULPDMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VMULPDMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMULPDMasked256load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMULPDMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMULPDMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VMULPDMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMULPDMasked512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMULPS512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMULPS512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VMULPS512load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMULPS512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMULPSMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMULPSMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VMULPSMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMULPSMasked128load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMULPSMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMULPSMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VMULPSMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMULPSMasked256load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VMULPSMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VMULPSMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VMULPSMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMULPSMasked512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPABSD512(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPABSD512 l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPABSD512load {sym} [off] ptr mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPABSD512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPABSDMasked128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPABSDMasked128 l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPABSDMasked128load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPABSDMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPABSDMasked256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPABSDMasked256 l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPABSDMasked256load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPABSDMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPABSDMasked512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPABSDMasked512 l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPABSDMasked512load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPABSDMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPABSQ128(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPABSQ128 l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPABSQ128load {sym} [off] ptr mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPABSQ128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPABSQ256(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPABSQ256 l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPABSQ256load {sym} [off] ptr mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPABSQ256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPABSQ512(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPABSQ512 l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPABSQ512load {sym} [off] ptr mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPABSQ512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPABSQMasked128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPABSQMasked128 l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPABSQMasked128load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPABSQMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPABSQMasked256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPABSQMasked256 l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPABSQMasked256load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPABSQMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPABSQMasked512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPABSQMasked512 l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPABSQMasked512load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPABSQMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPACKSSDW512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPACKSSDW512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPACKSSDW512load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPACKSSDW512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPACKSSDWMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPACKSSDWMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPACKSSDWMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPACKSSDWMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPACKSSDWMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPACKSSDWMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPACKSSDWMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPACKSSDWMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPACKSSDWMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPACKSSDWMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPACKSSDWMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPACKSSDWMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPACKUSDW512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPACKUSDW512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPACKUSDW512load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPACKUSDW512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPACKUSDWMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPACKUSDWMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPACKUSDWMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPACKUSDWMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPACKUSDWMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPACKUSDWMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPACKUSDWMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPACKUSDWMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPACKUSDWMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPACKUSDWMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPACKUSDWMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPACKUSDWMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPADDD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPADDD512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPADDD512load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPADDD512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPADDDMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPADDDMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPADDDMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPADDDMasked128load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPADDDMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPADDDMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPADDDMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPADDDMasked256load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPADDDMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPADDDMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPADDDMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPADDDMasked512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPADDQ512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPADDQ512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPADDQ512load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPADDQ512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPADDQMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPADDQMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPADDQMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPADDQMasked128load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPADDQMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPADDQMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPADDQMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPADDQMasked256load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPADDQMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPADDQMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPADDQMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPADDQMasked512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPAND128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPAND128 x (VPMOVMToVec8x16 k))
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VMOVDQU8Masked128 x k)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      if v_1.Op != OpAMD64VPMOVMToVec8x16 {
 +                              continue
 +                      }
 +                      k := v_1.Args[0]
 +                      if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMOVDQU8Masked128)
 +                      v.AddArg2(x, k)
 +                      return true
 +              }
 +              break
 +      }
 +      // match: (VPAND128 x (VPMOVMToVec16x8 k))
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VMOVDQU16Masked128 x k)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      if v_1.Op != OpAMD64VPMOVMToVec16x8 {
 +                              continue
 +                      }
 +                      k := v_1.Args[0]
 +                      if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMOVDQU16Masked128)
 +                      v.AddArg2(x, k)
 +                      return true
 +              }
 +              break
 +      }
 +      // match: (VPAND128 x (VPMOVMToVec32x4 k))
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VMOVDQU32Masked128 x k)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      if v_1.Op != OpAMD64VPMOVMToVec32x4 {
 +                              continue
 +                      }
 +                      k := v_1.Args[0]
 +                      if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMOVDQU32Masked128)
 +                      v.AddArg2(x, k)
 +                      return true
 +              }
 +              break
 +      }
 +      // match: (VPAND128 x (VPMOVMToVec64x2 k))
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VMOVDQU64Masked128 x k)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      if v_1.Op != OpAMD64VPMOVMToVec64x2 {
 +                              continue
 +                      }
 +                      k := v_1.Args[0]
 +                      if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMOVDQU64Masked128)
 +                      v.AddArg2(x, k)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPAND256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPAND256 x (VPMOVMToVec8x32 k))
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VMOVDQU8Masked256 x k)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      if v_1.Op != OpAMD64VPMOVMToVec8x32 {
 +                              continue
 +                      }
 +                      k := v_1.Args[0]
 +                      if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMOVDQU8Masked256)
 +                      v.AddArg2(x, k)
 +                      return true
 +              }
 +              break
 +      }
 +      // match: (VPAND256 x (VPMOVMToVec16x16 k))
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VMOVDQU16Masked256 x k)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      if v_1.Op != OpAMD64VPMOVMToVec16x16 {
 +                              continue
 +                      }
 +                      k := v_1.Args[0]
 +                      if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMOVDQU16Masked256)
 +                      v.AddArg2(x, k)
 +                      return true
 +              }
 +              break
 +      }
 +      // match: (VPAND256 x (VPMOVMToVec32x8 k))
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VMOVDQU32Masked256 x k)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      if v_1.Op != OpAMD64VPMOVMToVec32x8 {
 +                              continue
 +                      }
 +                      k := v_1.Args[0]
 +                      if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMOVDQU32Masked256)
 +                      v.AddArg2(x, k)
 +                      return true
 +              }
 +              break
 +      }
 +      // match: (VPAND256 x (VPMOVMToVec64x4 k))
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VMOVDQU64Masked256 x k)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      if v_1.Op != OpAMD64VPMOVMToVec64x4 {
 +                              continue
 +                      }
 +                      k := v_1.Args[0]
 +                      if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VMOVDQU64Masked256)
 +                      v.AddArg2(x, k)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPANDD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPANDD512 x (VPMOVMToVec64x8 k))
 +      // result: (VMOVDQU64Masked512 x k)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      if v_1.Op != OpAMD64VPMOVMToVec64x8 {
 +                              continue
 +                      }
 +                      k := v_1.Args[0]
 +                      v.reset(OpAMD64VMOVDQU64Masked512)
 +                      v.AddArg2(x, k)
 +                      return true
 +              }
 +              break
 +      }
 +      // match: (VPANDD512 x (VPMOVMToVec32x16 k))
 +      // result: (VMOVDQU32Masked512 x k)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      if v_1.Op != OpAMD64VPMOVMToVec32x16 {
 +                              continue
 +                      }
 +                      k := v_1.Args[0]
 +                      v.reset(OpAMD64VMOVDQU32Masked512)
 +                      v.AddArg2(x, k)
 +                      return true
 +              }
 +              break
 +      }
 +      // match: (VPANDD512 x (VPMOVMToVec16x32 k))
 +      // result: (VMOVDQU16Masked512 x k)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      if v_1.Op != OpAMD64VPMOVMToVec16x32 {
 +                              continue
 +                      }
 +                      k := v_1.Args[0]
 +                      v.reset(OpAMD64VMOVDQU16Masked512)
 +                      v.AddArg2(x, k)
 +                      return true
 +              }
 +              break
 +      }
 +      // match: (VPANDD512 x (VPMOVMToVec8x64 k))
 +      // result: (VMOVDQU8Masked512 x k)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      if v_1.Op != OpAMD64VPMOVMToVec8x64 {
 +                              continue
 +                      }
 +                      k := v_1.Args[0]
 +                      v.reset(OpAMD64VMOVDQU8Masked512)
 +                      v.AddArg2(x, k)
 +                      return true
 +              }
 +              break
 +      }
 +      // match: (VPANDD512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPANDD512load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPANDD512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPANDDMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPANDDMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPANDDMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPANDDMasked128load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPANDDMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPANDDMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPANDDMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPANDDMasked256load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPANDDMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPANDDMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPANDDMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPANDDMasked512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPANDND512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPANDND512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPANDND512load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPANDND512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPANDNDMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPANDNDMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPANDNDMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPANDNDMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPANDNDMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPANDNDMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPANDNDMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPANDNDMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPANDNDMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPANDNDMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPANDNDMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPANDNDMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPANDNQ512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPANDNQ512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPANDNQ512load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPANDNQ512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPANDNQMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPANDNQMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPANDNQMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPANDNQMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPANDNQMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPANDNQMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPANDNQMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPANDNQMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPANDNQMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPANDNQMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPANDNQMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPANDNQMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPANDQ512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPANDQ512 x (VPMOVMToVec64x8 k))
 +      // result: (VMOVDQU64Masked512 x k)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      if v_1.Op != OpAMD64VPMOVMToVec64x8 {
 +                              continue
 +                      }
 +                      k := v_1.Args[0]
 +                      v.reset(OpAMD64VMOVDQU64Masked512)
 +                      v.AddArg2(x, k)
 +                      return true
 +              }
 +              break
 +      }
 +      // match: (VPANDQ512 x (VPMOVMToVec32x16 k))
 +      // result: (VMOVDQU32Masked512 x k)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      if v_1.Op != OpAMD64VPMOVMToVec32x16 {
 +                              continue
 +                      }
 +                      k := v_1.Args[0]
 +                      v.reset(OpAMD64VMOVDQU32Masked512)
 +                      v.AddArg2(x, k)
 +                      return true
 +              }
 +              break
 +      }
 +      // match: (VPANDQ512 x (VPMOVMToVec16x32 k))
 +      // result: (VMOVDQU16Masked512 x k)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      if v_1.Op != OpAMD64VPMOVMToVec16x32 {
 +                              continue
 +                      }
 +                      k := v_1.Args[0]
 +                      v.reset(OpAMD64VMOVDQU16Masked512)
 +                      v.AddArg2(x, k)
 +                      return true
 +              }
 +              break
 +      }
 +      // match: (VPANDQ512 x (VPMOVMToVec8x64 k))
 +      // result: (VMOVDQU8Masked512 x k)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      if v_1.Op != OpAMD64VPMOVMToVec8x64 {
 +                              continue
 +                      }
 +                      k := v_1.Args[0]
 +                      v.reset(OpAMD64VMOVDQU8Masked512)
 +                      v.AddArg2(x, k)
 +                      return true
 +              }
 +              break
 +      }
 +      // match: (VPANDQ512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPANDQ512load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPANDQ512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPANDQMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPANDQMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPANDQMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPANDQMasked128load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPANDQMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPANDQMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPANDQMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPANDQMasked256load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPANDQMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPANDQMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPANDQMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPANDQMasked512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPBLENDMBMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPBLENDMBMasked512 dst (VGF2P8MULB512 x y) mask)
 +      // result: (VGF2P8MULBMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VGF2P8MULB512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VGF2P8MULBMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMBMasked512 dst (VPOPCNTB512 x) mask)
 +      // result: (VPOPCNTBMasked512Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPOPCNTB512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPOPCNTBMasked512Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMBMasked512 dst (VPSUBSB512 x y) mask)
 +      // result: (VPSUBSBMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSUBSB512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSUBSBMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMBMasked512 dst (VPSUBB512 x y) mask)
 +      // result: (VPSUBBMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSUBB512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSUBBMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMBMasked512 dst (VPMINSB512 x y) mask)
 +      // result: (VPMINSBMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMINSB512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMINSBMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMBMasked512 dst (VPADDB512 x y) mask)
 +      // result: (VPADDBMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPADDB512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPADDBMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMBMasked512 dst (VPMAXUB512 x y) mask)
 +      // result: (VPMAXUBMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMAXUB512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMAXUBMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMBMasked512 dst (VPADDUSB512 x y) mask)
 +      // result: (VPADDUSBMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPADDUSB512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPADDUSBMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMBMasked512 dst (VPAVGB512 x y) mask)
 +      // result: (VPAVGBMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPAVGB512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPAVGBMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMBMasked512 dst (VPMINUB512 x y) mask)
 +      // result: (VPMINUBMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMINUB512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMINUBMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMBMasked512 dst (VPMAXSB512 x y) mask)
 +      // result: (VPMAXSBMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMAXSB512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMAXSBMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMBMasked512 dst (VPSUBUSB512 x y) mask)
 +      // result: (VPSUBUSBMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSUBUSB512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSUBUSBMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMBMasked512 dst (VPSHUFB512 x y) mask)
 +      // result: (VPSHUFBMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSHUFB512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSHUFBMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMBMasked512 dst (VPABSB512 x) mask)
 +      // result: (VPABSBMasked512Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPABSB512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPABSBMasked512Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMBMasked512 dst (VPADDSB512 x y) mask)
 +      // result: (VPADDSBMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPADDSB512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPADDSBMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPBLENDMDMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPBLENDMDMasked512 dst (VPMOVSDW256 x) mask)
 +      // result: (VPMOVSDWMasked256Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVSDW256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMOVSDWMasked256Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPLZCNTD512 x) mask)
 +      // result: (VPLZCNTDMasked512Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPLZCNTD512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPLZCNTDMasked512Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPMULLD512 x y) mask)
 +      // result: (VPMULLDMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMULLD512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMULLDMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VMAXPS512 x y) mask)
 +      // result: (VMAXPSMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VMAXPS512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VMAXPSMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPMOVUSDB128 x) mask)
 +      // result: (VPMOVUSDBMasked128Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVUSDB128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMOVUSDBMasked128Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VRSQRT14PS512 x) mask)
 +      // result: (VRSQRT14PSMasked512Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VRSQRT14PS512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VRSQRT14PSMasked512Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPMOVDW256 x) mask)
 +      // result: (VPMOVDWMasked256Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVDW256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMOVDWMasked256Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VRCP14PS512 x) mask)
 +      // result: (VRCP14PSMasked512Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VRCP14PS512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VRCP14PSMasked512Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VREDUCEPS512 [a] x) mask)
 +      // result: (VREDUCEPSMasked512Merging dst [a] x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VREDUCEPS512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VREDUCEPSMasked512Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VDIVPS512 x y) mask)
 +      // result: (VDIVPSMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VDIVPS512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VDIVPSMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPSRLVD512 x y) mask)
 +      // result: (VPSRLVDMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSRLVD512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSRLVDMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPSUBD512 x y) mask)
 +      // result: (VPSUBDMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSUBD512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSUBDMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPROLD512 [a] x) mask)
 +      // result: (VPROLDMasked512Merging dst [a] x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPROLD512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPROLDMasked512Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPORD512 x y) mask)
 +      // result: (VPORDMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPORD512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPORDMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPSHLDD512 [a] x y) mask)
 +      // result: (VPSHLDDMasked512Merging dst [a] x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSHLDD512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSHLDDMasked512Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPACKUSDW512 x y) mask)
 +      // result: (VPACKUSDWMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPACKUSDW512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPACKUSDWMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPMAXSD512 x y) mask)
 +      // result: (VPMAXSDMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMAXSD512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMAXSDMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VADDPS512 x y) mask)
 +      // result: (VADDPSMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VADDPS512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VADDPSMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPMOVUSDW256 x) mask)
 +      // result: (VPMOVUSDWMasked256Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVUSDW256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMOVUSDWMasked256Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPMOVSDB128 x) mask)
 +      // result: (VPMOVSDBMasked128Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVSDB128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMOVSDBMasked128Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VSUBPS512 x y) mask)
 +      // result: (VSUBPSMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VSUBPS512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VSUBPSMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPMAXUD512 x y) mask)
 +      // result: (VPMAXUDMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMAXUD512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMAXUDMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPRORD512 [a] x) mask)
 +      // result: (VPRORDMasked512Merging dst [a] x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPRORD512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPRORDMasked512Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPROLVD512 x y) mask)
 +      // result: (VPROLVDMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPROLVD512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPROLVDMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VCVTTPS2DQ512 x) mask)
 +      // result: (VCVTTPS2DQMasked512Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VCVTTPS2DQ512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VCVTTPS2DQMasked512Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPACKSSDW512 x y) mask)
 +      // result: (VPACKSSDWMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPACKSSDW512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPACKSSDWMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPRORVD512 x y) mask)
 +      // result: (VPRORVDMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPRORVD512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPRORVDMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPADDD512 x y) mask)
 +      // result: (VPADDDMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPADDD512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPADDDMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VRNDSCALEPS512 [a] x) mask)
 +      // result: (VRNDSCALEPSMasked512Merging dst [a] x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VRNDSCALEPS512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VRNDSCALEPSMasked512Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VCVTPS2UDQ512 x) mask)
 +      // result: (VCVTPS2UDQMasked512Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VCVTPS2UDQ512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VCVTPS2UDQMasked512Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPSHRDD512 [a] x y) mask)
 +      // result: (VPSHRDDMasked512Merging dst [a] x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSHRDD512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSHRDDMasked512Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPOPCNTD512 x) mask)
 +      // result: (VPOPCNTDMasked512Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPOPCNTD512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPOPCNTDMasked512Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPMOVDB128 x) mask)
 +      // result: (VPMOVDBMasked128Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVDB128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMOVDBMasked128Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPSRAD512const [a] x) mask)
 +      // result: (VPSRADMasked512constMerging dst [a] x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSRAD512const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSRADMasked512constMerging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VMINPS512 x y) mask)
 +      // result: (VMINPSMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VMINPS512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VMINPSMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPANDD512 x y) mask)
 +      // result: (VPANDDMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPANDD512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPANDDMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPSHUFD512 [a] x) mask)
 +      // result: (VPSHUFDMasked512Merging dst [a] x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSHUFD512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSHUFDMasked512Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPMINSD512 x y) mask)
 +      // result: (VPMINSDMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMINSD512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMINSDMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPSRAVD512 x y) mask)
 +      // result: (VPSRAVDMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSRAVD512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSRAVDMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPXORD512 x y) mask)
 +      // result: (VPXORDMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPXORD512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPXORDMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPSLLVD512 x y) mask)
 +      // result: (VPSLLVDMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSLLVD512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSLLVDMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPSLLD512const [a] x) mask)
 +      // result: (VPSLLDMasked512constMerging dst [a] x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSLLD512const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSLLDMasked512constMerging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPMINUD512 x y) mask)
 +      // result: (VPMINUDMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMINUD512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMINUDMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VSCALEFPS512 x y) mask)
 +      // result: (VSCALEFPSMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VSCALEFPS512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VSCALEFPSMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VSQRTPS512 x) mask)
 +      // result: (VSQRTPSMasked512Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VSQRTPS512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VSQRTPSMasked512Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VPABSD512 x) mask)
 +      // result: (VPABSDMasked512Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPABSD512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPABSDMasked512Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 dst (VMULPS512 x y) mask)
 +      // result: (VMULPSMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VMULPS512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VMULPSMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMDMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPBLENDMDMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPBLENDMDMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPBLENDMQMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPBLENDMQMasked512 dst (VPSLLQ512const [a] x) mask)
 +      // result: (VPSLLQMasked512constMerging dst [a] x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSLLQ512const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSLLQMasked512constMerging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPSUBQ512 x y) mask)
 +      // result: (VPSUBQMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSUBQ512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSUBQMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPROLQ512 [a] x) mask)
 +      // result: (VPROLQMasked512Merging dst [a] x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPROLQ512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPROLQMasked512Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPSLLVQ512 x y) mask)
 +      // result: (VPSLLVQMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSLLVQ512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSLLVQMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPMOVUSQB128 x) mask)
 +      // result: (VPMOVUSQBMasked128Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVUSQB128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMOVUSQBMasked128Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPADDQ512 x y) mask)
 +      // result: (VPADDQMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPADDQ512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPADDQMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VRNDSCALEPD512 [a] x) mask)
 +      // result: (VRNDSCALEPDMasked512Merging dst [a] x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VRNDSCALEPD512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VRNDSCALEPDMasked512Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPABSQ512 x) mask)
 +      // result: (VPABSQMasked512Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPABSQ512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPABSQMasked512Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPMOVUSQD256 x) mask)
 +      // result: (VPMOVUSQDMasked256Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVUSQD256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMOVUSQDMasked256Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VADDPD512 x y) mask)
 +      // result: (VADDPDMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VADDPD512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VADDPDMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VRCP14PD512 x) mask)
 +      // result: (VRCP14PDMasked512Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VRCP14PD512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VRCP14PDMasked512Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPSRLVQ512 x y) mask)
 +      // result: (VPSRLVQMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSRLVQ512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSRLVQMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPRORVQ512 x y) mask)
 +      // result: (VPRORVQMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPRORVQ512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPRORVQMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPSRAVQ512 x y) mask)
 +      // result: (VPSRAVQMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSRAVQ512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSRAVQMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPANDQ512 x y) mask)
 +      // result: (VPANDQMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPANDQ512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPANDQMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPMOVQB128 x) mask)
 +      // result: (VPMOVQBMasked128Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVQB128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMOVQBMasked128Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPSHLDQ512 [a] x y) mask)
 +      // result: (VPSHLDQMasked512Merging dst [a] x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSHLDQ512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSHLDQMasked512Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VDIVPD512 x y) mask)
 +      // result: (VDIVPDMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VDIVPD512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VDIVPDMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPROLVQ512 x y) mask)
 +      // result: (VPROLVQMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPROLVQ512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPROLVQMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPRORQ512 [a] x) mask)
 +      // result: (VPRORQMasked512Merging dst [a] x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPRORQ512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPRORQMasked512Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPMINSQ512 x y) mask)
 +      // result: (VPMINSQMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMINSQ512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMINSQMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VSQRTPD512 x) mask)
 +      // result: (VSQRTPDMasked512Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VSQRTPD512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VSQRTPDMasked512Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPMOVSQD256 x) mask)
 +      // result: (VPMOVSQDMasked256Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVSQD256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMOVSQDMasked256Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VMINPD512 x y) mask)
 +      // result: (VMINPDMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VMINPD512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VMINPDMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPMULLQ512 x y) mask)
 +      // result: (VPMULLQMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMULLQ512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMULLQMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VMAXPD512 x y) mask)
 +      // result: (VMAXPDMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VMAXPD512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VMAXPDMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VMULPD512 x y) mask)
 +      // result: (VMULPDMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VMULPD512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VMULPDMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPORQ512 x y) mask)
 +      // result: (VPORQMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPORQ512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPORQMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPMOVUSQW128 x) mask)
 +      // result: (VPMOVUSQWMasked128Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVUSQW128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMOVUSQWMasked128Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VREDUCEPD512 [a] x) mask)
 +      // result: (VREDUCEPDMasked512Merging dst [a] x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VREDUCEPD512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VREDUCEPDMasked512Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPOPCNTQ512 x) mask)
 +      // result: (VPOPCNTQMasked512Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPOPCNTQ512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPOPCNTQMasked512Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPXORQ512 x y) mask)
 +      // result: (VPXORQMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPXORQ512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPXORQMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPMOVQD256 x) mask)
 +      // result: (VPMOVQDMasked256Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVQD256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMOVQDMasked256Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPMAXUQ512 x y) mask)
 +      // result: (VPMAXUQMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMAXUQ512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMAXUQMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VSUBPD512 x y) mask)
 +      // result: (VSUBPDMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VSUBPD512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VSUBPDMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPMOVQW128 x) mask)
 +      // result: (VPMOVQWMasked128Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVQW128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMOVQWMasked128Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPSHRDQ512 [a] x y) mask)
 +      // result: (VPSHRDQMasked512Merging dst [a] x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSHRDQ512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSHRDQMasked512Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPLZCNTQ512 x) mask)
 +      // result: (VPLZCNTQMasked512Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPLZCNTQ512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPLZCNTQMasked512Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VSCALEFPD512 x y) mask)
 +      // result: (VSCALEFPDMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VSCALEFPD512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VSCALEFPDMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPMOVSQW128 x) mask)
 +      // result: (VPMOVSQWMasked128Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVSQW128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMOVSQWMasked128Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPMINUQ512 x y) mask)
 +      // result: (VPMINUQMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMINUQ512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMINUQMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPMOVSQB128 x) mask)
 +      // result: (VPMOVSQBMasked128Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVSQB128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMOVSQBMasked128Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VRSQRT14PD512 x) mask)
 +      // result: (VRSQRT14PDMasked512Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VRSQRT14PD512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VRSQRT14PDMasked512Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPSRAQ512const [a] x) mask)
 +      // result: (VPSRAQMasked512constMerging dst [a] x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSRAQ512const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSRAQMasked512constMerging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 dst (VPMAXSQ512 x y) mask)
 +      // result: (VPMAXSQMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMAXSQ512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMAXSQMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMQMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPBLENDMQMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPBLENDMQMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPBLENDMWMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPBLENDMWMasked512 dst (VPMAXSW512 x y) mask)
 +      // result: (VPMAXSWMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMAXSW512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMAXSWMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMWMasked512 dst (VPMULHW512 x y) mask)
 +      // result: (VPMULHWMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMULHW512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMULHWMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMWMasked512 dst (VPMOVWB256 x) mask)
 +      // result: (VPMOVWBMasked256Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVWB256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMOVWBMasked256Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMWMasked512 dst (VPMADDUBSW512 x y) mask)
 +      // result: (VPMADDUBSWMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMADDUBSW512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMADDUBSWMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMWMasked512 dst (VPSHLDW512 [a] x y) mask)
 +      // result: (VPSHLDWMasked512Merging dst [a] x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSHLDW512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSHLDWMasked512Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMWMasked512 dst (VPMULHUW512 x y) mask)
 +      // result: (VPMULHUWMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMULHUW512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMULHUWMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMWMasked512 dst (VPMOVUSWB256 x) mask)
 +      // result: (VPMOVUSWBMasked256Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVUSWB256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMOVUSWBMasked256Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMWMasked512 dst (VPMINSW512 x y) mask)
 +      // result: (VPMINSWMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMINSW512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMINSWMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMWMasked512 dst (VPSRAVW512 x y) mask)
 +      // result: (VPSRAVWMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSRAVW512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSRAVWMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMWMasked512 dst (VPADDW512 x y) mask)
 +      // result: (VPADDWMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPADDW512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPADDWMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMWMasked512 dst (VPSHUFHW512 [a] x) mask)
 +      // result: (VPSHUFHWMasked512Merging dst [a] x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSHUFHW512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSHUFHWMasked512Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMWMasked512 dst (VPSHRDW512 [a] x y) mask)
 +      // result: (VPSHRDWMasked512Merging dst [a] x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSHRDW512 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSHRDWMasked512Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMWMasked512 dst (VPSUBSW512 x y) mask)
 +      // result: (VPSUBSWMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSUBSW512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSUBSWMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMWMasked512 dst (VPSUBUSW512 x y) mask)
 +      // result: (VPSUBUSWMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSUBUSW512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSUBUSWMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMWMasked512 dst (VPSUBW512 x y) mask)
 +      // result: (VPSUBWMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSUBW512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSUBWMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMWMasked512 dst (VPMADDWD512 x y) mask)
 +      // result: (VPMADDWDMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMADDWD512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMADDWDMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMWMasked512 dst (VPSLLVW512 x y) mask)
 +      // result: (VPSLLVWMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSLLVW512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSLLVWMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMWMasked512 dst (VPABSW512 x) mask)
 +      // result: (VPABSWMasked512Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPABSW512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPABSWMasked512Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMWMasked512 dst (VPSRAW512const [a] x) mask)
 +      // result: (VPSRAWMasked512constMerging dst [a] x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSRAW512const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSRAWMasked512constMerging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMWMasked512 dst (VPADDUSW512 x y) mask)
 +      // result: (VPADDUSWMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPADDUSW512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPADDUSWMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMWMasked512 dst (VPOPCNTW512 x) mask)
 +      // result: (VPOPCNTWMasked512Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPOPCNTW512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPOPCNTWMasked512Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMWMasked512 dst (VPMINUW512 x y) mask)
 +      // result: (VPMINUWMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMINUW512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMINUWMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMWMasked512 dst (VPAVGW512 x y) mask)
 +      // result: (VPAVGWMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPAVGW512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPAVGWMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMWMasked512 dst (VPMOVSWB256 x) mask)
 +      // result: (VPMOVSWBMasked256Merging dst x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVSWB256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMOVSWBMasked256Merging)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMWMasked512 dst (VPMAXUW512 x y) mask)
 +      // result: (VPMAXUWMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMAXUW512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMAXUWMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMWMasked512 dst (VPSRLVW512 x y) mask)
 +      // result: (VPSRLVWMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSRLVW512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSRLVWMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMWMasked512 dst (VPSLLW512const [a] x) mask)
 +      // result: (VPSLLWMasked512constMerging dst [a] x mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSLLW512const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPSLLWMasked512constMerging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v.AddArg3(dst, x, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMWMasked512 dst (VPADDSW512 x y) mask)
 +      // result: (VPADDSWMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPADDSW512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPADDSWMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      // match: (VPBLENDMWMasked512 dst (VPMULLW512 x y) mask)
 +      // result: (VPMULLWMasked512Merging dst x y mask)
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMULLW512 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              v.reset(OpAMD64VPMULLWMasked512Merging)
 +              v.AddArg4(dst, x, y, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPBLENDVB128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (VPBLENDVB128 dst (VPMINUD128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMINUDMasked128Merging dst x y (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMINUD128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMINUDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPROLQ128 [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPROLQMasked128Merging dst [a] x (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPROLQ128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLQMasked128Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMADDUBSW128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMADDUBSWMasked128Merging dst x y (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMADDUBSW128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMADDUBSWMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMAXSB128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMAXSBMasked128Merging dst x y (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMAXSB128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMAXSBMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPADDSB128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPADDSBMasked128Merging dst x y (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPADDSB128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPADDSBMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VBROADCASTSS256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VBROADCASTSSMasked256Merging dst x (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VBROADCASTSS256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VBROADCASTSSMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMOVSXBW128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVSXBWMasked128Merging dst x (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVSXBW128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVSXBWMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMINSQ128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMINSQMasked128Merging dst x y (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMINSQ128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMINSQMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSUBUSW128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSUBUSWMasked128Merging dst x y (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSUBUSW128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSUBUSWMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMOVSXBQ512 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVSXBQMasked512Merging dst x (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVSXBQ512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVSXBQMasked512Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMOVZXWQ256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVZXWQMasked256Merging dst x (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVZXWQ256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVZXWQMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMULLW128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMULLWMasked128Merging dst x y (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMULLW128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMULLWMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSHLDQ128 [a] x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSHLDQMasked128Merging dst [a] x y (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSHLDQ128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHLDQMasked128Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMOVZXBQ256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVZXBQMasked256Merging dst x (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVZXBQ256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVZXBQMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMAXSQ128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMAXSQMasked128Merging dst x y (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMAXSQ128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMAXSQMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPOPCNTW128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPOPCNTWMasked128Merging dst x (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPOPCNTW128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPOPCNTWMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPBROADCASTW128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPBROADCASTWMasked128Merging dst x (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPBROADCASTW128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPBROADCASTWMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPRORVD128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPRORVDMasked128Merging dst x y (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPRORVD128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORVDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VBROADCASTSD256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VBROADCASTSDMasked256Merging dst x (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VBROADCASTSD256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VBROADCASTSDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMOVZXDQ128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVZXDQMasked128Merging dst x (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVZXDQ128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVZXDQMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSRAQ128const [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSRAQMasked128constMerging dst [a] x (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSRAQ128const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRAQMasked128constMerging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPACKUSDW128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPACKUSDWMasked128Merging dst x y (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPACKUSDW128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPACKUSDWMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPLZCNTD128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPLZCNTDMasked128Merging dst x (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPLZCNTD128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPLZCNTDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMAXUD128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMAXUDMasked128Merging dst x y (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMAXUD128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMAXUDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPOPCNTB128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPOPCNTBMasked128Merging dst x (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPOPCNTB128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPOPCNTBMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VBROADCASTSD512 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VBROADCASTSDMasked512Merging dst x (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VBROADCASTSD512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VBROADCASTSDMasked512Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VMINPD128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VMINPDMasked128Merging dst x y (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VMINPD128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VMINPDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSHRDW128 [a] x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSHRDWMasked128Merging dst [a] x y (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSHRDW128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHRDWMasked128Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VADDPD128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VADDPDMasked128Merging dst x y (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VADDPD128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VADDPDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMOVZXWD256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVZXWDMasked256Merging dst x (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVZXWD256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVZXWDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMOVSXWQ256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVSXWQMasked256Merging dst x (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVSXWQ256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVSXWQMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSUBSW128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSUBSWMasked128Merging dst x y (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSUBSW128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSUBSWMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VREDUCEPD128 [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VREDUCEPDMasked128Merging dst [a] x (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VREDUCEPD128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VREDUCEPDMasked128Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMOVZXBD256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVZXBDMasked256Merging dst x (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVZXBD256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVZXBDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPRORQ128 [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPRORQMasked128Merging dst [a] x (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPRORQ128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORQMasked128Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSLLVW128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSLLVWMasked128Merging dst x y (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSLLVW128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSLLVWMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMOVSXBW256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVSXBWMasked256Merging dst x (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVSXBW256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVSXBWMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMINSD128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMINSDMasked128Merging dst x y (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMINSD128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMINSDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VADDPS128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VADDPSMasked128Merging dst x y (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VADDPS128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VADDPSMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMOVSXBD256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVSXBDMasked256Merging dst x (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVSXBD256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVSXBDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMOVSXDQ128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVSXDQMasked128Merging dst x (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVSXDQ128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVSXDQMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPROLVD128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPROLVDMasked128Merging dst x y (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPROLVD128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLVDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSRLVQ128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSRLVQMasked128Merging dst x y (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSRLVQ128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRLVQMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMAXSD128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMAXSDMasked128Merging dst x y (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMAXSD128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMAXSDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMINUB128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMINUBMasked128Merging dst x y (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMINUB128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMINUBMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMULLQ128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMULLQMasked128Merging dst x y (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMULLQ128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMULLQMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSUBD128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSUBDMasked128Merging dst x y (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSUBD128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSUBDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPBROADCASTD512 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPBROADCASTDMasked512Merging dst x (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPBROADCASTD512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPBROADCASTDMasked512Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMADDWD128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMADDWDMasked128Merging dst x y (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMADDWD128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMADDWDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPROLD128 [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPROLDMasked128Merging dst [a] x (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPROLD128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLDMasked128Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSRAD128const [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSRADMasked128constMerging dst [a] x (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSRAD128const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRADMasked128constMerging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSUBUSB128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSUBUSBMasked128Merging dst x y (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSUBUSB128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSUBUSBMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPADDUSB128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPADDUSBMasked128Merging dst x y (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPADDUSB128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPADDUSBMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMOVZXBW128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVZXBWMasked128Merging dst x (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVZXBW128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVZXBWMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMOVZXDQ256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVZXDQMasked256Merging dst x (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVZXDQ256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVZXDQMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPROLVQ128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPROLVQMasked128Merging dst x y (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPROLVQ128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLVQMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPADDB128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPADDBMasked128Merging dst x y (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPADDB128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPADDBMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPADDQ128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPADDQMasked128Merging dst x y (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPADDQ128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPADDQMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPADDUSW128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPADDUSWMasked128Merging dst x y (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPADDUSW128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPADDUSWMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPBROADCASTB128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPBROADCASTBMasked128Merging dst x (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPBROADCASTB128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPBROADCASTBMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VRNDSCALEPS128 [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VRNDSCALEPSMasked128Merging dst [a] x (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VRNDSCALEPS128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRNDSCALEPSMasked128Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMINUW128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMINUWMasked128Merging dst x y (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMINUW128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMINUWMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMINSW128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMINSWMasked128Merging dst x y (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMINSW128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMINSWMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMULLD128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMULLDMasked128Merging dst x y (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMULLD128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMULLDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSHUFB128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSHUFBMasked128Merging dst x y (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSHUFB128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHUFBMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPRORD128 [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPRORDMasked128Merging dst [a] x (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPRORD128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORDMasked128Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VCVTTPS2DQ128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VCVTTPS2DQMasked128Merging dst x (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VCVTTPS2DQ128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VCVTTPS2DQMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VMINPS128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VMINPSMasked128Merging dst x y (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VMINPS128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VMINPSMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VSUBPD128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VSUBPDMasked128Merging dst x y (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VSUBPD128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSUBPDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPBROADCASTB512 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPBROADCASTBMasked512Merging dst x (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPBROADCASTB512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPBROADCASTBMasked512Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VRCP14PD128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VRCP14PDMasked128Merging dst x (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VRCP14PD128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRCP14PDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMOVSXWD256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVSXWDMasked256Merging dst x (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVSXWD256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVSXWDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPBROADCASTW256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPBROADCASTWMasked256Merging dst x (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPBROADCASTW256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPBROADCASTWMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPBROADCASTD256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPBROADCASTDMasked256Merging dst x (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPBROADCASTD256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPBROADCASTDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPADDD128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPADDDMasked128Merging dst x y (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPADDD128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPADDDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VBROADCASTSS128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VBROADCASTSSMasked128Merging dst x (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VBROADCASTSS128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VBROADCASTSSMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMOVSXDQ256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVSXDQMasked256Merging dst x (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVSXDQ256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVSXDQMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMOVSXBD512 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVSXBDMasked512Merging dst x (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVSXBD512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVSXBDMasked512Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSHLDW128 [a] x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSHLDWMasked128Merging dst [a] x y (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSHLDW128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHLDWMasked128Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMAXUQ128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMAXUQMasked128Merging dst x y (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMAXUQ128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMAXUQMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSHLDD128 [a] x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSHLDDMasked128Merging dst [a] x y (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSHLDD128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHLDDMasked128Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VSUBPS128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VSUBPSMasked128Merging dst x y (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VSUBPS128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSUBPSMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPBROADCASTQ128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPBROADCASTQMasked128Merging dst x (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPBROADCASTQ128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPBROADCASTQMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPRORVQ128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPRORVQMasked128Merging dst x y (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPRORVQ128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORVQMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VBROADCASTSS512 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VBROADCASTSSMasked512Merging dst x (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VBROADCASTSS512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VBROADCASTSSMasked512Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMOVZXBD128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVZXBDMasked128Merging dst x (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVZXBD128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVZXBDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMOVZXBQ128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVZXBQMasked128Merging dst x (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVZXBQ128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVZXBQMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPABSW128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPABSWMasked128Merging dst x (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPABSW128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPABSWMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSUBW128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSUBWMasked128Merging dst x y (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSUBW128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSUBWMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMOVZXWQ128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVZXWQMasked128Merging dst x (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVZXWQ128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVZXWQMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VGF2P8MULB128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VGF2P8MULBMasked128Merging dst x y (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VGF2P8MULB128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VGF2P8MULBMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPABSD128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPABSDMasked128Merging dst x (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPABSD128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPABSDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPBROADCASTB256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPBROADCASTBMasked256Merging dst x (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPBROADCASTB256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPBROADCASTBMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VMAXPD128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VMAXPDMasked128Merging dst x y (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VMAXPD128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VMAXPDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMINUQ128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMINUQMasked128Merging dst x y (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMINUQ128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMINUQMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VMULPS128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VMULPSMasked128Merging dst x y (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VMULPS128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VMULPSMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMULHUW128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMULHUWMasked128Merging dst x y (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMULHUW128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMULHUWMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VMULPD128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VMULPDMasked128Merging dst x y (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VMULPD128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VMULPDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSUBB128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSUBBMasked128Merging dst x y (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSUBB128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSUBBMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VCVTPS2UDQ128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VCVTPS2UDQMasked128Merging dst x (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VCVTPS2UDQ128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VCVTPS2UDQMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VSCALEFPS128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VSCALEFPSMasked128Merging dst x y (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VSCALEFPS128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSCALEFPSMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSLLVQ128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSLLVQMasked128Merging dst x y (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSLLVQ128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSLLVQMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMOVSXBQ256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVSXBQMasked256Merging dst x (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVSXBQ256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVSXBQMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPADDW128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPADDWMasked128Merging dst x y (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPADDW128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPADDWMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMOVSXWD128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVSXWDMasked128Merging dst x (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVSXWD128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVSXWDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VRSQRT14PD128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VRSQRT14PDMasked128Merging dst x (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VRSQRT14PD128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRSQRT14PDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSRAW128const [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSRAWMasked128constMerging dst [a] x (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSRAW128const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRAWMasked128constMerging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMULHW128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMULHWMasked128Merging dst x y (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMULHW128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMULHWMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSHRDD128 [a] x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSHRDDMasked128Merging dst [a] x y (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSHRDD128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHRDDMasked128Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSUBSB128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSUBSBMasked128Merging dst x y (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSUBSB128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSUBSBMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPADDSW128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPADDSWMasked128Merging dst x y (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPADDSW128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPADDSWMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMINSB128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMINSBMasked128Merging dst x y (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMINSB128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMINSBMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSHUFD128 [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSHUFDMasked128Merging dst [a] x (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSHUFD128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHUFDMasked128Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPBROADCASTQ512 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPBROADCASTQMasked512Merging dst x (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPBROADCASTQ512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPBROADCASTQMasked512Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VREDUCEPS128 [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VREDUCEPSMasked128Merging dst [a] x (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VREDUCEPS128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VREDUCEPSMasked128Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMOVZXWQ512 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVZXWQMasked512Merging dst x (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVZXWQ512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVZXWQMasked512Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSRAVW128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSRAVWMasked128Merging dst x y (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSRAVW128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRAVWMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VSQRTPD128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VSQRTPDMasked128Merging dst x (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VSQRTPD128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSQRTPDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPAVGW128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPAVGWMasked128Merging dst x y (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPAVGW128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPAVGWMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VDIVPS128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VDIVPSMasked128Merging dst x y (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VDIVPS128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VDIVPSMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VDIVPD128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VDIVPDMasked128Merging dst x y (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VDIVPD128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VDIVPDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPOPCNTD128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPOPCNTDMasked128Merging dst x (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPOPCNTD128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPOPCNTDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPBROADCASTQ256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPBROADCASTQMasked256Merging dst x (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPBROADCASTQ256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPBROADCASTQMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VRNDSCALEPD128 [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VRNDSCALEPDMasked128Merging dst [a] x (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VRNDSCALEPD128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRNDSCALEPDMasked128Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMOVSXWQ128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVSXWQMasked128Merging dst x (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVSXWQ128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVSXWQMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPOPCNTQ128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPOPCNTQMasked128Merging dst x (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPOPCNTQ128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPOPCNTQMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPAVGB128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPAVGBMasked128Merging dst x y (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPAVGB128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPAVGBMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMOVSXBQ128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVSXBQMasked128Merging dst x (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVSXBQ128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVSXBQMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMAXSW128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMAXSWMasked128Merging dst x y (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMAXSW128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMAXSWMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMOVZXBW256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVZXBWMasked256Merging dst x (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVZXBW256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVZXBWMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMOVZXBD512 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVZXBDMasked512Merging dst x (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVZXBD512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVZXBDMasked512Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSHUFHW128 [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSHUFHWMasked128Merging dst [a] x (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSHUFHW128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHUFHWMasked128Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSLLW128const [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSLLWMasked128constMerging dst [a] x (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSLLW128const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSLLWMasked128constMerging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSLLVD128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSLLVDMasked128Merging dst x y (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSLLVD128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSLLVDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSRLVD128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSRLVDMasked128Merging dst x y (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSRLVD128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRLVDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMOVSXWQ512 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVSXWQMasked512Merging dst x (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVSXWQ512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVSXWQMasked512Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSUBQ128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSUBQMasked128Merging dst x y (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSUBQ128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSUBQMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSLLD128const [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSLLDMasked128constMerging dst [a] x (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSLLD128const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSLLDMasked128constMerging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSRLVW128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSRLVWMasked128Merging dst x y (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSRLVW128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRLVWMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSLLQ128const [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSLLQMasked128constMerging dst [a] x (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSLLQ128const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSLLQMasked128constMerging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSRAVD128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSRAVDMasked128Merging dst x y (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSRAVD128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRAVDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMOVSXBD128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVSXBDMasked128Merging dst x (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVSXBD128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVSXBDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMOVZXBQ512 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVZXBQMasked512Merging dst x (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVZXBQ512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVZXBQMasked512Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPLZCNTQ128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPLZCNTQMasked128Merging dst x (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPLZCNTQ128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPLZCNTQMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPACKSSDW128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPACKSSDWMasked128Merging dst x y (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPACKSSDW128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPACKSSDWMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMOVZXWD128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVZXWDMasked128Merging dst x (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVZXWD128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVZXWDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSRAVQ128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSRAVQMasked128Merging dst x y (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSRAVQ128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRAVQMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPBROADCASTD128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPBROADCASTDMasked128Merging dst x (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPBROADCASTD128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPBROADCASTDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VMAXPS128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VMAXPSMasked128Merging dst x y (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VMAXPS128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VMAXPSMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPSHRDQ128 [a] x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSHRDQMasked128Merging dst [a] x y (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSHRDQ128 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHRDQMasked128Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMAXUW128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMAXUWMasked128Merging dst x y (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMAXUW128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMAXUWMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPABSB128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPABSBMasked128Merging dst x (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPABSB128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPABSBMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPABSQ128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPABSQMasked128Merging dst x (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPABSQ128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPABSQMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VSCALEFPD128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VSCALEFPDMasked128Merging dst x y (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VSCALEFPD128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSCALEFPDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VSQRTPS128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VSQRTPSMasked128Merging dst x (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VSQRTPS128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSQRTPSMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPBROADCASTW512 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPBROADCASTWMasked512Merging dst x (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPBROADCASTW512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPBROADCASTWMasked512Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB128 dst (VPMAXUB128 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMAXUBMasked128Merging dst x y (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMAXUB128 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMAXUBMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPBLENDVB256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (VPBLENDVB256 dst (VPMOVSXBW512 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVSXBWMasked512Merging dst x (VPMOVVec8x32ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVSXBW512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVSXBWMasked512Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x32ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPADDUSB256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPADDUSBMasked256Merging dst x y (VPMOVVec8x32ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPADDUSB256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPADDUSBMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x32ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VMULPS256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VMULPSMasked256Merging dst x y (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VMULPS256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VMULPSMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPOPCNTB256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPOPCNTBMasked256Merging dst x (VPMOVVec8x32ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPOPCNTB256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPOPCNTBMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x32ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VSUBPS256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VSUBPSMasked256Merging dst x y (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VSUBPS256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSUBPSMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMAXUQ256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMAXUQMasked256Merging dst x y (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMAXUQ256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMAXUQMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPROLD256 [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPROLDMasked256Merging dst [a] x (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPROLD256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLDMasked256Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSRAVD256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSRAVDMasked256Merging dst x y (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSRAVD256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRAVDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VADDPS256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VADDPSMasked256Merging dst x y (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VADDPS256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VADDPSMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMOVSXDQ512 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVSXDQMasked512Merging dst x (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVSXDQ512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVSXDQMasked512Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMOVUSWB128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVUSWBMasked128Merging dst x (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVUSWB128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVUSWBMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSRAQ256const [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSRAQMasked256constMerging dst [a] x (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSRAQ256const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRAQMasked256constMerging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VCVTPS2UDQ256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VCVTPS2UDQMasked256Merging dst x (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VCVTPS2UDQ256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VCVTPS2UDQMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMINSW256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMINSWMasked256Merging dst x y (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMINSW256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMINSWMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSHLDD256 [a] x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSHLDDMasked256Merging dst [a] x y (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSHLDD256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHLDDMasked256Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSLLVW256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSLLVWMasked256Merging dst x y (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSLLVW256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSLLVWMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSRLVQ256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSRLVQMasked256Merging dst x y (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSRLVQ256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRLVQMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSUBUSB256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSUBUSBMasked256Merging dst x y (VPMOVVec8x32ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSUBUSB256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSUBUSBMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x32ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMAXSW256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMAXSWMasked256Merging dst x y (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMAXSW256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMAXSWMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VMINPS256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VMINPSMasked256Merging dst x y (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VMINPS256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VMINPSMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMINSD256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMINSDMasked256Merging dst x y (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMINSD256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMINSDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPADDSW256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPADDSWMasked256Merging dst x y (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPADDSW256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPADDSWMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VRNDSCALEPS256 [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VRNDSCALEPSMasked256Merging dst [a] x (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VRNDSCALEPS256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRNDSCALEPSMasked256Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPROLVQ256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPROLVQMasked256Merging dst x y (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPROLVQ256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLVQMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMULHW256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMULHWMasked256Merging dst x y (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMULHW256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMULHWMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VDIVPD256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VDIVPDMasked256Merging dst x y (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VDIVPD256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VDIVPDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPLZCNTQ256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPLZCNTQMasked256Merging dst x (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPLZCNTQ256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPLZCNTQMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSRLVD256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSRLVDMasked256Merging dst x y (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSRLVD256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRLVDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPADDD256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPADDDMasked256Merging dst x y (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPADDD256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPADDDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMOVSDW128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVSDWMasked128Merging dst x (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVSDW128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVSDWMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPOPCNTD256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPOPCNTDMasked256Merging dst x (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPOPCNTD256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPOPCNTDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPADDUSW256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPADDUSWMasked256Merging dst x y (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPADDUSW256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPADDUSWMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VSQRTPD256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VSQRTPDMasked256Merging dst x (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VSQRTPD256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSQRTPDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VREDUCEPS256 [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VREDUCEPSMasked256Merging dst [a] x (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VREDUCEPS256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VREDUCEPSMasked256Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSUBQ256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSUBQMasked256Merging dst x y (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSUBQ256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSUBQMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMOVSXWD512 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVSXWDMasked512Merging dst x (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVSXWD512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVSXWDMasked512Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VGF2P8MULB256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VGF2P8MULBMasked256Merging dst x y (VPMOVVec8x32ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VGF2P8MULB256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VGF2P8MULBMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x32ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSLLVD256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSLLVDMasked256Merging dst x y (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSLLVD256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSLLVDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSRLVW256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSRLVWMasked256Merging dst x y (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSRLVW256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRLVWMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPADDW256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPADDWMasked256Merging dst x y (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPADDW256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPADDWMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VREDUCEPD256 [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VREDUCEPDMasked256Merging dst [a] x (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VREDUCEPD256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VREDUCEPDMasked256Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VRNDSCALEPD256 [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VRNDSCALEPDMasked256Merging dst [a] x (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VRNDSCALEPD256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRNDSCALEPDMasked256Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPRORVD256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPRORVDMasked256Merging dst x y (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPRORVD256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORVDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSHLDW256 [a] x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSHLDWMasked256Merging dst [a] x y (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSHLDW256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHLDWMasked256Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VCVTTPS2DQ256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VCVTTPS2DQMasked256Merging dst x (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VCVTTPS2DQ256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VCVTTPS2DQMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VSUBPD256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VSUBPDMasked256Merging dst x y (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VSUBPD256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSUBPDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSUBD256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSUBDMasked256Merging dst x y (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSUBD256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSUBDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VSQRTPS256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VSQRTPSMasked256Merging dst x (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VSQRTPS256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSQRTPSMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPACKUSDW256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPACKUSDWMasked256Merging dst x y (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPACKUSDW256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPACKUSDWMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMULLD256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMULLDMasked256Merging dst x y (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMULLD256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMULLDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPADDB256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPADDBMasked256Merging dst x y (VPMOVVec8x32ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPADDB256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPADDBMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x32ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMOVWB128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVWBMasked128Merging dst x (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVWB128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVWBMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMADDWD256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMADDWDMasked256Merging dst x y (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMADDWD256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMADDWDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMOVQD128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVQDMasked128Merging dst x (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVQD128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVQDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMULHUW256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMULHUWMasked256Merging dst x y (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMULHUW256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMULHUWMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMULLQ256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMULLQMasked256Merging dst x y (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMULLQ256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMULLQMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPROLVD256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPROLVDMasked256Merging dst x y (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPROLVD256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLVDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMOVUSDW128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVUSDWMasked128Merging dst x (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVUSDW128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVUSDWMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMULLW256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMULLWMasked256Merging dst x y (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMULLW256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMULLWMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPRORD256 [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPRORDMasked256Merging dst [a] x (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPRORD256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORDMasked256Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSRAVW256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSRAVWMasked256Merging dst x y (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSRAVW256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRAVWMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMINUD256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMINUDMasked256Merging dst x y (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMINUD256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMINUDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSHUFD256 [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSHUFDMasked256Merging dst [a] x (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSHUFD256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHUFDMasked256Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSLLVQ256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSLLVQMasked256Merging dst x y (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSLLVQ256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSLLVQMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMOVUSQD128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVUSQDMasked128Merging dst x (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVUSQD128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVUSQDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSUBUSW256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSUBUSWMasked256Merging dst x y (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSUBUSW256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSUBUSWMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VRSQRT14PD256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VRSQRT14PDMasked256Merging dst x (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VRSQRT14PD256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRSQRT14PDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPADDSB256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPADDSBMasked256Merging dst x y (VPMOVVec8x32ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPADDSB256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPADDSBMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x32ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMOVZXWD512 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVZXWDMasked512Merging dst x (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVZXWD512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVZXWDMasked512Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPROLQ256 [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPROLQMasked256Merging dst [a] x (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPROLQ256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLQMasked256Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPAVGB256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPAVGBMasked256Merging dst x y (VPMOVVec8x32ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPAVGB256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPAVGBMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x32ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPRORVQ256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPRORVQMasked256Merging dst x y (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPRORVQ256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORVQMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMOVZXDQ512 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVZXDQMasked512Merging dst x (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVZXDQ512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVZXDQMasked512Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMINUB256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMINUBMasked256Merging dst x y (VPMOVVec8x32ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMINUB256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMINUBMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x32ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSLLW256const [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSLLWMasked256constMerging dst [a] x (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSLLW256const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSLLWMasked256constMerging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VSCALEFPS256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VSCALEFPSMasked256Merging dst x y (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VSCALEFPS256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSCALEFPSMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSLLQ256const [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSLLQMasked256constMerging dst [a] x (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSLLQ256const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSLLQMasked256constMerging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMINSB256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMINSBMasked256Merging dst x y (VPMOVVec8x32ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMINSB256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMINSBMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x32ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPABSQ256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPABSQMasked256Merging dst x (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPABSQ256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPABSQMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSHUFHW256 [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSHUFHWMasked256Merging dst [a] x (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSHUFHW256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHUFHWMasked256Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSUBB256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSUBBMasked256Merging dst x y (VPMOVVec8x32ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSUBB256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSUBBMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x32ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VMAXPS256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VMAXPSMasked256Merging dst x y (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VMAXPS256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VMAXPSMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMAXSD256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMAXSDMasked256Merging dst x y (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMAXSD256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMAXSDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VMULPD256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VMULPDMasked256Merging dst x y (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VMULPD256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VMULPDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VDIVPS256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VDIVPSMasked256Merging dst x y (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VDIVPS256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VDIVPSMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMAXSQ256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMAXSQMasked256Merging dst x y (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMAXSQ256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMAXSQMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VMINPD256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VMINPDMasked256Merging dst x y (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VMINPD256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VMINPDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSHLDQ256 [a] x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSHLDQMasked256Merging dst [a] x y (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSHLDQ256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHLDQMasked256Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VSCALEFPD256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VSCALEFPDMasked256Merging dst x y (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VSCALEFPD256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSCALEFPDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMOVSWB128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVSWBMasked128Merging dst x (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVSWB128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVSWBMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMINSQ256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMINSQMasked256Merging dst x y (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMINSQ256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMINSQMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPABSD256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPABSDMasked256Merging dst x (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPABSD256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPABSDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMINUW256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMINUWMasked256Merging dst x y (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMINUW256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMINUWMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSHRDW256 [a] x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSHRDWMasked256Merging dst [a] x y (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSHRDW256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHRDWMasked256Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMOVZXBW512 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVZXBWMasked512Merging dst x (VPMOVVec8x32ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVZXBW512 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVZXBWMasked512Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x32ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMAXUD256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMAXUDMasked256Merging dst x y (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMAXUD256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMAXUDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMAXSB256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMAXSBMasked256Merging dst x y (VPMOVVec8x32ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMAXSB256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMAXSBMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x32ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSHRDQ256 [a] x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSHRDQMasked256Merging dst [a] x y (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSHRDQ256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHRDQMasked256Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMADDUBSW256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMADDUBSWMasked256Merging dst x y (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMADDUBSW256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMADDUBSWMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSLLD256const [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSLLDMasked256constMerging dst [a] x (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSLLD256const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSLLDMasked256constMerging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMINUQ256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMINUQMasked256Merging dst x y (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMINUQ256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMINUQMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VRCP14PD256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VRCP14PDMasked256Merging dst x (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VRCP14PD256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRCP14PDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSHRDD256 [a] x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSHRDDMasked256Merging dst [a] x y (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSHRDD256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHRDDMasked256Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPADDQ256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPADDQMasked256Merging dst x y (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPADDQ256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPADDQMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMAXUB256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMAXUBMasked256Merging dst x y (VPMOVVec8x32ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMAXUB256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMAXUBMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x32ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPRORQ256 [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPRORQMasked256Merging dst [a] x (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPRORQ256 {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORQMasked256Merging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VADDPD256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VADDPDMasked256Merging dst x y (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VADDPD256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VADDPDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSHUFB256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSHUFBMasked256Merging dst x y (VPMOVVec8x32ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSHUFB256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHUFBMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x32ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSRAD256const [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSRADMasked256constMerging dst [a] x (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSRAD256const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRADMasked256constMerging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSUBW256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSUBWMasked256Merging dst x y (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSUBW256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSUBWMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSRAW256const [a] x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSRAWMasked256constMerging dst [a] x (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSRAW256const {
 +                      break
 +              }
 +              a := auxIntToUint8(v_1.AuxInt)
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRAWMasked256constMerging)
 +              v.AuxInt = uint8ToAuxInt(a)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPABSW256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPABSWMasked256Merging dst x (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPABSW256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPABSWMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPACKSSDW256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPACKSSDWMasked256Merging dst x y (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPACKSSDW256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPACKSSDWMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMOVSQD128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVSQDMasked128Merging dst x (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVSQD128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVSQDMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPLZCNTD256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPLZCNTDMasked256Merging dst x (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPLZCNTD256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPLZCNTDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VMAXPD256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VMAXPDMasked256Merging dst x y (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VMAXPD256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VMAXPDMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPAVGW256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPAVGWMasked256Merging dst x y (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPAVGW256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPAVGWMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPOPCNTQ256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPOPCNTQMasked256Merging dst x (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPOPCNTQ256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPOPCNTQMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSUBSW256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSUBSWMasked256Merging dst x y (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSUBSW256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSUBSWMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMAXUW256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMAXUWMasked256Merging dst x y (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMAXUW256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMAXUWMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPOPCNTW256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPOPCNTWMasked256Merging dst x (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPOPCNTW256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPOPCNTWMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSRAVQ256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSRAVQMasked256Merging dst x y (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSRAVQ256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRAVQMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPABSB256 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPABSBMasked256Merging dst x (VPMOVVec8x32ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPABSB256 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPABSBMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x32ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPMOVDW128 x) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPMOVDWMasked128Merging dst x (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPMOVDW128 {
 +                      break
 +              }
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPMOVDWMasked128Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg3(dst, x, v0)
 +              return true
 +      }
 +      // match: (VPBLENDVB256 dst (VPSUBSB256 x y) mask)
 +      // cond: v.Block.CPUfeatures.hasFeature(CPUavx512)
 +      // result: (VPSUBSBMasked256Merging dst x y (VPMOVVec8x32ToM <types.TypeMask> mask))
 +      for {
 +              dst := v_0
 +              if v_1.Op != OpAMD64VPSUBSB256 {
 +                      break
 +              }
 +              y := v_1.Args[1]
 +              x := v_1.Args[0]
 +              mask := v_2
 +              if !(v.Block.CPUfeatures.hasFeature(CPUavx512)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSUBSBMasked256Merging)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x32ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg4(dst, x, y, v0)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPBROADCASTB128(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (VPBROADCASTB128 x:(VPINSRB128 [0] (Zero128 <t>) y))
 +      // cond: x.Uses == 1
 +      // result: (VPBROADCASTB128 (VMOVQ <types.TypeVec128> y))
 +      for {
 +              x := v_0
 +              if x.Op != OpAMD64VPINSRB128 || auxIntToUint8(x.AuxInt) != 0 {
 +                      break
 +              }
 +              y := x.Args[1]
 +              x_0 := x.Args[0]
 +              if x_0.Op != OpAMD64Zero128 {
 +                      break
 +              }
 +              if !(x.Uses == 1) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPBROADCASTB128)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VMOVQ, types.TypeVec128)
 +              v0.AddArg(y)
 +              v.AddArg(v0)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPBROADCASTB256(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (VPBROADCASTB256 x:(VPINSRB128 [0] (Zero128 <t>) y))
 +      // cond: x.Uses == 1
 +      // result: (VPBROADCASTB256 (VMOVQ <types.TypeVec128> y))
 +      for {
 +              x := v_0
 +              if x.Op != OpAMD64VPINSRB128 || auxIntToUint8(x.AuxInt) != 0 {
 +                      break
 +              }
 +              y := x.Args[1]
 +              x_0 := x.Args[0]
 +              if x_0.Op != OpAMD64Zero128 {
 +                      break
 +              }
 +              if !(x.Uses == 1) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPBROADCASTB256)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VMOVQ, types.TypeVec128)
 +              v0.AddArg(y)
 +              v.AddArg(v0)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPBROADCASTB512(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (VPBROADCASTB512 x:(VPINSRB128 [0] (Zero128 <t>) y))
 +      // cond: x.Uses == 1
 +      // result: (VPBROADCASTB512 (VMOVQ <types.TypeVec128> y))
 +      for {
 +              x := v_0
 +              if x.Op != OpAMD64VPINSRB128 || auxIntToUint8(x.AuxInt) != 0 {
 +                      break
 +              }
 +              y := x.Args[1]
 +              x_0 := x.Args[0]
 +              if x_0.Op != OpAMD64Zero128 {
 +                      break
 +              }
 +              if !(x.Uses == 1) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPBROADCASTB512)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VMOVQ, types.TypeVec128)
 +              v0.AddArg(y)
 +              v.AddArg(v0)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPBROADCASTW128(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (VPBROADCASTW128 x:(VPINSRW128 [0] (Zero128 <t>) y))
 +      // cond: x.Uses == 1
 +      // result: (VPBROADCASTW128 (VMOVQ <types.TypeVec128> y))
 +      for {
 +              x := v_0
 +              if x.Op != OpAMD64VPINSRW128 || auxIntToUint8(x.AuxInt) != 0 {
 +                      break
 +              }
 +              y := x.Args[1]
 +              x_0 := x.Args[0]
 +              if x_0.Op != OpAMD64Zero128 {
 +                      break
 +              }
 +              if !(x.Uses == 1) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPBROADCASTW128)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VMOVQ, types.TypeVec128)
 +              v0.AddArg(y)
 +              v.AddArg(v0)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPBROADCASTW256(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (VPBROADCASTW256 x:(VPINSRW128 [0] (Zero128 <t>) y))
 +      // cond: x.Uses == 1
 +      // result: (VPBROADCASTW256 (VMOVQ <types.TypeVec128> y))
 +      for {
 +              x := v_0
 +              if x.Op != OpAMD64VPINSRW128 || auxIntToUint8(x.AuxInt) != 0 {
 +                      break
 +              }
 +              y := x.Args[1]
 +              x_0 := x.Args[0]
 +              if x_0.Op != OpAMD64Zero128 {
 +                      break
 +              }
 +              if !(x.Uses == 1) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPBROADCASTW256)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VMOVQ, types.TypeVec128)
 +              v0.AddArg(y)
 +              v.AddArg(v0)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPBROADCASTW512(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (VPBROADCASTW512 x:(VPINSRW128 [0] (Zero128 <t>) y))
 +      // cond: x.Uses == 1
 +      // result: (VPBROADCASTW512 (VMOVQ <types.TypeVec128> y))
 +      for {
 +              x := v_0
 +              if x.Op != OpAMD64VPINSRW128 || auxIntToUint8(x.AuxInt) != 0 {
 +                      break
 +              }
 +              y := x.Args[1]
 +              x_0 := x.Args[0]
 +              if x_0.Op != OpAMD64Zero128 {
 +                      break
 +              }
 +              if !(x.Uses == 1) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPBROADCASTW512)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VMOVQ, types.TypeVec128)
 +              v0.AddArg(y)
 +              v.AddArg(v0)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPCMPD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPCMPD512 [c] x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPCMPD512load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPCMPD512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPCMPDMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPCMPDMasked128 [c] x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPCMPDMasked128load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPCMPDMasked128load)
 +                      v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPCMPDMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPCMPDMasked256 [c] x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPCMPDMasked256load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPCMPDMasked256load)
 +                      v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPCMPDMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPCMPDMasked512 [c] x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPCMPDMasked512load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPCMPDMasked512load)
 +                      v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPCMPEQD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPCMPEQD512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPCMPEQD512load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPCMPEQD512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPCMPEQQ512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPCMPEQQ512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPCMPEQQ512load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPCMPEQQ512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPCMPGTD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPCMPGTD512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPCMPGTD512load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPCMPGTD512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPCMPGTQ512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPCMPGTQ512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPCMPGTQ512load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPCMPGTQ512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPCMPQ512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPCMPQ512 [c] x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPCMPQ512load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPCMPQ512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPCMPQMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPCMPQMasked128 [c] x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPCMPQMasked128load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPCMPQMasked128load)
 +                      v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPCMPQMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPCMPQMasked256 [c] x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPCMPQMasked256load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPCMPQMasked256load)
 +                      v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPCMPQMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPCMPQMasked512 [c] x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPCMPQMasked512load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPCMPQMasked512load)
 +                      v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPCMPUD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPCMPUD512 [c] x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPCMPUD512load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPCMPUD512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPCMPUDMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPCMPUDMasked128 [c] x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPCMPUDMasked128load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPCMPUDMasked128load)
 +                      v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPCMPUDMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPCMPUDMasked256 [c] x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPCMPUDMasked256load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPCMPUDMasked256load)
 +                      v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPCMPUDMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPCMPUDMasked512 [c] x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPCMPUDMasked512load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPCMPUDMasked512load)
 +                      v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPCMPUQ512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPCMPUQ512 [c] x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPCMPUQ512load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPCMPUQ512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPCMPUQMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPCMPUQMasked128 [c] x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPCMPUQMasked128load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPCMPUQMasked128load)
 +                      v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPCMPUQMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPCMPUQMasked256 [c] x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPCMPUQMasked256load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPCMPUQMasked256load)
 +                      v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPCMPUQMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPCMPUQMasked512 [c] x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPCMPUQMasked512load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPCMPUQMasked512load)
 +                      v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPDPBUSD512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPDPBUSD512 x y l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPDPBUSD512load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPDPBUSD512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPDPBUSDMasked128(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPDPBUSDMasked128 x y l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPDPBUSDMasked128load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPDPBUSDMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPDPBUSDMasked256(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPDPBUSDMasked256 x y l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPDPBUSDMasked256load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPDPBUSDMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPDPBUSDMasked512(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPDPBUSDMasked512 x y l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPDPBUSDMasked512load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPDPBUSDMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPDPBUSDS512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPDPBUSDS512 x y l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPDPBUSDS512load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPDPBUSDS512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPDPBUSDSMasked128(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPDPBUSDSMasked128 x y l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPDPBUSDSMasked128load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPDPBUSDSMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPDPBUSDSMasked256(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPDPBUSDSMasked256 x y l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPDPBUSDSMasked256load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPDPBUSDSMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPDPBUSDSMasked512(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPDPBUSDSMasked512 x y l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPDPBUSDSMasked512load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPDPBUSDSMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPDPWSSD512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPDPWSSD512 x y l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPDPWSSD512load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPDPWSSD512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPDPWSSDMasked128(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPDPWSSDMasked128 x y l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPDPWSSDMasked128load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPDPWSSDMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPDPWSSDMasked256(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPDPWSSDMasked256 x y l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPDPWSSDMasked256load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPDPWSSDMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPDPWSSDMasked512(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPDPWSSDMasked512 x y l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPDPWSSDMasked512load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPDPWSSDMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMD512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMD512load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMD512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMDMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMDMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMDMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMDMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMDMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMDMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMDMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMDMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMI2D128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMI2D128 x y l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMI2D128load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMI2D128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMI2D256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMI2D256 x y l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMI2D256load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMI2D256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMI2D512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMI2D512 x y l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMI2D512load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMI2D512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMI2DMasked128(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMI2DMasked128 x y l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMI2DMasked128load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMI2DMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMI2DMasked256(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMI2DMasked256 x y l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMI2DMasked256load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMI2DMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMI2DMasked512(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMI2DMasked512 x y l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMI2DMasked512load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMI2DMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMI2PD128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMI2PD128 x y l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMI2PD128load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMI2PD128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMI2PD256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMI2PD256 x y l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMI2PD256load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMI2PD256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMI2PD512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMI2PD512 x y l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMI2PD512load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMI2PD512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMI2PDMasked128(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMI2PDMasked128 x y l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMI2PDMasked128load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMI2PDMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMI2PDMasked256(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMI2PDMasked256 x y l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMI2PDMasked256load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMI2PDMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMI2PDMasked512(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMI2PDMasked512 x y l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMI2PDMasked512load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMI2PDMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMI2PS128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMI2PS128 x y l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMI2PS128load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMI2PS128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMI2PS256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMI2PS256 x y l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMI2PS256load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMI2PS256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMI2PS512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMI2PS512 x y l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMI2PS512load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMI2PS512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMI2PSMasked128(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMI2PSMasked128 x y l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMI2PSMasked128load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMI2PSMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMI2PSMasked256(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMI2PSMasked256 x y l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMI2PSMasked256load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMI2PSMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMI2PSMasked512(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMI2PSMasked512 x y l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMI2PSMasked512load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMI2PSMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMI2Q128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMI2Q128 x y l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMI2Q128load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMI2Q128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMI2Q256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMI2Q256 x y l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMI2Q256load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMI2Q256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMI2Q512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMI2Q512 x y l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMI2Q512load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMI2Q512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMI2QMasked128(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMI2QMasked128 x y l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMI2QMasked128load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMI2QMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMI2QMasked256(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMI2QMasked256 x y l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMI2QMasked256load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMI2QMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMI2QMasked512(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMI2QMasked512 x y l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMI2QMasked512load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMI2QMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMPD256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMPD256 x l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMPD256load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMPD256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMPD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMPD512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMPD512load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMPD512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMPDMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMPDMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMPDMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMPDMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMPDMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMPDMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMPDMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMPDMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMPS512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMPS512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMPS512load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMPS512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMPSMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMPSMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMPSMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMPSMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMPSMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMPSMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMPSMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMPSMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMQ256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMQ256 x l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMQ256load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMQ256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMQ512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMQ512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMQ512load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMQ512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMQMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMQMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMQMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMQMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPERMQMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPERMQMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPERMQMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPERMQMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPINSRD128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPINSRD128 [0] (Zero128 <t>) y)
 +      // cond: y.Type.IsFloat()
 +      // result: (VMOVSSf2v <types.TypeVec128> y)
 +      for {
 +              if auxIntToUint8(v.AuxInt) != 0 || v_0.Op != OpAMD64Zero128 {
 +                      break
 +              }
 +              y := v_1
 +              if !(y.Type.IsFloat()) {
 +                      break
 +              }
 +              v.reset(OpAMD64VMOVSSf2v)
 +              v.Type = types.TypeVec128
 +              v.AddArg(y)
 +              return true
 +      }
 +      // match: (VPINSRD128 [0] (Zero128 <t>) y)
 +      // cond: !y.Type.IsFloat()
 +      // result: (VMOVD <types.TypeVec128> y)
 +      for {
 +              if auxIntToUint8(v.AuxInt) != 0 || v_0.Op != OpAMD64Zero128 {
 +                      break
 +              }
 +              y := v_1
 +              if !(!y.Type.IsFloat()) {
 +                      break
 +              }
 +              v.reset(OpAMD64VMOVD)
 +              v.Type = types.TypeVec128
 +              v.AddArg(y)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPINSRQ128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPINSRQ128 [0] (Zero128 <t>) y)
 +      // cond: y.Type.IsFloat()
 +      // result: (VMOVSDf2v <types.TypeVec128> y)
 +      for {
 +              if auxIntToUint8(v.AuxInt) != 0 || v_0.Op != OpAMD64Zero128 {
 +                      break
 +              }
 +              y := v_1
 +              if !(y.Type.IsFloat()) {
 +                      break
 +              }
 +              v.reset(OpAMD64VMOVSDf2v)
 +              v.Type = types.TypeVec128
 +              v.AddArg(y)
 +              return true
 +      }
 +      // match: (VPINSRQ128 [0] (Zero128 <t>) y)
 +      // cond: !y.Type.IsFloat()
 +      // result: (VMOVQ <types.TypeVec128> y)
 +      for {
 +              if auxIntToUint8(v.AuxInt) != 0 || v_0.Op != OpAMD64Zero128 {
 +                      break
 +              }
 +              y := v_1
 +              if !(!y.Type.IsFloat()) {
 +                      break
 +              }
 +              v.reset(OpAMD64VMOVQ)
 +              v.Type = types.TypeVec128
 +              v.AddArg(y)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPLZCNTD128(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPLZCNTD128 l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPLZCNTD128load {sym} [off] ptr mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPLZCNTD128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPLZCNTD256(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPLZCNTD256 l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPLZCNTD256load {sym} [off] ptr mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPLZCNTD256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPLZCNTD512(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPLZCNTD512 l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPLZCNTD512load {sym} [off] ptr mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPLZCNTD512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPLZCNTDMasked128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPLZCNTDMasked128 l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPLZCNTDMasked128load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPLZCNTDMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPLZCNTDMasked256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPLZCNTDMasked256 l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPLZCNTDMasked256load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPLZCNTDMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPLZCNTDMasked512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPLZCNTDMasked512 l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPLZCNTDMasked512load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPLZCNTDMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPLZCNTQ128(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPLZCNTQ128 l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPLZCNTQ128load {sym} [off] ptr mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPLZCNTQ128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPLZCNTQ256(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPLZCNTQ256 l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPLZCNTQ256load {sym} [off] ptr mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPLZCNTQ256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPLZCNTQ512(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPLZCNTQ512 l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPLZCNTQ512load {sym} [off] ptr mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPLZCNTQ512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPLZCNTQMasked128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPLZCNTQMasked128 l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPLZCNTQMasked128load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPLZCNTQMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPLZCNTQMasked256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPLZCNTQMasked256 l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPLZCNTQMasked256load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPLZCNTQMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPLZCNTQMasked512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPLZCNTQMasked512 l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPLZCNTQMasked512load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPLZCNTQMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMAXSD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMAXSD512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMAXSD512load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMAXSD512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMAXSDMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMAXSDMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMAXSDMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMAXSDMasked128load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMAXSDMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMAXSDMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMAXSDMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMAXSDMasked256load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMAXSDMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMAXSDMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMAXSDMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMAXSDMasked512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMAXSQ128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMAXSQ128 x l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMAXSQ128load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMAXSQ128load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMAXSQ256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMAXSQ256 x l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMAXSQ256load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMAXSQ256load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMAXSQ512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMAXSQ512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMAXSQ512load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMAXSQ512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMAXSQMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMAXSQMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMAXSQMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMAXSQMasked128load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMAXSQMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMAXSQMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMAXSQMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMAXSQMasked256load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMAXSQMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMAXSQMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMAXSQMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMAXSQMasked512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMAXUD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMAXUD512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMAXUD512load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMAXUD512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMAXUDMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMAXUDMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMAXUDMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMAXUDMasked128load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMAXUDMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMAXUDMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMAXUDMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMAXUDMasked256load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMAXUDMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMAXUDMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMAXUDMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMAXUDMasked512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMAXUQ128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMAXUQ128 x l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMAXUQ128load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMAXUQ128load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMAXUQ256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMAXUQ256 x l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMAXUQ256load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMAXUQ256load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMAXUQ512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMAXUQ512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMAXUQ512load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMAXUQ512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMAXUQMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMAXUQMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMAXUQMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMAXUQMasked128load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMAXUQMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMAXUQMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMAXUQMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMAXUQMasked256load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMAXUQMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMAXUQMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMAXUQMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMAXUQMasked512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMINSD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMINSD512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMINSD512load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMINSD512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMINSDMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMINSDMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMINSDMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMINSDMasked128load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMINSDMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMINSDMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMINSDMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMINSDMasked256load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMINSDMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMINSDMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMINSDMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMINSDMasked512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMINSQ128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMINSQ128 x l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMINSQ128load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMINSQ128load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMINSQ256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMINSQ256 x l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMINSQ256load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMINSQ256load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMINSQ512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMINSQ512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMINSQ512load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMINSQ512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMINSQMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMINSQMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMINSQMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMINSQMasked128load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMINSQMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMINSQMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMINSQMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMINSQMasked256load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMINSQMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMINSQMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMINSQMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMINSQMasked512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMINUD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMINUD512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMINUD512load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMINUD512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMINUDMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMINUDMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMINUDMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMINUDMasked128load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMINUDMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMINUDMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMINUDMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMINUDMasked256load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMINUDMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMINUDMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMINUDMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMINUDMasked512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMINUQ128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMINUQ128 x l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMINUQ128load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMINUQ128load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMINUQ256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMINUQ256 x l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMINUQ256load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMINUQ256load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMINUQ512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMINUQ512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMINUQ512load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMINUQ512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMINUQMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMINUQMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMINUQMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMINUQMasked128load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMINUQMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMINUQMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMINUQMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMINUQMasked256load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMINUQMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMINUQMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMINUQMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMINUQMasked512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMOVVec16x16ToM(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPMOVVec16x16ToM (VPMOVMToVec16x16 x))
 +      // result: x
 +      for {
 +              if v_0.Op != OpAMD64VPMOVMToVec16x16 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              v.copyOf(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMOVVec16x32ToM(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPMOVVec16x32ToM (VPMOVMToVec16x32 x))
 +      // result: x
 +      for {
 +              if v_0.Op != OpAMD64VPMOVMToVec16x32 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              v.copyOf(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMOVVec16x8ToM(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPMOVVec16x8ToM (VPMOVMToVec16x8 x))
 +      // result: x
 +      for {
 +              if v_0.Op != OpAMD64VPMOVMToVec16x8 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              v.copyOf(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMOVVec32x16ToM(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPMOVVec32x16ToM (VPMOVMToVec32x16 x))
 +      // result: x
 +      for {
 +              if v_0.Op != OpAMD64VPMOVMToVec32x16 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              v.copyOf(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMOVVec32x4ToM(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPMOVVec32x4ToM (VPMOVMToVec32x4 x))
 +      // result: x
 +      for {
 +              if v_0.Op != OpAMD64VPMOVMToVec32x4 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              v.copyOf(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMOVVec32x8ToM(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPMOVVec32x8ToM (VPMOVMToVec32x8 x))
 +      // result: x
 +      for {
 +              if v_0.Op != OpAMD64VPMOVMToVec32x8 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              v.copyOf(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMOVVec64x2ToM(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPMOVVec64x2ToM (VPMOVMToVec64x2 x))
 +      // result: x
 +      for {
 +              if v_0.Op != OpAMD64VPMOVMToVec64x2 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              v.copyOf(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMOVVec64x4ToM(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPMOVVec64x4ToM (VPMOVMToVec64x4 x))
 +      // result: x
 +      for {
 +              if v_0.Op != OpAMD64VPMOVMToVec64x4 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              v.copyOf(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMOVVec64x8ToM(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPMOVVec64x8ToM (VPMOVMToVec64x8 x))
 +      // result: x
 +      for {
 +              if v_0.Op != OpAMD64VPMOVMToVec64x8 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              v.copyOf(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMOVVec8x16ToM(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPMOVVec8x16ToM (VPMOVMToVec8x16 x))
 +      // result: x
 +      for {
 +              if v_0.Op != OpAMD64VPMOVMToVec8x16 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              v.copyOf(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMOVVec8x32ToM(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPMOVVec8x32ToM (VPMOVMToVec8x32 x))
 +      // result: x
 +      for {
 +              if v_0.Op != OpAMD64VPMOVMToVec8x32 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              v.copyOf(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMOVVec8x64ToM(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPMOVVec8x64ToM (VPMOVMToVec8x64 x))
 +      // result: x
 +      for {
 +              if v_0.Op != OpAMD64VPMOVMToVec8x64 {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              v.copyOf(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMULLD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMULLD512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMULLD512load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMULLD512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMULLDMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMULLDMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMULLDMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMULLDMasked128load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMULLDMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMULLDMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMULLDMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMULLDMasked256load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMULLDMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMULLDMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMULLDMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMULLDMasked512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMULLQ128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMULLQ128 x l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMULLQ128load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMULLQ128load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMULLQ256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMULLQ256 x l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMULLQ256load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMULLQ256load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMULLQ512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMULLQ512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMULLQ512load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMULLQ512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMULLQMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMULLQMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMULLQMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMULLQMasked128load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMULLQMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMULLQMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMULLQMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMULLQMasked256load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPMULLQMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPMULLQMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPMULLQMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPMULLQMasked512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPOPCNTD128(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPOPCNTD128 l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPOPCNTD128load {sym} [off] ptr mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPOPCNTD128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPOPCNTD256(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPOPCNTD256 l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPOPCNTD256load {sym} [off] ptr mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPOPCNTD256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPOPCNTD512(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPOPCNTD512 l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPOPCNTD512load {sym} [off] ptr mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPOPCNTD512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPOPCNTDMasked128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPOPCNTDMasked128 l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPOPCNTDMasked128load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPOPCNTDMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPOPCNTDMasked256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPOPCNTDMasked256 l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPOPCNTDMasked256load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPOPCNTDMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPOPCNTDMasked512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPOPCNTDMasked512 l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPOPCNTDMasked512load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPOPCNTDMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPOPCNTQ128(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPOPCNTQ128 l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPOPCNTQ128load {sym} [off] ptr mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPOPCNTQ128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPOPCNTQ256(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPOPCNTQ256 l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPOPCNTQ256load {sym} [off] ptr mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPOPCNTQ256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPOPCNTQ512(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPOPCNTQ512 l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPOPCNTQ512load {sym} [off] ptr mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPOPCNTQ512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPOPCNTQMasked128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPOPCNTQMasked128 l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPOPCNTQMasked128load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPOPCNTQMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPOPCNTQMasked256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPOPCNTQMasked256 l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPOPCNTQMasked256load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPOPCNTQMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPOPCNTQMasked512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPOPCNTQMasked512 l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPOPCNTQMasked512load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPOPCNTQMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPORD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPORD512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPORD512load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPORD512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPORDMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPORDMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPORDMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPORDMasked128load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPORDMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPORDMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPORDMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPORDMasked256load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPORDMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPORDMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPORDMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPORDMasked512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPORQ512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPORQ512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPORQ512load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPORQ512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPORQMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPORQMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPORQMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPORQMasked128load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPORQMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPORQMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPORQMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPORQMasked256load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPORQMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPORQMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPORQMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPORQMasked512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPROLD128(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPROLD128 [c] l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPROLD128load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLD128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPROLD256(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPROLD256 [c] l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPROLD256load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLD256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPROLD512(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPROLD512 [c] l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPROLD512load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLD512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPROLDMasked128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPROLDMasked128 [c] l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPROLDMasked128load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLDMasked128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPROLDMasked256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPROLDMasked256 [c] l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPROLDMasked256load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLDMasked256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPROLDMasked512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPROLDMasked512 [c] l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPROLDMasked512load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLDMasked512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPROLQ128(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPROLQ128 [c] l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPROLQ128load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLQ128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPROLQ256(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPROLQ256 [c] l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPROLQ256load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLQ256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPROLQ512(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPROLQ512 [c] l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPROLQ512load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLQ512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPROLQMasked128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPROLQMasked128 [c] l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPROLQMasked128load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLQMasked128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPROLQMasked256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPROLQMasked256 [c] l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPROLQMasked256load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLQMasked256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPROLQMasked512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPROLQMasked512 [c] l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPROLQMasked512load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLQMasked512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPROLVD128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPROLVD128 x l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPROLVD128load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLVD128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPROLVD256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPROLVD256 x l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPROLVD256load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLVD256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPROLVD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPROLVD512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPROLVD512load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLVD512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPROLVDMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPROLVDMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPROLVDMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLVDMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPROLVDMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPROLVDMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPROLVDMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLVDMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPROLVDMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPROLVDMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPROLVDMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLVDMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPROLVQ128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPROLVQ128 x l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPROLVQ128load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLVQ128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPROLVQ256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPROLVQ256 x l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPROLVQ256load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLVQ256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPROLVQ512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPROLVQ512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPROLVQ512load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLVQ512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPROLVQMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPROLVQMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPROLVQMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLVQMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPROLVQMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPROLVQMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPROLVQMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLVQMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPROLVQMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPROLVQMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPROLVQMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPROLVQMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPRORD128(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPRORD128 [c] l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPRORD128load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORD128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPRORD256(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPRORD256 [c] l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPRORD256load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORD256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPRORD512(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPRORD512 [c] l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPRORD512load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORD512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPRORDMasked128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPRORDMasked128 [c] l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPRORDMasked128load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORDMasked128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPRORDMasked256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPRORDMasked256 [c] l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPRORDMasked256load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORDMasked256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPRORDMasked512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPRORDMasked512 [c] l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPRORDMasked512load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORDMasked512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPRORQ128(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPRORQ128 [c] l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPRORQ128load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORQ128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPRORQ256(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPRORQ256 [c] l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPRORQ256load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORQ256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPRORQ512(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPRORQ512 [c] l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPRORQ512load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORQ512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPRORQMasked128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPRORQMasked128 [c] l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPRORQMasked128load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORQMasked128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPRORQMasked256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPRORQMasked256 [c] l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPRORQMasked256load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORQMasked256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPRORQMasked512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPRORQMasked512 [c] l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPRORQMasked512load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORQMasked512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPRORVD128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPRORVD128 x l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPRORVD128load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORVD128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPRORVD256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPRORVD256 x l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPRORVD256load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORVD256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPRORVD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPRORVD512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPRORVD512load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORVD512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPRORVDMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPRORVDMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPRORVDMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORVDMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPRORVDMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPRORVDMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPRORVDMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORVDMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPRORVDMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPRORVDMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPRORVDMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORVDMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPRORVQ128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPRORVQ128 x l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPRORVQ128load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORVQ128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPRORVQ256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPRORVQ256 x l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPRORVQ256load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORVQ256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPRORVQ512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPRORVQ512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPRORVQ512load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORVQ512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPRORVQMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPRORVQMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPRORVQMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORVQMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPRORVQMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPRORVQMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPRORVQMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORVQMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPRORVQMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPRORVQMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPRORVQMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPRORVQMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHLDD128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHLDD128 [c] x l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHLDD128load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHLDD128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHLDD256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHLDD256 [c] x l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHLDD256load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHLDD256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHLDD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHLDD512 [c] x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHLDD512load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHLDD512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHLDDMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHLDDMasked128 [c] x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHLDDMasked128load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHLDDMasked128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHLDDMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHLDDMasked256 [c] x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHLDDMasked256load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHLDDMasked256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHLDDMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHLDDMasked512 [c] x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHLDDMasked512load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHLDDMasked512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHLDQ128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHLDQ128 [c] x l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHLDQ128load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHLDQ128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHLDQ256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHLDQ256 [c] x l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHLDQ256load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHLDQ256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHLDQ512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHLDQ512 [c] x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHLDQ512load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHLDQ512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHLDQMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHLDQMasked128 [c] x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHLDQMasked128load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHLDQMasked128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHLDQMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHLDQMasked256 [c] x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHLDQMasked256load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHLDQMasked256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHLDQMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHLDQMasked512 [c] x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHLDQMasked512load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHLDQMasked512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHLDVD128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHLDVD128 x y l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHLDVD128load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHLDVD128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHLDVD256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHLDVD256 x y l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHLDVD256load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHLDVD256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHLDVD512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHLDVD512 x y l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHLDVD512load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHLDVD512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHLDVDMasked128(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHLDVDMasked128 x y l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHLDVDMasked128load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHLDVDMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHLDVDMasked256(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHLDVDMasked256 x y l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHLDVDMasked256load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHLDVDMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHLDVDMasked512(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHLDVDMasked512 x y l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHLDVDMasked512load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHLDVDMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHLDVQ128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHLDVQ128 x y l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHLDVQ128load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHLDVQ128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHLDVQ256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHLDVQ256 x y l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHLDVQ256load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHLDVQ256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHLDVQ512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHLDVQ512 x y l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHLDVQ512load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHLDVQ512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHLDVQMasked128(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHLDVQMasked128 x y l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHLDVQMasked128load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHLDVQMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHLDVQMasked256(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHLDVQMasked256 x y l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHLDVQMasked256load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHLDVQMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHLDVQMasked512(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHLDVQMasked512 x y l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHLDVQMasked512load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHLDVQMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHRDD128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHRDD128 [c] x l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHRDD128load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHRDD128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHRDD256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHRDD256 [c] x l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHRDD256load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHRDD256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHRDD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHRDD512 [c] x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHRDD512load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHRDD512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHRDDMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHRDDMasked128 [c] x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHRDDMasked128load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHRDDMasked128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHRDDMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHRDDMasked256 [c] x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHRDDMasked256load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHRDDMasked256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHRDDMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHRDDMasked512 [c] x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHRDDMasked512load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHRDDMasked512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHRDQ128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHRDQ128 [c] x l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHRDQ128load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHRDQ128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHRDQ256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHRDQ256 [c] x l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHRDQ256load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHRDQ256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHRDQ512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHRDQ512 [c] x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHRDQ512load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHRDQ512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHRDQMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHRDQMasked128 [c] x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHRDQMasked128load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHRDQMasked128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHRDQMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHRDQMasked256 [c] x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHRDQMasked256load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHRDQMasked256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHRDQMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHRDQMasked512 [c] x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHRDQMasked512load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHRDQMasked512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHRDVD128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHRDVD128 x y l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHRDVD128load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHRDVD128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHRDVD256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHRDVD256 x y l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHRDVD256load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHRDVD256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHRDVD512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHRDVD512 x y l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHRDVD512load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHRDVD512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHRDVDMasked128(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHRDVDMasked128 x y l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHRDVDMasked128load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHRDVDMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHRDVDMasked256(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHRDVDMasked256 x y l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHRDVDMasked256load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHRDVDMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHRDVDMasked512(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHRDVDMasked512 x y l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHRDVDMasked512load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHRDVDMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHRDVQ128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHRDVQ128 x y l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHRDVQ128load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHRDVQ128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHRDVQ256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHRDVQ256 x y l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHRDVQ256load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHRDVQ256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHRDVQ512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHRDVQ512 x y l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHRDVQ512load {sym} [off] x y ptr mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHRDVQ512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHRDVQMasked128(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHRDVQMasked128 x y l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHRDVQMasked128load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHRDVQMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHRDVQMasked256(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHRDVQMasked256 x y l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHRDVQMasked256load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHRDVQMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHRDVQMasked512(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHRDVQMasked512 x y l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHRDVQMasked512load {sym} [off] x y ptr mask mem)
 +      for {
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_3
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHRDVQMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg5(x, y, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHUFD512(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPSHUFD512 [c] l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHUFD512load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHUFD512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHUFDMasked128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHUFDMasked128 [c] l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHUFDMasked128load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHUFDMasked128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHUFDMasked256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHUFDMasked256 [c] l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHUFDMasked256load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHUFDMasked256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSHUFDMasked512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSHUFDMasked512 [c] l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSHUFDMasked512load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSHUFDMasked512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLD128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLD128 x (MOVQconst [c]))
 +      // result: (VPSLLD128const [uint8(c)] x)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              v.reset(OpAMD64VPSLLD128const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLD256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLD256 x (MOVQconst [c]))
 +      // result: (VPSLLD256const [uint8(c)] x)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              v.reset(OpAMD64VPSLLD256const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLD512 x (MOVQconst [c]))
 +      // result: (VPSLLD512const [uint8(c)] x)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              v.reset(OpAMD64VPSLLD512const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLD512const(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPSLLD512const [c] l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSLLD512constload {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSLLD512constload)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLDMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLDMasked128 x (MOVQconst [c]) mask)
 +      // result: (VPSLLDMasked128const [uint8(c)] x mask)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              mask := v_2
 +              v.reset(OpAMD64VPSLLDMasked128const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLDMasked128const(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLDMasked128const [c] l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSLLDMasked128constload {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSLLDMasked128constload)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLDMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLDMasked256 x (MOVQconst [c]) mask)
 +      // result: (VPSLLDMasked256const [uint8(c)] x mask)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              mask := v_2
 +              v.reset(OpAMD64VPSLLDMasked256const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLDMasked256const(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLDMasked256const [c] l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSLLDMasked256constload {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSLLDMasked256constload)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLDMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLDMasked512 x (MOVQconst [c]) mask)
 +      // result: (VPSLLDMasked512const [uint8(c)] x mask)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              mask := v_2
 +              v.reset(OpAMD64VPSLLDMasked512const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLDMasked512const(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLDMasked512const [c] l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSLLDMasked512constload {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSLLDMasked512constload)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLQ128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLQ128 x (MOVQconst [c]))
 +      // result: (VPSLLQ128const [uint8(c)] x)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              v.reset(OpAMD64VPSLLQ128const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLQ256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLQ256 x (MOVQconst [c]))
 +      // result: (VPSLLQ256const [uint8(c)] x)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              v.reset(OpAMD64VPSLLQ256const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLQ512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLQ512 x (MOVQconst [c]))
 +      // result: (VPSLLQ512const [uint8(c)] x)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              v.reset(OpAMD64VPSLLQ512const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLQ512const(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPSLLQ512const [c] l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSLLQ512constload {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSLLQ512constload)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLQMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLQMasked128 x (MOVQconst [c]) mask)
 +      // result: (VPSLLQMasked128const [uint8(c)] x mask)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              mask := v_2
 +              v.reset(OpAMD64VPSLLQMasked128const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLQMasked128const(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLQMasked128const [c] l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSLLQMasked128constload {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSLLQMasked128constload)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLQMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLQMasked256 x (MOVQconst [c]) mask)
 +      // result: (VPSLLQMasked256const [uint8(c)] x mask)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              mask := v_2
 +              v.reset(OpAMD64VPSLLQMasked256const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLQMasked256const(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLQMasked256const [c] l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSLLQMasked256constload {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSLLQMasked256constload)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLQMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLQMasked512 x (MOVQconst [c]) mask)
 +      // result: (VPSLLQMasked512const [uint8(c)] x mask)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              mask := v_2
 +              v.reset(OpAMD64VPSLLQMasked512const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLQMasked512const(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLQMasked512const [c] l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSLLQMasked512constload {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSLLQMasked512constload)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLVD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLVD512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSLLVD512load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSLLVD512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLVDMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLVDMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSLLVDMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSLLVDMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLVDMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLVDMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSLLVDMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSLLVDMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLVDMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLVDMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSLLVDMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSLLVDMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLVQ512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLVQ512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSLLVQ512load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSLLVQ512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLVQMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLVQMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSLLVQMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSLLVQMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLVQMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLVQMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSLLVQMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSLLVQMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLVQMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLVQMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSLLVQMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSLLVQMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLW128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLW128 x (MOVQconst [c]))
 +      // result: (VPSLLW128const [uint8(c)] x)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              v.reset(OpAMD64VPSLLW128const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLW256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLW256 x (MOVQconst [c]))
 +      // result: (VPSLLW256const [uint8(c)] x)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              v.reset(OpAMD64VPSLLW256const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLW512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLW512 x (MOVQconst [c]))
 +      // result: (VPSLLW512const [uint8(c)] x)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              v.reset(OpAMD64VPSLLW512const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLWMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLWMasked128 x (MOVQconst [c]) mask)
 +      // result: (VPSLLWMasked128const [uint8(c)] x mask)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              mask := v_2
 +              v.reset(OpAMD64VPSLLWMasked128const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLWMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLWMasked256 x (MOVQconst [c]) mask)
 +      // result: (VPSLLWMasked256const [uint8(c)] x mask)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              mask := v_2
 +              v.reset(OpAMD64VPSLLWMasked256const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSLLWMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSLLWMasked512 x (MOVQconst [c]) mask)
 +      // result: (VPSLLWMasked512const [uint8(c)] x mask)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              mask := v_2
 +              v.reset(OpAMD64VPSLLWMasked512const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAD128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRAD128 x (MOVQconst [c]))
 +      // result: (VPSRAD128const [uint8(c)] x)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              v.reset(OpAMD64VPSRAD128const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAD256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRAD256 x (MOVQconst [c]))
 +      // result: (VPSRAD256const [uint8(c)] x)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              v.reset(OpAMD64VPSRAD256const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRAD512 x (MOVQconst [c]))
 +      // result: (VPSRAD512const [uint8(c)] x)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              v.reset(OpAMD64VPSRAD512const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAD512const(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPSRAD512const [c] l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRAD512constload {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRAD512constload)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRADMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRADMasked128 x (MOVQconst [c]) mask)
 +      // result: (VPSRADMasked128const [uint8(c)] x mask)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              mask := v_2
 +              v.reset(OpAMD64VPSRADMasked128const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRADMasked128const(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRADMasked128const [c] l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRADMasked128constload {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRADMasked128constload)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRADMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRADMasked256 x (MOVQconst [c]) mask)
 +      // result: (VPSRADMasked256const [uint8(c)] x mask)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              mask := v_2
 +              v.reset(OpAMD64VPSRADMasked256const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRADMasked256const(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRADMasked256const [c] l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRADMasked256constload {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRADMasked256constload)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRADMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRADMasked512 x (MOVQconst [c]) mask)
 +      // result: (VPSRADMasked512const [uint8(c)] x mask)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              mask := v_2
 +              v.reset(OpAMD64VPSRADMasked512const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRADMasked512const(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRADMasked512const [c] l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRADMasked512constload {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRADMasked512constload)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAQ128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRAQ128 x (MOVQconst [c]))
 +      // result: (VPSRAQ128const [uint8(c)] x)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              v.reset(OpAMD64VPSRAQ128const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAQ128const(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPSRAQ128const [c] l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRAQ128constload {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRAQ128constload)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAQ256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRAQ256 x (MOVQconst [c]))
 +      // result: (VPSRAQ256const [uint8(c)] x)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              v.reset(OpAMD64VPSRAQ256const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAQ256const(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPSRAQ256const [c] l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRAQ256constload {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRAQ256constload)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAQ512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRAQ512 x (MOVQconst [c]))
 +      // result: (VPSRAQ512const [uint8(c)] x)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              v.reset(OpAMD64VPSRAQ512const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAQ512const(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPSRAQ512const [c] l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRAQ512constload {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRAQ512constload)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAQMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRAQMasked128 x (MOVQconst [c]) mask)
 +      // result: (VPSRAQMasked128const [uint8(c)] x mask)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              mask := v_2
 +              v.reset(OpAMD64VPSRAQMasked128const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAQMasked128const(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRAQMasked128const [c] l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRAQMasked128constload {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRAQMasked128constload)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAQMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRAQMasked256 x (MOVQconst [c]) mask)
 +      // result: (VPSRAQMasked256const [uint8(c)] x mask)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              mask := v_2
 +              v.reset(OpAMD64VPSRAQMasked256const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAQMasked256const(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRAQMasked256const [c] l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRAQMasked256constload {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRAQMasked256constload)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAQMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRAQMasked512 x (MOVQconst [c]) mask)
 +      // result: (VPSRAQMasked512const [uint8(c)] x mask)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              mask := v_2
 +              v.reset(OpAMD64VPSRAQMasked512const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAQMasked512const(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRAQMasked512const [c] l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRAQMasked512constload {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRAQMasked512constload)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAVD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRAVD512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRAVD512load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRAVD512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAVDMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRAVDMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRAVDMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRAVDMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAVDMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRAVDMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRAVDMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRAVDMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAVDMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRAVDMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRAVDMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRAVDMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAVQ128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRAVQ128 x l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRAVQ128load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRAVQ128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAVQ256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRAVQ256 x l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRAVQ256load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRAVQ256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAVQ512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRAVQ512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRAVQ512load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRAVQ512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAVQMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRAVQMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRAVQMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRAVQMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAVQMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRAVQMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRAVQMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRAVQMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAVQMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRAVQMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRAVQMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRAVQMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAW128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRAW128 x (MOVQconst [c]))
 +      // result: (VPSRAW128const [uint8(c)] x)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              v.reset(OpAMD64VPSRAW128const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAW256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRAW256 x (MOVQconst [c]))
 +      // result: (VPSRAW256const [uint8(c)] x)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              v.reset(OpAMD64VPSRAW256const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAW512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRAW512 x (MOVQconst [c]))
 +      // result: (VPSRAW512const [uint8(c)] x)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              v.reset(OpAMD64VPSRAW512const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAWMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRAWMasked128 x (MOVQconst [c]) mask)
 +      // result: (VPSRAWMasked128const [uint8(c)] x mask)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              mask := v_2
 +              v.reset(OpAMD64VPSRAWMasked128const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAWMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRAWMasked256 x (MOVQconst [c]) mask)
 +      // result: (VPSRAWMasked256const [uint8(c)] x mask)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              mask := v_2
 +              v.reset(OpAMD64VPSRAWMasked256const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRAWMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRAWMasked512 x (MOVQconst [c]) mask)
 +      // result: (VPSRAWMasked512const [uint8(c)] x mask)
 +      for {
 +              x := v_0
 +              if v_1.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              c := auxIntToInt64(v_1.AuxInt)
 +              mask := v_2
 +              v.reset(OpAMD64VPSRAWMasked512const)
 +              v.AuxInt = uint8ToAuxInt(uint8(c))
 +              v.AddArg2(x, mask)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRLD512const(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPSRLD512const [c] l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRLD512constload {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRLD512constload)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRLDMasked128const(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRLDMasked128const [c] l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRLDMasked128constload {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRLDMasked128constload)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRLDMasked256const(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRLDMasked256const [c] l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRLDMasked256constload {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRLDMasked256constload)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRLDMasked512const(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRLDMasked512const [c] l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRLDMasked512constload {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRLDMasked512constload)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRLQ512const(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VPSRLQ512const [c] l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRLQ512constload {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRLQ512constload)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRLQMasked128const(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRLQMasked128const [c] l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRLQMasked128constload {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRLQMasked128constload)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRLQMasked256const(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRLQMasked256const [c] l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRLQMasked256constload {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRLQMasked256constload)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRLQMasked512const(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRLQMasked512const [c] l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRLQMasked512constload {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRLQMasked512constload)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRLVD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRLVD512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRLVD512load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRLVD512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRLVDMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRLVDMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRLVDMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRLVDMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRLVDMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRLVDMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRLVDMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRLVDMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRLVDMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRLVDMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRLVDMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRLVDMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRLVQ512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRLVQ512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRLVQ512load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRLVQ512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRLVQMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRLVQMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRLVQMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRLVQMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRLVQMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRLVQMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRLVQMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRLVQMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSRLVQMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSRLVQMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSRLVQMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSRLVQMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSUBD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSUBD512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSUBD512load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSUBD512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSUBDMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSUBDMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSUBDMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSUBDMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSUBDMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSUBDMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSUBDMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSUBDMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSUBDMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSUBDMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSUBDMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSUBDMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSUBQ512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSUBQ512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSUBQ512load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSUBQ512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSUBQMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSUBQMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSUBQMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSUBQMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSUBQMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSUBQMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSUBQMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSUBQMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPSUBQMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPSUBQMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPSUBQMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPSUBQMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPTERNLOGD128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPTERNLOGD128 [c] x y l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPTERNLOGD128load {sym} [makeValAndOff(int32(int8(c)),off)] x y ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPTERNLOGD128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPTERNLOGD256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPTERNLOGD256 [c] x y l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPTERNLOGD256load {sym} [makeValAndOff(int32(int8(c)),off)] x y ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPTERNLOGD256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPTERNLOGD512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPTERNLOGD512 [c] x y l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPTERNLOGD512load {sym} [makeValAndOff(int32(int8(c)),off)] x y ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPTERNLOGD512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPTERNLOGQ128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPTERNLOGQ128 [c] x y l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPTERNLOGQ128load {sym} [makeValAndOff(int32(int8(c)),off)] x y ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPTERNLOGQ128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPTERNLOGQ256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPTERNLOGQ256 [c] x y l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPTERNLOGQ256load {sym} [makeValAndOff(int32(int8(c)),off)] x y ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPTERNLOGQ256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPTERNLOGQ512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPTERNLOGQ512 [c] x y l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPTERNLOGQ512load {sym} [makeValAndOff(int32(int8(c)),off)] x y ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              y := v_1
 +              l := v_2
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPTERNLOGQ512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, y, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPUNPCKHDQ512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPUNPCKHDQ512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPUNPCKHDQ512load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPUNPCKHDQ512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPUNPCKHQDQ512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPUNPCKHQDQ512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPUNPCKHQDQ512load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPUNPCKHQDQ512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPUNPCKLDQ512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPUNPCKLDQ512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPUNPCKLDQ512load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPUNPCKLDQ512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPUNPCKLQDQ512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPUNPCKLQDQ512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPUNPCKLQDQ512load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VPUNPCKLQDQ512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPXORD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPXORD512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPXORD512load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPXORD512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPXORDMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPXORDMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPXORDMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPXORDMasked128load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPXORDMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPXORDMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPXORDMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPXORDMasked256load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPXORDMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPXORDMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPXORDMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPXORDMasked512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPXORQ512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPXORQ512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPXORQ512load {sym} [off] x ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPXORQ512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPXORQMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPXORQMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPXORQMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload128 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPXORQMasked128load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPXORQMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPXORQMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPXORQMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload256 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPXORQMasked256load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VPXORQMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VPXORQMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VPXORQMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64VMOVDQUload512 {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      mask := v_2
 +                      if !(canMergeLoad(v, l) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64VPXORQMasked512load)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg4(x, ptr, mask, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRCP14PD128(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VRCP14PD128 l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRCP14PD128load {sym} [off] ptr mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRCP14PD128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRCP14PD256(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VRCP14PD256 l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRCP14PD256load {sym} [off] ptr mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRCP14PD256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRCP14PD512(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VRCP14PD512 l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRCP14PD512load {sym} [off] ptr mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRCP14PD512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRCP14PDMasked128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VRCP14PDMasked128 l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRCP14PDMasked128load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRCP14PDMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRCP14PDMasked256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VRCP14PDMasked256 l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRCP14PDMasked256load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRCP14PDMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRCP14PDMasked512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VRCP14PDMasked512 l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRCP14PDMasked512load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRCP14PDMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRCP14PS512(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VRCP14PS512 l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRCP14PS512load {sym} [off] ptr mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRCP14PS512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRCP14PSMasked128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VRCP14PSMasked128 l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRCP14PSMasked128load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRCP14PSMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRCP14PSMasked256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VRCP14PSMasked256 l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRCP14PSMasked256load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRCP14PSMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRCP14PSMasked512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VRCP14PSMasked512 l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRCP14PSMasked512load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRCP14PSMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VREDUCEPD128(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VREDUCEPD128 [c] l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VREDUCEPD128load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VREDUCEPD128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VREDUCEPD256(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VREDUCEPD256 [c] l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VREDUCEPD256load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VREDUCEPD256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VREDUCEPD512(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VREDUCEPD512 [c] l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VREDUCEPD512load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VREDUCEPD512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VREDUCEPDMasked128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VREDUCEPDMasked128 [c] l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VREDUCEPDMasked128load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VREDUCEPDMasked128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VREDUCEPDMasked256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VREDUCEPDMasked256 [c] l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VREDUCEPDMasked256load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VREDUCEPDMasked256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VREDUCEPDMasked512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VREDUCEPDMasked512 [c] l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VREDUCEPDMasked512load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VREDUCEPDMasked512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VREDUCEPS128(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VREDUCEPS128 [c] l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VREDUCEPS128load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VREDUCEPS128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VREDUCEPS256(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VREDUCEPS256 [c] l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VREDUCEPS256load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VREDUCEPS256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VREDUCEPS512(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VREDUCEPS512 [c] l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VREDUCEPS512load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VREDUCEPS512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VREDUCEPSMasked128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VREDUCEPSMasked128 [c] l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VREDUCEPSMasked128load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VREDUCEPSMasked128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VREDUCEPSMasked256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VREDUCEPSMasked256 [c] l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VREDUCEPSMasked256load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VREDUCEPSMasked256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VREDUCEPSMasked512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VREDUCEPSMasked512 [c] l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VREDUCEPSMasked512load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VREDUCEPSMasked512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRNDSCALEPD128(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VRNDSCALEPD128 [c] l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRNDSCALEPD128load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRNDSCALEPD128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRNDSCALEPD256(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VRNDSCALEPD256 [c] l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRNDSCALEPD256load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRNDSCALEPD256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRNDSCALEPD512(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VRNDSCALEPD512 [c] l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRNDSCALEPD512load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRNDSCALEPD512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRNDSCALEPDMasked128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VRNDSCALEPDMasked128 [c] l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRNDSCALEPDMasked128load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRNDSCALEPDMasked128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRNDSCALEPDMasked256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VRNDSCALEPDMasked256 [c] l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRNDSCALEPDMasked256load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRNDSCALEPDMasked256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRNDSCALEPDMasked512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VRNDSCALEPDMasked512 [c] l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRNDSCALEPDMasked512load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRNDSCALEPDMasked512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRNDSCALEPS128(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VRNDSCALEPS128 [c] l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRNDSCALEPS128load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRNDSCALEPS128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRNDSCALEPS256(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VRNDSCALEPS256 [c] l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRNDSCALEPS256load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRNDSCALEPS256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRNDSCALEPS512(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VRNDSCALEPS512 [c] l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRNDSCALEPS512load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRNDSCALEPS512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRNDSCALEPSMasked128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VRNDSCALEPSMasked128 [c] l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRNDSCALEPSMasked128load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRNDSCALEPSMasked128load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRNDSCALEPSMasked256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VRNDSCALEPSMasked256 [c] l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRNDSCALEPSMasked256load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRNDSCALEPSMasked256load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRNDSCALEPSMasked512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VRNDSCALEPSMasked512 [c] l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRNDSCALEPSMasked512load {sym} [makeValAndOff(int32(int8(c)),off)] ptr mask mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRNDSCALEPSMasked512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRSQRT14PD128(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VRSQRT14PD128 l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRSQRT14PD128load {sym} [off] ptr mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRSQRT14PD128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRSQRT14PD256(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VRSQRT14PD256 l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRSQRT14PD256load {sym} [off] ptr mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRSQRT14PD256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRSQRT14PD512(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VRSQRT14PD512 l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRSQRT14PD512load {sym} [off] ptr mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRSQRT14PD512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRSQRT14PDMasked128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VRSQRT14PDMasked128 l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRSQRT14PDMasked128load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRSQRT14PDMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRSQRT14PDMasked256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VRSQRT14PDMasked256 l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRSQRT14PDMasked256load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRSQRT14PDMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRSQRT14PDMasked512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VRSQRT14PDMasked512 l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRSQRT14PDMasked512load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRSQRT14PDMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRSQRT14PS512(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VRSQRT14PS512 l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRSQRT14PS512load {sym} [off] ptr mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRSQRT14PS512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRSQRT14PSMasked128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VRSQRT14PSMasked128 l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRSQRT14PSMasked128load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRSQRT14PSMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRSQRT14PSMasked256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VRSQRT14PSMasked256 l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRSQRT14PSMasked256load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRSQRT14PSMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VRSQRT14PSMasked512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VRSQRT14PSMasked512 l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VRSQRT14PSMasked512load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VRSQRT14PSMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VSCALEFPD128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VSCALEFPD128 x l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VSCALEFPD128load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSCALEFPD128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VSCALEFPD256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VSCALEFPD256 x l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VSCALEFPD256load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSCALEFPD256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VSCALEFPD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VSCALEFPD512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VSCALEFPD512load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSCALEFPD512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VSCALEFPDMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VSCALEFPDMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VSCALEFPDMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSCALEFPDMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VSCALEFPDMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VSCALEFPDMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VSCALEFPDMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSCALEFPDMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VSCALEFPDMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VSCALEFPDMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VSCALEFPDMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSCALEFPDMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VSCALEFPS128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VSCALEFPS128 x l:(VMOVDQUload128 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VSCALEFPS128load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSCALEFPS128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VSCALEFPS256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VSCALEFPS256 x l:(VMOVDQUload256 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VSCALEFPS256load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSCALEFPS256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VSCALEFPS512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VSCALEFPS512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VSCALEFPS512load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSCALEFPS512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VSCALEFPSMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VSCALEFPSMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VSCALEFPSMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSCALEFPSMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VSCALEFPSMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VSCALEFPSMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VSCALEFPSMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSCALEFPSMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VSCALEFPSMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VSCALEFPSMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VSCALEFPSMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSCALEFPSMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VSHUFPD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VSHUFPD512 [c] x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VSHUFPD512load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSHUFPD512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VSHUFPS512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VSHUFPS512 [c] x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VSHUFPS512load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mem)
 +      for {
 +              c := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSHUFPS512load)
 +              v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VSQRTPD512(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VSQRTPD512 l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VSQRTPD512load {sym} [off] ptr mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSQRTPD512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VSQRTPDMasked128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VSQRTPDMasked128 l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VSQRTPDMasked128load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSQRTPDMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VSQRTPDMasked256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VSQRTPDMasked256 l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VSQRTPDMasked256load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSQRTPDMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VSQRTPDMasked512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VSQRTPDMasked512 l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VSQRTPDMasked512load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSQRTPDMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VSQRTPS512(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (VSQRTPS512 l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VSQRTPS512load {sym} [off] ptr mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSQRTPS512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VSQRTPSMasked128(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VSQRTPSMasked128 l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VSQRTPSMasked128load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSQRTPSMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VSQRTPSMasked256(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VSQRTPSMasked256 l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VSQRTPSMasked256load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSQRTPSMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VSQRTPSMasked512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VSQRTPSMasked512 l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VSQRTPSMasked512load {sym} [off] ptr mask mem)
 +      for {
 +              l := v_0
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_1
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSQRTPSMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VSUBPD512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VSUBPD512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VSUBPD512load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSUBPD512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VSUBPDMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VSUBPDMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VSUBPDMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSUBPDMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VSUBPDMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VSUBPDMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VSUBPDMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSUBPDMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VSUBPDMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VSUBPDMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VSUBPDMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSUBPDMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VSUBPS512(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VSUBPS512 x l:(VMOVDQUload512 {sym} [off] ptr mem))
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VSUBPS512load {sym} [off] x ptr mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSUBPS512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(x, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VSUBPSMasked128(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VSUBPSMasked128 x l:(VMOVDQUload128 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VSUBPSMasked128load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload128 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSUBPSMasked128load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VSUBPSMasked256(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VSUBPSMasked256 x l:(VMOVDQUload256 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VSUBPSMasked256load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload256 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSUBPSMasked256load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64VSUBPSMasked512(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (VSUBPSMasked512 x l:(VMOVDQUload512 {sym} [off] ptr mem) mask)
 +      // cond: canMergeLoad(v, l) && clobber(l)
 +      // result: (VSUBPSMasked512load {sym} [off] x ptr mask mem)
 +      for {
 +              x := v_0
 +              l := v_1
 +              if l.Op != OpAMD64VMOVDQUload512 {
 +                      break
 +              }
 +              off := auxIntToInt32(l.AuxInt)
 +              sym := auxToSym(l.Aux)
 +              mem := l.Args[1]
 +              ptr := l.Args[0]
 +              mask := v_2
 +              if !(canMergeLoad(v, l) && clobber(l)) {
 +                      break
 +              }
 +              v.reset(OpAMD64VSUBPSMasked512load)
 +              v.AuxInt = int32ToAuxInt(off)
 +              v.Aux = symToAux(sym)
 +              v.AddArg4(x, ptr, mask, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64XADDLlock(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (XADDLlock [off1] {sym} val (ADDQconst [off2] ptr) mem)
 +      // cond: is32Bit(int64(off1)+int64(off2))
 +      // result: (XADDLlock [off1+off2] {sym} val ptr mem)
 +      for {
 +              off1 := auxIntToInt32(v.AuxInt)
 +              sym := auxToSym(v.Aux)
 +              val := v_0
 +              if v_1.Op != OpAMD64ADDQconst {
 +                      break
 +              }
 +              off2 := auxIntToInt32(v_1.AuxInt)
 +              ptr := v_1.Args[0]
 +              mem := v_2
 +              if !(is32Bit(int64(off1) + int64(off2))) {
 +                      break
 +              }
 +              v.reset(OpAMD64XADDLlock)
 +              v.AuxInt = int32ToAuxInt(off1 + off2)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(val, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64XADDQlock(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (XADDQlock [off1] {sym} val (ADDQconst [off2] ptr) mem)
 +      // cond: is32Bit(int64(off1)+int64(off2))
 +      // result: (XADDQlock [off1+off2] {sym} val ptr mem)
 +      for {
 +              off1 := auxIntToInt32(v.AuxInt)
 +              sym := auxToSym(v.Aux)
 +              val := v_0
 +              if v_1.Op != OpAMD64ADDQconst {
 +                      break
 +              }
 +              off2 := auxIntToInt32(v_1.AuxInt)
 +              ptr := v_1.Args[0]
 +              mem := v_2
 +              if !(is32Bit(int64(off1) + int64(off2))) {
 +                      break
 +              }
 +              v.reset(OpAMD64XADDQlock)
 +              v.AuxInt = int32ToAuxInt(off1 + off2)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(val, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64XCHGL(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (XCHGL [off1] {sym} val (ADDQconst [off2] ptr) mem)
 +      // cond: is32Bit(int64(off1)+int64(off2))
 +      // result: (XCHGL [off1+off2] {sym} val ptr mem)
 +      for {
 +              off1 := auxIntToInt32(v.AuxInt)
 +              sym := auxToSym(v.Aux)
 +              val := v_0
 +              if v_1.Op != OpAMD64ADDQconst {
 +                      break
 +              }
 +              off2 := auxIntToInt32(v_1.AuxInt)
 +              ptr := v_1.Args[0]
 +              mem := v_2
 +              if !(is32Bit(int64(off1) + int64(off2))) {
 +                      break
 +              }
 +              v.reset(OpAMD64XCHGL)
 +              v.AuxInt = int32ToAuxInt(off1 + off2)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(val, ptr, mem)
 +              return true
 +      }
 +      // match: (XCHGL [off1] {sym1} val (LEAQ [off2] {sym2} ptr) mem)
 +      // cond: is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2) && ptr.Op != OpSB
 +      // result: (XCHGL [off1+off2] {mergeSym(sym1,sym2)} val ptr mem)
 +      for {
 +              off1 := auxIntToInt32(v.AuxInt)
 +              sym1 := auxToSym(v.Aux)
 +              val := v_0
 +              if v_1.Op != OpAMD64LEAQ {
 +                      break
 +              }
 +              off2 := auxIntToInt32(v_1.AuxInt)
 +              sym2 := auxToSym(v_1.Aux)
 +              ptr := v_1.Args[0]
 +              mem := v_2
 +              if !(is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2) && ptr.Op != OpSB) {
 +                      break
 +              }
 +              v.reset(OpAMD64XCHGL)
 +              v.AuxInt = int32ToAuxInt(off1 + off2)
 +              v.Aux = symToAux(mergeSym(sym1, sym2))
 +              v.AddArg3(val, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64XCHGQ(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (XCHGQ [off1] {sym} val (ADDQconst [off2] ptr) mem)
 +      // cond: is32Bit(int64(off1)+int64(off2))
 +      // result: (XCHGQ [off1+off2] {sym} val ptr mem)
 +      for {
 +              off1 := auxIntToInt32(v.AuxInt)
 +              sym := auxToSym(v.Aux)
 +              val := v_0
 +              if v_1.Op != OpAMD64ADDQconst {
 +                      break
 +              }
 +              off2 := auxIntToInt32(v_1.AuxInt)
 +              ptr := v_1.Args[0]
 +              mem := v_2
 +              if !(is32Bit(int64(off1) + int64(off2))) {
 +                      break
 +              }
 +              v.reset(OpAMD64XCHGQ)
 +              v.AuxInt = int32ToAuxInt(off1 + off2)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(val, ptr, mem)
 +              return true
 +      }
 +      // match: (XCHGQ [off1] {sym1} val (LEAQ [off2] {sym2} ptr) mem)
 +      // cond: is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2) && ptr.Op != OpSB
 +      // result: (XCHGQ [off1+off2] {mergeSym(sym1,sym2)} val ptr mem)
 +      for {
 +              off1 := auxIntToInt32(v.AuxInt)
 +              sym1 := auxToSym(v.Aux)
 +              val := v_0
 +              if v_1.Op != OpAMD64LEAQ {
 +                      break
 +              }
 +              off2 := auxIntToInt32(v_1.AuxInt)
 +              sym2 := auxToSym(v_1.Aux)
 +              ptr := v_1.Args[0]
 +              mem := v_2
 +              if !(is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2) && ptr.Op != OpSB) {
 +                      break
 +              }
 +              v.reset(OpAMD64XCHGQ)
 +              v.AuxInt = int32ToAuxInt(off1 + off2)
 +              v.Aux = symToAux(mergeSym(sym1, sym2))
 +              v.AddArg3(val, ptr, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64XORL(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (XORL (SHLL (MOVLconst [1]) y) x)
 +      // result: (BTCL x y)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      if v_0.Op != OpAMD64SHLL {
 +                              continue
 +                      }
 +                      y := v_0.Args[1]
 +                      v_0_0 := v_0.Args[0]
 +                      if v_0_0.Op != OpAMD64MOVLconst || auxIntToInt32(v_0_0.AuxInt) != 1 {
 +                              continue
 +                      }
 +                      x := v_1
 +                      v.reset(OpAMD64BTCL)
 +                      v.AddArg2(x, y)
 +                      return true
 +              }
 +              break
 +      }
 +      // match: (XORL x (MOVLconst [c]))
 +      // result: (XORLconst [c] x)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      if v_1.Op != OpAMD64MOVLconst {
 +                              continue
 +                      }
 +                      c := auxIntToInt32(v_1.AuxInt)
 +                      v.reset(OpAMD64XORLconst)
 +                      v.AuxInt = int32ToAuxInt(c)
 +                      v.AddArg(x)
 +                      return true
 +              }
 +              break
 +      }
 +      // match: (XORL x x)
 +      // result: (MOVLconst [0])
 +      for {
 +              x := v_0
 +              if x != v_1 {
 +                      break
 +              }
 +              v.reset(OpAMD64MOVLconst)
 +              v.AuxInt = int32ToAuxInt(0)
 +              return true
 +      }
 +      // match: (XORL x l:(MOVLload [off] {sym} ptr mem))
 +      // cond: canMergeLoadClobber(v, l, x) && clobber(l)
 +      // result: (XORLload x [off] {sym} ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64MOVLload {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoadClobber(v, l, x) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64XORLload)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      // match: (XORL x (ADDLconst [-1] x))
 +      // cond: buildcfg.GOAMD64 >= 3
 +      // result: (BLSMSKL x)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      if v_1.Op != OpAMD64ADDLconst || auxIntToInt32(v_1.AuxInt) != -1 || x != v_1.Args[0] || !(buildcfg.GOAMD64 >= 3) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64BLSMSKL)
 +                      v.AddArg(x)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64XORLconst(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (XORLconst [1] (SETNE x))
 +      // result: (SETEQ x)
 +      for {
 +              if auxIntToInt32(v.AuxInt) != 1 || v_0.Op != OpAMD64SETNE {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              v.reset(OpAMD64SETEQ)
 +              v.AddArg(x)
 +              return true
 +      }
 +      // match: (XORLconst [1] (SETEQ x))
 +      // result: (SETNE x)
 +      for {
 +              if auxIntToInt32(v.AuxInt) != 1 || v_0.Op != OpAMD64SETEQ {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              v.reset(OpAMD64SETNE)
 +              v.AddArg(x)
 +              return true
 +      }
 +      // match: (XORLconst [1] (SETL x))
 +      // result: (SETGE x)
 +      for {
 +              if auxIntToInt32(v.AuxInt) != 1 || v_0.Op != OpAMD64SETL {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              v.reset(OpAMD64SETGE)
 +              v.AddArg(x)
 +              return true
 +      }
 +      // match: (XORLconst [1] (SETGE x))
 +      // result: (SETL x)
 +      for {
 +              if auxIntToInt32(v.AuxInt) != 1 || v_0.Op != OpAMD64SETGE {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              v.reset(OpAMD64SETL)
 +              v.AddArg(x)
 +              return true
 +      }
 +      // match: (XORLconst [1] (SETLE x))
 +      // result: (SETG x)
 +      for {
 +              if auxIntToInt32(v.AuxInt) != 1 || v_0.Op != OpAMD64SETLE {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              v.reset(OpAMD64SETG)
 +              v.AddArg(x)
 +              return true
 +      }
 +      // match: (XORLconst [1] (SETG x))
 +      // result: (SETLE x)
 +      for {
 +              if auxIntToInt32(v.AuxInt) != 1 || v_0.Op != OpAMD64SETG {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              v.reset(OpAMD64SETLE)
 +              v.AddArg(x)
 +              return true
 +      }
 +      // match: (XORLconst [1] (SETB x))
 +      // result: (SETAE x)
 +      for {
 +              if auxIntToInt32(v.AuxInt) != 1 || v_0.Op != OpAMD64SETB {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              v.reset(OpAMD64SETAE)
 +              v.AddArg(x)
 +              return true
 +      }
 +      // match: (XORLconst [1] (SETAE x))
 +      // result: (SETB x)
 +      for {
 +              if auxIntToInt32(v.AuxInt) != 1 || v_0.Op != OpAMD64SETAE {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              v.reset(OpAMD64SETB)
 +              v.AddArg(x)
 +              return true
 +      }
 +      // match: (XORLconst [1] (SETBE x))
 +      // result: (SETA x)
 +      for {
 +              if auxIntToInt32(v.AuxInt) != 1 || v_0.Op != OpAMD64SETBE {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              v.reset(OpAMD64SETA)
 +              v.AddArg(x)
 +              return true
 +      }
 +      // match: (XORLconst [1] (SETA x))
 +      // result: (SETBE x)
 +      for {
 +              if auxIntToInt32(v.AuxInt) != 1 || v_0.Op != OpAMD64SETA {
 +                      break
 +              }
 +              x := v_0.Args[0]
 +              v.reset(OpAMD64SETBE)
 +              v.AddArg(x)
 +              return true
 +      }
 +      // match: (XORLconst [c] (XORLconst [d] x))
 +      // result: (XORLconst [c ^ d] x)
 +      for {
 +              c := auxIntToInt32(v.AuxInt)
 +              if v_0.Op != OpAMD64XORLconst {
 +                      break
 +              }
 +              d := auxIntToInt32(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              v.reset(OpAMD64XORLconst)
 +              v.AuxInt = int32ToAuxInt(c ^ d)
 +              v.AddArg(x)
 +              return true
 +      }
 +      // match: (XORLconst [c] x)
 +      // cond: c==0
 +      // result: x
 +      for {
 +              c := auxIntToInt32(v.AuxInt)
 +              x := v_0
 +              if !(c == 0) {
 +                      break
 +              }
 +              v.copyOf(x)
 +              return true
 +      }
 +      // match: (XORLconst [c] (MOVLconst [d]))
 +      // result: (MOVLconst [c^d])
 +      for {
 +              c := auxIntToInt32(v.AuxInt)
 +              if v_0.Op != OpAMD64MOVLconst {
 +                      break
 +              }
 +              d := auxIntToInt32(v_0.AuxInt)
 +              v.reset(OpAMD64MOVLconst)
 +              v.AuxInt = int32ToAuxInt(c ^ d)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64XORLconstmodify(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (XORLconstmodify [valoff1] {sym} (ADDQconst [off2] base) mem)
 +      // cond: ValAndOff(valoff1).canAdd32(off2)
 +      // result: (XORLconstmodify [ValAndOff(valoff1).addOffset32(off2)] {sym} base mem)
 +      for {
 +              valoff1 := auxIntToValAndOff(v.AuxInt)
 +              sym := auxToSym(v.Aux)
 +              if v_0.Op != OpAMD64ADDQconst {
 +                      break
 +              }
 +              off2 := auxIntToInt32(v_0.AuxInt)
 +              base := v_0.Args[0]
 +              mem := v_1
 +              if !(ValAndOff(valoff1).canAdd32(off2)) {
 +                      break
 +              }
 +              v.reset(OpAMD64XORLconstmodify)
 +              v.AuxInt = valAndOffToAuxInt(ValAndOff(valoff1).addOffset32(off2))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(base, mem)
 +              return true
 +      }
 +      // match: (XORLconstmodify [valoff1] {sym1} (LEAQ [off2] {sym2} base) mem)
 +      // cond: ValAndOff(valoff1).canAdd32(off2) && canMergeSym(sym1, sym2)
 +      // result: (XORLconstmodify [ValAndOff(valoff1).addOffset32(off2)] {mergeSym(sym1,sym2)} base mem)
 +      for {
 +              valoff1 := auxIntToValAndOff(v.AuxInt)
 +              sym1 := auxToSym(v.Aux)
 +              if v_0.Op != OpAMD64LEAQ {
 +                      break
 +              }
 +              off2 := auxIntToInt32(v_0.AuxInt)
 +              sym2 := auxToSym(v_0.Aux)
 +              base := v_0.Args[0]
 +              mem := v_1
 +              if !(ValAndOff(valoff1).canAdd32(off2) && canMergeSym(sym1, sym2)) {
 +                      break
 +              }
 +              v.reset(OpAMD64XORLconstmodify)
 +              v.AuxInt = valAndOffToAuxInt(ValAndOff(valoff1).addOffset32(off2))
 +              v.Aux = symToAux(mergeSym(sym1, sym2))
 +              v.AddArg2(base, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64XORLload(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (XORLload [off1] {sym} val (ADDQconst [off2] base) mem)
 +      // cond: is32Bit(int64(off1)+int64(off2))
 +      // result: (XORLload [off1+off2] {sym} val base mem)
 +      for {
 +              off1 := auxIntToInt32(v.AuxInt)
 +              sym := auxToSym(v.Aux)
 +              val := v_0
 +              if v_1.Op != OpAMD64ADDQconst {
 +                      break
 +              }
 +              off2 := auxIntToInt32(v_1.AuxInt)
 +              base := v_1.Args[0]
 +              mem := v_2
 +              if !(is32Bit(int64(off1) + int64(off2))) {
 +                      break
 +              }
 +              v.reset(OpAMD64XORLload)
 +              v.AuxInt = int32ToAuxInt(off1 + off2)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(val, base, mem)
 +              return true
 +      }
 +      // match: (XORLload [off1] {sym1} val (LEAQ [off2] {sym2} base) mem)
 +      // cond: is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)
 +      // result: (XORLload [off1+off2] {mergeSym(sym1,sym2)} val base mem)
 +      for {
 +              off1 := auxIntToInt32(v.AuxInt)
 +              sym1 := auxToSym(v.Aux)
 +              val := v_0
 +              if v_1.Op != OpAMD64LEAQ {
 +                      break
 +              }
 +              off2 := auxIntToInt32(v_1.AuxInt)
 +              sym2 := auxToSym(v_1.Aux)
 +              base := v_1.Args[0]
 +              mem := v_2
 +              if !(is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)) {
 +                      break
 +              }
 +              v.reset(OpAMD64XORLload)
 +              v.AuxInt = int32ToAuxInt(off1 + off2)
 +              v.Aux = symToAux(mergeSym(sym1, sym2))
 +              v.AddArg3(val, base, mem)
 +              return true
 +      }
 +      // match: (XORLload x [off] {sym} ptr (MOVSSstore [off] {sym} ptr y _))
 +      // result: (XORL x (MOVLf2i y))
 +      for {
 +              off := auxIntToInt32(v.AuxInt)
 +              sym := auxToSym(v.Aux)
 +              x := v_0
 +              ptr := v_1
 +              if v_2.Op != OpAMD64MOVSSstore || auxIntToInt32(v_2.AuxInt) != off || auxToSym(v_2.Aux) != sym {
 +                      break
 +              }
 +              y := v_2.Args[1]
 +              if ptr != v_2.Args[0] {
 +                      break
 +              }
 +              v.reset(OpAMD64XORL)
 +              v0 := b.NewValue0(v_2.Pos, OpAMD64MOVLf2i, typ.UInt32)
 +              v0.AddArg(y)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64XORLmodify(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (XORLmodify [off1] {sym} (ADDQconst [off2] base) val mem)
 +      // cond: is32Bit(int64(off1)+int64(off2))
 +      // result: (XORLmodify [off1+off2] {sym} base val mem)
 +      for {
 +              off1 := auxIntToInt32(v.AuxInt)
 +              sym := auxToSym(v.Aux)
 +              if v_0.Op != OpAMD64ADDQconst {
 +                      break
 +              }
 +              off2 := auxIntToInt32(v_0.AuxInt)
 +              base := v_0.Args[0]
 +              val := v_1
 +              mem := v_2
 +              if !(is32Bit(int64(off1) + int64(off2))) {
 +                      break
 +              }
 +              v.reset(OpAMD64XORLmodify)
 +              v.AuxInt = int32ToAuxInt(off1 + off2)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(base, val, mem)
 +              return true
 +      }
 +      // match: (XORLmodify [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
 +      // cond: is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)
 +      // result: (XORLmodify [off1+off2] {mergeSym(sym1,sym2)} base val mem)
 +      for {
 +              off1 := auxIntToInt32(v.AuxInt)
 +              sym1 := auxToSym(v.Aux)
 +              if v_0.Op != OpAMD64LEAQ {
 +                      break
 +              }
 +              off2 := auxIntToInt32(v_0.AuxInt)
 +              sym2 := auxToSym(v_0.Aux)
 +              base := v_0.Args[0]
 +              val := v_1
 +              mem := v_2
 +              if !(is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)) {
 +                      break
 +              }
 +              v.reset(OpAMD64XORLmodify)
 +              v.AuxInt = int32ToAuxInt(off1 + off2)
 +              v.Aux = symToAux(mergeSym(sym1, sym2))
 +              v.AddArg3(base, val, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64XORQ(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (XORQ (SHLQ (MOVQconst [1]) y) x)
 +      // result: (BTCQ x y)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      if v_0.Op != OpAMD64SHLQ {
 +                              continue
 +                      }
 +                      y := v_0.Args[1]
 +                      v_0_0 := v_0.Args[0]
 +                      if v_0_0.Op != OpAMD64MOVQconst || auxIntToInt64(v_0_0.AuxInt) != 1 {
 +                              continue
 +                      }
 +                      x := v_1
 +                      v.reset(OpAMD64BTCQ)
 +                      v.AddArg2(x, y)
 +                      return true
 +              }
 +              break
 +      }
 +      // match: (XORQ (MOVQconst [c]) x)
 +      // cond: isUnsignedPowerOfTwo(uint64(c)) && uint64(c) >= 1<<31
 +      // result: (BTCQconst [int8(log64u(uint64(c)))] x)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      if v_0.Op != OpAMD64MOVQconst {
 +                              continue
 +                      }
 +                      c := auxIntToInt64(v_0.AuxInt)
 +                      x := v_1
 +                      if !(isUnsignedPowerOfTwo(uint64(c)) && uint64(c) >= 1<<31) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64BTCQconst)
 +                      v.AuxInt = int8ToAuxInt(int8(log64u(uint64(c))))
 +                      v.AddArg(x)
 +                      return true
 +              }
 +              break
 +      }
 +      // match: (XORQ x (MOVQconst [c]))
 +      // cond: is32Bit(c)
 +      // result: (XORQconst [int32(c)] x)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      if v_1.Op != OpAMD64MOVQconst {
 +                              continue
 +                      }
 +                      c := auxIntToInt64(v_1.AuxInt)
 +                      if !(is32Bit(c)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64XORQconst)
 +                      v.AuxInt = int32ToAuxInt(int32(c))
 +                      v.AddArg(x)
 +                      return true
 +              }
 +              break
 +      }
 +      // match: (XORQ x x)
 +      // result: (MOVQconst [0])
 +      for {
 +              x := v_0
 +              if x != v_1 {
 +                      break
 +              }
 +              v.reset(OpAMD64MOVQconst)
 +              v.AuxInt = int64ToAuxInt(0)
 +              return true
 +      }
 +      // match: (XORQ x l:(MOVQload [off] {sym} ptr mem))
 +      // cond: canMergeLoadClobber(v, l, x) && clobber(l)
 +      // result: (XORQload x [off] {sym} ptr mem)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      l := v_1
 +                      if l.Op != OpAMD64MOVQload {
 +                              continue
 +                      }
 +                      off := auxIntToInt32(l.AuxInt)
 +                      sym := auxToSym(l.Aux)
 +                      mem := l.Args[1]
 +                      ptr := l.Args[0]
 +                      if !(canMergeLoadClobber(v, l, x) && clobber(l)) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64XORQload)
 +                      v.AuxInt = int32ToAuxInt(off)
 +                      v.Aux = symToAux(sym)
 +                      v.AddArg3(x, ptr, mem)
 +                      return true
 +              }
 +              break
 +      }
 +      // match: (XORQ x (ADDQconst [-1] x))
 +      // cond: buildcfg.GOAMD64 >= 3
 +      // result: (BLSMSKQ x)
 +      for {
 +              for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
 +                      x := v_0
 +                      if v_1.Op != OpAMD64ADDQconst || auxIntToInt32(v_1.AuxInt) != -1 || x != v_1.Args[0] || !(buildcfg.GOAMD64 >= 3) {
 +                              continue
 +                      }
 +                      v.reset(OpAMD64BLSMSKQ)
 +                      v.AddArg(x)
 +                      return true
 +              }
 +              break
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64XORQconst(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (XORQconst [c] (XORQconst [d] x))
 +      // result: (XORQconst [c ^ d] x)
 +      for {
 +              c := auxIntToInt32(v.AuxInt)
 +              if v_0.Op != OpAMD64XORQconst {
 +                      break
 +              }
 +              d := auxIntToInt32(v_0.AuxInt)
 +              x := v_0.Args[0]
 +              v.reset(OpAMD64XORQconst)
 +              v.AuxInt = int32ToAuxInt(c ^ d)
 +              v.AddArg(x)
 +              return true
 +      }
 +      // match: (XORQconst [0] x)
 +      // result: x
 +      for {
 +              if auxIntToInt32(v.AuxInt) != 0 {
 +                      break
 +              }
 +              x := v_0
 +              v.copyOf(x)
 +              return true
 +      }
 +      // match: (XORQconst [c] (MOVQconst [d]))
 +      // result: (MOVQconst [int64(c)^d])
 +      for {
 +              c := auxIntToInt32(v.AuxInt)
 +              if v_0.Op != OpAMD64MOVQconst {
 +                      break
 +              }
 +              d := auxIntToInt64(v_0.AuxInt)
 +              v.reset(OpAMD64MOVQconst)
 +              v.AuxInt = int64ToAuxInt(int64(c) ^ d)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64XORQconstmodify(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (XORQconstmodify [valoff1] {sym} (ADDQconst [off2] base) mem)
 +      // cond: ValAndOff(valoff1).canAdd32(off2)
 +      // result: (XORQconstmodify [ValAndOff(valoff1).addOffset32(off2)] {sym} base mem)
 +      for {
 +              valoff1 := auxIntToValAndOff(v.AuxInt)
 +              sym := auxToSym(v.Aux)
 +              if v_0.Op != OpAMD64ADDQconst {
 +                      break
 +              }
 +              off2 := auxIntToInt32(v_0.AuxInt)
 +              base := v_0.Args[0]
 +              mem := v_1
 +              if !(ValAndOff(valoff1).canAdd32(off2)) {
 +                      break
 +              }
 +              v.reset(OpAMD64XORQconstmodify)
 +              v.AuxInt = valAndOffToAuxInt(ValAndOff(valoff1).addOffset32(off2))
 +              v.Aux = symToAux(sym)
 +              v.AddArg2(base, mem)
 +              return true
 +      }
 +      // match: (XORQconstmodify [valoff1] {sym1} (LEAQ [off2] {sym2} base) mem)
 +      // cond: ValAndOff(valoff1).canAdd32(off2) && canMergeSym(sym1, sym2)
 +      // result: (XORQconstmodify [ValAndOff(valoff1).addOffset32(off2)] {mergeSym(sym1,sym2)} base mem)
 +      for {
 +              valoff1 := auxIntToValAndOff(v.AuxInt)
 +              sym1 := auxToSym(v.Aux)
 +              if v_0.Op != OpAMD64LEAQ {
 +                      break
 +              }
 +              off2 := auxIntToInt32(v_0.AuxInt)
 +              sym2 := auxToSym(v_0.Aux)
 +              base := v_0.Args[0]
 +              mem := v_1
 +              if !(ValAndOff(valoff1).canAdd32(off2) && canMergeSym(sym1, sym2)) {
 +                      break
 +              }
 +              v.reset(OpAMD64XORQconstmodify)
 +              v.AuxInt = valAndOffToAuxInt(ValAndOff(valoff1).addOffset32(off2))
 +              v.Aux = symToAux(mergeSym(sym1, sym2))
 +              v.AddArg2(base, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64XORQload(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (XORQload [off1] {sym} val (ADDQconst [off2] base) mem)
 +      // cond: is32Bit(int64(off1)+int64(off2))
 +      // result: (XORQload [off1+off2] {sym} val base mem)
 +      for {
 +              off1 := auxIntToInt32(v.AuxInt)
 +              sym := auxToSym(v.Aux)
 +              val := v_0
 +              if v_1.Op != OpAMD64ADDQconst {
 +                      break
 +              }
 +              off2 := auxIntToInt32(v_1.AuxInt)
 +              base := v_1.Args[0]
 +              mem := v_2
 +              if !(is32Bit(int64(off1) + int64(off2))) {
 +                      break
 +              }
 +              v.reset(OpAMD64XORQload)
 +              v.AuxInt = int32ToAuxInt(off1 + off2)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(val, base, mem)
 +              return true
 +      }
 +      // match: (XORQload [off1] {sym1} val (LEAQ [off2] {sym2} base) mem)
 +      // cond: is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)
 +      // result: (XORQload [off1+off2] {mergeSym(sym1,sym2)} val base mem)
 +      for {
 +              off1 := auxIntToInt32(v.AuxInt)
 +              sym1 := auxToSym(v.Aux)
 +              val := v_0
 +              if v_1.Op != OpAMD64LEAQ {
 +                      break
 +              }
 +              off2 := auxIntToInt32(v_1.AuxInt)
 +              sym2 := auxToSym(v_1.Aux)
 +              base := v_1.Args[0]
 +              mem := v_2
 +              if !(is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)) {
 +                      break
 +              }
 +              v.reset(OpAMD64XORQload)
 +              v.AuxInt = int32ToAuxInt(off1 + off2)
 +              v.Aux = symToAux(mergeSym(sym1, sym2))
 +              v.AddArg3(val, base, mem)
 +              return true
 +      }
 +      // match: (XORQload x [off] {sym} ptr (MOVSDstore [off] {sym} ptr y _))
 +      // result: (XORQ x (MOVQf2i y))
 +      for {
 +              off := auxIntToInt32(v.AuxInt)
 +              sym := auxToSym(v.Aux)
 +              x := v_0
 +              ptr := v_1
 +              if v_2.Op != OpAMD64MOVSDstore || auxIntToInt32(v_2.AuxInt) != off || auxToSym(v_2.Aux) != sym {
 +                      break
 +              }
 +              y := v_2.Args[1]
 +              if ptr != v_2.Args[0] {
 +                      break
 +              }
 +              v.reset(OpAMD64XORQ)
 +              v0 := b.NewValue0(v_2.Pos, OpAMD64MOVQf2i, typ.UInt64)
 +              v0.AddArg(y)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAMD64XORQmodify(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (XORQmodify [off1] {sym} (ADDQconst [off2] base) val mem)
 +      // cond: is32Bit(int64(off1)+int64(off2))
 +      // result: (XORQmodify [off1+off2] {sym} base val mem)
 +      for {
 +              off1 := auxIntToInt32(v.AuxInt)
 +              sym := auxToSym(v.Aux)
 +              if v_0.Op != OpAMD64ADDQconst {
 +                      break
 +              }
 +              off2 := auxIntToInt32(v_0.AuxInt)
 +              base := v_0.Args[0]
 +              val := v_1
 +              mem := v_2
 +              if !(is32Bit(int64(off1) + int64(off2))) {
 +                      break
 +              }
 +              v.reset(OpAMD64XORQmodify)
 +              v.AuxInt = int32ToAuxInt(off1 + off2)
 +              v.Aux = symToAux(sym)
 +              v.AddArg3(base, val, mem)
 +              return true
 +      }
 +      // match: (XORQmodify [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
 +      // cond: is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)
 +      // result: (XORQmodify [off1+off2] {mergeSym(sym1,sym2)} base val mem)
 +      for {
 +              off1 := auxIntToInt32(v.AuxInt)
 +              sym1 := auxToSym(v.Aux)
 +              if v_0.Op != OpAMD64LEAQ {
 +                      break
 +              }
 +              off2 := auxIntToInt32(v_0.AuxInt)
 +              sym2 := auxToSym(v_0.Aux)
 +              base := v_0.Args[0]
 +              val := v_1
 +              mem := v_2
 +              if !(is32Bit(int64(off1)+int64(off2)) && canMergeSym(sym1, sym2)) {
 +                      break
 +              }
 +              v.reset(OpAMD64XORQmodify)
 +              v.AuxInt = int32ToAuxInt(off1 + off2)
 +              v.Aux = symToAux(mergeSym(sym1, sym2))
 +              v.AddArg3(base, val, mem)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpAddr(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (Addr {sym} base)
 +      // result: (LEAQ {sym} base)
 +      for {
 +              sym := auxToSym(v.Aux)
 +              base := v_0
 +              v.reset(OpAMD64LEAQ)
 +              v.Aux = symToAux(sym)
 +              v.AddArg(base)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpAtomicAdd32(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (AtomicAdd32 ptr val mem)
 +      // result: (AddTupleFirst32 val (XADDLlock val ptr mem))
 +      for {
 +              ptr := v_0
 +              val := v_1
 +              mem := v_2
 +              v.reset(OpAMD64AddTupleFirst32)
 +              v0 := b.NewValue0(v.Pos, OpAMD64XADDLlock, types.NewTuple(typ.UInt32, types.TypeMem))
 +              v0.AddArg3(val, ptr, mem)
 +              v.AddArg2(val, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpAtomicAdd64(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (AtomicAdd64 ptr val mem)
 +      // result: (AddTupleFirst64 val (XADDQlock val ptr mem))
 +      for {
 +              ptr := v_0
 +              val := v_1
 +              mem := v_2
 +              v.reset(OpAMD64AddTupleFirst64)
 +              v0 := b.NewValue0(v.Pos, OpAMD64XADDQlock, types.NewTuple(typ.UInt64, types.TypeMem))
 +              v0.AddArg3(val, ptr, mem)
 +              v.AddArg2(val, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpAtomicAnd32(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (AtomicAnd32 ptr val mem)
 +      // result: (ANDLlock ptr val mem)
 +      for {
 +              ptr := v_0
 +              val := v_1
 +              mem := v_2
 +              v.reset(OpAMD64ANDLlock)
 +              v.AddArg3(ptr, val, mem)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpAtomicAnd32value(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (AtomicAnd32value ptr val mem)
 +      // result: (LoweredAtomicAnd32 ptr val mem)
 +      for {
 +              ptr := v_0
 +              val := v_1
 +              mem := v_2
 +              v.reset(OpAMD64LoweredAtomicAnd32)
 +              v.AddArg3(ptr, val, mem)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpAtomicAnd64value(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (AtomicAnd64value ptr val mem)
 +      // result: (LoweredAtomicAnd64 ptr val mem)
 +      for {
 +              ptr := v_0
 +              val := v_1
 +              mem := v_2
 +              v.reset(OpAMD64LoweredAtomicAnd64)
 +              v.AddArg3(ptr, val, mem)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpAtomicAnd8(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (AtomicAnd8 ptr val mem)
 +      // result: (ANDBlock ptr val mem)
 +      for {
 +              ptr := v_0
 +              val := v_1
 +              mem := v_2
 +              v.reset(OpAMD64ANDBlock)
 +              v.AddArg3(ptr, val, mem)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpAtomicCompareAndSwap32(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (AtomicCompareAndSwap32 ptr old new_ mem)
 +      // result: (CMPXCHGLlock ptr old new_ mem)
 +      for {
 +              ptr := v_0
 +              old := v_1
 +              new_ := v_2
 +              mem := v_3
 +              v.reset(OpAMD64CMPXCHGLlock)
 +              v.AddArg4(ptr, old, new_, mem)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpAtomicCompareAndSwap64(v *Value) bool {
 +      v_3 := v.Args[3]
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (AtomicCompareAndSwap64 ptr old new_ mem)
 +      // result: (CMPXCHGQlock ptr old new_ mem)
 +      for {
 +              ptr := v_0
 +              old := v_1
 +              new_ := v_2
 +              mem := v_3
 +              v.reset(OpAMD64CMPXCHGQlock)
 +              v.AddArg4(ptr, old, new_, mem)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpAtomicExchange32(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (AtomicExchange32 ptr val mem)
 +      // result: (XCHGL val ptr mem)
 +      for {
 +              ptr := v_0
 +              val := v_1
 +              mem := v_2
 +              v.reset(OpAMD64XCHGL)
 +              v.AddArg3(val, ptr, mem)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpAtomicExchange64(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (AtomicExchange64 ptr val mem)
 +      // result: (XCHGQ val ptr mem)
 +      for {
 +              ptr := v_0
 +              val := v_1
 +              mem := v_2
 +              v.reset(OpAMD64XCHGQ)
 +              v.AddArg3(val, ptr, mem)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpAtomicExchange8(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (AtomicExchange8 ptr val mem)
 +      // result: (XCHGB val ptr mem)
 +      for {
 +              ptr := v_0
 +              val := v_1
 +              mem := v_2
 +              v.reset(OpAMD64XCHGB)
 +              v.AddArg3(val, ptr, mem)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpAtomicLoad32(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (AtomicLoad32 ptr mem)
 +      // result: (MOVLatomicload ptr mem)
 +      for {
 +              ptr := v_0
 +              mem := v_1
 +              v.reset(OpAMD64MOVLatomicload)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpAtomicLoad64(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (AtomicLoad64 ptr mem)
 +      // result: (MOVQatomicload ptr mem)
 +      for {
 +              ptr := v_0
 +              mem := v_1
 +              v.reset(OpAMD64MOVQatomicload)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpAtomicLoad8(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (AtomicLoad8 ptr mem)
 +      // result: (MOVBatomicload ptr mem)
 +      for {
 +              ptr := v_0
 +              mem := v_1
 +              v.reset(OpAMD64MOVBatomicload)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpAtomicLoadPtr(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (AtomicLoadPtr ptr mem)
 +      // result: (MOVQatomicload ptr mem)
 +      for {
 +              ptr := v_0
 +              mem := v_1
 +              v.reset(OpAMD64MOVQatomicload)
 +              v.AddArg2(ptr, mem)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpAtomicOr32(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (AtomicOr32 ptr val mem)
 +      // result: (ORLlock ptr val mem)
 +      for {
 +              ptr := v_0
 +              val := v_1
 +              mem := v_2
 +              v.reset(OpAMD64ORLlock)
 +              v.AddArg3(ptr, val, mem)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpAtomicOr32value(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (AtomicOr32value ptr val mem)
 +      // result: (LoweredAtomicOr32 ptr val mem)
 +      for {
 +              ptr := v_0
 +              val := v_1
 +              mem := v_2
 +              v.reset(OpAMD64LoweredAtomicOr32)
 +              v.AddArg3(ptr, val, mem)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpAtomicOr64value(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (AtomicOr64value ptr val mem)
 +      // result: (LoweredAtomicOr64 ptr val mem)
 +      for {
 +              ptr := v_0
 +              val := v_1
 +              mem := v_2
 +              v.reset(OpAMD64LoweredAtomicOr64)
 +              v.AddArg3(ptr, val, mem)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpAtomicOr8(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (AtomicOr8 ptr val mem)
 +      // result: (ORBlock ptr val mem)
 +      for {
 +              ptr := v_0
 +              val := v_1
 +              mem := v_2
 +              v.reset(OpAMD64ORBlock)
 +              v.AddArg3(ptr, val, mem)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpAtomicStore32(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (AtomicStore32 ptr val mem)
 +      // result: (Select1 (XCHGL <types.NewTuple(typ.UInt32,types.TypeMem)> val ptr mem))
 +      for {
 +              ptr := v_0
 +              val := v_1
 +              mem := v_2
 +              v.reset(OpSelect1)
 +              v0 := b.NewValue0(v.Pos, OpAMD64XCHGL, types.NewTuple(typ.UInt32, types.TypeMem))
 +              v0.AddArg3(val, ptr, mem)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpAtomicStore64(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (AtomicStore64 ptr val mem)
 +      // result: (Select1 (XCHGQ <types.NewTuple(typ.UInt64,types.TypeMem)> val ptr mem))
 +      for {
 +              ptr := v_0
 +              val := v_1
 +              mem := v_2
 +              v.reset(OpSelect1)
 +              v0 := b.NewValue0(v.Pos, OpAMD64XCHGQ, types.NewTuple(typ.UInt64, types.TypeMem))
 +              v0.AddArg3(val, ptr, mem)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpAtomicStore8(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (AtomicStore8 ptr val mem)
 +      // result: (Select1 (XCHGB <types.NewTuple(typ.UInt8,types.TypeMem)> val ptr mem))
 +      for {
 +              ptr := v_0
 +              val := v_1
 +              mem := v_2
 +              v.reset(OpSelect1)
 +              v0 := b.NewValue0(v.Pos, OpAMD64XCHGB, types.NewTuple(typ.UInt8, types.TypeMem))
 +              v0.AddArg3(val, ptr, mem)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpAtomicStorePtrNoWB(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (AtomicStorePtrNoWB ptr val mem)
 +      // result: (Select1 (XCHGQ <types.NewTuple(typ.BytePtr,types.TypeMem)> val ptr mem))
 +      for {
 +              ptr := v_0
 +              val := v_1
 +              mem := v_2
 +              v.reset(OpSelect1)
 +              v0 := b.NewValue0(v.Pos, OpAMD64XCHGQ, types.NewTuple(typ.BytePtr, types.TypeMem))
 +              v0.AddArg3(val, ptr, mem)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpBitLen16(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (BitLen16 x)
 +      // cond: buildcfg.GOAMD64 < 3
 +      // result: (BSRL (LEAL1 <typ.UInt32> [1] (MOVWQZX <typ.UInt32> x) (MOVWQZX <typ.UInt32> x)))
 +      for {
 +              x := v_0
 +              if !(buildcfg.GOAMD64 < 3) {
 +                      break
 +              }
 +              v.reset(OpAMD64BSRL)
 +              v0 := b.NewValue0(v.Pos, OpAMD64LEAL1, typ.UInt32)
 +              v0.AuxInt = int32ToAuxInt(1)
 +              v1 := b.NewValue0(v.Pos, OpAMD64MOVWQZX, typ.UInt32)
 +              v1.AddArg(x)
 +              v0.AddArg2(v1, v1)
 +              v.AddArg(v0)
 +              return true
 +      }
 +      // match: (BitLen16 <t> x)
 +      // cond: buildcfg.GOAMD64 >= 3
 +      // result: (NEGQ (ADDQconst <t> [-32] (LZCNTL (MOVWQZX <x.Type> x))))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              if !(buildcfg.GOAMD64 >= 3) {
 +                      break
 +              }
 +              v.reset(OpAMD64NEGQ)
 +              v0 := b.NewValue0(v.Pos, OpAMD64ADDQconst, t)
 +              v0.AuxInt = int32ToAuxInt(-32)
 +              v1 := b.NewValue0(v.Pos, OpAMD64LZCNTL, typ.UInt32)
 +              v2 := b.NewValue0(v.Pos, OpAMD64MOVWQZX, x.Type)
 +              v2.AddArg(x)
 +              v1.AddArg(v2)
 +              v0.AddArg(v1)
 +              v.AddArg(v0)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpBitLen32(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (BitLen32 x)
 +      // cond: buildcfg.GOAMD64 < 3
 +      // result: (Select0 (BSRQ (LEAQ1 <typ.UInt64> [1] (MOVLQZX <typ.UInt64> x) (MOVLQZX <typ.UInt64> x))))
 +      for {
 +              x := v_0
 +              if !(buildcfg.GOAMD64 < 3) {
 +                      break
 +              }
 +              v.reset(OpSelect0)
 +              v0 := b.NewValue0(v.Pos, OpAMD64BSRQ, types.NewTuple(typ.UInt64, types.TypeFlags))
 +              v1 := b.NewValue0(v.Pos, OpAMD64LEAQ1, typ.UInt64)
 +              v1.AuxInt = int32ToAuxInt(1)
 +              v2 := b.NewValue0(v.Pos, OpAMD64MOVLQZX, typ.UInt64)
 +              v2.AddArg(x)
 +              v1.AddArg2(v2, v2)
 +              v0.AddArg(v1)
 +              v.AddArg(v0)
 +              return true
 +      }
 +      // match: (BitLen32 <t> x)
 +      // cond: buildcfg.GOAMD64 >= 3
 +      // result: (NEGQ (ADDQconst <t> [-32] (LZCNTL x)))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              if !(buildcfg.GOAMD64 >= 3) {
 +                      break
 +              }
 +              v.reset(OpAMD64NEGQ)
 +              v0 := b.NewValue0(v.Pos, OpAMD64ADDQconst, t)
 +              v0.AuxInt = int32ToAuxInt(-32)
 +              v1 := b.NewValue0(v.Pos, OpAMD64LZCNTL, typ.UInt32)
 +              v1.AddArg(x)
 +              v0.AddArg(v1)
 +              v.AddArg(v0)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpBitLen64(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (BitLen64 <t> x)
 +      // cond: buildcfg.GOAMD64 < 3
 +      // result: (ADDQconst [1] (CMOVQEQ <t> (Select0 <t> (BSRQ x)) (MOVQconst <t> [-1]) (Select1 <types.TypeFlags> (BSRQ x))))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              if !(buildcfg.GOAMD64 < 3) {
 +                      break
 +              }
 +              v.reset(OpAMD64ADDQconst)
 +              v.AuxInt = int32ToAuxInt(1)
 +              v0 := b.NewValue0(v.Pos, OpAMD64CMOVQEQ, t)
 +              v1 := b.NewValue0(v.Pos, OpSelect0, t)
 +              v2 := b.NewValue0(v.Pos, OpAMD64BSRQ, types.NewTuple(typ.UInt64, types.TypeFlags))
 +              v2.AddArg(x)
 +              v1.AddArg(v2)
 +              v3 := b.NewValue0(v.Pos, OpAMD64MOVQconst, t)
 +              v3.AuxInt = int64ToAuxInt(-1)
 +              v4 := b.NewValue0(v.Pos, OpSelect1, types.TypeFlags)
 +              v4.AddArg(v2)
 +              v0.AddArg3(v1, v3, v4)
 +              v.AddArg(v0)
 +              return true
 +      }
 +      // match: (BitLen64 <t> x)
 +      // cond: buildcfg.GOAMD64 >= 3
 +      // result: (NEGQ (ADDQconst <t> [-64] (LZCNTQ x)))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              if !(buildcfg.GOAMD64 >= 3) {
 +                      break
 +              }
 +              v.reset(OpAMD64NEGQ)
 +              v0 := b.NewValue0(v.Pos, OpAMD64ADDQconst, t)
 +              v0.AuxInt = int32ToAuxInt(-64)
 +              v1 := b.NewValue0(v.Pos, OpAMD64LZCNTQ, typ.UInt64)
 +              v1.AddArg(x)
 +              v0.AddArg(v1)
 +              v.AddArg(v0)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpBitLen8(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (BitLen8 x)
 +      // cond: buildcfg.GOAMD64 < 3
 +      // result: (BSRL (LEAL1 <typ.UInt32> [1] (MOVBQZX <typ.UInt32> x) (MOVBQZX <typ.UInt32> x)))
 +      for {
 +              x := v_0
 +              if !(buildcfg.GOAMD64 < 3) {
 +                      break
 +              }
 +              v.reset(OpAMD64BSRL)
 +              v0 := b.NewValue0(v.Pos, OpAMD64LEAL1, typ.UInt32)
 +              v0.AuxInt = int32ToAuxInt(1)
 +              v1 := b.NewValue0(v.Pos, OpAMD64MOVBQZX, typ.UInt32)
 +              v1.AddArg(x)
 +              v0.AddArg2(v1, v1)
 +              v.AddArg(v0)
 +              return true
 +      }
 +      // match: (BitLen8 <t> x)
 +      // cond: buildcfg.GOAMD64 >= 3
 +      // result: (NEGQ (ADDQconst <t> [-32] (LZCNTL (MOVBQZX <x.Type> x))))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              if !(buildcfg.GOAMD64 >= 3) {
 +                      break
 +              }
 +              v.reset(OpAMD64NEGQ)
 +              v0 := b.NewValue0(v.Pos, OpAMD64ADDQconst, t)
 +              v0.AuxInt = int32ToAuxInt(-32)
 +              v1 := b.NewValue0(v.Pos, OpAMD64LZCNTL, typ.UInt32)
 +              v2 := b.NewValue0(v.Pos, OpAMD64MOVBQZX, x.Type)
 +              v2.AddArg(x)
 +              v1.AddArg(v2)
 +              v0.AddArg(v1)
 +              v.AddArg(v0)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpBswap16(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (Bswap16 x)
 +      // result: (ROLWconst [8] x)
 +      for {
 +              x := v_0
 +              v.reset(OpAMD64ROLWconst)
 +              v.AuxInt = int8ToAuxInt(8)
 +              v.AddArg(x)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCeil(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (Ceil x)
 +      // result: (ROUNDSD [2] x)
 +      for {
 +              x := v_0
 +              v.reset(OpAMD64ROUNDSD)
 +              v.AuxInt = int8ToAuxInt(2)
 +              v.AddArg(x)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCeilFloat32x4(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (CeilFloat32x4 x)
 +      // result: (VROUNDPS128 [2] x)
 +      for {
 +              x := v_0
 +              v.reset(OpAMD64VROUNDPS128)
 +              v.AuxInt = uint8ToAuxInt(2)
 +              v.AddArg(x)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCeilFloat32x8(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (CeilFloat32x8 x)
 +      // result: (VROUNDPS256 [2] x)
 +      for {
 +              x := v_0
 +              v.reset(OpAMD64VROUNDPS256)
 +              v.AuxInt = uint8ToAuxInt(2)
 +              v.AddArg(x)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCeilFloat64x2(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (CeilFloat64x2 x)
 +      // result: (VROUNDPD128 [2] x)
 +      for {
 +              x := v_0
 +              v.reset(OpAMD64VROUNDPD128)
 +              v.AuxInt = uint8ToAuxInt(2)
 +              v.AddArg(x)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCeilFloat64x4(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (CeilFloat64x4 x)
 +      // result: (VROUNDPD256 [2] x)
 +      for {
 +              x := v_0
 +              v.reset(OpAMD64VROUNDPD256)
 +              v.AuxInt = uint8ToAuxInt(2)
 +              v.AddArg(x)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCeilScaledFloat32x16(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (CeilScaledFloat32x16 [a] x)
 +      // result: (VRNDSCALEPS512 [a+2] x)
 +      for {
 +              a := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              v.reset(OpAMD64VRNDSCALEPS512)
 +              v.AuxInt = uint8ToAuxInt(a + 2)
 +              v.AddArg(x)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCeilScaledFloat32x4(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (CeilScaledFloat32x4 [a] x)
 +      // result: (VRNDSCALEPS128 [a+2] x)
 +      for {
 +              a := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              v.reset(OpAMD64VRNDSCALEPS128)
 +              v.AuxInt = uint8ToAuxInt(a + 2)
 +              v.AddArg(x)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCeilScaledFloat32x8(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (CeilScaledFloat32x8 [a] x)
 +      // result: (VRNDSCALEPS256 [a+2] x)
 +      for {
 +              a := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              v.reset(OpAMD64VRNDSCALEPS256)
 +              v.AuxInt = uint8ToAuxInt(a + 2)
 +              v.AddArg(x)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCeilScaledFloat64x2(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (CeilScaledFloat64x2 [a] x)
 +      // result: (VRNDSCALEPD128 [a+2] x)
 +      for {
 +              a := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              v.reset(OpAMD64VRNDSCALEPD128)
 +              v.AuxInt = uint8ToAuxInt(a + 2)
 +              v.AddArg(x)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCeilScaledFloat64x4(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (CeilScaledFloat64x4 [a] x)
 +      // result: (VRNDSCALEPD256 [a+2] x)
 +      for {
 +              a := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              v.reset(OpAMD64VRNDSCALEPD256)
 +              v.AuxInt = uint8ToAuxInt(a + 2)
 +              v.AddArg(x)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCeilScaledFloat64x8(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (CeilScaledFloat64x8 [a] x)
 +      // result: (VRNDSCALEPD512 [a+2] x)
 +      for {
 +              a := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              v.reset(OpAMD64VRNDSCALEPD512)
 +              v.AuxInt = uint8ToAuxInt(a + 2)
 +              v.AddArg(x)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCeilScaledResidueFloat32x16(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (CeilScaledResidueFloat32x16 [a] x)
 +      // result: (VREDUCEPS512 [a+2] x)
 +      for {
 +              a := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              v.reset(OpAMD64VREDUCEPS512)
 +              v.AuxInt = uint8ToAuxInt(a + 2)
 +              v.AddArg(x)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCeilScaledResidueFloat32x4(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (CeilScaledResidueFloat32x4 [a] x)
 +      // result: (VREDUCEPS128 [a+2] x)
 +      for {
 +              a := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              v.reset(OpAMD64VREDUCEPS128)
 +              v.AuxInt = uint8ToAuxInt(a + 2)
 +              v.AddArg(x)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCeilScaledResidueFloat32x8(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (CeilScaledResidueFloat32x8 [a] x)
 +      // result: (VREDUCEPS256 [a+2] x)
 +      for {
 +              a := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              v.reset(OpAMD64VREDUCEPS256)
 +              v.AuxInt = uint8ToAuxInt(a + 2)
 +              v.AddArg(x)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCeilScaledResidueFloat64x2(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (CeilScaledResidueFloat64x2 [a] x)
 +      // result: (VREDUCEPD128 [a+2] x)
 +      for {
 +              a := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              v.reset(OpAMD64VREDUCEPD128)
 +              v.AuxInt = uint8ToAuxInt(a + 2)
 +              v.AddArg(x)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCeilScaledResidueFloat64x4(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (CeilScaledResidueFloat64x4 [a] x)
 +      // result: (VREDUCEPD256 [a+2] x)
 +      for {
 +              a := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              v.reset(OpAMD64VREDUCEPD256)
 +              v.AuxInt = uint8ToAuxInt(a + 2)
 +              v.AddArg(x)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCeilScaledResidueFloat64x8(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (CeilScaledResidueFloat64x8 [a] x)
 +      // result: (VREDUCEPD512 [a+2] x)
 +      for {
 +              a := auxIntToUint8(v.AuxInt)
 +              x := v_0
 +              v.reset(OpAMD64VREDUCEPD512)
 +              v.AuxInt = uint8ToAuxInt(a + 2)
 +              v.AddArg(x)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCompressFloat32x16(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CompressFloat32x16 x mask)
 +      // result: (VCOMPRESSPSMasked512 x (VPMOVVec32x16ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VCOMPRESSPSMasked512)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCompressFloat32x4(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CompressFloat32x4 x mask)
 +      // result: (VCOMPRESSPSMasked128 x (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VCOMPRESSPSMasked128)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCompressFloat32x8(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CompressFloat32x8 x mask)
 +      // result: (VCOMPRESSPSMasked256 x (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VCOMPRESSPSMasked256)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCompressFloat64x2(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CompressFloat64x2 x mask)
 +      // result: (VCOMPRESSPDMasked128 x (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VCOMPRESSPDMasked128)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCompressFloat64x4(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CompressFloat64x4 x mask)
 +      // result: (VCOMPRESSPDMasked256 x (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VCOMPRESSPDMasked256)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCompressFloat64x8(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CompressFloat64x8 x mask)
 +      // result: (VCOMPRESSPDMasked512 x (VPMOVVec64x8ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VCOMPRESSPDMasked512)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCompressInt16x16(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CompressInt16x16 x mask)
 +      // result: (VPCOMPRESSWMasked256 x (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VPCOMPRESSWMasked256)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCompressInt16x32(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CompressInt16x32 x mask)
 +      // result: (VPCOMPRESSWMasked512 x (VPMOVVec16x32ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VPCOMPRESSWMasked512)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x32ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCompressInt16x8(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CompressInt16x8 x mask)
 +      // result: (VPCOMPRESSWMasked128 x (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VPCOMPRESSWMasked128)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCompressInt32x16(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CompressInt32x16 x mask)
 +      // result: (VPCOMPRESSDMasked512 x (VPMOVVec32x16ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VPCOMPRESSDMasked512)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCompressInt32x4(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CompressInt32x4 x mask)
 +      // result: (VPCOMPRESSDMasked128 x (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VPCOMPRESSDMasked128)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCompressInt32x8(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CompressInt32x8 x mask)
 +      // result: (VPCOMPRESSDMasked256 x (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VPCOMPRESSDMasked256)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCompressInt64x2(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CompressInt64x2 x mask)
 +      // result: (VPCOMPRESSQMasked128 x (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VPCOMPRESSQMasked128)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCompressInt64x4(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CompressInt64x4 x mask)
 +      // result: (VPCOMPRESSQMasked256 x (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VPCOMPRESSQMasked256)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCompressInt64x8(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CompressInt64x8 x mask)
 +      // result: (VPCOMPRESSQMasked512 x (VPMOVVec64x8ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VPCOMPRESSQMasked512)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCompressInt8x16(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CompressInt8x16 x mask)
 +      // result: (VPCOMPRESSBMasked128 x (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VPCOMPRESSBMasked128)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCompressInt8x32(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CompressInt8x32 x mask)
 +      // result: (VPCOMPRESSBMasked256 x (VPMOVVec8x32ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VPCOMPRESSBMasked256)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x32ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCompressInt8x64(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CompressInt8x64 x mask)
 +      // result: (VPCOMPRESSBMasked512 x (VPMOVVec8x64ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VPCOMPRESSBMasked512)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x64ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCompressUint16x16(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CompressUint16x16 x mask)
 +      // result: (VPCOMPRESSWMasked256 x (VPMOVVec16x16ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VPCOMPRESSWMasked256)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCompressUint16x32(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CompressUint16x32 x mask)
 +      // result: (VPCOMPRESSWMasked512 x (VPMOVVec16x32ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VPCOMPRESSWMasked512)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x32ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCompressUint16x8(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CompressUint16x8 x mask)
 +      // result: (VPCOMPRESSWMasked128 x (VPMOVVec16x8ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VPCOMPRESSWMasked128)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCompressUint32x16(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CompressUint32x16 x mask)
 +      // result: (VPCOMPRESSDMasked512 x (VPMOVVec32x16ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VPCOMPRESSDMasked512)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCompressUint32x4(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CompressUint32x4 x mask)
 +      // result: (VPCOMPRESSDMasked128 x (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VPCOMPRESSDMasked128)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCompressUint32x8(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CompressUint32x8 x mask)
 +      // result: (VPCOMPRESSDMasked256 x (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VPCOMPRESSDMasked256)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCompressUint64x2(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CompressUint64x2 x mask)
 +      // result: (VPCOMPRESSQMasked128 x (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VPCOMPRESSQMasked128)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCompressUint64x4(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CompressUint64x4 x mask)
 +      // result: (VPCOMPRESSQMasked256 x (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VPCOMPRESSQMasked256)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCompressUint64x8(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CompressUint64x8 x mask)
 +      // result: (VPCOMPRESSQMasked512 x (VPMOVVec64x8ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VPCOMPRESSQMasked512)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCompressUint8x16(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CompressUint8x16 x mask)
 +      // result: (VPCOMPRESSBMasked128 x (VPMOVVec8x16ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VPCOMPRESSBMasked128)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCompressUint8x32(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CompressUint8x32 x mask)
 +      // result: (VPCOMPRESSBMasked256 x (VPMOVVec8x32ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VPCOMPRESSBMasked256)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x32ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCompressUint8x64(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CompressUint8x64 x mask)
 +      // result: (VPCOMPRESSBMasked512 x (VPMOVVec8x64ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VPCOMPRESSBMasked512)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x64ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCondSelect(v *Value) bool {
 +      v_2 := v.Args[2]
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
-       typ := &b.Func.Config.Types
 +      // match: (CondSelect <t> x y (SETEQ cond))
 +      // cond: (is64BitInt(t) || isPtr(t))
 +      // result: (CMOVQEQ y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETEQ {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is64BitInt(t) || isPtr(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVQEQ)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETNE cond))
 +      // cond: (is64BitInt(t) || isPtr(t))
 +      // result: (CMOVQNE y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETNE {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is64BitInt(t) || isPtr(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVQNE)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETL cond))
 +      // cond: (is64BitInt(t) || isPtr(t))
 +      // result: (CMOVQLT y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETL {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is64BitInt(t) || isPtr(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVQLT)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETG cond))
 +      // cond: (is64BitInt(t) || isPtr(t))
 +      // result: (CMOVQGT y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETG {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is64BitInt(t) || isPtr(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVQGT)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETLE cond))
 +      // cond: (is64BitInt(t) || isPtr(t))
 +      // result: (CMOVQLE y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETLE {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is64BitInt(t) || isPtr(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVQLE)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETGE cond))
 +      // cond: (is64BitInt(t) || isPtr(t))
 +      // result: (CMOVQGE y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETGE {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is64BitInt(t) || isPtr(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVQGE)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETA cond))
 +      // cond: (is64BitInt(t) || isPtr(t))
 +      // result: (CMOVQHI y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETA {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is64BitInt(t) || isPtr(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVQHI)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETB cond))
 +      // cond: (is64BitInt(t) || isPtr(t))
 +      // result: (CMOVQCS y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETB {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is64BitInt(t) || isPtr(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVQCS)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETAE cond))
 +      // cond: (is64BitInt(t) || isPtr(t))
 +      // result: (CMOVQCC y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETAE {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is64BitInt(t) || isPtr(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVQCC)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETBE cond))
 +      // cond: (is64BitInt(t) || isPtr(t))
 +      // result: (CMOVQLS y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETBE {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is64BitInt(t) || isPtr(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVQLS)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETEQF cond))
 +      // cond: (is64BitInt(t) || isPtr(t))
 +      // result: (CMOVQEQF y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETEQF {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is64BitInt(t) || isPtr(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVQEQF)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETNEF cond))
 +      // cond: (is64BitInt(t) || isPtr(t))
 +      // result: (CMOVQNEF y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETNEF {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is64BitInt(t) || isPtr(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVQNEF)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETGF cond))
 +      // cond: (is64BitInt(t) || isPtr(t))
 +      // result: (CMOVQGTF y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETGF {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is64BitInt(t) || isPtr(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVQGTF)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETGEF cond))
 +      // cond: (is64BitInt(t) || isPtr(t))
 +      // result: (CMOVQGEF y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETGEF {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is64BitInt(t) || isPtr(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVQGEF)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETEQ cond))
 +      // cond: is32BitInt(t)
 +      // result: (CMOVLEQ y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETEQ {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is32BitInt(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVLEQ)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETNE cond))
 +      // cond: is32BitInt(t)
 +      // result: (CMOVLNE y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETNE {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is32BitInt(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVLNE)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETL cond))
 +      // cond: is32BitInt(t)
 +      // result: (CMOVLLT y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETL {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is32BitInt(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVLLT)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETG cond))
 +      // cond: is32BitInt(t)
 +      // result: (CMOVLGT y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETG {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is32BitInt(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVLGT)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETLE cond))
 +      // cond: is32BitInt(t)
 +      // result: (CMOVLLE y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETLE {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is32BitInt(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVLLE)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETGE cond))
 +      // cond: is32BitInt(t)
 +      // result: (CMOVLGE y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETGE {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is32BitInt(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVLGE)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETA cond))
 +      // cond: is32BitInt(t)
 +      // result: (CMOVLHI y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETA {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is32BitInt(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVLHI)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETB cond))
 +      // cond: is32BitInt(t)
 +      // result: (CMOVLCS y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETB {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is32BitInt(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVLCS)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETAE cond))
 +      // cond: is32BitInt(t)
 +      // result: (CMOVLCC y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETAE {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is32BitInt(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVLCC)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETBE cond))
 +      // cond: is32BitInt(t)
 +      // result: (CMOVLLS y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETBE {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is32BitInt(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVLLS)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETEQF cond))
 +      // cond: is32BitInt(t)
 +      // result: (CMOVLEQF y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETEQF {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is32BitInt(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVLEQF)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETNEF cond))
 +      // cond: is32BitInt(t)
 +      // result: (CMOVLNEF y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETNEF {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is32BitInt(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVLNEF)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETGF cond))
 +      // cond: is32BitInt(t)
 +      // result: (CMOVLGTF y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETGF {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is32BitInt(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVLGTF)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETGEF cond))
 +      // cond: is32BitInt(t)
 +      // result: (CMOVLGEF y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETGEF {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is32BitInt(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVLGEF)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETEQ cond))
 +      // cond: is16BitInt(t)
 +      // result: (CMOVWEQ y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETEQ {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is16BitInt(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVWEQ)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETNE cond))
 +      // cond: is16BitInt(t)
 +      // result: (CMOVWNE y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETNE {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is16BitInt(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVWNE)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETL cond))
 +      // cond: is16BitInt(t)
 +      // result: (CMOVWLT y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETL {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is16BitInt(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVWLT)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETG cond))
 +      // cond: is16BitInt(t)
 +      // result: (CMOVWGT y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETG {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is16BitInt(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVWGT)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETLE cond))
 +      // cond: is16BitInt(t)
 +      // result: (CMOVWLE y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETLE {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is16BitInt(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVWLE)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETGE cond))
 +      // cond: is16BitInt(t)
 +      // result: (CMOVWGE y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETGE {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is16BitInt(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVWGE)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETA cond))
 +      // cond: is16BitInt(t)
 +      // result: (CMOVWHI y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETA {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is16BitInt(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVWHI)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETB cond))
 +      // cond: is16BitInt(t)
 +      // result: (CMOVWCS y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETB {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is16BitInt(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVWCS)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETAE cond))
 +      // cond: is16BitInt(t)
 +      // result: (CMOVWCC y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETAE {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is16BitInt(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVWCC)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETBE cond))
 +      // cond: is16BitInt(t)
 +      // result: (CMOVWLS y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETBE {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is16BitInt(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVWLS)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETEQF cond))
 +      // cond: is16BitInt(t)
 +      // result: (CMOVWEQF y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETEQF {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is16BitInt(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVWEQF)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETNEF cond))
 +      // cond: is16BitInt(t)
 +      // result: (CMOVWNEF y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETNEF {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is16BitInt(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVWNEF)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETGF cond))
 +      // cond: is16BitInt(t)
 +      // result: (CMOVWGTF y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETGF {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is16BitInt(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVWGTF)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y (SETGEF cond))
 +      // cond: is16BitInt(t)
 +      // result: (CMOVWGEF y x cond)
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              if v_2.Op != OpAMD64SETGEF {
 +                      break
 +              }
 +              cond := v_2.Args[0]
 +              if !(is16BitInt(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVWGEF)
 +              v.AddArg3(y, x, cond)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y check)
-       // cond: !check.Type.IsFlags() && check.Type.Size() == 1
-       // result: (CondSelect <t> x y (MOVBQZX <typ.UInt64> check))
++      // cond: !check.Type.IsFlags() && check.Type.Size() == 8 && (is64BitInt(t) || isPtr(t))
++      // result: (CMOVQNE y x (CMPQconst [0] check))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              check := v_2
-               if !(!check.Type.IsFlags() && check.Type.Size() == 1) {
++              if !(!check.Type.IsFlags() && check.Type.Size() == 8 && (is64BitInt(t) || isPtr(t))) {
 +                      break
 +              }
-               v.reset(OpCondSelect)
-               v.Type = t
-               v0 := b.NewValue0(v.Pos, OpAMD64MOVBQZX, typ.UInt64)
++              v.reset(OpAMD64CMOVQNE)
++              v0 := b.NewValue0(v.Pos, OpAMD64CMPQconst, types.TypeFlags)
++              v0.AuxInt = int32ToAuxInt(0)
 +              v0.AddArg(check)
-               v.AddArg3(x, y, v0)
++              v.AddArg3(y, x, v0)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y check)
-       // cond: !check.Type.IsFlags() && check.Type.Size() == 2
-       // result: (CondSelect <t> x y (MOVWQZX <typ.UInt64> check))
++      // cond: !check.Type.IsFlags() && check.Type.Size() == 8 && is32BitInt(t)
++      // result: (CMOVLNE y x (CMPQconst [0] check))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              check := v_2
-               if !(!check.Type.IsFlags() && check.Type.Size() == 2) {
++              if !(!check.Type.IsFlags() && check.Type.Size() == 8 && is32BitInt(t)) {
 +                      break
 +              }
-               v.reset(OpCondSelect)
-               v.Type = t
-               v0 := b.NewValue0(v.Pos, OpAMD64MOVWQZX, typ.UInt64)
++              v.reset(OpAMD64CMOVLNE)
++              v0 := b.NewValue0(v.Pos, OpAMD64CMPQconst, types.TypeFlags)
++              v0.AuxInt = int32ToAuxInt(0)
 +              v0.AddArg(check)
-               v.AddArg3(x, y, v0)
++              v.AddArg3(y, x, v0)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y check)
-       // cond: !check.Type.IsFlags() && check.Type.Size() == 4
-       // result: (CondSelect <t> x y (MOVLQZX <typ.UInt64> check))
++      // cond: !check.Type.IsFlags() && check.Type.Size() == 8 && is16BitInt(t)
++      // result: (CMOVWNE y x (CMPQconst [0] check))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              check := v_2
-               if !(!check.Type.IsFlags() && check.Type.Size() == 4) {
++              if !(!check.Type.IsFlags() && check.Type.Size() == 8 && is16BitInt(t)) {
 +                      break
 +              }
-               v.reset(OpCondSelect)
-               v.Type = t
-               v0 := b.NewValue0(v.Pos, OpAMD64MOVLQZX, typ.UInt64)
++              v.reset(OpAMD64CMOVWNE)
++              v0 := b.NewValue0(v.Pos, OpAMD64CMPQconst, types.TypeFlags)
++              v0.AuxInt = int32ToAuxInt(0)
 +              v0.AddArg(check)
-               v.AddArg3(x, y, v0)
++              v.AddArg3(y, x, v0)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y check)
-       // cond: !check.Type.IsFlags() && check.Type.Size() == 8 && (is64BitInt(t) || isPtr(t))
-       // result: (CMOVQNE y x (CMPQconst [0] check))
++      // cond: !check.Type.IsFlags() && check.Type.Size() == 4 && (is64BitInt(t) || isPtr(t))
++      // result: (CMOVQNE y x (CMPLconst [0] check))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              check := v_2
-               if !(!check.Type.IsFlags() && check.Type.Size() == 8 && (is64BitInt(t) || isPtr(t))) {
++              if !(!check.Type.IsFlags() && check.Type.Size() == 4 && (is64BitInt(t) || isPtr(t))) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVQNE)
-               v0 := b.NewValue0(v.Pos, OpAMD64CMPQconst, types.TypeFlags)
++              v0 := b.NewValue0(v.Pos, OpAMD64CMPLconst, types.TypeFlags)
 +              v0.AuxInt = int32ToAuxInt(0)
 +              v0.AddArg(check)
 +              v.AddArg3(y, x, v0)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y check)
-       // cond: !check.Type.IsFlags() && check.Type.Size() == 8 && is32BitInt(t)
-       // result: (CMOVLNE y x (CMPQconst [0] check))
++      // cond: !check.Type.IsFlags() && check.Type.Size() == 4 && is32BitInt(t)
++      // result: (CMOVLNE y x (CMPLconst [0] check))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              check := v_2
-               if !(!check.Type.IsFlags() && check.Type.Size() == 8 && is32BitInt(t)) {
++              if !(!check.Type.IsFlags() && check.Type.Size() == 4 && is32BitInt(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVLNE)
-               v0 := b.NewValue0(v.Pos, OpAMD64CMPQconst, types.TypeFlags)
++              v0 := b.NewValue0(v.Pos, OpAMD64CMPLconst, types.TypeFlags)
 +              v0.AuxInt = int32ToAuxInt(0)
 +              v0.AddArg(check)
 +              v.AddArg3(y, x, v0)
 +              return true
 +      }
 +      // match: (CondSelect <t> x y check)
-       // cond: !check.Type.IsFlags() && check.Type.Size() == 8 && is16BitInt(t)
-       // result: (CMOVWNE y x (CMPQconst [0] check))
++      // cond: !check.Type.IsFlags() && check.Type.Size() == 4 && is16BitInt(t)
++      // result: (CMOVWNE y x (CMPLconst [0] check))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              y := v_1
 +              check := v_2
-               if !(!check.Type.IsFlags() && check.Type.Size() == 8 && is16BitInt(t)) {
++              if !(!check.Type.IsFlags() && check.Type.Size() == 4 && is16BitInt(t)) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVWNE)
-               v0 := b.NewValue0(v.Pos, OpAMD64CMPQconst, types.TypeFlags)
++              v0 := b.NewValue0(v.Pos, OpAMD64CMPLconst, types.TypeFlags)
 +              v0.AuxInt = int32ToAuxInt(0)
 +              v0.AddArg(check)
 +              v.AddArg3(y, x, v0)
 +              return true
 +      }
++      // match: (CondSelect <t> x y check)
++      // cond: !check.Type.IsFlags() && check.Type.Size() == 2 && (is64BitInt(t) || isPtr(t))
++      // result: (CMOVQNE y x (CMPWconst [0] check))
++      for {
++              t := v.Type
++              x := v_0
++              y := v_1
++              check := v_2
++              if !(!check.Type.IsFlags() && check.Type.Size() == 2 && (is64BitInt(t) || isPtr(t))) {
++                      break
++              }
++              v.reset(OpAMD64CMOVQNE)
++              v0 := b.NewValue0(v.Pos, OpAMD64CMPWconst, types.TypeFlags)
++              v0.AuxInt = int16ToAuxInt(0)
++              v0.AddArg(check)
++              v.AddArg3(y, x, v0)
++              return true
++      }
++      // match: (CondSelect <t> x y check)
++      // cond: !check.Type.IsFlags() && check.Type.Size() == 2 && is32BitInt(t)
++      // result: (CMOVLNE y x (CMPWconst [0] check))
++      for {
++              t := v.Type
++              x := v_0
++              y := v_1
++              check := v_2
++              if !(!check.Type.IsFlags() && check.Type.Size() == 2 && is32BitInt(t)) {
++                      break
++              }
++              v.reset(OpAMD64CMOVLNE)
++              v0 := b.NewValue0(v.Pos, OpAMD64CMPWconst, types.TypeFlags)
++              v0.AuxInt = int16ToAuxInt(0)
++              v0.AddArg(check)
++              v.AddArg3(y, x, v0)
++              return true
++      }
++      // match: (CondSelect <t> x y check)
++      // cond: !check.Type.IsFlags() && check.Type.Size() == 2 && is16BitInt(t)
++      // result: (CMOVWNE y x (CMPWconst [0] check))
++      for {
++              t := v.Type
++              x := v_0
++              y := v_1
++              check := v_2
++              if !(!check.Type.IsFlags() && check.Type.Size() == 2 && is16BitInt(t)) {
++                      break
++              }
++              v.reset(OpAMD64CMOVWNE)
++              v0 := b.NewValue0(v.Pos, OpAMD64CMPWconst, types.TypeFlags)
++              v0.AuxInt = int16ToAuxInt(0)
++              v0.AddArg(check)
++              v.AddArg3(y, x, v0)
++              return true
++      }
++      // match: (CondSelect <t> x y check)
++      // cond: !check.Type.IsFlags() && check.Type.Size() == 1 && (is64BitInt(t) || isPtr(t))
++      // result: (CMOVQNE y x (CMPBconst [0] check))
++      for {
++              t := v.Type
++              x := v_0
++              y := v_1
++              check := v_2
++              if !(!check.Type.IsFlags() && check.Type.Size() == 1 && (is64BitInt(t) || isPtr(t))) {
++                      break
++              }
++              v.reset(OpAMD64CMOVQNE)
++              v0 := b.NewValue0(v.Pos, OpAMD64CMPBconst, types.TypeFlags)
++              v0.AuxInt = int8ToAuxInt(0)
++              v0.AddArg(check)
++              v.AddArg3(y, x, v0)
++              return true
++      }
++      // match: (CondSelect <t> x y check)
++      // cond: !check.Type.IsFlags() && check.Type.Size() == 1 && is32BitInt(t)
++      // result: (CMOVLNE y x (CMPBconst [0] check))
++      for {
++              t := v.Type
++              x := v_0
++              y := v_1
++              check := v_2
++              if !(!check.Type.IsFlags() && check.Type.Size() == 1 && is32BitInt(t)) {
++                      break
++              }
++              v.reset(OpAMD64CMOVLNE)
++              v0 := b.NewValue0(v.Pos, OpAMD64CMPBconst, types.TypeFlags)
++              v0.AuxInt = int8ToAuxInt(0)
++              v0.AddArg(check)
++              v.AddArg3(y, x, v0)
++              return true
++      }
++      // match: (CondSelect <t> x y check)
++      // cond: !check.Type.IsFlags() && check.Type.Size() == 1 && is16BitInt(t)
++      // result: (CMOVWNE y x (CMPBconst [0] check))
++      for {
++              t := v.Type
++              x := v_0
++              y := v_1
++              check := v_2
++              if !(!check.Type.IsFlags() && check.Type.Size() == 1 && is16BitInt(t)) {
++                      break
++              }
++              v.reset(OpAMD64CMOVWNE)
++              v0 := b.NewValue0(v.Pos, OpAMD64CMPBconst, types.TypeFlags)
++              v0.AuxInt = int8ToAuxInt(0)
++              v0.AddArg(check)
++              v.AddArg3(y, x, v0)
++              return true
++      }
 +      return false
 +}
 +func rewriteValueAMD64_OpConst16(v *Value) bool {
 +      // match: (Const16 [c])
 +      // result: (MOVLconst [int32(c)])
 +      for {
 +              c := auxIntToInt16(v.AuxInt)
 +              v.reset(OpAMD64MOVLconst)
 +              v.AuxInt = int32ToAuxInt(int32(c))
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpConst8(v *Value) bool {
 +      // match: (Const8 [c])
 +      // result: (MOVLconst [int32(c)])
 +      for {
 +              c := auxIntToInt8(v.AuxInt)
 +              v.reset(OpAMD64MOVLconst)
 +              v.AuxInt = int32ToAuxInt(int32(c))
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpConstBool(v *Value) bool {
 +      // match: (ConstBool [c])
 +      // result: (MOVLconst [b2i32(c)])
 +      for {
 +              c := auxIntToBool(v.AuxInt)
 +              v.reset(OpAMD64MOVLconst)
 +              v.AuxInt = int32ToAuxInt(b2i32(c))
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpConstNil(v *Value) bool {
 +      // match: (ConstNil )
 +      // result: (MOVQconst [0])
 +      for {
 +              v.reset(OpAMD64MOVQconst)
 +              v.AuxInt = int64ToAuxInt(0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCtz16(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (Ctz16 x)
 +      // result: (BSFL (ORLconst <typ.UInt32> [1<<16] x))
 +      for {
 +              x := v_0
 +              v.reset(OpAMD64BSFL)
 +              v0 := b.NewValue0(v.Pos, OpAMD64ORLconst, typ.UInt32)
 +              v0.AuxInt = int32ToAuxInt(1 << 16)
 +              v0.AddArg(x)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCtz16NonZero(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (Ctz16NonZero x)
 +      // cond: buildcfg.GOAMD64 >= 3
 +      // result: (TZCNTL x)
 +      for {
 +              x := v_0
 +              if !(buildcfg.GOAMD64 >= 3) {
 +                      break
 +              }
 +              v.reset(OpAMD64TZCNTL)
 +              v.AddArg(x)
 +              return true
 +      }
 +      // match: (Ctz16NonZero x)
 +      // cond: buildcfg.GOAMD64 < 3
 +      // result: (BSFL x)
 +      for {
 +              x := v_0
 +              if !(buildcfg.GOAMD64 < 3) {
 +                      break
 +              }
 +              v.reset(OpAMD64BSFL)
 +              v.AddArg(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpCtz32(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (Ctz32 x)
 +      // cond: buildcfg.GOAMD64 >= 3
 +      // result: (TZCNTL x)
 +      for {
 +              x := v_0
 +              if !(buildcfg.GOAMD64 >= 3) {
 +                      break
 +              }
 +              v.reset(OpAMD64TZCNTL)
 +              v.AddArg(x)
 +              return true
 +      }
 +      // match: (Ctz32 x)
 +      // cond: buildcfg.GOAMD64 < 3
 +      // result: (Select0 (BSFQ (BTSQconst <typ.UInt64> [32] x)))
 +      for {
 +              x := v_0
 +              if !(buildcfg.GOAMD64 < 3) {
 +                      break
 +              }
 +              v.reset(OpSelect0)
 +              v0 := b.NewValue0(v.Pos, OpAMD64BSFQ, types.NewTuple(typ.UInt64, types.TypeFlags))
 +              v1 := b.NewValue0(v.Pos, OpAMD64BTSQconst, typ.UInt64)
 +              v1.AuxInt = int8ToAuxInt(32)
 +              v1.AddArg(x)
 +              v0.AddArg(v1)
 +              v.AddArg(v0)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpCtz32NonZero(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (Ctz32NonZero x)
 +      // cond: buildcfg.GOAMD64 >= 3
 +      // result: (TZCNTL x)
 +      for {
 +              x := v_0
 +              if !(buildcfg.GOAMD64 >= 3) {
 +                      break
 +              }
 +              v.reset(OpAMD64TZCNTL)
 +              v.AddArg(x)
 +              return true
 +      }
 +      // match: (Ctz32NonZero x)
 +      // cond: buildcfg.GOAMD64 < 3
 +      // result: (BSFL x)
 +      for {
 +              x := v_0
 +              if !(buildcfg.GOAMD64 < 3) {
 +                      break
 +              }
 +              v.reset(OpAMD64BSFL)
 +              v.AddArg(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpCtz64(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (Ctz64 x)
 +      // cond: buildcfg.GOAMD64 >= 3
 +      // result: (TZCNTQ x)
 +      for {
 +              x := v_0
 +              if !(buildcfg.GOAMD64 >= 3) {
 +                      break
 +              }
 +              v.reset(OpAMD64TZCNTQ)
 +              v.AddArg(x)
 +              return true
 +      }
 +      // match: (Ctz64 <t> x)
 +      // cond: buildcfg.GOAMD64 < 3
 +      // result: (CMOVQEQ (Select0 <t> (BSFQ x)) (MOVQconst <t> [64]) (Select1 <types.TypeFlags> (BSFQ x)))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              if !(buildcfg.GOAMD64 < 3) {
 +                      break
 +              }
 +              v.reset(OpAMD64CMOVQEQ)
 +              v0 := b.NewValue0(v.Pos, OpSelect0, t)
 +              v1 := b.NewValue0(v.Pos, OpAMD64BSFQ, types.NewTuple(typ.UInt64, types.TypeFlags))
 +              v1.AddArg(x)
 +              v0.AddArg(v1)
 +              v2 := b.NewValue0(v.Pos, OpAMD64MOVQconst, t)
 +              v2.AuxInt = int64ToAuxInt(64)
 +              v3 := b.NewValue0(v.Pos, OpSelect1, types.TypeFlags)
 +              v3.AddArg(v1)
 +              v.AddArg3(v0, v2, v3)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpCtz64NonZero(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (Ctz64NonZero x)
 +      // cond: buildcfg.GOAMD64 >= 3
 +      // result: (TZCNTQ x)
 +      for {
 +              x := v_0
 +              if !(buildcfg.GOAMD64 >= 3) {
 +                      break
 +              }
 +              v.reset(OpAMD64TZCNTQ)
 +              v.AddArg(x)
 +              return true
 +      }
 +      // match: (Ctz64NonZero x)
 +      // cond: buildcfg.GOAMD64 < 3
 +      // result: (Select0 (BSFQ x))
 +      for {
 +              x := v_0
 +              if !(buildcfg.GOAMD64 < 3) {
 +                      break
 +              }
 +              v.reset(OpSelect0)
 +              v0 := b.NewValue0(v.Pos, OpAMD64BSFQ, types.NewTuple(typ.UInt64, types.TypeFlags))
 +              v0.AddArg(x)
 +              v.AddArg(v0)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpCtz8(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (Ctz8 x)
 +      // result: (BSFL (ORLconst <typ.UInt32> [1<<8 ] x))
 +      for {
 +              x := v_0
 +              v.reset(OpAMD64BSFL)
 +              v0 := b.NewValue0(v.Pos, OpAMD64ORLconst, typ.UInt32)
 +              v0.AuxInt = int32ToAuxInt(1 << 8)
 +              v0.AddArg(x)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCtz8NonZero(v *Value) bool {
 +      v_0 := v.Args[0]
 +      // match: (Ctz8NonZero x)
 +      // cond: buildcfg.GOAMD64 >= 3
 +      // result: (TZCNTL x)
 +      for {
 +              x := v_0
 +              if !(buildcfg.GOAMD64 >= 3) {
 +                      break
 +              }
 +              v.reset(OpAMD64TZCNTL)
 +              v.AddArg(x)
 +              return true
 +      }
 +      // match: (Ctz8NonZero x)
 +      // cond: buildcfg.GOAMD64 < 3
 +      // result: (BSFL x)
 +      for {
 +              x := v_0
 +              if !(buildcfg.GOAMD64 < 3) {
 +                      break
 +              }
 +              v.reset(OpAMD64BSFL)
 +              v.AddArg(x)
 +              return true
 +      }
 +      return false
 +}
 +func rewriteValueAMD64_OpCvt16toMask16x16(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (Cvt16toMask16x16 <t> x)
 +      // result: (VPMOVMToVec16x16 <types.TypeVec256> (KMOVWk <t> x))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              v.reset(OpAMD64VPMOVMToVec16x16)
 +              v.Type = types.TypeVec256
 +              v0 := b.NewValue0(v.Pos, OpAMD64KMOVWk, t)
 +              v0.AddArg(x)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCvt16toMask32x16(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (Cvt16toMask32x16 <t> x)
 +      // result: (VPMOVMToVec32x16 <types.TypeVec512> (KMOVWk <t> x))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              v.reset(OpAMD64VPMOVMToVec32x16)
 +              v.Type = types.TypeVec512
 +              v0 := b.NewValue0(v.Pos, OpAMD64KMOVWk, t)
 +              v0.AddArg(x)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCvt16toMask8x16(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (Cvt16toMask8x16 <t> x)
 +      // result: (VPMOVMToVec8x16 <types.TypeVec128> (KMOVWk <t> x))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              v.reset(OpAMD64VPMOVMToVec8x16)
 +              v.Type = types.TypeVec128
 +              v0 := b.NewValue0(v.Pos, OpAMD64KMOVWk, t)
 +              v0.AddArg(x)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
++func rewriteValueAMD64_OpCvt32Fto32(v *Value) bool {
++      v_0 := v.Args[0]
++      b := v.Block
++      typ := &b.Func.Config.Types
++      // match: (Cvt32Fto32 <t> x)
++      // cond: base.ConvertHash.MatchPos(v.Pos, nil)
++      // result: (XORL <t> y (SARLconst <t> [31] (ANDL <t> y:(CVTTSS2SL <t> x) (NOTL <typ.Int32> (MOVLf2i x)))))
++      for {
++              t := v.Type
++              x := v_0
++              if !(base.ConvertHash.MatchPos(v.Pos, nil)) {
++                      break
++              }
++              v.reset(OpAMD64XORL)
++              v.Type = t
++              v0 := b.NewValue0(v.Pos, OpAMD64SARLconst, t)
++              v0.AuxInt = int8ToAuxInt(31)
++              v1 := b.NewValue0(v.Pos, OpAMD64ANDL, t)
++              y := b.NewValue0(v.Pos, OpAMD64CVTTSS2SL, t)
++              y.AddArg(x)
++              v3 := b.NewValue0(v.Pos, OpAMD64NOTL, typ.Int32)
++              v4 := b.NewValue0(v.Pos, OpAMD64MOVLf2i, typ.UInt32)
++              v4.AddArg(x)
++              v3.AddArg(v4)
++              v1.AddArg2(y, v3)
++              v0.AddArg(v1)
++              v.AddArg2(y, v0)
++              return true
++      }
++      // match: (Cvt32Fto32 <t> x)
++      // cond: !base.ConvertHash.MatchPos(v.Pos, nil)
++      // result: (CVTTSS2SL <t> x)
++      for {
++              t := v.Type
++              x := v_0
++              if !(!base.ConvertHash.MatchPos(v.Pos, nil)) {
++                      break
++              }
++              v.reset(OpAMD64CVTTSS2SL)
++              v.Type = t
++              v.AddArg(x)
++              return true
++      }
++      return false
++}
++func rewriteValueAMD64_OpCvt32Fto64(v *Value) bool {
++      v_0 := v.Args[0]
++      b := v.Block
++      typ := &b.Func.Config.Types
++      // match: (Cvt32Fto64 <t> x)
++      // cond: base.ConvertHash.MatchPos(v.Pos, nil)
++      // result: (XORQ <t> y (SARQconst <t> [63] (ANDQ <t> y:(CVTTSS2SQ <t> x) (NOTQ <typ.Int64> (MOVQf2i (CVTSS2SD <typ.Float64> x))) )))
++      for {
++              t := v.Type
++              x := v_0
++              if !(base.ConvertHash.MatchPos(v.Pos, nil)) {
++                      break
++              }
++              v.reset(OpAMD64XORQ)
++              v.Type = t
++              v0 := b.NewValue0(v.Pos, OpAMD64SARQconst, t)
++              v0.AuxInt = int8ToAuxInt(63)
++              v1 := b.NewValue0(v.Pos, OpAMD64ANDQ, t)
++              y := b.NewValue0(v.Pos, OpAMD64CVTTSS2SQ, t)
++              y.AddArg(x)
++              v3 := b.NewValue0(v.Pos, OpAMD64NOTQ, typ.Int64)
++              v4 := b.NewValue0(v.Pos, OpAMD64MOVQf2i, typ.UInt64)
++              v5 := b.NewValue0(v.Pos, OpAMD64CVTSS2SD, typ.Float64)
++              v5.AddArg(x)
++              v4.AddArg(v5)
++              v3.AddArg(v4)
++              v1.AddArg2(y, v3)
++              v0.AddArg(v1)
++              v.AddArg2(y, v0)
++              return true
++      }
++      // match: (Cvt32Fto64 <t> x)
++      // cond: !base.ConvertHash.MatchPos(v.Pos, nil)
++      // result: (CVTTSS2SQ <t> x)
++      for {
++              t := v.Type
++              x := v_0
++              if !(!base.ConvertHash.MatchPos(v.Pos, nil)) {
++                      break
++              }
++              v.reset(OpAMD64CVTTSS2SQ)
++              v.Type = t
++              v.AddArg(x)
++              return true
++      }
++      return false
++}
 +func rewriteValueAMD64_OpCvt32toMask16x32(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (Cvt32toMask16x32 <t> x)
 +      // result: (VPMOVMToVec16x32 <types.TypeVec512> (KMOVDk <t> x))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              v.reset(OpAMD64VPMOVMToVec16x32)
 +              v.Type = types.TypeVec512
 +              v0 := b.NewValue0(v.Pos, OpAMD64KMOVDk, t)
 +              v0.AddArg(x)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCvt32toMask8x32(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (Cvt32toMask8x32 <t> x)
 +      // result: (VPMOVMToVec8x32 <types.TypeVec256> (KMOVDk <t> x))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              v.reset(OpAMD64VPMOVMToVec8x32)
 +              v.Type = types.TypeVec256
 +              v0 := b.NewValue0(v.Pos, OpAMD64KMOVDk, t)
 +              v0.AddArg(x)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
++func rewriteValueAMD64_OpCvt64Fto32(v *Value) bool {
++      v_0 := v.Args[0]
++      b := v.Block
++      typ := &b.Func.Config.Types
++      // match: (Cvt64Fto32 <t> x)
++      // cond: base.ConvertHash.MatchPos(v.Pos, nil)
++      // result: (XORL <t> y (SARLconst <t> [31] (ANDL <t> y:(CVTTSD2SL <t> x) (NOTL <typ.Int32> (MOVLf2i (CVTSD2SS <typ.Float32> x))))))
++      for {
++              t := v.Type
++              x := v_0
++              if !(base.ConvertHash.MatchPos(v.Pos, nil)) {
++                      break
++              }
++              v.reset(OpAMD64XORL)
++              v.Type = t
++              v0 := b.NewValue0(v.Pos, OpAMD64SARLconst, t)
++              v0.AuxInt = int8ToAuxInt(31)
++              v1 := b.NewValue0(v.Pos, OpAMD64ANDL, t)
++              y := b.NewValue0(v.Pos, OpAMD64CVTTSD2SL, t)
++              y.AddArg(x)
++              v3 := b.NewValue0(v.Pos, OpAMD64NOTL, typ.Int32)
++              v4 := b.NewValue0(v.Pos, OpAMD64MOVLf2i, typ.UInt32)
++              v5 := b.NewValue0(v.Pos, OpAMD64CVTSD2SS, typ.Float32)
++              v5.AddArg(x)
++              v4.AddArg(v5)
++              v3.AddArg(v4)
++              v1.AddArg2(y, v3)
++              v0.AddArg(v1)
++              v.AddArg2(y, v0)
++              return true
++      }
++      // match: (Cvt64Fto32 <t> x)
++      // cond: !base.ConvertHash.MatchPos(v.Pos, nil)
++      // result: (CVTTSD2SL <t> x)
++      for {
++              t := v.Type
++              x := v_0
++              if !(!base.ConvertHash.MatchPos(v.Pos, nil)) {
++                      break
++              }
++              v.reset(OpAMD64CVTTSD2SL)
++              v.Type = t
++              v.AddArg(x)
++              return true
++      }
++      return false
++}
++func rewriteValueAMD64_OpCvt64Fto64(v *Value) bool {
++      v_0 := v.Args[0]
++      b := v.Block
++      typ := &b.Func.Config.Types
++      // match: (Cvt64Fto64 <t> x)
++      // cond: base.ConvertHash.MatchPos(v.Pos, nil)
++      // result: (XORQ <t> y (SARQconst <t> [63] (ANDQ <t> y:(CVTTSD2SQ <t> x) (NOTQ <typ.Int64> (MOVQf2i x)))))
++      for {
++              t := v.Type
++              x := v_0
++              if !(base.ConvertHash.MatchPos(v.Pos, nil)) {
++                      break
++              }
++              v.reset(OpAMD64XORQ)
++              v.Type = t
++              v0 := b.NewValue0(v.Pos, OpAMD64SARQconst, t)
++              v0.AuxInt = int8ToAuxInt(63)
++              v1 := b.NewValue0(v.Pos, OpAMD64ANDQ, t)
++              y := b.NewValue0(v.Pos, OpAMD64CVTTSD2SQ, t)
++              y.AddArg(x)
++              v3 := b.NewValue0(v.Pos, OpAMD64NOTQ, typ.Int64)
++              v4 := b.NewValue0(v.Pos, OpAMD64MOVQf2i, typ.UInt64)
++              v4.AddArg(x)
++              v3.AddArg(v4)
++              v1.AddArg2(y, v3)
++              v0.AddArg(v1)
++              v.AddArg2(y, v0)
++              return true
++      }
++      // match: (Cvt64Fto64 <t> x)
++      // cond: !base.ConvertHash.MatchPos(v.Pos, nil)
++      // result: (CVTTSD2SQ <t> x)
++      for {
++              t := v.Type
++              x := v_0
++              if !(!base.ConvertHash.MatchPos(v.Pos, nil)) {
++                      break
++              }
++              v.reset(OpAMD64CVTTSD2SQ)
++              v.Type = t
++              v.AddArg(x)
++              return true
++      }
++      return false
++}
 +func rewriteValueAMD64_OpCvt64toMask8x64(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (Cvt64toMask8x64 <t> x)
 +      // result: (VPMOVMToVec8x64 <types.TypeVec512> (KMOVQk <t> x))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              v.reset(OpAMD64VPMOVMToVec8x64)
 +              v.Type = types.TypeVec512
 +              v0 := b.NewValue0(v.Pos, OpAMD64KMOVQk, t)
 +              v0.AddArg(x)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCvt8toMask16x8(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (Cvt8toMask16x8 <t> x)
 +      // result: (VPMOVMToVec16x8 <types.TypeVec128> (KMOVBk <t> x))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              v.reset(OpAMD64VPMOVMToVec16x8)
 +              v.Type = types.TypeVec128
 +              v0 := b.NewValue0(v.Pos, OpAMD64KMOVBk, t)
 +              v0.AddArg(x)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCvt8toMask32x4(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (Cvt8toMask32x4 <t> x)
 +      // result: (VPMOVMToVec32x4 <types.TypeVec128> (KMOVBk <t> x))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              v.reset(OpAMD64VPMOVMToVec32x4)
 +              v.Type = types.TypeVec128
 +              v0 := b.NewValue0(v.Pos, OpAMD64KMOVBk, t)
 +              v0.AddArg(x)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCvt8toMask32x8(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (Cvt8toMask32x8 <t> x)
 +      // result: (VPMOVMToVec32x8 <types.TypeVec256> (KMOVBk <t> x))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              v.reset(OpAMD64VPMOVMToVec32x8)
 +              v.Type = types.TypeVec256
 +              v0 := b.NewValue0(v.Pos, OpAMD64KMOVBk, t)
 +              v0.AddArg(x)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCvt8toMask64x2(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (Cvt8toMask64x2 <t> x)
 +      // result: (VPMOVMToVec64x2 <types.TypeVec128> (KMOVBk <t> x))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              v.reset(OpAMD64VPMOVMToVec64x2)
 +              v.Type = types.TypeVec128
 +              v0 := b.NewValue0(v.Pos, OpAMD64KMOVBk, t)
 +              v0.AddArg(x)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCvt8toMask64x4(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (Cvt8toMask64x4 <t> x)
 +      // result: (VPMOVMToVec64x4 <types.TypeVec256> (KMOVBk <t> x))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              v.reset(OpAMD64VPMOVMToVec64x4)
 +              v.Type = types.TypeVec256
 +              v0 := b.NewValue0(v.Pos, OpAMD64KMOVBk, t)
 +              v0.AddArg(x)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCvt8toMask64x8(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (Cvt8toMask64x8 <t> x)
 +      // result: (VPMOVMToVec64x8 <types.TypeVec512> (KMOVBk <t> x))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              v.reset(OpAMD64VPMOVMToVec64x8)
 +              v.Type = types.TypeVec512
 +              v0 := b.NewValue0(v.Pos, OpAMD64KMOVBk, t)
 +              v0.AddArg(x)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCvtMask16x16to16(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CvtMask16x16to16 <t> x)
 +      // result: (KMOVWi <t> (VPMOVVec16x16ToM <types.TypeMask> x))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              v.reset(OpAMD64KMOVWi)
 +              v.Type = t
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x16ToM, types.TypeMask)
 +              v0.AddArg(x)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCvtMask16x32to32(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CvtMask16x32to32 <t> x)
 +      // result: (KMOVDi <t> (VPMOVVec16x32ToM <types.TypeMask> x))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              v.reset(OpAMD64KMOVDi)
 +              v.Type = t
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x32ToM, types.TypeMask)
 +              v0.AddArg(x)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCvtMask16x8to8(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CvtMask16x8to8 <t> x)
 +      // result: (KMOVBi <t> (VPMOVVec16x8ToM <types.TypeMask> x))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              v.reset(OpAMD64KMOVBi)
 +              v.Type = t
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec16x8ToM, types.TypeMask)
 +              v0.AddArg(x)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCvtMask32x16to16(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CvtMask32x16to16 <t> x)
 +      // result: (KMOVWi <t> (VPMOVVec32x16ToM <types.TypeMask> x))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              v.reset(OpAMD64KMOVWi)
 +              v.Type = t
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x16ToM, types.TypeMask)
 +              v0.AddArg(x)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCvtMask32x4to8(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CvtMask32x4to8 <t> x)
 +      // result: (KMOVBi <t> (VPMOVVec32x4ToM <types.TypeMask> x))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              v.reset(OpAMD64KMOVBi)
 +              v.Type = t
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(x)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCvtMask32x8to8(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CvtMask32x8to8 <t> x)
 +      // result: (KMOVBi <t> (VPMOVVec32x8ToM <types.TypeMask> x))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              v.reset(OpAMD64KMOVBi)
 +              v.Type = t
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(x)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCvtMask64x2to8(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CvtMask64x2to8 <t> x)
 +      // result: (KMOVBi <t> (VPMOVVec64x2ToM <types.TypeMask> x))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              v.reset(OpAMD64KMOVBi)
 +              v.Type = t
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(x)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCvtMask64x4to8(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CvtMask64x4to8 <t> x)
 +      // result: (KMOVBi <t> (VPMOVVec64x4ToM <types.TypeMask> x))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              v.reset(OpAMD64KMOVBi)
 +              v.Type = t
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(x)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCvtMask64x8to8(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CvtMask64x8to8 <t> x)
 +      // result: (KMOVBi <t> (VPMOVVec64x8ToM <types.TypeMask> x))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              v.reset(OpAMD64KMOVBi)
 +              v.Type = t
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x8ToM, types.TypeMask)
 +              v0.AddArg(x)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCvtMask8x16to16(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CvtMask8x16to16 <t> x)
 +      // result: (KMOVWi <t> (VPMOVVec8x16ToM <types.TypeMask> x))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              v.reset(OpAMD64KMOVWi)
 +              v.Type = t
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x16ToM, types.TypeMask)
 +              v0.AddArg(x)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCvtMask8x32to32(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CvtMask8x32to32 <t> x)
 +      // result: (KMOVDi <t> (VPMOVVec8x32ToM <types.TypeMask> x))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              v.reset(OpAMD64KMOVDi)
 +              v.Type = t
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x32ToM, types.TypeMask)
 +              v0.AddArg(x)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpCvtMask8x64to64(v *Value) bool {
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (CvtMask8x64to64 <t> x)
 +      // result: (KMOVQi <t> (VPMOVVec8x64ToM <types.TypeMask> x))
 +      for {
 +              t := v.Type
 +              x := v_0
 +              v.reset(OpAMD64KMOVQi)
 +              v.Type = t
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec8x64ToM, types.TypeMask)
 +              v0.AddArg(x)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpDiv16(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (Div16 [a] x y)
 +      // result: (Select0 (DIVW [a] x y))
 +      for {
 +              a := auxIntToBool(v.AuxInt)
 +              x := v_0
 +              y := v_1
 +              v.reset(OpSelect0)
 +              v0 := b.NewValue0(v.Pos, OpAMD64DIVW, types.NewTuple(typ.Int16, typ.Int16))
 +              v0.AuxInt = boolToAuxInt(a)
 +              v0.AddArg2(x, y)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpDiv16u(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (Div16u x y)
 +      // result: (Select0 (DIVWU x y))
 +      for {
 +              x := v_0
 +              y := v_1
 +              v.reset(OpSelect0)
 +              v0 := b.NewValue0(v.Pos, OpAMD64DIVWU, types.NewTuple(typ.UInt16, typ.UInt16))
 +              v0.AddArg2(x, y)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpDiv32(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (Div32 [a] x y)
 +      // result: (Select0 (DIVL [a] x y))
 +      for {
 +              a := auxIntToBool(v.AuxInt)
 +              x := v_0
 +              y := v_1
 +              v.reset(OpSelect0)
 +              v0 := b.NewValue0(v.Pos, OpAMD64DIVL, types.NewTuple(typ.Int32, typ.Int32))
 +              v0.AuxInt = boolToAuxInt(a)
 +              v0.AddArg2(x, y)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpDiv32u(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (Div32u x y)
 +      // result: (Select0 (DIVLU x y))
 +      for {
 +              x := v_0
 +              y := v_1
 +              v.reset(OpSelect0)
 +              v0 := b.NewValue0(v.Pos, OpAMD64DIVLU, types.NewTuple(typ.UInt32, typ.UInt32))
 +              v0.AddArg2(x, y)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpDiv64(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (Div64 [a] x y)
 +      // result: (Select0 (DIVQ [a] x y))
 +      for {
 +              a := auxIntToBool(v.AuxInt)
 +              x := v_0
 +              y := v_1
 +              v.reset(OpSelect0)
 +              v0 := b.NewValue0(v.Pos, OpAMD64DIVQ, types.NewTuple(typ.Int64, typ.Int64))
 +              v0.AuxInt = boolToAuxInt(a)
 +              v0.AddArg2(x, y)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpDiv64u(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (Div64u x y)
 +      // result: (Select0 (DIVQU x y))
 +      for {
 +              x := v_0
 +              y := v_1
 +              v.reset(OpSelect0)
 +              v0 := b.NewValue0(v.Pos, OpAMD64DIVQU, types.NewTuple(typ.UInt64, typ.UInt64))
 +              v0.AddArg2(x, y)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpDiv8(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (Div8 x y)
 +      // result: (Select0 (DIVW (SignExt8to16 x) (SignExt8to16 y)))
 +      for {
 +              x := v_0
 +              y := v_1
 +              v.reset(OpSelect0)
 +              v0 := b.NewValue0(v.Pos, OpAMD64DIVW, types.NewTuple(typ.Int16, typ.Int16))
 +              v1 := b.NewValue0(v.Pos, OpSignExt8to16, typ.Int16)
 +              v1.AddArg(x)
 +              v2 := b.NewValue0(v.Pos, OpSignExt8to16, typ.Int16)
 +              v2.AddArg(y)
 +              v0.AddArg2(v1, v2)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpDiv8u(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (Div8u x y)
 +      // result: (Select0 (DIVWU (ZeroExt8to16 x) (ZeroExt8to16 y)))
 +      for {
 +              x := v_0
 +              y := v_1
 +              v.reset(OpSelect0)
 +              v0 := b.NewValue0(v.Pos, OpAMD64DIVWU, types.NewTuple(typ.UInt16, typ.UInt16))
 +              v1 := b.NewValue0(v.Pos, OpZeroExt8to16, typ.UInt16)
 +              v1.AddArg(x)
 +              v2 := b.NewValue0(v.Pos, OpZeroExt8to16, typ.UInt16)
 +              v2.AddArg(y)
 +              v0.AddArg2(v1, v2)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpEq16(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (Eq16 x y)
 +      // result: (SETEQ (CMPW x y))
 +      for {
 +              x := v_0
 +              y := v_1
 +              v.reset(OpAMD64SETEQ)
 +              v0 := b.NewValue0(v.Pos, OpAMD64CMPW, types.TypeFlags)
 +              v0.AddArg2(x, y)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpEq32(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (Eq32 x y)
 +      // result: (SETEQ (CMPL x y))
 +      for {
 +              x := v_0
 +              y := v_1
 +              v.reset(OpAMD64SETEQ)
 +              v0 := b.NewValue0(v.Pos, OpAMD64CMPL, types.TypeFlags)
 +              v0.AddArg2(x, y)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpEq32F(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (Eq32F x y)
 +      // result: (SETEQF (UCOMISS x y))
 +      for {
 +              x := v_0
 +              y := v_1
 +              v.reset(OpAMD64SETEQF)
 +              v0 := b.NewValue0(v.Pos, OpAMD64UCOMISS, types.TypeFlags)
 +              v0.AddArg2(x, y)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpEq64(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (Eq64 x y)
 +      // result: (SETEQ (CMPQ x y))
 +      for {
 +              x := v_0
 +              y := v_1
 +              v.reset(OpAMD64SETEQ)
 +              v0 := b.NewValue0(v.Pos, OpAMD64CMPQ, types.TypeFlags)
 +              v0.AddArg2(x, y)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpEq64F(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (Eq64F x y)
 +      // result: (SETEQF (UCOMISD x y))
 +      for {
 +              x := v_0
 +              y := v_1
 +              v.reset(OpAMD64SETEQF)
 +              v0 := b.NewValue0(v.Pos, OpAMD64UCOMISD, types.TypeFlags)
 +              v0.AddArg2(x, y)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpEq8(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (Eq8 x y)
 +      // result: (SETEQ (CMPB x y))
 +      for {
 +              x := v_0
 +              y := v_1
 +              v.reset(OpAMD64SETEQ)
 +              v0 := b.NewValue0(v.Pos, OpAMD64CMPB, types.TypeFlags)
 +              v0.AddArg2(x, y)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpEqB(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (EqB x y)
 +      // result: (SETEQ (CMPB x y))
 +      for {
 +              x := v_0
 +              y := v_1
 +              v.reset(OpAMD64SETEQ)
 +              v0 := b.NewValue0(v.Pos, OpAMD64CMPB, types.TypeFlags)
 +              v0.AddArg2(x, y)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpEqPtr(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (EqPtr x y)
 +      // result: (SETEQ (CMPQ x y))
 +      for {
 +              x := v_0
 +              y := v_1
 +              v.reset(OpAMD64SETEQ)
 +              v0 := b.NewValue0(v.Pos, OpAMD64CMPQ, types.TypeFlags)
 +              v0.AddArg2(x, y)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpEqualFloat32x16(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (EqualFloat32x16 x y)
 +      // result: (VPMOVMToVec32x16 (VCMPPS512 [0] x y))
 +      for {
 +              x := v_0
 +              y := v_1
 +              v.reset(OpAMD64VPMOVMToVec32x16)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VCMPPS512, typ.Mask)
 +              v0.AuxInt = uint8ToAuxInt(0)
 +              v0.AddArg2(x, y)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpEqualFloat32x4(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (EqualFloat32x4 x y)
 +      // result: (VCMPPS128 [0] x y)
 +      for {
 +              x := v_0
 +              y := v_1
 +              v.reset(OpAMD64VCMPPS128)
 +              v.AuxInt = uint8ToAuxInt(0)
 +              v.AddArg2(x, y)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpEqualFloat32x8(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (EqualFloat32x8 x y)
 +      // result: (VCMPPS256 [0] x y)
 +      for {
 +              x := v_0
 +              y := v_1
 +              v.reset(OpAMD64VCMPPS256)
 +              v.AuxInt = uint8ToAuxInt(0)
 +              v.AddArg2(x, y)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpEqualFloat64x2(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (EqualFloat64x2 x y)
 +      // result: (VCMPPD128 [0] x y)
 +      for {
 +              x := v_0
 +              y := v_1
 +              v.reset(OpAMD64VCMPPD128)
 +              v.AuxInt = uint8ToAuxInt(0)
 +              v.AddArg2(x, y)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpEqualFloat64x4(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      // match: (EqualFloat64x4 x y)
 +      // result: (VCMPPD256 [0] x y)
 +      for {
 +              x := v_0
 +              y := v_1
 +              v.reset(OpAMD64VCMPPD256)
 +              v.AuxInt = uint8ToAuxInt(0)
 +              v.AddArg2(x, y)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpEqualFloat64x8(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (EqualFloat64x8 x y)
 +      // result: (VPMOVMToVec64x8 (VCMPPD512 [0] x y))
 +      for {
 +              x := v_0
 +              y := v_1
 +              v.reset(OpAMD64VPMOVMToVec64x8)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VCMPPD512, typ.Mask)
 +              v0.AuxInt = uint8ToAuxInt(0)
 +              v0.AddArg2(x, y)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpEqualInt16x32(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (EqualInt16x32 x y)
 +      // result: (VPMOVMToVec16x32 (VPCMPEQW512 x y))
 +      for {
 +              x := v_0
 +              y := v_1
 +              v.reset(OpAMD64VPMOVMToVec16x32)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPCMPEQW512, typ.Mask)
 +              v0.AddArg2(x, y)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpEqualInt32x16(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (EqualInt32x16 x y)
 +      // result: (VPMOVMToVec32x16 (VPCMPEQD512 x y))
 +      for {
 +              x := v_0
 +              y := v_1
 +              v.reset(OpAMD64VPMOVMToVec32x16)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPCMPEQD512, typ.Mask)
 +              v0.AddArg2(x, y)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpEqualInt64x8(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (EqualInt64x8 x y)
 +      // result: (VPMOVMToVec64x8 (VPCMPEQQ512 x y))
 +      for {
 +              x := v_0
 +              y := v_1
 +              v.reset(OpAMD64VPMOVMToVec64x8)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPCMPEQQ512, typ.Mask)
 +              v0.AddArg2(x, y)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpEqualInt8x64(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (EqualInt8x64 x y)
 +      // result: (VPMOVMToVec8x64 (VPCMPEQB512 x y))
 +      for {
 +              x := v_0
 +              y := v_1
 +              v.reset(OpAMD64VPMOVMToVec8x64)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPCMPEQB512, typ.Mask)
 +              v0.AddArg2(x, y)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpEqualUint16x32(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (EqualUint16x32 x y)
 +      // result: (VPMOVMToVec16x32 (VPCMPEQW512 x y))
 +      for {
 +              x := v_0
 +              y := v_1
 +              v.reset(OpAMD64VPMOVMToVec16x32)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPCMPEQW512, typ.Mask)
 +              v0.AddArg2(x, y)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpEqualUint32x16(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (EqualUint32x16 x y)
 +      // result: (VPMOVMToVec32x16 (VPCMPEQD512 x y))
 +      for {
 +              x := v_0
 +              y := v_1
 +              v.reset(OpAMD64VPMOVMToVec32x16)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPCMPEQD512, typ.Mask)
 +              v0.AddArg2(x, y)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpEqualUint64x8(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (EqualUint64x8 x y)
 +      // result: (VPMOVMToVec64x8 (VPCMPEQQ512 x y))
 +      for {
 +              x := v_0
 +              y := v_1
 +              v.reset(OpAMD64VPMOVMToVec64x8)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPCMPEQQ512, typ.Mask)
 +              v0.AddArg2(x, y)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpEqualUint8x64(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      typ := &b.Func.Config.Types
 +      // match: (EqualUint8x64 x y)
 +      // result: (VPMOVMToVec8x64 (VPCMPEQB512 x y))
 +      for {
 +              x := v_0
 +              y := v_1
 +              v.reset(OpAMD64VPMOVMToVec8x64)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPCMPEQB512, typ.Mask)
 +              v0.AddArg2(x, y)
 +              v.AddArg(v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpExpandFloat32x16(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (ExpandFloat32x16 x mask)
 +      // result: (VEXPANDPSMasked512 x (VPMOVVec32x16ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VEXPANDPSMasked512)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x16ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpExpandFloat32x4(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (ExpandFloat32x4 x mask)
 +      // result: (VEXPANDPSMasked128 x (VPMOVVec32x4ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VEXPANDPSMasked128)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpExpandFloat32x8(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (ExpandFloat32x8 x mask)
 +      // result: (VEXPANDPSMasked256 x (VPMOVVec32x8ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VEXPANDPSMasked256)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec32x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpExpandFloat64x2(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (ExpandFloat64x2 x mask)
 +      // result: (VEXPANDPDMasked128 x (VPMOVVec64x2ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VEXPANDPDMasked128)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x2ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
 +              return true
 +      }
 +}
 +func rewriteValueAMD64_OpExpandFloat64x4(v *Value) bool {
 +      v_1 := v.Args[1]
 +      v_0 := v.Args[0]
 +      b := v.Block
 +      // match: (ExpandFloat64x4 x mask)
 +      // result: (VEXPANDPDMasked256 x (VPMOVVec64x4ToM <types.TypeMask> mask))
 +      for {
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VEXPANDPDMasked256)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x4ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
                return true
        }
 -      return false
  }
 -func rewriteValueAMD64_OpAddr(v *Value) bool {
 +func rewriteValueAMD64_OpExpandFloat64x8(v *Value) bool {
 +      v_1 := v.Args[1]
        v_0 := v.Args[0]
 -      // match: (Addr {sym} base)
 -      // result: (LEAQ {sym} base)
 +      b := v.Block
 +      // match: (ExpandFloat64x8 x mask)
 +      // result: (VEXPANDPDMasked512 x (VPMOVVec64x8ToM <types.TypeMask> mask))
        for {
 -              sym := auxToSym(v.Aux)
 -              base := v_0
 -              v.reset(OpAMD64LEAQ)
 -              v.Aux = symToAux(sym)
 -              v.AddArg(base)
 +              x := v_0
 +              mask := v_1
 +              v.reset(OpAMD64VEXPANDPDMasked512)
 +              v0 := b.NewValue0(v.Pos, OpAMD64VPMOVVec64x8ToM, types.TypeMask)
 +              v0.AddArg(mask)
 +              v.AddArg2(x, v0)
                return true
        }
  }
index 9a58197925ce138117cc58aea81d91f5e7ba137d,766598ebd57ec4cd4e8d34b71080ae9252526574..c81b66f76a6c0c96cb76eeaac8518282227d4232
@@@ -16,12 -16,12 +16,12 @@@ func TestSizeof(t *testing.T) 
        const _64bit = unsafe.Sizeof(uintptr(0)) == 8
  
        var tests = []struct {
-               val    interface{} // type as a value
-               _32bit uintptr     // size on 32bit platforms
-               _64bit uintptr     // size on 64bit platforms
+               val    any     // type as a value
+               _32bit uintptr // size on 32bit platforms
+               _64bit uintptr // size on 64bit platforms
        }{
                {Value{}, 72, 112},
 -              {Block{}, 164, 304},
 +              {Block{}, 168, 312},
                {LocalSlot{}, 28, 40},
                {valState{}, 28, 40},
        }
Simple merge
index b3b9314b0d1fd439caa0df67f7b960c891908251,78a42351169f4a6d8ee22ee4acc2f5f93ecb7c11..a20529258a60e8cadc2afc659281fdf36c1893c1
@@@ -1604,484 -1603,35 +1604,514 @@@ func initIntrinsics(cfg *intrinsicBuild
                },
                sys.AMD64)
  
+       /******** crypto/internal/constanttime ********/
+       // We implement a superset of the Select promise:
+       // Select returns x if v != 0 and y if v == 0.
+       add("crypto/internal/constanttime", "Select",
+               func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
+                       v, x, y := args[0], args[1], args[2]
+                       var checkOp ssa.Op
+                       var zero *ssa.Value
+                       switch s.config.PtrSize {
+                       case 8:
+                               checkOp = ssa.OpNeq64
+                               zero = s.constInt64(types.Types[types.TINT], 0)
+                       case 4:
+                               checkOp = ssa.OpNeq32
+                               zero = s.constInt32(types.Types[types.TINT], 0)
+                       default:
+                               panic("unreachable")
+                       }
+                       check := s.newValue2(checkOp, types.Types[types.TBOOL], zero, v)
+                       return s.newValue3(ssa.OpCondSelect, types.Types[types.TINT], x, y, check)
+               },
+               sys.ArchAMD64, sys.ArchARM64, sys.ArchLoong64, sys.ArchPPC64, sys.ArchPPC64LE, sys.ArchWasm) // all with CMOV support.
+       add("crypto/internal/constanttime", "boolToUint8",
+               func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
+                       return s.newValue1(ssa.OpCvtBoolToUint8, types.Types[types.TUINT8], args[0])
+               },
+               all...)
++
 +      if buildcfg.Experiment.SIMD {
 +              // Only enable intrinsics, if SIMD experiment.
 +              simdIntrinsics(addF)
 +
 +              addF("simd", "ClearAVXUpperBits",
 +                      func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +                              s.vars[memVar] = s.newValue1(ssa.OpAMD64VZEROUPPER, types.TypeMem, s.mem())
 +                              return nil
 +                      },
 +                      sys.AMD64)
 +
 +              addF(simdPackage, "Int8x16.IsZero", opLen1(ssa.OpIsZeroVec, types.Types[types.TBOOL]), sys.AMD64)
 +              addF(simdPackage, "Int16x8.IsZero", opLen1(ssa.OpIsZeroVec, types.Types[types.TBOOL]), sys.AMD64)
 +              addF(simdPackage, "Int32x4.IsZero", opLen1(ssa.OpIsZeroVec, types.Types[types.TBOOL]), sys.AMD64)
 +              addF(simdPackage, "Int64x2.IsZero", opLen1(ssa.OpIsZeroVec, types.Types[types.TBOOL]), sys.AMD64)
 +              addF(simdPackage, "Uint8x16.IsZero", opLen1(ssa.OpIsZeroVec, types.Types[types.TBOOL]), sys.AMD64)
 +              addF(simdPackage, "Uint16x8.IsZero", opLen1(ssa.OpIsZeroVec, types.Types[types.TBOOL]), sys.AMD64)
 +              addF(simdPackage, "Uint32x4.IsZero", opLen1(ssa.OpIsZeroVec, types.Types[types.TBOOL]), sys.AMD64)
 +              addF(simdPackage, "Uint64x2.IsZero", opLen1(ssa.OpIsZeroVec, types.Types[types.TBOOL]), sys.AMD64)
 +              addF(simdPackage, "Int8x32.IsZero", opLen1(ssa.OpIsZeroVec, types.Types[types.TBOOL]), sys.AMD64)
 +              addF(simdPackage, "Int16x16.IsZero", opLen1(ssa.OpIsZeroVec, types.Types[types.TBOOL]), sys.AMD64)
 +              addF(simdPackage, "Int32x8.IsZero", opLen1(ssa.OpIsZeroVec, types.Types[types.TBOOL]), sys.AMD64)
 +              addF(simdPackage, "Int64x4.IsZero", opLen1(ssa.OpIsZeroVec, types.Types[types.TBOOL]), sys.AMD64)
 +              addF(simdPackage, "Uint8x32.IsZero", opLen1(ssa.OpIsZeroVec, types.Types[types.TBOOL]), sys.AMD64)
 +              addF(simdPackage, "Uint16x16.IsZero", opLen1(ssa.OpIsZeroVec, types.Types[types.TBOOL]), sys.AMD64)
 +              addF(simdPackage, "Uint32x8.IsZero", opLen1(ssa.OpIsZeroVec, types.Types[types.TBOOL]), sys.AMD64)
 +              addF(simdPackage, "Uint64x4.IsZero", opLen1(ssa.OpIsZeroVec, types.Types[types.TBOOL]), sys.AMD64)
 +
 +              sfp4 := func(method string, hwop ssa.Op, vectype *types.Type) {
 +                      addF("simd", method,
 +                              func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +                                      x, a, b, c, d, y := args[0], args[1], args[2], args[3], args[4], args[5]
 +                                      if a.Op == ssa.OpConst8 && b.Op == ssa.OpConst8 && c.Op == ssa.OpConst8 && d.Op == ssa.OpConst8 {
 +                                              return select4FromPair(x, a, b, c, d, y, s, hwop, vectype)
 +                                      } else {
 +                                              return s.callResult(n, callNormal)
 +                                      }
 +                              },
 +                              sys.AMD64)
 +              }
 +
 +              sfp4("Int32x4.SelectFromPair", ssa.OpconcatSelectedConstantInt32x4, types.TypeVec128)
 +              sfp4("Uint32x4.SelectFromPair", ssa.OpconcatSelectedConstantUint32x4, types.TypeVec128)
 +              sfp4("Float32x4.SelectFromPair", ssa.OpconcatSelectedConstantFloat32x4, types.TypeVec128)
 +
 +              sfp4("Int32x8.SelectFromPairGrouped", ssa.OpconcatSelectedConstantGroupedInt32x8, types.TypeVec256)
 +              sfp4("Uint32x8.SelectFromPairGrouped", ssa.OpconcatSelectedConstantGroupedUint32x8, types.TypeVec256)
 +              sfp4("Float32x8.SelectFromPairGrouped", ssa.OpconcatSelectedConstantGroupedFloat32x8, types.TypeVec256)
 +
 +              sfp4("Int32x16.SelectFromPairGrouped", ssa.OpconcatSelectedConstantGroupedInt32x16, types.TypeVec512)
 +              sfp4("Uint32x16.SelectFromPairGrouped", ssa.OpconcatSelectedConstantGroupedUint32x16, types.TypeVec512)
 +              sfp4("Float32x16.SelectFromPairGrouped", ssa.OpconcatSelectedConstantGroupedFloat32x16, types.TypeVec512)
 +
 +              sfp2 := func(method string, hwop ssa.Op, vectype *types.Type, cscimm func(i, j uint8) int64) {
 +                      addF("simd", method,
 +                              func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +                                      x, a, b, y := args[0], args[1], args[2], args[3]
 +                                      if a.Op == ssa.OpConst8 && b.Op == ssa.OpConst8 {
 +                                              return select2FromPair(x, a, b, y, s, hwop, vectype, cscimm)
 +                                      } else {
 +                                              return s.callResult(n, callNormal)
 +                                      }
 +                              },
 +                              sys.AMD64)
 +              }
 +
 +              sfp2("Uint64x2.SelectFromPair", ssa.OpconcatSelectedConstantUint64x2, types.TypeVec128, cscimm2)
 +              sfp2("Int64x2.SelectFromPair", ssa.OpconcatSelectedConstantInt64x2, types.TypeVec128, cscimm2)
 +              sfp2("Float64x2.SelectFromPair", ssa.OpconcatSelectedConstantFloat64x2, types.TypeVec128, cscimm2)
 +
 +              sfp2("Uint64x4.SelectFromPairGrouped", ssa.OpconcatSelectedConstantGroupedUint64x4, types.TypeVec256, cscimm2g2)
 +              sfp2("Int64x4.SelectFromPairGrouped", ssa.OpconcatSelectedConstantGroupedInt64x4, types.TypeVec256, cscimm2g2)
 +              sfp2("Float64x4.SelectFromPairGrouped", ssa.OpconcatSelectedConstantGroupedFloat64x4, types.TypeVec256, cscimm2g2)
 +
 +              sfp2("Uint64x8.SelectFromPairGrouped", ssa.OpconcatSelectedConstantGroupedUint64x8, types.TypeVec512, cscimm2g4)
 +              sfp2("Int64x8.SelectFromPairGrouped", ssa.OpconcatSelectedConstantGroupedInt64x8, types.TypeVec512, cscimm2g4)
 +              sfp2("Float64x8.SelectFromPairGrouped", ssa.OpconcatSelectedConstantGroupedFloat64x8, types.TypeVec512, cscimm2g4)
 +
 +      }
 +}
 +
 +func cscimm4(a, b, c, d uint8) int64 {
 +      return se(a + b<<2 + c<<4 + d<<6)
 +}
 +
 +func cscimm2(a, b uint8) int64 {
 +      return se(a + b<<1)
 +}
 +
 +func cscimm2g2(a, b uint8) int64 {
 +      g := cscimm2(a, b)
 +      return int64(int8(g + g<<2))
 +}
 +
 +func cscimm2g4(a, b uint8) int64 {
 +      g := cscimm2g2(a, b)
 +      return int64(int8(g + g<<4))
 +}
 +
 +const (
 +      _LLLL = iota
 +      _HLLL
 +      _LHLL
 +      _HHLL
 +      _LLHL
 +      _HLHL
 +      _LHHL
 +      _HHHL
 +      _LLLH
 +      _HLLH
 +      _LHLH
 +      _HHLH
 +      _LLHH
 +      _HLHH
 +      _LHHH
 +      _HHHH
 +)
 +
 +const (
 +      _LL = iota
 +      _HL
 +      _LH
 +      _HH
 +)
 +
 +func select2FromPair(x, _a, _b, y *ssa.Value, s *state, op ssa.Op, t *types.Type, csc func(a, b uint8) int64) *ssa.Value {
 +      a, b := uint8(_a.AuxInt8()), uint8(_b.AuxInt8())
 +      pattern := (a&2)>>1 + (b & 2)
 +      a, b = a&1, b&1
 +
 +      switch pattern {
 +      case _LL:
 +              return s.newValue2I(op, t, csc(a, b), x, x)
 +      case _HH:
 +              return s.newValue2I(op, t, csc(a, b), y, y)
 +      case _LH:
 +              return s.newValue2I(op, t, csc(a, b), x, y)
 +      case _HL:
 +              return s.newValue2I(op, t, csc(a, b), y, x)
 +      }
 +      panic("The preceding switch should have been exhaustive")
 +}
 +
 +func select4FromPair(x, _a, _b, _c, _d, y *ssa.Value, s *state, op ssa.Op, t *types.Type) *ssa.Value {
 +      a, b, c, d := uint8(_a.AuxInt8()), uint8(_b.AuxInt8()), uint8(_c.AuxInt8()), uint8(_d.AuxInt8())
 +      pattern := a>>2 + (b&4)>>1 + (c & 4) + (d&4)<<1
 +
 +      a, b, c, d = a&3, b&3, c&3, d&3
 +
 +      switch pattern {
 +      case _LLLL:
 +              // TODO DETECT 0,1,2,3, 0,0,0,0
 +              return s.newValue2I(op, t, cscimm4(a, b, c, d), x, x)
 +      case _HHHH:
 +              // TODO DETECT 0,1,2,3, 0,0,0,0
 +              return s.newValue2I(op, t, cscimm4(a, b, c, d), y, y)
 +      case _LLHH:
 +              return s.newValue2I(op, t, cscimm4(a, b, c, d), x, y)
 +      case _HHLL:
 +              return s.newValue2I(op, t, cscimm4(a, b, c, d), y, x)
 +
 +      case _HLLL:
 +              z := s.newValue2I(op, t, cscimm4(a, a, b, b), y, x)
 +              return s.newValue2I(op, t, cscimm4(0, 2, c, d), z, x)
 +      case _LHLL:
 +              z := s.newValue2I(op, t, cscimm4(a, a, b, b), x, y)
 +              return s.newValue2I(op, t, cscimm4(0, 2, c, d), z, x)
 +      case _HLHH:
 +              z := s.newValue2I(op, t, cscimm4(a, a, b, b), y, x)
 +              return s.newValue2I(op, t, cscimm4(0, 2, c, d), z, y)
 +      case _LHHH:
 +              z := s.newValue2I(op, t, cscimm4(a, a, b, b), x, y)
 +              return s.newValue2I(op, t, cscimm4(0, 2, c, d), z, y)
 +
 +      case _LLLH:
 +              z := s.newValue2I(op, t, cscimm4(c, c, d, d), x, y)
 +              return s.newValue2I(op, t, cscimm4(a, b, 0, 2), x, z)
 +      case _LLHL:
 +              z := s.newValue2I(op, t, cscimm4(c, c, d, d), y, x)
 +              return s.newValue2I(op, t, cscimm4(a, b, 0, 2), x, z)
 +
 +      case _HHLH:
 +              z := s.newValue2I(op, t, cscimm4(c, c, d, d), x, y)
 +              return s.newValue2I(op, t, cscimm4(a, b, 0, 2), y, z)
 +
 +      case _HHHL:
 +              z := s.newValue2I(op, t, cscimm4(c, c, d, d), y, x)
 +              return s.newValue2I(op, t, cscimm4(a, b, 0, 2), y, z)
 +
 +      case _LHLH:
 +              z := s.newValue2I(op, t, cscimm4(a, c, b, d), x, y)
 +              return s.newValue2I(op, t, se(0b11_01_10_00), z, z)
 +      case _HLHL:
 +              z := s.newValue2I(op, t, cscimm4(b, d, a, c), x, y)
 +              return s.newValue2I(op, t, se(0b01_11_00_10), z, z)
 +      case _HLLH:
 +              z := s.newValue2I(op, t, cscimm4(b, c, a, d), x, y)
 +              return s.newValue2I(op, t, se(0b11_01_00_10), z, z)
 +      case _LHHL:
 +              z := s.newValue2I(op, t, cscimm4(a, d, b, c), x, y)
 +              return s.newValue2I(op, t, se(0b01_11_10_00), z, z)
 +      }
 +      panic("The preceding switch should have been exhaustive")
 +}
 +
 +// se smears the not-really-a-sign bit of a uint8 to conform to the conventions
 +// for representing AuxInt in ssa.
 +func se(x uint8) int64 {
 +      return int64(int8(x))
 +}
 +
 +func opLen1(op ssa.Op, t *types.Type) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +      return func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +              return s.newValue1(op, t, args[0])
 +      }
 +}
 +
 +func opLen2(op ssa.Op, t *types.Type) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +      return func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +              return s.newValue2(op, t, args[0], args[1])
 +      }
 +}
 +
 +func opLen2_21(op ssa.Op, t *types.Type) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +      return func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +              return s.newValue2(op, t, args[1], args[0])
 +      }
 +}
 +
 +func opLen3(op ssa.Op, t *types.Type) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +      return func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +              return s.newValue3(op, t, args[0], args[1], args[2])
 +      }
 +}
 +
 +func opLen3_31(op ssa.Op, t *types.Type) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +      return func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +              return s.newValue3(op, t, args[2], args[1], args[0])
 +      }
 +}
 +
 +func opLen3_21(op ssa.Op, t *types.Type) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +      return func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +              return s.newValue3(op, t, args[1], args[0], args[2])
 +      }
 +}
 +
 +func opLen3_231(op ssa.Op, t *types.Type) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +      return func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +              return s.newValue3(op, t, args[2], args[0], args[1])
 +      }
 +}
 +
 +func opLen4(op ssa.Op, t *types.Type) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +      return func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +              return s.newValue4(op, t, args[0], args[1], args[2], args[3])
 +      }
 +}
 +
 +func opLen4_231(op ssa.Op, t *types.Type) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +      return func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +              return s.newValue4(op, t, args[2], args[0], args[1], args[3])
 +      }
 +}
 +
 +func opLen4_31(op ssa.Op, t *types.Type) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +      return func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +              return s.newValue4(op, t, args[2], args[1], args[0], args[3])
 +      }
 +}
 +
 +func immJumpTable(s *state, idx *ssa.Value, intrinsicCall *ir.CallExpr, genOp func(*state, int)) *ssa.Value {
 +      // Make blocks we'll need.
 +      bEnd := s.f.NewBlock(ssa.BlockPlain)
 +
 +      if !idx.Type.IsKind(types.TUINT8) {
 +              panic("immJumpTable expects uint8 value")
 +      }
 +
 +      // We will exhaust 0-255, so no need to check the bounds.
 +      t := types.Types[types.TUINTPTR]
 +      idx = s.conv(nil, idx, idx.Type, t)
 +
 +      b := s.curBlock
 +      b.Kind = ssa.BlockJumpTable
 +      b.Pos = intrinsicCall.Pos()
 +      if base.Flag.Cfg.SpectreIndex {
 +              // Potential Spectre vulnerability hardening?
 +              idx = s.newValue2(ssa.OpSpectreSliceIndex, t, idx, s.uintptrConstant(255))
 +      }
 +      b.SetControl(idx)
 +      targets := [256]*ssa.Block{}
 +      for i := range 256 {
 +              t := s.f.NewBlock(ssa.BlockPlain)
 +              targets[i] = t
 +              b.AddEdgeTo(t)
 +      }
 +      s.endBlock()
 +
 +      for i, t := range targets {
 +              s.startBlock(t)
 +              genOp(s, i)
 +              if t.Kind != ssa.BlockExit {
 +                      t.AddEdgeTo(bEnd)
 +              }
 +              s.endBlock()
 +      }
 +
 +      s.startBlock(bEnd)
 +      ret := s.variable(intrinsicCall, intrinsicCall.Type())
 +      return ret
 +}
 +
 +func opLen1Imm8(op ssa.Op, t *types.Type, offset int) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +      return func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +              if args[1].Op == ssa.OpConst8 {
 +                      return s.newValue1I(op, t, args[1].AuxInt<<int64(offset), args[0])
 +              }
 +              return immJumpTable(s, args[1], n, func(sNew *state, idx int) {
 +                      // Encode as int8 due to requirement of AuxInt, check its comment for details.
 +                      s.vars[n] = sNew.newValue1I(op, t, int64(int8(idx<<offset)), args[0])
 +              })
 +      }
 +}
 +
 +func opLen2Imm8(op ssa.Op, t *types.Type, offset int) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +      return func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +              if args[1].Op == ssa.OpConst8 {
 +                      return s.newValue2I(op, t, args[1].AuxInt<<int64(offset), args[0], args[2])
 +              }
 +              return immJumpTable(s, args[1], n, func(sNew *state, idx int) {
 +                      // Encode as int8 due to requirement of AuxInt, check its comment for details.
 +                      s.vars[n] = sNew.newValue2I(op, t, int64(int8(idx<<offset)), args[0], args[2])
 +              })
 +      }
 +}
 +
 +func opLen3Imm8(op ssa.Op, t *types.Type, offset int) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +      return func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +              if args[1].Op == ssa.OpConst8 {
 +                      return s.newValue3I(op, t, args[1].AuxInt<<int64(offset), args[0], args[2], args[3])
 +              }
 +              return immJumpTable(s, args[1], n, func(sNew *state, idx int) {
 +                      // Encode as int8 due to requirement of AuxInt, check its comment for details.
 +                      s.vars[n] = sNew.newValue3I(op, t, int64(int8(idx<<offset)), args[0], args[2], args[3])
 +              })
 +      }
 +}
 +
 +func opLen2Imm8_2I(op ssa.Op, t *types.Type, offset int) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +      return func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +              if args[2].Op == ssa.OpConst8 {
 +                      return s.newValue2I(op, t, args[2].AuxInt<<int64(offset), args[0], args[1])
 +              }
 +              return immJumpTable(s, args[2], n, func(sNew *state, idx int) {
 +                      // Encode as int8 due to requirement of AuxInt, check its comment for details.
 +                      s.vars[n] = sNew.newValue2I(op, t, int64(int8(idx<<offset)), args[0], args[1])
 +              })
 +      }
 +}
 +
 +// Two immediates instead of just 1.  Offset is ignored, so it is a _ parameter instead.
 +func opLen2Imm8_II(op ssa.Op, t *types.Type, _ int) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +      return func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +              if args[1].Op == ssa.OpConst8 && args[2].Op == ssa.OpConst8 && args[1].AuxInt & ^3 == 0 && args[2].AuxInt & ^3 == 0 {
 +                      i1, i2 := args[1].AuxInt, args[2].AuxInt
 +                      return s.newValue2I(op, t, int64(int8(i1+i2<<4)), args[0], args[3])
 +              }
 +              four := s.constInt64(types.Types[types.TUINT8], 4)
 +              shifted := s.newValue2(ssa.OpLsh8x8, types.Types[types.TUINT8], args[2], four)
 +              combined := s.newValue2(ssa.OpAdd8, types.Types[types.TUINT8], args[1], shifted)
 +              return immJumpTable(s, combined, n, func(sNew *state, idx int) {
 +                      // Encode as int8 due to requirement of AuxInt, check its comment for details.
 +                      // TODO for "zeroing" values, panic instead.
 +                      if idx & ^(3+3<<4) == 0 {
 +                              s.vars[n] = sNew.newValue2I(op, t, int64(int8(idx)), args[0], args[3])
 +                      } else {
 +                              sNew.rtcall(ir.Syms.PanicSimdImm, false, nil)
 +                      }
 +              })
 +      }
 +}
 +
 +// The assembler requires the imm value of a SHA1RNDS4 instruction to be one of 0,1,2,3...
 +func opLen2Imm8_SHA1RNDS4(op ssa.Op, t *types.Type, offset int) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +      return func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +              if args[1].Op == ssa.OpConst8 {
 +                      return s.newValue2I(op, t, (args[1].AuxInt<<int64(offset))&0b11, args[0], args[2])
 +              }
 +              return immJumpTable(s, args[1], n, func(sNew *state, idx int) {
 +                      // Encode as int8 due to requirement of AuxInt, check its comment for details.
 +                      s.vars[n] = sNew.newValue2I(op, t, int64(int8(idx<<offset))&0b11, args[0], args[2])
 +              })
 +      }
 +}
 +
 +func opLen3Imm8_2I(op ssa.Op, t *types.Type, offset int) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +      return func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +              if args[2].Op == ssa.OpConst8 {
 +                      return s.newValue3I(op, t, args[2].AuxInt<<int64(offset), args[0], args[1], args[3])
 +              }
 +              return immJumpTable(s, args[2], n, func(sNew *state, idx int) {
 +                      // Encode as int8 due to requirement of AuxInt, check its comment for details.
 +                      s.vars[n] = sNew.newValue3I(op, t, int64(int8(idx<<offset)), args[0], args[1], args[3])
 +              })
 +      }
 +}
 +
 +func opLen4Imm8(op ssa.Op, t *types.Type, offset int) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +      return func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +              if args[1].Op == ssa.OpConst8 {
 +                      return s.newValue4I(op, t, args[1].AuxInt<<int64(offset), args[0], args[2], args[3], args[4])
 +              }
 +              return immJumpTable(s, args[1], n, func(sNew *state, idx int) {
 +                      // Encode as int8 due to requirement of AuxInt, check its comment for details.
 +                      s.vars[n] = sNew.newValue4I(op, t, int64(int8(idx<<offset)), args[0], args[2], args[3], args[4])
 +              })
 +      }
 +}
 +
 +func simdLoad() func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +      return func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +              return s.newValue2(ssa.OpLoad, n.Type(), args[0], s.mem())
 +      }
 +}
 +
 +func simdStore() func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +      return func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +              s.store(args[0].Type, args[1], args[0])
 +              return nil
 +      }
 +}
 +
 +var cvtVToMaskOpcodes = map[int]map[int]ssa.Op{
 +      8:  {16: ssa.OpCvt16toMask8x16, 32: ssa.OpCvt32toMask8x32, 64: ssa.OpCvt64toMask8x64},
 +      16: {8: ssa.OpCvt8toMask16x8, 16: ssa.OpCvt16toMask16x16, 32: ssa.OpCvt32toMask16x32},
 +      32: {4: ssa.OpCvt8toMask32x4, 8: ssa.OpCvt8toMask32x8, 16: ssa.OpCvt16toMask32x16},
 +      64: {2: ssa.OpCvt8toMask64x2, 4: ssa.OpCvt8toMask64x4, 8: ssa.OpCvt8toMask64x8},
 +}
 +
 +var cvtMaskToVOpcodes = map[int]map[int]ssa.Op{
 +      8:  {16: ssa.OpCvtMask8x16to16, 32: ssa.OpCvtMask8x32to32, 64: ssa.OpCvtMask8x64to64},
 +      16: {8: ssa.OpCvtMask16x8to8, 16: ssa.OpCvtMask16x16to16, 32: ssa.OpCvtMask16x32to32},
 +      32: {4: ssa.OpCvtMask32x4to8, 8: ssa.OpCvtMask32x8to8, 16: ssa.OpCvtMask32x16to16},
 +      64: {2: ssa.OpCvtMask64x2to8, 4: ssa.OpCvtMask64x4to8, 8: ssa.OpCvtMask64x8to8},
 +}
 +
 +func simdCvtVToMask(elemBits, lanes int) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +      return func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +              op := cvtVToMaskOpcodes[elemBits][lanes]
 +              if op == 0 {
 +                      panic(fmt.Sprintf("Unknown mask shape: Mask%dx%d", elemBits, lanes))
 +              }
 +              return s.newValue1(op, types.TypeMask, args[0])
 +      }
 +}
 +
 +func simdCvtMaskToV(elemBits, lanes int) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +      return func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +              op := cvtMaskToVOpcodes[elemBits][lanes]
 +              if op == 0 {
 +                      panic(fmt.Sprintf("Unknown mask shape: Mask%dx%d", elemBits, lanes))
 +              }
 +              return s.newValue1(op, n.Type(), args[0])
 +      }
 +}
 +
 +func simdMaskedLoad(op ssa.Op) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +      return func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +              return s.newValue3(op, n.Type(), args[0], args[1], s.mem())
 +      }
 +}
 +
 +func simdMaskedStore(op ssa.Op) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +      return func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
 +              s.vars[memVar] = s.newValue4A(op, types.TypeMem, args[0].Type, args[1], args[2], args[0], s.mem())
 +              return nil
 +      }
  }
  
  // findIntrinsic returns a function which builds the SSA equivalent of the
index 6b8c6d7bad5d0fd5b8f373eb4d950f02266a212e,ff72bdcf3730aebf307e5b60de581cb801e12287..eea7fd7d05065082451952686bfe9c1b18108bfa
@@@ -71,171 -73,170 +73,171 @@@ var runtimeDecls = [...]struct 
        {"printsp", funcTag, 9},
        {"printlock", funcTag, 9},
        {"printunlock", funcTag, 9},
-       {"concatstring2", funcTag, 32},
-       {"concatstring3", funcTag, 33},
-       {"concatstring4", funcTag, 34},
-       {"concatstring5", funcTag, 35},
-       {"concatstrings", funcTag, 37},
-       {"concatbyte2", funcTag, 39},
-       {"concatbyte3", funcTag, 40},
-       {"concatbyte4", funcTag, 41},
-       {"concatbyte5", funcTag, 42},
-       {"concatbytes", funcTag, 43},
-       {"cmpstring", funcTag, 44},
-       {"intstring", funcTag, 47},
-       {"slicebytetostring", funcTag, 48},
-       {"slicebytetostringtmp", funcTag, 49},
-       {"slicerunetostring", funcTag, 52},
-       {"stringtoslicebyte", funcTag, 53},
-       {"stringtoslicerune", funcTag, 56},
-       {"slicecopy", funcTag, 57},
-       {"decoderune", funcTag, 58},
-       {"countrunes", funcTag, 59},
-       {"convT", funcTag, 60},
-       {"convTnoptr", funcTag, 60},
-       {"convT16", funcTag, 62},
-       {"convT32", funcTag, 64},
-       {"convT64", funcTag, 65},
-       {"convTstring", funcTag, 66},
-       {"convTslice", funcTag, 69},
-       {"assertE2I", funcTag, 70},
-       {"assertE2I2", funcTag, 70},
-       {"panicdottypeE", funcTag, 71},
-       {"panicdottypeI", funcTag, 71},
-       {"panicnildottype", funcTag, 72},
-       {"typeAssert", funcTag, 70},
-       {"interfaceSwitch", funcTag, 73},
-       {"ifaceeq", funcTag, 75},
-       {"efaceeq", funcTag, 75},
-       {"panicrangestate", funcTag, 76},
+       {"concatstring2", funcTag, 36},
+       {"concatstring3", funcTag, 37},
+       {"concatstring4", funcTag, 38},
+       {"concatstring5", funcTag, 39},
+       {"concatstrings", funcTag, 41},
+       {"concatbyte2", funcTag, 43},
+       {"concatbyte3", funcTag, 44},
+       {"concatbyte4", funcTag, 45},
+       {"concatbyte5", funcTag, 46},
+       {"concatbytes", funcTag, 47},
+       {"cmpstring", funcTag, 48},
+       {"intstring", funcTag, 51},
+       {"slicebytetostring", funcTag, 52},
+       {"slicebytetostringtmp", funcTag, 53},
+       {"slicerunetostring", funcTag, 56},
+       {"stringtoslicebyte", funcTag, 57},
+       {"stringtoslicerune", funcTag, 60},
+       {"slicecopy", funcTag, 61},
+       {"decoderune", funcTag, 62},
+       {"countrunes", funcTag, 63},
+       {"convT", funcTag, 64},
+       {"convTnoptr", funcTag, 64},
+       {"convT16", funcTag, 66},
+       {"convT32", funcTag, 68},
+       {"convT64", funcTag, 69},
+       {"convTstring", funcTag, 70},
+       {"convTslice", funcTag, 73},
+       {"assertE2I", funcTag, 74},
+       {"assertE2I2", funcTag, 74},
+       {"panicdottypeE", funcTag, 75},
+       {"panicdottypeI", funcTag, 75},
+       {"panicnildottype", funcTag, 76},
+       {"typeAssert", funcTag, 74},
+       {"interfaceSwitch", funcTag, 77},
+       {"ifaceeq", funcTag, 79},
+       {"efaceeq", funcTag, 79},
+       {"panicrangestate", funcTag, 80},
        {"deferrangefunc", funcTag, 12},
-       {"rand", funcTag, 77},
-       {"rand32", funcTag, 78},
-       {"makemap64", funcTag, 80},
-       {"makemap", funcTag, 81},
-       {"makemap_small", funcTag, 82},
-       {"mapaccess1", funcTag, 83},
-       {"mapaccess1_fast32", funcTag, 84},
-       {"mapaccess1_fast64", funcTag, 85},
-       {"mapaccess1_faststr", funcTag, 86},
-       {"mapaccess1_fat", funcTag, 87},
-       {"mapaccess2", funcTag, 88},
-       {"mapaccess2_fast32", funcTag, 89},
-       {"mapaccess2_fast64", funcTag, 90},
-       {"mapaccess2_faststr", funcTag, 91},
-       {"mapaccess2_fat", funcTag, 92},
-       {"mapassign", funcTag, 83},
-       {"mapassign_fast32", funcTag, 84},
-       {"mapassign_fast32ptr", funcTag, 93},
-       {"mapassign_fast64", funcTag, 85},
-       {"mapassign_fast64ptr", funcTag, 93},
-       {"mapassign_faststr", funcTag, 86},
-       {"mapIterStart", funcTag, 94},
-       {"mapdelete", funcTag, 94},
-       {"mapdelete_fast32", funcTag, 95},
-       {"mapdelete_fast64", funcTag, 96},
-       {"mapdelete_faststr", funcTag, 97},
-       {"mapIterNext", funcTag, 98},
-       {"mapclear", funcTag, 99},
-       {"makechan64", funcTag, 101},
-       {"makechan", funcTag, 102},
-       {"chanrecv1", funcTag, 104},
-       {"chanrecv2", funcTag, 105},
-       {"chansend1", funcTag, 107},
-       {"closechan", funcTag, 108},
-       {"chanlen", funcTag, 109},
-       {"chancap", funcTag, 109},
-       {"writeBarrier", varTag, 111},
-       {"typedmemmove", funcTag, 112},
-       {"typedmemclr", funcTag, 113},
-       {"typedslicecopy", funcTag, 114},
-       {"selectnbsend", funcTag, 115},
-       {"selectnbrecv", funcTag, 116},
-       {"selectsetpc", funcTag, 117},
-       {"selectgo", funcTag, 118},
+       {"rand", funcTag, 81},
+       {"rand32", funcTag, 82},
+       {"makemap64", funcTag, 84},
+       {"makemap", funcTag, 85},
+       {"makemap_small", funcTag, 86},
+       {"mapaccess1", funcTag, 87},
+       {"mapaccess1_fast32", funcTag, 88},
+       {"mapaccess1_fast64", funcTag, 89},
+       {"mapaccess1_faststr", funcTag, 90},
+       {"mapaccess1_fat", funcTag, 91},
+       {"mapaccess2", funcTag, 92},
+       {"mapaccess2_fast32", funcTag, 93},
+       {"mapaccess2_fast64", funcTag, 94},
+       {"mapaccess2_faststr", funcTag, 95},
+       {"mapaccess2_fat", funcTag, 96},
+       {"mapassign", funcTag, 87},
+       {"mapassign_fast32", funcTag, 88},
+       {"mapassign_fast32ptr", funcTag, 97},
+       {"mapassign_fast64", funcTag, 89},
+       {"mapassign_fast64ptr", funcTag, 97},
+       {"mapassign_faststr", funcTag, 90},
+       {"mapIterStart", funcTag, 98},
+       {"mapdelete", funcTag, 98},
+       {"mapdelete_fast32", funcTag, 99},
+       {"mapdelete_fast64", funcTag, 100},
+       {"mapdelete_faststr", funcTag, 101},
+       {"mapIterNext", funcTag, 102},
+       {"mapclear", funcTag, 103},
+       {"makechan64", funcTag, 105},
+       {"makechan", funcTag, 106},
+       {"chanrecv1", funcTag, 108},
+       {"chanrecv2", funcTag, 109},
+       {"chansend1", funcTag, 111},
+       {"closechan", funcTag, 112},
+       {"chanlen", funcTag, 113},
+       {"chancap", funcTag, 113},
+       {"writeBarrier", varTag, 115},
+       {"typedmemmove", funcTag, 116},
+       {"typedmemclr", funcTag, 117},
+       {"typedslicecopy", funcTag, 118},
+       {"selectnbsend", funcTag, 119},
+       {"selectnbrecv", funcTag, 120},
+       {"selectsetpc", funcTag, 121},
+       {"selectgo", funcTag, 122},
        {"block", funcTag, 9},
-       {"makeslice", funcTag, 119},
-       {"makeslice64", funcTag, 120},
-       {"makeslicecopy", funcTag, 121},
-       {"growslice", funcTag, 123},
-       {"unsafeslicecheckptr", funcTag, 124},
+       {"makeslice", funcTag, 123},
+       {"makeslice64", funcTag, 124},
+       {"makeslicecopy", funcTag, 125},
+       {"growslice", funcTag, 127},
+       {"unsafeslicecheckptr", funcTag, 128},
        {"panicunsafeslicelen", funcTag, 9},
        {"panicunsafeslicenilptr", funcTag, 9},
-       {"unsafestringcheckptr", funcTag, 125},
+       {"unsafestringcheckptr", funcTag, 129},
        {"panicunsafestringlen", funcTag, 9},
        {"panicunsafestringnilptr", funcTag, 9},
-       {"memmove", funcTag, 126},
-       {"memclrNoHeapPointers", funcTag, 127},
-       {"memclrHasPointers", funcTag, 127},
-       {"memequal", funcTag, 128},
-       {"memequal0", funcTag, 129},
-       {"memequal8", funcTag, 129},
-       {"memequal16", funcTag, 129},
-       {"memequal32", funcTag, 129},
-       {"memequal64", funcTag, 129},
-       {"memequal128", funcTag, 129},
-       {"f32equal", funcTag, 130},
-       {"f64equal", funcTag, 130},
-       {"c64equal", funcTag, 130},
-       {"c128equal", funcTag, 130},
-       {"strequal", funcTag, 130},
-       {"interequal", funcTag, 130},
-       {"nilinterequal", funcTag, 130},
-       {"memhash", funcTag, 131},
-       {"memhash0", funcTag, 132},
-       {"memhash8", funcTag, 132},
-       {"memhash16", funcTag, 132},
-       {"memhash32", funcTag, 132},
-       {"memhash64", funcTag, 132},
-       {"memhash128", funcTag, 132},
-       {"f32hash", funcTag, 133},
-       {"f64hash", funcTag, 133},
-       {"c64hash", funcTag, 133},
-       {"c128hash", funcTag, 133},
-       {"strhash", funcTag, 133},
-       {"interhash", funcTag, 133},
-       {"nilinterhash", funcTag, 133},
-       {"int64div", funcTag, 134},
-       {"uint64div", funcTag, 135},
-       {"int64mod", funcTag, 134},
-       {"uint64mod", funcTag, 135},
-       {"float64toint64", funcTag, 136},
-       {"float64touint64", funcTag, 137},
-       {"float64touint32", funcTag, 138},
-       {"int64tofloat64", funcTag, 139},
-       {"int64tofloat32", funcTag, 141},
-       {"uint64tofloat64", funcTag, 142},
-       {"uint64tofloat32", funcTag, 143},
-       {"uint32tofloat64", funcTag, 144},
-       {"complex128div", funcTag, 145},
-       {"racefuncenter", funcTag, 29},
+       {"memmove", funcTag, 130},
+       {"memclrNoHeapPointers", funcTag, 131},
+       {"memclrHasPointers", funcTag, 131},
+       {"memequal", funcTag, 132},
+       {"memequal0", funcTag, 133},
+       {"memequal8", funcTag, 133},
+       {"memequal16", funcTag, 133},
+       {"memequal32", funcTag, 133},
+       {"memequal64", funcTag, 133},
+       {"memequal128", funcTag, 133},
+       {"f32equal", funcTag, 134},
+       {"f64equal", funcTag, 134},
+       {"c64equal", funcTag, 134},
+       {"c128equal", funcTag, 134},
+       {"strequal", funcTag, 134},
+       {"interequal", funcTag, 134},
+       {"nilinterequal", funcTag, 134},
+       {"memhash", funcTag, 135},
+       {"memhash0", funcTag, 136},
+       {"memhash8", funcTag, 136},
+       {"memhash16", funcTag, 136},
+       {"memhash32", funcTag, 136},
+       {"memhash64", funcTag, 136},
+       {"memhash128", funcTag, 136},
+       {"f32hash", funcTag, 137},
+       {"f64hash", funcTag, 137},
+       {"c64hash", funcTag, 137},
+       {"c128hash", funcTag, 137},
+       {"strhash", funcTag, 137},
+       {"interhash", funcTag, 137},
+       {"nilinterhash", funcTag, 137},
+       {"int64div", funcTag, 138},
+       {"uint64div", funcTag, 139},
+       {"int64mod", funcTag, 138},
+       {"uint64mod", funcTag, 139},
+       {"float64toint64", funcTag, 140},
+       {"float64touint64", funcTag, 141},
+       {"float64touint32", funcTag, 142},
+       {"int64tofloat64", funcTag, 143},
+       {"int64tofloat32", funcTag, 144},
+       {"uint64tofloat64", funcTag, 145},
+       {"uint64tofloat32", funcTag, 146},
+       {"uint32tofloat64", funcTag, 147},
+       {"complex128div", funcTag, 148},
+       {"racefuncenter", funcTag, 33},
        {"racefuncexit", funcTag, 9},
-       {"raceread", funcTag, 29},
-       {"racewrite", funcTag, 29},
-       {"racereadrange", funcTag, 146},
-       {"racewriterange", funcTag, 146},
-       {"msanread", funcTag, 146},
-       {"msanwrite", funcTag, 146},
-       {"msanmove", funcTag, 147},
-       {"asanread", funcTag, 146},
-       {"asanwrite", funcTag, 146},
-       {"checkptrAlignment", funcTag, 148},
-       {"checkptrArithmetic", funcTag, 150},
-       {"libfuzzerTraceCmp1", funcTag, 151},
-       {"libfuzzerTraceCmp2", funcTag, 152},
-       {"libfuzzerTraceCmp4", funcTag, 153},
-       {"libfuzzerTraceCmp8", funcTag, 154},
-       {"libfuzzerTraceConstCmp1", funcTag, 151},
-       {"libfuzzerTraceConstCmp2", funcTag, 152},
-       {"libfuzzerTraceConstCmp4", funcTag, 153},
-       {"libfuzzerTraceConstCmp8", funcTag, 154},
-       {"libfuzzerHookStrCmp", funcTag, 155},
-       {"libfuzzerHookEqualFold", funcTag, 155},
-       {"addCovMeta", funcTag, 157},
+       {"raceread", funcTag, 33},
+       {"racewrite", funcTag, 33},
+       {"racereadrange", funcTag, 149},
+       {"racewriterange", funcTag, 149},
+       {"msanread", funcTag, 149},
+       {"msanwrite", funcTag, 149},
+       {"msanmove", funcTag, 150},
+       {"asanread", funcTag, 149},
+       {"asanwrite", funcTag, 149},
+       {"checkptrAlignment", funcTag, 151},
+       {"checkptrArithmetic", funcTag, 153},
+       {"libfuzzerTraceCmp1", funcTag, 154},
+       {"libfuzzerTraceCmp2", funcTag, 155},
+       {"libfuzzerTraceCmp4", funcTag, 156},
+       {"libfuzzerTraceCmp8", funcTag, 157},
+       {"libfuzzerTraceConstCmp1", funcTag, 154},
+       {"libfuzzerTraceConstCmp2", funcTag, 155},
+       {"libfuzzerTraceConstCmp4", funcTag, 156},
+       {"libfuzzerTraceConstCmp8", funcTag, 157},
+       {"libfuzzerHookStrCmp", funcTag, 158},
+       {"libfuzzerHookEqualFold", funcTag, 158},
+       {"addCovMeta", funcTag, 160},
 +      {"x86HasAVX", varTag, 6},
 +      {"x86HasFMA", varTag, 6},
        {"x86HasPOPCNT", varTag, 6},
        {"x86HasSSE41", varTag, 6},
 -      {"x86HasFMA", varTag, 6},
        {"armHasVFPv4", varTag, 6},
        {"arm64HasATOMICS", varTag, 6},
        {"loong64HasLAMCAS", varTag, 6},
Simple merge
index 93abfd394afea28f1235be465729fc5ebeebad2d,48a9f3e75bb7b5b5bc028f0e8524024264d72f7f..8db0b5e92eb2d8f5fd160628d9665939353f35f8
@@@ -71,9 -69,8 +70,10 @@@ var depsRules = 
  
        internal/goarch < internal/abi;
        internal/byteorder, internal/cpu, internal/goarch < internal/chacha8rand;
+       internal/goarch, math/bits < internal/strconv;
  
-       internal/cpu, internal/ftoa, internal/itoa < simd;
++      internal/cpu, internal/strconv < simd;
 +
        # RUNTIME is the core runtime group of packages, all of them very light-weight.
        internal/abi,
        internal/chacha8rand,
@@@ -83,8 -80,8 +83,9 @@@
        internal/godebugs,
        internal/goexperiment,
        internal/goos,
 +      internal/itoa,
        internal/profilerecord,
+       internal/strconv,
        internal/trace/tracev2,
        math/bits,
        structs
Simple merge
index b05150373b27500ffb7f749974df81093383cb5f,31195f94c08c86a7a7e74222834e7c16431d866e..9dcac008813279accc2a2e2552d3863af0c1e332
@@@ -79,14 -79,16 +79,15 @@@ func ParseGOEXPERIMENT(goos, goarch, go
        dwarf5Supported := (goos != "darwin" && goos != "ios" && goos != "aix")
  
        baseline := goexperiment.Flags{
-               RegabiWrappers:       regabiSupported,
-               RegabiArgs:           regabiSupported,
-               SIMD:                 goarch == "amd64", // TODO remove this (default to false) when dev.simd is merged
-               Dwarf5:               dwarf5Supported,
-               RandomizedHeapBase64: true,
+               RegabiWrappers:        regabiSupported,
+               RegabiArgs:            regabiSupported,
++              SIMD:                  goarch == "amd64", // TODO remove this (default to false) when dev.simd is merged
+               Dwarf5:                dwarf5Supported,
+               RandomizedHeapBase64:  true,
+               RuntimeFree:           true,
+               SizeSpecializedMalloc: true,
+               GreenTeaGC:            true,
        }
--
--      // Start with the statically enabled set of experiments.
        flags := &ExperimentFlags{
                Flags:    baseline,
                baseline: baseline,
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 35584da0218d4b56d5f33936ca79d588a0f41f4f,0000000000000000000000000000000000000000..a692653aa0ddf5bbc48b51c51c73b591c196c6ee
mode 100644,000000..100644
--- /dev/null
@@@ -1,49 -1,0 +1,48 @@@
-       "internal/ftoa"
-       "internal/itoa"
 +// Copyright 2025 The Go Authors. All rights reserved.
 +// Use of this source code is governed by a BSD-style
 +// license that can be found in the LICENSE file.
 +
 +//go:build goexperiment.simd && amd64
 +
 +package simd
 +
 +import (
-                       s += itoa.Itoa(int(e))
++      "internal/strconv"
 +)
 +
 +type number interface {
 +      ~int | ~int8 | ~int16 | ~int32 | ~int64 | ~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64 | ~uintptr | ~float32 | ~float64
 +}
 +
 +func sliceToString[T number](x []T) string {
 +      s := ""
 +      pfx := "{"
 +      for _, y := range x {
 +              s += pfx
 +              pfx = ","
 +              switch e := any(y).(type) {
 +              case int8:
-                       s += itoa.Itoa(int(e))
++                      s += strconv.Itoa(int(e))
 +              case int16:
-                       s += itoa.Itoa(int(e))
++                      s += strconv.Itoa(int(e))
 +              case int32:
-                       s += itoa.Itoa(int(e))
++                      s += strconv.Itoa(int(e))
 +              case int64:
-                       s += itoa.Uitoa(uint(e))
++                      s += strconv.Itoa(int(e))
 +              case uint8:
-                       s += itoa.Uitoa(uint(e))
++                      s += strconv.FormatUint(uint64(e), 10)
 +              case uint16:
-                       s += itoa.Uitoa(uint(e))
++                      s += strconv.FormatUint(uint64(e), 10)
 +              case uint32:
-                       s += itoa.Uitoa(uint(e))
++                      s += strconv.FormatUint(uint64(e), 10)
 +              case uint64:
-                       s += ftoa.FormatFloat(float64(e), 'g', -1, 32)
++                      s += strconv.FormatUint(uint64(e), 10)
 +              case float32:
-                       s += ftoa.FormatFloat(e, 'g', -1, 64)
++                      s += strconv.FormatFloat(float64(e), 'g', -1, 32)
 +              case float64:
++                      s += strconv.FormatFloat(e, 'g', -1, 64)
 +              }
 +      }
 +      s += "}"
 +      return s
 +}