From 8d72096bbf140295d47a06fc59e75d1feafce60e Mon Sep 17 00:00:00 2001 From: Andrew Date: Thu, 21 Nov 2019 14:30:17 -0500 Subject: [PATCH] [release-branch.go1.12] cmd/vendor: remove _test.go and testdata files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Binary files included in testdata directories can cause Apple’s notarization service to reject us since they don’t abide by their strict requirements. To emulate go mod vendor, remove all _test.go and testdata files from the vendor directory and update the instructions. Updates #34986 Fixes #35747 Change-Id: I5cde905fc78838d2e3b1519dab4aeee13d8d5356 Reviewed-on: https://go-review.googlesource.com/c/go/+/208227 Run-TryBot: Andrew Bonventre TryBot-Result: Gobot Gobot Reviewed-by: Alexander Rakoczy --- misc/nacl/testzip.proto | 30 +- src/cmd/vendor/README | 8 +- .../pprof/internal/binutils/binutils_test.go | 392 - .../pprof/internal/binutils/disasm_test.go | 152 - .../internal/binutils/testdata/build_mac.sh | 31 - .../internal/binutils/testdata/exe_linux_64 | Bin 9503 -> 0 bytes .../internal/binutils/testdata/exe_mac_64 | Bin 8648 -> 0 bytes .../exe_mac_64.dSYM/Contents/Info.plist | 20 - .../Contents/Resources/DWARF/exe_mac_64 | Bin 8840 -> 0 bytes .../binutils/testdata/fake-llvm-symbolizer | 34 - .../internal/binutils/testdata/lib_mac_64 | Bin 4496 -> 0 bytes .../lib_mac_64.dSYM/Contents/Info.plist | 20 - .../Contents/Resources/DWARF/lib_mac_64 | Bin 8934 -> 0 bytes .../internal/binutils/testdata/malformed_elf | 1 - .../binutils/testdata/malformed_macho | 1 - .../pprof/internal/driver/driver_test.go | 1606 ---- .../pprof/internal/driver/fetch_test.go | 758 -- .../pprof/internal/driver/interactive_test.go | 316 - .../driver/testdata/cppbench.contention | 24 - .../internal/driver/testdata/cppbench.cpu | Bin 24405 -> 0 bytes .../driver/testdata/cppbench.small.contention | 19 - .../internal/driver/testdata/file1000.src | 17 - .../internal/driver/testdata/file2000.src | 17 - .../internal/driver/testdata/file3000.src | 17 - .../internal/driver/testdata/go.crc32.cpu | Bin 5032 -> 0 bytes .../driver/testdata/go.nomappings.crash | Bin 232 -> 0 bytes .../testdata/pprof.contention.cum.files.dot | 10 - ...contention.flat.addresses.dot.focus.ignore | 9 - .../testdata/pprof.cpu.call_tree.callgrind | 99 - .../driver/testdata/pprof.cpu.callgrind | 88 - .../driver/testdata/pprof.cpu.comments | 1 - .../pprof.cpu.cum.lines.text.focus.hide | 8 - .../testdata/pprof.cpu.cum.lines.text.hide | 7 - .../testdata/pprof.cpu.cum.lines.text.show | 7 - .../pprof.cpu.cum.lines.topproto.hide | 5 - .../pprof.cpu.cum.lines.tree.show_from | 16 - .../testdata/pprof.cpu.flat.addresses.disasm | 14 - .../pprof.cpu.flat.addresses.noinlines.text | 7 - .../testdata/pprof.cpu.flat.addresses.weblist | 106 - ...prof.cpu.flat.filefunctions.noinlines.text | 5 - .../pprof.cpu.flat.functions.call_tree.dot | 21 - .../testdata/pprof.cpu.flat.functions.dot | 20 - .../pprof.cpu.flat.functions.noinlines.text | 5 - .../testdata/pprof.cpu.flat.functions.text | 8 - .../driver/testdata/pprof.cpu.lines.topproto | 3 - .../internal/driver/testdata/pprof.cpu.peek | 13 - .../internal/driver/testdata/pprof.cpu.tags | 13 - .../testdata/pprof.cpu.tags.focus.ignore | 6 - .../internal/driver/testdata/pprof.cpu.traces | 32 - .../pprof.cpusmall.flat.addresses.tree | 17 - .../driver/testdata/pprof.heap.callgrind | 88 - .../driver/testdata/pprof.heap.comments | 2 - .../testdata/pprof.heap.cum.lines.tree.focus | 21 - ...f.heap.cum.relative_percentages.tree.focus | 21 - .../pprof.heap.flat.files.seconds.text | 2 - .../testdata/pprof.heap.flat.files.text | 5 - .../testdata/pprof.heap.flat.files.text.focus | 8 - .../pprof.heap.flat.inuse_objects.text | 8 - .../pprof.heap.flat.inuse_space.dot.focus | 13 - ...rof.heap.flat.inuse_space.dot.focus.ignore | 16 - .../testdata/pprof.heap.flat.lines.dot.focus | 21 - .../internal/driver/testdata/pprof.heap.tags | 6 - .../driver/testdata/pprof.heap.tags.unit | 6 - .../pprof.heap_alloc.flat.alloc_objects.text | 8 - .../pprof.heap_alloc.flat.alloc_space.dot | 14 - ...prof.heap_alloc.flat.alloc_space.dot.focus | 18 - ...pprof.heap_alloc.flat.alloc_space.dot.hide | 11 - .../testdata/pprof.heap_request.tags.focus | 8 - .../driver/testdata/pprof.heap_sizetags.dot | 30 - .../driver/testdata/pprof.heap_tags.traces | 32 - .../driver/testdata/pprof.longNameFuncs.dot | 9 - .../driver/testdata/pprof.longNameFuncs.text | 5 - ...prof.unknown.flat.functions.call_tree.text | 8 - .../pprof/internal/driver/webui_test.go | 285 - .../pprof/internal/elfexec/elfexec_test.go | 102 - .../pprof/internal/graph/dotgraph_test.go | 335 - .../google/pprof/internal/graph/graph_test.go | 471 -- .../internal/graph/testdata/compose1.dot | 7 - .../internal/graph/testdata/compose2.dot | 7 - .../internal/graph/testdata/compose3.dot | 11 - .../internal/graph/testdata/compose4.dot | 4 - .../internal/graph/testdata/compose5.dot | 11 - .../internal/graph/testdata/compose6.dot | 7 - .../internal/measurement/measurement_test.go | 47 - .../pprof/internal/report/report_test.go | 414 - .../pprof/internal/report/source_test.go | 185 - .../pprof/internal/report/testdata/README.md | 10 - .../pprof/internal/report/testdata/sample.bin | Bin 2342380 -> 0 bytes .../pprof/internal/report/testdata/sample.cpu | Bin 1836 -> 0 bytes .../internal/report/testdata/sample/sample.go | 41 - .../pprof/internal/report/testdata/source.dot | 17 - .../pprof/internal/report/testdata/source.rpt | 49 - .../pprof/internal/report/testdata/source1 | 19 - .../pprof/internal/report/testdata/source2 | 19 - .../internal/symbolizer/symbolizer_test.go | 300 - .../pprof/internal/symbolz/symbolz_test.go | 169 - .../google/pprof/profile/filter_test.go | 599 -- .../google/pprof/profile/index_test.go | 114 - .../pprof/profile/legacy_profile_test.go | 321 - .../google/pprof/profile/merge_test.go | 167 - .../google/pprof/profile/profile_test.go | 1381 ---- .../google/pprof/profile/proto_test.go | 171 - .../google/pprof/profile/prune_test.go | 230 - .../profile/testdata/cppbench.contention | 24 - .../testdata/cppbench.contention.string | 65 - .../pprof/profile/testdata/cppbench.cpu | Bin 23631 -> 0 bytes .../profile/testdata/cppbench.cpu.string | 179 - .../pprof/profile/testdata/cppbench.growth | 99 - .../profile/testdata/cppbench.growth.string | 248 - .../pprof/profile/testdata/cppbench.heap | 47 - .../profile/testdata/cppbench.heap.string | 237 - .../pprof/profile/testdata/cppbench.thread | 29 - .../profile/testdata/cppbench.thread.all | 33 - .../testdata/cppbench.thread.all.string | 28 - .../profile/testdata/cppbench.thread.none | 27 - .../testdata/cppbench.thread.none.string | 50 - .../profile/testdata/cppbench.thread.string | 33 - .../pprof/profile/testdata/go.crc32.cpu | Bin 5032 -> 0 bytes .../profile/testdata/go.crc32.cpu.string | 87 - .../pprof/profile/testdata/go.godoc.thread | 8 - .../profile/testdata/go.godoc.thread.string | 37 - .../google/pprof/profile/testdata/gobench.cpu | Bin 8248 -> 0 bytes .../pprof/profile/testdata/gobench.cpu.string | 415 - .../pprof/profile/testdata/gobench.heap | 16 - .../profile/testdata/gobench.heap.string | 137 - .../pprof/profile/testdata/java.contention | 43 - .../profile/testdata/java.contention.string | 43 - .../google/pprof/profile/testdata/java.cpu | Bin 3537 -> 0 bytes .../pprof/profile/testdata/java.cpu.string | 78 - .../google/pprof/profile/testdata/java.heap | 133 - .../pprof/profile/testdata/java.heap.string | 139 - .../ianlancetaylor/demangle/ast_test.go | 42 - .../ianlancetaylor/demangle/demangle_test.go | 420 - .../ianlancetaylor/demangle/expected_test.go | 183 - .../demangle/testdata/demangle-expected | 4594 ----------- .../x/arch/arm/armasm/decode_test.go | 69 - .../golang.org/x/arch/arm/armasm/ext_test.go | 615 -- .../x/arch/arm/armasm/objdump_test.go | 268 - .../x/arch/arm/armasm/objdumpext_test.go | 259 - .../x/arch/arm/armasm/testdata/Makefile | 5 - .../x/arch/arm/armasm/testdata/decode.txt | 1600 ---- .../x/arch/arm64/arm64asm/decode_test.go | 88 - .../x/arch/arm64/arm64asm/ext_test.go | 604 -- .../x/arch/arm64/arm64asm/objdump_test.go | 162 - .../x/arch/arm64/arm64asm/objdumpext_test.go | 299 - .../x/arch/arm64/arm64asm/testdata/Makefile | 9 - .../arch/arm64/arm64asm/testdata/gnucases.txt | 4651 ----------- .../arm64/arm64asm/testdata/plan9cases.txt | 4564 ----------- .../x/arch/ppc64/ppc64asm/decode_test.go | 64 - .../x/arch/ppc64/ppc64asm/ext_test.go | 536 -- .../x/arch/ppc64/ppc64asm/field_test.go | 60 - .../x/arch/ppc64/ppc64asm/objdump_test.go | 133 - .../x/arch/ppc64/ppc64asm/objdumpext_test.go | 255 - .../x/arch/ppc64/ppc64asm/testdata/decode.txt | 56 - .../x/arch/x86/x86asm/decode_test.go | 71 - .../golang.org/x/arch/x86/x86asm/ext_test.go | 811 -- .../x/arch/x86/x86asm/format_test.go | 68 - .../golang.org/x/arch/x86/x86asm/inst_test.go | 20 - .../x/arch/x86/x86asm/objdump_test.go | 385 - .../x/arch/x86/x86asm/objdumpext_test.go | 313 - .../x/arch/x86/x86asm/plan9ext_test.go | 119 - .../x/arch/x86/x86asm/plan9x_test.go | 54 - .../x/arch/x86/x86asm/testdata/Makefile | 12 - .../x/arch/x86/x86asm/testdata/decode.txt | 6771 ----------------- .../x/arch/x86/x86asm/testdata/libmach8db.c | 2075 ----- .../golang.org/x/arch/x86/x86asm/xed_test.go | 211 - .../x/arch/x86/x86asm/xedext_test.go | 205 - .../x/crypto/ssh/terminal/terminal_test.go | 358 - .../golang.org/x/sys/unix/creds_test.go | 134 - .../golang.org/x/sys/unix/darwin_test.go | 210 - .../golang.org/x/sys/unix/dev_linux_test.go | 56 - .../x/sys/unix/example_exec_test.go | 19 - .../x/sys/unix/example_flock_test.go | 25 - .../golang.org/x/sys/unix/export_test.go | 9 - .../golang.org/x/sys/unix/mmap_unix_test.go | 41 - .../golang.org/x/sys/unix/openbsd_test.go | 113 - .../golang.org/x/sys/unix/sendfile_test.go | 98 - .../golang.org/x/sys/unix/syscall_aix_test.go | 162 - .../golang.org/x/sys/unix/syscall_bsd_test.go | 89 - .../x/sys/unix/syscall_darwin_test.go | 63 - .../x/sys/unix/syscall_freebsd_test.go | 312 - .../x/sys/unix/syscall_linux_test.go | 484 -- .../x/sys/unix/syscall_netbsd_test.go | 51 - .../x/sys/unix/syscall_openbsd_test.go | 49 - .../x/sys/unix/syscall_solaris_test.go | 55 - .../golang.org/x/sys/unix/syscall_test.go | 60 - .../x/sys/unix/syscall_unix_test.go | 677 -- .../golang.org/x/sys/unix/timestruct_test.go | 54 - .../golang.org/x/sys/unix/xattr_test.go | 207 - .../x/sys/windows/registry/export_test.go | 11 - .../x/sys/windows/registry/registry_test.go | 756 -- .../x/sys/windows/svc/eventlog/log_test.go | 51 - .../x/sys/windows/svc/mgr/mgr_test.go | 282 - .../golang.org/x/sys/windows/svc/svc_test.go | 131 - .../golang.org/x/sys/windows/syscall_test.go | 53 - .../x/sys/windows/syscall_windows_test.go | 92 - 196 files changed, 17 insertions(+), 47407 deletions(-) delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/binutils/binutils_test.go delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/binutils/disasm_test.go delete mode 100755 src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/build_mac.sh delete mode 100755 src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/exe_linux_64 delete mode 100755 src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/exe_mac_64 delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/exe_mac_64.dSYM/Contents/Info.plist delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/exe_mac_64.dSYM/Contents/Resources/DWARF/exe_mac_64 delete mode 100755 src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/fake-llvm-symbolizer delete mode 100755 src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/lib_mac_64 delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/lib_mac_64.dSYM/Contents/Info.plist delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/lib_mac_64.dSYM/Contents/Resources/DWARF/lib_mac_64 delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/malformed_elf delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/malformed_macho delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/driver_test.go delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/fetch_test.go delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/interactive_test.go delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/cppbench.contention delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/cppbench.cpu delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/cppbench.small.contention delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/file1000.src delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/file2000.src delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/file3000.src delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/go.crc32.cpu delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/go.nomappings.crash delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.contention.cum.files.dot delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.contention.flat.addresses.dot.focus.ignore delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.call_tree.callgrind delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.callgrind delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.comments delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.cum.lines.text.focus.hide delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.cum.lines.text.hide delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.cum.lines.text.show delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.cum.lines.topproto.hide delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.cum.lines.tree.show_from delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.addresses.disasm delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.addresses.noinlines.text delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.addresses.weblist delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.filefunctions.noinlines.text delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.functions.call_tree.dot delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.functions.dot delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.functions.noinlines.text delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.functions.text delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.lines.topproto delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.peek delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.tags delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.tags.focus.ignore delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.traces delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpusmall.flat.addresses.tree delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.callgrind delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.comments delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.cum.lines.tree.focus delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.cum.relative_percentages.tree.focus delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.flat.files.seconds.text delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.flat.files.text delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.flat.files.text.focus delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.flat.inuse_objects.text delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.flat.inuse_space.dot.focus delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.flat.inuse_space.dot.focus.ignore delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.flat.lines.dot.focus delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.tags delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.tags.unit delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap_alloc.flat.alloc_objects.text delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap_alloc.flat.alloc_space.dot delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap_alloc.flat.alloc_space.dot.focus delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap_alloc.flat.alloc_space.dot.hide delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap_request.tags.focus delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap_sizetags.dot delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap_tags.traces delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.longNameFuncs.dot delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.longNameFuncs.text delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.unknown.flat.functions.call_tree.text delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/driver/webui_test.go delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/elfexec/elfexec_test.go delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/graph/dotgraph_test.go delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/graph/graph_test.go delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/graph/testdata/compose1.dot delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/graph/testdata/compose2.dot delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/graph/testdata/compose3.dot delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/graph/testdata/compose4.dot delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/graph/testdata/compose5.dot delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/graph/testdata/compose6.dot delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/measurement/measurement_test.go delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/report/report_test.go delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/report/source_test.go delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/report/testdata/README.md delete mode 100755 src/cmd/vendor/github.com/google/pprof/internal/report/testdata/sample.bin delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/report/testdata/sample.cpu delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/report/testdata/sample/sample.go delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/report/testdata/source.dot delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/report/testdata/source.rpt delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/report/testdata/source1 delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/report/testdata/source2 delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/symbolizer/symbolizer_test.go delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/symbolz/symbolz_test.go delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/filter_test.go delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/index_test.go delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/legacy_profile_test.go delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/merge_test.go delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/profile_test.go delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/proto_test.go delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/prune_test.go delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/testdata/cppbench.contention delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/testdata/cppbench.contention.string delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/testdata/cppbench.cpu delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/testdata/cppbench.cpu.string delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/testdata/cppbench.growth delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/testdata/cppbench.growth.string delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/testdata/cppbench.heap delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/testdata/cppbench.heap.string delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/testdata/cppbench.thread delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/testdata/cppbench.thread.all delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/testdata/cppbench.thread.all.string delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/testdata/cppbench.thread.none delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/testdata/cppbench.thread.none.string delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/testdata/cppbench.thread.string delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/testdata/go.crc32.cpu delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/testdata/go.crc32.cpu.string delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/testdata/go.godoc.thread delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/testdata/go.godoc.thread.string delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/testdata/gobench.cpu delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/testdata/gobench.cpu.string delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/testdata/gobench.heap delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/testdata/gobench.heap.string delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/testdata/java.contention delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/testdata/java.contention.string delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/testdata/java.cpu delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/testdata/java.cpu.string delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/testdata/java.heap delete mode 100644 src/cmd/vendor/github.com/google/pprof/profile/testdata/java.heap.string delete mode 100644 src/cmd/vendor/github.com/ianlancetaylor/demangle/ast_test.go delete mode 100644 src/cmd/vendor/github.com/ianlancetaylor/demangle/demangle_test.go delete mode 100644 src/cmd/vendor/github.com/ianlancetaylor/demangle/expected_test.go delete mode 100644 src/cmd/vendor/github.com/ianlancetaylor/demangle/testdata/demangle-expected delete mode 100644 src/cmd/vendor/golang.org/x/arch/arm/armasm/decode_test.go delete mode 100644 src/cmd/vendor/golang.org/x/arch/arm/armasm/ext_test.go delete mode 100644 src/cmd/vendor/golang.org/x/arch/arm/armasm/objdump_test.go delete mode 100644 src/cmd/vendor/golang.org/x/arch/arm/armasm/objdumpext_test.go delete mode 100644 src/cmd/vendor/golang.org/x/arch/arm/armasm/testdata/Makefile delete mode 100644 src/cmd/vendor/golang.org/x/arch/arm/armasm/testdata/decode.txt delete mode 100644 src/cmd/vendor/golang.org/x/arch/arm64/arm64asm/decode_test.go delete mode 100644 src/cmd/vendor/golang.org/x/arch/arm64/arm64asm/ext_test.go delete mode 100644 src/cmd/vendor/golang.org/x/arch/arm64/arm64asm/objdump_test.go delete mode 100644 src/cmd/vendor/golang.org/x/arch/arm64/arm64asm/objdumpext_test.go delete mode 100644 src/cmd/vendor/golang.org/x/arch/arm64/arm64asm/testdata/Makefile delete mode 100644 src/cmd/vendor/golang.org/x/arch/arm64/arm64asm/testdata/gnucases.txt delete mode 100644 src/cmd/vendor/golang.org/x/arch/arm64/arm64asm/testdata/plan9cases.txt delete mode 100644 src/cmd/vendor/golang.org/x/arch/ppc64/ppc64asm/decode_test.go delete mode 100644 src/cmd/vendor/golang.org/x/arch/ppc64/ppc64asm/ext_test.go delete mode 100644 src/cmd/vendor/golang.org/x/arch/ppc64/ppc64asm/field_test.go delete mode 100644 src/cmd/vendor/golang.org/x/arch/ppc64/ppc64asm/objdump_test.go delete mode 100644 src/cmd/vendor/golang.org/x/arch/ppc64/ppc64asm/objdumpext_test.go delete mode 100644 src/cmd/vendor/golang.org/x/arch/ppc64/ppc64asm/testdata/decode.txt delete mode 100644 src/cmd/vendor/golang.org/x/arch/x86/x86asm/decode_test.go delete mode 100644 src/cmd/vendor/golang.org/x/arch/x86/x86asm/ext_test.go delete mode 100644 src/cmd/vendor/golang.org/x/arch/x86/x86asm/format_test.go delete mode 100644 src/cmd/vendor/golang.org/x/arch/x86/x86asm/inst_test.go delete mode 100644 src/cmd/vendor/golang.org/x/arch/x86/x86asm/objdump_test.go delete mode 100644 src/cmd/vendor/golang.org/x/arch/x86/x86asm/objdumpext_test.go delete mode 100644 src/cmd/vendor/golang.org/x/arch/x86/x86asm/plan9ext_test.go delete mode 100644 src/cmd/vendor/golang.org/x/arch/x86/x86asm/plan9x_test.go delete mode 100644 src/cmd/vendor/golang.org/x/arch/x86/x86asm/testdata/Makefile delete mode 100644 src/cmd/vendor/golang.org/x/arch/x86/x86asm/testdata/decode.txt delete mode 100644 src/cmd/vendor/golang.org/x/arch/x86/x86asm/testdata/libmach8db.c delete mode 100644 src/cmd/vendor/golang.org/x/arch/x86/x86asm/xed_test.go delete mode 100644 src/cmd/vendor/golang.org/x/arch/x86/x86asm/xedext_test.go delete mode 100644 src/cmd/vendor/golang.org/x/crypto/ssh/terminal/terminal_test.go delete mode 100644 src/cmd/vendor/golang.org/x/sys/unix/creds_test.go delete mode 100644 src/cmd/vendor/golang.org/x/sys/unix/darwin_test.go delete mode 100644 src/cmd/vendor/golang.org/x/sys/unix/dev_linux_test.go delete mode 100644 src/cmd/vendor/golang.org/x/sys/unix/example_exec_test.go delete mode 100644 src/cmd/vendor/golang.org/x/sys/unix/example_flock_test.go delete mode 100644 src/cmd/vendor/golang.org/x/sys/unix/export_test.go delete mode 100644 src/cmd/vendor/golang.org/x/sys/unix/mmap_unix_test.go delete mode 100644 src/cmd/vendor/golang.org/x/sys/unix/openbsd_test.go delete mode 100644 src/cmd/vendor/golang.org/x/sys/unix/sendfile_test.go delete mode 100644 src/cmd/vendor/golang.org/x/sys/unix/syscall_aix_test.go delete mode 100644 src/cmd/vendor/golang.org/x/sys/unix/syscall_bsd_test.go delete mode 100644 src/cmd/vendor/golang.org/x/sys/unix/syscall_darwin_test.go delete mode 100644 src/cmd/vendor/golang.org/x/sys/unix/syscall_freebsd_test.go delete mode 100644 src/cmd/vendor/golang.org/x/sys/unix/syscall_linux_test.go delete mode 100644 src/cmd/vendor/golang.org/x/sys/unix/syscall_netbsd_test.go delete mode 100644 src/cmd/vendor/golang.org/x/sys/unix/syscall_openbsd_test.go delete mode 100644 src/cmd/vendor/golang.org/x/sys/unix/syscall_solaris_test.go delete mode 100644 src/cmd/vendor/golang.org/x/sys/unix/syscall_test.go delete mode 100644 src/cmd/vendor/golang.org/x/sys/unix/syscall_unix_test.go delete mode 100644 src/cmd/vendor/golang.org/x/sys/unix/timestruct_test.go delete mode 100644 src/cmd/vendor/golang.org/x/sys/unix/xattr_test.go delete mode 100644 src/cmd/vendor/golang.org/x/sys/windows/registry/export_test.go delete mode 100644 src/cmd/vendor/golang.org/x/sys/windows/registry/registry_test.go delete mode 100644 src/cmd/vendor/golang.org/x/sys/windows/svc/eventlog/log_test.go delete mode 100644 src/cmd/vendor/golang.org/x/sys/windows/svc/mgr/mgr_test.go delete mode 100644 src/cmd/vendor/golang.org/x/sys/windows/svc/svc_test.go delete mode 100644 src/cmd/vendor/golang.org/x/sys/windows/syscall_test.go delete mode 100644 src/cmd/vendor/golang.org/x/sys/windows/syscall_windows_test.go diff --git a/misc/nacl/testzip.proto b/misc/nacl/testzip.proto index d05219364dcb7d..19b8ceae69a3ff 100644 --- a/misc/nacl/testzip.proto +++ b/misc/nacl/testzip.proto @@ -48,43 +48,33 @@ go src=.. pprof internal binutils - testdata - + + + driver - testdata - + + + graph - testdata - + + + report - testdata - + - profile - testdata + + profile + + ianlancetaylor demangle - testdata - + + + golang.org x arch arm armasm - testdata - + + + arm64 arm64asm - testdata - + + + x86 x86asm - testdata - + + + ppc64 ppc64asm - testdata - + + + archive tar testdata diff --git a/src/cmd/vendor/README b/src/cmd/vendor/README index 7eb97a1b9b16f6..809f015949c638 100644 --- a/src/cmd/vendor/README +++ b/src/cmd/vendor/README @@ -22,4 +22,10 @@ commit by accident. The vendored copy of golang.org/x/tools is maintained by running the update-xtools.sh script in this directory, -not by govendor. \ No newline at end of file +not by govendor. + +Please ensure that you remove all *_test.go and testdata +files after updating (golang.org/issue/34986). + + $ cd $GOROOT/src/cmd + $ find vendor | grep -E '_test.go|testdata' | xargs rm -rf diff --git a/src/cmd/vendor/github.com/google/pprof/internal/binutils/binutils_test.go b/src/cmd/vendor/github.com/google/pprof/internal/binutils/binutils_test.go deleted file mode 100644 index 17d4225a87fd1b..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/binutils/binutils_test.go +++ /dev/null @@ -1,392 +0,0 @@ -// Copyright 2014 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package binutils - -import ( - "bytes" - "fmt" - "math" - "path/filepath" - "reflect" - "regexp" - "runtime" - "strings" - "testing" - - "github.com/google/pprof/internal/plugin" -) - -var testAddrMap = map[int]string{ - 1000: "_Z3fooid.clone2", - 2000: "_ZNSaIiEC1Ev.clone18", - 3000: "_ZNSt6vectorIS_IS_IiSaIiEESaIS1_EESaIS3_EEixEm", -} - -func functionName(level int) (name string) { - if name = testAddrMap[level]; name != "" { - return name - } - return fmt.Sprintf("fun%d", level) -} - -func TestAddr2Liner(t *testing.T) { - const offset = 0x500 - - a := addr2Liner{rw: &mockAddr2liner{}, base: offset} - for i := 1; i < 8; i++ { - addr := i*0x1000 + offset - s, err := a.addrInfo(uint64(addr)) - if err != nil { - t.Fatalf("addrInfo(%#x): %v", addr, err) - } - if len(s) != i { - t.Fatalf("addrInfo(%#x): got len==%d, want %d", addr, len(s), i) - } - for l, f := range s { - level := (len(s) - l) * 1000 - want := plugin.Frame{Func: functionName(level), File: fmt.Sprintf("file%d", level), Line: level} - - if f != want { - t.Errorf("AddrInfo(%#x)[%d]: = %+v, want %+v", addr, l, f, want) - } - } - } - s, err := a.addrInfo(0xFFFF) - if err != nil { - t.Fatalf("addrInfo(0xFFFF): %v", err) - } - if len(s) != 0 { - t.Fatalf("AddrInfo(0xFFFF): got len==%d, want 0", len(s)) - } - a.rw.close() -} - -type mockAddr2liner struct { - output []string -} - -func (a *mockAddr2liner) write(s string) error { - var lines []string - switch s { - case "1000": - lines = []string{"_Z3fooid.clone2", "file1000:1000"} - case "2000": - lines = []string{"_ZNSaIiEC1Ev.clone18", "file2000:2000", "_Z3fooid.clone2", "file1000:1000"} - case "3000": - lines = []string{"_ZNSt6vectorIS_IS_IiSaIiEESaIS1_EESaIS3_EEixEm", "file3000:3000", "_ZNSaIiEC1Ev.clone18", "file2000:2000", "_Z3fooid.clone2", "file1000:1000"} - case "4000": - lines = []string{"fun4000", "file4000:4000", "_ZNSt6vectorIS_IS_IiSaIiEESaIS1_EESaIS3_EEixEm", "file3000:3000", "_ZNSaIiEC1Ev.clone18", "file2000:2000", "_Z3fooid.clone2", "file1000:1000"} - case "5000": - lines = []string{"fun5000", "file5000:5000", "fun4000", "file4000:4000", "_ZNSt6vectorIS_IS_IiSaIiEESaIS1_EESaIS3_EEixEm", "file3000:3000", "_ZNSaIiEC1Ev.clone18", "file2000:2000", "_Z3fooid.clone2", "file1000:1000"} - case "6000": - lines = []string{"fun6000", "file6000:6000", "fun5000", "file5000:5000", "fun4000", "file4000:4000", "_ZNSt6vectorIS_IS_IiSaIiEESaIS1_EESaIS3_EEixEm", "file3000:3000", "_ZNSaIiEC1Ev.clone18", "file2000:2000", "_Z3fooid.clone2", "file1000:1000"} - case "7000": - lines = []string{"fun7000", "file7000:7000", "fun6000", "file6000:6000", "fun5000", "file5000:5000", "fun4000", "file4000:4000", "_ZNSt6vectorIS_IS_IiSaIiEESaIS1_EESaIS3_EEixEm", "file3000:3000", "_ZNSaIiEC1Ev.clone18", "file2000:2000", "_Z3fooid.clone2", "file1000:1000"} - case "8000": - lines = []string{"fun8000", "file8000:8000", "fun7000", "file7000:7000", "fun6000", "file6000:6000", "fun5000", "file5000:5000", "fun4000", "file4000:4000", "_ZNSt6vectorIS_IS_IiSaIiEESaIS1_EESaIS3_EEixEm", "file3000:3000", "_ZNSaIiEC1Ev.clone18", "file2000:2000", "_Z3fooid.clone2", "file1000:1000"} - case "9000": - lines = []string{"fun9000", "file9000:9000", "fun8000", "file8000:8000", "fun7000", "file7000:7000", "fun6000", "file6000:6000", "fun5000", "file5000:5000", "fun4000", "file4000:4000", "_ZNSt6vectorIS_IS_IiSaIiEESaIS1_EESaIS3_EEixEm", "file3000:3000", "_ZNSaIiEC1Ev.clone18", "file2000:2000", "_Z3fooid.clone2", "file1000:1000"} - default: - lines = []string{"??", "??:0"} - } - a.output = append(a.output, "0x"+s) - a.output = append(a.output, lines...) - return nil -} - -func (a *mockAddr2liner) readLine() (string, error) { - if len(a.output) == 0 { - return "", fmt.Errorf("end of file") - } - next := a.output[0] - a.output = a.output[1:] - return next, nil -} - -func (a *mockAddr2liner) close() { -} - -func TestAddr2LinerLookup(t *testing.T) { - const oddSizedData = ` -00001000 T 0x1000 -00002000 T 0x2000 -00003000 T 0x3000 -` - const evenSizedData = ` -0000000000001000 T 0x1000 -0000000000002000 T 0x2000 -0000000000003000 T 0x3000 -0000000000004000 T 0x4000 -` - for _, d := range []string{oddSizedData, evenSizedData} { - a, err := parseAddr2LinerNM(0, bytes.NewBufferString(d)) - if err != nil { - t.Errorf("nm parse error: %v", err) - continue - } - for address, want := range map[uint64]string{ - 0x1000: "0x1000", - 0x1001: "0x1000", - 0x1FFF: "0x1000", - 0x2000: "0x2000", - 0x2001: "0x2000", - } { - if got, _ := a.addrInfo(address); !checkAddress(got, address, want) { - t.Errorf("%x: got %v, want %s", address, got, want) - } - } - for _, unknown := range []uint64{0x0fff, 0x4001} { - if got, _ := a.addrInfo(unknown); got != nil { - t.Errorf("%x: got %v, want nil", unknown, got) - } - } - } -} - -func checkAddress(got []plugin.Frame, address uint64, want string) bool { - if len(got) != 1 { - return false - } - return got[0].Func == want -} - -func TestSetTools(t *testing.T) { - // Test that multiple calls work. - bu := &Binutils{} - bu.SetTools("") - bu.SetTools("") -} - -func TestSetFastSymbolization(t *testing.T) { - // Test that multiple calls work. - bu := &Binutils{} - bu.SetFastSymbolization(true) - bu.SetFastSymbolization(false) -} - -func skipUnlessLinuxAmd64(t *testing.T) { - if runtime.GOOS != "linux" || runtime.GOARCH != "amd64" { - t.Skip("This test only works on x86-64 Linux") - } -} - -func skipUnlessDarwinAmd64(t *testing.T) { - if runtime.GOOS != "darwin" || runtime.GOARCH != "amd64" { - t.Skip("This test only works on x86-64 Mac") - } -} - -func TestDisasm(t *testing.T) { - skipUnlessLinuxAmd64(t) - bu := &Binutils{} - insts, err := bu.Disasm(filepath.Join("testdata", "exe_linux_64"), 0, math.MaxUint64) - if err != nil { - t.Fatalf("Disasm: unexpected error %v", err) - } - mainCount := 0 - for _, x := range insts { - if x.Function == "main" { - mainCount++ - } - } - if mainCount == 0 { - t.Error("Disasm: found no main instructions") - } -} - -func findSymbol(syms []*plugin.Sym, name string) *plugin.Sym { - for _, s := range syms { - for _, n := range s.Name { - if n == name { - return s - } - } - } - return nil -} - -func TestObjFile(t *testing.T) { - skipUnlessLinuxAmd64(t) - for _, tc := range []struct { - desc string - start, limit, offset uint64 - addr uint64 - }{ - {"fake mapping", 0, math.MaxUint64, 0, 0x40052d}, - {"fixed load address", 0x400000, 0x4006fc, 0, 0x40052d}, - // True user-mode ASLR binaries are ET_DYN rather than ET_EXEC so this case - // is a bit artificial except that it approximates the - // vmlinux-with-kernel-ASLR case where the binary *is* ET_EXEC. - {"simulated ASLR address", 0x500000, 0x5006fc, 0, 0x50052d}, - } { - t.Run(tc.desc, func(t *testing.T) { - bu := &Binutils{} - f, err := bu.Open(filepath.Join("testdata", "exe_linux_64"), tc.start, tc.limit, tc.offset) - if err != nil { - t.Fatalf("Open: unexpected error %v", err) - } - defer f.Close() - syms, err := f.Symbols(regexp.MustCompile("main"), 0) - if err != nil { - t.Fatalf("Symbols: unexpected error %v", err) - } - - m := findSymbol(syms, "main") - if m == nil { - t.Fatalf("Symbols: did not find main") - } - for _, addr := range []uint64{m.Start + f.Base(), tc.addr} { - gotFrames, err := f.SourceLine(addr) - if err != nil { - t.Fatalf("SourceLine: unexpected error %v", err) - } - wantFrames := []plugin.Frame{ - {Func: "main", File: "/tmp/hello.c", Line: 3}, - } - if !reflect.DeepEqual(gotFrames, wantFrames) { - t.Fatalf("SourceLine for main: got %v; want %v\n", gotFrames, wantFrames) - } - } - }) - } -} - -func TestMachoFiles(t *testing.T) { - skipUnlessDarwinAmd64(t) - - // Load `file`, pretending it was mapped at `start`. Then get the symbol - // table. Check that it contains the symbol `sym` and that the address - // `addr` gives the `expected` stack trace. - for _, tc := range []struct { - desc string - file string - start, limit, offset uint64 - addr uint64 - sym string - expected []plugin.Frame - }{ - {"normal mapping", "exe_mac_64", 0x100000000, math.MaxUint64, 0, - 0x100000f50, "_main", - []plugin.Frame{ - {Func: "main", File: "/tmp/hello.c", Line: 3}, - }}, - {"other mapping", "exe_mac_64", 0x200000000, math.MaxUint64, 0, - 0x200000f50, "_main", - []plugin.Frame{ - {Func: "main", File: "/tmp/hello.c", Line: 3}, - }}, - {"lib normal mapping", "lib_mac_64", 0, math.MaxUint64, 0, - 0xfa0, "_bar", - []plugin.Frame{ - {Func: "bar", File: "/tmp/lib.c", Line: 5}, - }}, - } { - t.Run(tc.desc, func(t *testing.T) { - bu := &Binutils{} - f, err := bu.Open(filepath.Join("testdata", tc.file), tc.start, tc.limit, tc.offset) - if err != nil { - t.Fatalf("Open: unexpected error %v", err) - } - t.Logf("binutils: %v", bu) - if runtime.GOOS == "darwin" && !bu.rep.addr2lineFound && !bu.rep.llvmSymbolizerFound { - // On OSX user needs to install gaddr2line or llvm-symbolizer with - // Homebrew, skip the test when the environment doesn't have it - // installed. - t.Skip("couldn't find addr2line or gaddr2line") - } - defer f.Close() - syms, err := f.Symbols(nil, 0) - if err != nil { - t.Fatalf("Symbols: unexpected error %v", err) - } - - m := findSymbol(syms, tc.sym) - if m == nil { - t.Fatalf("Symbols: could not find symbol %v", tc.sym) - } - gotFrames, err := f.SourceLine(tc.addr) - if err != nil { - t.Fatalf("SourceLine: unexpected error %v", err) - } - if !reflect.DeepEqual(gotFrames, tc.expected) { - t.Fatalf("SourceLine for main: got %v; want %v\n", gotFrames, tc.expected) - } - }) - } -} - -func TestLLVMSymbolizer(t *testing.T) { - if runtime.GOOS != "linux" { - t.Skip("testtdata/llvm-symbolizer has only been tested on linux") - } - - cmd := filepath.Join("testdata", "fake-llvm-symbolizer") - symbolizer, err := newLLVMSymbolizer(cmd, "foo", 0) - if err != nil { - t.Fatalf("newLLVMSymbolizer: unexpected error %v", err) - } - defer symbolizer.rw.close() - - for _, c := range []struct { - addr uint64 - frames []plugin.Frame - }{ - {0x10, []plugin.Frame{ - {Func: "Inlined_0x10", File: "foo.h", Line: 0}, - {Func: "Func_0x10", File: "foo.c", Line: 2}, - }}, - {0x20, []plugin.Frame{ - {Func: "Inlined_0x20", File: "foo.h", Line: 0}, - {Func: "Func_0x20", File: "foo.c", Line: 2}, - }}, - } { - frames, err := symbolizer.addrInfo(c.addr) - if err != nil { - t.Errorf("LLVM: unexpected error %v", err) - continue - } - if !reflect.DeepEqual(frames, c.frames) { - t.Errorf("LLVM: expect %v; got %v\n", c.frames, frames) - } - } -} - -func TestOpenMalformedELF(t *testing.T) { - // Test that opening a malformed ELF file will report an error containing - // the word "ELF". - bu := &Binutils{} - _, err := bu.Open(filepath.Join("testdata", "malformed_elf"), 0, 0, 0) - if err == nil { - t.Fatalf("Open: unexpected success") - } - - if !strings.Contains(err.Error(), "ELF") { - t.Errorf("Open: got %v, want error containing 'ELF'", err) - } -} - -func TestOpenMalformedMachO(t *testing.T) { - // Test that opening a malformed Mach-O file will report an error containing - // the word "Mach-O". - bu := &Binutils{} - _, err := bu.Open(filepath.Join("testdata", "malformed_macho"), 0, 0, 0) - if err == nil { - t.Fatalf("Open: unexpected success") - } - - if !strings.Contains(err.Error(), "Mach-O") { - t.Errorf("Open: got %v, want error containing 'Mach-O'", err) - } -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/binutils/disasm_test.go b/src/cmd/vendor/github.com/google/pprof/internal/binutils/disasm_test.go deleted file mode 100644 index 3563198f48f851..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/binutils/disasm_test.go +++ /dev/null @@ -1,152 +0,0 @@ -// Copyright 2014 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package binutils - -import ( - "fmt" - "regexp" - "testing" - - "github.com/google/pprof/internal/plugin" -) - -// TestFindSymbols tests the FindSymbols routine using a hardcoded nm output. -func TestFindSymbols(t *testing.T) { - type testcase struct { - query, syms string - want []plugin.Sym - } - - testsyms := `0000000000001000 t lineA001 -0000000000001000 t lineA002 -0000000000001000 t line1000 -0000000000002000 t line200A -0000000000002000 t line2000 -0000000000002000 t line200B -0000000000003000 t line3000 -0000000000003000 t _ZNK4DumbclEPKc -0000000000003000 t lineB00C -0000000000003000 t line300D -0000000000004000 t _the_end - ` - testcases := []testcase{ - { - "line.*[AC]", - testsyms, - []plugin.Sym{ - {Name: []string{"lineA001"}, File: "object.o", Start: 0x1000, End: 0x1FFF}, - {Name: []string{"line200A"}, File: "object.o", Start: 0x2000, End: 0x2FFF}, - {Name: []string{"lineB00C"}, File: "object.o", Start: 0x3000, End: 0x3FFF}, - }, - }, - { - "Dumb::operator", - testsyms, - []plugin.Sym{ - {Name: []string{"Dumb::operator()(char const*) const"}, File: "object.o", Start: 0x3000, End: 0x3FFF}, - }, - }, - } - - for _, tc := range testcases { - syms, err := findSymbols([]byte(tc.syms), "object.o", regexp.MustCompile(tc.query), 0) - if err != nil { - t.Fatalf("%q: findSymbols: %v", tc.query, err) - } - if err := checkSymbol(syms, tc.want); err != nil { - t.Errorf("%q: %v", tc.query, err) - } - } -} - -func checkSymbol(got []*plugin.Sym, want []plugin.Sym) error { - if len(got) != len(want) { - return fmt.Errorf("unexpected number of symbols %d (want %d)", len(got), len(want)) - } - - for i, g := range got { - w := want[i] - if len(g.Name) != len(w.Name) { - return fmt.Errorf("names, got %d, want %d", len(g.Name), len(w.Name)) - } - for n := range g.Name { - if g.Name[n] != w.Name[n] { - return fmt.Errorf("name %d, got %q, want %q", n, g.Name[n], w.Name[n]) - } - } - if g.File != w.File { - return fmt.Errorf("filename, got %q, want %q", g.File, w.File) - } - if g.Start != w.Start { - return fmt.Errorf("start address, got %#x, want %#x", g.Start, w.Start) - } - if g.End != w.End { - return fmt.Errorf("end address, got %#x, want %#x", g.End, w.End) - } - } - return nil -} - -// TestFunctionAssembly tests the FunctionAssembly routine by using a -// fake objdump script. -func TestFunctionAssembly(t *testing.T) { - type testcase struct { - s plugin.Sym - asm string - want []plugin.Inst - } - testcases := []testcase{ - { - plugin.Sym{Name: []string{"symbol1"}, Start: 0x1000, End: 0x1FFF}, - ` 1000: instruction one - 1001: instruction two - 1002: instruction three - 1003: instruction four -`, - []plugin.Inst{ - {Addr: 0x1000, Text: "instruction one"}, - {Addr: 0x1001, Text: "instruction two"}, - {Addr: 0x1002, Text: "instruction three"}, - {Addr: 0x1003, Text: "instruction four"}, - }, - }, - { - plugin.Sym{Name: []string{"symbol2"}, Start: 0x2000, End: 0x2FFF}, - ` 2000: instruction one - 2001: instruction two -`, - []plugin.Inst{ - {Addr: 0x2000, Text: "instruction one"}, - {Addr: 0x2001, Text: "instruction two"}, - }, - }, - } - - for _, tc := range testcases { - insts, err := disassemble([]byte(tc.asm)) - if err != nil { - t.Fatalf("FunctionAssembly: %v", err) - } - - if len(insts) != len(tc.want) { - t.Errorf("Unexpected number of assembly instructions %d (want %d)\n", len(insts), len(tc.want)) - } - for i := range insts { - if insts[i] != tc.want[i] { - t.Errorf("Expected symbol %v, got %v\n", tc.want[i], insts[i]) - } - } - } -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/build_mac.sh b/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/build_mac.sh deleted file mode 100755 index 5ec98f39b5541f..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/build_mac.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash -x - -# This is a script that generates the test MacOS executables in this directory. -# It should be needed very rarely to run this script. It is mostly provided -# as a future reference on how the original binary set was created. - -set -o errexit - -cat </tmp/hello.cc -#include - -int main() { - printf("Hello, world!\n"); - return 0; -} -EOF - -cat </tmp/lib.c -int foo() { - return 1; -} - -int bar() { - return 2; -} -EOF - -cd $(dirname $0) -rm -rf exe_mac_64* lib_mac_64* -clang -g -o exe_mac_64 /tmp/hello.c -clang -g -o lib_mac_64 -dynamiclib /tmp/lib.c diff --git a/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/exe_linux_64 b/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/exe_linux_64 deleted file mode 100755 index d86dc7cdfca8275e13d6ff5c3f2f6568eb935a21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9503 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 diff --git a/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/exe_mac_64 b/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/exe_mac_64 deleted file mode 100755 index dba1ae15817595eb443322f6ae4ce9e67e400b90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8648 zcmeHNO=}ZD7@k-^>Sxo7_|3LhsiN7m)mjm;RfAEBR;?ff8Ji|G!A(+kx7zBZQalt9 zdiLnqga5#Tf(n9y7k_|?g5E`n@p)!vo844B3c|eb?(8%3&NDO5%tChGy!r9%=PDr* zO+w5p6GF7WpDY*Rp0IEy#AbLFF6Gd`$;?RR!a3H)EfI&mMdW#pKq-eamxtpas(&(G zCp5;~#0u?Id|NaDF?C8F zt2%PRcmK#2((rt+e`wTSji)Q5bVmQimqdTYH|u!fC?C&V6xW}F!Bc0?WKNt4&#=|7 zPGH(gJsI*u=hcqqEX@Eb7`qweCSq-tCDhSRqhuVlXL}KN9m>8oA?8u8g%81LTmzl4 zYjla?x7LaNvFAZYZ9r+kIfgyyxwccv+4*TF4@}z%=RAhqy>9R6Kl=3kqlZqd>-6fK zs7u1ddW;O`bEh!tV4Ya6>ep~C)mqTbw%~kyz_b$eu`&L|Y0oc|Q^!)6M=3`(A$GyZ zf7J@syjx@HW6UUE6fg=H1&jhl0i%FXz$oyq6}Xh0`r+(0>B#6^7hRIAmp1;?rGwQf~iC*Q`O z_3Axh8*gCIlE0t%p1U6<{f_>v&3nGXtV7SF>J1Qo9Z?n0%RKrfq7~-eC}0#Y3K#{9 z0!9I&fKk9GU=%P47zK<1MuGocf!6lqc`l;0pUFOz43|0NhmpKK?;_LaCR_XE1QO8x zxXL?j{CZLd-r$uq^cqqOif9MU;o6~sQ>@~ diff --git a/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/exe_mac_64.dSYM/Contents/Info.plist b/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/exe_mac_64.dSYM/Contents/Info.plist deleted file mode 100644 index 41ce537f5d9d3d..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/exe_mac_64.dSYM/Contents/Info.plist +++ /dev/null @@ -1,20 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleIdentifier - com.apple.xcode.dsym.exe_mac_64 - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - dSYM - CFBundleSignature - ???? - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - - diff --git a/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/exe_mac_64.dSYM/Contents/Resources/DWARF/exe_mac_64 b/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/exe_mac_64.dSYM/Contents/Resources/DWARF/exe_mac_64 deleted file mode 100644 index 2cb0e3bf31e384571a684c72d0b942ba195c969c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8840 zcmeI2&u`R56vxNASsGZngx|FE;L=nI2-eGw0|}^P#ik^XmWYO*myx|YY>d3NWqTn( zNX?-Ks;Y-xbF8=^^@`M6{{bWpz4TAu(gPAFkf864-)tT4E^JTbFfW>U^W)9OQ!i1%e$ErInqVol zJa1_S+&pw0Q32q`GG(Z&XRDmYN!N*cO?lpZ;%(_gq*bu>a*T3ibE$;fa16kj^9={O}*IZeiq1w^o zx;}@*d858u#}+bJ&-bk>?oq|&-1m6A)^P%lhed-l6{6EweZ z1puGr;l9h(|9uV?7rwnT*H}<{*v#E0P4Fynk&~Sla()Le=ykn*xaa)bVt`{7k&5rPac+m9C%9Z(h{^Mw5KryfC;x>P+RZ%g1@R_nJ}*Y($;~og zetS=(_j{Rmdk;}zh*S3)ICq*DlAm9TcxryF_wa^XMmK8(v;tZIt$m zKr5gX&4c2I$+Q<#o9UtC)`I#j zu%}eqHh%M$LK#Nvmkh`lo_^s;dhhc9eojbFB(du}B-c+*LOY<%Qkn;NZ15$%>V)%4K%~?g;-qCKcB(4sH~(FIo>ob&%XYXgw6rb#*Md9WZ#+Pac@=B(#61fEb3RkMU_N2^6!lJZMP-FCzQ*g8jO{t*P4>Z7(>^ICrdzWa|}q+EvwP*E`rq_IsoIt?MFUbC-A@v*tUQtJH&y&HHPs8|JO%eTjLPiYoa| zy$l1B80X*_xeA)yX!-XM=jM>XyR+v!FrPLvEz-w)9{vzc)G@p;kEcHx_(83ezniZPfRG5g4rkvShO?M&Xv}w7vkX`UECZGS%YbFTGGH073|Iy% z1OGDvkJn#+en;W9b(G1jiiDVgYU?PJoU{7z@tNDy%aoRMqkXxiuAhJon;NOXKV@M` zL8p(^I~|$!DqXplmSGlEhglTDhS^AnUBS8U~Jr%T< i`X#^BzxCX8i(PlcDN_h9t`tfocRAmQ`iCd!d;SJVA9g|j diff --git a/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/lib_mac_64.dSYM/Contents/Info.plist b/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/lib_mac_64.dSYM/Contents/Info.plist deleted file mode 100644 index 409e4cf0c90c63..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/lib_mac_64.dSYM/Contents/Info.plist +++ /dev/null @@ -1,20 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleIdentifier - com.apple.xcode.dsym.lib_mac_64 - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - dSYM - CFBundleSignature - ???? - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - - diff --git a/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/lib_mac_64.dSYM/Contents/Resources/DWARF/lib_mac_64 b/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/lib_mac_64.dSYM/Contents/Resources/DWARF/lib_mac_64 deleted file mode 100644 index e466c1342e3f5be57c4aa21e2745bcdd21b1e817..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8934 zcmeI2&rj4q6vwCgLxJJ~k|2sP)nI}~wi|y%&sdm{^t(#Tqi;(qM^%X{7t&tZPTGNOZRhOF1RlvdnT+bvPsUGiWencpkU zo2cD>dMnLG2hfmGYqyka_sen{KDj*e*3P=T{0#X5~fK)&# zAQjk+3fzLEQv?tD6y;}bAJhsw{o@g}qDRX`KPdvtnEKa1KLY2)BrAs-U>&~Wg zod^1IUCRDFa7~_IXS6q+8&)r>Q{5wQvY+lJ>D*;iWx0;wd8;-(J%2-6v4YU{Tx}>{ z$QQJMq625xgF^*y@@Izfr%w=+UXPX6=R%0q4a2e447a40Jv|JHdfATdS72wnWf<|w zj-~s4;4SGOqZPP@qnox{iEJm-BP)zbMr5!(K>bna$vb0{xX-9G7W{MrE#7-r5AVNQ z+)$r{8!BptpF1!upvApJW1>NedyFQy$U#eTe}mP=U>ts4f`+@MkUj8OLl*v2=*4*y a*5mu5_!y5n0msNM2ZkBF76&s8Z}|rxW9=pY diff --git a/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/malformed_elf b/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/malformed_elf deleted file mode 100644 index f0b503b0b6c523..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/malformed_elf +++ /dev/null @@ -1 +0,0 @@ -ELF�������� \ No newline at end of file diff --git a/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/malformed_macho b/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/malformed_macho deleted file mode 100644 index b01ddf69a9a279..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/malformed_macho +++ /dev/null @@ -1 +0,0 @@ -������������ \ No newline at end of file diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/driver_test.go b/src/cmd/vendor/github.com/google/pprof/internal/driver/driver_test.go deleted file mode 100644 index 90f89dc7bc85a3..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/driver_test.go +++ /dev/null @@ -1,1606 +0,0 @@ -// Copyright 2014 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package driver - -import ( - "bytes" - "flag" - "fmt" - "io/ioutil" - "net" - _ "net/http/pprof" - "os" - "reflect" - "regexp" - "runtime" - "strconv" - "strings" - "testing" - "time" - - "github.com/google/pprof/internal/plugin" - "github.com/google/pprof/internal/proftest" - "github.com/google/pprof/internal/symbolz" - "github.com/google/pprof/profile" -) - -var updateFlag = flag.Bool("update", false, "Update the golden files") - -func TestParse(t *testing.T) { - // Override weblist command to collect output in buffer - pprofCommands["weblist"].postProcess = nil - - // Our mockObjTool.Open will always return success, causing - // driver.locateBinaries to "find" the binaries below in a non-existent - // directory. As a workaround, point the search path to the fake - // directory containing out fake binaries. - savePath := os.Getenv("PPROF_BINARY_PATH") - os.Setenv("PPROF_BINARY_PATH", "/path/to") - defer os.Setenv("PPROF_BINARY_PATH", savePath) - testcase := []struct { - flags, source string - }{ - {"text,functions,flat", "cpu"}, - {"text,functions,noinlines,flat", "cpu"}, - {"text,filefunctions,noinlines,flat", "cpu"}, - {"text,addresses,noinlines,flat", "cpu"}, - {"tree,addresses,flat,nodecount=4", "cpusmall"}, - {"text,functions,flat,nodecount=5,call_tree", "unknown"}, - {"text,alloc_objects,flat", "heap_alloc"}, - {"text,files,flat", "heap"}, - {"text,files,flat,focus=[12]00,taghide=[X3]00", "heap"}, - {"text,inuse_objects,flat", "heap"}, - {"text,lines,cum,hide=line[X3]0", "cpu"}, - {"text,lines,cum,show=[12]00", "cpu"}, - {"text,lines,cum,hide=line[X3]0,focus=[12]00", "cpu"}, - {"topproto,lines,cum,hide=mangled[X3]0", "cpu"}, - {"topproto,lines", "cpu"}, - {"tree,lines,cum,focus=[24]00", "heap"}, - {"tree,relative_percentages,cum,focus=[24]00", "heap"}, - {"tree,lines,cum,show_from=line2", "cpu"}, - {"callgrind", "cpu"}, - {"callgrind,call_tree", "cpu"}, - {"callgrind", "heap"}, - {"dot,functions,flat", "cpu"}, - {"dot,functions,flat,call_tree", "cpu"}, - {"dot,lines,flat,focus=[12]00", "heap"}, - {"dot,unit=minimum", "heap_sizetags"}, - {"dot,addresses,flat,ignore=[X3]002,focus=[X1]000", "contention"}, - {"dot,files,cum", "contention"}, - {"comments,add_comment=some-comment", "cpu"}, - {"comments", "heap"}, - {"tags", "cpu"}, - {"tags,tagignore=tag[13],tagfocus=key[12]", "cpu"}, - {"tags", "heap"}, - {"tags,unit=bytes", "heap"}, - {"traces", "cpu"}, - {"traces", "heap_tags"}, - {"dot,alloc_space,flat,focus=[234]00", "heap_alloc"}, - {"dot,alloc_space,flat,tagshow=[2]00", "heap_alloc"}, - {"dot,alloc_space,flat,hide=line.*1?23?", "heap_alloc"}, - {"dot,inuse_space,flat,tagfocus=1mb:2gb", "heap"}, - {"dot,inuse_space,flat,tagfocus=30kb:,tagignore=1mb:2mb", "heap"}, - {"disasm=line[13],addresses,flat", "cpu"}, - {"peek=line.*01", "cpu"}, - {"weblist=line[13],addresses,flat", "cpu"}, - {"tags,tagfocus=400kb:", "heap_request"}, - {"dot", "longNameFuncs"}, - {"text", "longNameFuncs"}, - } - - baseVars := pprofVariables - defer func() { pprofVariables = baseVars }() - for _, tc := range testcase { - t.Run(tc.flags+":"+tc.source, func(t *testing.T) { - // Reset the pprof variables before processing - pprofVariables = baseVars.makeCopy() - - testUI := &proftest.TestUI{T: t, AllowRx: "Generating report in|Ignoring local file|expression matched no samples|Interpreted .* as range, not regexp"} - - f := baseFlags() - f.args = []string{tc.source} - - flags := strings.Split(tc.flags, ",") - - // Encode profile into a protobuf and decode it again. - protoTempFile, err := ioutil.TempFile("", "profile_proto") - if err != nil { - t.Errorf("cannot create tempfile: %v", err) - } - defer os.Remove(protoTempFile.Name()) - defer protoTempFile.Close() - f.strings["output"] = protoTempFile.Name() - - if flags[0] == "topproto" { - f.bools["proto"] = false - f.bools["topproto"] = true - f.bools["addresses"] = true - } - - // First pprof invocation to save the profile into a profile.proto. - // Pass in flag set hen setting defaults, because otherwise default - // transport will try to add flags to the default flag set. - o1 := setDefaults(&plugin.Options{Flagset: f}) - o1.Fetch = testFetcher{} - o1.Sym = testSymbolizer{} - o1.UI = testUI - if err := PProf(o1); err != nil { - t.Fatalf("%s %q: %v", tc.source, tc.flags, err) - } - // Reset the pprof variables after the proto invocation - pprofVariables = baseVars.makeCopy() - - // Read the profile from the encoded protobuf - outputTempFile, err := ioutil.TempFile("", "profile_output") - if err != nil { - t.Errorf("cannot create tempfile: %v", err) - } - defer os.Remove(outputTempFile.Name()) - defer outputTempFile.Close() - - f = baseFlags() - f.strings["output"] = outputTempFile.Name() - f.args = []string{protoTempFile.Name()} - - delete(f.bools, "proto") - addFlags(&f, flags) - solution := solutionFilename(tc.source, &f) - // Apply the flags for the second pprof run, and identify name of - // the file containing expected results - if flags[0] == "topproto" { - addFlags(&f, flags) - solution = solutionFilename(tc.source, &f) - delete(f.bools, "topproto") - f.bools["text"] = true - } - - // Second pprof invocation to read the profile from profile.proto - // and generate a report. - // Pass in flag set hen setting defaults, because otherwise default - // transport will try to add flags to the default flag set. - o2 := setDefaults(&plugin.Options{Flagset: f}) - o2.Sym = testSymbolizeDemangler{} - o2.Obj = new(mockObjTool) - o2.UI = testUI - - if err := PProf(o2); err != nil { - t.Errorf("%s: %v", tc.source, err) - } - b, err := ioutil.ReadFile(outputTempFile.Name()) - if err != nil { - t.Errorf("Failed to read profile %s: %v", outputTempFile.Name(), err) - } - - // Read data file with expected solution - solution = "testdata/" + solution - sbuf, err := ioutil.ReadFile(solution) - if err != nil { - t.Fatalf("reading solution file %s: %v", solution, err) - } - if runtime.GOOS == "windows" { - sbuf = bytes.Replace(sbuf, []byte("testdata/"), []byte("testdata\\"), -1) - sbuf = bytes.Replace(sbuf, []byte("/path/to/"), []byte("\\path\\to\\"), -1) - } - - if flags[0] == "svg" { - b = removeScripts(b) - sbuf = removeScripts(sbuf) - } - - if string(b) != string(sbuf) { - t.Errorf("diff %s %s", solution, tc.source) - d, err := proftest.Diff(sbuf, b) - if err != nil { - t.Fatalf("diff %s %v", solution, err) - } - t.Errorf("%s\n%s\n", solution, d) - if *updateFlag { - err := ioutil.WriteFile(solution, b, 0644) - if err != nil { - t.Errorf("failed to update the solution file %q: %v", solution, err) - } - } - } - }) - } -} - -// removeScripts removes pairs from its input -func removeScripts(in []byte) []byte { - beginMarker := []byte("") - - if begin := bytes.Index(in, beginMarker); begin > 0 { - if end := bytes.Index(in[begin:], endMarker); end > 0 { - in = append(in[:begin], removeScripts(in[begin+end+len(endMarker):])...) - } - } - return in -} - -// addFlags parses flag descriptions and adds them to the testFlags -func addFlags(f *testFlags, flags []string) { - for _, flag := range flags { - fields := strings.SplitN(flag, "=", 2) - switch len(fields) { - case 1: - f.bools[fields[0]] = true - case 2: - if i, err := strconv.Atoi(fields[1]); err == nil { - f.ints[fields[0]] = i - } else { - f.strings[fields[0]] = fields[1] - } - } - } -} - -func testSourceURL(port int) string { - return fmt.Sprintf("http://%s/", net.JoinHostPort(testSourceAddress, strconv.Itoa(port))) -} - -// solutionFilename returns the name of the solution file for the test -func solutionFilename(source string, f *testFlags) string { - name := []string{"pprof", strings.TrimPrefix(source, testSourceURL(8000))} - name = addString(name, f, []string{"flat", "cum"}) - name = addString(name, f, []string{"functions", "filefunctions", "files", "lines", "addresses"}) - name = addString(name, f, []string{"noinlines"}) - name = addString(name, f, []string{"inuse_space", "inuse_objects", "alloc_space", "alloc_objects"}) - name = addString(name, f, []string{"relative_percentages"}) - name = addString(name, f, []string{"seconds"}) - name = addString(name, f, []string{"call_tree"}) - name = addString(name, f, []string{"text", "tree", "callgrind", "dot", "svg", "tags", "dot", "traces", "disasm", "peek", "weblist", "topproto", "comments"}) - if f.strings["focus"] != "" || f.strings["tagfocus"] != "" { - name = append(name, "focus") - } - if f.strings["ignore"] != "" || f.strings["tagignore"] != "" { - name = append(name, "ignore") - } - if f.strings["show_from"] != "" { - name = append(name, "show_from") - } - name = addString(name, f, []string{"hide", "show"}) - if f.strings["unit"] != "minimum" { - name = addString(name, f, []string{"unit"}) - } - return strings.Join(name, ".") -} - -func addString(name []string, f *testFlags, components []string) []string { - for _, c := range components { - if f.bools[c] || f.strings[c] != "" || f.ints[c] != 0 { - return append(name, c) - } - } - return name -} - -// testFlags implements the plugin.FlagSet interface. -type testFlags struct { - bools map[string]bool - ints map[string]int - floats map[string]float64 - strings map[string]string - args []string - stringLists map[string][]string -} - -func (testFlags) ExtraUsage() string { return "" } - -func (testFlags) AddExtraUsage(eu string) {} - -func (f testFlags) Bool(s string, d bool, c string) *bool { - if b, ok := f.bools[s]; ok { - return &b - } - return &d -} - -func (f testFlags) Int(s string, d int, c string) *int { - if i, ok := f.ints[s]; ok { - return &i - } - return &d -} - -func (f testFlags) Float64(s string, d float64, c string) *float64 { - if g, ok := f.floats[s]; ok { - return &g - } - return &d -} - -func (f testFlags) String(s, d, c string) *string { - if t, ok := f.strings[s]; ok { - return &t - } - return &d -} - -func (f testFlags) BoolVar(p *bool, s string, d bool, c string) { - if b, ok := f.bools[s]; ok { - *p = b - } else { - *p = d - } -} - -func (f testFlags) IntVar(p *int, s string, d int, c string) { - if i, ok := f.ints[s]; ok { - *p = i - } else { - *p = d - } -} - -func (f testFlags) Float64Var(p *float64, s string, d float64, c string) { - if g, ok := f.floats[s]; ok { - *p = g - } else { - *p = d - } -} - -func (f testFlags) StringVar(p *string, s, d, c string) { - if t, ok := f.strings[s]; ok { - *p = t - } else { - *p = d - } -} - -func (f testFlags) StringList(s, d, c string) *[]*string { - if t, ok := f.stringLists[s]; ok { - // convert slice of strings to slice of string pointers before returning. - tp := make([]*string, len(t)) - for i, v := range t { - tp[i] = &v - } - return &tp - } - return &[]*string{} -} - -func (f testFlags) Parse(func()) []string { - return f.args -} - -func baseFlags() testFlags { - return testFlags{ - bools: map[string]bool{ - "proto": true, - "trim": true, - "compact_labels": true, - }, - ints: map[string]int{ - "nodecount": 20, - }, - floats: map[string]float64{ - "nodefraction": 0.05, - "edgefraction": 0.01, - "divide_by": 1.0, - }, - strings: map[string]string{ - "unit": "minimum", - }, - } -} - -const testStart = 0x1000 -const testOffset = 0x5000 - -type testFetcher struct{} - -func (testFetcher) Fetch(s string, d, t time.Duration) (*profile.Profile, string, error) { - var p *profile.Profile - switch s { - case "cpu", "unknown": - p = cpuProfile() - case "cpusmall": - p = cpuProfileSmall() - case "heap": - p = heapProfile() - case "heap_alloc": - p = heapProfile() - p.SampleType = []*profile.ValueType{ - {Type: "alloc_objects", Unit: "count"}, - {Type: "alloc_space", Unit: "bytes"}, - } - case "heap_request": - p = heapProfile() - for _, s := range p.Sample { - s.NumLabel["request"] = s.NumLabel["bytes"] - } - case "heap_sizetags": - p = heapProfile() - tags := []int64{2, 4, 8, 16, 32, 64, 128, 256} - for _, s := range p.Sample { - numValues := append(s.NumLabel["bytes"], tags...) - s.NumLabel["bytes"] = numValues - } - case "heap_tags": - p = heapProfile() - for i := 0; i < len(p.Sample); i += 2 { - s := p.Sample[i] - if s.Label == nil { - s.Label = make(map[string][]string) - } - s.NumLabel["request"] = s.NumLabel["bytes"] - s.Label["key1"] = []string{"tag"} - } - case "contention": - p = contentionProfile() - case "symbolz": - p = symzProfile() - case "longNameFuncs": - p = longNameFuncsProfile() - default: - return nil, "", fmt.Errorf("unexpected source: %s", s) - } - return p, testSourceURL(8000) + s, nil -} - -type testSymbolizer struct{} - -func (testSymbolizer) Symbolize(_ string, _ plugin.MappingSources, _ *profile.Profile) error { - return nil -} - -type testSymbolizeDemangler struct{} - -func (testSymbolizeDemangler) Symbolize(_ string, _ plugin.MappingSources, p *profile.Profile) error { - for _, fn := range p.Function { - if fn.Name == "" || fn.SystemName == fn.Name { - fn.Name = fakeDemangler(fn.SystemName) - } - } - return nil -} - -func testFetchSymbols(source, post string) ([]byte, error) { - var buf bytes.Buffer - - switch source { - case testSourceURL(8000) + "symbolz": - for _, address := range strings.Split(post, "+") { - a, _ := strconv.ParseInt(address, 0, 64) - fmt.Fprintf(&buf, "%v\t", address) - if a-testStart > testOffset { - fmt.Fprintf(&buf, "wrong_source_%v_", address) - continue - } - fmt.Fprintf(&buf, "%#x\n", a-testStart) - } - return buf.Bytes(), nil - case testSourceURL(8001) + "symbolz": - for _, address := range strings.Split(post, "+") { - a, _ := strconv.ParseInt(address, 0, 64) - fmt.Fprintf(&buf, "%v\t", address) - if a-testStart < testOffset { - fmt.Fprintf(&buf, "wrong_source_%v_", address) - continue - } - fmt.Fprintf(&buf, "%#x\n", a-testStart-testOffset) - } - return buf.Bytes(), nil - default: - return nil, fmt.Errorf("unexpected source: %s", source) - } -} - -type testSymbolzSymbolizer struct{} - -func (testSymbolzSymbolizer) Symbolize(variables string, sources plugin.MappingSources, p *profile.Profile) error { - return symbolz.Symbolize(p, false, sources, testFetchSymbols, nil) -} - -func fakeDemangler(name string) string { - switch name { - case "mangled1000": - return "line1000" - case "mangled2000": - return "line2000" - case "mangled2001": - return "line2001" - case "mangled3000": - return "line3000" - case "mangled3001": - return "line3001" - case "mangled3002": - return "line3002" - case "mangledNEW": - return "operator new" - case "mangledMALLOC": - return "malloc" - default: - return name - } -} - -// Returns a profile with function names which should be shortened in -// graph and flame views. -func longNameFuncsProfile() *profile.Profile { - var longNameFuncsM = []*profile.Mapping{ - { - ID: 1, - Start: 0x1000, - Limit: 0x4000, - File: "/path/to/testbinary", - HasFunctions: true, - HasFilenames: true, - HasLineNumbers: true, - HasInlineFrames: true, - }, - } - - var longNameFuncsF = []*profile.Function{ - {ID: 1, Name: "path/to/package1.object.function1", SystemName: "path/to/package1.object.function1", Filename: "path/to/package1.go"}, - {ID: 2, Name: "(anonymous namespace)::Bar::Foo", SystemName: "(anonymous namespace)::Bar::Foo", Filename: "a/long/path/to/package2.cc"}, - {ID: 3, Name: "java.bar.foo.FooBar.run(java.lang.Runnable)", SystemName: "java.bar.foo.FooBar.run(java.lang.Runnable)", Filename: "FooBar.java"}, - } - - var longNameFuncsL = []*profile.Location{ - { - ID: 1000, - Mapping: longNameFuncsM[0], - Address: 0x1000, - Line: []profile.Line{ - {Function: longNameFuncsF[0], Line: 1}, - }, - }, - { - ID: 2000, - Mapping: longNameFuncsM[0], - Address: 0x2000, - Line: []profile.Line{ - {Function: longNameFuncsF[1], Line: 4}, - }, - }, - { - ID: 3000, - Mapping: longNameFuncsM[0], - Address: 0x3000, - Line: []profile.Line{ - {Function: longNameFuncsF[2], Line: 9}, - }, - }, - } - - return &profile.Profile{ - PeriodType: &profile.ValueType{Type: "cpu", Unit: "milliseconds"}, - Period: 1, - DurationNanos: 10e9, - SampleType: []*profile.ValueType{ - {Type: "samples", Unit: "count"}, - {Type: "cpu", Unit: "milliseconds"}, - }, - Sample: []*profile.Sample{ - { - Location: []*profile.Location{longNameFuncsL[0], longNameFuncsL[1], longNameFuncsL[2]}, - Value: []int64{1000, 1000}, - }, - { - Location: []*profile.Location{longNameFuncsL[0], longNameFuncsL[1]}, - Value: []int64{100, 100}, - }, - { - Location: []*profile.Location{longNameFuncsL[2]}, - Value: []int64{10, 10}, - }, - }, - Location: longNameFuncsL, - Function: longNameFuncsF, - Mapping: longNameFuncsM, - } -} - -func cpuProfile() *profile.Profile { - var cpuM = []*profile.Mapping{ - { - ID: 1, - Start: 0x1000, - Limit: 0x4000, - File: "/path/to/testbinary", - HasFunctions: true, - HasFilenames: true, - HasLineNumbers: true, - HasInlineFrames: true, - }, - } - - var cpuF = []*profile.Function{ - {ID: 1, Name: "mangled1000", SystemName: "mangled1000", Filename: "testdata/file1000.src"}, - {ID: 2, Name: "mangled2000", SystemName: "mangled2000", Filename: "testdata/file2000.src"}, - {ID: 3, Name: "mangled2001", SystemName: "mangled2001", Filename: "testdata/file2000.src"}, - {ID: 4, Name: "mangled3000", SystemName: "mangled3000", Filename: "testdata/file3000.src"}, - {ID: 5, Name: "mangled3001", SystemName: "mangled3001", Filename: "testdata/file3000.src"}, - {ID: 6, Name: "mangled3002", SystemName: "mangled3002", Filename: "testdata/file3000.src"}, - } - - var cpuL = []*profile.Location{ - { - ID: 1000, - Mapping: cpuM[0], - Address: 0x1000, - Line: []profile.Line{ - {Function: cpuF[0], Line: 1}, - }, - }, - { - ID: 2000, - Mapping: cpuM[0], - Address: 0x2000, - Line: []profile.Line{ - {Function: cpuF[2], Line: 9}, - {Function: cpuF[1], Line: 4}, - }, - }, - { - ID: 3000, - Mapping: cpuM[0], - Address: 0x3000, - Line: []profile.Line{ - {Function: cpuF[5], Line: 2}, - {Function: cpuF[4], Line: 5}, - {Function: cpuF[3], Line: 6}, - }, - }, - { - ID: 3001, - Mapping: cpuM[0], - Address: 0x3001, - Line: []profile.Line{ - {Function: cpuF[4], Line: 8}, - {Function: cpuF[3], Line: 9}, - }, - }, - { - ID: 3002, - Mapping: cpuM[0], - Address: 0x3002, - Line: []profile.Line{ - {Function: cpuF[5], Line: 5}, - {Function: cpuF[3], Line: 9}, - }, - }, - } - - return &profile.Profile{ - PeriodType: &profile.ValueType{Type: "cpu", Unit: "milliseconds"}, - Period: 1, - DurationNanos: 10e9, - SampleType: []*profile.ValueType{ - {Type: "samples", Unit: "count"}, - {Type: "cpu", Unit: "milliseconds"}, - }, - Sample: []*profile.Sample{ - { - Location: []*profile.Location{cpuL[0], cpuL[1], cpuL[2]}, - Value: []int64{1000, 1000}, - Label: map[string][]string{ - "key1": {"tag1"}, - "key2": {"tag1"}, - }, - }, - { - Location: []*profile.Location{cpuL[0], cpuL[3]}, - Value: []int64{100, 100}, - Label: map[string][]string{ - "key1": {"tag2"}, - "key3": {"tag2"}, - }, - }, - { - Location: []*profile.Location{cpuL[1], cpuL[4]}, - Value: []int64{10, 10}, - Label: map[string][]string{ - "key1": {"tag3"}, - "key2": {"tag2"}, - }, - }, - { - Location: []*profile.Location{cpuL[2]}, - Value: []int64{10, 10}, - Label: map[string][]string{ - "key1": {"tag4"}, - "key2": {"tag1"}, - }, - }, - }, - Location: cpuL, - Function: cpuF, - Mapping: cpuM, - } -} - -func cpuProfileSmall() *profile.Profile { - var cpuM = []*profile.Mapping{ - { - ID: 1, - Start: 0x1000, - Limit: 0x4000, - File: "/path/to/testbinary", - HasFunctions: true, - HasFilenames: true, - HasLineNumbers: true, - HasInlineFrames: true, - }, - } - - var cpuL = []*profile.Location{ - { - ID: 1000, - Mapping: cpuM[0], - Address: 0x1000, - }, - { - ID: 2000, - Mapping: cpuM[0], - Address: 0x2000, - }, - { - ID: 3000, - Mapping: cpuM[0], - Address: 0x3000, - }, - { - ID: 4000, - Mapping: cpuM[0], - Address: 0x4000, - }, - { - ID: 5000, - Mapping: cpuM[0], - Address: 0x5000, - }, - } - - return &profile.Profile{ - PeriodType: &profile.ValueType{Type: "cpu", Unit: "milliseconds"}, - Period: 1, - DurationNanos: 10e9, - SampleType: []*profile.ValueType{ - {Type: "samples", Unit: "count"}, - {Type: "cpu", Unit: "milliseconds"}, - }, - Sample: []*profile.Sample{ - { - Location: []*profile.Location{cpuL[0], cpuL[1], cpuL[2]}, - Value: []int64{1000, 1000}, - }, - { - Location: []*profile.Location{cpuL[3], cpuL[1], cpuL[4]}, - Value: []int64{1000, 1000}, - }, - { - Location: []*profile.Location{cpuL[2]}, - Value: []int64{1000, 1000}, - }, - { - Location: []*profile.Location{cpuL[4]}, - Value: []int64{1000, 1000}, - }, - }, - Location: cpuL, - Function: nil, - Mapping: cpuM, - } -} - -func heapProfile() *profile.Profile { - var heapM = []*profile.Mapping{ - { - ID: 1, - BuildID: "buildid", - Start: 0x1000, - Limit: 0x4000, - HasFunctions: true, - HasFilenames: true, - HasLineNumbers: true, - HasInlineFrames: true, - }, - } - - var heapF = []*profile.Function{ - {ID: 1, Name: "pruneme", SystemName: "pruneme", Filename: "prune.h"}, - {ID: 2, Name: "mangled1000", SystemName: "mangled1000", Filename: "testdata/file1000.src"}, - {ID: 3, Name: "mangled2000", SystemName: "mangled2000", Filename: "testdata/file2000.src"}, - {ID: 4, Name: "mangled2001", SystemName: "mangled2001", Filename: "testdata/file2000.src"}, - {ID: 5, Name: "mangled3000", SystemName: "mangled3000", Filename: "testdata/file3000.src"}, - {ID: 6, Name: "mangled3001", SystemName: "mangled3001", Filename: "testdata/file3000.src"}, - {ID: 7, Name: "mangled3002", SystemName: "mangled3002", Filename: "testdata/file3000.src"}, - {ID: 8, Name: "mangledMALLOC", SystemName: "mangledMALLOC", Filename: "malloc.h"}, - {ID: 9, Name: "mangledNEW", SystemName: "mangledNEW", Filename: "new.h"}, - } - - var heapL = []*profile.Location{ - { - ID: 1000, - Mapping: heapM[0], - Address: 0x1000, - Line: []profile.Line{ - {Function: heapF[0], Line: 100}, - {Function: heapF[7], Line: 100}, - {Function: heapF[1], Line: 1}, - }, - }, - { - ID: 2000, - Mapping: heapM[0], - Address: 0x2000, - Line: []profile.Line{ - {Function: heapF[8], Line: 100}, - {Function: heapF[3], Line: 2}, - {Function: heapF[2], Line: 3}, - }, - }, - { - ID: 3000, - Mapping: heapM[0], - Address: 0x3000, - Line: []profile.Line{ - {Function: heapF[8], Line: 100}, - {Function: heapF[6], Line: 3}, - {Function: heapF[5], Line: 2}, - {Function: heapF[4], Line: 4}, - }, - }, - { - ID: 3001, - Mapping: heapM[0], - Address: 0x3001, - Line: []profile.Line{ - {Function: heapF[0], Line: 100}, - {Function: heapF[8], Line: 100}, - {Function: heapF[5], Line: 2}, - {Function: heapF[4], Line: 4}, - }, - }, - { - ID: 3002, - Mapping: heapM[0], - Address: 0x3002, - Line: []profile.Line{ - {Function: heapF[6], Line: 3}, - {Function: heapF[4], Line: 4}, - }, - }, - } - - return &profile.Profile{ - Comments: []string{"comment", "#hidden comment"}, - PeriodType: &profile.ValueType{Type: "allocations", Unit: "bytes"}, - Period: 524288, - SampleType: []*profile.ValueType{ - {Type: "inuse_objects", Unit: "count"}, - {Type: "inuse_space", Unit: "bytes"}, - }, - Sample: []*profile.Sample{ - { - Location: []*profile.Location{heapL[0], heapL[1], heapL[2]}, - Value: []int64{10, 1024000}, - NumLabel: map[string][]int64{"bytes": {102400}}, - }, - { - Location: []*profile.Location{heapL[0], heapL[3]}, - Value: []int64{20, 4096000}, - NumLabel: map[string][]int64{"bytes": {204800}}, - }, - { - Location: []*profile.Location{heapL[1], heapL[4]}, - Value: []int64{40, 65536000}, - NumLabel: map[string][]int64{"bytes": {1638400}}, - }, - { - Location: []*profile.Location{heapL[2]}, - Value: []int64{80, 32768000}, - NumLabel: map[string][]int64{"bytes": {409600}}, - }, - }, - DropFrames: ".*operator new.*|malloc", - Location: heapL, - Function: heapF, - Mapping: heapM, - } -} - -func contentionProfile() *profile.Profile { - var contentionM = []*profile.Mapping{ - { - ID: 1, - BuildID: "buildid-contention", - Start: 0x1000, - Limit: 0x4000, - HasFunctions: true, - HasFilenames: true, - HasLineNumbers: true, - HasInlineFrames: true, - }, - } - - var contentionF = []*profile.Function{ - {ID: 1, Name: "mangled1000", SystemName: "mangled1000", Filename: "testdata/file1000.src"}, - {ID: 2, Name: "mangled2000", SystemName: "mangled2000", Filename: "testdata/file2000.src"}, - {ID: 3, Name: "mangled2001", SystemName: "mangled2001", Filename: "testdata/file2000.src"}, - {ID: 4, Name: "mangled3000", SystemName: "mangled3000", Filename: "testdata/file3000.src"}, - {ID: 5, Name: "mangled3001", SystemName: "mangled3001", Filename: "testdata/file3000.src"}, - {ID: 6, Name: "mangled3002", SystemName: "mangled3002", Filename: "testdata/file3000.src"}, - } - - var contentionL = []*profile.Location{ - { - ID: 1000, - Mapping: contentionM[0], - Address: 0x1000, - Line: []profile.Line{ - {Function: contentionF[0], Line: 1}, - }, - }, - { - ID: 2000, - Mapping: contentionM[0], - Address: 0x2000, - Line: []profile.Line{ - {Function: contentionF[2], Line: 2}, - {Function: contentionF[1], Line: 3}, - }, - }, - { - ID: 3000, - Mapping: contentionM[0], - Address: 0x3000, - Line: []profile.Line{ - {Function: contentionF[5], Line: 2}, - {Function: contentionF[4], Line: 3}, - {Function: contentionF[3], Line: 5}, - }, - }, - { - ID: 3001, - Mapping: contentionM[0], - Address: 0x3001, - Line: []profile.Line{ - {Function: contentionF[4], Line: 3}, - {Function: contentionF[3], Line: 5}, - }, - }, - { - ID: 3002, - Mapping: contentionM[0], - Address: 0x3002, - Line: []profile.Line{ - {Function: contentionF[5], Line: 4}, - {Function: contentionF[3], Line: 3}, - }, - }, - } - - return &profile.Profile{ - PeriodType: &profile.ValueType{Type: "contentions", Unit: "count"}, - Period: 524288, - SampleType: []*profile.ValueType{ - {Type: "contentions", Unit: "count"}, - {Type: "delay", Unit: "nanoseconds"}, - }, - Sample: []*profile.Sample{ - { - Location: []*profile.Location{contentionL[0], contentionL[1], contentionL[2]}, - Value: []int64{10, 10240000}, - }, - { - Location: []*profile.Location{contentionL[0], contentionL[3]}, - Value: []int64{20, 40960000}, - }, - { - Location: []*profile.Location{contentionL[1], contentionL[4]}, - Value: []int64{40, 65536000}, - }, - { - Location: []*profile.Location{contentionL[2]}, - Value: []int64{80, 32768000}, - }, - }, - Location: contentionL, - Function: contentionF, - Mapping: contentionM, - Comments: []string{"Comment #1", "Comment #2"}, - } -} - -func symzProfile() *profile.Profile { - var symzM = []*profile.Mapping{ - { - ID: 1, - Start: testStart, - Limit: 0x4000, - File: "/path/to/testbinary", - }, - } - - var symzL = []*profile.Location{ - {ID: 1, Mapping: symzM[0], Address: testStart}, - {ID: 2, Mapping: symzM[0], Address: testStart + 0x1000}, - {ID: 3, Mapping: symzM[0], Address: testStart + 0x2000}, - } - - return &profile.Profile{ - PeriodType: &profile.ValueType{Type: "cpu", Unit: "milliseconds"}, - Period: 1, - DurationNanos: 10e9, - SampleType: []*profile.ValueType{ - {Type: "samples", Unit: "count"}, - {Type: "cpu", Unit: "milliseconds"}, - }, - Sample: []*profile.Sample{ - { - Location: []*profile.Location{symzL[0], symzL[1], symzL[2]}, - Value: []int64{1, 1}, - }, - }, - Location: symzL, - Mapping: symzM, - } -} - -var autoCompleteTests = []struct { - in string - out string -}{ - {"", ""}, - {"xyz", "xyz"}, // no match - {"dis", "disasm"}, // single match - {"t", "t"}, // many matches - {"top abc", "top abc"}, // no function name match - {"top mangledM", "top mangledMALLOC"}, // single function name match - {"top cmd cmd mangledM", "top cmd cmd mangledMALLOC"}, - {"top mangled", "top mangled"}, // many function name matches - {"cmd mangledM", "cmd mangledM"}, // invalid command - {"top mangledM cmd", "top mangledM cmd"}, // cursor misplaced - {"top edMA", "top mangledMALLOC"}, // single infix function name match - {"top -mangledM", "top -mangledMALLOC"}, // ignore sign handled - {"lin", "lines"}, // single variable match - {"EdGeF", "edgefraction"}, // single capitalized match - {"help dis", "help disasm"}, // help command match - {"help relative_perc", "help relative_percentages"}, // help variable match - {"help coMpa", "help compact_labels"}, // help variable capitalized match -} - -func TestAutoComplete(t *testing.T) { - complete := newCompleter(functionNames(heapProfile())) - - for _, test := range autoCompleteTests { - if out := complete(test.in); out != test.out { - t.Errorf("autoComplete(%s) = %s; want %s", test.in, out, test.out) - } - } -} - -func TestTagFilter(t *testing.T) { - var tagFilterTests = []struct { - desc, value string - tags map[string][]string - want bool - }{ - { - "1 key with 1 matching value", - "tag2", - map[string][]string{"value1": {"tag1", "tag2"}}, - true, - }, - { - "1 key with no matching values", - "tag3", - map[string][]string{"value1": {"tag1", "tag2"}}, - false, - }, - { - "two keys, each with value matching different one value in list", - "tag1,tag3", - map[string][]string{"value1": {"tag1", "tag2"}, "value2": {"tag3"}}, - true, - }, - {"two keys, all value matching different regex value in list", - "t..[12],t..3", - map[string][]string{"value1": {"tag1", "tag2"}, "value2": {"tag3"}}, - true, - }, - { - "one key, not all values in list matched", - "tag2,tag3", - map[string][]string{"value1": {"tag1", "tag2"}}, - false, - }, - { - "key specified, list of tags where all tags in list matched", - "key1=tag1,tag2", - map[string][]string{"key1": {"tag1", "tag2"}}, - true, - }, - {"key specified, list of tag values where not all are matched", - "key1=tag1,tag2", - map[string][]string{"key1": {"tag1"}}, - true, - }, - { - "key included for regex matching, list of values where all values in list matched", - "key1:tag1,tag2", - map[string][]string{"key1": {"tag1", "tag2"}}, - true, - }, - { - "key included for regex matching, list of values where not only second value matched", - "key1:tag1,tag2", - map[string][]string{"key1": {"tag2"}}, - false, - }, - { - "key included for regex matching, list of values where not only first value matched", - "key1:tag1,tag2", - map[string][]string{"key1": {"tag1"}}, - false, - }, - } - for _, test := range tagFilterTests { - t.Run(test.desc, func(*testing.T) { - filter, err := compileTagFilter(test.desc, test.value, nil, &proftest.TestUI{T: t}, nil) - if err != nil { - t.Fatalf("tagFilter %s:%v", test.desc, err) - } - s := profile.Sample{ - Label: test.tags, - } - if got := filter(&s); got != test.want { - t.Errorf("tagFilter %s: got %v, want %v", test.desc, got, test.want) - } - }) - } -} - -func TestIdentifyNumLabelUnits(t *testing.T) { - var tagFilterTests = []struct { - desc string - tagVals []map[string][]int64 - tagUnits []map[string][]string - wantUnits map[string]string - allowedRx string - wantIgnoreErrCount int - }{ - { - "Multiple keys, no units for all keys", - []map[string][]int64{{"keyA": {131072}, "keyB": {128}}}, - []map[string][]string{{"keyA": {}, "keyB": {""}}}, - map[string]string{"keyA": "keyA", "keyB": "keyB"}, - "", - 0, - }, - { - "Multiple keys, different units for each key", - []map[string][]int64{{"keyA": {131072}, "keyB": {128}}}, - []map[string][]string{{"keyA": {"bytes"}, "keyB": {"kilobytes"}}}, - map[string]string{"keyA": "bytes", "keyB": "kilobytes"}, - "", - 0, - }, - { - "Multiple keys with multiple values, different units for each key", - []map[string][]int64{{"keyC": {131072, 1}, "keyD": {128, 252}}}, - []map[string][]string{{"keyC": {"bytes", "bytes"}, "keyD": {"kilobytes", "kilobytes"}}}, - map[string]string{"keyC": "bytes", "keyD": "kilobytes"}, - "", - 0, - }, - { - "Multiple keys with multiple values, some units missing", - []map[string][]int64{{"key1": {131072, 1}, "A": {128, 252}, "key3": {128}, "key4": {1}}, {"key3": {128}, "key4": {1}}}, - []map[string][]string{{"key1": {"", "bytes"}, "A": {"kilobytes", ""}, "key3": {""}, "key4": {"hour"}}, {"key3": {"seconds"}, "key4": {""}}}, - map[string]string{"key1": "bytes", "A": "kilobytes", "key3": "seconds", "key4": "hour"}, - "", - 0, - }, - { - "One key with three units in same sample", - []map[string][]int64{{"key": {8, 8, 16}}}, - []map[string][]string{{"key": {"bytes", "megabytes", "kilobytes"}}}, - map[string]string{"key": "bytes"}, - `(For tag key used unit bytes, also encountered unit\(s\) kilobytes, megabytes)`, - 1, - }, - { - "One key with four units in same sample", - []map[string][]int64{{"key": {8, 8, 16, 32}}}, - []map[string][]string{{"key": {"bytes", "kilobytes", "a", "megabytes"}}}, - map[string]string{"key": "bytes"}, - `(For tag key used unit bytes, also encountered unit\(s\) a, kilobytes, megabytes)`, - 1, - }, - { - "One key with two units in same sample", - []map[string][]int64{{"key": {8, 8}}}, - []map[string][]string{{"key": {"bytes", "seconds"}}}, - map[string]string{"key": "bytes"}, - `(For tag key used unit bytes, also encountered unit\(s\) seconds)`, - 1, - }, - { - "One key with different units in different samples", - []map[string][]int64{{"key1": {8}}, {"key1": {8}}, {"key1": {8}}}, - []map[string][]string{{"key1": {"bytes"}}, {"key1": {"kilobytes"}}, {"key1": {"megabytes"}}}, - map[string]string{"key1": "bytes"}, - `(For tag key1 used unit bytes, also encountered unit\(s\) kilobytes, megabytes)`, - 1, - }, - { - "Key alignment, unit not specified", - []map[string][]int64{{"alignment": {8}}}, - []map[string][]string{nil}, - map[string]string{"alignment": "bytes"}, - "", - 0, - }, - { - "Key request, unit not specified", - []map[string][]int64{{"request": {8}}, {"request": {8, 8}}}, - []map[string][]string{nil, nil}, - map[string]string{"request": "bytes"}, - "", - 0, - }, - { - "Check units not over-written for keys with default units", - []map[string][]int64{{ - "alignment": {8}, - "request": {8}, - "bytes": {8}, - }}, - []map[string][]string{{ - "alignment": {"seconds"}, - "request": {"minutes"}, - "bytes": {"hours"}, - }}, - map[string]string{ - "alignment": "seconds", - "request": "minutes", - "bytes": "hours", - }, - "", - 0, - }, - } - for _, test := range tagFilterTests { - t.Run(test.desc, func(*testing.T) { - p := profile.Profile{Sample: make([]*profile.Sample, len(test.tagVals))} - for i, numLabel := range test.tagVals { - s := profile.Sample{ - NumLabel: numLabel, - NumUnit: test.tagUnits[i], - } - p.Sample[i] = &s - } - testUI := &proftest.TestUI{T: t, AllowRx: test.allowedRx} - units := identifyNumLabelUnits(&p, testUI) - if !reflect.DeepEqual(test.wantUnits, units) { - t.Errorf("got %v units, want %v", units, test.wantUnits) - } - if got, want := testUI.NumAllowRxMatches, test.wantIgnoreErrCount; want != got { - t.Errorf("got %d errors logged, want %d errors logged", got, want) - } - }) - } -} - -func TestNumericTagFilter(t *testing.T) { - var tagFilterTests = []struct { - desc, value string - tags map[string][]int64 - identifiedUnits map[string]string - want bool - }{ - { - "Match when unit conversion required", - "128kb", - map[string][]int64{"key1": {131072}, "key2": {128}}, - map[string]string{"key1": "bytes", "key2": "kilobytes"}, - true, - }, - { - "Match only when values equal after unit conversion", - "512kb", - map[string][]int64{"key1": {512}, "key2": {128}}, - map[string]string{"key1": "bytes", "key2": "kilobytes"}, - false, - }, - { - "Match when values and units initially equal", - "10bytes", - map[string][]int64{"key1": {10}, "key2": {128}}, - map[string]string{"key1": "bytes", "key2": "kilobytes"}, - true, - }, - { - "Match range without lower bound, no unit conversion required", - ":10bytes", - map[string][]int64{"key1": {8}}, - map[string]string{"key1": "bytes"}, - true, - }, - { - "Match range without lower bound, unit conversion required", - ":10kb", - map[string][]int64{"key1": {8}}, - map[string]string{"key1": "bytes"}, - true, - }, - { - "Match range without upper bound, unit conversion required", - "10b:", - map[string][]int64{"key1": {8}}, - map[string]string{"key1": "kilobytes"}, - true, - }, - { - "Match range without upper bound, no unit conversion required", - "10b:", - map[string][]int64{"key1": {12}}, - map[string]string{"key1": "bytes"}, - true, - }, - { - "Don't match range without upper bound, no unit conversion required", - "10b:", - map[string][]int64{"key1": {8}}, - map[string]string{"key1": "bytes"}, - false, - }, - { - "Multiple keys with different units, don't match range without upper bound", - "10kb:", - map[string][]int64{"key1": {8}}, - map[string]string{"key1": "bytes", "key2": "kilobytes"}, - false, - }, - { - "Match range without upper bound, unit conversion required", - "10b:", - map[string][]int64{"key1": {8}}, - map[string]string{"key1": "kilobytes"}, - true, - }, - { - "Don't match range without lower bound, no unit conversion required", - ":10b", - map[string][]int64{"key1": {12}}, - map[string]string{"key1": "bytes"}, - false, - }, - { - "Match specific key, key present, one of two values match", - "bytes=5b", - map[string][]int64{"bytes": {10, 5}}, - map[string]string{"bytes": "bytes"}, - true, - }, - { - "Match specific key, key present and value matches", - "bytes=1024b", - map[string][]int64{"bytes": {1024}}, - map[string]string{"bytes": "kilobytes"}, - false, - }, - { - "Match specific key, matching key present and value matches, also non-matching key", - "bytes=1024b", - map[string][]int64{"bytes": {1024}, "key2": {5}}, - map[string]string{"bytes": "bytes", "key2": "bytes"}, - true, - }, - { - "Match specific key and range of values, value matches", - "bytes=512b:1024b", - map[string][]int64{"bytes": {780}}, - map[string]string{"bytes": "bytes"}, - true, - }, - { - "Match specific key and range of values, value too large", - "key1=1kb:2kb", - map[string][]int64{"key1": {4096}}, - map[string]string{"key1": "bytes"}, - false, - }, - { - "Match specific key and range of values, value too small", - "key1=1kb:2kb", - map[string][]int64{"key1": {256}}, - map[string]string{"key1": "bytes"}, - false, - }, - { - "Match specific key and value, unit conversion required", - "bytes=1024b", - map[string][]int64{"bytes": {1}}, - map[string]string{"bytes": "kilobytes"}, - true, - }, - { - "Match specific key and value, key does not appear", - "key2=256bytes", - map[string][]int64{"key1": {256}}, - map[string]string{"key1": "bytes"}, - false, - }, - } - for _, test := range tagFilterTests { - t.Run(test.desc, func(*testing.T) { - wantErrMsg := strings.Join([]string{"(", test.desc, ":Interpreted '", test.value[strings.Index(test.value, "=")+1:], "' as range, not regexp", ")"}, "") - filter, err := compileTagFilter(test.desc, test.value, test.identifiedUnits, &proftest.TestUI{T: t, - AllowRx: wantErrMsg}, nil) - if err != nil { - t.Fatalf("%v", err) - } - s := profile.Sample{ - NumLabel: test.tags, - } - if got := filter(&s); got != test.want { - t.Fatalf("got %v, want %v", got, test.want) - } - }) - } -} - -type testSymbolzMergeFetcher struct{} - -func (testSymbolzMergeFetcher) Fetch(s string, d, t time.Duration) (*profile.Profile, string, error) { - var p *profile.Profile - switch s { - case testSourceURL(8000) + "symbolz": - p = symzProfile() - case testSourceURL(8001) + "symbolz": - p = symzProfile() - p.Mapping[0].Start += testOffset - p.Mapping[0].Limit += testOffset - for i := range p.Location { - p.Location[i].Address += testOffset - } - default: - return nil, "", fmt.Errorf("unexpected source: %s", s) - } - return p, s, nil -} - -func TestSymbolzAfterMerge(t *testing.T) { - baseVars := pprofVariables - pprofVariables = baseVars.makeCopy() - defer func() { pprofVariables = baseVars }() - - f := baseFlags() - f.args = []string{ - testSourceURL(8000) + "symbolz", - testSourceURL(8001) + "symbolz", - } - - o := setDefaults(nil) - o.Flagset = f - o.Obj = new(mockObjTool) - src, cmd, err := parseFlags(o) - if err != nil { - t.Fatalf("parseFlags: %v", err) - } - - if len(cmd) != 1 || cmd[0] != "proto" { - t.Fatalf("parseFlags returned command %v, want [proto]", cmd) - } - - o.Fetch = testSymbolzMergeFetcher{} - o.Sym = testSymbolzSymbolizer{} - p, err := fetchProfiles(src, o) - if err != nil { - t.Fatalf("fetchProfiles: %v", err) - } - if len(p.Location) != 3 { - t.Errorf("Got %d locations after merge, want %d", len(p.Location), 3) - } - for i, l := range p.Location { - if len(l.Line) != 1 { - t.Errorf("Number of lines for symbolz %#x in iteration %d, got %d, want %d", l.Address, i, len(l.Line), 1) - continue - } - address := l.Address - l.Mapping.Start - if got, want := l.Line[0].Function.Name, fmt.Sprintf("%#x", address); got != want { - t.Errorf("symbolz %#x, got %s, want %s", address, got, want) - } - } -} - -type mockObjTool struct{} - -func (*mockObjTool) Open(file string, start, limit, offset uint64) (plugin.ObjFile, error) { - return &mockFile{file, "abcdef", 0}, nil -} - -func (m *mockObjTool) Disasm(file string, start, end uint64) ([]plugin.Inst, error) { - switch start { - case 0x1000: - return []plugin.Inst{ - {Addr: 0x1000, Text: "instruction one", File: "file1000.src", Line: 1}, - {Addr: 0x1001, Text: "instruction two", File: "file1000.src", Line: 1}, - {Addr: 0x1002, Text: "instruction three", File: "file1000.src", Line: 2}, - {Addr: 0x1003, Text: "instruction four", File: "file1000.src", Line: 1}, - }, nil - case 0x3000: - return []plugin.Inst{ - {Addr: 0x3000, Text: "instruction one"}, - {Addr: 0x3001, Text: "instruction two"}, - {Addr: 0x3002, Text: "instruction three"}, - {Addr: 0x3003, Text: "instruction four"}, - {Addr: 0x3004, Text: "instruction five"}, - }, nil - } - return nil, fmt.Errorf("unimplemented") -} - -type mockFile struct { - name, buildID string - base uint64 -} - -// Name returns the underlyinf file name, if available -func (m *mockFile) Name() string { - return m.name -} - -// Base returns the base address to use when looking up symbols in the file. -func (m *mockFile) Base() uint64 { - return m.base -} - -// BuildID returns the GNU build ID of the file, or an empty string. -func (m *mockFile) BuildID() string { - return m.buildID -} - -// SourceLine reports the source line information for a given -// address in the file. Due to inlining, the source line information -// is in general a list of positions representing a call stack, -// with the leaf function first. -func (*mockFile) SourceLine(addr uint64) ([]plugin.Frame, error) { - return nil, fmt.Errorf("unimplemented") -} - -// Symbols returns a list of symbols in the object file. -// If r is not nil, Symbols restricts the list to symbols -// with names matching the regular expression. -// If addr is not zero, Symbols restricts the list to symbols -// containing that address. -func (m *mockFile) Symbols(r *regexp.Regexp, addr uint64) ([]*plugin.Sym, error) { - switch r.String() { - case "line[13]": - return []*plugin.Sym{ - { - Name: []string{"line1000"}, File: m.name, - Start: 0x1000, End: 0x1003, - }, - { - Name: []string{"line3000"}, File: m.name, - Start: 0x3000, End: 0x3004, - }, - }, nil - } - return nil, fmt.Errorf("unimplemented") -} - -// Close closes the file, releasing associated resources. -func (*mockFile) Close() error { - return nil -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/fetch_test.go b/src/cmd/vendor/github.com/google/pprof/internal/driver/fetch_test.go deleted file mode 100644 index b9e9dfe8f450b6..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/fetch_test.go +++ /dev/null @@ -1,758 +0,0 @@ -// Copyright 2014 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package driver - -import ( - "crypto/ecdsa" - "crypto/elliptic" - "crypto/rand" - "crypto/tls" - "crypto/x509" - "encoding/pem" - "fmt" - "io/ioutil" - "math/big" - "net" - "net/http" - "os" - "path/filepath" - "reflect" - "regexp" - "runtime" - "strings" - "testing" - "time" - - "github.com/google/pprof/internal/binutils" - "github.com/google/pprof/internal/plugin" - "github.com/google/pprof/internal/proftest" - "github.com/google/pprof/internal/symbolizer" - "github.com/google/pprof/internal/transport" - "github.com/google/pprof/profile" -) - -func TestSymbolizationPath(t *testing.T) { - if runtime.GOOS == "windows" { - t.Skip("test assumes Unix paths") - } - - // Save environment variables to restore after test - saveHome := os.Getenv(homeEnv()) - savePath := os.Getenv("PPROF_BINARY_PATH") - - tempdir, err := ioutil.TempDir("", "home") - if err != nil { - t.Fatal("creating temp dir: ", err) - } - defer os.RemoveAll(tempdir) - os.MkdirAll(filepath.Join(tempdir, "pprof", "binaries", "abcde10001"), 0700) - os.Create(filepath.Join(tempdir, "pprof", "binaries", "abcde10001", "binary")) - - obj := testObj{tempdir} - os.Setenv(homeEnv(), tempdir) - for _, tc := range []struct { - env, file, buildID, want string - msgCount int - }{ - {"", "/usr/bin/binary", "", "/usr/bin/binary", 0}, - {"", "/usr/bin/binary", "fedcb10000", "/usr/bin/binary", 0}, - {"/usr", "/bin/binary", "", "/usr/bin/binary", 0}, - {"", "/prod/path/binary", "abcde10001", filepath.Join(tempdir, "pprof/binaries/abcde10001/binary"), 0}, - {"/alternate/architecture", "/usr/bin/binary", "", "/alternate/architecture/binary", 0}, - {"/alternate/architecture", "/usr/bin/binary", "abcde10001", "/alternate/architecture/binary", 0}, - {"/nowhere:/alternate/architecture", "/usr/bin/binary", "fedcb10000", "/usr/bin/binary", 1}, - {"/nowhere:/alternate/architecture", "/usr/bin/binary", "abcde10002", "/usr/bin/binary", 1}, - } { - os.Setenv("PPROF_BINARY_PATH", tc.env) - p := &profile.Profile{ - Mapping: []*profile.Mapping{ - { - File: tc.file, - BuildID: tc.buildID, - }, - }, - } - s := &source{} - locateBinaries(p, s, obj, &proftest.TestUI{T: t, Ignore: tc.msgCount}) - if file := p.Mapping[0].File; file != tc.want { - t.Errorf("%s:%s:%s, want %s, got %s", tc.env, tc.file, tc.buildID, tc.want, file) - } - } - os.Setenv(homeEnv(), saveHome) - os.Setenv("PPROF_BINARY_PATH", savePath) -} - -func TestCollectMappingSources(t *testing.T) { - const startAddress uint64 = 0x40000 - const url = "http://example.com" - for _, tc := range []struct { - file, buildID string - want plugin.MappingSources - }{ - {"/usr/bin/binary", "buildId", mappingSources("buildId", url, startAddress)}, - {"/usr/bin/binary", "", mappingSources("/usr/bin/binary", url, startAddress)}, - {"", "", mappingSources(url, url, startAddress)}, - } { - p := &profile.Profile{ - Mapping: []*profile.Mapping{ - { - File: tc.file, - BuildID: tc.buildID, - Start: startAddress, - }, - }, - } - got := collectMappingSources(p, url) - if !reflect.DeepEqual(got, tc.want) { - t.Errorf("%s:%s, want %v, got %v", tc.file, tc.buildID, tc.want, got) - } - } -} - -func TestUnsourceMappings(t *testing.T) { - for _, tc := range []struct { - file, buildID, want string - }{ - {"/usr/bin/binary", "buildId", "/usr/bin/binary"}, - {"http://example.com", "", ""}, - } { - p := &profile.Profile{ - Mapping: []*profile.Mapping{ - { - File: tc.file, - BuildID: tc.buildID, - }, - }, - } - unsourceMappings(p) - if got := p.Mapping[0].File; got != tc.want { - t.Errorf("%s:%s, want %s, got %s", tc.file, tc.buildID, tc.want, got) - } - } -} - -type testObj struct { - home string -} - -func (o testObj) Open(file string, start, limit, offset uint64) (plugin.ObjFile, error) { - switch file { - case "/alternate/architecture/binary": - return testFile{file, "abcde10001"}, nil - case "/usr/bin/binary": - return testFile{file, "fedcb10000"}, nil - case filepath.Join(o.home, "pprof/binaries/abcde10001/binary"): - return testFile{file, "abcde10001"}, nil - } - return nil, fmt.Errorf("not found: %s", file) -} -func (testObj) Demangler(_ string) func(names []string) (map[string]string, error) { - return func(names []string) (map[string]string, error) { return nil, nil } -} -func (testObj) Disasm(file string, start, end uint64) ([]plugin.Inst, error) { return nil, nil } - -type testFile struct{ name, buildID string } - -func (f testFile) Name() string { return f.name } -func (testFile) Base() uint64 { return 0 } -func (f testFile) BuildID() string { return f.buildID } -func (testFile) SourceLine(addr uint64) ([]plugin.Frame, error) { return nil, nil } -func (testFile) Symbols(r *regexp.Regexp, addr uint64) ([]*plugin.Sym, error) { return nil, nil } -func (testFile) Close() error { return nil } - -func TestFetch(t *testing.T) { - const path = "testdata/" - type testcase struct { - source, execName string - } - - for _, tc := range []testcase{ - {path + "go.crc32.cpu", ""}, - {path + "go.nomappings.crash", "/bin/gotest.exe"}, - {"http://localhost/profile?file=cppbench.cpu", ""}, - } { - p, _, _, err := grabProfile(&source{ExecName: tc.execName}, tc.source, nil, testObj{}, &proftest.TestUI{T: t}, &httpTransport{}) - if err != nil { - t.Fatalf("%s: %s", tc.source, err) - } - if len(p.Sample) == 0 { - t.Errorf("%s: want non-zero samples", tc.source) - } - if e := tc.execName; e != "" { - switch { - case len(p.Mapping) == 0 || p.Mapping[0] == nil: - t.Errorf("%s: want mapping[0].execName == %s, got no mappings", tc.source, e) - case p.Mapping[0].File != e: - t.Errorf("%s: want mapping[0].execName == %s, got %s", tc.source, e, p.Mapping[0].File) - } - } - } -} - -func TestFetchWithBase(t *testing.T) { - baseVars := pprofVariables - defer func() { pprofVariables = baseVars }() - - type WantSample struct { - values []int64 - labels map[string][]string - } - - const path = "testdata/" - type testcase struct { - desc string - sources []string - bases []string - diffBases []string - normalize bool - wantSamples []WantSample - wantErrorMsg string - } - - testcases := []testcase{ - { - "not normalized base is same as source", - []string{path + "cppbench.contention"}, - []string{path + "cppbench.contention"}, - nil, - false, - nil, - "", - }, - { - "not normalized base is same as source", - []string{path + "cppbench.contention"}, - []string{path + "cppbench.contention"}, - nil, - false, - nil, - "", - }, - { - "not normalized single source, multiple base (all profiles same)", - []string{path + "cppbench.contention"}, - []string{path + "cppbench.contention", path + "cppbench.contention"}, - nil, - false, - []WantSample{ - { - values: []int64{-2700, -608881724}, - labels: map[string][]string{}, - }, - { - values: []int64{-100, -23992}, - labels: map[string][]string{}, - }, - { - values: []int64{-200, -179943}, - labels: map[string][]string{}, - }, - { - values: []int64{-100, -17778444}, - labels: map[string][]string{}, - }, - { - values: []int64{-100, -75976}, - labels: map[string][]string{}, - }, - { - values: []int64{-300, -63568134}, - labels: map[string][]string{}, - }, - }, - "", - }, - { - "not normalized, different base and source", - []string{path + "cppbench.contention"}, - []string{path + "cppbench.small.contention"}, - nil, - false, - []WantSample{ - { - values: []int64{1700, 608878600}, - labels: map[string][]string{}, - }, - { - values: []int64{100, 23992}, - labels: map[string][]string{}, - }, - { - values: []int64{200, 179943}, - labels: map[string][]string{}, - }, - { - values: []int64{100, 17778444}, - labels: map[string][]string{}, - }, - { - values: []int64{100, 75976}, - labels: map[string][]string{}, - }, - { - values: []int64{300, 63568134}, - labels: map[string][]string{}, - }, - }, - "", - }, - { - "normalized base is same as source", - []string{path + "cppbench.contention"}, - []string{path + "cppbench.contention"}, - nil, - true, - nil, - "", - }, - { - "normalized single source, multiple base (all profiles same)", - []string{path + "cppbench.contention"}, - []string{path + "cppbench.contention", path + "cppbench.contention"}, - nil, - true, - nil, - "", - }, - { - "normalized different base and source", - []string{path + "cppbench.contention"}, - []string{path + "cppbench.small.contention"}, - nil, - true, - []WantSample{ - { - values: []int64{-229, -370}, - labels: map[string][]string{}, - }, - { - values: []int64{28, 0}, - labels: map[string][]string{}, - }, - { - values: []int64{57, 0}, - labels: map[string][]string{}, - }, - { - values: []int64{28, 80}, - labels: map[string][]string{}, - }, - { - values: []int64{28, 0}, - labels: map[string][]string{}, - }, - { - values: []int64{85, 287}, - labels: map[string][]string{}, - }, - }, - "", - }, - { - "not normalized diff base is same as source", - []string{path + "cppbench.contention"}, - nil, - []string{path + "cppbench.contention"}, - false, - []WantSample{ - { - values: []int64{2700, 608881724}, - labels: map[string][]string{}, - }, - { - values: []int64{100, 23992}, - labels: map[string][]string{}, - }, - { - values: []int64{200, 179943}, - labels: map[string][]string{}, - }, - { - values: []int64{100, 17778444}, - labels: map[string][]string{}, - }, - { - values: []int64{100, 75976}, - labels: map[string][]string{}, - }, - { - values: []int64{300, 63568134}, - labels: map[string][]string{}, - }, - { - values: []int64{-2700, -608881724}, - labels: map[string][]string{"pprof::base": {"true"}}, - }, - { - values: []int64{-100, -23992}, - labels: map[string][]string{"pprof::base": {"true"}}, - }, - { - values: []int64{-200, -179943}, - labels: map[string][]string{"pprof::base": {"true"}}, - }, - { - values: []int64{-100, -17778444}, - labels: map[string][]string{"pprof::base": {"true"}}, - }, - { - values: []int64{-100, -75976}, - labels: map[string][]string{"pprof::base": {"true"}}, - }, - { - values: []int64{-300, -63568134}, - labels: map[string][]string{"pprof::base": {"true"}}, - }, - }, - "", - }, - { - "diff_base and base both specified", - []string{path + "cppbench.contention"}, - []string{path + "cppbench.contention"}, - []string{path + "cppbench.contention"}, - false, - nil, - "-base and -diff_base flags cannot both be specified", - }, - } - - for _, tc := range testcases { - t.Run(tc.desc, func(t *testing.T) { - pprofVariables = baseVars.makeCopy() - f := testFlags{ - stringLists: map[string][]string{ - "base": tc.bases, - "diff_base": tc.diffBases, - }, - bools: map[string]bool{ - "normalize": tc.normalize, - }, - } - f.args = tc.sources - - o := setDefaults(&plugin.Options{ - UI: &proftest.TestUI{T: t, AllowRx: "Local symbolization failed|Some binary filenames not available"}, - Flagset: f, - HTTPTransport: transport.New(nil), - }) - src, _, err := parseFlags(o) - - if tc.wantErrorMsg != "" { - if err == nil { - t.Fatalf("got nil, want error %q", tc.wantErrorMsg) - } - - if gotErrMsg := err.Error(); gotErrMsg != tc.wantErrorMsg { - t.Fatalf("got error %q, want error %q", gotErrMsg, tc.wantErrorMsg) - } - return - } - - if err != nil { - t.Fatalf("got error %q, want no error", err) - } - - p, err := fetchProfiles(src, o) - - if err != nil { - t.Fatalf("got error %q, want no error", err) - } - - if got, want := len(p.Sample), len(tc.wantSamples); got != want { - t.Fatalf("got %d samples want %d", got, want) - } - - for i, sample := range p.Sample { - if !reflect.DeepEqual(tc.wantSamples[i].values, sample.Value) { - t.Errorf("for sample %d got values %v, want %v", i, sample.Value, tc.wantSamples[i]) - } - if !reflect.DeepEqual(tc.wantSamples[i].labels, sample.Label) { - t.Errorf("for sample %d got labels %v, want %v", i, sample.Label, tc.wantSamples[i].labels) - } - } - }) - } -} - -// mappingSources creates MappingSources map with a single item. -func mappingSources(key, source string, start uint64) plugin.MappingSources { - return plugin.MappingSources{ - key: []struct { - Source string - Start uint64 - }{ - {Source: source, Start: start}, - }, - } -} - -type httpTransport struct{} - -func (tr *httpTransport) RoundTrip(req *http.Request) (*http.Response, error) { - values := req.URL.Query() - file := values.Get("file") - - if file == "" { - return nil, fmt.Errorf("want .../file?profile, got %s", req.URL.String()) - } - - t := &http.Transport{} - t.RegisterProtocol("file", http.NewFileTransport(http.Dir("testdata/"))) - - c := &http.Client{Transport: t} - return c.Get("file:///" + file) -} - -func closedError() string { - if runtime.GOOS == "plan9" { - return "listen hungup" - } - return "use of closed" -} - -func TestHTTPSInsecure(t *testing.T) { - if runtime.GOOS == "nacl" || runtime.GOOS == "js" { - t.Skip("test assumes tcp available") - } - saveHome := os.Getenv(homeEnv()) - tempdir, err := ioutil.TempDir("", "home") - if err != nil { - t.Fatal("creating temp dir: ", err) - } - defer os.RemoveAll(tempdir) - - // pprof writes to $HOME/pprof by default which is not necessarily - // writeable (e.g. on a Debian buildd) so set $HOME to something we - // know we can write to for the duration of the test. - os.Setenv(homeEnv(), tempdir) - defer os.Setenv(homeEnv(), saveHome) - - baseVars := pprofVariables - pprofVariables = baseVars.makeCopy() - defer func() { pprofVariables = baseVars }() - - tlsCert, _, _ := selfSignedCert(t, "") - tlsConfig := &tls.Config{Certificates: []tls.Certificate{tlsCert}} - - l, err := tls.Listen("tcp", "localhost:0", tlsConfig) - if err != nil { - t.Fatalf("net.Listen: got error %v, want no error", err) - } - - donec := make(chan error, 1) - go func(donec chan<- error) { - donec <- http.Serve(l, nil) - }(donec) - defer func() { - if got, want := <-donec, closedError(); !strings.Contains(got.Error(), want) { - t.Fatalf("Serve got error %v, want %q", got, want) - } - }() - defer l.Close() - - outputTempFile, err := ioutil.TempFile("", "profile_output") - if err != nil { - t.Fatalf("Failed to create tempfile: %v", err) - } - defer os.Remove(outputTempFile.Name()) - defer outputTempFile.Close() - - address := "https+insecure://" + l.Addr().String() + "/debug/pprof/goroutine" - s := &source{ - Sources: []string{address}, - Seconds: 10, - Timeout: 10, - Symbolize: "remote", - } - o := &plugin.Options{ - Obj: &binutils.Binutils{}, - UI: &proftest.TestUI{T: t, AllowRx: "Saved profile in"}, - HTTPTransport: transport.New(nil), - } - o.Sym = &symbolizer.Symbolizer{Obj: o.Obj, UI: o.UI} - p, err := fetchProfiles(s, o) - if err != nil { - t.Fatal(err) - } - if len(p.SampleType) == 0 { - t.Fatalf("fetchProfiles(%s) got empty profile: len(p.SampleType)==0", address) - } - if len(p.Function) == 0 { - t.Fatalf("fetchProfiles(%s) got non-symbolized profile: len(p.Function)==0", address) - } - if err := checkProfileHasFunction(p, "TestHTTPSInsecure"); err != nil { - t.Fatalf("fetchProfiles(%s) %v", address, err) - } -} - -func TestHTTPSWithServerCertFetch(t *testing.T) { - if runtime.GOOS == "nacl" || runtime.GOOS == "js" { - t.Skip("test assumes tcp available") - } - saveHome := os.Getenv(homeEnv()) - tempdir, err := ioutil.TempDir("", "home") - if err != nil { - t.Fatal("creating temp dir: ", err) - } - defer os.RemoveAll(tempdir) - - // pprof writes to $HOME/pprof by default which is not necessarily - // writeable (e.g. on a Debian buildd) so set $HOME to something we - // know we can write to for the duration of the test. - os.Setenv(homeEnv(), tempdir) - defer os.Setenv(homeEnv(), saveHome) - - baseVars := pprofVariables - pprofVariables = baseVars.makeCopy() - defer func() { pprofVariables = baseVars }() - - cert, certBytes, keyBytes := selfSignedCert(t, "localhost") - cas := x509.NewCertPool() - cas.AppendCertsFromPEM(certBytes) - - tlsConfig := &tls.Config{ - RootCAs: cas, - Certificates: []tls.Certificate{cert}, - ClientAuth: tls.RequireAndVerifyClientCert, - ClientCAs: cas, - } - - l, err := tls.Listen("tcp", "localhost:0", tlsConfig) - if err != nil { - t.Fatalf("net.Listen: got error %v, want no error", err) - } - - donec := make(chan error, 1) - go func(donec chan<- error) { - donec <- http.Serve(l, nil) - }(donec) - defer func() { - if got, want := <-donec, closedError(); !strings.Contains(got.Error(), want) { - t.Fatalf("Serve got error %v, want %q", got, want) - } - }() - defer l.Close() - - outputTempFile, err := ioutil.TempFile("", "profile_output") - if err != nil { - t.Fatalf("Failed to create tempfile: %v", err) - } - defer os.Remove(outputTempFile.Name()) - defer outputTempFile.Close() - - // Get port from the address, so request to the server can be made using - // the host name specified in certificates. - _, portStr, err := net.SplitHostPort(l.Addr().String()) - if err != nil { - t.Fatalf("cannot get port from URL: %v", err) - } - address := "https://" + "localhost:" + portStr + "/debug/pprof/goroutine" - s := &source{ - Sources: []string{address}, - Seconds: 10, - Timeout: 10, - Symbolize: "remote", - } - - certTempFile, err := ioutil.TempFile("", "cert_output") - if err != nil { - t.Errorf("cannot create cert tempfile: %v", err) - } - defer os.Remove(certTempFile.Name()) - defer certTempFile.Close() - certTempFile.Write(certBytes) - - keyTempFile, err := ioutil.TempFile("", "key_output") - if err != nil { - t.Errorf("cannot create key tempfile: %v", err) - } - defer os.Remove(keyTempFile.Name()) - defer keyTempFile.Close() - keyTempFile.Write(keyBytes) - - f := &testFlags{ - strings: map[string]string{ - "tls_cert": certTempFile.Name(), - "tls_key": keyTempFile.Name(), - "tls_ca": certTempFile.Name(), - }, - } - o := &plugin.Options{ - Obj: &binutils.Binutils{}, - UI: &proftest.TestUI{T: t, AllowRx: "Saved profile in"}, - Flagset: f, - HTTPTransport: transport.New(f), - } - - o.Sym = &symbolizer.Symbolizer{Obj: o.Obj, UI: o.UI, Transport: o.HTTPTransport} - p, err := fetchProfiles(s, o) - if err != nil { - t.Fatal(err) - } - if len(p.SampleType) == 0 { - t.Fatalf("fetchProfiles(%s) got empty profile: len(p.SampleType)==0", address) - } - if len(p.Function) == 0 { - t.Fatalf("fetchProfiles(%s) got non-symbolized profile: len(p.Function)==0", address) - } - if err := checkProfileHasFunction(p, "TestHTTPSWithServerCertFetch"); err != nil { - t.Fatalf("fetchProfiles(%s) %v", address, err) - } -} - -func checkProfileHasFunction(p *profile.Profile, fname string) error { - for _, f := range p.Function { - if strings.Contains(f.Name, fname) { - return nil - } - } - return fmt.Errorf("got %s, want function %q", p.String(), fname) -} - -// selfSignedCert generates a self-signed certificate, and returns the -// generated certificate, and byte arrays containing the certificate and -// key associated with the certificate. -func selfSignedCert(t *testing.T, host string) (tls.Certificate, []byte, []byte) { - privKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - if err != nil { - t.Fatalf("failed to generate private key: %v", err) - } - b, err := x509.MarshalECPrivateKey(privKey) - if err != nil { - t.Fatalf("failed to marshal private key: %v", err) - } - bk := pem.EncodeToMemory(&pem.Block{Type: "EC PRIVATE KEY", Bytes: b}) - - tmpl := x509.Certificate{ - SerialNumber: big.NewInt(1), - NotBefore: time.Now(), - NotAfter: time.Now().Add(10 * time.Minute), - IsCA: true, - DNSNames: []string{host}, - } - - b, err = x509.CreateCertificate(rand.Reader, &tmpl, &tmpl, privKey.Public(), privKey) - if err != nil { - t.Fatalf("failed to create cert: %v", err) - } - bc := pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: b}) - - cert, err := tls.X509KeyPair(bc, bk) - if err != nil { - t.Fatalf("failed to create TLS key pair: %v", err) - } - return cert, bc, bk -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/interactive_test.go b/src/cmd/vendor/github.com/google/pprof/internal/driver/interactive_test.go deleted file mode 100644 index 758adf9bdced1c..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/interactive_test.go +++ /dev/null @@ -1,316 +0,0 @@ -// Copyright 2014 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package driver - -import ( - "fmt" - "math/rand" - "strings" - "testing" - - "github.com/google/pprof/internal/plugin" - "github.com/google/pprof/internal/proftest" - "github.com/google/pprof/internal/report" - "github.com/google/pprof/internal/transport" - "github.com/google/pprof/profile" -) - -func TestShell(t *testing.T) { - p := &profile.Profile{} - generateReportWrapper = checkValue - defer func() { generateReportWrapper = generateReport }() - - // Use test commands and variables to exercise interactive processing - var savedCommands commands - savedCommands, pprofCommands = pprofCommands, testCommands - defer func() { pprofCommands = savedCommands }() - - savedVariables := pprofVariables - defer func() { pprofVariables = savedVariables }() - - // Random interleave of independent scripts - pprofVariables = testVariables(savedVariables) - - // pass in HTTPTransport when setting defaults, because otherwise default - // transport will try to add flags to the default flag set. - o := setDefaults(&plugin.Options{HTTPTransport: transport.New(nil)}) - o.UI = newUI(t, interleave(script, 0)) - if err := interactive(p, o); err != nil { - t.Error("first attempt:", err) - } - // Random interleave of independent scripts - pprofVariables = testVariables(savedVariables) - o.UI = newUI(t, interleave(script, 1)) - if err := interactive(p, o); err != nil { - t.Error("second attempt:", err) - } - - // Random interleave of independent scripts with shortcuts - pprofVariables = testVariables(savedVariables) - var scScript []string - pprofShortcuts, scScript = makeShortcuts(interleave(script, 2), 1) - o.UI = newUI(t, scScript) - if err := interactive(p, o); err != nil { - t.Error("first shortcut attempt:", err) - } - - // Random interleave of independent scripts with shortcuts - pprofVariables = testVariables(savedVariables) - pprofShortcuts, scScript = makeShortcuts(interleave(script, 1), 2) - o.UI = newUI(t, scScript) - if err := interactive(p, o); err != nil { - t.Error("second shortcut attempt:", err) - } - - // Group with invalid value - pprofVariables = testVariables(savedVariables) - ui := &proftest.TestUI{ - T: t, - Input: []string{"cumulative=this"}, - AllowRx: `Unrecognized value for cumulative: "this". Use one of cum, flat`, - } - o.UI = ui - if err := interactive(p, o); err != nil { - t.Error("invalid group value:", err) - } - // Confirm error message written out once. - if ui.NumAllowRxMatches != 1 { - t.Errorf("want error message to be printed 1 time, got %v", ui.NumAllowRxMatches) - } - // Verify propagation of IO errors - pprofVariables = testVariables(savedVariables) - o.UI = newUI(t, []string{"**error**"}) - if err := interactive(p, o); err == nil { - t.Error("expected IO error, got nil") - } - -} - -var testCommands = commands{ - "check": &command{report.Raw, nil, nil, true, "", ""}, -} - -func testVariables(base variables) variables { - v := base.makeCopy() - - v["b"] = &variable{boolKind, "f", "", ""} - v["bb"] = &variable{boolKind, "f", "", ""} - v["i"] = &variable{intKind, "0", "", ""} - v["ii"] = &variable{intKind, "0", "", ""} - v["f"] = &variable{floatKind, "0", "", ""} - v["ff"] = &variable{floatKind, "0", "", ""} - v["s"] = &variable{stringKind, "", "", ""} - v["ss"] = &variable{stringKind, "", "", ""} - - v["ta"] = &variable{boolKind, "f", "radio", ""} - v["tb"] = &variable{boolKind, "f", "radio", ""} - v["tc"] = &variable{boolKind, "t", "radio", ""} - - return v -} - -// script contains sequences of commands to be executed for testing. Commands -// are split by semicolon and interleaved randomly, so they must be -// independent from each other. -var script = []string{ - "bb=true;bb=false;check bb=false;bb=yes;check bb=true", - "b=1;check b=true;b=n;check b=false", - "i=-1;i=-2;check i=-2;i=999999;check i=999999", - "check ii=0;ii=-1;check ii=-1;ii=100;check ii=100", - "f=-1;f=-2.5;check f=-2.5;f=0.0001;check f=0.0001", - "check ff=0;ff=-1.01;check ff=-1.01;ff=100;check ff=100", - "s=one;s=two;check s=two", - "ss=tree;check ss=tree;ss=;check ss;ss=forest;check ss=forest", - "ta=true;check ta=true;check tb=false;check tc=false;tb=1;check tb=true;check ta=false;check tc=false;tc=yes;check tb=false;check ta=false;check tc=true", -} - -func makeShortcuts(input []string, seed int) (shortcuts, []string) { - rand.Seed(int64(seed)) - - s := shortcuts{} - var output, chunk []string - for _, l := range input { - chunk = append(chunk, l) - switch rand.Intn(3) { - case 0: - // Create a macro for commands in 'chunk'. - macro := fmt.Sprintf("alias%d", len(s)) - s[macro] = chunk - output = append(output, macro) - chunk = nil - case 1: - // Append commands in 'chunk' by themselves. - output = append(output, chunk...) - chunk = nil - case 2: - // Accumulate commands into 'chunk' - } - } - output = append(output, chunk...) - return s, output -} - -func newUI(t *testing.T, input []string) plugin.UI { - return &proftest.TestUI{ - T: t, - Input: input, - } -} - -func checkValue(p *profile.Profile, cmd []string, vars variables, o *plugin.Options) error { - if len(cmd) != 2 { - return fmt.Errorf("expected len(cmd)==2, got %v", cmd) - } - - input := cmd[1] - args := strings.SplitN(input, "=", 2) - if len(args) == 0 { - return fmt.Errorf("unexpected empty input") - } - name, value := args[0], "" - if len(args) == 2 { - value = args[1] - } - - gotv := vars[name] - if gotv == nil { - return fmt.Errorf("Could not find variable named %s", name) - } - - if got := gotv.stringValue(); got != value { - return fmt.Errorf("Variable %s, want %s, got %s", name, value, got) - } - return nil -} - -func interleave(input []string, seed int) []string { - var inputs [][]string - for _, s := range input { - inputs = append(inputs, strings.Split(s, ";")) - } - rand.Seed(int64(seed)) - var output []string - for len(inputs) > 0 { - next := rand.Intn(len(inputs)) - output = append(output, inputs[next][0]) - if tail := inputs[next][1:]; len(tail) > 0 { - inputs[next] = tail - } else { - inputs = append(inputs[:next], inputs[next+1:]...) - } - } - return output -} - -func TestInteractiveCommands(t *testing.T) { - type interactiveTestcase struct { - input string - want map[string]string - } - - testcases := []interactiveTestcase{ - { - "top 10 --cum focus1 -ignore focus2", - map[string]string{ - "functions": "true", - "nodecount": "10", - "cum": "true", - "focus": "focus1|focus2", - "ignore": "ignore", - }, - }, - { - "top10 --cum focus1 -ignore focus2", - map[string]string{ - "functions": "true", - "nodecount": "10", - "cum": "true", - "focus": "focus1|focus2", - "ignore": "ignore", - }, - }, - { - "dot", - map[string]string{ - "functions": "true", - "nodecount": "80", - "cum": "false", - }, - }, - { - "tags -ignore1 -ignore2 focus1 >out", - map[string]string{ - "functions": "true", - "nodecount": "80", - "cum": "false", - "output": "out", - "tagfocus": "focus1", - "tagignore": "ignore1|ignore2", - }, - }, - { - "weblist find -test", - map[string]string{ - "functions": "false", - "addresses": "true", - "noinlines": "true", - "nodecount": "0", - "cum": "false", - "flat": "true", - "ignore": "test", - }, - }, - { - "callgrind fun -ignore >out", - map[string]string{ - "functions": "false", - "addresses": "true", - "nodecount": "0", - "cum": "false", - "flat": "true", - "output": "out", - }, - }, - { - "999", - nil, // Error - }, - } - - for _, tc := range testcases { - cmd, vars, err := parseCommandLine(strings.Fields(tc.input)) - if tc.want == nil && err != nil { - // Error expected - continue - } - if err != nil { - t.Errorf("failed on %q: %v", tc.input, err) - continue - } - - // Get report output format - c := pprofCommands[cmd[0]] - if c == nil { - t.Errorf("unexpected nil command") - } - vars = applyCommandOverrides(cmd[0], c.format, vars) - - for n, want := range tc.want { - if got := vars[n].stringValue(); got != want { - t.Errorf("failed on %q, cmd=%q, %s got %s, want %s", tc.input, cmd, n, got, want) - } - } - } -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/cppbench.contention b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/cppbench.contention deleted file mode 100644 index 66a64c950c50ee..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/cppbench.contention +++ /dev/null @@ -1,24 +0,0 @@ ---- contentionz 1 --- -cycles/second = 3201000000 -sampling period = 100 -ms since reset = 16502830 -discarded samples = 0 - 19490304 27 @ 0xbccc97 0xc61202 0x42ed5f 0x42edc1 0x42e15a 0x5261af 0x526edf 0x5280ab 0x79e80a 0x7a251b 0x7a296d 0xa456e4 0x7fcdc2ff214e - 768 1 @ 0xbccc97 0xa42dc7 0xa456e4 0x7fcdc2ff214e - 5760 2 @ 0xbccc97 0xb82b73 0xb82bcb 0xb87eab 0xb8814c 0x4e969d 0x4faa17 0x4fc5f6 0x4fd028 0x4fd230 0x79e80a 0x7a251b 0x7a296d 0xa456e4 0x7fcdc2ff214e - 569088 1 @ 0xbccc97 0xb82b73 0xb82bcb 0xb87f08 0xb8814c 0x42ed5f 0x42edc1 0x42e15a 0x5261af 0x526edf 0x5280ab 0x79e80a 0x7a251b 0x7a296d 0xa456e4 0x7fcdc2ff214e - 2432 1 @ 0xbccc97 0xb82b73 0xb82bcb 0xb87eab 0xb8814c 0x7aa74c 0x7ab844 0x7ab914 0x79e9e9 0x79e326 0x4d299e 0x4d4b7b 0x4b7be8 0x4b7ff1 0x4d2dae 0x79e80a - 2034816 3 @ 0xbccc97 0xb82f0f 0xb83003 0xb87d50 0xc635f0 0x42ecc3 0x42e14c 0x5261af 0x526edf 0x5280ab 0x79e80a 0x7a251b 0x7a296d 0xa456e4 0x7fcdc2ff214e ---- Memory map: --- - 00400000-00fcb000: cppbench_server_main - 7fcdc231e000-7fcdc2321000: /libnss_cache-2.15.so - 7fcdc2522000-7fcdc252e000: /libnss_files-2.15.so - 7fcdc272f000-7fcdc28dd000: /libc-2.15.so - 7fcdc2ae7000-7fcdc2be2000: /libm-2.15.so - 7fcdc2de3000-7fcdc2dea000: /librt-2.15.so - 7fcdc2feb000-7fcdc3003000: /libpthread-2.15.so - 7fcdc3208000-7fcdc320a000: /libdl-2.15.so - 7fcdc340c000-7fcdc3415000: /libcrypt-2.15.so - 7fcdc3645000-7fcdc3669000: /ld-2.15.so - 7fff86bff000-7fff86c00000: [vdso] - ffffffffff600000-ffffffffff601000: [vsyscall] diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/cppbench.cpu b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/cppbench.cpu deleted file mode 100644 index 95c22e1e8d8beb46c3823c3a21ee20d0eadedb4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24405 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 Hb8_Loe%8@N diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/cppbench.small.contention b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/cppbench.small.contention deleted file mode 100644 index 230cd90200c644..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/cppbench.small.contention +++ /dev/null @@ -1,19 +0,0 @@ ---- contentionz 1 --- -cycles/second = 3201000000 -sampling period = 100 -ms since reset = 16502830 -discarded samples = 0 - 100 10 @ 0xbccc97 0xc61202 0x42ed5f 0x42edc1 0x42e15a 0x5261af 0x526edf 0x5280ab 0x79e80a 0x7a251b 0x7a296d 0xa456e4 0x7fcdc2ff214e ---- Memory map: --- - 00400000-00fcb000: cppbench_server_main - 7fcdc231e000-7fcdc2321000: /libnss_cache-2.15.so - 7fcdc2522000-7fcdc252e000: /libnss_files-2.15.so - 7fcdc272f000-7fcdc28dd000: /libc-2.15.so - 7fcdc2ae7000-7fcdc2be2000: /libm-2.15.so - 7fcdc2de3000-7fcdc2dea000: /librt-2.15.so - 7fcdc2feb000-7fcdc3003000: /libpthread-2.15.so - 7fcdc3208000-7fcdc320a000: /libdl-2.15.so - 7fcdc340c000-7fcdc3415000: /libcrypt-2.15.so - 7fcdc3645000-7fcdc3669000: /ld-2.15.so - 7fff86bff000-7fff86c00000: [vdso] - ffffffffff600000-ffffffffff601000: [vsyscall] diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/file1000.src b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/file1000.src deleted file mode 100644 index b53eeca5ecb79b..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/file1000.src +++ /dev/null @@ -1,17 +0,0 @@ -line1 -line2 -line3 -line4 -line5 -line6 -line7 -line8 -line9 -line0 -line1 -line2 -line3 -line4 -line5 - - diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/file2000.src b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/file2000.src deleted file mode 100644 index b53eeca5ecb79b..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/file2000.src +++ /dev/null @@ -1,17 +0,0 @@ -line1 -line2 -line3 -line4 -line5 -line6 -line7 -line8 -line9 -line0 -line1 -line2 -line3 -line4 -line5 - - diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/file3000.src b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/file3000.src deleted file mode 100644 index b53eeca5ecb79b..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/file3000.src +++ /dev/null @@ -1,17 +0,0 @@ -line1 -line2 -line3 -line4 -line5 -line6 -line7 -line8 -line9 -line0 -line1 -line2 -line3 -line4 -line5 - - diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/go.crc32.cpu b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/go.crc32.cpu deleted file mode 100644 index ce08313de056dce699cfdd9f7c51809edafb4647..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5032 zcmeI0Jqp4=6olgsSZI+(w6OOa#@5!-)(d$61;Ik>#2a`V4+exXX={Bu)vs~Y$einIuyfo?k>Y8hP*rffid>=S>6NloX zI4_fr>bjXY6d%Q*e0Kd&K9oO{E;rA8*VT2u#xn0+^U;2}e01Ka98z;Z<=OQ|ef||) zZS|e$Mr|&g3?9tq4Lu=pD8|6zg(YnzNo%ax?G>*{1N8@iVx+F ztBdNF;!ys$y4w1WQFB50GKph0-l3BAFNz_lz`N$={+Wk64tAIus;k>u+SzMr zo9 N3 [label=" 75.78ms" weight=51 penwidth=3 color="#b22000" tooltip="testdata/file3000.src -> testdata/file2000.src (75.78ms)" labeltooltip="testdata/file3000.src -> testdata/file2000.src (75.78ms)"] -N1 -> N2 [label=" 40.96ms" weight=28 penwidth=2 color="#b23900" tooltip="testdata/file3000.src -> testdata/file1000.src (40.96ms)" labeltooltip="testdata/file3000.src -> testdata/file1000.src (40.96ms)"] -N3 -> N2 [label=" 10.24ms" weight=7 color="#b29775" tooltip="testdata/file2000.src -> testdata/file1000.src (10.24ms)" labeltooltip="testdata/file2000.src -> testdata/file1000.src (10.24ms)"] -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.contention.flat.addresses.dot.focus.ignore b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.contention.flat.addresses.dot.focus.ignore deleted file mode 100644 index 03fbbb52968581..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.contention.flat.addresses.dot.focus.ignore +++ /dev/null @@ -1,9 +0,0 @@ -digraph "unnamed" { -node [style=filled fillcolor="#f8f8f8"] -subgraph cluster_L { "Build ID: buildid-contention" [shape=box fontsize=16 label="Build ID: buildid-contention\lComment #1\lComment #2\lType: delay\lActive filters:\l focus=[X1]000\l ignore=[X3]002\lShowing nodes accounting for 40.96ms, 27.40% of 149.50ms total\l"] } -N1 [label="0000000000001000\nline1000\nfile1000.src:1\n40.96ms (27.40%)" id="node1" fontsize=24 shape=box tooltip="0000000000001000 line1000 testdata/file1000.src:1 (40.96ms)" color="#b23900" fillcolor="#edddd5"] -N2 [label="0000000000003001\nline3000\nfile3000.src:5\n0 of 40.96ms (27.40%)" id="node2" fontsize=8 shape=box tooltip="0000000000003001 line3000 testdata/file3000.src:5 (40.96ms)" color="#b23900" fillcolor="#edddd5"] -N3 [label="0000000000003001\nline3001\nfile3000.src:3\n0 of 40.96ms (27.40%)" id="node3" fontsize=8 shape=box tooltip="0000000000003001 line3001 testdata/file3000.src:3 (40.96ms)" color="#b23900" fillcolor="#edddd5"] -N2 -> N3 [label=" 40.96ms\n (inline)" weight=28 penwidth=2 color="#b23900" tooltip="0000000000003001 line3000 testdata/file3000.src:5 -> 0000000000003001 line3001 testdata/file3000.src:3 (40.96ms)" labeltooltip="0000000000003001 line3000 testdata/file3000.src:5 -> 0000000000003001 line3001 testdata/file3000.src:3 (40.96ms)"] -N3 -> N1 [label=" 40.96ms" weight=28 penwidth=2 color="#b23900" tooltip="0000000000003001 line3001 testdata/file3000.src:3 -> 0000000000001000 line1000 testdata/file1000.src:1 (40.96ms)" labeltooltip="0000000000003001 line3001 testdata/file3000.src:3 -> 0000000000001000 line1000 testdata/file1000.src:1 (40.96ms)"] -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.call_tree.callgrind b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.call_tree.callgrind deleted file mode 100644 index e2286f631a6ab0..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.call_tree.callgrind +++ /dev/null @@ -1,99 +0,0 @@ -positions: instr line -events: cpu(ms) - -ob=(1) /path/to/testbinary -fl=(1) testdata/file1000.src -fn=(1) line1000 -0x1000 1 1000 -* 1 100 - -ob=(1) -fl=(2) testdata/file2000.src -fn=(2) line2001 -+4096 9 10 - -ob=(1) -fl=(3) testdata/file3000.src -fn=(3) line3002 -+4096 2 10 -cfl=(2) -cfn=(4) line2000 [1/2] -calls=0 * 4 -* * 1000 - -ob=(1) -fl=(2) -fn=(5) line2000 --4096 4 0 -cfl=(2) -cfn=(6) line2001 [2/2] -calls=0 -4096 9 -* * 1000 -* 4 0 -cfl=(2) -cfn=(7) line2001 [1/2] -calls=0 * 9 -* * 10 - -ob=(1) -fl=(2) -fn=(2) -* 9 0 -cfl=(1) -cfn=(8) line1000 [1/2] -calls=0 -4096 1 -* * 1000 - -ob=(1) -fl=(3) -fn=(9) line3000 -+4096 6 0 -cfl=(3) -cfn=(10) line3001 [1/2] -calls=0 +4096 5 -* * 1010 - -ob=(1) -fl=(3) -fn=(11) line3001 -* 5 0 -cfl=(3) -cfn=(12) line3002 [1/2] -calls=0 * 2 -* * 1010 - -ob=(1) -fl=(3) -fn=(9) -+1 9 0 -cfl=(3) -cfn=(13) line3001 [2/2] -calls=0 +1 8 -* * 100 - -ob=(1) -fl=(3) -fn=(11) -* 8 0 -cfl=(1) -cfn=(14) line1000 [2/2] -calls=0 -8193 1 -* * 100 - -ob=(1) -fl=(3) -fn=(9) -+1 9 0 -cfl=(3) -cfn=(15) line3002 [2/2] -calls=0 +1 5 -* * 10 - -ob=(1) -fl=(3) -fn=(3) -* 5 0 -cfl=(2) -cfn=(16) line2000 [2/2] -calls=0 -4098 4 -* * 10 diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.callgrind b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.callgrind deleted file mode 100644 index 0b0499638c0988..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.callgrind +++ /dev/null @@ -1,88 +0,0 @@ -positions: instr line -events: cpu(ms) - -ob=(1) /path/to/testbinary -fl=(1) testdata/file1000.src -fn=(1) line1000 -0x1000 1 1100 - -ob=(1) -fl=(2) testdata/file2000.src -fn=(2) line2001 -+4096 9 10 -cfl=(1) -cfn=(1) -calls=0 * 1 -* * 1000 - -ob=(1) -fl=(3) testdata/file3000.src -fn=(3) line3002 -+4096 2 10 -cfl=(2) -cfn=(4) line2000 -calls=0 * 4 -* * 1000 - -ob=(1) -fl=(2) -fn=(4) --4096 4 0 -cfl=(2) -cfn=(2) -calls=0 -4096 9 -* * 1010 - -ob=(1) -fl=(3) -fn=(5) line3000 -+4096 6 0 -cfl=(3) -cfn=(6) line3001 -calls=0 +4096 5 -* * 1010 - -ob=(1) -fl=(3) -fn=(6) -* 5 0 -cfl=(3) -cfn=(3) -calls=0 * 2 -* * 1010 - -ob=(1) -fl=(3) -fn=(5) -+1 9 0 -cfl=(3) -cfn=(6) -calls=0 +1 8 -* * 100 - -ob=(1) -fl=(3) -fn=(6) -* 8 0 -cfl=(1) -cfn=(1) -calls=0 -8193 1 -* * 100 - -ob=(1) -fl=(3) -fn=(5) -+1 9 0 -cfl=(3) -cfn=(3) -calls=0 +1 5 -* * 10 - -ob=(1) -fl=(3) -fn=(3) -* 5 0 -cfl=(2) -cfn=(4) -calls=0 -4098 4 -* * 10 diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.comments b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.comments deleted file mode 100644 index e6d9824e1b6c19..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.comments +++ /dev/null @@ -1 +0,0 @@ -some-comment diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.cum.lines.text.focus.hide b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.cum.lines.text.focus.hide deleted file mode 100644 index f0d928d76f6100..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.cum.lines.text.focus.hide +++ /dev/null @@ -1,8 +0,0 @@ -Active filters: - focus=[12]00 - hide=line[X3]0 -Showing nodes accounting for 1.11s, 99.11% of 1.12s total - flat flat% sum% cum cum% - 1.10s 98.21% 98.21% 1.10s 98.21% line1000 testdata/file1000.src:1 - 0 0% 98.21% 1.01s 90.18% line2000 testdata/file2000.src:4 - 0.01s 0.89% 99.11% 1.01s 90.18% line2001 testdata/file2000.src:9 (inline) diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.cum.lines.text.hide b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.cum.lines.text.hide deleted file mode 100644 index bf503a57dba168..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.cum.lines.text.hide +++ /dev/null @@ -1,7 +0,0 @@ -Active filters: - hide=line[X3]0 -Showing nodes accounting for 1.11s, 99.11% of 1.12s total - flat flat% sum% cum cum% - 1.10s 98.21% 98.21% 1.10s 98.21% line1000 testdata/file1000.src:1 - 0 0% 98.21% 1.01s 90.18% line2000 testdata/file2000.src:4 - 0.01s 0.89% 99.11% 1.01s 90.18% line2001 testdata/file2000.src:9 (inline) diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.cum.lines.text.show b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.cum.lines.text.show deleted file mode 100644 index 7604cb8d7b061b..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.cum.lines.text.show +++ /dev/null @@ -1,7 +0,0 @@ -Active filters: - show=[12]00 -Showing nodes accounting for 1.11s, 99.11% of 1.12s total - flat flat% sum% cum cum% - 1.10s 98.21% 98.21% 1.10s 98.21% line1000 testdata/file1000.src:1 - 0 0% 98.21% 1.01s 90.18% line2000 testdata/file2000.src:4 - 0.01s 0.89% 99.11% 1.01s 90.18% line2001 testdata/file2000.src:9 (inline) diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.cum.lines.topproto.hide b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.cum.lines.topproto.hide deleted file mode 100644 index 94b9be83df2e96..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.cum.lines.topproto.hide +++ /dev/null @@ -1,5 +0,0 @@ -Active filters: - hide=mangled[X3]0 -Showing nodes accounting for 1s, 100% of 1s total - flat flat% sum% cum cum% - 1s 100% 100% 1s 100% mangled1000 testdata/file1000.src:1 diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.cum.lines.tree.show_from b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.cum.lines.tree.show_from deleted file mode 100644 index 112b49b383d13c..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.cum.lines.tree.show_from +++ /dev/null @@ -1,16 +0,0 @@ -Active filters: - show_from=line2 -Showing nodes accounting for 1.01s, 90.18% of 1.12s total -----------------------------------------------------------+------------- - flat flat% sum% cum cum% calls calls% + context -----------------------------------------------------------+------------- - 0 0% 0% 1.01s 90.18% | line2000 testdata/file2000.src:4 - 1.01s 100% | line2001 testdata/file2000.src:9 (inline) -----------------------------------------------------------+------------- - 1.01s 100% | line2000 testdata/file2000.src:4 (inline) - 0.01s 0.89% 0.89% 1.01s 90.18% | line2001 testdata/file2000.src:9 - 1s 99.01% | line1000 testdata/file1000.src:1 -----------------------------------------------------------+------------- - 1s 100% | line2001 testdata/file2000.src:9 - 1s 89.29% 90.18% 1s 89.29% | line1000 testdata/file1000.src:1 -----------------------------------------------------------+------------- diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.addresses.disasm b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.addresses.disasm deleted file mode 100644 index e1df7b1b6437d9..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.addresses.disasm +++ /dev/null @@ -1,14 +0,0 @@ -Total: 1.12s -ROUTINE ======================== line1000 - 1.10s 1.10s (flat, cum) 98.21% of Total - 1.10s 1.10s 1000: instruction one ;line1000 file1000.src:1 - . . 1001: instruction two ;file1000.src:1 - . . 1002: instruction three ;file1000.src:2 - . . 1003: instruction four ;file1000.src:1 -ROUTINE ======================== line3000 - 10ms 1.12s (flat, cum) 100% of Total - 10ms 1.01s 3000: instruction one ;line3000 file3000.src:6 - . 100ms 3001: instruction two ;line3000 file3000.src:9 - . 10ms 3002: instruction three - . . 3003: instruction four - . . 3004: instruction five diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.addresses.noinlines.text b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.addresses.noinlines.text deleted file mode 100644 index d53c44dad91531..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.addresses.noinlines.text +++ /dev/null @@ -1,7 +0,0 @@ -Showing nodes accounting for 1.12s, 100% of 1.12s total -Dropped 1 node (cum <= 0.06s) - flat flat% sum% cum cum% - 1.10s 98.21% 98.21% 1.10s 98.21% 0000000000001000 line1000 testdata/file1000.src:1 - 0.01s 0.89% 99.11% 1.01s 90.18% 0000000000002000 line2000 testdata/file2000.src:4 - 0.01s 0.89% 100% 1.01s 90.18% 0000000000003000 line3000 testdata/file3000.src:6 - 0 0% 100% 0.10s 8.93% 0000000000003001 line3000 testdata/file3000.src:9 diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.addresses.weblist b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.addresses.weblist deleted file mode 100644 index 028429274552d5..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.addresses.weblist +++ /dev/null @@ -1,106 +0,0 @@ - - - - - -Pprof listing - - - - - -

File: testbinary
-Type: cpu
-Duration: 10s, Total samples = 1.12s (11.20%)
Total: 1.12s

line1000

testdata/file1000.src

-
-  Total:       1.10s      1.10s (flat, cum) 98.21%
-      1        1.10s      1.10s           line1                1.10s      1.10s     1000:     instruction one                                                              file1000.src:1
-                   .          .     1001:     instruction two                                                              file1000.src:1
-                                     ⋮
-                   .          .     1003:     instruction four                                                             file1000.src:1
-
-      2            .          .           line2                    .          .     1002:     instruction three                                                            file1000.src:2
-
-      3            .          .           line3 
-      4            .          .           line4 
-      5            .          .           line5 
-      6            .          .           line6 
-      7            .          .           line7 
-
-

line3000

testdata/file3000.src

-
-  Total:        10ms      1.12s (flat, cum)   100%
-      1            .          .           line1 
-      2            .          .           line2 
-      3            .          .           line3 
-      4            .          .           line4 
-      5            .          .           line5 
-      6         10ms      1.01s           line6                 10ms      1.01s     3000:     instruction one                                                              file3000.src:6
-
-      7            .          .           line7 
-      8            .          .           line8 
-      9            .      110ms           line9                    .      100ms     3001:     instruction two                                                              file3000.src:9
-                   .       10ms     3002:     instruction three                                                            file3000.src:9
-                   .          .     3003:     instruction four                                                             
-                   .          .     3004:     instruction five                                                             
-
-     10            .          .           line0 
-     11            .          .           line1 
-     12            .          .           line2 
-     13            .          .           line3 
-     14            .          .           line4 
-
- - - - diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.filefunctions.noinlines.text b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.filefunctions.noinlines.text deleted file mode 100644 index 88fb760759c88d..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.filefunctions.noinlines.text +++ /dev/null @@ -1,5 +0,0 @@ -Showing nodes accounting for 1.12s, 100% of 1.12s total - flat flat% sum% cum cum% - 1.10s 98.21% 98.21% 1.10s 98.21% line1000 testdata/file1000.src - 0.01s 0.89% 99.11% 1.01s 90.18% line2000 testdata/file2000.src - 0.01s 0.89% 100% 1.12s 100% line3000 testdata/file3000.src diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.functions.call_tree.dot b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.functions.call_tree.dot deleted file mode 100644 index e854b5d6fa7e97..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.functions.call_tree.dot +++ /dev/null @@ -1,21 +0,0 @@ -digraph "testbinary" { -node [style=filled fillcolor="#f8f8f8"] -subgraph cluster_L { "File: testbinary" [shape=box fontsize=16 label="File: testbinary\lType: cpu\lDuration: 10s, Total samples = 1.12s (11.20%)\lShowing nodes accounting for 1.11s, 99.11% of 1.12s total\lDropped 3 nodes (cum <= 0.06s)\l" tooltip="testbinary"] } -N1 [label="line1000\n1s (89.29%)" id="node1" fontsize=24 shape=box tooltip="line1000 (1s)" color="#b20500" fillcolor="#edd6d5"] -N1_0 [label = "key1:tag1\nkey2:tag1" id="N1_0" fontsize=8 shape=box3d tooltip="1s"] -N1 -> N1_0 [label=" 1s" weight=100 tooltip="1s" labeltooltip="1s"] -N2 [label="line3000\n0 of 1.12s (100%)" id="node2" fontsize=8 shape=box tooltip="line3000 (1.12s)" color="#b20000" fillcolor="#edd5d5"] -N3 [label="line3001\n0 of 1.11s (99.11%)" id="node3" fontsize=8 shape=box tooltip="line3001 (1.11s)" color="#b20000" fillcolor="#edd5d5"] -N4 [label="line1000\n0.10s (8.93%)" id="node4" fontsize=14 shape=box tooltip="line1000 (0.10s)" color="#b28b62" fillcolor="#ede8e2"] -N4_0 [label = "key1:tag2\nkey3:tag2" id="N4_0" fontsize=8 shape=box3d tooltip="0.10s"] -N4 -> N4_0 [label=" 0.10s" weight=100 tooltip="0.10s" labeltooltip="0.10s"] -N5 [label="line3002\n0.01s (0.89%)\nof 1.01s (90.18%)" id="node5" fontsize=10 shape=box tooltip="line3002 (1.01s)" color="#b20500" fillcolor="#edd6d5"] -N6 [label="line2000\n0 of 1s (89.29%)" id="node6" fontsize=8 shape=box tooltip="line2000 (1s)" color="#b20500" fillcolor="#edd6d5"] -N7 [label="line2001\n0 of 1s (89.29%)" id="node7" fontsize=8 shape=box tooltip="line2001 (1s)" color="#b20500" fillcolor="#edd6d5"] -N2 -> N3 [label=" 1.11s\n (inline)" weight=100 penwidth=5 color="#b20000" tooltip="line3000 -> line3001 (1.11s)" labeltooltip="line3000 -> line3001 (1.11s)"] -N3 -> N5 [label=" 1.01s\n (inline)" weight=91 penwidth=5 color="#b20500" tooltip="line3001 -> line3002 (1.01s)" labeltooltip="line3001 -> line3002 (1.01s)"] -N6 -> N7 [label=" 1s\n (inline)" weight=90 penwidth=5 color="#b20500" tooltip="line2000 -> line2001 (1s)" labeltooltip="line2000 -> line2001 (1s)"] -N7 -> N1 [label=" 1s" weight=90 penwidth=5 color="#b20500" tooltip="line2001 -> line1000 (1s)" labeltooltip="line2001 -> line1000 (1s)"] -N5 -> N6 [label=" 1s" weight=90 penwidth=5 color="#b20500" tooltip="line3002 -> line2000 (1s)" labeltooltip="line3002 -> line2000 (1s)"] -N3 -> N4 [label=" 0.10s" weight=9 color="#b28b62" tooltip="line3001 -> line1000 (0.10s)" labeltooltip="line3001 -> line1000 (0.10s)"] -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.functions.dot b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.functions.dot deleted file mode 100644 index f0a5226b89f340..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.functions.dot +++ /dev/null @@ -1,20 +0,0 @@ -digraph "testbinary" { -node [style=filled fillcolor="#f8f8f8"] -subgraph cluster_L { "File: testbinary" [shape=box fontsize=16 label="File: testbinary\lType: cpu\lDuration: 10s, Total samples = 1.12s (11.20%)\lShowing nodes accounting for 1.12s, 100% of 1.12s total\l" tooltip="testbinary"] } -N1 [label="line1000\n1.10s (98.21%)" id="node1" fontsize=24 shape=box tooltip="line1000 (1.10s)" color="#b20000" fillcolor="#edd5d5"] -N1_0 [label = "key1:tag1\nkey2:tag1" id="N1_0" fontsize=8 shape=box3d tooltip="1s"] -N1 -> N1_0 [label=" 1s" weight=100 tooltip="1s" labeltooltip="1s"] -N1_1 [label = "key1:tag2\nkey3:tag2" id="N1_1" fontsize=8 shape=box3d tooltip="0.10s"] -N1 -> N1_1 [label=" 0.10s" weight=100 tooltip="0.10s" labeltooltip="0.10s"] -N2 [label="line3000\n0 of 1.12s (100%)" id="node2" fontsize=8 shape=box tooltip="line3000 (1.12s)" color="#b20000" fillcolor="#edd5d5"] -N3 [label="line3001\n0 of 1.11s (99.11%)" id="node3" fontsize=8 shape=box tooltip="line3001 (1.11s)" color="#b20000" fillcolor="#edd5d5"] -N4 [label="line3002\n0.01s (0.89%)\nof 1.02s (91.07%)" id="node4" fontsize=10 shape=box tooltip="line3002 (1.02s)" color="#b20400" fillcolor="#edd6d5"] -N5 [label="line2001\n0.01s (0.89%)\nof 1.01s (90.18%)" id="node5" fontsize=10 shape=box tooltip="line2001 (1.01s)" color="#b20500" fillcolor="#edd6d5"] -N6 [label="line2000\n0 of 1.01s (90.18%)" id="node6" fontsize=8 shape=box tooltip="line2000 (1.01s)" color="#b20500" fillcolor="#edd6d5"] -N2 -> N3 [label=" 1.11s\n (inline)" weight=100 penwidth=5 color="#b20000" tooltip="line3000 -> line3001 (1.11s)" labeltooltip="line3000 -> line3001 (1.11s)"] -N6 -> N5 [label=" 1.01s\n (inline)" weight=91 penwidth=5 color="#b20500" tooltip="line2000 -> line2001 (1.01s)" labeltooltip="line2000 -> line2001 (1.01s)"] -N3 -> N4 [label=" 1.01s\n (inline)" weight=91 penwidth=5 color="#b20500" tooltip="line3001 -> line3002 (1.01s)" labeltooltip="line3001 -> line3002 (1.01s)"] -N4 -> N6 [label=" 1.01s" weight=91 penwidth=5 color="#b20500" tooltip="line3002 -> line2000 (1.01s)" labeltooltip="line3002 -> line2000 (1.01s)"] -N5 -> N1 [label=" 1s" weight=90 penwidth=5 color="#b20500" tooltip="line2001 -> line1000 (1s)" labeltooltip="line2001 -> line1000 (1s)"] -N3 -> N1 [label=" 0.10s" weight=9 color="#b28b62" tooltip="line3001 -> line1000 (0.10s)" labeltooltip="line3001 -> line1000 (0.10s)"] -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.functions.noinlines.text b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.functions.noinlines.text deleted file mode 100644 index 493b4912de1c63..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.functions.noinlines.text +++ /dev/null @@ -1,5 +0,0 @@ -Showing nodes accounting for 1.12s, 100% of 1.12s total - flat flat% sum% cum cum% - 1.10s 98.21% 98.21% 1.10s 98.21% line1000 - 0.01s 0.89% 99.11% 1.01s 90.18% line2000 - 0.01s 0.89% 100% 1.12s 100% line3000 diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.functions.text b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.functions.text deleted file mode 100644 index 66e4189e0a2d50..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.flat.functions.text +++ /dev/null @@ -1,8 +0,0 @@ -Showing nodes accounting for 1.12s, 100% of 1.12s total - flat flat% sum% cum cum% - 1.10s 98.21% 98.21% 1.10s 98.21% line1000 - 0.01s 0.89% 99.11% 1.01s 90.18% line2001 (inline) - 0.01s 0.89% 100% 1.02s 91.07% line3002 (inline) - 0 0% 100% 1.01s 90.18% line2000 - 0 0% 100% 1.12s 100% line3000 - 0 0% 100% 1.11s 99.11% line3001 (inline) diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.lines.topproto b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.lines.topproto deleted file mode 100644 index 33bf6814a463ce..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.lines.topproto +++ /dev/null @@ -1,3 +0,0 @@ -Showing nodes accounting for 1s, 100% of 1s total - flat flat% sum% cum cum% - 1s 100% 100% 1s 100% mangled1000 testdata/file1000.src:1 diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.peek b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.peek deleted file mode 100644 index 3b8a3537b46d13..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.peek +++ /dev/null @@ -1,13 +0,0 @@ -Showing nodes accounting for 1.12s, 100% of 1.12s total -----------------------------------------------------------+------------- - flat flat% sum% cum cum% calls calls% + context -----------------------------------------------------------+------------- - 1.01s 100% | line2000 (inline) - 0.01s 0.89% 0.89% 1.01s 90.18% | line2001 - 1s 99.01% | line1000 -----------------------------------------------------------+------------- - 1.11s 100% | line3000 (inline) - 0 0% 0.89% 1.11s 99.11% | line3001 - 1.01s 90.99% | line3002 (inline) - 0.10s 9.01% | line1000 -----------------------------------------------------------+------------- diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.tags b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.tags deleted file mode 100644 index 5998b5ba5bf500..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.tags +++ /dev/null @@ -1,13 +0,0 @@ - key1: Total 1.1s - 1.0s (89.29%): tag1 - 100.0ms ( 8.93%): tag2 - 10.0ms ( 0.89%): tag3 - 10.0ms ( 0.89%): tag4 - - key2: Total 1.0s - 1.0s (99.02%): tag1 - 10.0ms ( 0.98%): tag2 - - key3: Total 100.0ms - 100.0ms ( 100%): tag2 - diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.tags.focus.ignore b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.tags.focus.ignore deleted file mode 100644 index 9b99d4368c2c89..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.tags.focus.ignore +++ /dev/null @@ -1,6 +0,0 @@ - key1: Total 100.0ms - 100.0ms ( 100%): tag2 - - key3: Total 100.0ms - 100.0ms ( 100%): tag2 - diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.traces b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.traces deleted file mode 100644 index d9637c0e425553..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpu.traces +++ /dev/null @@ -1,32 +0,0 @@ -File: testbinary -Type: cpu -Duration: 10s, Total samples = 1.12s (11.20%) ------------+------------------------------------------------------- - key1: tag1 - key2: tag1 - 1s line1000 - line2001 - line2000 - line3002 - line3001 - line3000 ------------+------------------------------------------------------- - key1: tag2 - key3: tag2 - 100ms line1000 - line3001 - line3000 ------------+------------------------------------------------------- - key1: tag3 - key2: tag2 - 10ms line2001 - line2000 - line3002 - line3000 ------------+------------------------------------------------------- - key1: tag4 - key2: tag1 - 10ms line3002 - line3001 - line3000 ------------+------------------------------------------------------- diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpusmall.flat.addresses.tree b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpusmall.flat.addresses.tree deleted file mode 100644 index 606db2b8876370..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.cpusmall.flat.addresses.tree +++ /dev/null @@ -1,17 +0,0 @@ -Showing nodes accounting for 4s, 100% of 4s total -Showing top 4 nodes out of 5 -----------------------------------------------------------+------------- - flat flat% sum% cum cum% calls calls% + context -----------------------------------------------------------+------------- - 1s 100% | 0000000000003000 [testbinary] - 1s 25.00% 25.00% 1s 25.00% | 0000000000001000 [testbinary] -----------------------------------------------------------+------------- - 1s 25.00% 50.00% 2s 50.00% | 0000000000003000 [testbinary] - 1s 50.00% | 0000000000001000 [testbinary] -----------------------------------------------------------+------------- - 1s 100% | 0000000000005000 [testbinary] - 1s 25.00% 75.00% 1s 25.00% | 0000000000004000 [testbinary] -----------------------------------------------------------+------------- - 1s 25.00% 100% 2s 50.00% | 0000000000005000 [testbinary] - 1s 50.00% | 0000000000004000 [testbinary] -----------------------------------------------------------+------------- diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.callgrind b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.callgrind deleted file mode 100644 index bfd96cb7deb0ed..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.callgrind +++ /dev/null @@ -1,88 +0,0 @@ -positions: instr line -events: inuse_space(MB) - -ob= -fl=(1) testdata/file2000.src -fn=(1) line2001 -0x2000 2 62 -cfl=(2) testdata/file1000.src -cfn=(2) line1000 -calls=0 0x1000 1 -* * 0 - -ob= -fl=(3) testdata/file3000.src -fn=(3) line3002 -+4096 3 31 -cfl=(1) -cfn=(4) line2000 -calls=0 * 3 -* * 0 - -ob= -fl=(2) -fn=(2) --8192 1 4 - -ob= -fl=(1) -fn=(4) -+4096 3 0 -cfl=(1) -cfn=(1) -calls=0 +4096 2 -* * 63 - -ob= -fl=(3) -fn=(5) line3000 -+4096 4 0 -cfl=(3) -cfn=(6) line3001 -calls=0 +4096 2 -* * 32 - -ob= -fl=(3) -fn=(6) -* 2 0 -cfl=(3) -cfn=(3) -calls=0 * 3 -* * 32 - -ob= -fl=(3) -fn=(5) -+1 4 0 -cfl=(3) -cfn=(6) -calls=0 +1 2 -* * 3 - -ob= -fl=(3) -fn=(6) -* 2 0 -cfl=(2) -cfn=(2) -calls=0 -8193 1 -* * 3 - -ob= -fl=(3) -fn=(5) -+1 4 0 -cfl=(3) -cfn=(3) -calls=0 +1 3 -* * 62 - -ob= -fl=(3) -fn=(3) -* 3 0 -cfl=(1) -cfn=(4) -calls=0 -4098 3 -* * 62 diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.comments b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.comments deleted file mode 100644 index 6eca2fb79401ce..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.comments +++ /dev/null @@ -1,2 +0,0 @@ -comment -#hidden comment diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.cum.lines.tree.focus b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.cum.lines.tree.focus deleted file mode 100644 index 9d4ba72b1f9b5d..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.cum.lines.tree.focus +++ /dev/null @@ -1,21 +0,0 @@ -Active filters: - focus=[24]00 -Showing nodes accounting for 62.50MB, 63.37% of 98.63MB total -Dropped 2 nodes (cum <= 4.93MB) -----------------------------------------------------------+------------- - flat flat% sum% cum cum% calls calls% + context -----------------------------------------------------------+------------- - 63.48MB 100% | line3002 testdata/file3000.src:3 - 0 0% 0% 63.48MB 64.36% | line2000 testdata/file2000.src:3 - 63.48MB 100% | line2001 testdata/file2000.src:2 (inline) -----------------------------------------------------------+------------- - 63.48MB 100% | line2000 testdata/file2000.src:3 (inline) - 62.50MB 63.37% 63.37% 63.48MB 64.36% | line2001 testdata/file2000.src:2 -----------------------------------------------------------+------------- - 0 0% 63.37% 63.48MB 64.36% | line3000 testdata/file3000.src:4 - 63.48MB 100% | line3002 testdata/file3000.src:3 (inline) -----------------------------------------------------------+------------- - 63.48MB 100% | line3000 testdata/file3000.src:4 (inline) - 0 0% 63.37% 63.48MB 64.36% | line3002 testdata/file3000.src:3 - 63.48MB 100% | line2000 testdata/file2000.src:3 -----------------------------------------------------------+------------- diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.cum.relative_percentages.tree.focus b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.cum.relative_percentages.tree.focus deleted file mode 100644 index c2d11838fe3cfa..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.cum.relative_percentages.tree.focus +++ /dev/null @@ -1,21 +0,0 @@ -Active filters: - focus=[24]00 -Showing nodes accounting for 62.50MB, 98.46% of 63.48MB total -Dropped 2 nodes (cum <= 3.17MB) -----------------------------------------------------------+------------- - flat flat% sum% cum cum% calls calls% + context -----------------------------------------------------------+------------- - 63.48MB 100% | line3002 - 0 0% 0% 63.48MB 100% | line2000 - 63.48MB 100% | line2001 (inline) -----------------------------------------------------------+------------- - 63.48MB 100% | line2000 (inline) - 62.50MB 98.46% 98.46% 63.48MB 100% | line2001 -----------------------------------------------------------+------------- - 0 0% 98.46% 63.48MB 100% | line3000 - 63.48MB 100% | line3002 (inline) -----------------------------------------------------------+------------- - 63.48MB 100% | line3000 (inline) - 0 0% 98.46% 63.48MB 100% | line3002 - 63.48MB 100% | line2000 -----------------------------------------------------------+------------- diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.flat.files.seconds.text b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.flat.files.seconds.text deleted file mode 100644 index b9571ef4ecaab7..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.flat.files.seconds.text +++ /dev/null @@ -1,2 +0,0 @@ -Showing nodes accounting for 0, 0% of 0 total - flat flat% sum% cum cum% diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.flat.files.text b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.flat.files.text deleted file mode 100644 index fd536df5736a48..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.flat.files.text +++ /dev/null @@ -1,5 +0,0 @@ -Showing nodes accounting for 93.75MB, 95.05% of 98.63MB total -Dropped 1 node (cum <= 4.93MB) - flat flat% sum% cum cum% - 62.50MB 63.37% 63.37% 63.48MB 64.36% testdata/file2000.src - 31.25MB 31.68% 95.05% 98.63MB 100% testdata/file3000.src diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.flat.files.text.focus b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.flat.files.text.focus deleted file mode 100644 index 20a503f9b43d0c..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.flat.files.text.focus +++ /dev/null @@ -1,8 +0,0 @@ -Active filters: - focus=[12]00 - taghide=[X3]00 -Showing nodes accounting for 67.38MB, 68.32% of 98.63MB total - flat flat% sum% cum cum% - 62.50MB 63.37% 63.37% 63.48MB 64.36% testdata/file2000.src - 4.88MB 4.95% 68.32% 4.88MB 4.95% testdata/file1000.src - 0 0% 68.32% 67.38MB 68.32% testdata/file3000.src diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.flat.inuse_objects.text b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.flat.inuse_objects.text deleted file mode 100644 index 929461a3c1ef45..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.flat.inuse_objects.text +++ /dev/null @@ -1,8 +0,0 @@ -Showing nodes accounting for 150, 100% of 150 total - flat flat% sum% cum cum% - 80 53.33% 53.33% 130 86.67% line3002 (inline) - 40 26.67% 80.00% 50 33.33% line2001 (inline) - 30 20.00% 100% 30 20.00% line1000 - 0 0% 100% 50 33.33% line2000 - 0 0% 100% 150 100% line3000 - 0 0% 100% 110 73.33% line3001 (inline) diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.flat.inuse_space.dot.focus b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.flat.inuse_space.dot.focus deleted file mode 100644 index 909a824f1e8221..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.flat.inuse_space.dot.focus +++ /dev/null @@ -1,13 +0,0 @@ -digraph "unnamed" { -node [style=filled fillcolor="#f8f8f8"] -subgraph cluster_L { "Build ID: buildid" [shape=box fontsize=16 label="Build ID: buildid\lcomment\lType: inuse_space\lActive filters:\l tagfocus=1mb:2gb\lShowing nodes accounting for 62.50MB, 63.37% of 98.63MB total\l"] } -N1 [label="line2001\n62.50MB (63.37%)" id="node1" fontsize=24 shape=box tooltip="line2001 (62.50MB)" color="#b21600" fillcolor="#edd8d5"] -NN1_0 [label = "1.56MB" id="NN1_0" fontsize=8 shape=box3d tooltip="62.50MB"] -N1 -> NN1_0 [label=" 62.50MB" weight=100 tooltip="62.50MB" labeltooltip="62.50MB"] -N2 [label="line3000\n0 of 62.50MB (63.37%)" id="node2" fontsize=8 shape=box tooltip="line3000 (62.50MB)" color="#b21600" fillcolor="#edd8d5"] -N3 [label="line2000\n0 of 62.50MB (63.37%)" id="node3" fontsize=8 shape=box tooltip="line2000 (62.50MB)" color="#b21600" fillcolor="#edd8d5"] -N4 [label="line3002\n0 of 62.50MB (63.37%)" id="node4" fontsize=8 shape=box tooltip="line3002 (62.50MB)" color="#b21600" fillcolor="#edd8d5"] -N3 -> N1 [label=" 62.50MB\n (inline)" weight=64 penwidth=4 color="#b21600" tooltip="line2000 -> line2001 (62.50MB)" labeltooltip="line2000 -> line2001 (62.50MB)"] -N2 -> N4 [label=" 62.50MB\n (inline)" weight=64 penwidth=4 color="#b21600" tooltip="line3000 -> line3002 (62.50MB)" labeltooltip="line3000 -> line3002 (62.50MB)"] -N4 -> N3 [label=" 62.50MB" weight=64 penwidth=4 color="#b21600" tooltip="line3002 -> line2000 (62.50MB)" labeltooltip="line3002 -> line2000 (62.50MB)"] -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.flat.inuse_space.dot.focus.ignore b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.flat.inuse_space.dot.focus.ignore deleted file mode 100644 index b2929ae667d793..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.flat.inuse_space.dot.focus.ignore +++ /dev/null @@ -1,16 +0,0 @@ -digraph "unnamed" { -node [style=filled fillcolor="#f8f8f8"] -subgraph cluster_L { "Build ID: buildid" [shape=box fontsize=16 label="Build ID: buildid\lcomment\lType: inuse_space\lActive filters:\l tagfocus=30kb:\l tagignore=1mb:2mb\lShowing nodes accounting for 36.13MB, 36.63% of 98.63MB total\lDropped 2 nodes (cum <= 4.93MB)\l"] } -N1 [label="line3002\n31.25MB (31.68%)\nof 32.23MB (32.67%)" id="node1" fontsize=24 shape=box tooltip="line3002 (32.23MB)" color="#b23200" fillcolor="#eddcd5"] -NN1_0 [label = "400kB" id="NN1_0" fontsize=8 shape=box3d tooltip="31.25MB"] -N1 -> NN1_0 [label=" 31.25MB" weight=100 tooltip="31.25MB" labeltooltip="31.25MB"] -N2 [label="line3000\n0 of 36.13MB (36.63%)" id="node2" fontsize=8 shape=box tooltip="line3000 (36.13MB)" color="#b22e00" fillcolor="#eddbd5"] -N3 [label="line3001\n0 of 36.13MB (36.63%)" id="node3" fontsize=8 shape=box tooltip="line3001 (36.13MB)" color="#b22e00" fillcolor="#eddbd5"] -N4 [label="line1000\n4.88MB (4.95%)" id="node4" fontsize=15 shape=box tooltip="line1000 (4.88MB)" color="#b2a086" fillcolor="#edeae7"] -NN4_0 [label = "200kB" id="NN4_0" fontsize=8 shape=box3d tooltip="3.91MB"] -N4 -> NN4_0 [label=" 3.91MB" weight=100 tooltip="3.91MB" labeltooltip="3.91MB"] -N2 -> N3 [label=" 36.13MB\n (inline)" weight=37 penwidth=2 color="#b22e00" tooltip="line3000 -> line3001 (36.13MB)" labeltooltip="line3000 -> line3001 (36.13MB)"] -N3 -> N1 [label=" 32.23MB\n (inline)" weight=33 penwidth=2 color="#b23200" tooltip="line3001 -> line3002 (32.23MB)" labeltooltip="line3001 -> line3002 (32.23MB)"] -N3 -> N4 [label=" 3.91MB" weight=4 color="#b2a58f" tooltip="line3001 -> line1000 (3.91MB)" labeltooltip="line3001 -> line1000 (3.91MB)"] -N1 -> N4 [label=" 0.98MB" color="#b2b0a9" tooltip="line3002 ... line1000 (0.98MB)" labeltooltip="line3002 ... line1000 (0.98MB)" style="dotted" minlen=2] -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.flat.lines.dot.focus b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.flat.lines.dot.focus deleted file mode 100644 index 9af03410760439..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.flat.lines.dot.focus +++ /dev/null @@ -1,21 +0,0 @@ -digraph "unnamed" { -node [style=filled fillcolor="#f8f8f8"] -subgraph cluster_L { "Build ID: buildid" [shape=box fontsize=16 label="Build ID: buildid\lcomment\lType: inuse_space\lActive filters:\l focus=[12]00\lShowing nodes accounting for 67.38MB, 68.32% of 98.63MB total\l"] } -N1 [label="line3000\nfile3000.src:4\n0 of 67.38MB (68.32%)" id="node1" fontsize=8 shape=box tooltip="line3000 testdata/file3000.src:4 (67.38MB)" color="#b21300" fillcolor="#edd7d5"] -N2 [label="line2001\nfile2000.src:2\n62.50MB (63.37%)\nof 63.48MB (64.36%)" id="node2" fontsize=24 shape=box tooltip="line2001 testdata/file2000.src:2 (63.48MB)" color="#b21600" fillcolor="#edd8d5"] -NN2_0 [label = "1.56MB" id="NN2_0" fontsize=8 shape=box3d tooltip="62.50MB"] -N2 -> NN2_0 [label=" 62.50MB" weight=100 tooltip="62.50MB" labeltooltip="62.50MB"] -N3 [label="line1000\nfile1000.src:1\n4.88MB (4.95%)" id="node3" fontsize=13 shape=box tooltip="line1000 testdata/file1000.src:1 (4.88MB)" color="#b2a086" fillcolor="#edeae7"] -NN3_0 [label = "200kB" id="NN3_0" fontsize=8 shape=box3d tooltip="3.91MB"] -N3 -> NN3_0 [label=" 3.91MB" weight=100 tooltip="3.91MB" labeltooltip="3.91MB"] -N4 [label="line3002\nfile3000.src:3\n0 of 63.48MB (64.36%)" id="node4" fontsize=8 shape=box tooltip="line3002 testdata/file3000.src:3 (63.48MB)" color="#b21600" fillcolor="#edd8d5"] -N5 [label="line3001\nfile3000.src:2\n0 of 4.88MB (4.95%)" id="node5" fontsize=8 shape=box tooltip="line3001 testdata/file3000.src:2 (4.88MB)" color="#b2a086" fillcolor="#edeae7"] -N6 [label="line2000\nfile2000.src:3\n0 of 63.48MB (64.36%)" id="node6" fontsize=8 shape=box tooltip="line2000 testdata/file2000.src:3 (63.48MB)" color="#b21600" fillcolor="#edd8d5"] -N6 -> N2 [label=" 63.48MB\n (inline)" weight=65 penwidth=4 color="#b21600" tooltip="line2000 testdata/file2000.src:3 -> line2001 testdata/file2000.src:2 (63.48MB)" labeltooltip="line2000 testdata/file2000.src:3 -> line2001 testdata/file2000.src:2 (63.48MB)"] -N4 -> N6 [label=" 63.48MB" weight=65 penwidth=4 color="#b21600" tooltip="line3002 testdata/file3000.src:3 -> line2000 testdata/file2000.src:3 (63.48MB)" labeltooltip="line3002 testdata/file3000.src:3 -> line2000 testdata/file2000.src:3 (63.48MB)"] -N1 -> N4 [label=" 62.50MB\n (inline)" weight=64 penwidth=4 color="#b21600" tooltip="line3000 testdata/file3000.src:4 -> line3002 testdata/file3000.src:3 (62.50MB)" labeltooltip="line3000 testdata/file3000.src:4 -> line3002 testdata/file3000.src:3 (62.50MB)"] -N1 -> N5 [label=" 4.88MB\n (inline)" weight=5 color="#b2a086" tooltip="line3000 testdata/file3000.src:4 -> line3001 testdata/file3000.src:2 (4.88MB)" labeltooltip="line3000 testdata/file3000.src:4 -> line3001 testdata/file3000.src:2 (4.88MB)"] -N5 -> N3 [label=" 3.91MB" weight=4 color="#b2a58f" tooltip="line3001 testdata/file3000.src:2 -> line1000 testdata/file1000.src:1 (3.91MB)" labeltooltip="line3001 testdata/file3000.src:2 -> line1000 testdata/file1000.src:1 (3.91MB)"] -N2 -> N3 [label=" 0.98MB" color="#b2b0a9" tooltip="line2001 testdata/file2000.src:2 -> line1000 testdata/file1000.src:1 (0.98MB)" labeltooltip="line2001 testdata/file2000.src:2 -> line1000 testdata/file1000.src:1 (0.98MB)" minlen=2] -N5 -> N4 [label=" 0.98MB\n (inline)" color="#b2b0a9" tooltip="line3001 testdata/file3000.src:2 -> line3002 testdata/file3000.src:3 (0.98MB)" labeltooltip="line3001 testdata/file3000.src:2 -> line3002 testdata/file3000.src:3 (0.98MB)"] -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.tags b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.tags deleted file mode 100644 index 630e452a9f0ccb..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.tags +++ /dev/null @@ -1,6 +0,0 @@ - bytes: Total 98.6MB - 62.5MB (63.37%): 1.56MB - 31.2MB (31.68%): 400kB - 3.9MB ( 3.96%): 200kB - 1000.0kB ( 0.99%): 100kB - diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.tags.unit b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.tags.unit deleted file mode 100644 index 5e565fc019e8f4..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap.tags.unit +++ /dev/null @@ -1,6 +0,0 @@ - bytes: Total 103424000.0B - 65536000.0B (63.37%): 1638400B - 32768000.0B (31.68%): 409600B - 4096000.0B ( 3.96%): 204800B - 1024000.0B ( 0.99%): 102400B - diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap_alloc.flat.alloc_objects.text b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap_alloc.flat.alloc_objects.text deleted file mode 100644 index 929461a3c1ef45..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap_alloc.flat.alloc_objects.text +++ /dev/null @@ -1,8 +0,0 @@ -Showing nodes accounting for 150, 100% of 150 total - flat flat% sum% cum cum% - 80 53.33% 53.33% 130 86.67% line3002 (inline) - 40 26.67% 80.00% 50 33.33% line2001 (inline) - 30 20.00% 100% 30 20.00% line1000 - 0 0% 100% 50 33.33% line2000 - 0 0% 100% 150 100% line3000 - 0 0% 100% 110 73.33% line3001 (inline) diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap_alloc.flat.alloc_space.dot b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap_alloc.flat.alloc_space.dot deleted file mode 100644 index f0621a0e3c77f9..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap_alloc.flat.alloc_space.dot +++ /dev/null @@ -1,14 +0,0 @@ -digraph "unnamed" { -node [style=filled fillcolor="#f8f8f8"] -subgraph cluster_L { "Build ID: buildid" [shape=box fontsize=16 label="Build ID: buildid\lcomment\lType: alloc_space\lActive filters:\l tagshow=[2]00\lShowing nodes accounting for 93.75MB, 95.05% of 98.63MB total\lDropped 1 node (cum <= 4.93MB)\l"] } -N1 [label="line3002\n31.25MB (31.68%)\nof 94.73MB (96.04%)" id="node1" fontsize=20 shape=box tooltip="line3002 (94.73MB)" color="#b20200" fillcolor="#edd5d5"] -N2 [label="line3000\n0 of 98.63MB (100%)" id="node2" fontsize=8 shape=box tooltip="line3000 (98.63MB)" color="#b20000" fillcolor="#edd5d5"] -N3 [label="line2001\n62.50MB (63.37%)\nof 63.48MB (64.36%)" id="node3" fontsize=24 shape=box tooltip="line2001 (63.48MB)" color="#b21600" fillcolor="#edd8d5"] -N4 [label="line2000\n0 of 63.48MB (64.36%)" id="node4" fontsize=8 shape=box tooltip="line2000 (63.48MB)" color="#b21600" fillcolor="#edd8d5"] -N5 [label="line3001\n0 of 36.13MB (36.63%)" id="node5" fontsize=8 shape=box tooltip="line3001 (36.13MB)" color="#b22e00" fillcolor="#eddbd5"] -N4 -> N3 [label=" 63.48MB\n (inline)" weight=65 penwidth=4 color="#b21600" tooltip="line2000 -> line2001 (63.48MB)" labeltooltip="line2000 -> line2001 (63.48MB)"] -N1 -> N4 [label=" 63.48MB" weight=65 penwidth=4 color="#b21600" tooltip="line3002 -> line2000 (63.48MB)" labeltooltip="line3002 -> line2000 (63.48MB)"] -N2 -> N1 [label=" 62.50MB\n (inline)" weight=64 penwidth=4 color="#b21600" tooltip="line3000 -> line3002 (62.50MB)" labeltooltip="line3000 -> line3002 (62.50MB)"] -N2 -> N5 [label=" 36.13MB\n (inline)" weight=37 penwidth=2 color="#b22e00" tooltip="line3000 -> line3001 (36.13MB)" labeltooltip="line3000 -> line3001 (36.13MB)"] -N5 -> N1 [label=" 32.23MB\n (inline)" weight=33 penwidth=2 color="#b23200" tooltip="line3001 -> line3002 (32.23MB)" labeltooltip="line3001 -> line3002 (32.23MB)"] -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap_alloc.flat.alloc_space.dot.focus b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap_alloc.flat.alloc_space.dot.focus deleted file mode 100644 index e412ff4813fd9b..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap_alloc.flat.alloc_space.dot.focus +++ /dev/null @@ -1,18 +0,0 @@ -digraph "unnamed" { -node [style=filled fillcolor="#f8f8f8"] -subgraph cluster_L { "Build ID: buildid" [shape=box fontsize=16 label="Build ID: buildid\lcomment\lType: alloc_space\lActive filters:\l focus=[234]00\lShowing nodes accounting for 93.75MB, 95.05% of 98.63MB total\lDropped 1 node (cum <= 4.93MB)\l"] } -N1 [label="line3002\n31.25MB (31.68%)\nof 94.73MB (96.04%)" id="node1" fontsize=20 shape=box tooltip="line3002 (94.73MB)" color="#b20200" fillcolor="#edd5d5"] -NN1_0 [label = "400kB" id="NN1_0" fontsize=8 shape=box3d tooltip="31.25MB"] -N1 -> NN1_0 [label=" 31.25MB" weight=100 tooltip="31.25MB" labeltooltip="31.25MB"] -N2 [label="line3000\n0 of 98.63MB (100%)" id="node2" fontsize=8 shape=box tooltip="line3000 (98.63MB)" color="#b20000" fillcolor="#edd5d5"] -N3 [label="line2001\n62.50MB (63.37%)\nof 63.48MB (64.36%)" id="node3" fontsize=24 shape=box tooltip="line2001 (63.48MB)" color="#b21600" fillcolor="#edd8d5"] -NN3_0 [label = "1.56MB" id="NN3_0" fontsize=8 shape=box3d tooltip="62.50MB"] -N3 -> NN3_0 [label=" 62.50MB" weight=100 tooltip="62.50MB" labeltooltip="62.50MB"] -N4 [label="line2000\n0 of 63.48MB (64.36%)" id="node4" fontsize=8 shape=box tooltip="line2000 (63.48MB)" color="#b21600" fillcolor="#edd8d5"] -N5 [label="line3001\n0 of 36.13MB (36.63%)" id="node5" fontsize=8 shape=box tooltip="line3001 (36.13MB)" color="#b22e00" fillcolor="#eddbd5"] -N4 -> N3 [label=" 63.48MB\n (inline)" weight=65 penwidth=4 color="#b21600" tooltip="line2000 -> line2001 (63.48MB)" labeltooltip="line2000 -> line2001 (63.48MB)"] -N1 -> N4 [label=" 63.48MB" weight=65 penwidth=4 color="#b21600" tooltip="line3002 -> line2000 (63.48MB)" labeltooltip="line3002 -> line2000 (63.48MB)" minlen=2] -N2 -> N1 [label=" 62.50MB\n (inline)" weight=64 penwidth=4 color="#b21600" tooltip="line3000 -> line3002 (62.50MB)" labeltooltip="line3000 -> line3002 (62.50MB)"] -N2 -> N5 [label=" 36.13MB\n (inline)" weight=37 penwidth=2 color="#b22e00" tooltip="line3000 -> line3001 (36.13MB)" labeltooltip="line3000 -> line3001 (36.13MB)"] -N5 -> N1 [label=" 32.23MB\n (inline)" weight=33 penwidth=2 color="#b23200" tooltip="line3001 -> line3002 (32.23MB)" labeltooltip="line3001 -> line3002 (32.23MB)"] -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap_alloc.flat.alloc_space.dot.hide b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap_alloc.flat.alloc_space.dot.hide deleted file mode 100644 index 6110b114b9f735..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap_alloc.flat.alloc_space.dot.hide +++ /dev/null @@ -1,11 +0,0 @@ -digraph "unnamed" { -node [style=filled fillcolor="#f8f8f8"] -subgraph cluster_L { "Build ID: buildid" [shape=box fontsize=16 label="Build ID: buildid\lcomment\lType: alloc_space\lActive filters:\l hide=line.*1?23?\lShowing nodes accounting for 93.75MB, 95.05% of 98.63MB total\lDropped 1 node (cum <= 4.93MB)\l"] } -N1 [label="line3000\n62.50MB (63.37%)\nof 98.63MB (100%)" id="node1" fontsize=24 shape=box tooltip="line3000 (98.63MB)" color="#b20000" fillcolor="#edd5d5"] -NN1_0 [label = "1.56MB" id="NN1_0" fontsize=8 shape=box3d tooltip="62.50MB"] -N1 -> NN1_0 [label=" 62.50MB" weight=100 tooltip="62.50MB" labeltooltip="62.50MB"] -N2 [label="line3001\n31.25MB (31.68%)\nof 36.13MB (36.63%)" id="node2" fontsize=20 shape=box tooltip="line3001 (36.13MB)" color="#b22e00" fillcolor="#eddbd5"] -NN2_0 [label = "400kB" id="NN2_0" fontsize=8 shape=box3d tooltip="31.25MB"] -N2 -> NN2_0 [label=" 31.25MB" weight=100 tooltip="31.25MB" labeltooltip="31.25MB"] -N1 -> N2 [label=" 36.13MB\n (inline)" weight=37 penwidth=2 color="#b22e00" tooltip="line3000 -> line3001 (36.13MB)" labeltooltip="line3000 -> line3001 (36.13MB)" minlen=2] -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap_request.tags.focus b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap_request.tags.focus deleted file mode 100644 index b1a5f444d8c5d4..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap_request.tags.focus +++ /dev/null @@ -1,8 +0,0 @@ - bytes: Total 93.8MB - 62.5MB (66.67%): 1.56MB - 31.2MB (33.33%): 400kB - - request: Total 93.8MB - 62.5MB (66.67%): 1.56MB - 31.2MB (33.33%): 400kB - diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap_sizetags.dot b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap_sizetags.dot deleted file mode 100644 index 6be6112fd4992d..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap_sizetags.dot +++ /dev/null @@ -1,30 +0,0 @@ -digraph "unnamed" { -node [style=filled fillcolor="#f8f8f8"] -subgraph cluster_L { "Build ID: buildid" [shape=box fontsize=16 label="Build ID: buildid\lcomment\lType: inuse_space\lShowing nodes accounting for 93.75MB, 95.05% of 98.63MB total\lDropped 1 node (cum <= 4.93MB)\l"] } -N1 [label="line3002\n31.25MB (31.68%)\nof 94.73MB (96.04%)" id="node1" fontsize=20 shape=box tooltip="line3002 (94.73MB)" color="#b20200" fillcolor="#edd5d5"] -NN1_0 [label = "16B..64B" id="NN1_0" fontsize=8 shape=box3d tooltip="93.75MB"] -N1 -> NN1_0 [label=" 93.75MB" weight=100 tooltip="93.75MB" labeltooltip="93.75MB"] -NN1_1 [label = "2B..8B" id="NN1_1" fontsize=8 shape=box3d tooltip="93.75MB"] -N1 -> NN1_1 [label=" 93.75MB" weight=100 tooltip="93.75MB" labeltooltip="93.75MB"] -NN1_2 [label = "256B..1.56MB" id="NN1_2" fontsize=8 shape=box3d tooltip="62.50MB"] -N1 -> NN1_2 [label=" 62.50MB" weight=100 tooltip="62.50MB" labeltooltip="62.50MB"] -NN1_3 [label = "128B" id="NN1_3" fontsize=8 shape=box3d tooltip="31.25MB"] -N1 -> NN1_3 [label=" 31.25MB" weight=100 tooltip="31.25MB" labeltooltip="31.25MB"] -N2 [label="line3000\n0 of 98.63MB (100%)" id="node2" fontsize=8 shape=box tooltip="line3000 (98.63MB)" color="#b20000" fillcolor="#edd5d5"] -N3 [label="line2001\n62.50MB (63.37%)\nof 63.48MB (64.36%)" id="node3" fontsize=24 shape=box tooltip="line2001 (63.48MB)" color="#b21600" fillcolor="#edd8d5"] -NN3_0 [label = "16B..64B" id="NN3_0" fontsize=8 shape=box3d tooltip="190.43MB"] -N3 -> NN3_0 [label=" 190.43MB" weight=100 tooltip="190.43MB" labeltooltip="190.43MB" style="dotted"] -NN3_1 [label = "2B..8B" id="NN3_1" fontsize=8 shape=box3d tooltip="190.43MB"] -N3 -> NN3_1 [label=" 190.43MB" weight=100 tooltip="190.43MB" labeltooltip="190.43MB" style="dotted"] -NN3_2 [label = "256B..1.56MB" id="NN3_2" fontsize=8 shape=box3d tooltip="125.98MB"] -N3 -> NN3_2 [label=" 125.98MB" weight=100 tooltip="125.98MB" labeltooltip="125.98MB" style="dotted"] -NN3_3 [label = "128B" id="NN3_3" fontsize=8 shape=box3d tooltip="63.48MB"] -N3 -> NN3_3 [label=" 63.48MB" weight=100 tooltip="63.48MB" labeltooltip="63.48MB" style="dotted"] -N4 [label="line2000\n0 of 63.48MB (64.36%)" id="node4" fontsize=8 shape=box tooltip="line2000 (63.48MB)" color="#b21600" fillcolor="#edd8d5"] -N5 [label="line3001\n0 of 36.13MB (36.63%)" id="node5" fontsize=8 shape=box tooltip="line3001 (36.13MB)" color="#b22e00" fillcolor="#eddbd5"] -N4 -> N3 [label=" 63.48MB\n (inline)" weight=65 penwidth=4 color="#b21600" tooltip="line2000 -> line2001 (63.48MB)" labeltooltip="line2000 -> line2001 (63.48MB)"] -N1 -> N4 [label=" 63.48MB" weight=65 penwidth=4 color="#b21600" tooltip="line3002 -> line2000 (63.48MB)" labeltooltip="line3002 -> line2000 (63.48MB)" minlen=2] -N2 -> N1 [label=" 62.50MB\n (inline)" weight=64 penwidth=4 color="#b21600" tooltip="line3000 -> line3002 (62.50MB)" labeltooltip="line3000 -> line3002 (62.50MB)"] -N2 -> N5 [label=" 36.13MB\n (inline)" weight=37 penwidth=2 color="#b22e00" tooltip="line3000 -> line3001 (36.13MB)" labeltooltip="line3000 -> line3001 (36.13MB)"] -N5 -> N1 [label=" 32.23MB\n (inline)" weight=33 penwidth=2 color="#b23200" tooltip="line3001 -> line3002 (32.23MB)" labeltooltip="line3001 -> line3002 (32.23MB)"] -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap_tags.traces b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap_tags.traces deleted file mode 100644 index 547aea74c33280..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.heap_tags.traces +++ /dev/null @@ -1,32 +0,0 @@ -Build ID: buildid -comment -Type: inuse_space ------------+------------------------------------------------------- - key1: tag - bytes: 100kB - request: 100kB - 1000kB line1000 - line2001 - line2000 - line3002 - line3001 - line3000 ------------+------------------------------------------------------- - bytes: 200kB - 3.91MB line1000 - line3001 - line3000 ------------+------------------------------------------------------- - key1: tag - bytes: 1.56MB - request: 1.56MB - 62.50MB line2001 - line2000 - line3002 - line3000 ------------+------------------------------------------------------- - bytes: 400kB - 31.25MB line3002 - line3001 - line3000 ------------+------------------------------------------------------- diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.longNameFuncs.dot b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.longNameFuncs.dot deleted file mode 100644 index 474a5108ba1c31..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.longNameFuncs.dot +++ /dev/null @@ -1,9 +0,0 @@ -digraph "testbinary" { -node [style=filled fillcolor="#f8f8f8"] -subgraph cluster_L { "File: testbinary" [shape=box fontsize=16 label="File: testbinary\lType: cpu\lDuration: 10s, Total samples = 1.11s (11.10%)\lShowing nodes accounting for 1.11s, 100% of 1.11s total\l" tooltip="testbinary"] } -N1 [label="package1\nobject\nfunction1\n1.10s (99.10%)" id="node1" fontsize=24 shape=box tooltip="path/to/package1.object.function1 (1.10s)" color="#b20000" fillcolor="#edd5d5"] -N2 [label="FooBar\nrun\n0.01s (0.9%)\nof 1.01s (90.99%)" id="node2" fontsize=10 shape=box tooltip="java.bar.foo.FooBar.run(java.lang.Runnable) (1.01s)" color="#b20400" fillcolor="#edd6d5"] -N3 [label="Bar\nFoo\n0 of 1.10s (99.10%)" id="node3" fontsize=8 shape=box tooltip="(anonymous namespace)::Bar::Foo (1.10s)" color="#b20000" fillcolor="#edd5d5"] -N3 -> N1 [label=" 1.10s" weight=100 penwidth=5 color="#b20000" tooltip="(anonymous namespace)::Bar::Foo -> path/to/package1.object.function1 (1.10s)" labeltooltip="(anonymous namespace)::Bar::Foo -> path/to/package1.object.function1 (1.10s)"] -N2 -> N3 [label=" 1s" weight=91 penwidth=5 color="#b20500" tooltip="java.bar.foo.FooBar.run(java.lang.Runnable) -> (anonymous namespace)::Bar::Foo (1s)" labeltooltip="java.bar.foo.FooBar.run(java.lang.Runnable) -> (anonymous namespace)::Bar::Foo (1s)"] -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.longNameFuncs.text b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.longNameFuncs.text deleted file mode 100644 index 39cb24ed6a2025..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.longNameFuncs.text +++ /dev/null @@ -1,5 +0,0 @@ -Showing nodes accounting for 1.11s, 100% of 1.11s total - flat flat% sum% cum cum% - 1.10s 99.10% 99.10% 1.10s 99.10% path/to/package1.object.function1 - 0.01s 0.9% 100% 1.01s 90.99% java.bar.foo.FooBar.run(java.lang.Runnable) - 0 0% 100% 1.10s 99.10% (anonymous namespace)::Bar::Foo diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.unknown.flat.functions.call_tree.text b/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.unknown.flat.functions.call_tree.text deleted file mode 100644 index 78a2298f95fe29..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/testdata/pprof.unknown.flat.functions.call_tree.text +++ /dev/null @@ -1,8 +0,0 @@ -Showing nodes accounting for 1.12s, 100% of 1.12s total -Showing top 5 nodes out of 6 - flat flat% sum% cum cum% - 1.10s 98.21% 98.21% 1.10s 98.21% line1000 - 0.01s 0.89% 99.11% 1.01s 90.18% line2001 (inline) - 0.01s 0.89% 100% 1.02s 91.07% line3002 (inline) - 0 0% 100% 1.01s 90.18% line2000 - 0 0% 100% 1.12s 100% line3000 diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/webui_test.go b/src/cmd/vendor/github.com/google/pprof/internal/driver/webui_test.go deleted file mode 100644 index 58681bea8f1bf4..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/webui_test.go +++ /dev/null @@ -1,285 +0,0 @@ -// Copyright 2017 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package driver - -import ( - "fmt" - "io/ioutil" - "net" - "net/http" - "net/http/httptest" - "net/url" - "os/exec" - "regexp" - "runtime" - "sync" - "testing" - - "github.com/google/pprof/internal/plugin" - "github.com/google/pprof/internal/proftest" - "github.com/google/pprof/profile" -) - -func TestWebInterface(t *testing.T) { - if runtime.GOOS == "nacl" || runtime.GOOS == "js" { - t.Skip("test assumes tcp available") - } - - prof := makeFakeProfile() - - // Custom http server creator - var server *httptest.Server - serverCreated := make(chan bool) - creator := func(a *plugin.HTTPServerArgs) error { - server = httptest.NewServer(http.HandlerFunc( - func(w http.ResponseWriter, r *http.Request) { - if h := a.Handlers[r.URL.Path]; h != nil { - h.ServeHTTP(w, r) - } - })) - serverCreated <- true - return nil - } - - // Start server and wait for it to be initialized - go serveWebInterface("unused:1234", prof, &plugin.Options{ - Obj: fakeObjTool{}, - UI: &proftest.TestUI{}, - HTTPServer: creator, - }) - <-serverCreated - defer server.Close() - - haveDot := false - if _, err := exec.LookPath("dot"); err == nil { - haveDot = true - } - - type testCase struct { - path string - want []string - needDot bool - } - testcases := []testCase{ - {"/", []string{"F1", "F2", "F3", "testbin", "cpu"}, true}, - {"/top", []string{`"Name":"F2","InlineLabel":"","Flat":200,"Cum":300,"FlatFormat":"200ms","CumFormat":"300ms"}`}, false}, - {"/source?f=" + url.QueryEscape("F[12]"), - []string{"F1", "F2", "300ms +line1"}, false}, - {"/peek?f=" + url.QueryEscape("F[12]"), - []string{"300ms.*F1", "200ms.*300ms.*F2"}, false}, - {"/disasm?f=" + url.QueryEscape("F[12]"), - []string{"f1:asm", "f2:asm"}, false}, - {"/flamegraph", []string{"File: testbin", "\"n\":\"root\"", "\"n\":\"F1\"", "var flamegraph = function", "function hierarchy"}, false}, - } - for _, c := range testcases { - if c.needDot && !haveDot { - t.Log("skipping", c.path, "since dot (graphviz) does not seem to be installed") - continue - } - - res, err := http.Get(server.URL + c.path) - if err != nil { - t.Error("could not fetch", c.path, err) - continue - } - data, err := ioutil.ReadAll(res.Body) - if err != nil { - t.Error("could not read response", c.path, err) - continue - } - result := string(data) - for _, w := range c.want { - if match, _ := regexp.MatchString(w, result); !match { - t.Errorf("response for %s does not match "+ - "expected pattern '%s'; "+ - "actual result:\n%s", c.path, w, result) - } - } - } - - // Also fetch all the test case URLs in parallel to test thread - // safety when run under the race detector. - var wg sync.WaitGroup - for _, c := range testcases { - if c.needDot && !haveDot { - continue - } - path := server.URL + c.path - for count := 0; count < 2; count++ { - wg.Add(1) - go func() { - defer wg.Done() - res, err := http.Get(path) - if err != nil { - t.Error("could not fetch", c.path, err) - return - } - if _, err = ioutil.ReadAll(res.Body); err != nil { - t.Error("could not read response", c.path, err) - } - }() - } - } - wg.Wait() -} - -// Implement fake object file support. - -const addrBase = 0x1000 -const fakeSource = "testdata/file1000.src" - -type fakeObj struct{} - -func (f fakeObj) Close() error { return nil } -func (f fakeObj) Name() string { return "testbin" } -func (f fakeObj) Base() uint64 { return 0 } -func (f fakeObj) BuildID() string { return "" } -func (f fakeObj) SourceLine(addr uint64) ([]plugin.Frame, error) { - return nil, fmt.Errorf("SourceLine unimplemented") -} -func (f fakeObj) Symbols(r *regexp.Regexp, addr uint64) ([]*plugin.Sym, error) { - return []*plugin.Sym{ - { - Name: []string{"F1"}, File: fakeSource, - Start: addrBase, End: addrBase + 10, - }, - { - Name: []string{"F2"}, File: fakeSource, - Start: addrBase + 10, End: addrBase + 20, - }, - { - Name: []string{"F3"}, File: fakeSource, - Start: addrBase + 20, End: addrBase + 30, - }, - }, nil -} - -type fakeObjTool struct{} - -func (obj fakeObjTool) Open(file string, start, limit, offset uint64) (plugin.ObjFile, error) { - return fakeObj{}, nil -} - -func (obj fakeObjTool) Disasm(file string, start, end uint64) ([]plugin.Inst, error) { - return []plugin.Inst{ - {Addr: addrBase + 0, Text: "f1:asm", Function: "F1"}, - {Addr: addrBase + 10, Text: "f2:asm", Function: "F2"}, - {Addr: addrBase + 20, Text: "d3:asm", Function: "F3"}, - }, nil -} - -func makeFakeProfile() *profile.Profile { - // Three functions: F1, F2, F3 with three lines, 11, 22, 33. - funcs := []*profile.Function{ - {ID: 1, Name: "F1", Filename: fakeSource, StartLine: 3}, - {ID: 2, Name: "F2", Filename: fakeSource, StartLine: 5}, - {ID: 3, Name: "F3", Filename: fakeSource, StartLine: 7}, - } - lines := []profile.Line{ - {Function: funcs[0], Line: 11}, - {Function: funcs[1], Line: 22}, - {Function: funcs[2], Line: 33}, - } - mapping := []*profile.Mapping{ - { - ID: 1, - Start: addrBase, - Limit: addrBase + 10, - Offset: 0, - File: "testbin", - HasFunctions: true, - HasFilenames: true, - HasLineNumbers: true, - }, - } - - // Three interesting addresses: base+{10,20,30} - locs := []*profile.Location{ - {ID: 1, Address: addrBase + 10, Line: lines[0:1], Mapping: mapping[0]}, - {ID: 2, Address: addrBase + 20, Line: lines[1:2], Mapping: mapping[0]}, - {ID: 3, Address: addrBase + 30, Line: lines[2:3], Mapping: mapping[0]}, - } - - // Two stack traces. - return &profile.Profile{ - PeriodType: &profile.ValueType{Type: "cpu", Unit: "milliseconds"}, - Period: 1, - DurationNanos: 10e9, - SampleType: []*profile.ValueType{ - {Type: "cpu", Unit: "milliseconds"}, - }, - Sample: []*profile.Sample{ - { - Location: []*profile.Location{locs[2], locs[1], locs[0]}, - Value: []int64{100}, - }, - { - Location: []*profile.Location{locs[1], locs[0]}, - Value: []int64{200}, - }, - }, - Location: locs, - Function: funcs, - Mapping: mapping, - } -} - -func TestGetHostAndPort(t *testing.T) { - if runtime.GOOS == "nacl" || runtime.GOOS == "js" { - t.Skip("test assumes tcp available") - } - - type testCase struct { - hostport string - wantHost string - wantPort int - wantRandomPort bool - } - - testCases := []testCase{ - {":", "localhost", 0, true}, - {":4681", "localhost", 4681, false}, - {"localhost:4681", "localhost", 4681, false}, - } - for _, tc := range testCases { - host, port, err := getHostAndPort(tc.hostport) - if err != nil { - t.Errorf("could not get host and port for %q: %v", tc.hostport, err) - } - if got, want := host, tc.wantHost; got != want { - t.Errorf("for %s, got host %s, want %s", tc.hostport, got, want) - continue - } - if !tc.wantRandomPort { - if got, want := port, tc.wantPort; got != want { - t.Errorf("for %s, got port %d, want %d", tc.hostport, got, want) - continue - } - } - } -} - -func TestIsLocalHost(t *testing.T) { - for _, s := range []string{"localhost:10000", "[::1]:10000", "127.0.0.1:10000"} { - host, _, err := net.SplitHostPort(s) - if err != nil { - t.Error("unexpected error when splitting", s) - continue - } - if !isLocalhost(host) { - t.Errorf("host %s from %s not considered local", host, s) - } - } -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/elfexec/elfexec_test.go b/src/cmd/vendor/github.com/google/pprof/internal/elfexec/elfexec_test.go deleted file mode 100644 index ff95c36addd211..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/elfexec/elfexec_test.go +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright 2014 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package elfexec - -import ( - "debug/elf" - "testing" -) - -func TestGetBase(t *testing.T) { - - fhExec := &elf.FileHeader{ - Type: elf.ET_EXEC, - } - fhRel := &elf.FileHeader{ - Type: elf.ET_REL, - } - fhDyn := &elf.FileHeader{ - Type: elf.ET_DYN, - } - lsOffset := &elf.ProgHeader{ - Vaddr: 0x400000, - Off: 0x200000, - } - kernelHeader := &elf.ProgHeader{ - Vaddr: 0xffffffff81000000, - } - kernelAslrHeader := &elf.ProgHeader{ - Vaddr: 0xffffffff80200000, - Off: 0x1000, - } - ppc64KernelHeader := &elf.ProgHeader{ - Vaddr: 0xc000000000000000, - } - - testcases := []struct { - label string - fh *elf.FileHeader - loadSegment *elf.ProgHeader - stextOffset *uint64 - start, limit, offset uint64 - want uint64 - wanterr bool - }{ - {"exec", fhExec, nil, nil, 0x400000, 0, 0, 0, false}, - {"exec offset", fhExec, lsOffset, nil, 0x400000, 0x800000, 0, 0x200000, false}, - {"exec offset 2", fhExec, lsOffset, nil, 0x200000, 0x600000, 0, 0, false}, - {"exec nomap", fhExec, nil, nil, 0, 0, 0, 0, false}, - {"exec kernel", fhExec, kernelHeader, uint64p(0xffffffff81000198), 0xffffffff82000198, 0xffffffff83000198, 0, 0x1000000, false}, - {"exec kernel", fhExec, kernelHeader, uint64p(0xffffffff810002b8), 0xffffffff81000000, 0xffffffffa0000000, 0x0, 0x0, false}, - {"exec kernel ASLR", fhExec, kernelHeader, uint64p(0xffffffff810002b8), 0xffffffff81000000, 0xffffffffa0000000, 0xffffffff81000000, 0x0, false}, - // TODO(aalexand): Figure out where this test case exactly comes from and - // whether it's still relevant. - {"exec kernel ASLR 2", fhExec, kernelAslrHeader, nil, 0xffffffff83e00000, 0xfffffffffc3fffff, 0x3c00000, 0x3c00000, false}, - {"exec PPC64 kernel", fhExec, ppc64KernelHeader, uint64p(0xc000000000000000), 0xc000000000000000, 0xd00000001a730000, 0x0, 0x0, false}, - {"exec chromeos kernel", fhExec, kernelHeader, uint64p(0xffffffff81000198), 0, 0x10197, 0, 0x7efffe68, false}, - {"exec chromeos kernel 2", fhExec, kernelHeader, uint64p(0xffffffff81000198), 0, 0x10198, 0, 0x7efffe68, false}, - {"exec chromeos kernel 3", fhExec, kernelHeader, uint64p(0xffffffff81000198), 0x198, 0x100000, 0, 0x7f000000, false}, - {"exec chromeos kernel 4", fhExec, kernelHeader, uint64p(0xffffffff81200198), 0x198, 0x100000, 0, 0x7ee00000, false}, - {"exec chromeos kernel unremapped", fhExec, kernelHeader, uint64p(0xffffffff810001c8), 0xffffffff834001c8, 0xffffffffc0000000, 0xffffffff834001c8, 0x2400000, false}, - {"dyn", fhDyn, nil, nil, 0x200000, 0x300000, 0, 0x200000, false}, - {"dyn map", fhDyn, lsOffset, nil, 0x0, 0x300000, 0, 0xFFFFFFFFFFE00000, false}, - {"dyn nomap", fhDyn, nil, nil, 0x0, 0x0, 0, 0, false}, - {"dyn map+offset", fhDyn, lsOffset, nil, 0x900000, 0xa00000, 0x200000, 0x500000, false}, - {"rel", fhRel, nil, nil, 0x2000000, 0x3000000, 0, 0x2000000, false}, - {"rel nomap", fhRel, nil, nil, 0x0, ^uint64(0), 0, 0, false}, - {"rel offset", fhRel, nil, nil, 0x100000, 0x200000, 0x1, 0, true}, - } - - for _, tc := range testcases { - base, err := GetBase(tc.fh, tc.loadSegment, tc.stextOffset, tc.start, tc.limit, tc.offset) - if err != nil { - if !tc.wanterr { - t.Errorf("%s: want no error, got %v", tc.label, err) - } - continue - } - if tc.wanterr { - t.Errorf("%s: want error, got nil", tc.label) - continue - } - if base != tc.want { - t.Errorf("%s: want 0x%x, got 0x%x", tc.label, tc.want, base) - } - } -} - -func uint64p(n uint64) *uint64 { - return &n -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/graph/dotgraph_test.go b/src/cmd/vendor/github.com/google/pprof/internal/graph/dotgraph_test.go deleted file mode 100644 index b8368b8fa4f84d..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/graph/dotgraph_test.go +++ /dev/null @@ -1,335 +0,0 @@ -// Copyright 2014 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package graph - -import ( - "bytes" - "flag" - "fmt" - "io/ioutil" - "path/filepath" - "reflect" - "strconv" - "strings" - "testing" - - "github.com/google/pprof/internal/proftest" -) - -var updateFlag = flag.Bool("update", false, "Update the golden files") - -func TestComposeWithStandardGraph(t *testing.T) { - g := baseGraph() - a, c := baseAttrsAndConfig() - - var buf bytes.Buffer - ComposeDot(&buf, g, a, c) - - compareGraphs(t, buf.Bytes(), "compose1.dot") -} - -func TestComposeWithNodeAttributesAndZeroFlat(t *testing.T) { - g := baseGraph() - a, c := baseAttrsAndConfig() - - // Set NodeAttributes for Node 1. - a.Nodes[g.Nodes[0]] = &DotNodeAttributes{ - Shape: "folder", - Bold: true, - Peripheries: 2, - URL: "www.google.com", - Formatter: func(ni *NodeInfo) string { - return strings.ToUpper(ni.Name) - }, - } - - // Set Flat value to zero on Node 2. - g.Nodes[1].Flat = 0 - - var buf bytes.Buffer - ComposeDot(&buf, g, a, c) - - compareGraphs(t, buf.Bytes(), "compose2.dot") -} - -func TestComposeWithTagsAndResidualEdge(t *testing.T) { - g := baseGraph() - a, c := baseAttrsAndConfig() - - // Add tags to Node 1. - g.Nodes[0].LabelTags["a"] = &Tag{ - Name: "tag1", - Cum: 10, - Flat: 10, - } - g.Nodes[0].NumericTags[""] = TagMap{ - "b": &Tag{ - Name: "tag2", - Cum: 20, - Flat: 20, - Unit: "ms", - }, - } - - // Set edge to be Residual. - g.Nodes[0].Out[g.Nodes[1]].Residual = true - - var buf bytes.Buffer - ComposeDot(&buf, g, a, c) - - compareGraphs(t, buf.Bytes(), "compose3.dot") -} - -func TestComposeWithNestedTags(t *testing.T) { - g := baseGraph() - a, c := baseAttrsAndConfig() - - // Add tags to Node 1. - g.Nodes[0].LabelTags["tag1"] = &Tag{ - Name: "tag1", - Cum: 10, - Flat: 10, - } - g.Nodes[0].NumericTags["tag1"] = TagMap{ - "tag2": &Tag{ - Name: "tag2", - Cum: 20, - Flat: 20, - Unit: "ms", - }, - } - - var buf bytes.Buffer - ComposeDot(&buf, g, a, c) - - compareGraphs(t, buf.Bytes(), "compose5.dot") -} - -func TestComposeWithEmptyGraph(t *testing.T) { - g := &Graph{} - a, c := baseAttrsAndConfig() - - var buf bytes.Buffer - ComposeDot(&buf, g, a, c) - - compareGraphs(t, buf.Bytes(), "compose4.dot") -} - -func TestComposeWithStandardGraphAndURL(t *testing.T) { - g := baseGraph() - a, c := baseAttrsAndConfig() - c.LegendURL = "http://example.com" - - var buf bytes.Buffer - ComposeDot(&buf, g, a, c) - - compareGraphs(t, buf.Bytes(), "compose6.dot") -} - -func baseGraph() *Graph { - src := &Node{ - Info: NodeInfo{Name: "src"}, - Flat: 10, - Cum: 25, - In: make(EdgeMap), - Out: make(EdgeMap), - LabelTags: make(TagMap), - NumericTags: make(map[string]TagMap), - } - dest := &Node{ - Info: NodeInfo{Name: "dest"}, - Flat: 15, - Cum: 25, - In: make(EdgeMap), - Out: make(EdgeMap), - LabelTags: make(TagMap), - NumericTags: make(map[string]TagMap), - } - edge := &Edge{ - Src: src, - Dest: dest, - Weight: 10, - } - src.Out[dest] = edge - src.In[src] = edge - return &Graph{ - Nodes: Nodes{ - src, - dest, - }, - } -} - -func baseAttrsAndConfig() (*DotAttributes, *DotConfig) { - a := &DotAttributes{ - Nodes: make(map[*Node]*DotNodeAttributes), - } - c := &DotConfig{ - Title: "testtitle", - Labels: []string{"label1", "label2"}, - Total: 100, - FormatValue: func(v int64) string { - return strconv.FormatInt(v, 10) - }, - } - return a, c -} - -func compareGraphs(t *testing.T, got []byte, wantFile string) { - wantFile = filepath.Join("testdata", wantFile) - want, err := ioutil.ReadFile(wantFile) - if err != nil { - t.Fatalf("error reading test file %s: %v", wantFile, err) - } - - if string(got) != string(want) { - d, err := proftest.Diff(got, want) - if err != nil { - t.Fatalf("error finding diff: %v", err) - } - t.Errorf("Compose incorrectly wrote %s", string(d)) - if *updateFlag { - err := ioutil.WriteFile(wantFile, got, 0644) - if err != nil { - t.Errorf("failed to update the golden file %q: %v", wantFile, err) - } - } - } -} - -func TestNodeletCountCapping(t *testing.T) { - labelTags := make(TagMap) - for i := 0; i < 10; i++ { - name := fmt.Sprintf("tag-%d", i) - labelTags[name] = &Tag{ - Name: name, - Flat: 10, - Cum: 10, - } - } - numTags := make(TagMap) - for i := 0; i < 10; i++ { - name := fmt.Sprintf("num-tag-%d", i) - numTags[name] = &Tag{ - Name: name, - Unit: "mb", - Value: 16, - Flat: 10, - Cum: 10, - } - } - node1 := &Node{ - Info: NodeInfo{Name: "node1-with-tags"}, - Flat: 10, - Cum: 10, - NumericTags: map[string]TagMap{"": numTags}, - LabelTags: labelTags, - } - node2 := &Node{ - Info: NodeInfo{Name: "node2"}, - Flat: 15, - Cum: 15, - } - node3 := &Node{ - Info: NodeInfo{Name: "node3"}, - Flat: 15, - Cum: 15, - } - g := &Graph{ - Nodes: Nodes{ - node1, - node2, - node3, - }, - } - for n := 1; n <= 3; n++ { - input := maxNodelets + n - if got, want := len(g.SelectTopNodes(input, true)), n; got != want { - t.Errorf("SelectTopNodes(%d): got %d nodes, want %d", input, got, want) - } - } -} - -func TestMultilinePrintableName(t *testing.T) { - ni := &NodeInfo{ - Name: "test1.test2::test3", - File: "src/file.cc", - Address: 123, - Lineno: 999, - } - - want := fmt.Sprintf(`%016x\ntest1\ntest2\ntest3\nfile.cc:999\n`, 123) - if got := multilinePrintableName(ni); got != want { - t.Errorf("multilinePrintableName(%#v) == %q, want %q", ni, got, want) - } -} - -func TestTagCollapse(t *testing.T) { - - makeTag := func(name, unit string, value, flat, cum int64) *Tag { - return &Tag{name, unit, value, flat, 0, cum, 0} - } - - tagSource := []*Tag{ - makeTag("12mb", "mb", 12, 100, 100), - makeTag("1kb", "kb", 1, 1, 1), - makeTag("1mb", "mb", 1, 1000, 1000), - makeTag("2048mb", "mb", 2048, 1000, 1000), - makeTag("1b", "b", 1, 100, 100), - makeTag("2b", "b", 2, 100, 100), - makeTag("7b", "b", 7, 100, 100), - } - - tagWant := [][]*Tag{ - { - makeTag("1B..2GB", "", 0, 2401, 2401), - }, - { - makeTag("2GB", "", 0, 1000, 1000), - makeTag("1B..12MB", "", 0, 1401, 1401), - }, - { - makeTag("2GB", "", 0, 1000, 1000), - makeTag("12MB", "", 0, 100, 100), - makeTag("1B..1MB", "", 0, 1301, 1301), - }, - { - makeTag("2GB", "", 0, 1000, 1000), - makeTag("1MB", "", 0, 1000, 1000), - makeTag("2B..1kB", "", 0, 201, 201), - makeTag("1B", "", 0, 100, 100), - makeTag("12MB", "", 0, 100, 100), - }, - } - - for _, tc := range tagWant { - var got, want []*Tag - b := builder{nil, &DotAttributes{}, &DotConfig{}} - got = b.collapsedTags(tagSource, len(tc), true) - want = SortTags(tc, true) - - if !reflect.DeepEqual(got, want) { - t.Errorf("collapse to %d, got:\n%v\nwant:\n%v", len(tc), tagString(got), tagString(want)) - } - } -} - -func tagString(t []*Tag) string { - var ret []string - for _, s := range t { - ret = append(ret, fmt.Sprintln(s)) - } - return strings.Join(ret, ":") -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/graph/graph_test.go b/src/cmd/vendor/github.com/google/pprof/internal/graph/graph_test.go deleted file mode 100644 index ef1171a14d7bb9..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/graph/graph_test.go +++ /dev/null @@ -1,471 +0,0 @@ -package graph - -import ( - "fmt" - "testing" - - "github.com/google/pprof/profile" -) - -func edgeDebugString(edge *Edge) string { - debug := "" - debug += fmt.Sprintf("\t\tSrc: %p\n", edge.Src) - debug += fmt.Sprintf("\t\tDest: %p\n", edge.Dest) - debug += fmt.Sprintf("\t\tWeight: %d\n", edge.Weight) - debug += fmt.Sprintf("\t\tResidual: %t\n", edge.Residual) - debug += fmt.Sprintf("\t\tInline: %t\n", edge.Inline) - return debug -} - -func edgeMapsDebugString(in, out EdgeMap) string { - debug := "" - debug += "In Edges:\n" - for parent, edge := range in { - debug += fmt.Sprintf("\tParent: %p\n", parent) - debug += edgeDebugString(edge) - } - debug += "Out Edges:\n" - for child, edge := range out { - debug += fmt.Sprintf("\tChild: %p\n", child) - debug += edgeDebugString(edge) - } - return debug -} - -func graphDebugString(graph *Graph) string { - debug := "" - for i, node := range graph.Nodes { - debug += fmt.Sprintf("Node %d: %p\n", i, node) - } - - for i, node := range graph.Nodes { - debug += "\n" - debug += fmt.Sprintf("=== Node %d: %p ===\n", i, node) - debug += edgeMapsDebugString(node.In, node.Out) - } - return debug -} - -func expectedNodesDebugString(expected []expectedNode) string { - debug := "" - for i, node := range expected { - debug += fmt.Sprintf("Node %d: %p\n", i, node.node) - } - - for i, node := range expected { - debug += "\n" - debug += fmt.Sprintf("=== Node %d: %p ===\n", i, node.node) - debug += edgeMapsDebugString(node.in, node.out) - } - return debug -} - -// edgeMapsEqual checks if all the edges in this equal all the edges in that. -func edgeMapsEqual(this, that EdgeMap) bool { - if len(this) != len(that) { - return false - } - for node, thisEdge := range this { - if *thisEdge != *that[node] { - return false - } - } - return true -} - -// nodesEqual checks if node is equal to expected. -func nodesEqual(node *Node, expected expectedNode) bool { - return node == expected.node && edgeMapsEqual(node.In, expected.in) && - edgeMapsEqual(node.Out, expected.out) -} - -// graphsEqual checks if graph is equivalent to the graph templated by expected. -func graphsEqual(graph *Graph, expected []expectedNode) bool { - if len(graph.Nodes) != len(expected) { - return false - } - expectedSet := make(map[*Node]expectedNode) - for i := range expected { - expectedSet[expected[i].node] = expected[i] - } - - for _, node := range graph.Nodes { - expectedNode, found := expectedSet[node] - if !found || !nodesEqual(node, expectedNode) { - return false - } - } - return true -} - -type expectedNode struct { - node *Node - in, out EdgeMap -} - -type trimTreeTestcase struct { - initial *Graph - expected []expectedNode - keep NodePtrSet -} - -// makeExpectedEdgeResidual makes the edge from parent to child residual. -func makeExpectedEdgeResidual(parent, child expectedNode) { - parent.out[child.node].Residual = true - child.in[parent.node].Residual = true -} - -func makeEdgeInline(edgeMap EdgeMap, node *Node) { - edgeMap[node].Inline = true -} - -func setEdgeWeight(edgeMap EdgeMap, node *Node, weight int64) { - edgeMap[node].Weight = weight -} - -// createEdges creates directed edges from the parent to each of the children. -func createEdges(parent *Node, children ...*Node) { - for _, child := range children { - edge := &Edge{ - Src: parent, - Dest: child, - } - parent.Out[child] = edge - child.In[parent] = edge - } -} - -// createEmptyNode creates a node without any edges. -func createEmptyNode() *Node { - return &Node{ - In: make(EdgeMap), - Out: make(EdgeMap), - } -} - -// createExpectedNodes creates a slice of expectedNodes from nodes. -func createExpectedNodes(nodes ...*Node) ([]expectedNode, NodePtrSet) { - expected := make([]expectedNode, len(nodes)) - keep := make(NodePtrSet, len(nodes)) - - for i, node := range nodes { - expected[i] = expectedNode{ - node: node, - in: make(EdgeMap), - out: make(EdgeMap), - } - keep[node] = true - } - - return expected, keep -} - -// createExpectedEdges creates directed edges from the parent to each of the -// children. -func createExpectedEdges(parent expectedNode, children ...expectedNode) { - for _, child := range children { - edge := &Edge{ - Src: parent.node, - Dest: child.node, - } - parent.out[child.node] = edge - child.in[parent.node] = edge - } -} - -// createTestCase1 creates a test case that initially looks like: -// 0 -// |(5) -// 1 -// (3)/ \(4) -// 2 3. -// -// After keeping 0, 2, and 3, it expects the graph: -// 0 -// (3)/ \(4) -// 2 3. -func createTestCase1() trimTreeTestcase { - // Create initial graph - graph := &Graph{make(Nodes, 4)} - nodes := graph.Nodes - for i := range nodes { - nodes[i] = createEmptyNode() - } - createEdges(nodes[0], nodes[1]) - createEdges(nodes[1], nodes[2], nodes[3]) - makeEdgeInline(nodes[0].Out, nodes[1]) - makeEdgeInline(nodes[1].Out, nodes[2]) - setEdgeWeight(nodes[0].Out, nodes[1], 5) - setEdgeWeight(nodes[1].Out, nodes[2], 3) - setEdgeWeight(nodes[1].Out, nodes[3], 4) - - // Create expected graph - expected, keep := createExpectedNodes(nodes[0], nodes[2], nodes[3]) - createExpectedEdges(expected[0], expected[1], expected[2]) - makeEdgeInline(expected[0].out, expected[1].node) - makeExpectedEdgeResidual(expected[0], expected[1]) - makeExpectedEdgeResidual(expected[0], expected[2]) - setEdgeWeight(expected[0].out, expected[1].node, 3) - setEdgeWeight(expected[0].out, expected[2].node, 4) - return trimTreeTestcase{ - initial: graph, - expected: expected, - keep: keep, - } -} - -// createTestCase2 creates a test case that initially looks like: -// 3 -// | (12) -// 1 -// | (8) -// 2 -// | (15) -// 0 -// | (10) -// 4. -// -// After keeping 3 and 4, it expects the graph: -// 3 -// | (10) -// 4. -func createTestCase2() trimTreeTestcase { - // Create initial graph - graph := &Graph{make(Nodes, 5)} - nodes := graph.Nodes - for i := range nodes { - nodes[i] = createEmptyNode() - } - createEdges(nodes[3], nodes[1]) - createEdges(nodes[1], nodes[2]) - createEdges(nodes[2], nodes[0]) - createEdges(nodes[0], nodes[4]) - setEdgeWeight(nodes[3].Out, nodes[1], 12) - setEdgeWeight(nodes[1].Out, nodes[2], 8) - setEdgeWeight(nodes[2].Out, nodes[0], 15) - setEdgeWeight(nodes[0].Out, nodes[4], 10) - - // Create expected graph - expected, keep := createExpectedNodes(nodes[3], nodes[4]) - createExpectedEdges(expected[0], expected[1]) - makeExpectedEdgeResidual(expected[0], expected[1]) - setEdgeWeight(expected[0].out, expected[1].node, 10) - return trimTreeTestcase{ - initial: graph, - expected: expected, - keep: keep, - } -} - -// createTestCase3 creates an initially empty graph and expects an empty graph -// after trimming. -func createTestCase3() trimTreeTestcase { - graph := &Graph{make(Nodes, 0)} - expected, keep := createExpectedNodes() - return trimTreeTestcase{ - initial: graph, - expected: expected, - keep: keep, - } -} - -// createTestCase4 creates a test case that initially looks like: -// 0. -// -// After keeping 0, it expects the graph: -// 0. -func createTestCase4() trimTreeTestcase { - graph := &Graph{make(Nodes, 1)} - nodes := graph.Nodes - for i := range nodes { - nodes[i] = createEmptyNode() - } - expected, keep := createExpectedNodes(nodes[0]) - return trimTreeTestcase{ - initial: graph, - expected: expected, - keep: keep, - } -} - -func createTrimTreeTestCases() []trimTreeTestcase { - caseGenerators := []func() trimTreeTestcase{ - createTestCase1, - createTestCase2, - createTestCase3, - createTestCase4, - } - cases := make([]trimTreeTestcase, len(caseGenerators)) - for i, gen := range caseGenerators { - cases[i] = gen() - } - return cases -} - -func TestTrimTree(t *testing.T) { - tests := createTrimTreeTestCases() - for _, test := range tests { - graph := test.initial - graph.TrimTree(test.keep) - if !graphsEqual(graph, test.expected) { - t.Fatalf("Graphs do not match.\nExpected: %s\nFound: %s\n", - expectedNodesDebugString(test.expected), - graphDebugString(graph)) - } - } -} - -func nodeTestProfile() *profile.Profile { - mappings := []*profile.Mapping{ - { - ID: 1, - File: "symbolized_binary", - }, - { - ID: 2, - File: "unsymbolized_library_1", - }, - { - ID: 3, - File: "unsymbolized_library_2", - }, - } - functions := []*profile.Function{ - {ID: 1, Name: "symname"}, - {ID: 2}, - } - locations := []*profile.Location{ - { - ID: 1, - Mapping: mappings[0], - Line: []profile.Line{ - {Function: functions[0]}, - }, - }, - { - ID: 2, - Mapping: mappings[1], - Line: []profile.Line{ - {Function: functions[1]}, - }, - }, - { - ID: 3, - Mapping: mappings[2], - }, - } - return &profile.Profile{ - PeriodType: &profile.ValueType{Type: "cpu", Unit: "milliseconds"}, - SampleType: []*profile.ValueType{ - {Type: "type", Unit: "unit"}, - }, - Sample: []*profile.Sample{ - { - Location: []*profile.Location{locations[0]}, - Value: []int64{1}, - }, - { - Location: []*profile.Location{locations[1]}, - Value: []int64{1}, - }, - { - Location: []*profile.Location{locations[2]}, - Value: []int64{1}, - }, - }, - Location: locations, - Function: functions, - Mapping: mappings, - } -} - -// Check that nodes are properly created for a simple profile. -func TestCreateNodes(t *testing.T) { - testProfile := nodeTestProfile() - wantNodeSet := NodeSet{ - {Name: "symname"}: true, - {Objfile: "unsymbolized_library_1"}: true, - {Objfile: "unsymbolized_library_2"}: true, - } - - nodes, _ := CreateNodes(testProfile, &Options{}) - if len(nodes) != len(wantNodeSet) { - t.Errorf("got %d nodes, want %d", len(nodes), len(wantNodeSet)) - } - for _, node := range nodes { - if !wantNodeSet[node.Info] { - t.Errorf("unexpected node %v", node.Info) - } - } -} - -func TestShortenFunctionName(t *testing.T) { - type testCase struct { - name string - want string - } - testcases := []testCase{ - { - "root", - "root", - }, - { - "syscall.Syscall", - "syscall.Syscall", - }, - { - "net/http.(*conn).serve", - "http.(*conn).serve", - }, - { - "github.com/blahBlah/foo.Foo", - "foo.Foo", - }, - { - "github.com/BlahBlah/foo.Foo", - "foo.Foo", - }, - { - "github.com/blah-blah/foo_bar.(*FooBar).Foo", - "foo_bar.(*FooBar).Foo", - }, - { - "encoding/json.(*structEncoder).(encoding/json.encode)-fm", - "json.(*structEncoder).(encoding/json.encode)-fm", - }, - { - "github.com/blah/blah/vendor/gopkg.in/redis.v3.(*baseClient).(github.com/blah/blah/vendor/gopkg.in/redis.v3.process)-fm", - "redis.v3.(*baseClient).(github.com/blah/blah/vendor/gopkg.in/redis.v3.process)-fm", - }, - { - "java.util.concurrent.ThreadPoolExecutor$Worker.run", - "ThreadPoolExecutor$Worker.run", - }, - { - "java.bar.foo.FooBar.run(java.lang.Runnable)", - "FooBar.run", - }, - { - "(anonymous namespace)::Bar::Foo", - "Bar::Foo", - }, - { - "(anonymous namespace)::foo", - "foo", - }, - { - "foo_bar::Foo::bar", - "Foo::bar", - }, - { - "foo", - "foo", - }, - } - for _, tc := range testcases { - name := ShortenFunctionName(tc.name) - if got, want := name, tc.want; got != want { - t.Errorf("ShortenFunctionName(%q) = %q, want %q", tc.name, got, want) - } - } -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/graph/testdata/compose1.dot b/src/cmd/vendor/github.com/google/pprof/internal/graph/testdata/compose1.dot deleted file mode 100644 index da349a40a8b406..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/graph/testdata/compose1.dot +++ /dev/null @@ -1,7 +0,0 @@ -digraph "testtitle" { -node [style=filled fillcolor="#f8f8f8"] -subgraph cluster_L { "label1" [shape=box fontsize=16 label="label1\llabel2\l" tooltip="testtitle"] } -N1 [label="src\n10 (10.00%)\nof 25 (25.00%)" id="node1" fontsize=22 shape=box tooltip="src (25)" color="#b23c00" fillcolor="#edddd5"] -N2 [label="dest\n15 (15.00%)\nof 25 (25.00%)" id="node2" fontsize=24 shape=box tooltip="dest (25)" color="#b23c00" fillcolor="#edddd5"] -N1 -> N2 [label=" 10" weight=11 color="#b28559" tooltip="src -> dest (10)" labeltooltip="src -> dest (10)"] -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/graph/testdata/compose2.dot b/src/cmd/vendor/github.com/google/pprof/internal/graph/testdata/compose2.dot deleted file mode 100644 index 0c1a6ebaf12b1b..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/graph/testdata/compose2.dot +++ /dev/null @@ -1,7 +0,0 @@ -digraph "testtitle" { -node [style=filled fillcolor="#f8f8f8"] -subgraph cluster_L { "label1" [shape=box fontsize=16 label="label1\llabel2\l" tooltip="testtitle"] } -N1 [label="SRC10 (10.00%)\nof 25 (25.00%)" id="node1" fontsize=24 shape=folder tooltip="src (25)" color="#b23c00" fillcolor="#edddd5" style="bold,filled" peripheries=2 URL="www.google.com" target="_blank"] -N2 [label="dest\n0 of 25 (25.00%)" id="node2" fontsize=8 shape=box tooltip="dest (25)" color="#b23c00" fillcolor="#edddd5"] -N1 -> N2 [label=" 10" weight=11 color="#b28559" tooltip="src -> dest (10)" labeltooltip="src -> dest (10)"] -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/graph/testdata/compose3.dot b/src/cmd/vendor/github.com/google/pprof/internal/graph/testdata/compose3.dot deleted file mode 100644 index 1b878b79df940c..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/graph/testdata/compose3.dot +++ /dev/null @@ -1,11 +0,0 @@ -digraph "testtitle" { -node [style=filled fillcolor="#f8f8f8"] -subgraph cluster_L { "label1" [shape=box fontsize=16 label="label1\llabel2\l" tooltip="testtitle"] } -N1 [label="src\n10 (10.00%)\nof 25 (25.00%)" id="node1" fontsize=22 shape=box tooltip="src (25)" color="#b23c00" fillcolor="#edddd5"] -N1_0 [label = "tag1" id="N1_0" fontsize=8 shape=box3d tooltip="10"] -N1 -> N1_0 [label=" 10" weight=100 tooltip="10" labeltooltip="10"] -NN1_0 [label = "tag2" id="NN1_0" fontsize=8 shape=box3d tooltip="20"] -N1 -> NN1_0 [label=" 20" weight=100 tooltip="20" labeltooltip="20"] -N2 [label="dest\n15 (15.00%)\nof 25 (25.00%)" id="node2" fontsize=24 shape=box tooltip="dest (25)" color="#b23c00" fillcolor="#edddd5"] -N1 -> N2 [label=" 10" weight=11 color="#b28559" tooltip="src ... dest (10)" labeltooltip="src ... dest (10)" style="dotted" minlen=2] -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/graph/testdata/compose4.dot b/src/cmd/vendor/github.com/google/pprof/internal/graph/testdata/compose4.dot deleted file mode 100644 index 302da8ce948edb..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/graph/testdata/compose4.dot +++ /dev/null @@ -1,4 +0,0 @@ -digraph "testtitle" { -node [style=filled fillcolor="#f8f8f8"] -subgraph cluster_L { "label1" [shape=box fontsize=16 label="label1\llabel2\l" tooltip="testtitle"] } -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/graph/testdata/compose5.dot b/src/cmd/vendor/github.com/google/pprof/internal/graph/testdata/compose5.dot deleted file mode 100644 index 8876e337e669e8..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/graph/testdata/compose5.dot +++ /dev/null @@ -1,11 +0,0 @@ -digraph "testtitle" { -node [style=filled fillcolor="#f8f8f8"] -subgraph cluster_L { "label1" [shape=box fontsize=16 label="label1\llabel2\l" tooltip="testtitle"] } -N1 [label="src\n10 (10.00%)\nof 25 (25.00%)" id="node1" fontsize=22 shape=box tooltip="src (25)" color="#b23c00" fillcolor="#edddd5"] -N1_0 [label = "tag1" id="N1_0" fontsize=8 shape=box3d tooltip="10"] -N1 -> N1_0 [label=" 10" weight=100 tooltip="10" labeltooltip="10"] -NN1_0_0 [label = "tag2" id="NN1_0_0" fontsize=8 shape=box3d tooltip="20"] -N1_0 -> NN1_0_0 [label=" 20" weight=100 tooltip="20" labeltooltip="20"] -N2 [label="dest\n15 (15.00%)\nof 25 (25.00%)" id="node2" fontsize=24 shape=box tooltip="dest (25)" color="#b23c00" fillcolor="#edddd5"] -N1 -> N2 [label=" 10" weight=11 color="#b28559" tooltip="src -> dest (10)" labeltooltip="src -> dest (10)" minlen=2] -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/graph/testdata/compose6.dot b/src/cmd/vendor/github.com/google/pprof/internal/graph/testdata/compose6.dot deleted file mode 100644 index cf884394c7ee12..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/graph/testdata/compose6.dot +++ /dev/null @@ -1,7 +0,0 @@ -digraph "testtitle" { -node [style=filled fillcolor="#f8f8f8"] -subgraph cluster_L { "label1" [shape=box fontsize=16 label="label1\llabel2\l" URL="http://example.com" target="_blank" tooltip="testtitle"] } -N1 [label="src\n10 (10.00%)\nof 25 (25.00%)" id="node1" fontsize=22 shape=box tooltip="src (25)" color="#b23c00" fillcolor="#edddd5"] -N2 [label="dest\n15 (15.00%)\nof 25 (25.00%)" id="node2" fontsize=24 shape=box tooltip="dest (25)" color="#b23c00" fillcolor="#edddd5"] -N1 -> N2 [label=" 10" weight=11 color="#b28559" tooltip="src -> dest (10)" labeltooltip="src -> dest (10)"] -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/measurement/measurement_test.go b/src/cmd/vendor/github.com/google/pprof/internal/measurement/measurement_test.go deleted file mode 100644 index 155cafa19824ac..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/measurement/measurement_test.go +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2017 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package measurement - -import ( - "testing" -) - -func TestScale(t *testing.T) { - for _, tc := range []struct { - value int64 - fromUnit, toUnit string - wantValue float64 - wantUnit string - }{ - {1, "s", "ms", 1000, "ms"}, - {1, "kb", "b", 1024, "B"}, - {1, "kbyte", "b", 1024, "B"}, - {1, "kilobyte", "b", 1024, "B"}, - {1, "mb", "kb", 1024, "kB"}, - {1, "gb", "mb", 1024, "MB"}, - {1024, "gb", "tb", 1, "TB"}, - {1024, "tb", "pb", 1, "PB"}, - {2048, "mb", "auto", 2, "GB"}, - {3.1536e7, "s", "auto", 1, "yrs"}, - {-1, "s", "ms", -1000, "ms"}, - {1, "foo", "count", 1, ""}, - {1, "foo", "bar", 1, "bar"}, - } { - if gotValue, gotUnit := Scale(tc.value, tc.fromUnit, tc.toUnit); gotValue != tc.wantValue || gotUnit != tc.wantUnit { - t.Errorf("Scale(%d, %q, %q) = (%f, %q), want (%f, %q)", - tc.value, tc.fromUnit, tc.toUnit, gotValue, gotUnit, tc.wantValue, tc.wantUnit) - } - } -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/report/report_test.go b/src/cmd/vendor/github.com/google/pprof/internal/report/report_test.go deleted file mode 100644 index 7c4363fadd9639..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/report/report_test.go +++ /dev/null @@ -1,414 +0,0 @@ -// Copyright 2014 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package report - -import ( - "bytes" - "io/ioutil" - "regexp" - "runtime" - "testing" - - "github.com/google/pprof/internal/binutils" - "github.com/google/pprof/internal/graph" - "github.com/google/pprof/internal/proftest" - "github.com/google/pprof/profile" -) - -type testcase struct { - rpt *Report - want string -} - -func TestSource(t *testing.T) { - const path = "testdata/" - - sampleValue1 := func(v []int64) int64 { - return v[1] - } - - for _, tc := range []testcase{ - { - rpt: New( - testProfile.Copy(), - &Options{ - OutputFormat: List, - Symbol: regexp.MustCompile(`.`), - TrimPath: "/some/path", - - SampleValue: sampleValue1, - SampleUnit: testProfile.SampleType[1].Unit, - }, - ), - want: path + "source.rpt", - }, - { - rpt: New( - testProfile.Copy(), - &Options{ - OutputFormat: Dot, - CallTree: true, - Symbol: regexp.MustCompile(`.`), - TrimPath: "/some/path", - - SampleValue: sampleValue1, - SampleUnit: testProfile.SampleType[1].Unit, - }, - ), - want: path + "source.dot", - }, - } { - var b bytes.Buffer - if err := Generate(&b, tc.rpt, &binutils.Binutils{}); err != nil { - t.Fatalf("%s: %v", tc.want, err) - } - - gold, err := ioutil.ReadFile(tc.want) - if err != nil { - t.Fatalf("%s: %v", tc.want, err) - } - if runtime.GOOS == "windows" { - gold = bytes.Replace(gold, []byte("testdata/"), []byte("testdata\\"), -1) - } - if string(b.String()) != string(gold) { - d, err := proftest.Diff(gold, b.Bytes()) - if err != nil { - t.Fatalf("%s: %v", "source", err) - } - t.Error("source" + "\n" + string(d) + "\n" + "gold:\n" + tc.want) - } - } -} - -var testM = []*profile.Mapping{ - { - ID: 1, - HasFunctions: true, - HasFilenames: true, - HasLineNumbers: true, - HasInlineFrames: true, - }, -} - -var testF = []*profile.Function{ - { - ID: 1, - Name: "main", - Filename: "testdata/source1", - }, - { - ID: 2, - Name: "foo", - Filename: "testdata/source1", - }, - { - ID: 3, - Name: "bar", - Filename: "testdata/source1", - }, - { - ID: 4, - Name: "tee", - Filename: "/some/path/testdata/source2", - }, -} - -var testL = []*profile.Location{ - { - ID: 1, - Mapping: testM[0], - Line: []profile.Line{ - { - Function: testF[0], - Line: 2, - }, - }, - }, - { - ID: 2, - Mapping: testM[0], - Line: []profile.Line{ - { - Function: testF[1], - Line: 4, - }, - }, - }, - { - ID: 3, - Mapping: testM[0], - Line: []profile.Line{ - { - Function: testF[2], - Line: 10, - }, - }, - }, - { - ID: 4, - Mapping: testM[0], - Line: []profile.Line{ - { - Function: testF[3], - Line: 2, - }, - }, - }, - { - ID: 5, - Mapping: testM[0], - Line: []profile.Line{ - { - Function: testF[3], - Line: 8, - }, - }, - }, -} - -var testProfile = &profile.Profile{ - PeriodType: &profile.ValueType{Type: "cpu", Unit: "millisecond"}, - Period: 10, - DurationNanos: 10e9, - SampleType: []*profile.ValueType{ - {Type: "samples", Unit: "count"}, - {Type: "cpu", Unit: "cycles"}, - }, - Sample: []*profile.Sample{ - { - Location: []*profile.Location{testL[0]}, - Value: []int64{1, 1}, - }, - { - Location: []*profile.Location{testL[2], testL[1], testL[0]}, - Value: []int64{1, 10}, - }, - { - Location: []*profile.Location{testL[4], testL[2], testL[0]}, - Value: []int64{1, 100}, - }, - { - Location: []*profile.Location{testL[3], testL[0]}, - Value: []int64{1, 1000}, - }, - { - Location: []*profile.Location{testL[4], testL[3], testL[0]}, - Value: []int64{1, 10000}, - }, - }, - Location: testL, - Function: testF, - Mapping: testM, -} - -func TestDisambiguation(t *testing.T) { - parent1 := &graph.Node{Info: graph.NodeInfo{Name: "parent1"}} - parent2 := &graph.Node{Info: graph.NodeInfo{Name: "parent2"}} - child1 := &graph.Node{Info: graph.NodeInfo{Name: "child"}, Function: parent1} - child2 := &graph.Node{Info: graph.NodeInfo{Name: "child"}, Function: parent2} - child3 := &graph.Node{Info: graph.NodeInfo{Name: "child"}, Function: parent1} - sibling := &graph.Node{Info: graph.NodeInfo{Name: "sibling"}, Function: parent1} - - n := []*graph.Node{parent1, parent2, child1, child2, child3, sibling} - - wanted := map[*graph.Node]string{ - parent1: "parent1", - parent2: "parent2", - child1: "child [1/2]", - child2: "child [2/2]", - child3: "child [1/2]", - sibling: "sibling", - } - - g := &graph.Graph{Nodes: n} - - names := getDisambiguatedNames(g) - - for node, want := range wanted { - if got := names[node]; got != want { - t.Errorf("name %s, got %s, want %s", node.Info.Name, got, want) - } - } -} - -func TestFunctionMap(t *testing.T) { - - fm := make(functionMap) - nodes := []graph.NodeInfo{ - {Name: "fun1"}, - {Name: "fun2", File: "filename"}, - {Name: "fun1"}, - {Name: "fun2", File: "filename2"}, - } - - want := []struct { - wantFunction profile.Function - wantAdded bool - }{ - {profile.Function{ID: 1, Name: "fun1"}, true}, - {profile.Function{ID: 2, Name: "fun2", Filename: "filename"}, true}, - {profile.Function{ID: 1, Name: "fun1"}, false}, - {profile.Function{ID: 3, Name: "fun2", Filename: "filename2"}, true}, - } - - for i, tc := range nodes { - gotFunc, gotAdded := fm.findOrAdd(tc) - if got, want := gotFunc, want[i].wantFunction; *got != want { - t.Errorf("%d: got %v, want %v", i, got, want) - } - if got, want := gotAdded, want[i].wantAdded; got != want { - t.Errorf("%d: got %v, want %v", i, got, want) - } - } -} - -func TestLegendActiveFilters(t *testing.T) { - activeFilterInput := []string{ - "focus=123|456|789|101112|131415|161718|192021|222324|252627|282930|313233|343536|363738|acbdefghijklmnop", - "show=short filter", - } - expectedLegendActiveFilter := []string{ - "Active filters:", - " focus=123|456|789|101112|131415|161718|192021|222324|252627|282930|313233|343536…", - " show=short filter", - } - legendActiveFilter := legendActiveFilters(activeFilterInput) - if len(legendActiveFilter) != len(expectedLegendActiveFilter) { - t.Errorf("wanted length %v got length %v", len(expectedLegendActiveFilter), len(legendActiveFilter)) - } - for i := range legendActiveFilter { - if legendActiveFilter[i] != expectedLegendActiveFilter[i] { - t.Errorf("%d: want \"%v\", got \"%v\"", i, expectedLegendActiveFilter[i], legendActiveFilter[i]) - } - } -} - -func TestComputeTotal(t *testing.T) { - p1 := testProfile.Copy() - p1.Sample = []*profile.Sample{ - { - Location: []*profile.Location{testL[0]}, - Value: []int64{1, 1}, - }, - { - Location: []*profile.Location{testL[2], testL[1], testL[0]}, - Value: []int64{1, 10}, - }, - { - Location: []*profile.Location{testL[4], testL[2], testL[0]}, - Value: []int64{1, 100}, - }, - } - - p2 := testProfile.Copy() - p2.Sample = []*profile.Sample{ - { - Location: []*profile.Location{testL[0]}, - Value: []int64{1, 1}, - }, - { - Location: []*profile.Location{testL[2], testL[1], testL[0]}, - Value: []int64{1, -10}, - }, - { - Location: []*profile.Location{testL[4], testL[2], testL[0]}, - Value: []int64{1, 100}, - }, - } - - p3 := testProfile.Copy() - p3.Sample = []*profile.Sample{ - { - Location: []*profile.Location{testL[0]}, - Value: []int64{10000, 1}, - }, - { - Location: []*profile.Location{testL[2], testL[1], testL[0]}, - Value: []int64{-10, 3}, - Label: map[string][]string{"pprof::base": {"true"}}, - }, - { - Location: []*profile.Location{testL[2], testL[1], testL[0]}, - Value: []int64{1000, -10}, - }, - { - Location: []*profile.Location{testL[2], testL[1], testL[0]}, - Value: []int64{-9000, 3}, - Label: map[string][]string{"pprof::base": {"true"}}, - }, - { - Location: []*profile.Location{testL[2], testL[1], testL[0]}, - Value: []int64{-1, 3}, - Label: map[string][]string{"pprof::base": {"true"}}, - }, - { - Location: []*profile.Location{testL[4], testL[2], testL[0]}, - Value: []int64{100, 100}, - }, - { - Location: []*profile.Location{testL[2], testL[1], testL[0]}, - Value: []int64{100, 3}, - Label: map[string][]string{"pprof::base": {"true"}}, - }, - } - - testcases := []struct { - desc string - prof *profile.Profile - value, meanDiv func(v []int64) int64 - wantTotal int64 - }{ - { - desc: "no diff base, all positive values, index 1", - prof: p1, - value: func(v []int64) int64 { - return v[0] - }, - wantTotal: 3, - }, - { - desc: "no diff base, all positive values, index 2", - prof: p1, - value: func(v []int64) int64 { - return v[1] - }, - wantTotal: 111, - }, - { - desc: "no diff base, some negative values", - prof: p2, - value: func(v []int64) int64 { - return v[1] - }, - wantTotal: 111, - }, - { - desc: "diff base, some negative values", - prof: p3, - value: func(v []int64) int64 { - return v[0] - }, - wantTotal: 9111, - }, - } - - for _, tc := range testcases { - t.Run(tc.desc, func(t *testing.T) { - if gotTotal := computeTotal(tc.prof, tc.value, tc.meanDiv); gotTotal != tc.wantTotal { - t.Errorf("got total %d, want %v", gotTotal, tc.wantTotal) - } - }) - } -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/report/source_test.go b/src/cmd/vendor/github.com/google/pprof/internal/report/source_test.go deleted file mode 100644 index f1dd5c70dda085..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/report/source_test.go +++ /dev/null @@ -1,185 +0,0 @@ -package report - -import ( - "bytes" - "io/ioutil" - "os" - "path/filepath" - "regexp" - "runtime" - "strings" - "testing" - - "github.com/google/pprof/internal/binutils" - "github.com/google/pprof/profile" -) - -func TestWebList(t *testing.T) { - if runtime.GOOS != "linux" || runtime.GOARCH != "amd64" { - t.Skip("weblist only tested on x86-64 linux") - } - - cpu := readProfile(filepath.Join("testdata", "sample.cpu"), t) - rpt := New(cpu, &Options{ - OutputFormat: WebList, - Symbol: regexp.MustCompile("busyLoop"), - SampleValue: func(v []int64) int64 { return v[1] }, - SampleUnit: cpu.SampleType[1].Unit, - }) - var buf bytes.Buffer - if err := Generate(&buf, rpt, &binutils.Binutils{}); err != nil { - t.Fatalf("could not generate weblist: %v", err) - } - output := buf.String() - - for _, expect := range []string{"func busyLoop", "callq", "math.Abs"} { - if !strings.Contains(output, expect) { - t.Errorf("weblist output does not contain '%s':\n%s", expect, output) - } - } -} - -func TestOpenSourceFile(t *testing.T) { - tempdir, err := ioutil.TempDir("", "") - if err != nil { - t.Fatalf("failed to create temp dir: %v", err) - } - const lsep = string(filepath.ListSeparator) - for _, tc := range []struct { - desc string - searchPath string - trimPath string - fs []string - path string - wantPath string // If empty, error is wanted. - }{ - { - desc: "exact absolute path is found", - fs: []string{"foo/bar.cc"}, - path: "$dir/foo/bar.cc", - wantPath: "$dir/foo/bar.cc", - }, - { - desc: "exact relative path is found", - searchPath: "$dir", - fs: []string{"foo/bar.cc"}, - path: "foo/bar.cc", - wantPath: "$dir/foo/bar.cc", - }, - { - desc: "multiple search path", - searchPath: "some/path" + lsep + "$dir", - fs: []string{"foo/bar.cc"}, - path: "foo/bar.cc", - wantPath: "$dir/foo/bar.cc", - }, - { - desc: "relative path is found in parent dir", - searchPath: "$dir/foo/bar", - fs: []string{"bar.cc", "foo/bar/baz.cc"}, - path: "bar.cc", - wantPath: "$dir/bar.cc", - }, - { - desc: "trims configured prefix", - searchPath: "$dir", - trimPath: "some-path" + lsep + "/some/remote/path", - fs: []string{"my-project/foo/bar.cc"}, - path: "/some/remote/path/my-project/foo/bar.cc", - wantPath: "$dir/my-project/foo/bar.cc", - }, - { - desc: "trims heuristically", - searchPath: "$dir/my-project", - fs: []string{"my-project/foo/bar.cc"}, - path: "/some/remote/path/my-project/foo/bar.cc", - wantPath: "$dir/my-project/foo/bar.cc", - }, - { - desc: "error when not found", - path: "foo.cc", - }, - } { - t.Run(tc.desc, func(t *testing.T) { - defer func() { - if err := os.RemoveAll(tempdir); err != nil { - t.Fatalf("failed to remove dir %q: %v", tempdir, err) - } - }() - for _, f := range tc.fs { - path := filepath.Join(tempdir, filepath.FromSlash(f)) - dir := filepath.Dir(path) - if err := os.MkdirAll(dir, 0755); err != nil { - t.Fatalf("failed to create dir %q: %v", dir, err) - } - if err := ioutil.WriteFile(path, nil, 0644); err != nil { - t.Fatalf("failed to create file %q: %v", path, err) - } - } - tc.searchPath = filepath.FromSlash(strings.Replace(tc.searchPath, "$dir", tempdir, -1)) - tc.path = filepath.FromSlash(strings.Replace(tc.path, "$dir", tempdir, 1)) - tc.wantPath = filepath.FromSlash(strings.Replace(tc.wantPath, "$dir", tempdir, 1)) - if file, err := openSourceFile(tc.path, tc.searchPath, tc.trimPath); err != nil && tc.wantPath != "" { - t.Errorf("openSourceFile(%q, %q, %q) = err %v, want path %q", tc.path, tc.searchPath, tc.trimPath, err, tc.wantPath) - } else if err == nil { - defer file.Close() - gotPath := file.Name() - if tc.wantPath == "" { - t.Errorf("openSourceFile(%q, %q, %q) = %q, want error", tc.path, tc.searchPath, tc.trimPath, gotPath) - } else if gotPath != tc.wantPath { - t.Errorf("openSourceFile(%q, %q, %q) = %q, want path %q", tc.path, tc.searchPath, tc.trimPath, gotPath, tc.wantPath) - } - } - }) - } -} - -func TestIndentation(t *testing.T) { - for _, c := range []struct { - str string - wantIndent int - }{ - {"", 0}, - {"foobar", 0}, - {" foo", 2}, - {"\tfoo", 8}, - {"\t foo", 9}, - {" \tfoo", 8}, - {" \tfoo", 8}, - {" \tfoo", 16}, - } { - if n := indentation(c.str); n != c.wantIndent { - t.Errorf("indentation(%v): got %d, want %d", c.str, n, c.wantIndent) - } - } -} - -func readProfile(fname string, t *testing.T) *profile.Profile { - file, err := os.Open(fname) - if err != nil { - t.Fatalf("%s: could not open profile: %v", fname, err) - } - defer file.Close() - p, err := profile.Parse(file) - if err != nil { - t.Fatalf("%s: could not parse profile: %v", fname, err) - } - - // Fix file names so they do not include absolute path names. - fix := func(s string) string { - const testdir = "/internal/report/" - pos := strings.Index(s, testdir) - if pos == -1 { - return s - } - return s[pos+len(testdir):] - } - for _, m := range p.Mapping { - m.File = fix(m.File) - } - for _, f := range p.Function { - f.Filename = fix(f.Filename) - } - - return p -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/report/testdata/README.md b/src/cmd/vendor/github.com/google/pprof/internal/report/testdata/README.md deleted file mode 100644 index 2b60fcca6c7d7c..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/report/testdata/README.md +++ /dev/null @@ -1,10 +0,0 @@ -sample/ contains a sample program that can be profiled. -sample.bin is its x86-64 binary. -sample.cpu is a profile generated by sample.bin. - -To update the binary and profile: - -```shell -go build -o sample.bin ./sample -./sample.bin -cpuprofile sample.cpu -``` diff --git a/src/cmd/vendor/github.com/google/pprof/internal/report/testdata/sample.bin b/src/cmd/vendor/github.com/google/pprof/internal/report/testdata/sample.bin deleted file mode 100755 index 25929e64601bc73834a7e2244803cc9d595bb32b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2342380 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 _AlMq#unl40pfX208=LnXzU%Iw_Z-= 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

6s+g@>vf-gd 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%0AoykR%r6zY3?llv(>K-o|2B} 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⪚qp3Uq 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̵T$1_{Rv=xb+f}2&`HkGDKW&uxnB(XG=?=Nb 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 diff --git a/src/cmd/vendor/github.com/google/pprof/internal/report/testdata/sample.cpu b/src/cmd/vendor/github.com/google/pprof/internal/report/testdata/sample.cpu deleted file mode 100644 index 50eea72ea2dd48831c20043b35d53c23ba9eb51e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1836 zcmV+{2h;c;iwFP!00004|Fo8CkXvOL$2~bG$-5`Xo@cX{JWY4o^z_1ZOLO2*%Kg%E zE6~z%bw-APv)R*ZB+1F-BwP1eN-1mW0Hd}r%BZz7fCH@1QYr%5o8-DGU1U+9N6&G|k5=l}fQ=RLdGZl*!2)rw$i&vay1%l5GdwD$b{ z#81vF#MTM%?{FlWWjd!mIm7>G*xExMhxK(YoH_c^>0NJq+-DlhfT(G(7{oU{_0+L9 z;-3?rA8Jki-mrmb_{#Qe5j)B>*lU0`!k7jOS+2{rSOkAJH65`H7J(e_M-ed5%q47# z>G(#hj(&C0}g58nE@$G<+{@;h(PPt?{t}l7SRnm!=gB| zLo|=VpX0*AThc=mEVOcvPJss8sA)ub1+W-y{lz0(JO(pNh{vD@dvag{i{s-*#Irbj zNj{518q?w#!`F9;P8#esKucRB9E-)7lzaz?H@H7L>24>=~-WK1)VTy?&16l`m z^qR3QQxzrfn{omTe#~`e4JWv&#gh1gZM%6;3>FE$40^FQ*JlGu;hVc2<+F6bzcul! z3;MA?H(&$n#vP=4lWWowt1TAe{GO&Y!U{L2C{VS8LSHz9+W9M~4?!)L!JHX{N{ zK$|1q+ou~guzoynK-In;696qmzXS>XV(JDbS%c^?bK!3`ih@trwKSHmRVF#mGni z@%VlP{8j?g0wpjHPraxB<$+qvFK6{(J2WMtD826}Wd=HTb0j;?R2Yl|`np zf&)YBLOjfKG*}WWJIYe9PqU-Ugq`vxB_WI1-24&7QZR^vZ7;zKxdO12_yi59E&#=} zQUZDW8eM?*r3V7?5^(UD4uDc{BybV_i(0%Y6=KkO;-`bAaghWr#)Fi@K?$fUVq7c% z7pFT~kO!9o1MCv~Ay=RrOxg*;F5wukRXD>jo=`{Nt0ZtKexI!FkWOeXFO|S*{8@(r zoycklT!w$>04R;iIAF2M@jcp!rQ&s<_Ex`K?8FuL35}|5J2|+5*AK8O@d$5l)={tI z7_h7GZ#2o5+b6k70$1Y+t}`bKYIL;(uEFOBP&bUyyhZ}o;>qu-?c6HwC@EYkf$Q+O zj`dZu8rN|k!>-3ee0@6>cg|b-dd>k`gKv+p zZuo0l49#B(BaC&!5DtlpLFRAZ6~J!9A5nlEt8k+PZo}@gD+l`7ZTJtlZ3*b5SARN5lzy9T z*cQ7T4@#)>HFdjg*aK`mzRTyB-8eN3wOY?x0o#BdaP0pq)CLY%><&CmZRF-F0sRiK z`5W=uwD}z`nvJ|3*e0BzVbu=}C17llz@50C9CTQ`lLHpJ3y+Wk{`uzT>;vmDqx61W%tNeW+WKhb+7a3B7MfQ|#ZuTMAJ&$tgc&9Ls2gMwFf zia}5;`_6b!@tx4Ce%_mOih&c>3r?}r7;lc|3qggTTCE;zc1qQTU$1&)r|#E+dc$e> zVPni|cuwe5YGpq^TB^FS`zOZ2-~rdXeyf7>ks}FAW!p7=VuImWLrBP*NWicpw)uO|Fsv>9H3&$&7 zO_bz|ft#v$rD}e(8BVSbf||Se(;S*+F9vRxXv_a{lggU>--tAD&KYX;puj~IP-Ps*tLkM_?1d9 z;k)OPxndvmDr2ixiMde@s1f^XK8VGV0aqCBM$?_L54)tCje&`Cn+btl~As z^J_*!ciB1QIOKSvA(u&zj5jvst~f`L;+(M2l$HNm#Nm N3 [label=" 11000" weight=100 penwidth=5 color="#b20000" tooltip="main testdata/source1:2 -> tee testdata/source2:2 (11000)" labeltooltip="main testdata/source1:2 -> tee testdata/source2:2 (11000)"] -N3 -> N1 [label=" 10000" weight=91 penwidth=5 color="#b20500" tooltip="tee testdata/source2:2 -> tee testdata/source2:8 (10000)" labeltooltip="tee testdata/source2:2 -> tee testdata/source2:8 (10000)"] -N6 -> N4 [label=" 100" color="#b2b0aa" tooltip="bar testdata/source1:10 -> tee testdata/source2:8 (100)" labeltooltip="bar testdata/source1:10 -> tee testdata/source2:8 (100)"] -N2 -> N6 [label=" 100" color="#b2b0aa" tooltip="main testdata/source1:2 -> bar testdata/source1:10 (100)" labeltooltip="main testdata/source1:2 -> bar testdata/source1:10 (100)"] -N7 -> N5 [label=" 10" color="#b2b2b1" tooltip="foo testdata/source1:4 -> bar testdata/source1:10 (10)" labeltooltip="foo testdata/source1:4 -> bar testdata/source1:10 (10)"] -N2 -> N7 [label=" 10" color="#b2b2b1" tooltip="main testdata/source1:2 -> foo testdata/source1:4 (10)" labeltooltip="main testdata/source1:2 -> foo testdata/source1:4 (10)"] -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/report/testdata/source.rpt b/src/cmd/vendor/github.com/google/pprof/internal/report/testdata/source.rpt deleted file mode 100644 index 9ec7b3b0867a36..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/report/testdata/source.rpt +++ /dev/null @@ -1,49 +0,0 @@ -Total: 11111 -ROUTINE ======================== bar in testdata/source1 - 10 110 (flat, cum) 0.99% of Total - . . 5:source1 line 5; - . . 6:source1 line 6; - . . 7:source1 line 7; - . . 8:source1 line 8; - . . 9:source1 line 9; - 10 110 10:source1 line 10; - . . 11:source1 line 11; - . . 12:source1 line 12; - . . 13:source1 line 13; - . . 14:source1 line 14; - . . 15:source1 line 15; -ROUTINE ======================== foo in testdata/source1 - 0 10 (flat, cum) 0.09% of Total - . . 1:source1 line 1; - . . 2:source1 line 2; - . . 3:source1 line 3; - . 10 4:source1 line 4; - . . 5:source1 line 5; - . . 6:source1 line 6; - . . 7:source1 line 7; - . . 8:source1 line 8; - . . 9:source1 line 9; -ROUTINE ======================== main in testdata/source1 - 1 11111 (flat, cum) 100% of Total - . . 1:source1 line 1; - 1 11111 2:source1 line 2; - . . 3:source1 line 3; - . . 4:source1 line 4; - . . 5:source1 line 5; - . . 6:source1 line 6; - . . 7:source1 line 7; -ROUTINE ======================== tee in testdata/source2 - 11100 21100 (flat, cum) 189.90% of Total - . . 1:source2 line 1; - 1000 11000 2:source2 line 2; - . . 3:source2 line 3; - . . 4:source2 line 4; - . . 5:source2 line 5; - . . 6:source2 line 6; - . . 7:source2 line 7; - 10100 10100 8:source2 line 8; - . . 9:source2 line 9; - . . 10:source2 line 10; - . . 11:source2 line 11; - . . 12:source2 line 12; - . . 13:source2 line 13; diff --git a/src/cmd/vendor/github.com/google/pprof/internal/report/testdata/source1 b/src/cmd/vendor/github.com/google/pprof/internal/report/testdata/source1 deleted file mode 100644 index 70e3fc3397a349..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/report/testdata/source1 +++ /dev/null @@ -1,19 +0,0 @@ -source1 line 1; -source1 line 2; -source1 line 3; -source1 line 4; -source1 line 5; -source1 line 6; -source1 line 7; -source1 line 8; -source1 line 9; -source1 line 10; -source1 line 11; -source1 line 12; -source1 line 13; -source1 line 14; -source1 line 15; -source1 line 16; -source1 line 17; -source1 line 18; - diff --git a/src/cmd/vendor/github.com/google/pprof/internal/report/testdata/source2 b/src/cmd/vendor/github.com/google/pprof/internal/report/testdata/source2 deleted file mode 100644 index 54f99ccac6b296..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/report/testdata/source2 +++ /dev/null @@ -1,19 +0,0 @@ -source2 line 1; -source2 line 2; -source2 line 3; -source2 line 4; -source2 line 5; -source2 line 6; -source2 line 7; -source2 line 8; -source2 line 9; -source2 line 10; -source2 line 11; -source2 line 12; -source2 line 13; -source2 line 14; -source2 line 15; -source2 line 16; -source2 line 17; -source2 line 18; - diff --git a/src/cmd/vendor/github.com/google/pprof/internal/symbolizer/symbolizer_test.go b/src/cmd/vendor/github.com/google/pprof/internal/symbolizer/symbolizer_test.go deleted file mode 100644 index 2d26b51e871477..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/symbolizer/symbolizer_test.go +++ /dev/null @@ -1,300 +0,0 @@ -// Copyright 2014 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package symbolizer - -import ( - "fmt" - "regexp" - "sort" - "strings" - "testing" - - "github.com/google/pprof/internal/plugin" - "github.com/google/pprof/internal/proftest" - "github.com/google/pprof/profile" -) - -var testM = []*profile.Mapping{ - { - ID: 1, - Start: 0x1000, - Limit: 0x5000, - File: "mapping", - }, -} - -var testL = []*profile.Location{ - { - ID: 1, - Mapping: testM[0], - Address: 1000, - }, - { - ID: 2, - Mapping: testM[0], - Address: 2000, - }, - { - ID: 3, - Mapping: testM[0], - Address: 3000, - }, - { - ID: 4, - Mapping: testM[0], - Address: 4000, - }, - { - ID: 5, - Mapping: testM[0], - Address: 5000, - }, -} - -var testProfile = profile.Profile{ - DurationNanos: 10e9, - SampleType: []*profile.ValueType{ - {Type: "cpu", Unit: "cycles"}, - }, - Sample: []*profile.Sample{ - { - Location: []*profile.Location{testL[0]}, - Value: []int64{1}, - }, - { - Location: []*profile.Location{testL[1], testL[0]}, - Value: []int64{10}, - }, - { - Location: []*profile.Location{testL[2], testL[0]}, - Value: []int64{100}, - }, - { - Location: []*profile.Location{testL[3], testL[0]}, - Value: []int64{1}, - }, - { - Location: []*profile.Location{testL[4], testL[3], testL[0]}, - Value: []int64{10000}, - }, - }, - Location: testL, - Mapping: testM, - PeriodType: &profile.ValueType{Type: "cpu", Unit: "milliseconds"}, - Period: 10, -} - -func TestSymbolization(t *testing.T) { - sSym := symbolzSymbolize - lSym := localSymbolize - defer func() { - symbolzSymbolize = sSym - localSymbolize = lSym - demangleFunction = Demangle - }() - symbolzSymbolize = symbolzMock - localSymbolize = localMock - demangleFunction = demangleMock - - type testcase struct { - mode string - wantComment string - } - - s := Symbolizer{ - Obj: mockObjTool{}, - UI: &proftest.TestUI{T: t}, - } - for i, tc := range []testcase{ - { - "local", - "local=[]", - }, - { - "fastlocal", - "local=[fast]", - }, - { - "remote", - "symbolz=[]", - }, - { - "", - "local=[]:symbolz=[]", - }, - { - "demangle=none", - "demangle=[none]:force:local=[force]:symbolz=[force]", - }, - { - "remote:demangle=full", - "demangle=[full]:force:symbolz=[force]", - }, - { - "local:demangle=templates", - "demangle=[templates]:force:local=[force]", - }, - { - "force:remote", - "force:symbolz=[force]", - }, - } { - prof := testProfile.Copy() - if err := s.Symbolize(tc.mode, nil, prof); err != nil { - t.Errorf("symbolize #%d: %v", i, err) - continue - } - sort.Strings(prof.Comments) - if got, want := strings.Join(prof.Comments, ":"), tc.wantComment; got != want { - t.Errorf("%q: got %s, want %s", tc.mode, got, want) - continue - } - } -} - -func symbolzMock(p *profile.Profile, force bool, sources plugin.MappingSources, syms func(string, string) ([]byte, error), ui plugin.UI) error { - var args []string - if force { - args = append(args, "force") - } - p.Comments = append(p.Comments, "symbolz=["+strings.Join(args, ",")+"]") - return nil -} - -func localMock(p *profile.Profile, fast, force bool, obj plugin.ObjTool, ui plugin.UI) error { - var args []string - if fast { - args = append(args, "fast") - } - if force { - args = append(args, "force") - } - p.Comments = append(p.Comments, "local=["+strings.Join(args, ",")+"]") - return nil -} - -func demangleMock(p *profile.Profile, force bool, mode string) { - if force { - p.Comments = append(p.Comments, "force") - } - if mode != "" { - p.Comments = append(p.Comments, "demangle=["+mode+"]") - } -} - -func TestLocalSymbolization(t *testing.T) { - prof := testProfile.Copy() - - if prof.HasFunctions() { - t.Error("unexpected function names") - } - if prof.HasFileLines() { - t.Error("unexpected filenames or line numbers") - } - - b := mockObjTool{} - if err := localSymbolize(prof, false, false, b, &proftest.TestUI{T: t}); err != nil { - t.Fatalf("localSymbolize(): %v", err) - } - - for _, loc := range prof.Location { - if err := checkSymbolizedLocation(loc.Address, loc.Line); err != nil { - t.Errorf("location %d: %v", loc.Address, err) - } - } - if !prof.HasFunctions() { - t.Error("missing function names") - } - if !prof.HasFileLines() { - t.Error("missing filenames or line numbers") - } -} - -func checkSymbolizedLocation(a uint64, got []profile.Line) error { - want, ok := mockAddresses[a] - if !ok { - return fmt.Errorf("unexpected address") - } - if len(want) != len(got) { - return fmt.Errorf("want len %d, got %d", len(want), len(got)) - } - - for i, w := range want { - g := got[i] - if g.Function.Name != w.Func { - return fmt.Errorf("want function: %q, got %q", w.Func, g.Function.Name) - } - if g.Function.Filename != w.File { - return fmt.Errorf("want filename: %q, got %q", w.File, g.Function.Filename) - } - if g.Line != int64(w.Line) { - return fmt.Errorf("want lineno: %d, got %d", w.Line, g.Line) - } - } - return nil -} - -var mockAddresses = map[uint64][]plugin.Frame{ - 1000: {frame("fun11", "file11.src", 10)}, - 2000: {frame("fun21", "file21.src", 20), frame("fun22", "file22.src", 20)}, - 3000: {frame("fun31", "file31.src", 30), frame("fun32", "file32.src", 30), frame("fun33", "file33.src", 30)}, - 4000: {frame("fun41", "file41.src", 40), frame("fun42", "file42.src", 40), frame("fun43", "file43.src", 40), frame("fun44", "file44.src", 40)}, - 5000: {frame("fun51", "file51.src", 50), frame("fun52", "file52.src", 50), frame("fun53", "file53.src", 50), frame("fun54", "file54.src", 50), frame("fun55", "file55.src", 50)}, -} - -func frame(fname, file string, line int) plugin.Frame { - return plugin.Frame{ - Func: fname, - File: file, - Line: line} -} - -type mockObjTool struct{} - -func (mockObjTool) Open(file string, start, limit, offset uint64) (plugin.ObjFile, error) { - return mockObjFile{frames: mockAddresses}, nil -} - -func (mockObjTool) Disasm(file string, start, end uint64) ([]plugin.Inst, error) { - return nil, fmt.Errorf("disassembly not supported") -} - -type mockObjFile struct { - frames map[uint64][]plugin.Frame -} - -func (mockObjFile) Name() string { - return "" -} - -func (mockObjFile) Base() uint64 { - return 0 -} - -func (mockObjFile) BuildID() string { - return "" -} - -func (mf mockObjFile) SourceLine(addr uint64) ([]plugin.Frame, error) { - return mf.frames[addr], nil -} - -func (mockObjFile) Symbols(r *regexp.Regexp, addr uint64) ([]*plugin.Sym, error) { - return []*plugin.Sym{}, nil -} - -func (mockObjFile) Close() error { - return nil -} diff --git a/src/cmd/vendor/github.com/google/pprof/internal/symbolz/symbolz_test.go b/src/cmd/vendor/github.com/google/pprof/internal/symbolz/symbolz_test.go deleted file mode 100644 index e71811f3c432fb..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/symbolz/symbolz_test.go +++ /dev/null @@ -1,169 +0,0 @@ -// Copyright 2014 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package symbolz - -import ( - "fmt" - "math" - "strings" - "testing" - - "github.com/google/pprof/internal/plugin" - "github.com/google/pprof/internal/proftest" - "github.com/google/pprof/profile" -) - -func TestSymbolzURL(t *testing.T) { - for try, want := range map[string]string{ - "http://host:8000/profilez": "http://host:8000/symbolz", - "http://host:8000/profilez?seconds=5": "http://host:8000/symbolz", - "http://host:8000/profilez?seconds=5&format=proto": "http://host:8000/symbolz", - "http://host:8000/heapz?format=legacy": "http://host:8000/symbolz", - "http://host:8000/debug/pprof/profile": "http://host:8000/debug/pprof/symbol", - "http://host:8000/debug/pprof/profile?seconds=10": "http://host:8000/debug/pprof/symbol", - "http://host:8000/debug/pprof/heap": "http://host:8000/debug/pprof/symbol", - "http://some.host:8080/some/deeper/path/debug/pprof/endpoint?param=value": "http://some.host:8080/some/deeper/path/debug/pprof/symbol", - "http://host:8000/pprof/profile": "http://host:8000/pprof/symbol", - "http://host:8000/pprof/profile?seconds=15": "http://host:8000/pprof/symbol", - "http://host:8000/pprof/heap": "http://host:8000/pprof/symbol", - "http://host:8000/debug/pprof/block": "http://host:8000/debug/pprof/symbol", - "http://host:8000/debug/pprof/trace?seconds=5": "http://host:8000/debug/pprof/symbol", - "http://host:8000/debug/pprof/mutex": "http://host:8000/debug/pprof/symbol", - "http://host/whatever/pprof/heap": "http://host/whatever/pprof/symbol", - "http://host/whatever/pprof/growth": "http://host/whatever/pprof/symbol", - "http://host/whatever/pprof/profile": "http://host/whatever/pprof/symbol", - "http://host/whatever/pprof/pmuprofile": "http://host/whatever/pprof/symbol", - "http://host/whatever/pprof/contention": "http://host/whatever/pprof/symbol", - } { - if got := symbolz(try); got != want { - t.Errorf(`symbolz(%s)=%s, want "%s"`, try, got, want) - } - } -} - -func TestSymbolize(t *testing.T) { - s := plugin.MappingSources{ - "buildid": []struct { - Source string - Start uint64 - }{ - {Source: "http://localhost:80/profilez"}, - }, - } - - for _, hasFunctions := range []bool{false, true} { - for _, force := range []bool{false, true} { - p := testProfile(hasFunctions) - - if err := Symbolize(p, force, s, fetchSymbols, &proftest.TestUI{T: t}); err != nil { - t.Errorf("symbolz: %v", err) - continue - } - var wantSym, wantNoSym []*profile.Location - if force || !hasFunctions { - wantNoSym = p.Location[:1] - wantSym = p.Location[1:] - } else { - wantNoSym = p.Location - } - - if err := checkSymbolized(wantSym, true); err != nil { - t.Errorf("symbolz hasFns=%v force=%v: %v", hasFunctions, force, err) - } - if err := checkSymbolized(wantNoSym, false); err != nil { - t.Errorf("symbolz hasFns=%v force=%v: %v", hasFunctions, force, err) - } - } - } -} - -func testProfile(hasFunctions bool) *profile.Profile { - m := []*profile.Mapping{ - { - ID: 1, - Start: 0x1000, - Limit: 0x5000, - BuildID: "buildid", - HasFunctions: hasFunctions, - }, - } - p := &profile.Profile{ - Location: []*profile.Location{ - {ID: 1, Mapping: m[0], Address: 0x1000}, - {ID: 2, Mapping: m[0], Address: 0x2000}, - {ID: 3, Mapping: m[0], Address: 0x3000}, - {ID: 4, Mapping: m[0], Address: 0x4000}, - }, - Mapping: m, - } - - return p -} - -func checkSymbolized(locs []*profile.Location, wantSymbolized bool) error { - for _, loc := range locs { - if !wantSymbolized && len(loc.Line) != 0 { - return fmt.Errorf("unexpected symbolization for %#x: %v", loc.Address, loc.Line) - } - if wantSymbolized { - if len(loc.Line) != 1 { - return fmt.Errorf("expected symbolization for %#x: %v", loc.Address, loc.Line) - } - address := loc.Address - loc.Mapping.Start - if got, want := loc.Line[0].Function.Name, fmt.Sprintf("%#x", address); got != want { - return fmt.Errorf("symbolz %#x, got %s, want %s", address, got, want) - } - } - } - return nil -} - -func fetchSymbols(source, post string) ([]byte, error) { - var symbolz string - - addresses := strings.Split(post, "+") - // Do not symbolize the first symbol. - for _, address := range addresses[1:] { - symbolz += fmt.Sprintf("%s\t%s\n", address, address) - } - return []byte(symbolz), nil -} - -func TestAdjust(t *testing.T) { - for _, tc := range []struct { - addr uint64 - offset int64 - wantAdj uint64 - wantOverflow bool - }{{math.MaxUint64, 0, math.MaxUint64, false}, - {math.MaxUint64, 1, 0, true}, - {math.MaxUint64 - 1, 1, math.MaxUint64, false}, - {math.MaxUint64 - 1, 2, 0, true}, - {math.MaxInt64 + 1, math.MaxInt64, math.MaxUint64, false}, - {0, 0, 0, false}, - {0, -1, 0, true}, - {1, -1, 0, false}, - {2, -1, 1, false}, - {2, -2, 0, false}, - {2, -3, 0, true}, - {-math.MinInt64, math.MinInt64, 0, false}, - {-math.MinInt64 + 1, math.MinInt64, 1, false}, - {-math.MinInt64 - 1, math.MinInt64, 0, true}, - } { - if adj, overflow := adjust(tc.addr, tc.offset); adj != tc.wantAdj || overflow != tc.wantOverflow { - t.Errorf("adjust(%d, %d) = (%d, %t), want (%d, %t)", tc.addr, tc.offset, adj, overflow, tc.wantAdj, tc.wantOverflow) - } - } -} diff --git a/src/cmd/vendor/github.com/google/pprof/profile/filter_test.go b/src/cmd/vendor/github.com/google/pprof/profile/filter_test.go deleted file mode 100644 index 3fd1787e8b68cc..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/profile/filter_test.go +++ /dev/null @@ -1,599 +0,0 @@ -// Copyright 2018 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package profile - -import ( - "fmt" - "regexp" - "strings" - "testing" - - "github.com/google/pprof/internal/proftest" -) - -var mappings = []*Mapping{ - {ID: 1, Start: 0x10000, Limit: 0x40000, File: "map0", HasFunctions: true, HasFilenames: true, HasLineNumbers: true, HasInlineFrames: true}, - {ID: 2, Start: 0x50000, Limit: 0x70000, File: "map1", HasFunctions: true, HasFilenames: true, HasLineNumbers: true, HasInlineFrames: true}, -} - -var functions = []*Function{ - {ID: 1, Name: "fun0", SystemName: "fun0", Filename: "file0"}, - {ID: 2, Name: "fun1", SystemName: "fun1", Filename: "file1"}, - {ID: 3, Name: "fun2", SystemName: "fun2", Filename: "file2"}, - {ID: 4, Name: "fun3", SystemName: "fun3", Filename: "file3"}, - {ID: 5, Name: "fun4", SystemName: "fun4", Filename: "file4"}, - {ID: 6, Name: "fun5", SystemName: "fun5", Filename: "file5"}, - {ID: 7, Name: "fun6", SystemName: "fun6", Filename: "file6"}, - {ID: 8, Name: "fun7", SystemName: "fun7", Filename: "file7"}, - {ID: 9, Name: "fun8", SystemName: "fun8", Filename: "file8"}, - {ID: 10, Name: "fun9", SystemName: "fun9", Filename: "file9"}, - {ID: 11, Name: "fun10", SystemName: "fun10", Filename: "file10"}, -} - -var noInlinesLocs = []*Location{ - {ID: 1, Mapping: mappings[0], Address: 0x1000, Line: []Line{{Function: functions[0], Line: 1}}}, - {ID: 2, Mapping: mappings[0], Address: 0x2000, Line: []Line{{Function: functions[1], Line: 1}}}, - {ID: 3, Mapping: mappings[0], Address: 0x3000, Line: []Line{{Function: functions[2], Line: 1}}}, - {ID: 4, Mapping: mappings[0], Address: 0x4000, Line: []Line{{Function: functions[3], Line: 1}}}, - {ID: 5, Mapping: mappings[0], Address: 0x5000, Line: []Line{{Function: functions[4], Line: 1}}}, - {ID: 6, Mapping: mappings[0], Address: 0x6000, Line: []Line{{Function: functions[5], Line: 1}}}, - {ID: 7, Mapping: mappings[0], Address: 0x7000, Line: []Line{{Function: functions[6], Line: 1}}}, - {ID: 8, Mapping: mappings[0], Address: 0x8000, Line: []Line{{Function: functions[7], Line: 1}}}, - {ID: 9, Mapping: mappings[0], Address: 0x9000, Line: []Line{{Function: functions[8], Line: 1}}}, - {ID: 10, Mapping: mappings[0], Address: 0x10000, Line: []Line{{Function: functions[9], Line: 1}}}, - {ID: 11, Mapping: mappings[1], Address: 0x11000, Line: []Line{{Function: functions[10], Line: 1}}}, -} - -var noInlinesProfile = &Profile{ - TimeNanos: 10000, - PeriodType: &ValueType{Type: "cpu", Unit: "milliseconds"}, - Period: 1, - DurationNanos: 10e9, - SampleType: []*ValueType{{Type: "samples", Unit: "count"}}, - Mapping: mappings, - Function: functions, - Location: noInlinesLocs, - Sample: []*Sample{ - {Value: []int64{1}, Location: []*Location{noInlinesLocs[0], noInlinesLocs[1], noInlinesLocs[2], noInlinesLocs[3]}}, - {Value: []int64{2}, Location: []*Location{noInlinesLocs[4], noInlinesLocs[5], noInlinesLocs[1], noInlinesLocs[6]}}, - {Value: []int64{3}, Location: []*Location{noInlinesLocs[7], noInlinesLocs[8]}}, - {Value: []int64{4}, Location: []*Location{noInlinesLocs[9], noInlinesLocs[4], noInlinesLocs[10], noInlinesLocs[7]}}, - }, -} - -var allNoInlinesSampleFuncs = []string{ - "fun0 fun1 fun2 fun3: 1", - "fun4 fun5 fun1 fun6: 2", - "fun7 fun8: 3", - "fun9 fun4 fun10 fun7: 4", -} - -var inlinesLocs = []*Location{ - {ID: 1, Mapping: mappings[0], Address: 0x1000, Line: []Line{{Function: functions[0], Line: 1}, {Function: functions[1], Line: 1}}}, - {ID: 2, Mapping: mappings[0], Address: 0x2000, Line: []Line{{Function: functions[2], Line: 1}, {Function: functions[3], Line: 1}}}, - {ID: 3, Mapping: mappings[0], Address: 0x3000, Line: []Line{{Function: functions[4], Line: 1}, {Function: functions[5], Line: 1}, {Function: functions[6], Line: 1}}}, -} - -var inlinesProfile = &Profile{ - TimeNanos: 10000, - PeriodType: &ValueType{Type: "cpu", Unit: "milliseconds"}, - Period: 1, - DurationNanos: 10e9, - SampleType: []*ValueType{{Type: "samples", Unit: "count"}}, - Mapping: mappings, - Function: functions, - Location: inlinesLocs, - Sample: []*Sample{ - {Value: []int64{1}, Location: []*Location{inlinesLocs[0], inlinesLocs[1]}}, - {Value: []int64{2}, Location: []*Location{inlinesLocs[2]}}, - }, -} - -var emptyLinesLocs = []*Location{ - {ID: 1, Mapping: mappings[0], Address: 0x1000, Line: []Line{{Function: functions[0], Line: 1}, {Function: functions[1], Line: 1}}}, - {ID: 2, Mapping: mappings[0], Address: 0x2000, Line: []Line{}}, - {ID: 3, Mapping: mappings[1], Address: 0x2000, Line: []Line{}}, -} - -var emptyLinesProfile = &Profile{ - TimeNanos: 10000, - PeriodType: &ValueType{Type: "cpu", Unit: "milliseconds"}, - Period: 1, - DurationNanos: 10e9, - SampleType: []*ValueType{{Type: "samples", Unit: "count"}}, - Mapping: mappings, - Function: functions, - Location: emptyLinesLocs, - Sample: []*Sample{ - {Value: []int64{1}, Location: []*Location{emptyLinesLocs[0], emptyLinesLocs[1]}}, - {Value: []int64{2}, Location: []*Location{emptyLinesLocs[2]}}, - {Value: []int64{3}, Location: []*Location{}}, - }, -} - -func TestFilterSamplesByName(t *testing.T) { - for _, tc := range []struct { - // name is the name of the test case. - name string - // profile is the profile that gets filtered. - profile *Profile - // These are the inputs to FilterSamplesByName(). - focus, ignore, hide, show *regexp.Regexp - // want{F,I,S,H}m are expected return values from FilterSamplesByName. - wantFm, wantIm, wantSm, wantHm bool - // wantSampleFuncs contains expected stack functions and sample value after - // filtering, in the same order as in the profile. The format is as - // returned by sampleFuncs function below, which is "callee caller: ". - wantSampleFuncs []string - }{ - // No Filters - { - name: "empty filters keep all frames", - profile: noInlinesProfile, - wantFm: true, - wantSampleFuncs: allNoInlinesSampleFuncs, - }, - // Focus - { - name: "focus with no matches", - profile: noInlinesProfile, - focus: regexp.MustCompile("unknown"), - }, - { - name: "focus matches function names", - profile: noInlinesProfile, - focus: regexp.MustCompile("fun1"), - wantFm: true, - wantSampleFuncs: []string{ - "fun0 fun1 fun2 fun3: 1", - "fun4 fun5 fun1 fun6: 2", - "fun9 fun4 fun10 fun7: 4", - }, - }, - { - name: "focus matches file names", - profile: noInlinesProfile, - focus: regexp.MustCompile("file1"), - wantFm: true, - wantSampleFuncs: []string{ - "fun0 fun1 fun2 fun3: 1", - "fun4 fun5 fun1 fun6: 2", - "fun9 fun4 fun10 fun7: 4", - }, - }, - { - name: "focus matches mapping names", - profile: noInlinesProfile, - focus: regexp.MustCompile("map1"), - wantFm: true, - wantSampleFuncs: []string{ - "fun9 fun4 fun10 fun7: 4", - }, - }, - { - name: "focus matches inline functions", - profile: inlinesProfile, - focus: regexp.MustCompile("fun5"), - wantFm: true, - wantSampleFuncs: []string{ - "fun4 fun5 fun6: 2", - }, - }, - // Ignore - { - name: "ignore with no matches matches all samples", - profile: noInlinesProfile, - ignore: regexp.MustCompile("unknown"), - wantFm: true, - wantSampleFuncs: allNoInlinesSampleFuncs, - }, - { - name: "ignore matches function names", - profile: noInlinesProfile, - ignore: regexp.MustCompile("fun1"), - wantFm: true, - wantIm: true, - wantSampleFuncs: []string{ - "fun7 fun8: 3", - }, - }, - { - name: "ignore matches file names", - profile: noInlinesProfile, - ignore: regexp.MustCompile("file1"), - wantFm: true, - wantIm: true, - wantSampleFuncs: []string{ - "fun7 fun8: 3", - }, - }, - { - name: "ignore matches mapping names", - profile: noInlinesProfile, - ignore: regexp.MustCompile("map1"), - wantFm: true, - wantIm: true, - wantSampleFuncs: []string{ - "fun0 fun1 fun2 fun3: 1", - "fun4 fun5 fun1 fun6: 2", - "fun7 fun8: 3", - }, - }, - { - name: "ignore matches inline functions", - profile: inlinesProfile, - ignore: regexp.MustCompile("fun5"), - wantFm: true, - wantIm: true, - wantSampleFuncs: []string{ - "fun0 fun1 fun2 fun3: 1", - }, - }, - // Show - { - name: "show with no matches", - profile: noInlinesProfile, - show: regexp.MustCompile("unknown"), - wantFm: true, - }, - { - name: "show matches function names", - profile: noInlinesProfile, - show: regexp.MustCompile("fun1|fun2"), - wantFm: true, - wantSm: true, - wantSampleFuncs: []string{ - "fun1 fun2: 1", - "fun1: 2", - "fun10: 4", - }, - }, - { - name: "show matches file names", - profile: noInlinesProfile, - show: regexp.MustCompile("file1|file3"), - wantFm: true, - wantSm: true, - wantSampleFuncs: []string{ - "fun1 fun3: 1", - "fun1: 2", - "fun10: 4", - }, - }, - { - name: "show matches mapping names", - profile: noInlinesProfile, - show: regexp.MustCompile("map1"), - wantFm: true, - wantSm: true, - wantSampleFuncs: []string{ - "fun10: 4", - }, - }, - { - name: "show matches inline functions", - profile: inlinesProfile, - show: regexp.MustCompile("fun[03]"), - wantFm: true, - wantSm: true, - wantSampleFuncs: []string{ - "fun0 fun3: 1", - }, - }, - { - name: "show keeps all lines when matching both mapping and function", - profile: inlinesProfile, - show: regexp.MustCompile("map0|fun5"), - wantFm: true, - wantSm: true, - wantSampleFuncs: []string{ - "fun0 fun1 fun2 fun3: 1", - "fun4 fun5 fun6: 2", - }, - }, - // Hide - { - name: "hide with no matches", - profile: noInlinesProfile, - hide: regexp.MustCompile("unknown"), - wantFm: true, - wantSampleFuncs: allNoInlinesSampleFuncs, - }, - { - name: "hide matches function names", - profile: noInlinesProfile, - hide: regexp.MustCompile("fun1|fun2"), - wantFm: true, - wantHm: true, - wantSampleFuncs: []string{ - "fun0 fun3: 1", - "fun4 fun5 fun6: 2", - "fun7 fun8: 3", - "fun9 fun4 fun7: 4", - }, - }, - { - name: "hide matches file names", - profile: noInlinesProfile, - hide: regexp.MustCompile("file1|file3"), - wantFm: true, - wantHm: true, - wantSampleFuncs: []string{ - "fun0 fun2: 1", - "fun4 fun5 fun6: 2", - "fun7 fun8: 3", - "fun9 fun4 fun7: 4", - }, - }, - { - name: "hide matches mapping names", - profile: noInlinesProfile, - hide: regexp.MustCompile("map1"), - wantFm: true, - wantHm: true, - wantSampleFuncs: []string{ - "fun0 fun1 fun2 fun3: 1", - "fun4 fun5 fun1 fun6: 2", - "fun7 fun8: 3", - "fun9 fun4 fun7: 4", - }, - }, - { - name: "hide matches inline functions", - profile: inlinesProfile, - hide: regexp.MustCompile("fun[125]"), - wantFm: true, - wantHm: true, - wantSampleFuncs: []string{ - "fun0 fun3: 1", - "fun4 fun6: 2", - }, - }, - { - name: "hide drops all lines when matching both mapping and function", - profile: inlinesProfile, - hide: regexp.MustCompile("map0|fun5"), - wantFm: true, - wantHm: true, - }, - // Compound filters - { - name: "hides a stack matched by both focus and ignore", - profile: noInlinesProfile, - focus: regexp.MustCompile("fun1|fun7"), - ignore: regexp.MustCompile("fun1"), - wantFm: true, - wantIm: true, - wantSampleFuncs: []string{ - "fun7 fun8: 3", - }, - }, - { - name: "hides a function if both show and hide match it", - profile: noInlinesProfile, - show: regexp.MustCompile("fun1"), - hide: regexp.MustCompile("fun10"), - wantFm: true, - wantSm: true, - wantHm: true, - wantSampleFuncs: []string{ - "fun1: 1", - "fun1: 2", - }, - }, - } { - t.Run(tc.name, func(t *testing.T) { - p := tc.profile.Copy() - fm, im, hm, sm := p.FilterSamplesByName(tc.focus, tc.ignore, tc.hide, tc.show) - - type match struct{ fm, im, hm, sm bool } - if got, want := (match{fm: fm, im: im, hm: hm, sm: sm}), (match{fm: tc.wantFm, im: tc.wantIm, hm: tc.wantHm, sm: tc.wantSm}); got != want { - t.Errorf("match got %+v want %+v", got, want) - } - - if got, want := strings.Join(sampleFuncs(p), "\n")+"\n", strings.Join(tc.wantSampleFuncs, "\n")+"\n"; got != want { - diff, err := proftest.Diff([]byte(want), []byte(got)) - if err != nil { - t.Fatalf("failed to get diff: %v", err) - } - t.Errorf("FilterSamplesByName: got diff(want->got):\n%s", diff) - } - }) - } -} - -func TestShowFrom(t *testing.T) { - for _, tc := range []struct { - name string - profile *Profile - showFrom *regexp.Regexp - // wantMatch is the expected return value. - wantMatch bool - // wantSampleFuncs contains expected stack functions and sample value after - // filtering, in the same order as in the profile. The format is as - // returned by sampleFuncs function below, which is "callee caller: ". - wantSampleFuncs []string - }{ - { - name: "nil showFrom keeps all frames", - profile: noInlinesProfile, - wantMatch: false, - wantSampleFuncs: allNoInlinesSampleFuncs, - }, - { - name: "showFrom with no matches drops all samples", - profile: noInlinesProfile, - showFrom: regexp.MustCompile("unknown"), - wantMatch: false, - }, - { - name: "showFrom matches function names", - profile: noInlinesProfile, - showFrom: regexp.MustCompile("fun1"), - wantMatch: true, - wantSampleFuncs: []string{ - "fun0 fun1: 1", - "fun4 fun5 fun1: 2", - "fun9 fun4 fun10: 4", - }, - }, - { - name: "showFrom matches file names", - profile: noInlinesProfile, - showFrom: regexp.MustCompile("file1"), - wantMatch: true, - wantSampleFuncs: []string{ - "fun0 fun1: 1", - "fun4 fun5 fun1: 2", - "fun9 fun4 fun10: 4", - }, - }, - { - name: "showFrom matches mapping names", - profile: noInlinesProfile, - showFrom: regexp.MustCompile("map1"), - wantMatch: true, - wantSampleFuncs: []string{ - "fun9 fun4 fun10: 4", - }, - }, - { - name: "showFrom drops frames above highest of multiple matches", - profile: noInlinesProfile, - showFrom: regexp.MustCompile("fun[12]"), - wantMatch: true, - wantSampleFuncs: []string{ - "fun0 fun1 fun2: 1", - "fun4 fun5 fun1: 2", - "fun9 fun4 fun10: 4", - }, - }, - { - name: "showFrom matches inline functions", - profile: inlinesProfile, - showFrom: regexp.MustCompile("fun0|fun5"), - wantMatch: true, - wantSampleFuncs: []string{ - "fun0: 1", - "fun4 fun5: 2", - }, - }, - { - name: "showFrom drops frames above highest of multiple inline matches", - profile: inlinesProfile, - showFrom: regexp.MustCompile("fun[1245]"), - wantMatch: true, - wantSampleFuncs: []string{ - "fun0 fun1 fun2: 1", - "fun4 fun5: 2", - }, - }, - { - name: "showFrom keeps all lines when matching mapping and function", - profile: inlinesProfile, - showFrom: regexp.MustCompile("map0|fun5"), - wantMatch: true, - wantSampleFuncs: []string{ - "fun0 fun1 fun2 fun3: 1", - "fun4 fun5 fun6: 2", - }, - }, - { - name: "showFrom matches location with empty lines", - profile: emptyLinesProfile, - showFrom: regexp.MustCompile("map1"), - wantMatch: true, - wantSampleFuncs: []string{ - ": 2", - }, - }, - } { - t.Run(tc.name, func(t *testing.T) { - p := tc.profile.Copy() - - if gotMatch := p.ShowFrom(tc.showFrom); gotMatch != tc.wantMatch { - t.Errorf("match got %+v, want %+v", gotMatch, tc.wantMatch) - } - - if got, want := strings.Join(sampleFuncs(p), "\n")+"\n", strings.Join(tc.wantSampleFuncs, "\n")+"\n"; got != want { - diff, err := proftest.Diff([]byte(want), []byte(got)) - if err != nil { - t.Fatalf("failed to get diff: %v", err) - } - t.Errorf("profile samples got diff(want->got):\n%s", diff) - } - }) - } -} - -// sampleFuncs returns a slice of strings where each string represents one -// profile sample in the format " : ". This allows -// the expected values for test cases to be specifed in human-readable strings. -func sampleFuncs(p *Profile) []string { - var ret []string - for _, s := range p.Sample { - var funcs []string - for _, loc := range s.Location { - for _, line := range loc.Line { - funcs = append(funcs, line.Function.Name) - } - } - ret = append(ret, fmt.Sprintf("%s: %d", strings.Join(funcs, " "), s.Value[0])) - } - return ret -} - -func TestTagFilter(t *testing.T) { - // Perform several forms of tag filtering on the test profile. - - type filterTestcase struct { - include, exclude *regexp.Regexp - im, em bool - count int - } - - countTags := func(p *Profile) map[string]bool { - tags := make(map[string]bool) - - for _, s := range p.Sample { - for l := range s.Label { - tags[l] = true - } - for l := range s.NumLabel { - tags[l] = true - } - } - return tags - } - - for tx, tc := range []filterTestcase{ - {nil, nil, true, false, 3}, - {regexp.MustCompile("notfound"), nil, false, false, 0}, - {regexp.MustCompile("key1"), nil, true, false, 1}, - {nil, regexp.MustCompile("key[12]"), true, true, 1}, - } { - prof := testProfile1.Copy() - gim, gem := prof.FilterTagsByName(tc.include, tc.exclude) - if gim != tc.im { - t.Errorf("Filter #%d, got include match=%v, want %v", tx, gim, tc.im) - } - if gem != tc.em { - t.Errorf("Filter #%d, got exclude match=%v, want %v", tx, gem, tc.em) - } - if tags := countTags(prof); len(tags) != tc.count { - t.Errorf("Filter #%d, got %d tags[%v], want %d", tx, len(tags), tags, tc.count) - } - } -} diff --git a/src/cmd/vendor/github.com/google/pprof/profile/index_test.go b/src/cmd/vendor/github.com/google/pprof/profile/index_test.go deleted file mode 100644 index f846b5927371f0..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/profile/index_test.go +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright 2016 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package profile - -import ( - "testing" -) - -func TestSampleIndexByName(t *testing.T) { - for _, c := range []struct { - desc string - sampleTypes []string - defaultSampleType string - index string - want int - wantError bool - }{ - { - desc: "use last by default", - index: "", - want: 1, - sampleTypes: []string{"zero", "default"}, - }, - { - desc: "honour specified default", - index: "", - want: 1, - defaultSampleType: "default", - sampleTypes: []string{"zero", "default", "two"}, - }, - { - desc: "invalid default is ignored", - index: "", - want: 2, - defaultSampleType: "non-existent", - sampleTypes: []string{"zero", "one", "default"}, - }, - { - desc: "index by int", - index: "0", - want: 0, - sampleTypes: []string{"zero", "one", "two"}, - }, - { - desc: "index by int ignores default", - index: "0", - want: 0, - defaultSampleType: "default", - sampleTypes: []string{"zero", "default", "two"}, - }, - { - desc: "index by name", - index: "two", - want: 2, - sampleTypes: []string{"zero", "one", "two", "three"}, - }, - { - desc: "index by name ignores default", - index: "zero", - want: 0, - defaultSampleType: "default", - sampleTypes: []string{"zero", "default", "two"}, - }, - { - desc: "out of bound int causes error", - index: "100", - wantError: true, - sampleTypes: []string{"zero", "default"}, - }, - { - desc: "unknown name causes error", - index: "does not exist", - wantError: true, - sampleTypes: []string{"zero", "default"}, - }, - { - desc: "'inused_{x}' recognized for legacy '{x}'", - index: "inuse_zero", - want: 0, - sampleTypes: []string{"zero", "default"}, - }, - } { - p := &Profile{ - DefaultSampleType: c.defaultSampleType, - SampleType: []*ValueType{}, - } - for _, st := range c.sampleTypes { - p.SampleType = append(p.SampleType, &ValueType{Type: st, Unit: "milliseconds"}) - } - - got, err := p.SampleIndexByName(c.index) - - switch { - case c.wantError && err == nil: - t.Errorf("%s: error should have been returned not index=%d, err=%v", c.desc, got, err) - case !c.wantError && err != nil: - t.Errorf("%s: unexpected got index=%d, err=%v; wanted index=%d, err=nil", c.desc, got, err, c.want) - case !c.wantError && got != c.want: - t.Errorf("%s: got index=%d, want index=%d", c.desc, got, c.want) - } - } -} diff --git a/src/cmd/vendor/github.com/google/pprof/profile/legacy_profile_test.go b/src/cmd/vendor/github.com/google/pprof/profile/legacy_profile_test.go deleted file mode 100644 index 6ba0e338c9bd48..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/profile/legacy_profile_test.go +++ /dev/null @@ -1,321 +0,0 @@ -// Copyright 2014 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package profile - -import ( - "bytes" - "fmt" - "reflect" - "strconv" - "strings" - "testing" -) - -func TestLegacyProfileType(t *testing.T) { - type testcase struct { - sampleTypes []string - typeSet [][]string - want bool - setName string - } - - heap := heapzSampleTypes - cont := contentionzSampleTypes - testcases := []testcase{ - // True cases - {[]string{"allocations", "size"}, heap, true, "heapzSampleTypes"}, - {[]string{"objects", "space"}, heap, true, "heapzSampleTypes"}, - {[]string{"inuse_objects", "inuse_space"}, heap, true, "heapzSampleTypes"}, - {[]string{"alloc_objects", "alloc_space"}, heap, true, "heapzSampleTypes"}, - {[]string{"alloc_objects", "alloc_space", "inuse_objects", "inuse_space"}, heap, true, "heapzSampleTypes"}, - {[]string{"contentions", "delay"}, cont, true, "contentionzSampleTypes"}, - // False cases - {[]string{"objects"}, heap, false, "heapzSampleTypes"}, - {[]string{"objects", "unknown"}, heap, false, "heapzSampleTypes"}, - {[]string{"inuse_objects", "inuse_space", "alloc_objects", "alloc_space"}, heap, false, "heapzSampleTypes"}, - {[]string{"contentions", "delay"}, heap, false, "heapzSampleTypes"}, - {[]string{"samples", "cpu"}, heap, false, "heapzSampleTypes"}, - {[]string{"samples", "cpu"}, cont, false, "contentionzSampleTypes"}, - } - - for _, tc := range testcases { - p := profileOfType(tc.sampleTypes) - if got := isProfileType(p, tc.typeSet); got != tc.want { - t.Error("isProfileType({"+strings.Join(tc.sampleTypes, ",")+"},", tc.setName, "), got", got, "want", tc.want) - } - } -} - -func TestCpuParse(t *testing.T) { - // profileString is a legacy encoded profile, represnted by words separated by ":" - // Each sample has the form value : N : stack1..stackN - // EOF is represented as "0:1:0" - profileString := "1:3:100:999:100:" // sample with bogus 999 and duplicate leaf - profileString += "1:5:200:999:200:501:502:" // sample with bogus 999 and duplicate leaf - profileString += "1:12:300:999:300:601:602:603:604:605:606:607:608:609:" // sample with bogus 999 and duplicate leaf - profileString += "0:1:0000" // EOF -- must use 4 bytes for the final zero - - p, err := cpuProfile([]byte(profileString), 1, parseString) - if err != nil { - t.Fatal(err) - } - - if err := checkTestSample(p, []uint64{100}); err != nil { - t.Error(err) - } - if err := checkTestSample(p, []uint64{200, 500, 501}); err != nil { - t.Error(err) - } - if err := checkTestSample(p, []uint64{300, 600, 601, 602, 603, 604, 605, 606, 607, 608}); err != nil { - t.Error(err) - } -} - -func parseString(b []byte) (uint64, []byte) { - slices := bytes.SplitN(b, []byte(":"), 2) - var value, remainder []byte - if len(slices) > 0 { - value = slices[0] - } - if len(slices) > 1 { - remainder = slices[1] - } - v, _ := strconv.ParseUint(string(value), 10, 64) - return v, remainder -} - -func checkTestSample(p *Profile, want []uint64) error { - for _, s := range p.Sample { - got := []uint64{} - for _, l := range s.Location { - got = append(got, l.Address) - } - if reflect.DeepEqual(got, want) { - return nil - } - } - return fmt.Errorf("Could not find sample : %v", want) -} - -// profileOfType creates an empty profile with only sample types set, -// for testing purposes only. -func profileOfType(sampleTypes []string) *Profile { - p := new(Profile) - p.SampleType = make([]*ValueType, len(sampleTypes)) - for i, t := range sampleTypes { - p.SampleType[i] = new(ValueType) - p.SampleType[i].Type = t - } - return p -} - -func TestParseMappingEntry(t *testing.T) { - for _, test := range []*struct { - entry string - want *Mapping - }{ - { - entry: "00400000-02e00000 r-xp 00000000 00:00 0", - want: &Mapping{ - Start: 0x400000, - Limit: 0x2e00000, - }, - }, - { - entry: "02e00000-02e8a000 r-xp 02a00000 00:00 15953927 /foo/bin", - want: &Mapping{ - Start: 0x2e00000, - Limit: 0x2e8a000, - Offset: 0x2a00000, - File: "/foo/bin", - }, - }, - { - entry: "02e00000-02e8a000 r-xp 000000 00:00 15953927 [vdso]", - want: &Mapping{ - Start: 0x2e00000, - Limit: 0x2e8a000, - File: "[vdso]", - }, - }, - { - entry: " 02e00000-02e8a000: /foo/bin (@2a00000)", - want: &Mapping{ - Start: 0x2e00000, - Limit: 0x2e8a000, - Offset: 0x2a00000, - File: "/foo/bin", - }, - }, - { - entry: " 02e00000-02e8a000: /foo/bin (deleted)", - want: &Mapping{ - Start: 0x2e00000, - Limit: 0x2e8a000, - File: "/foo/bin", - }, - }, - { - entry: " 02e00000-02e8a000: /foo/bin", - want: &Mapping{ - Start: 0x2e00000, - Limit: 0x2e8a000, - File: "/foo/bin", - }, - }, - { - entry: " 02e00000-02e8a000: [vdso]", - want: &Mapping{ - Start: 0x2e00000, - Limit: 0x2e8a000, - File: "[vdso]", - }, - }, - {entry: "0xff6810563000 0xff6810565000 r-xp abc_exe 87c4d547f895cfd6a370e08dc5c5ee7bd4199d5b", - want: &Mapping{ - Start: 0xff6810563000, - Limit: 0xff6810565000, - File: "abc_exe", - BuildID: "87c4d547f895cfd6a370e08dc5c5ee7bd4199d5b", - }, - }, - {entry: "7f5e5435e000-7f5e5455e000 --xp 00002000 00:00 1531 myprogram", - want: &Mapping{ - Start: 0x7f5e5435e000, - Limit: 0x7f5e5455e000, - Offset: 0x2000, - File: "myprogram", - }, - }, - {entry: "7f7472710000-7f7472722000 r-xp 00000000 fc:00 790190 /usr/lib/libfantastic-1.2.so", - want: &Mapping{ - Start: 0x7f7472710000, - Limit: 0x7f7472722000, - File: "/usr/lib/libfantastic-1.2.so", - }, - }, - {entry: "7f47a542f000-7f47a5447000: /lib/libpthread-2.15.so", - want: &Mapping{ - Start: 0x7f47a542f000, - Limit: 0x7f47a5447000, - File: "/lib/libpthread-2.15.so", - }, - }, - {entry: "0x40000-0x80000 /path/to/binary (@FF00) abc123456", - want: &Mapping{ - Start: 0x40000, - Limit: 0x80000, - File: "/path/to/binary", - Offset: 0xFF00, - BuildID: "abc123456", - }, - }, - {entry: "W1220 15:07:15.201776 8272 logger.cc:12033] --- Memory map: ---\n" + - "0x40000-0x80000 /path/to/binary (@FF00) abc123456", - want: &Mapping{ - Start: 0x40000, - Limit: 0x80000, - File: "/path/to/binary", - Offset: 0xFF00, - BuildID: "abc123456", - }, - }, - {entry: "W1220 15:07:15.201776 8272 logger.cc:12033] --- Memory map: ---\n" + - "W1220 15:07:15.202776 8272 logger.cc:12036] 0x40000-0x80000 /path/to/binary (@FF00) abc123456", - want: &Mapping{ - Start: 0x40000, - Limit: 0x80000, - File: "/path/to/binary", - Offset: 0xFF00, - BuildID: "abc123456", - }, - }, - {entry: "7f5e5435e000-7f5e5455e000 ---p 00002000 00:00 1531 myprogram", - want: nil, - }, - } { - got, err := ParseProcMaps(strings.NewReader(test.entry)) - if err != nil { - t.Errorf("%s: %v", test.entry, err) - continue - } - if test.want == nil { - if got, want := len(got), 0; got != want { - t.Errorf("%s: got %d mappings, want %d", test.entry, got, want) - } - continue - } - if got, want := len(got), 1; got != want { - t.Errorf("%s: got %d mappings, want %d", test.entry, got, want) - continue - } - if !reflect.DeepEqual(test.want, got[0]) { - t.Errorf("%s want=%v got=%v", test.entry, test.want, got[0]) - } - } -} - -func TestParseThreadProfileWithInvalidAddress(t *testing.T) { - profile := ` ---- threadz 1 --- - ---- Thread 7eff063d9940 (name: main/25376) stack: --- - PC: 0x40b688 0x4d5f51 0x40be31 0x473add693e639c6f0 ---- Memory map: --- - 00400000-00fcb000: /home/rsilvera/cppbench/cppbench_server_main.unstripped - ` - wantErr := "failed to parse as hex 64-bit number: 0x473add693e639c6f0" - if _, gotErr := parseThread([]byte(profile)); !strings.Contains(gotErr.Error(), wantErr) { - t.Errorf("parseThread(): got error %q, want error containing %q", gotErr, wantErr) - } -} - -func TestParseGoCount(t *testing.T) { - for _, test := range []struct { - in string - typ string - }{ - { - in: `# ignored comment - -threadcreate profile: total 123 -`, - typ: "threadcreate", - }, - { - in: ` -# ignored comment -goroutine profile: total 123456 -`, - typ: "goroutine", - }, - { - in: ` -sub/dir-ect_o.ry profile: total 999 -`, - typ: "sub/dir-ect_o.ry", - }, - } { - t.Run(test.typ, func(t *testing.T) { - p, err := parseGoCount([]byte(test.in)) - if err != nil { - t.Fatalf("parseGoCount(%q) = %v", test.in, err) - } - if typ := p.PeriodType.Type; typ != test.typ { - t.Fatalf("parseGoCount(%q).PeriodType.Type = %q want %q", test.in, typ, test.typ) - } - }) - } -} diff --git a/src/cmd/vendor/github.com/google/pprof/profile/merge_test.go b/src/cmd/vendor/github.com/google/pprof/profile/merge_test.go deleted file mode 100644 index 6a04db2f34eef0..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/profile/merge_test.go +++ /dev/null @@ -1,167 +0,0 @@ -// Copyright 2018 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package profile - -import ( - "testing" -) - -func TestMapMapping(t *testing.T) { - pm := &profileMerger{ - p: &Profile{}, - mappings: make(map[mappingKey]*Mapping), - mappingsByID: make(map[uint64]mapInfo), - } - for _, tc := range []struct { - desc string - m1 Mapping - m2 Mapping - wantMerged bool - }{ - { - desc: "same file name", - m1: Mapping{ - ID: 1, - File: "test-file-1", - }, - m2: Mapping{ - ID: 2, - File: "test-file-1", - }, - wantMerged: true, - }, - { - desc: "same build ID", - m1: Mapping{ - ID: 3, - BuildID: "test-build-id-1", - }, - m2: Mapping{ - ID: 4, - BuildID: "test-build-id-1", - }, - wantMerged: true, - }, - { - desc: "same fake mapping", - m1: Mapping{ - ID: 5, - }, - m2: Mapping{ - ID: 6, - }, - wantMerged: true, - }, - { - desc: "different start", - m1: Mapping{ - ID: 7, - Start: 0x1000, - Limit: 0x2000, - BuildID: "test-build-id-2", - }, - m2: Mapping{ - ID: 8, - Start: 0x3000, - Limit: 0x4000, - BuildID: "test-build-id-2", - }, - wantMerged: true, - }, - { - desc: "different file name", - m1: Mapping{ - ID: 9, - File: "test-file-2", - }, - m2: Mapping{ - ID: 10, - File: "test-file-3", - }, - }, - { - desc: "different build id", - m1: Mapping{ - ID: 11, - BuildID: "test-build-id-3", - }, - m2: Mapping{ - ID: 12, - BuildID: "test-build-id-4", - }, - }, - { - desc: "different size", - m1: Mapping{ - ID: 13, - Start: 0x1000, - Limit: 0x3000, - BuildID: "test-build-id-5", - }, - m2: Mapping{ - ID: 14, - Start: 0x1000, - Limit: 0x5000, - BuildID: "test-build-id-5", - }, - }, - { - desc: "different offset", - m1: Mapping{ - ID: 15, - Offset: 1, - BuildID: "test-build-id-6", - }, - m2: Mapping{ - ID: 16, - Offset: 2, - BuildID: "test-build-id-6", - }, - }, - } { - t.Run(tc.desc, func(t *testing.T) { - info1 := pm.mapMapping(&tc.m1) - info2 := pm.mapMapping(&tc.m2) - gotM1, gotM2 := *info1.m, *info2.m - - wantM1 := tc.m1 - wantM1.ID = gotM1.ID - if gotM1 != wantM1 { - t.Errorf("first mapping got %v, want %v", gotM1, wantM1) - } - - if tc.wantMerged { - if gotM1 != gotM2 { - t.Errorf("first mapping got %v, second mapping got %v, want equal", gotM1, gotM2) - } - if info1.offset != 0 { - t.Errorf("first mapping info got offset %d, want 0", info1.offset) - } - if wantOffset := int64(tc.m1.Start) - int64(tc.m2.Start); wantOffset != info2.offset { - t.Errorf("second mapping info got offset %d, want %d", info2.offset, wantOffset) - } - } else { - if gotM1.ID == gotM2.ID { - t.Errorf("first mapping got %v, second mapping got %v, want different IDs", gotM1, gotM2) - } - wantM2 := tc.m2 - wantM2.ID = gotM2.ID - if gotM2 != wantM2 { - t.Errorf("second mapping got %v, want %v", gotM2, wantM2) - } - } - }) - } -} diff --git a/src/cmd/vendor/github.com/google/pprof/profile/profile_test.go b/src/cmd/vendor/github.com/google/pprof/profile/profile_test.go deleted file mode 100644 index 43db1806bf09a8..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/profile/profile_test.go +++ /dev/null @@ -1,1381 +0,0 @@ -// Copyright 2014 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package profile - -import ( - "bytes" - "fmt" - "io/ioutil" - "path/filepath" - "reflect" - "strings" - "sync" - "testing" - - "github.com/google/pprof/internal/proftest" -) - -func TestParse(t *testing.T) { - const path = "testdata/" - - for _, source := range []string{ - "go.crc32.cpu", - "go.godoc.thread", - "gobench.cpu", - "gobench.heap", - "cppbench.cpu", - "cppbench.heap", - "cppbench.contention", - "cppbench.growth", - "cppbench.thread", - "cppbench.thread.all", - "cppbench.thread.none", - "java.cpu", - "java.heap", - "java.contention", - } { - inbytes, err := ioutil.ReadFile(filepath.Join(path, source)) - if err != nil { - t.Fatal(err) - } - p, err := Parse(bytes.NewBuffer(inbytes)) - if err != nil { - t.Fatalf("%s: %s", source, err) - } - - js := p.String() - goldFilename := path + source + ".string" - gold, err := ioutil.ReadFile(goldFilename) - if err != nil { - t.Fatalf("%s: %v", source, err) - } - - if js != string(gold) { - t.Errorf("diff %s %s", source, goldFilename) - d, err := proftest.Diff(gold, []byte(js)) - if err != nil { - t.Fatalf("%s: %v", source, err) - } - t.Error(source + "\n" + string(d) + "\n" + "new profile at:\n" + leaveTempfile([]byte(js))) - } - - // Reencode and decode. - var bw bytes.Buffer - if err := p.Write(&bw); err != nil { - t.Fatalf("%s: %v", source, err) - } - if p, err = Parse(&bw); err != nil { - t.Fatalf("%s: %v", source, err) - } - js2 := p.String() - if js2 != string(gold) { - d, err := proftest.Diff(gold, []byte(js2)) - if err != nil { - t.Fatalf("%s: %v", source, err) - } - t.Error(source + "\n" + string(d) + "\n" + "gold:\n" + goldFilename + - "\nnew profile at:\n" + leaveTempfile([]byte(js))) - } - } -} - -func TestParseError(t *testing.T) { - testcases := []string{ - "", - "garbage text", - "\x1f\x8b", // truncated gzip header - "\x1f\x8b\x08\x08\xbe\xe9\x20\x58\x00\x03\x65\x6d\x70\x74\x79\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", // empty gzipped file - } - - for i, input := range testcases { - _, err := Parse(strings.NewReader(input)) - if err == nil { - t.Errorf("got nil, want error for input #%d", i) - } - } -} - -func TestParseConcatentated(t *testing.T) { - prof := testProfile1.Copy() - // Write the profile twice to buffer to create concatented profile. - var buf bytes.Buffer - prof.Write(&buf) - prof.Write(&buf) - _, err := Parse(&buf) - if err == nil { - t.Fatalf("got nil, want error") - } - if got, want := err.Error(), "parsing profile: concatenated profiles detected"; want != got { - t.Fatalf("got error %q, want error %q", got, want) - } -} - -func TestCheckValid(t *testing.T) { - const path = "testdata/java.cpu" - - inbytes, err := ioutil.ReadFile(path) - if err != nil { - t.Fatalf("failed to read profile file %q: %v", path, err) - } - p, err := Parse(bytes.NewBuffer(inbytes)) - if err != nil { - t.Fatalf("failed to parse profile %q: %s", path, err) - } - - for _, tc := range []struct { - mutateFn func(*Profile) - wantErr string - }{ - { - mutateFn: func(p *Profile) { p.SampleType = nil }, - wantErr: "missing sample type information", - }, - { - mutateFn: func(p *Profile) { p.Sample[0] = nil }, - wantErr: "profile has nil sample", - }, - { - mutateFn: func(p *Profile) { p.Sample[0].Value = append(p.Sample[0].Value, 0) }, - wantErr: "sample has 3 values vs. 2 types", - }, - { - mutateFn: func(p *Profile) { p.Sample[0].Location[0] = nil }, - wantErr: "sample has nil location", - }, - { - mutateFn: func(p *Profile) { p.Location[0] = nil }, - wantErr: "profile has nil location", - }, - { - mutateFn: func(p *Profile) { p.Mapping = append(p.Mapping, nil) }, - wantErr: "profile has nil mapping", - }, - { - mutateFn: func(p *Profile) { p.Function[0] = nil }, - wantErr: "profile has nil function", - }, - } { - t.Run(tc.wantErr, func(t *testing.T) { - p := p.Copy() - tc.mutateFn(p) - if err := p.CheckValid(); err == nil { - t.Errorf("CheckValid(): got no error, want error %q", tc.wantErr) - } else if !strings.Contains(err.Error(), tc.wantErr) { - t.Errorf("CheckValid(): got error %v, want error %q", err, tc.wantErr) - } - }) - } -} - -// leaveTempfile leaves |b| in a temporary file on disk and returns the -// temp filename. This is useful to recover a profile when the test -// fails. -func leaveTempfile(b []byte) string { - f1, err := ioutil.TempFile("", "profile_test") - if err != nil { - panic(err) - } - if _, err := f1.Write(b); err != nil { - panic(err) - } - return f1.Name() -} - -const mainBinary = "/bin/main" - -var cpuM = []*Mapping{ - { - ID: 1, - Start: 0x10000, - Limit: 0x40000, - File: mainBinary, - HasFunctions: true, - HasFilenames: true, - HasLineNumbers: true, - HasInlineFrames: true, - }, - { - ID: 2, - Start: 0x1000, - Limit: 0x4000, - File: "/lib/lib.so", - HasFunctions: true, - HasFilenames: true, - HasLineNumbers: true, - HasInlineFrames: true, - }, - { - ID: 3, - Start: 0x4000, - Limit: 0x5000, - File: "/lib/lib2_c.so.6", - HasFunctions: true, - HasFilenames: true, - HasLineNumbers: true, - HasInlineFrames: true, - }, - { - ID: 4, - Start: 0x5000, - Limit: 0x9000, - File: "/lib/lib.so_6 (deleted)", - HasFunctions: true, - HasFilenames: true, - HasLineNumbers: true, - HasInlineFrames: true, - }, -} - -var cpuF = []*Function{ - {ID: 1, Name: "main", SystemName: "main", Filename: "main.c"}, - {ID: 2, Name: "foo", SystemName: "foo", Filename: "foo.c"}, - {ID: 3, Name: "foo_caller", SystemName: "foo_caller", Filename: "foo.c"}, -} - -var cpuL = []*Location{ - { - ID: 1000, - Mapping: cpuM[1], - Address: 0x1000, - Line: []Line{ - {Function: cpuF[0], Line: 1}, - }, - }, - { - ID: 2000, - Mapping: cpuM[0], - Address: 0x2000, - Line: []Line{ - {Function: cpuF[1], Line: 2}, - {Function: cpuF[2], Line: 1}, - }, - }, - { - ID: 3000, - Mapping: cpuM[0], - Address: 0x3000, - Line: []Line{ - {Function: cpuF[1], Line: 2}, - {Function: cpuF[2], Line: 1}, - }, - }, - { - ID: 3001, - Mapping: cpuM[0], - Address: 0x3001, - Line: []Line{ - {Function: cpuF[2], Line: 2}, - }, - }, - { - ID: 3002, - Mapping: cpuM[0], - Address: 0x3002, - Line: []Line{ - {Function: cpuF[2], Line: 3}, - }, - }, -} - -var testProfile1 = &Profile{ - TimeNanos: 10000, - PeriodType: &ValueType{Type: "cpu", Unit: "milliseconds"}, - Period: 1, - DurationNanos: 10e9, - SampleType: []*ValueType{ - {Type: "samples", Unit: "count"}, - {Type: "cpu", Unit: "milliseconds"}, - }, - Sample: []*Sample{ - { - Location: []*Location{cpuL[0]}, - Value: []int64{1000, 1000}, - Label: map[string][]string{ - "key1": {"tag1"}, - "key2": {"tag1"}, - }, - }, - { - Location: []*Location{cpuL[1], cpuL[0]}, - Value: []int64{100, 100}, - Label: map[string][]string{ - "key1": {"tag2"}, - "key3": {"tag2"}, - }, - }, - { - Location: []*Location{cpuL[2], cpuL[0]}, - Value: []int64{10, 10}, - Label: map[string][]string{ - "key1": {"tag3"}, - "key2": {"tag2"}, - }, - }, - { - Location: []*Location{cpuL[3], cpuL[0]}, - Value: []int64{10000, 10000}, - Label: map[string][]string{ - "key1": {"tag4"}, - "key2": {"tag1"}, - }, - }, - { - Location: []*Location{cpuL[4], cpuL[0]}, - Value: []int64{1, 1}, - Label: map[string][]string{ - "key1": {"tag4"}, - "key2": {"tag1"}, - }, - }, - }, - Location: cpuL, - Function: cpuF, - Mapping: cpuM, -} - -var testProfile1NoMapping = &Profile{ - PeriodType: &ValueType{Type: "cpu", Unit: "milliseconds"}, - Period: 1, - DurationNanos: 10e9, - SampleType: []*ValueType{ - {Type: "samples", Unit: "count"}, - {Type: "cpu", Unit: "milliseconds"}, - }, - Sample: []*Sample{ - { - Location: []*Location{cpuL[0]}, - Value: []int64{1000, 1000}, - Label: map[string][]string{ - "key1": {"tag1"}, - "key2": {"tag1"}, - }, - }, - { - Location: []*Location{cpuL[1], cpuL[0]}, - Value: []int64{100, 100}, - Label: map[string][]string{ - "key1": {"tag2"}, - "key3": {"tag2"}, - }, - }, - { - Location: []*Location{cpuL[2], cpuL[0]}, - Value: []int64{10, 10}, - Label: map[string][]string{ - "key1": {"tag3"}, - "key2": {"tag2"}, - }, - }, - { - Location: []*Location{cpuL[3], cpuL[0]}, - Value: []int64{10000, 10000}, - Label: map[string][]string{ - "key1": {"tag4"}, - "key2": {"tag1"}, - }, - }, - { - Location: []*Location{cpuL[4], cpuL[0]}, - Value: []int64{1, 1}, - Label: map[string][]string{ - "key1": {"tag4"}, - "key2": {"tag1"}, - }, - }, - }, - Location: cpuL, - Function: cpuF, -} - -var testProfile2 = &Profile{ - PeriodType: &ValueType{Type: "cpu", Unit: "milliseconds"}, - Period: 1, - DurationNanos: 10e9, - SampleType: []*ValueType{ - {Type: "samples", Unit: "count"}, - {Type: "cpu", Unit: "milliseconds"}, - }, - Sample: []*Sample{ - { - Location: []*Location{cpuL[0]}, - Value: []int64{70, 1000}, - Label: map[string][]string{ - "key1": {"tag1"}, - "key2": {"tag1"}, - }, - }, - { - Location: []*Location{cpuL[1], cpuL[0]}, - Value: []int64{60, 100}, - Label: map[string][]string{ - "key1": {"tag2"}, - "key3": {"tag2"}, - }, - }, - { - Location: []*Location{cpuL[2], cpuL[0]}, - Value: []int64{50, 10}, - Label: map[string][]string{ - "key1": {"tag3"}, - "key2": {"tag2"}, - }, - }, - { - Location: []*Location{cpuL[3], cpuL[0]}, - Value: []int64{40, 10000}, - Label: map[string][]string{ - "key1": {"tag4"}, - "key2": {"tag1"}, - }, - }, - { - Location: []*Location{cpuL[4], cpuL[0]}, - Value: []int64{1, 1}, - Label: map[string][]string{ - "key1": {"tag4"}, - "key2": {"tag1"}, - }, - }, - }, - Location: cpuL, - Function: cpuF, - Mapping: cpuM, -} - -var testProfile3 = &Profile{ - PeriodType: &ValueType{Type: "cpu", Unit: "milliseconds"}, - Period: 1, - DurationNanos: 10e9, - SampleType: []*ValueType{ - {Type: "samples", Unit: "count"}, - }, - Sample: []*Sample{ - { - Location: []*Location{cpuL[0]}, - Value: []int64{1000}, - Label: map[string][]string{ - "key1": {"tag1"}, - "key2": {"tag1"}, - }, - }, - }, - Location: cpuL, - Function: cpuF, - Mapping: cpuM, -} - -var testProfile4 = &Profile{ - PeriodType: &ValueType{Type: "cpu", Unit: "milliseconds"}, - Period: 1, - DurationNanos: 10e9, - SampleType: []*ValueType{ - {Type: "samples", Unit: "count"}, - }, - Sample: []*Sample{ - { - Location: []*Location{cpuL[0]}, - Value: []int64{1000}, - NumLabel: map[string][]int64{ - "key1": {10}, - "key2": {30}, - }, - NumUnit: map[string][]string{ - "key1": {"bytes"}, - "key2": {"bytes"}, - }, - }, - }, - Location: cpuL, - Function: cpuF, - Mapping: cpuM, -} - -var testProfile5 = &Profile{ - PeriodType: &ValueType{Type: "cpu", Unit: "milliseconds"}, - Period: 1, - DurationNanos: 10e9, - SampleType: []*ValueType{ - {Type: "samples", Unit: "count"}, - }, - Sample: []*Sample{ - { - Location: []*Location{cpuL[0]}, - Value: []int64{1000}, - NumLabel: map[string][]int64{ - "key1": {10}, - "key2": {30}, - }, - NumUnit: map[string][]string{ - "key1": {"bytes"}, - "key2": {"bytes"}, - }, - }, - { - Location: []*Location{cpuL[0]}, - Value: []int64{1000}, - NumLabel: map[string][]int64{ - "key1": {10}, - "key2": {30}, - }, - NumUnit: map[string][]string{ - "key1": {"kilobytes"}, - "key2": {"kilobytes"}, - }, - }, - }, - Location: cpuL, - Function: cpuF, - Mapping: cpuM, -} - -var aggTests = map[string]aggTest{ - "precise": {true, true, true, true, 5}, - "fileline": {false, true, true, true, 4}, - "inline_function": {false, true, false, true, 3}, - "function": {false, true, false, false, 2}, -} - -type aggTest struct { - precise, function, fileline, inlineFrame bool - rows int -} - -const totalSamples = int64(11111) - -func TestAggregation(t *testing.T) { - prof := testProfile1.Copy() - for _, resolution := range []string{"precise", "fileline", "inline_function", "function"} { - a := aggTests[resolution] - if !a.precise { - if err := prof.Aggregate(a.inlineFrame, a.function, a.fileline, a.fileline, false); err != nil { - t.Error("aggregating to " + resolution + ":" + err.Error()) - } - } - if err := checkAggregation(prof, &a); err != nil { - t.Error("failed aggregation to " + resolution + ": " + err.Error()) - } - } -} - -// checkAggregation verifies that the profile remained consistent -// with its aggregation. -func checkAggregation(prof *Profile, a *aggTest) error { - // Check that the total number of samples for the rows was preserved. - total := int64(0) - - samples := make(map[string]bool) - for _, sample := range prof.Sample { - tb := locationHash(sample) - samples[tb] = true - total += sample.Value[0] - } - - if total != totalSamples { - return fmt.Errorf("sample total %d, want %d", total, totalSamples) - } - - // Check the number of unique sample locations - if a.rows != len(samples) { - return fmt.Errorf("number of samples %d, want %d", len(samples), a.rows) - } - - // Check that all mappings have the right detail flags. - for _, m := range prof.Mapping { - if m.HasFunctions != a.function { - return fmt.Errorf("unexpected mapping.HasFunctions %v, want %v", m.HasFunctions, a.function) - } - if m.HasFilenames != a.fileline { - return fmt.Errorf("unexpected mapping.HasFilenames %v, want %v", m.HasFilenames, a.fileline) - } - if m.HasLineNumbers != a.fileline { - return fmt.Errorf("unexpected mapping.HasLineNumbers %v, want %v", m.HasLineNumbers, a.fileline) - } - if m.HasInlineFrames != a.inlineFrame { - return fmt.Errorf("unexpected mapping.HasInlineFrames %v, want %v", m.HasInlineFrames, a.inlineFrame) - } - } - - // Check that aggregation has removed finer resolution data. - for _, l := range prof.Location { - if !a.inlineFrame && len(l.Line) > 1 { - return fmt.Errorf("found %d lines on location %d, want 1", len(l.Line), l.ID) - } - - for _, ln := range l.Line { - if !a.fileline && (ln.Function.Filename != "" || ln.Line != 0) { - return fmt.Errorf("found line %s:%d on location %d, want :0", - ln.Function.Filename, ln.Line, l.ID) - } - if !a.function && (ln.Function.Name != "") { - return fmt.Errorf(`found file %s location %d, want ""`, - ln.Function.Name, l.ID) - } - } - } - - return nil -} - -// Test merge leaves the main binary in place. -func TestMergeMain(t *testing.T) { - prof := testProfile1.Copy() - p1, err := Merge([]*Profile{prof}) - if err != nil { - t.Fatalf("merge error: %v", err) - } - if cpuM[0].File != p1.Mapping[0].File { - t.Errorf("want Mapping[0]=%s got %s", cpuM[0].File, p1.Mapping[0].File) - } -} - -func TestMerge(t *testing.T) { - // Aggregate a profile with itself and once again with a factor of - // -2. Should end up with an empty profile (all samples for a - // location should add up to 0). - - prof := testProfile1.Copy() - prof.Comments = []string{"comment1"} - p1, err := Merge([]*Profile{prof, prof}) - if err != nil { - t.Errorf("merge error: %v", err) - } - prof.Scale(-2) - prof, err = Merge([]*Profile{p1, prof}) - if err != nil { - t.Errorf("merge error: %v", err) - } - if got, want := len(prof.Comments), 1; got != want { - t.Errorf("len(prof.Comments) = %d, want %d", got, want) - } - - // Use aggregation to merge locations at function granularity. - if err := prof.Aggregate(false, true, false, false, false); err != nil { - t.Errorf("aggregating after merge: %v", err) - } - - samples := make(map[string]int64) - for _, s := range prof.Sample { - tb := locationHash(s) - samples[tb] = samples[tb] + s.Value[0] - } - for s, v := range samples { - if v != 0 { - t.Errorf("nonzero value for sample %s: %d", s, v) - } - } -} - -func TestMergeAll(t *testing.T) { - // Aggregate 10 copies of the profile. - profs := make([]*Profile, 10) - for i := 0; i < 10; i++ { - profs[i] = testProfile1.Copy() - } - prof, err := Merge(profs) - if err != nil { - t.Errorf("merge error: %v", err) - } - samples := make(map[string]int64) - for _, s := range prof.Sample { - tb := locationHash(s) - samples[tb] = samples[tb] + s.Value[0] - } - for _, s := range testProfile1.Sample { - tb := locationHash(s) - if samples[tb] != s.Value[0]*10 { - t.Errorf("merge got wrong value at %s : %d instead of %d", tb, samples[tb], s.Value[0]*10) - } - } -} - -func TestIsFoldedMerge(t *testing.T) { - testProfile1Folded := testProfile1.Copy() - testProfile1Folded.Location[0].IsFolded = true - testProfile1Folded.Location[1].IsFolded = true - - for _, tc := range []struct { - name string - profs []*Profile - wantLocationLen int - }{ - { - name: "folded and non-folded locations not merged", - profs: []*Profile{testProfile1.Copy(), testProfile1Folded.Copy()}, - wantLocationLen: 7, - }, - { - name: "identical folded locations are merged", - profs: []*Profile{testProfile1Folded.Copy(), testProfile1Folded.Copy()}, - wantLocationLen: 5, - }, - } { - t.Run(tc.name, func(t *testing.T) { - prof, err := Merge(tc.profs) - if err != nil { - t.Fatalf("merge error: %v", err) - } - if got, want := len(prof.Location), tc.wantLocationLen; got != want { - t.Fatalf("got %d locations, want %d locations", got, want) - } - }) - } -} - -func TestNumLabelMerge(t *testing.T) { - for _, tc := range []struct { - name string - profs []*Profile - wantNumLabels []map[string][]int64 - wantNumUnits []map[string][]string - }{ - { - name: "different label units not merged", - profs: []*Profile{testProfile4.Copy(), testProfile5.Copy()}, - wantNumLabels: []map[string][]int64{ - { - "key1": {10}, - "key2": {30}, - }, - { - "key1": {10}, - "key2": {30}, - }, - }, - wantNumUnits: []map[string][]string{ - { - "key1": {"bytes"}, - "key2": {"bytes"}, - }, - { - "key1": {"kilobytes"}, - "key2": {"kilobytes"}, - }, - }, - }, - } { - t.Run(tc.name, func(t *testing.T) { - prof, err := Merge(tc.profs) - if err != nil { - t.Errorf("merge error: %v", err) - } - - if want, got := len(tc.wantNumLabels), len(prof.Sample); want != got { - t.Fatalf("got %d samples, want %d samples", got, want) - } - for i, wantLabels := range tc.wantNumLabels { - numLabels := prof.Sample[i].NumLabel - if !reflect.DeepEqual(wantLabels, numLabels) { - t.Errorf("got numeric labels %v, want %v", numLabels, wantLabels) - } - - wantUnits := tc.wantNumUnits[i] - numUnits := prof.Sample[i].NumUnit - if !reflect.DeepEqual(wantUnits, numUnits) { - t.Errorf("got numeric labels %v, want %v", numUnits, wantUnits) - } - } - }) - } -} - -func TestEmptyMappingMerge(t *testing.T) { - // Aggregate a profile with itself and once again with a factor of - // -2. Should end up with an empty profile (all samples for a - // location should add up to 0). - - prof1 := testProfile1.Copy() - prof2 := testProfile1NoMapping.Copy() - p1, err := Merge([]*Profile{prof2, prof1}) - if err != nil { - t.Errorf("merge error: %v", err) - } - prof2.Scale(-2) - prof, err := Merge([]*Profile{p1, prof2}) - if err != nil { - t.Errorf("merge error: %v", err) - } - - // Use aggregation to merge locations at function granularity. - if err := prof.Aggregate(false, true, false, false, false); err != nil { - t.Errorf("aggregating after merge: %v", err) - } - - samples := make(map[string]int64) - for _, s := range prof.Sample { - tb := locationHash(s) - samples[tb] = samples[tb] + s.Value[0] - } - for s, v := range samples { - if v != 0 { - t.Errorf("nonzero value for sample %s: %d", s, v) - } - } -} - -func TestNormalizeBySameProfile(t *testing.T) { - pb := testProfile1.Copy() - p := testProfile1.Copy() - - if err := p.Normalize(pb); err != nil { - t.Fatal(err) - } - - for i, s := range p.Sample { - for j, v := range s.Value { - expectedSampleValue := testProfile1.Sample[i].Value[j] - if v != expectedSampleValue { - t.Errorf("For sample %d, value %d want %d got %d", i, j, expectedSampleValue, v) - } - } - } -} - -func TestNormalizeByDifferentProfile(t *testing.T) { - p := testProfile1.Copy() - pb := testProfile2.Copy() - - if err := p.Normalize(pb); err != nil { - t.Fatal(err) - } - - expectedSampleValues := [][]int64{ - {19, 1000}, - {1, 100}, - {0, 10}, - {198, 10000}, - {0, 1}, - } - - for i, s := range p.Sample { - for j, v := range s.Value { - if v != expectedSampleValues[i][j] { - t.Errorf("For sample %d, value %d want %d got %d", i, j, expectedSampleValues[i][j], v) - } - } - } -} - -func TestNormalizeByMultipleOfSameProfile(t *testing.T) { - pb := testProfile1.Copy() - for i, s := range pb.Sample { - for j, v := range s.Value { - pb.Sample[i].Value[j] = 10 * v - } - } - - p := testProfile1.Copy() - - err := p.Normalize(pb) - if err != nil { - t.Fatal(err) - } - - for i, s := range p.Sample { - for j, v := range s.Value { - expectedSampleValue := 10 * testProfile1.Sample[i].Value[j] - if v != expectedSampleValue { - t.Errorf("For sample %d, value %d, want %d got %d", i, j, expectedSampleValue, v) - } - } - } -} - -func TestNormalizeIncompatibleProfiles(t *testing.T) { - p := testProfile1.Copy() - pb := testProfile3.Copy() - - if err := p.Normalize(pb); err == nil { - t.Errorf("Expected an error") - } -} - -// locationHash constructs a string to use as a hashkey for a sample, based on its locations -func locationHash(s *Sample) string { - var tb string - for _, l := range s.Location { - for _, ln := range l.Line { - tb = tb + fmt.Sprintf("%s:%d@%d ", ln.Function.Name, ln.Line, l.Address) - } - } - return tb -} - -func TestHasLabel(t *testing.T) { - var testcases = []struct { - desc string - labels map[string][]string - key string - value string - wantHasLabel bool - }{ - { - desc: "empty label does not have label", - labels: map[string][]string{}, - key: "key", - value: "value", - wantHasLabel: false, - }, - { - desc: "label with one key and value has label", - labels: map[string][]string{"key": {"value"}}, - key: "key", - value: "value", - wantHasLabel: true, - }, - { - desc: "label with one key and value does not have label", - labels: map[string][]string{"key": {"value"}}, - key: "key1", - value: "value1", - wantHasLabel: false, - }, - { - desc: "label with many keys and values has label", - labels: map[string][]string{ - "key1": {"value2", "value1"}, - "key2": {"value1", "value2", "value2"}, - "key3": {"value1", "value2", "value2"}, - }, - key: "key1", - value: "value1", - wantHasLabel: true, - }, - { - desc: "label with many keys and values does not have label", - labels: map[string][]string{ - "key1": {"value2", "value1"}, - "key2": {"value1", "value2", "value2"}, - "key3": {"value1", "value2", "value2"}, - }, - key: "key5", - value: "value5", - wantHasLabel: false, - }, - } - - for _, tc := range testcases { - t.Run(tc.desc, func(t *testing.T) { - sample := &Sample{ - Label: tc.labels, - } - if gotHasLabel := sample.HasLabel(tc.key, tc.value); gotHasLabel != tc.wantHasLabel { - t.Errorf("sample.HasLabel(%q, %q) got %v, want %v", tc.key, tc.value, gotHasLabel, tc.wantHasLabel) - } - }) - } -} - -func TestDiffBaseSample(t *testing.T) { - var testcases = []struct { - desc string - labels map[string][]string - wantDiffBaseSample bool - }{ - { - desc: "empty label does not have label", - labels: map[string][]string{}, - wantDiffBaseSample: false, - }, - { - desc: "label with one key and value, including diff base label", - labels: map[string][]string{"pprof::base": {"true"}}, - wantDiffBaseSample: true, - }, - { - desc: "label with one key and value, not including diff base label", - labels: map[string][]string{"key": {"value"}}, - wantDiffBaseSample: false, - }, - { - desc: "label with many keys and values, including diff base label", - labels: map[string][]string{ - "pprof::base": {"value2", "true"}, - "key2": {"true", "value2", "value2"}, - "key3": {"true", "value2", "value2"}, - }, - wantDiffBaseSample: true, - }, - { - desc: "label with many keys and values, not including diff base label", - labels: map[string][]string{ - "key1": {"value2", "value1"}, - "key2": {"value1", "value2", "value2"}, - "key3": {"value1", "value2", "value2"}, - }, - wantDiffBaseSample: false, - }, - } - - for _, tc := range testcases { - t.Run(tc.desc, func(t *testing.T) { - sample := &Sample{ - Label: tc.labels, - } - if gotHasLabel := sample.DiffBaseSample(); gotHasLabel != tc.wantDiffBaseSample { - t.Errorf("sample.DiffBaseSample() got %v, want %v", gotHasLabel, tc.wantDiffBaseSample) - } - }) - } -} - -func TestRemove(t *testing.T) { - var testcases = []struct { - desc string - samples []*Sample - removeKey string - wantLabels []map[string][]string - }{ - { - desc: "some samples have label already", - samples: []*Sample{ - { - Location: []*Location{cpuL[0]}, - Value: []int64{1000}, - }, - { - Location: []*Location{cpuL[0]}, - Value: []int64{1000}, - Label: map[string][]string{ - "key1": {"value1", "value2", "value3"}, - "key2": {"value1"}, - }, - }, - { - Location: []*Location{cpuL[0]}, - Value: []int64{1000}, - Label: map[string][]string{ - "key1": {"value2"}, - }, - }, - }, - removeKey: "key1", - wantLabels: []map[string][]string{ - {}, - {"key2": {"value1"}}, - {}, - }, - }, - } - - for _, tc := range testcases { - t.Run(tc.desc, func(t *testing.T) { - profile := testProfile1.Copy() - profile.Sample = tc.samples - profile.RemoveLabel(tc.removeKey) - if got, want := len(profile.Sample), len(tc.wantLabels); got != want { - t.Fatalf("got %v samples, want %v samples", got, want) - } - for i, sample := range profile.Sample { - wantLabels := tc.wantLabels[i] - if got, want := len(sample.Label), len(wantLabels); got != want { - t.Errorf("got %v label keys for sample %v, want %v", got, i, want) - continue - } - for wantKey, wantValues := range wantLabels { - if gotValues, ok := sample.Label[wantKey]; ok { - if !reflect.DeepEqual(gotValues, wantValues) { - t.Errorf("for key %s, got values %v, want values %v", wantKey, gotValues, wantValues) - } - } else { - t.Errorf("for key %s got no values, want %v", wantKey, wantValues) - } - } - } - }) - } -} - -func TestSetLabel(t *testing.T) { - var testcases = []struct { - desc string - samples []*Sample - setKey string - setVal []string - wantLabels []map[string][]string - }{ - { - desc: "some samples have label already", - samples: []*Sample{ - { - Location: []*Location{cpuL[0]}, - Value: []int64{1000}, - }, - { - Location: []*Location{cpuL[0]}, - Value: []int64{1000}, - Label: map[string][]string{ - "key1": {"value1", "value2", "value3"}, - "key2": {"value1"}, - }, - }, - { - Location: []*Location{cpuL[0]}, - Value: []int64{1000}, - Label: map[string][]string{ - "key1": {"value2"}, - }, - }, - }, - setKey: "key1", - setVal: []string{"value1"}, - wantLabels: []map[string][]string{ - {"key1": {"value1"}}, - {"key1": {"value1"}, "key2": {"value1"}}, - {"key1": {"value1"}}, - }, - }, - { - desc: "no samples have labels", - samples: []*Sample{ - { - Location: []*Location{cpuL[0]}, - Value: []int64{1000}, - }, - }, - setKey: "key1", - setVal: []string{"value1"}, - wantLabels: []map[string][]string{ - {"key1": {"value1"}}, - }, - }, - { - desc: "all samples have some labels, but not key being added", - samples: []*Sample{ - { - Location: []*Location{cpuL[0]}, - Value: []int64{1000}, - Label: map[string][]string{ - "key2": {"value2"}, - }, - }, - { - Location: []*Location{cpuL[0]}, - Value: []int64{1000}, - Label: map[string][]string{ - "key3": {"value3"}, - }, - }, - }, - setKey: "key1", - setVal: []string{"value1"}, - wantLabels: []map[string][]string{ - {"key1": {"value1"}, "key2": {"value2"}}, - {"key1": {"value1"}, "key3": {"value3"}}, - }, - }, - { - desc: "all samples have key being added", - samples: []*Sample{ - { - Location: []*Location{cpuL[0]}, - Value: []int64{1000}, - Label: map[string][]string{ - "key1": {"value1"}, - }, - }, - { - Location: []*Location{cpuL[0]}, - Value: []int64{1000}, - Label: map[string][]string{ - "key1": {"value1"}, - }, - }, - }, - setKey: "key1", - setVal: []string{"value1"}, - wantLabels: []map[string][]string{ - {"key1": {"value1"}}, - {"key1": {"value1"}}, - }, - }, - } - - for _, tc := range testcases { - t.Run(tc.desc, func(t *testing.T) { - profile := testProfile1.Copy() - profile.Sample = tc.samples - profile.SetLabel(tc.setKey, tc.setVal) - if got, want := len(profile.Sample), len(tc.wantLabels); got != want { - t.Fatalf("got %v samples, want %v samples", got, want) - } - for i, sample := range profile.Sample { - wantLabels := tc.wantLabels[i] - if got, want := len(sample.Label), len(wantLabels); got != want { - t.Errorf("got %v label keys for sample %v, want %v", got, i, want) - continue - } - for wantKey, wantValues := range wantLabels { - if gotValues, ok := sample.Label[wantKey]; ok { - if !reflect.DeepEqual(gotValues, wantValues) { - t.Errorf("for key %s, got values %v, want values %v", wantKey, gotValues, wantValues) - } - } else { - t.Errorf("for key %s got no values, want %v", wantKey, wantValues) - } - } - } - }) - } -} - -func TestNumLabelUnits(t *testing.T) { - var tagFilterTests = []struct { - desc string - tagVals []map[string][]int64 - tagUnits []map[string][]string - wantUnits map[string]string - wantIgnoredUnits map[string][]string - }{ - { - "One sample, multiple keys, different specified units", - []map[string][]int64{{"key1": {131072}, "key2": {128}}}, - []map[string][]string{{"key1": {"bytes"}, "key2": {"kilobytes"}}}, - map[string]string{"key1": "bytes", "key2": "kilobytes"}, - map[string][]string{}, - }, - { - "One sample, one key with one value, unit specified", - []map[string][]int64{{"key1": {8}}}, - []map[string][]string{{"key1": {"bytes"}}}, - map[string]string{"key1": "bytes"}, - map[string][]string{}, - }, - { - "One sample, one key with one value, empty unit specified", - []map[string][]int64{{"key1": {8}}}, - []map[string][]string{{"key1": {""}}}, - map[string]string{"key1": "key1"}, - map[string][]string{}, - }, - { - "Key bytes, unit not specified", - []map[string][]int64{{"bytes": {8}}}, - []map[string][]string{nil}, - map[string]string{"bytes": "bytes"}, - map[string][]string{}, - }, - { - "One sample, one key with one value, unit not specified", - []map[string][]int64{{"kilobytes": {8}}}, - []map[string][]string{nil}, - map[string]string{"kilobytes": "kilobytes"}, - map[string][]string{}, - }, - { - "Key request, unit not specified", - []map[string][]int64{{"request": {8}}}, - []map[string][]string{nil}, - map[string]string{"request": "bytes"}, - map[string][]string{}, - }, - { - "Key alignment, unit not specified", - []map[string][]int64{{"alignment": {8}}}, - []map[string][]string{nil}, - map[string]string{"alignment": "bytes"}, - map[string][]string{}, - }, - { - "One sample, one key with multiple values and two different units", - []map[string][]int64{{"key1": {8, 8}}}, - []map[string][]string{{"key1": {"bytes", "kilobytes"}}}, - map[string]string{"key1": "bytes"}, - map[string][]string{"key1": {"kilobytes"}}, - }, - { - "One sample, one key with multiple values and three different units", - []map[string][]int64{{"key1": {8, 8}}}, - []map[string][]string{{"key1": {"bytes", "megabytes", "kilobytes"}}}, - map[string]string{"key1": "bytes"}, - map[string][]string{"key1": {"kilobytes", "megabytes"}}, - }, - { - "Two samples, one key, different units specified", - []map[string][]int64{{"key1": {8}}, {"key1": {8}}}, - []map[string][]string{{"key1": {"bytes"}}, {"key1": {"kilobytes"}}}, - map[string]string{"key1": "bytes"}, - map[string][]string{"key1": {"kilobytes"}}, - }, - { - "Keys alignment, request, and bytes have units specified", - []map[string][]int64{{ - "alignment": {8}, - "request": {8}, - "bytes": {8}, - }}, - []map[string][]string{{ - "alignment": {"seconds"}, - "request": {"minutes"}, - "bytes": {"hours"}, - }}, - map[string]string{ - "alignment": "seconds", - "request": "minutes", - "bytes": "hours", - }, - map[string][]string{}, - }, - } - for _, test := range tagFilterTests { - p := &Profile{Sample: make([]*Sample, len(test.tagVals))} - for i, numLabel := range test.tagVals { - s := Sample{ - NumLabel: numLabel, - NumUnit: test.tagUnits[i], - } - p.Sample[i] = &s - } - units, ignoredUnits := p.NumLabelUnits() - if !reflect.DeepEqual(test.wantUnits, units) { - t.Errorf("%s: got %v units, want %v", test.desc, units, test.wantUnits) - } - if !reflect.DeepEqual(test.wantIgnoredUnits, ignoredUnits) { - t.Errorf("%s: got %v ignored units, want %v", test.desc, ignoredUnits, test.wantIgnoredUnits) - } - } -} - -func TestSetMain(t *testing.T) { - testProfile1.massageMappings() - if testProfile1.Mapping[0].File != mainBinary { - t.Errorf("got %s for main", testProfile1.Mapping[0].File) - } -} - -// parallel runs n copies of fn in parallel. -func parallel(n int, fn func()) { - var wg sync.WaitGroup - wg.Add(n) - for i := 0; i < n; i++ { - go func() { - fn() - wg.Done() - }() - } - wg.Wait() -} - -func TestThreadSafety(t *testing.T) { - src := testProfile1.Copy() - parallel(4, func() { src.Copy() }) - parallel(4, func() { - var b bytes.Buffer - src.WriteUncompressed(&b) - }) - parallel(4, func() { - var b bytes.Buffer - src.Write(&b) - }) -} diff --git a/src/cmd/vendor/github.com/google/pprof/profile/proto_test.go b/src/cmd/vendor/github.com/google/pprof/profile/proto_test.go deleted file mode 100644 index 38b58c586da740..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/profile/proto_test.go +++ /dev/null @@ -1,171 +0,0 @@ -// Copyright 2014 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package profile - -import ( - "bytes" - "testing" - - "github.com/google/pprof/internal/proftest" -) - -var testM = []*Mapping{ - { - ID: 1, - Start: 1, - Limit: 10, - Offset: 0, - File: "file1", - BuildID: "buildid1", - HasFunctions: true, - HasFilenames: true, - HasLineNumbers: true, - HasInlineFrames: true, - }, - { - ID: 2, - Start: 10, - Limit: 30, - Offset: 9, - File: "file1", - BuildID: "buildid2", - HasFunctions: true, - HasFilenames: true, - HasLineNumbers: true, - HasInlineFrames: true, - }, -} - -var testF = []*Function{ - {ID: 1, Name: "func1", SystemName: "func1", Filename: "file1"}, - {ID: 2, Name: "func2", SystemName: "func2", Filename: "file1"}, - {ID: 3, Name: "func3", SystemName: "func3", Filename: "file2"}, - {ID: 4, Name: "func4", SystemName: "func4", Filename: "file3"}, - {ID: 5, Name: "func5", SystemName: "func5", Filename: "file4"}, -} - -var testL = []*Location{ - { - ID: 1, - Address: 1, - Mapping: testM[0], - Line: []Line{ - { - Function: testF[0], - Line: 2, - }, - { - Function: testF[1], - Line: 2222222, - }, - }, - }, - { - ID: 2, - Mapping: testM[1], - Address: 11, - Line: []Line{ - { - Function: testF[2], - Line: 2, - }, - }, - }, - { - ID: 3, - Mapping: testM[1], - Address: 12, - }, - { - ID: 4, - Mapping: testM[1], - Address: 12, - Line: []Line{ - { - Function: testF[4], - Line: 6, - }, - { - Function: testF[4], - Line: 6, - }, - }, - IsFolded: true, - }, -} - -var all = &Profile{ - PeriodType: &ValueType{Type: "cpu", Unit: "milliseconds"}, - Period: 10, - DurationNanos: 10e9, - SampleType: []*ValueType{ - {Type: "cpu", Unit: "cycles"}, - {Type: "object", Unit: "count"}, - }, - Sample: []*Sample{ - { - Location: []*Location{testL[0], testL[1], testL[2], testL[1], testL[1]}, - Label: map[string][]string{ - "key1": {"value1"}, - "key2": {"value2"}, - }, - Value: []int64{10, 20}, - }, - { - Location: []*Location{testL[1], testL[2], testL[0], testL[1]}, - Value: []int64{30, 40}, - Label: map[string][]string{ - "key1": {"value1"}, - "key2": {"value2"}, - }, - NumLabel: map[string][]int64{ - "key1": {1, 2}, - "key2": {3, 4}, - "bytes": {3, 4}, - "requests": {1, 1, 3, 4, 5}, - "alignment": {3, 4}, - }, - NumUnit: map[string][]string{ - "requests": {"", "", "seconds", "", "s"}, - "alignment": {"kilobytes", "kilobytes"}, - }, - }, - }, - Function: testF, - Mapping: testM, - Location: testL, - Comments: []string{"Comment 1", "Comment 2"}, -} - -func TestMarshalUnmarshal(t *testing.T) { - // Write the profile, parse it, and ensure they're equal. - var buf bytes.Buffer - all.Write(&buf) - all2, err := Parse(&buf) - if err != nil { - t.Fatal(err) - } - - js1 := proftest.EncodeJSON(&all) - js2 := proftest.EncodeJSON(&all2) - if string(js1) != string(js2) { - t.Errorf("profiles differ") - d, err := proftest.Diff(js1, js2) - if err != nil { - t.Fatal(err) - } - t.Error("\n" + string(d)) - } -} diff --git a/src/cmd/vendor/github.com/google/pprof/profile/prune_test.go b/src/cmd/vendor/github.com/google/pprof/profile/prune_test.go deleted file mode 100644 index 75d7c6d4f7fabb..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/profile/prune_test.go +++ /dev/null @@ -1,230 +0,0 @@ -// Copyright 2014 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package profile - -import ( - "strings" - "testing" -) - -func TestPrune(t *testing.T) { - for _, test := range []struct { - in *Profile - want string - }{ - {in1, out1}, - {in2, out2}, - } { - in := test.in.Copy() - in.RemoveUninteresting() - if err := in.CheckValid(); err != nil { - t.Error(err) - } - w := strings.Split(test.want, "\n") - for i, g := range strings.Split(in.String(), "\n") { - if i >= len(w) { - t.Fatalf("got trailing %s", g) - } - if strings.TrimSpace(g) != strings.TrimSpace(w[i]) { - t.Fatalf(`%d: got: "%s" want:"%s"`, i, g, w[i]) - } - } - } -} - -var funs = []*Function{ - {ID: 1, Name: "main", SystemName: "main", Filename: "main.c"}, - {ID: 2, Name: "fun1", SystemName: "fun1", Filename: "fun.c"}, - {ID: 3, Name: "fun2", SystemName: "fun2", Filename: "fun.c"}, - {ID: 4, Name: "fun3", SystemName: "fun3", Filename: "fun.c"}, - {ID: 5, Name: "fun4", SystemName: "fun4", Filename: "fun.c"}, - {ID: 6, Name: "fun5", SystemName: "fun5", Filename: "fun.c"}, - {ID: 7, Name: "unsimplified_fun(int)", SystemName: "unsimplified_fun(int)", Filename: "fun.c"}, - {ID: 8, Name: "Foo::(anonymous namespace)::Test::Bar", SystemName: "Foo::(anonymous namespace)::Test::Bar", Filename: "fun.c"}, - {ID: 9, Name: "Hello::(anonymous namespace)::World(const Foo::(anonymous namespace)::Test::Bar)", SystemName: "Hello::(anonymous namespace)::World(const Foo::(anonymous namespace)::Test::Bar)", Filename: "fun.c"}, - {ID: 10, Name: "Foo::operator()(::Bar)", SystemName: "Foo::operator()(::Bar)", Filename: "fun.c"}, -} - -var locs1 = []*Location{ - { - ID: 1, - Line: []Line{ - {Function: funs[0], Line: 1}, - }, - }, - { - ID: 2, - Line: []Line{ - {Function: funs[1], Line: 2}, - {Function: funs[2], Line: 1}, - }, - }, - { - ID: 3, - Line: []Line{ - {Function: funs[3], Line: 2}, - {Function: funs[1], Line: 1}, - }, - }, - { - ID: 4, - Line: []Line{ - {Function: funs[3], Line: 2}, - {Function: funs[1], Line: 2}, - {Function: funs[5], Line: 2}, - }, - }, -} - -var in1 = &Profile{ - PeriodType: &ValueType{Type: "cpu", Unit: "milliseconds"}, - Period: 1, - DurationNanos: 10e9, - SampleType: []*ValueType{ - {Type: "samples", Unit: "count"}, - {Type: "cpu", Unit: "milliseconds"}, - }, - Sample: []*Sample{ - { - Location: []*Location{locs1[0]}, - Value: []int64{1, 1}, - }, - { - Location: []*Location{locs1[1], locs1[0]}, - Value: []int64{1, 1}, - }, - { - Location: []*Location{locs1[2], locs1[0]}, - Value: []int64{1, 1}, - }, - { - Location: []*Location{locs1[3], locs1[0]}, - Value: []int64{1, 1}, - }, - { - Location: []*Location{locs1[3], locs1[2], locs1[1], locs1[0]}, - Value: []int64{1, 1}, - }, - }, - Location: locs1, - Function: funs, - DropFrames: "fu.*[12]|banana", - KeepFrames: ".*[n2][n2]", -} - -const out1 = `PeriodType: cpu milliseconds -Period: 1 -Duration: 10s -Samples: -samples/count cpu/milliseconds - 1 1: 1 - 1 1: 2 1 - 1 1: 1 - 1 1: 4 1 - 1 1: 2 1 -Locations - 1: 0x0 main main.c:1 s=0 - 2: 0x0 fun2 fun.c:1 s=0 - 3: 0x0 fun3 fun.c:2 s=0 - fun1 fun.c:1 s=0 - 4: 0x0 fun5 fun.c:2 s=0 -Mappings -` - -var locs2 = []*Location{ - { - ID: 1, - Line: []Line{ - {Function: funs[0], Line: 1}, - }, - }, - { - ID: 2, - Line: []Line{ - {Function: funs[6], Line: 1}, - }, - }, - { - ID: 3, - Line: []Line{ - {Function: funs[7], Line: 1}, - }, - }, - { - ID: 4, - Line: []Line{ - {Function: funs[8], Line: 1}, - }, - }, - { - ID: 5, - Line: []Line{ - {Function: funs[9], Line: 1}, - }, - }, -} - -var in2 = &Profile{ - PeriodType: &ValueType{Type: "cpu", Unit: "milliseconds"}, - Period: 1, - DurationNanos: 10e9, - SampleType: []*ValueType{ - {Type: "samples", Unit: "count"}, - {Type: "cpu", Unit: "milliseconds"}, - }, - Sample: []*Sample{ - // Unsimplified name with parameters shouldn't match. - { - Location: []*Location{locs2[1], locs2[0]}, - Value: []int64{1, 1}, - }, - // .*Foo::.*::Bar.* should (and will be dropped) regardless of the anonymous namespace. - { - Location: []*Location{locs2[2], locs2[0]}, - Value: []int64{1, 1}, - }, - // .*Foo::.*::Bar.* shouldn't match inside the parameter list. - { - Location: []*Location{locs2[3], locs2[0]}, - Value: []int64{1, 1}, - }, - // .*operator\(\) should match, regardless of parameters. - { - Location: []*Location{locs2[4], locs2[0]}, - Value: []int64{1, 1}, - }, - }, - Location: locs2, - Function: funs, - DropFrames: `unsimplified_fun\(int\)|.*Foo::.*::Bar.*|.*operator\(\)`, -} - -const out2 = `PeriodType: cpu milliseconds -Period: 1 -Duration: 10s -Samples: -samples/count cpu/milliseconds - 1 1: 2 1 - 1 1: 1 - 1 1: 4 1 - 1 1: 1 -Locations - 1: 0x0 main main.c:1 s=0 - 2: 0x0 unsimplified_fun(int) fun.c:1 s=0 - 3: 0x0 Foo::(anonymous namespace)::Test::Bar fun.c:1 s=0 - 4: 0x0 Hello::(anonymous namespace)::World(const Foo::(anonymous namespace)::Test::Bar) fun.c:1 s=0 - 5: 0x0 Foo::operator()(::Bar) fun.c:1 s=0 -Mappings -` diff --git a/src/cmd/vendor/github.com/google/pprof/profile/testdata/cppbench.contention b/src/cmd/vendor/github.com/google/pprof/profile/testdata/cppbench.contention deleted file mode 100644 index 66a64c950c50ee..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/profile/testdata/cppbench.contention +++ /dev/null @@ -1,24 +0,0 @@ ---- contentionz 1 --- -cycles/second = 3201000000 -sampling period = 100 -ms since reset = 16502830 -discarded samples = 0 - 19490304 27 @ 0xbccc97 0xc61202 0x42ed5f 0x42edc1 0x42e15a 0x5261af 0x526edf 0x5280ab 0x79e80a 0x7a251b 0x7a296d 0xa456e4 0x7fcdc2ff214e - 768 1 @ 0xbccc97 0xa42dc7 0xa456e4 0x7fcdc2ff214e - 5760 2 @ 0xbccc97 0xb82b73 0xb82bcb 0xb87eab 0xb8814c 0x4e969d 0x4faa17 0x4fc5f6 0x4fd028 0x4fd230 0x79e80a 0x7a251b 0x7a296d 0xa456e4 0x7fcdc2ff214e - 569088 1 @ 0xbccc97 0xb82b73 0xb82bcb 0xb87f08 0xb8814c 0x42ed5f 0x42edc1 0x42e15a 0x5261af 0x526edf 0x5280ab 0x79e80a 0x7a251b 0x7a296d 0xa456e4 0x7fcdc2ff214e - 2432 1 @ 0xbccc97 0xb82b73 0xb82bcb 0xb87eab 0xb8814c 0x7aa74c 0x7ab844 0x7ab914 0x79e9e9 0x79e326 0x4d299e 0x4d4b7b 0x4b7be8 0x4b7ff1 0x4d2dae 0x79e80a - 2034816 3 @ 0xbccc97 0xb82f0f 0xb83003 0xb87d50 0xc635f0 0x42ecc3 0x42e14c 0x5261af 0x526edf 0x5280ab 0x79e80a 0x7a251b 0x7a296d 0xa456e4 0x7fcdc2ff214e ---- Memory map: --- - 00400000-00fcb000: cppbench_server_main - 7fcdc231e000-7fcdc2321000: /libnss_cache-2.15.so - 7fcdc2522000-7fcdc252e000: /libnss_files-2.15.so - 7fcdc272f000-7fcdc28dd000: /libc-2.15.so - 7fcdc2ae7000-7fcdc2be2000: /libm-2.15.so - 7fcdc2de3000-7fcdc2dea000: /librt-2.15.so - 7fcdc2feb000-7fcdc3003000: /libpthread-2.15.so - 7fcdc3208000-7fcdc320a000: /libdl-2.15.so - 7fcdc340c000-7fcdc3415000: /libcrypt-2.15.so - 7fcdc3645000-7fcdc3669000: /ld-2.15.so - 7fff86bff000-7fff86c00000: [vdso] - ffffffffff600000-ffffffffff601000: [vsyscall] diff --git a/src/cmd/vendor/github.com/google/pprof/profile/testdata/cppbench.contention.string b/src/cmd/vendor/github.com/google/pprof/profile/testdata/cppbench.contention.string deleted file mode 100644 index 441f1cec7b5805..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/profile/testdata/cppbench.contention.string +++ /dev/null @@ -1,65 +0,0 @@ -PeriodType: contentions count -Period: 100 -Duration: 4h35 -Samples: -contentions/count delay/nanoseconds - 2700 608881724: 1 2 3 4 5 6 7 8 9 10 11 12 13 - 100 23992: 1 14 12 13 - 200 179943: 1 15 16 17 18 19 20 21 22 23 9 10 11 12 13 - 100 17778444: 1 15 16 24 18 3 4 5 6 7 8 9 10 11 12 13 - 100 75976: 1 15 16 17 18 25 26 27 28 29 30 31 32 33 34 9 - 300 63568134: 1 35 36 37 38 39 40 6 7 8 9 10 11 12 13 -Locations - 1: 0xbccc96 M=1 - 2: 0xc61201 M=1 - 3: 0x42ed5e M=1 - 4: 0x42edc0 M=1 - 5: 0x42e159 M=1 - 6: 0x5261ae M=1 - 7: 0x526ede M=1 - 8: 0x5280aa M=1 - 9: 0x79e809 M=1 - 10: 0x7a251a M=1 - 11: 0x7a296c M=1 - 12: 0xa456e3 M=1 - 13: 0x7fcdc2ff214d M=7 - 14: 0xa42dc6 M=1 - 15: 0xb82b72 M=1 - 16: 0xb82bca M=1 - 17: 0xb87eaa M=1 - 18: 0xb8814b M=1 - 19: 0x4e969c M=1 - 20: 0x4faa16 M=1 - 21: 0x4fc5f5 M=1 - 22: 0x4fd027 M=1 - 23: 0x4fd22f M=1 - 24: 0xb87f07 M=1 - 25: 0x7aa74b M=1 - 26: 0x7ab843 M=1 - 27: 0x7ab913 M=1 - 28: 0x79e9e8 M=1 - 29: 0x79e325 M=1 - 30: 0x4d299d M=1 - 31: 0x4d4b7a M=1 - 32: 0x4b7be7 M=1 - 33: 0x4b7ff0 M=1 - 34: 0x4d2dad M=1 - 35: 0xb82f0e M=1 - 36: 0xb83002 M=1 - 37: 0xb87d4f M=1 - 38: 0xc635ef M=1 - 39: 0x42ecc2 M=1 - 40: 0x42e14b M=1 -Mappings -1: 0x400000/0xfcb000/0x0 cppbench_server_main -2: 0x7fcdc231e000/0x7fcdc2321000/0x0 /libnss_cache-2.15.so -3: 0x7fcdc2522000/0x7fcdc252e000/0x0 /libnss_files-2.15.so -4: 0x7fcdc272f000/0x7fcdc28dd000/0x0 /libc-2.15.so -5: 0x7fcdc2ae7000/0x7fcdc2be2000/0x0 /libm-2.15.so -6: 0x7fcdc2de3000/0x7fcdc2dea000/0x0 /librt-2.15.so -7: 0x7fcdc2feb000/0x7fcdc3003000/0x0 /libpthread-2.15.so -8: 0x7fcdc3208000/0x7fcdc320a000/0x0 /libdl-2.15.so -9: 0x7fcdc340c000/0x7fcdc3415000/0x0 /libcrypt-2.15.so -10: 0x7fcdc3645000/0x7fcdc3669000/0x0 /ld-2.15.so -11: 0x7fff86bff000/0x7fff86c00000/0x0 [vdso] -12: 0xffffffffff600000/0xffffffffff601000/0x0 [vsyscall] diff --git a/src/cmd/vendor/github.com/google/pprof/profile/testdata/cppbench.cpu b/src/cmd/vendor/github.com/google/pprof/profile/testdata/cppbench.cpu deleted file mode 100644 index 607015ee93f1a7171f17e62cf98cfe4b62dccbc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23631 zcmd6vNsJyx7017j0M-~{6GsAMg9ah6SSIP}?&<|05fXd|vP9x6ES7D0jZM5vW-JpU zVTUD3*o3Sg)&m^i6bU%69ax2ggt)`9I5y~~9`~Bbhmd==YZ!+@@BgO3= z|9|gaRb5@Ls=7O)5q_@aqa1ecm%rh74WI7h<8}YOmHzg_zutKF(Tk(e!KZNkgW?eV z{>o__AAbnPg}xEHjXdl*=#?#p5phN>wh;>|IPMW z;ChMQEpx8l3%CAiOY0}?`D(7`nNQC4r)NFd_qYE<|JkhjQpN}I-L-4>I&M{e9oF~H zyXWJ}x5-HAyW=(U@g3IpG>->ze{OX<%YC!&%Ris#$M<|6=ggRznP7UXCH*mT3et5P&-F_73Prn_%G-^LFz01U*9Hw>6e$9 z+4^7M`{+uE-yh?AF|WKS?IY`&2Ojw9On6K7Mk4KQY(`{SU7*KQpKGrQ~P14<7sG7iQKk_r88(_kqOw+9t)5{JneE z1?p$g?~d-o`5iy{82$dx8_+K|t3OiE?holFavlV6(Elt2L0gsGUlv!E9$a3e-}Prf z@UHI9&_zL#$H8LvQ!Ou-&FSj+vDIefT(ffQRB__;g3x`KwxKW|U+Tk@RbdN5^itrm zoWK=?L3y||RE)kT-OoZ0#!1%w^HNZ;Xg%cc@upZlvXHjEiHoRlJ&co>P8OGzsOVSs zoK_3k_U*X1o;SP3q-N9uRk}jWXcD9bSEw0Hfht|07S!o34Voz>HKQ3&r7P5ehP9!t z8L1h~fht|07L;xe?RD*Lk?x1l0;tjzYC(NusB1xLMoXYdSEvO|5`$|=YDO!dN>``_ zO>={5MQTQCph{P$13J~ zU^>%w)$VJKgguiY;R-dQ9;nh4YC*$3V`^L2lbX>4sL~Z`K_f$cEfZ2RngUh2LM>=) z$ggEeYDP1lN>``_^@jXfW~62`2dZ?1TF}IhU(1}-j21wZu22iw->&N3RFIm{5~$J@ zYC&^Del1H=%$ggEhYDOENN>``_tql3KY)H*$ z3smU}wV<^jzm_ejfmQ)fohz#aZ4LRg3P{bU1FCd|n$a*YIs2NQ|Lw>EGW;6q;bcI^b*pOeVjMR+gK$Wgg3+fH| zwaQ7&XaQ8|3bmk#A-{G5Vy|Yj1gdm}TF}&xU#pVTj8;IEu22h_8S-mYk($vOsL~Z` zLHnv|^J`U;n$ZTR(iLh!OGAFG8d5Xb0#&*~Eof!PuT@KGpmhLL=gMk9Ys2VY2c%}y z0ady}&1lpZ?$;V>Mq{8#SEvPT4fksulbTTvROt#eqe)=6Uu&otO@S(1p=LCv4MpWT zr-qu*0;tjzYC%K845ltf&1eZ!=?XQYb!5mnHPnnYK$Wgg3mRMca6@WFTcAo;s0HLpq4b+TAK$Wgg3z`__O-)2``_rPZu*Y-&Oh6r^Uf1gdm}n$e1$#%ZrB)Qr|Zm99_= z>I@@dQf)=%$giy@HKPeor7P5eTGlyjGPTZWQ_DJs)$E!!hWy$>&1eQxSy!k9 zZ4J9zZANNFbD&CBs2ME+!&9UdYDT+9Z~XwHbcI?_XUMN@Noqzbph{P$1+}a=+HNCp zJeO#Bv7&UHUaYjWWyQg2E-;oK+7_N(th9|~#ldQJ#qvYzI=xtF+r*GxSxv6p4F^=! z!lD*5)#uj^B{icCsL~Z`LHog9nO}Y2NX=*nROt$}p!Cj$ZnoxwkkpJuK$Wgg3tH-D zYd(lb&1ei%=?b-=c#liQZrfrRk}hgsNtO-9~6^!etb|G-uV$VyOz0r zw$`DfX0!sTtSi)l8fI%gs3x;DAJm4~nyA^eZuGk$9ZG6OyR}x|{grivno+D)v?C(a zKwUsf7o{t!1&#ExHSYpaGwOiq>gu2t)az$!-Z@e;8Uj_iLM>>jpRIWplA6&7sL~Z` zK@0tEh<6dG8I6G|U7;4V((ey@7n7P%4^-(2wV;h5zdBE9MiZb)SEw1~2Nk;f+HJb@ zb2~;e!!r)wJ%gV{4e!);=;WPR?=0`sikb_Y_e(l$esxeYN?WGdvB^O#Xllr>t{^p| zB~aycg<8UAOS>e`TBS6Z}2V#ak%<3_U!E}u;&s-8XeCf5gc=O2d64ge_IW_l-vdl1TWHnc@;63g&E=B5HI=mFs;1U4mSXEz&@x<35 z)u6dFv4D?bq1T}!yMo3jORTBxRz=hETUSoq6uNRvCcIG<88SYrxk@z`V~wWH^DG`V z^{GKq1Ls(6M3XG(?d??0)WiZlj)msoF{68E(_KU~wJz3F^R!Xl*T=ovUalS=mkZOJ zHQK8i9$(ZoSI!O^tc`je!D2UfFiyqfTUil|`Ef8V8IKFpex_hEC7aEJ_LB9yl#Cza ztkq^NPa^JQlBJf<9$#sSdbZ(WH+i4T$I^pviQ zGn;E0En^>KTt>q(vGecMWAy6X)<-XzDAXqhtsnWR&f)1~GDVn9zM5d*xn!Q_TrxSZ z2b=0?)Ga1=dO#V7ucE4C{Y@in<`cXbu~xT@lVmtFRx9V12X}jn5M0v~@nm=mC^{ET z84n@G@h~%&mfKLg$(~l6CbL;&YRGl!^7SF4e1^u|$Suzwx>r=D?wQ>1)tQf>=Bnof4VdFg-S?`iePG(7Q^Q7Xc}f}QlQ$H*IHhHL zfLaPH4UXY2oVsxo4NmYl(oE(EX~u+J{=Xx2yF_J7OQ9|jon$l?thcj!c=c>i-QWLj zDSF6LC*}yAzsy{t8%=-bd-z&~S@#2a`V4+exXX={Bu)vs~Y$einIuyfo?k>Y8hP*rffid>=S>6NloX zI4_fr>bjXY6d%Q*e0Kd&K9oO{E;rA8*VT2u#xn0+^U;2}e01Ka98z;Z<=OQ|ef||) zZS|e$Mr|&g3?9tq4Lu=pD8|6zg(YnzNo%ax?G>*{1N8@iVx+F ztBdNF;!ys$y4w1WQFB50CL>c5$&x%nwkb?8)=cx)SjzT?{SQkck?aW#DOpmZ z$shQ`S{O@~hOA|qFvv482%&!Gp5(^)AP?`K@4N5*?mhQ@&pF?7fA@t#@~Pucp>d{u z6HIW;M2E-2{eo{ZcMJOcdC=djHfoM<`O@wmo|Yxc2>74%-X5P-ZTHsz|1^JOslC5;mu!B{KepF5@TuLu?ycS54&r0P z3wu2Azwfj?p5iYb{Fevuc@F$nSz`NVFT__N_=or<`#a{?>)Zas=658-$3E~s@xK-F ze@euTZ_1BRpl=1BA7S8!@;3(ho%O-ye_5vOzZ~Gd^tC;I&MUh=6ZDPvBmEx({1ia` zoPhXj2L8JX`A7NH2iCs`^o8Hj8J|Faz1{$x0x4g>#?zFdR+r1!6L zz<)mU4+s6F^G}nHwtq=K$1k?|C;uLR^T!j=hiwpFR6mISPJQkDWx)B6&X;{aKPZ3b z{2m4UDhB@i_vgfrd=z`b{!1W#>HJ0SH{C(s%iw%O_OC8O(uX#1e!LI$f!<&J{A%Fomw*42?Denq&IfwGtNi}xeyNF@r+-ZHXOqJfFQr}d zN^tc@!HT5ZU_?@9!B~o5e!Ac-hmkw-{NUSy9n*`0ai2~P4RG@@!K0}|f_B<^c`hMn zg+hrA2Y9+s*Xw`h)!kNJe-)g2*8CuDBW|9)r(|7&-2FxWIPbfmvs>6%>@K_-4Sp%S zB>4P-Ylq{*yV^h8OYBd-_HXR(sulY~6J($9j=Q9Q<*#w)-}m|bIbOacc;o$g;>YbO zPw$(%@hJ|^&X;|!b8%4BFh2g)IN#Gv_^#+8_#sO$-gZk}oV|7XjF;U+$E*6GvaRS* znbV`2N4~E|{;uqM+7=WVb){#|kfh^moN+wb5XN{$Hv5Xg}ST&0d`Q&3N^v=BL(`*J+X`)p62e zjh|3@eC+5sLG7sSX#D)?x~_56^FKRpG;;CPBU^Y@9r|1Kx1O`F>rg+a{{O9YxMhSi H-nIP&GiNxw diff --git a/src/cmd/vendor/github.com/google/pprof/profile/testdata/gobench.cpu.string b/src/cmd/vendor/github.com/google/pprof/profile/testdata/gobench.cpu.string deleted file mode 100644 index 7df1533ab8296f..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/profile/testdata/gobench.cpu.string +++ /dev/null @@ -1,415 +0,0 @@ -PeriodType: cpu nanoseconds -Period: 10000000 -Samples: -samples/count cpu/nanoseconds - 1 10000000: 1 2 - 1 10000000: 3 2 - 1 10000000: 4 2 - 1 10000000: 5 2 - 1 10000000: 6 2 - 1 10000000: 7 2 - 1 10000000: 8 2 - 1 10000000: 9 2 - 1 10000000: 10 2 - 1 10000000: 11 2 - 1 10000000: 12 2 - 1 10000000: 13 2 - 1 10000000: 14 2 - 1 10000000: 15 2 - 1 10000000: 16 2 - 1 10000000: 17 2 - 1 10000000: 18 2 - 1 10000000: 16 2 - 1 10000000: 19 2 - 1 10000000: 20 2 - 1 10000000: 21 2 - 1 10000000: 22 2 - 1 10000000: 23 2 - 1 10000000: 24 2 - 1 10000000: 25 2 - 1 10000000: 15 2 - 1 10000000: 26 2 - 1 10000000: 9 2 - 1 10000000: 27 2 - 1 10000000: 28 2 - 1 10000000: 29 2 - 1 10000000: 30 2 - 1 10000000: 31 2 - 1 10000000: 32 2 - 1 10000000: 24 2 - 1 10000000: 30 2 - 1 10000000: 33 2 - 1 10000000: 34 2 - 1 10000000: 35 2 - 1 10000000: 36 2 - 1 10000000: 27 2 - 1 10000000: 37 2 - 1 10000000: 38 2 - 1 10000000: 19 2 - 1 10000000: 39 2 - 1 10000000: 40 2 - 1 10000000: 41 2 - 1 10000000: 16 2 - 1 10000000: 42 2 - 1 10000000: 43 2 - 1 10000000: 44 2 - 1 10000000: 45 2 - 1 10000000: 46 2 - 1 10000000: 47 2 - 1 10000000: 48 2 - 1 10000000: 40 2 - 1 10000000: 10 2 - 1 10000000: 49 2 - 1 10000000: 50 2 - 1 10000000: 51 2 - 1 10000000: 52 2 - 1 10000000: 53 2 - 1 10000000: 30 2 - 1 10000000: 54 2 - 1 10000000: 55 2 - 1 10000000: 36 2 - 1 10000000: 56 2 - 1 10000000: 57 2 - 1 10000000: 58 2 - 1 10000000: 59 2 - 1 10000000: 60 2 - 1 10000000: 61 2 - 1 10000000: 57 2 - 1 10000000: 62 2 - 1 10000000: 63 2 - 1 10000000: 30 2 - 1 10000000: 64 2 - 1 10000000: 16 2 - 1 10000000: 65 2 - 1 10000000: 26 2 - 1 10000000: 40 2 - 1 10000000: 66 2 - 1 10000000: 58 2 - 1 10000000: 67 2 - 1 10000000: 68 2 - 1 10000000: 69 2 - 1 10000000: 70 2 - 1 10000000: 71 2 - 1 10000000: 72 2 - 1 10000000: 51 2 - 1 10000000: 73 2 - 1 10000000: 74 2 - 1 10000000: 75 2 - 1 10000000: 76 2 - 1 10000000: 77 2 - 1 10000000: 78 2 - 1 10000000: 79 2 - 1 10000000: 80 2 - 1 10000000: 81 2 - 1 10000000: 82 2 - 1 10000000: 83 2 - 1 10000000: 84 2 - 1 10000000: 85 2 - 1 10000000: 86 2 - 1 10000000: 10 2 - 1 10000000: 87 2 - 1 10000000: 88 2 - 1 10000000: 89 2 - 1 10000000: 90 2 - 1 10000000: 63 2 - 1 10000000: 91 2 - 1 10000000: 5 2 - 1 10000000: 92 2 - 1 10000000: 93 2 - 1 10000000: 94 2 - 1 10000000: 19 2 - 1 10000000: 95 2 - 1 10000000: 30 2 - 1 10000000: 96 2 - 1 10000000: 10 2 - 1 10000000: 97 2 - 1 10000000: 98 2 - 1 10000000: 99 2 - 1 10000000: 62 2 - 1 10000000: 92 2 - 1 10000000: 100 2 - 1 10000000: 101 2 - 1 10000000: 39 2 - 1 10000000: 102 2 - 1 10000000: 86 2 - 1 10000000: 33 2 - 1 10000000: 103 2 - 1 10000000: 104 2 - 1 10000000: 13 2 - 2 20000000: 105 2 - 1 10000000: 106 2 - 1 10000000: 52 2 - 1 10000000: 24 2 - 1 10000000: 107 2 - 1 10000000: 108 2 - 1 10000000: 52 2 - 1 10000000: 109 2 - 1 10000000: 5 2 - 1 10000000: 82 2 - 1 10000000: 8 2 - 1 10000000: 110 2 - 1 10000000: 111 2 - 1 10000000: 112 2 - 1 10000000: 113 2 - 1 10000000: 114 2 - 1 10000000: 115 2 - 1 10000000: 116 2 - 1 10000000: 19 2 - 1 10000000: 64 2 - 1 10000000: 106 2 - 1 10000000: 117 2 - 1 10000000: 30 2 - 1 10000000: 118 2 - 1 10000000: 86 2 - 1 10000000: 119 2 - 1 10000000: 120 2 - 1 10000000: 121 2 - 1 10000000: 81 2 - 2 20000000: 10 2 - 1 10000000: 19 2 - 1 10000000: 122 2 - 1 10000000: 123 2 - 1 10000000: 105 2 - 1 10000000: 124 2 - 1 10000000: 125 2 - 1 10000000: 46 2 - 1 10000000: 8 2 - 10 100000000: 21 2 - 7 70000000: 126 2 - 3 30000000: 9 2 - 1 10000000: 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 - 1 10000000: 144 2 - 5 50000000: 145 2 - 25 250000000: 146 2 - 1 10000000: 147 2 - 1 10000000: 148 149 150 134 135 136 137 138 139 140 141 142 143 - 1 10000000: 151 152 153 154 155 135 136 137 138 139 140 141 142 143 - 1 10000000: 156 157 153 154 155 135 136 137 138 139 140 141 142 143 - 1 10000000: 158 159 132 133 134 135 136 137 138 139 140 141 142 143 - 4 40000000: 27 2 - 4 40000000: 160 2 - 1 10000000: 116 2 - 5 50000000: 161 2 - 20 200000000: 162 163 164 135 136 137 138 139 140 141 142 143 - 1 10000000: 165 166 167 164 135 136 137 138 139 140 141 142 143 - 1 10000000: 168 169 167 164 135 136 137 138 139 140 141 142 143 - 2 20000000: 170 171 172 142 143 - 2 20000000: 173 171 172 142 143 - 1 10000000: 105 174 175 154 155 176 177 140 141 142 143 - 1 10000000: 178 179 176 177 140 141 142 143 - 1 10000000: 180 181 182 181 183 184 185 186 187 188 189 190 191 192 193 194 143 - 7 70000000: 195 2 - 2 20000000: 196 2 - 8 80000000: 16 2 - 1 10000000: 197 2 - 1 10000000: 146 198 199 135 136 137 138 139 140 141 142 143 - 1 10000000: 200 199 135 136 137 138 139 140 141 142 143 - 3 30000000: 162 179 135 136 137 138 139 140 141 142 143 - 1 10000000: 201 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 - 1 10000000: 202 167 152 153 154 155 135 136 137 138 139 140 141 142 143 - 6 60000000: 162 163 152 153 154 155 135 136 137 138 139 140 141 142 143 -Locations - 1: 0x410bc0 M=1 - 2: 0x41a770 M=1 - 3: 0x410b4b M=1 - 4: 0x40f534 M=1 - 5: 0x40f018 M=1 - 6: 0x421f4f M=1 - 7: 0x40e46f M=1 - 8: 0x40f0e3 M=1 - 9: 0x4286c7 M=1 - 10: 0x40f15b M=1 - 11: 0x40efb1 M=1 - 12: 0x41250d M=1 - 13: 0x427854 M=1 - 14: 0x40e688 M=1 - 15: 0x410b61 M=1 - 16: 0x40fa72 M=1 - 17: 0x40e92a M=1 - 18: 0x421ff1 M=1 - 19: 0x42830d M=1 - 20: 0x41cf23 M=1 - 21: 0x40e7cb M=1 - 22: 0x40ea46 M=1 - 23: 0x40f792 M=1 - 24: 0x40f023 M=1 - 25: 0x40ee50 M=1 - 26: 0x40c6ab M=1 - 27: 0x40fa51 M=1 - 28: 0x40f14b M=1 - 29: 0x421fca M=1 - 30: 0x4285d3 M=1 - 31: 0x410ba9 M=1 - 32: 0x40e75f M=1 - 33: 0x4277a1 M=1 - 34: 0x40e89f M=1 - 35: 0x40ea54 M=1 - 36: 0x40f0ab M=1 - 37: 0x40ef9b M=1 - 38: 0x410d6a M=1 - 39: 0x40e455 M=1 - 40: 0x427856 M=1 - 41: 0x40e80b M=1 - 42: 0x40f5ef M=1 - 43: 0x40fb2a M=1 - 44: 0x422786 M=1 - 45: 0x40f031 M=1 - 46: 0x40f49d M=1 - 47: 0x40f331 M=1 - 48: 0x40e927 M=1 - 49: 0x40f558 M=1 - 50: 0x410b56 M=1 - 51: 0x40eac1 M=1 - 52: 0x40e813 M=1 - 53: 0x40e7df M=1 - 54: 0x40f53d M=1 - 55: 0x40f180 M=1 - 56: 0x410b94 M=1 - 57: 0x40fbf6 M=1 - 58: 0x40f026 M=1 - 59: 0x40f0dc M=1 - 60: 0x40e9d3 M=1 - 61: 0x40fa7b M=1 - 62: 0x40e877 M=1 - 63: 0x4048a8 M=1 - 64: 0x40f02e M=1 - 65: 0x4048b8 M=1 - 66: 0x4277d0 M=1 - 67: 0x40f5cb M=1 - 68: 0x40fbae M=1 - 69: 0x40e8c2 M=1 - 70: 0x40f64b M=1 - 71: 0x40e82e M=1 - 72: 0x421f22 M=1 - 73: 0x40fa67 M=1 - 74: 0x40fbb1 M=1 - 75: 0x40f568 M=1 - 76: 0x40e461 M=1 - 77: 0x40ef85 M=1 - 78: 0x40f58b M=1 - 79: 0x40f08d M=1 - 80: 0x40e75c M=1 - 81: 0x410c22 M=1 - 82: 0x40fa59 M=1 - 83: 0x40f091 M=1 - 84: 0x40eb69 M=1 - 85: 0x41075a M=1 - 86: 0x40e7e9 M=1 - 87: 0x40fa97 M=1 - 88: 0x4131eb M=1 - 89: 0x40f769 M=1 - 90: 0x40f54e M=1 - 91: 0x4277d5 M=1 - 92: 0x40f0ca M=1 - 93: 0x40f051 M=1 - 94: 0x40e94f M=1 - 95: 0x40fc11 M=1 - 96: 0x41815b M=1 - 97: 0x40f4b3 M=1 - 98: 0x421fe8 M=1 - 99: 0x40e79e M=1 - 100: 0x413f29 M=1 - 101: 0x427822 M=1 - 102: 0x40ef3d M=1 - 103: 0x40e440 M=1 - 104: 0x40e767 M=1 - 105: 0x42783b M=1 - 106: 0x40fa85 M=1 - 107: 0x40fb36 M=1 - 108: 0x410bae M=1 - 109: 0x40f0d7 M=1 - 110: 0x410ba4 M=1 - 111: 0x40e87b M=1 - 112: 0x40e7c0 M=1 - 113: 0x40eae0 M=1 - 114: 0x410a99 M=1 - 115: 0x40e7bd M=1 - 116: 0x40f09d M=1 - 117: 0x410b70 M=1 - 118: 0x40f32d M=1 - 119: 0x4283ec M=1 - 120: 0x40f010 M=1 - 121: 0x40e97a M=1 - 122: 0x40f19a M=1 - 123: 0x40e779 M=1 - 124: 0x40f61d M=1 - 125: 0x40f4e1 M=1 - 126: 0x40f58f M=1 - 127: 0x41ef43 M=1 - 128: 0x41ef96 M=1 - 129: 0x41f089 M=1 - 130: 0x41f360 M=1 - 131: 0x41fc8e M=1 - 132: 0x4204c7 M=1 - 133: 0x422b03 M=1 - 134: 0x420cee M=1 - 135: 0x422150 M=1 - 136: 0x4221d9 M=1 - 137: 0x41dc0c M=1 - 138: 0x41db47 M=1 - 139: 0x672125 M=1 - 140: 0x4ac6fd M=1 - 141: 0x4abf98 M=1 - 142: 0x491fbd M=1 - 143: 0x41931f M=1 - 144: 0x40e844 M=1 - 145: 0x421ff8 M=1 - 146: 0x4277e4 M=1 - 147: 0x40e990 M=1 - 148: 0x41c53f M=1 - 149: 0x422746 M=1 - 150: 0x422b42 M=1 - 151: 0x412b5f M=1 - 152: 0x40d47b M=1 - 153: 0x40cf5e M=1 - 154: 0x40cceb M=1 - 155: 0x420b5e M=1 - 156: 0x413ab9 M=1 - 157: 0x40d56e M=1 - 158: 0x41f5a6 M=1 - 159: 0x420149 M=1 - 160: 0x40f531 M=1 - 161: 0x410b8d M=1 - 162: 0x427ac9 M=1 - 163: 0x412b91 M=1 - 164: 0x420ee3 M=1 - 165: 0x4134a8 M=1 - 166: 0x412dc7 M=1 - 167: 0x412afa M=1 - 168: 0x413a9d M=1 - 169: 0x412bf6 M=1 - 170: 0x671ed3 M=1 - 171: 0x4ac6ad M=1 - 172: 0x4abdd8 M=1 - 173: 0x671ebe M=1 - 174: 0x40c8ae M=1 - 175: 0x40d00a M=1 - 176: 0x422081 M=1 - 177: 0x672148 M=1 - 178: 0x427ad1 M=1 - 179: 0x420e54 M=1 - 180: 0x5718ff M=1 - 181: 0x575ab6 M=1 - 182: 0x572114 M=1 - 183: 0x571257 M=1 - 184: 0x462494 M=1 - 185: 0x475ea6 M=1 - 186: 0x473682 M=1 - 187: 0x471fd7 M=1 - 188: 0x471ac0 M=1 - 189: 0x46f1b2 M=1 - 190: 0x46ef32 M=1 - 191: 0x4ab9e0 M=1 - 192: 0x4acce1 M=1 - 193: 0x4ac7b6 M=1 - 194: 0x4ace6a M=1 - 195: 0x410b8a M=1 - 196: 0x40f56e M=1 - 197: 0x428176 M=1 - 198: 0x4120f3 M=1 - 199: 0x420be8 M=1 - 200: 0x412100 M=1 - 201: 0x41ef39 M=1 - 202: 0x412e38 M=1 -Mappings -1: 0x0/0xffffffffffffffff/0x0 diff --git a/src/cmd/vendor/github.com/google/pprof/profile/testdata/gobench.heap b/src/cmd/vendor/github.com/google/pprof/profile/testdata/gobench.heap deleted file mode 100644 index ed449034245295..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/profile/testdata/gobench.heap +++ /dev/null @@ -1,16 +0,0 @@ -heap profile: 13: 1595680 [47130736: 2584596557304] @ heap/1048576 -1: 524288 [3: 1572864] @ 0x420cef 0x422151 0x4221da 0x41dc0d 0x41db48 0x74920f 0x6295ac 0x629855 0x462769 0x419320 -1: 524288 [1: 524288] @ 0x420cef 0x422151 0x4221da 0x41dc0d 0x41db48 0x74920f 0x63963f 0x419320 -1: 262144 [1: 262144] @ 0x420cef 0x422151 0x4221da 0x41dc0d 0x41db48 0x451a39 0x451ba5 0x450683 0x450077 0x4525a4 0x58e034 0x419320 -1: 262144 [1: 262144] @ 0x420cef 0x422151 0x4221da 0x41dc0d 0x41db48 0x451a39 0x451ba5 0x450683 0x450077 0x4524d4 0x401090 0x4011a1 0x416dff 0x419320 -1: 10240 [642: 6574080] @ 0x420cef 0x422151 0x4221da 0x41dc0d 0x41db48 0x477637 0x47718b 0x477056 0x4799b2 0x46bfd7 0x419320 -1: 4096 [1: 4096] @ 0x420cef 0x422151 0x4221da 0x41dc0d 0x41db48 0x526126 0x5261ea 0x4683d4 0x467e09 0x419320 -1: 4096 [1: 4096] @ 0x420cef 0x422151 0x4221da 0x41dc0d 0x41db48 0x53fbf3 0x53f85f 0x545f52 0x545a70 0x419320 -1: 2048 [1: 2048] @ 0x420cef 0x420fa9 0x414b22 0x414d20 0x4901be 0x419320 -1: 1280 [1: 1280] @ 0x420cef 0x422082 0x48dbe3 0x48d15c 0x48cdd0 0x4a9dc0 0x545bfe 0x543ac7 0x419320 -1: 384 [1: 384] @ 0x420cef 0x422151 0x4221da 0x41dc0d 0x41dd68 0x41dcbd 0x429150 0x429add 0x42e013 0x4307e2 0x4366ff 0x42c1c2 0x653e4d 0x64bdc5 0x64c359 0x65a73d 0x64cdb1 0x64be73 0x64c359 0x64c59a 0x64c205 0x64c359 0x64b778 0x5cd55c 0x45dbc3 0x543e70 0x559166 0x55ba54 0x559691 0x559985 0x5a19ff 0x543e70 -1: 288 [1: 288] @ 0x420cef 0x420fa9 0x419e19 0x41a1a8 0x419f63 0x48f09f 0x48d991 0x48cdd0 0x4a9dc0 0x545bfe 0x543ac7 0x419320 -1: 288 [2: 296] @ -1: 96 [1: 96] @ 0x420cef 0x424f35 0x4255d1 0x6fc293 0x6f9c88 0x6f9944 0x6f96be 0x6f966b 0x59f39a 0x468318 0x467e09 0x419320 -0: 0 [1: 1024] @ 0x420cef 0x422151 0x4221da 0x41dc0d 0x41dd68 0x41dcbd 0x6d71a3 0x6da87d 0x7b2c3b 0x419320 -0: 0 [1: 16] @ 0x420cef 0x422048 0x40b517 0x40b746 0x6d9ca2 0x4761c5 0x475ea7 0x46fc4f 0x46f180 0x46ef33 0x4ab821 0x4acc32 0x4ac7b7 0x4ace36 0x419320 diff --git a/src/cmd/vendor/github.com/google/pprof/profile/testdata/gobench.heap.string b/src/cmd/vendor/github.com/google/pprof/profile/testdata/gobench.heap.string deleted file mode 100644 index 01306ce68fa566..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/profile/testdata/gobench.heap.string +++ /dev/null @@ -1,137 +0,0 @@ -PeriodType: space bytes -Period: 524288 -Samples: -alloc_objects/count alloc_space/bytes inuse_objects/count inuse_space/bytes - 4 2488234 1 829411: 1 2 3 4 5 6 7 8 9 10 - bytes:[524288] - 1 829411 1 829411: 1 2 3 4 5 6 11 10 - bytes:[524288] - 2 666237 2 666237: 1 2 3 4 5 12 13 14 15 16 17 10 - bytes:[262144] - 2 666237 2 666237: 1 2 3 4 5 12 13 14 15 18 19 20 21 10 - bytes:[262144] - 33192 339890635 51 529424: 1 2 3 4 5 22 23 24 25 26 10 - bytes:[10240] - 128 526338 128 526338: 1 2 3 4 5 27 28 29 30 10 - bytes:[4096] - 128 526338 128 526338: 1 2 3 4 5 31 32 33 34 10 - bytes:[4096] - 256 525312 256 525312: 1 35 36 37 38 10 - bytes:[2048] - 410 524928 410 524928: 1 39 40 41 42 43 44 45 10 - bytes:[1280] - 1365 524480 1365 524480: 1 2 3 4 46 47 48 49 50 51 52 53 54 55 56 57 58 59 56 60 61 56 62 63 64 65 66 67 68 69 70 65 - bytes:[384] - 1820 524432 1820 524432: 1 35 71 72 73 74 75 42 43 44 45 10 - bytes:[288] - 7085 1048724 1820 524432: - bytes:[288] - 5461 524336 5461 524336: 1 76 77 78 79 80 81 82 83 84 30 10 - bytes:[96] - 512 524800 0 0: 1 2 3 4 46 47 85 86 87 10 - bytes:[1024] - 32768 524296 0 0: 1 88 89 90 91 92 93 94 95 96 97 98 99 100 10 - bytes:[16] -Locations - 1: 0x420cee M=1 - 2: 0x422150 M=1 - 3: 0x4221d9 M=1 - 4: 0x41dc0c M=1 - 5: 0x41db47 M=1 - 6: 0x74920e M=1 - 7: 0x6295ab M=1 - 8: 0x629854 M=1 - 9: 0x462768 M=1 - 10: 0x41931f M=1 - 11: 0x63963e M=1 - 12: 0x451a38 M=1 - 13: 0x451ba4 M=1 - 14: 0x450682 M=1 - 15: 0x450076 M=1 - 16: 0x4525a3 M=1 - 17: 0x58e033 M=1 - 18: 0x4524d3 M=1 - 19: 0x40108f M=1 - 20: 0x4011a0 M=1 - 21: 0x416dfe M=1 - 22: 0x477636 M=1 - 23: 0x47718a M=1 - 24: 0x477055 M=1 - 25: 0x4799b1 M=1 - 26: 0x46bfd6 M=1 - 27: 0x526125 M=1 - 28: 0x5261e9 M=1 - 29: 0x4683d3 M=1 - 30: 0x467e08 M=1 - 31: 0x53fbf2 M=1 - 32: 0x53f85e M=1 - 33: 0x545f51 M=1 - 34: 0x545a6f M=1 - 35: 0x420fa8 M=1 - 36: 0x414b21 M=1 - 37: 0x414d1f M=1 - 38: 0x4901bd M=1 - 39: 0x422081 M=1 - 40: 0x48dbe2 M=1 - 41: 0x48d15b M=1 - 42: 0x48cdcf M=1 - 43: 0x4a9dbf M=1 - 44: 0x545bfd M=1 - 45: 0x543ac6 M=1 - 46: 0x41dd67 M=1 - 47: 0x41dcbc M=1 - 48: 0x42914f M=1 - 49: 0x429adc M=1 - 50: 0x42e012 M=1 - 51: 0x4307e1 M=1 - 52: 0x4366fe M=1 - 53: 0x42c1c1 M=1 - 54: 0x653e4c M=1 - 55: 0x64bdc4 M=1 - 56: 0x64c358 M=1 - 57: 0x65a73c M=1 - 58: 0x64cdb0 M=1 - 59: 0x64be72 M=1 - 60: 0x64c599 M=1 - 61: 0x64c204 M=1 - 62: 0x64b777 M=1 - 63: 0x5cd55b M=1 - 64: 0x45dbc2 M=1 - 65: 0x543e6f M=1 - 66: 0x559165 M=1 - 67: 0x55ba53 M=1 - 68: 0x559690 M=1 - 69: 0x559984 M=1 - 70: 0x5a19fe M=1 - 71: 0x419e18 M=1 - 72: 0x41a1a7 M=1 - 73: 0x419f62 M=1 - 74: 0x48f09e M=1 - 75: 0x48d990 M=1 - 76: 0x424f34 M=1 - 77: 0x4255d0 M=1 - 78: 0x6fc292 M=1 - 79: 0x6f9c87 M=1 - 80: 0x6f9943 M=1 - 81: 0x6f96bd M=1 - 82: 0x6f966a M=1 - 83: 0x59f399 M=1 - 84: 0x468317 M=1 - 85: 0x6d71a2 M=1 - 86: 0x6da87c M=1 - 87: 0x7b2c3a M=1 - 88: 0x422047 M=1 - 89: 0x40b516 M=1 - 90: 0x40b745 M=1 - 91: 0x6d9ca1 M=1 - 92: 0x4761c4 M=1 - 93: 0x475ea6 M=1 - 94: 0x46fc4e M=1 - 95: 0x46f17f M=1 - 96: 0x46ef32 M=1 - 97: 0x4ab820 M=1 - 98: 0x4acc31 M=1 - 99: 0x4ac7b6 M=1 - 100: 0x4ace35 M=1 -Mappings -1: 0x0/0xffffffffffffffff/0x0 diff --git a/src/cmd/vendor/github.com/google/pprof/profile/testdata/java.contention b/src/cmd/vendor/github.com/google/pprof/profile/testdata/java.contention deleted file mode 100644 index fb484b70a40780..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/profile/testdata/java.contention +++ /dev/null @@ -1,43 +0,0 @@ ---- contentionz 1 --- -format = java -resolution = microseconds -sampling period = 100 -ms since reset = 6019923 - 1 1 @ 0x00000003 0x00000004 - 14 1 @ 0x0000000d 0x0000000e 0x0000000f 0x00000010 0x00000011 0x00000012 0x00000013 0x00000014 0x00000017 0x00000018 0x00000019 0x0000001a 0x0000001b 0x0000001c 0x00000014 0x00000029 0x0000002a 0x0000002b 0x0000002c 0x0000002d 0x0000002e 0x0000002f 0x00000030 0x00000031 0x00000032 0x00000033 0x00000034 0x00000035 - 2 2 @ 0x00000003 0x00000004 - 2 3 @ 0x00000036 0x00000037 0x00000038 - - - 0x0000003 com.example.function03 (source.java:03) - 0x0000004 com.example.function04 (source.java:04) - 0x000000d com.example.function0d (source.java:0) - 0x000000e com.example.function0e (source.java:0) - 0x000000f com.example.function0f (source.java:0) - 0x0000010 com.example.function10 (source.java:10) - 0x0000011 com.example.function11 (source.java:11) - 0x0000012 com.example.function12 (source.java:12) - 0x0000013 com.example.function13 (source.java:13) - 0x0000014 com.example.function14 (source.java:14) - 0x0000017 com.example.function17 (source.java:17) - 0x0000018 com.example.function18 (source.java:18) - 0x0000019 com.example.function19 (source.java:19) - 0x000001a com.example.function1a (source.java:1) - 0x000001b com.example.function1b (source.java:1) - 0x000001c com.example.function1c (source.java:1) - 0x0000029 com.example.function29 (source.java:29) - 0x000002a com.example.function2a (source.java:2) - 0x000002b com.example.function2b (source.java:2) - 0x000002c com.example.function2c (source.java:2) - 0x000002d com.example.function2d (source.java:2) - 0x000002e com.example.function2e (source.java:2) - 0x000002f com.example.function2f (source.java:2) - 0x0000030 com.example.function30 (source.java:30) - 0x0000031 com.example.function31 (source.java:31) - 0x0000032 com.example.function32 (source.java:32) - 0x0000033 com.example.function33 (source.java:33) - 0x0000034 com.example.function34 (source.java:34) - 0x0000035 com.example.function35 (source.java:35) - 0x0000036 com.example.function36 (source.java:36) - 0x0000037 com.example.function37 (source.java:37) - 0x0000038 com.example.function38 (source.java:38) diff --git a/src/cmd/vendor/github.com/google/pprof/profile/testdata/java.contention.string b/src/cmd/vendor/github.com/google/pprof/profile/testdata/java.contention.string deleted file mode 100644 index 985ffe1cca3b13..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/profile/testdata/java.contention.string +++ /dev/null @@ -1,43 +0,0 @@ -PeriodType: contentions count -Period: 100 -Duration: 1h40 -Samples: -contentions/count delay/microseconds - 100 100: 1 2 - 100 1400: 3 4 5 6 7 8 9 10 11 12 13 14 15 16 10 17 18 19 20 21 22 23 24 25 26 27 28 29 - 200 200: 1 2 - 300 200: 30 31 32 -Locations - 1: 0x0 com.example.function03 source.java:3 s=0 - 2: 0x0 com.example.function04 source.java:4 s=0 - 3: 0x0 com.example.function0d source.java:0 s=0 - 4: 0x0 com.example.function0e source.java:0 s=0 - 5: 0x0 com.example.function0f source.java:0 s=0 - 6: 0x0 com.example.function10 source.java:10 s=0 - 7: 0x0 com.example.function11 source.java:11 s=0 - 8: 0x0 com.example.function12 source.java:12 s=0 - 9: 0x0 com.example.function13 source.java:13 s=0 - 10: 0x0 com.example.function14 source.java:14 s=0 - 11: 0x0 com.example.function17 source.java:17 s=0 - 12: 0x0 com.example.function18 source.java:18 s=0 - 13: 0x0 com.example.function19 source.java:19 s=0 - 14: 0x0 com.example.function1a source.java:1 s=0 - 15: 0x0 com.example.function1b source.java:1 s=0 - 16: 0x0 com.example.function1c source.java:1 s=0 - 17: 0x0 com.example.function29 source.java:29 s=0 - 18: 0x0 com.example.function2a source.java:2 s=0 - 19: 0x0 com.example.function2b source.java:2 s=0 - 20: 0x0 com.example.function2c source.java:2 s=0 - 21: 0x0 com.example.function2d source.java:2 s=0 - 22: 0x0 com.example.function2e source.java:2 s=0 - 23: 0x0 com.example.function2f source.java:2 s=0 - 24: 0x0 com.example.function30 source.java:30 s=0 - 25: 0x0 com.example.function31 source.java:31 s=0 - 26: 0x0 com.example.function32 source.java:32 s=0 - 27: 0x0 com.example.function33 source.java:33 s=0 - 28: 0x0 com.example.function34 source.java:34 s=0 - 29: 0x0 com.example.function35 source.java:35 s=0 - 30: 0x0 com.example.function36 source.java:36 s=0 - 31: 0x0 com.example.function37 source.java:37 s=0 - 32: 0x0 com.example.function38 source.java:38 s=0 -Mappings diff --git a/src/cmd/vendor/github.com/google/pprof/profile/testdata/java.cpu b/src/cmd/vendor/github.com/google/pprof/profile/testdata/java.cpu deleted file mode 100644 index 593588b7d6060f3db3be4b2d2b66bfe111ff5a1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3537 zcmZ{kNpBNT5QNPRW=U8s9Drd>%wlHVd)~s1fdCR$?v68-g5o#=g7WjJ2bNsjshI!wiQF+befuPN&l-@mO6`^9uI@7BkY`Qd)uogE!afA1|0 z%6_r=YjN~*T6cd;{!F&YerKf&v@&qYfRv$DhE5rhGSbS(DI-!QTA4V7j2&(4G#gWG zOq-2eZR|E1wKnQzW2TK+qfwR8Ky2n-m8*wURa&W>Qjrq05}Xo9iCT$HiKHa0B&Q@& z^iV1{6uuQbl*$c-4Ly{~4TX%Lhl1D)CD2fU9tvWs@LBXwf*VSpp#(h?#P%#Sl%R)# z*eW!X(35jSY?a<>jzO<4#8#p874-T-Y!zBxL9Z{wR-yG3^!h?<63VDbY2B4c(OJnnFg>O+jq#JW*4UZVFd4u~n!kNjC+t PRj4URHwCd(I_>sfIkoP8 diff --git a/src/cmd/vendor/github.com/google/pprof/profile/testdata/java.cpu.string b/src/cmd/vendor/github.com/google/pprof/profile/testdata/java.cpu.string deleted file mode 100644 index f728cf26a885db..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/profile/testdata/java.cpu.string +++ /dev/null @@ -1,78 +0,0 @@ -PeriodType: cpu nanoseconds -Period: 10000000 -Samples: -samples/count cpu/nanoseconds - 0 0: 1 - 0 0: 2 - 2 20000000: 3 - 1 10000000: 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 - 1 10000000: 19 20 21 22 23 16 17 18 - 1 10000000: 24 25 26 27 28 29 30 31 32 - 1 10000000: 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 29 30 31 32 - 1 10000000: 54 55 56 57 58 59 60 61 62 11 63 64 16 17 18 -Locations - 1: 0x0 GC :0 s=0 - 2: 0x0 Compile :0 s=0 - 3: 0x0 VM :0 s=0 - 4: 0x0 com.example.function06 source.java:6 s=0 - 5: 0x0 com.example.function07 source.java:7 s=0 - 6: 0x0 com.example.function08 source.java:8 s=0 - 7: 0x0 com.example.function09 source.java:9 s=0 - 8: 0x0 com.example.function0a source.java:0 s=0 - 9: 0x0 com.example.function0b source.java:0 s=0 - 10: 0x0 com.example.function0c source.java:0 s=0 - 11: 0x0 com.example.function0d source.java:0 s=0 - 12: 0x0 com.example.function0e source.java:0 s=0 - 13: 0x0 com.example.function0f source.java:0 s=0 - 14: 0x0 com.example.function10 source.java:10 s=0 - 15: 0x0 com.example.function11 source.java:11 s=0 - 16: 0x0 com.example.function12 source.java:12 s=0 - 17: 0x0 com.example.function13 source.java:13 s=0 - 18: 0x0 com.example.function14 source.java:14 s=0 - 19: 0x0 com.example.function1d source.java:1 s=0 - 20: 0x0 com.example.function1e source.java:1 s=0 - 21: 0x0 com.example.function1f source.java:1 s=0 - 22: 0x0 com.example.function20 source.java:20 s=0 - 23: 0x0 com.example.function21 source.java:21 s=0 - 24: 0x0 com.example.function22 source.java:22 s=0 - 25: 0x0 com.example.function23 source.java:23 s=0 - 26: 0x0 com.example.function24 source.java:24 s=0 - 27: 0x0 com.example.function25 source.java:25 s=0 - 28: 0x0 com.example.function26 source.java:26 s=0 - 29: 0x0 com.example.function27 source.java:27 s=0 - 30: 0x0 com.example.function28 source.java:28 s=0 - 31: 0x0 com.example.function29 source.java:29 s=0 - 32: 0x0 com.example.function2a source.java:2 s=0 - 33: 0x0 com.example.function2b source.java:2 s=0 - 34: 0x0 com.example.function2c source.java:2 s=0 - 35: 0x0 com.example.function2d source.java:2 s=0 - 36: 0x0 com.example.function2e source.java:2 s=0 - 37: 0x0 com.example.function2f source.java:2 s=0 - 38: 0x0 com.example.function30 source.java:30 s=0 - 39: 0x0 com.example.function31 source.java:31 s=0 - 40: 0x0 com.example.function32 source.java:32 s=0 - 41: 0x0 com.example.function33 source.java:33 s=0 - 42: 0x0 com.example.function34 source.java:34 s=0 - 43: 0x0 com.example.function35 source.java:35 s=0 - 44: 0x0 com.example.function36 source.java:36 s=0 - 45: 0x0 com.example.function37 source.java:37 s=0 - 46: 0x0 com.example.function38 source.java:38 s=0 - 47: 0x0 com.example.function39 source.java:39 s=0 - 48: 0x0 com.example.function3a source.java:3 s=0 - 49: 0x0 com.example.function3b source.java:3 s=0 - 50: 0x0 com.example.function3c source.java:3 s=0 - 51: 0x0 com.example.function3d source.java:3 s=0 - 52: 0x0 com.example.function3e source.java:3 s=0 - 53: 0x0 com.example.function3f source.java:3 s=0 - 54: 0x0 com.example.function40 source.java:40 s=0 - 55: 0x0 com.example.function41 source.java:41 s=0 - 56: 0x0 com.example.function42 source.java:42 s=0 - 57: 0x0 com.example.function43 source.java:43 s=0 - 58: 0x0 com.example.function44 source.java:44 s=0 - 59: 0x0 com.example.function45 source.java:45 s=0 - 60: 0x0 com.example.function46 source.java:46 s=0 - 61: 0x0 com.example.function47 source.java:47 s=0 - 62: 0x0 com.example.function48 source.java:48 s=0 - 63: 0x0 com.example.function49 source.java:49 s=0 - 64: 0x0 com.example.function4a source.java:4 s=0 -Mappings diff --git a/src/cmd/vendor/github.com/google/pprof/profile/testdata/java.heap b/src/cmd/vendor/github.com/google/pprof/profile/testdata/java.heap deleted file mode 100644 index 95e4f6e880a3c4..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/profile/testdata/java.heap +++ /dev/null @@ -1,133 +0,0 @@ ---- heapz 1 --- -format = java -resolution = bytes - 7048 1 @ 0x00000003 0x00000004 0x00000005 0x00000006 0x00000007 0x00000008 0x00000009 0x0000000a 0x0000000b 0x0000000c 0x0000000d 0x0000000e 0x0000000f 0x00000010 0x00000011 0x00000018 0x00000019 0x0000001a 0x0000001b 0x0000001c 0x0000001d 0x0000001e 0x0000001f 0x00000020 0x00000021 0x00000022 0x00000023 0x00000024 0x00000025 0x00000026 0x00000027 0x00000023 0x00000028 0x00000029 0x0000001d 0x0000001e 0x0000001f 0x00000020 0x00000021 0x00000027 0x00000023 0x00000028 0x00000029 0x0000001d 0x0000001e 0x0000001f 0x00000020 0x00000021 0x0000002a 0x00000027 0x00000023 0x00000028 0x00000029 0x0000001d 0x0000001e 0x0000001f 0x00000020 - 4752 9 @ 0x0000002b 0x0000002c 0x0000002d 0x0000002e - 880 1 @ 0x00000035 0x00000036 0x00000037 0x00000038 0x00000039 0x0000003a 0x0000003b 0x00000011 0x0000003d 0x0000003e 0x0000003f 0x00000040 0x00000041 0x00000042 0x00000011 0x00000049 0x0000004a 0x0000004b 0x0000004c 0x0000004d 0x0000004e 0x0000004b 0x0000004f 0x0000004b 0x00000050 0x00000051 0x00000052 0x00000053 0x00000054 0x00000055 0x00000056 0x00000057 - 560 1 @ 0x00000035 0x00000036 0x00000037 0x00000038 0x00000039 0x0000003a 0x0000003b 0x00000011 0x0000003d 0x0000003e 0x0000003f 0x00000040 0x00000041 0x00000042 0x00000011 0x0000005e 0x0000005f 0x00000060 0x00000061 0x00000062 0x00000063 0x00000064 0x00000065 0x00000066 0x00000067 0x00000068 0x00000069 0x0000006a 0x0000006b 0x0000006c 0x0000006d 0x0000006e 0x0000006f 0x00000070 0x00000071 0x00000072 0x00000073 0x00000074 0x00000075 0x00000067 0x00000068 - 528 1 @ 0x00000076 0x00000077 0x00000078 0x00000079 0x0000007a 0x0000007b 0x00000011 0x00000081 0x00000011 0x00000082 0x0000004e 0x0000004b 0x0000004f 0x0000004b 0x00000050 0x00000051 0x00000052 0x00000053 0x00000054 0x00000055 0x00000056 0x00000057 - 440 1 @ 0x00000083 0x00000084 0x00000085 0x00000086 0x00000087 0x00000088 0x00000089 0x0000008a 0x0000008b 0x0000008c 0x0000008d 0x0000008e 0x0000008f 0x00000090 0x00000091 0x00000092 0x00000093 0x00000094 0x00000095 0x00000096 - 240 5 @ 0x00000097 - - - 0x00000003 com.example.function003 (Source003.java:103) - 0x00000004 com.example.function004 (Source004.java:104) - 0x00000005 com.example.function005 (Source005.java:105) - 0x00000006 com.example.function006 (Source006.java:106) - 0x00000007 com.example.function007 (Source007.java:107) - 0x00000008 com.example.function008 (Source008.java:108) - 0x00000009 com.example.function009 (Source009.java:109) - 0x0000000a com.example.function00a (Source00a.java:10) - 0x0000000b com.example.function00b (Source00b.java:10) - 0x0000000c com.example.function00c (Source00c.java:10) - 0x0000000d com.example.function00d (Source00d.java:10) - 0x0000000e com.example.function00e (Source00e.java:10) - 0x0000000f com.example.function00f (Source00f.java:10) - 0x00000010 com.example.function010 (Source010.java:110) - 0x00000011 com.example.function011 (Source011.java:111) - 0x00000018 com.example.function018 (Source018.java:118) - 0x00000019 com.example.function019 (Source019.java:119) - 0x0000001a com.example.function01a (Source01a.java:11) - 0x0000001b com.example.function01b (Source01b.java:11) - 0x0000001c com.example.function01c (Source01c.java:11) - 0x0000001d com.example.function01d (Source01d.java:11) - 0x0000001e com.example.function01e (Source01e.java:11) - 0x0000001f com.example.function01f (Source01f.java:11) - 0x00000020 com.example.function020 (Source020.java:120) - 0x00000021 com.example.function021 (Source021.java:121) - 0x00000022 com.example.function022 (Source022.java:122) - 0x00000023 com.example.function023 (Source023.java:123) - 0x00000024 com.example.function024 (Source024.java:124) - 0x00000025 com.example.function025 (Source025.java:125) - 0x00000026 com.example.function026 (Source026.java:126) - 0x00000027 com.example.function027 (Source027.java:127) - 0x00000028 com.example.function028 (Source028.java:128) - 0x00000029 com.example.function029 (Source029.java:129) - 0x0000002a com.example.function02a (Source02a.java:12) - 0x0000002b com.example.function02b (Source02b.java:12) - 0x0000002c com.example.function02c (Source02c.java:12) - 0x0000002d com.example.function02d (Source02d.java:12) - 0x0000002e com.example.function02e (Source02e.java:12) - 0x00000035 com.example.function035 (Source035.java:135) - 0x00000036 com.example.function036 (Source036.java:136) - 0x00000037 com.example.function037 (Source037.java:137) - 0x00000038 com.example.function038 (Source038.java:138) - 0x00000039 com.example.function039 (Source039.java:139) - 0x0000003a com.example.function03a (Source03a.java:13) - 0x0000003b com.example.function03b (Source03b.java:13) - 0x0000003d com.example.function03d (Source03d.java:13) - 0x0000003e com.example.function03e (Source03e.java:13) - 0x0000003f com.example.function03f (Source03f.java:13) - 0x00000040 com.example.function040 (Source040.java:140) - 0x00000041 com.example.function041 (Source041.java:141) - 0x00000042 com.example.function042 (Source042.java:142) - 0x00000049 com.example.function049 (Source049.java:149) - 0x0000004a com.example.function04a (Source04a.java:14) - 0x0000004b com.example.function04b (Source04b.java:14) - 0x0000004c com.example.function04c (Source04c.java:14) - 0x0000004d com.example.function04d (Source04d.java:14) - 0x0000004e com.example.function04e (Source04e.java:14) - 0x0000004f com.example.function04f (Source04f.java:14) - 0x00000050 com.example.function050 (Source050.java:150) - 0x00000051 com.example.function051 (Source051.java:151) - 0x00000052 com.example.function052 (Source052.java:152) - 0x00000053 com.example.function053 (Source053.java:153) - 0x00000054 com.example.function054 (Source054.java:154) - 0x00000055 com.example.function055 (Source055.java:155) - 0x00000056 com.example.function056 (Source056.java:156) - 0x00000057 com.example.function057 (Source057.java:157) - 0x0000005a com.example.function05a (Source05a.java:15) - 0x0000005e com.example.function05e (Source05e.java:15) - 0x0000005f com.example.function05f (Source05f.java:15) - 0x00000060 com.example.function060 (Source060.java:160) - 0x00000061 com.example.function061 (Source061.java:161) - 0x00000062 com.example.function062 (Source062.java:162) - 0x00000063 com.example.function063 (Source063.java:163) - 0x00000064 com.example.function064 (Source064.java:164) - 0x00000065 com.example.function065 (Source065.java:165) - 0x00000066 com.example.function066 (Source066.java:166) - 0x00000067 com.example.function067 (Source067.java:167) - 0x00000068 com.example.function068 (Source068.java:168) - 0x00000069 com.example.function069 (Source069.java:169) - 0x0000006a com.example.function06a (Source06a.java:16) - 0x0000006b com.example.function06b (Source06b.java:16) - 0x0000006c com.example.function06c (Source06c.java:16) - 0x0000006d com.example.function06d (Source06d.java:16) - 0x0000006e com.example.function06e (Source06e.java:16) - 0x0000006f com.example.function06f (Source06f.java:16) - 0x00000070 com.example.function070 (Source070.java:170) - 0x00000071 com.example.function071 (Source071.java:171) - 0x00000072 com.example.function072 (Source072.java:172) - 0x00000073 com.example.function073 (Source073.java:173) - 0x00000074 com.example.function074 (Source074.java:174) - 0x00000075 com.example.function075 (Source075.java:175) - 0x00000076 com.example.function076 (Source076.java:176) - 0x00000077 com.example.function077 (Source077.java:177) - 0x00000078 com.example.function078 (Source078.java:178) - 0x00000079 com.example.function079 (Source079.java:179) - 0x0000007a com.example.function07a (Source07a.java:17) - 0x0000007b com.example.function07b (Source07b.java:17) - 0x0000007d com.example.function07d (Source07d.java:17) - 0x00000081 com.example.function081 (Source081.java:181) - 0x00000082 com.example.function082 (Source082.java:182) - 0x00000083 com.example.function083 (Source083.java:183) - 0x00000084 com.example.function084 (Source084.java:184) - 0x00000085 com.example.function085 (Source085.java:185) - 0x00000086 com.example.function086 (Source086.java:186) - 0x00000087 com.example.function087 (Source087.java:187) - 0x00000088 com.example.function088 (Source088.java:188) - 0x00000089 com.example.function089 (Source089.java:189) - 0x0000008a com.example.function08a (Source08a.java:18) - 0x0000008b com.example.function08b (Source08b.java:18) - 0x0000008c com.example.function08c (Source08c.java:18) - 0x0000008d com.example.function08d (Source08d.java:18) - 0x0000008e com.example.function08e (Source08e.java:18) - 0x0000008f com.example.function08f (Source08f.java:18) - 0x00000090 com.example.function090 (Source090.java:190) - 0x00000091 com.example.function091 (Source091.java:191) - 0x00000092 com.example.function092 (Source092.java:192) - 0x00000093 com.example.function093 (Source093.java:193) - 0x00000094 com.example.function094 (Source094.java:194) - 0x00000095 com.example.function095 (Source095.java:195) - 0x00000096 com.example.function096 (Source096.java:196) - 0x00000097 com.example.function097 (Source097.java:197) diff --git a/src/cmd/vendor/github.com/google/pprof/profile/testdata/java.heap.string b/src/cmd/vendor/github.com/google/pprof/profile/testdata/java.heap.string deleted file mode 100644 index 261bee13a6df8c..00000000000000 --- a/src/cmd/vendor/github.com/google/pprof/profile/testdata/java.heap.string +++ /dev/null @@ -1,139 +0,0 @@ -PeriodType: -Period: 0 -Samples: -inuse_objects/count inuse_space/bytes - 74 527819: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 27 32 33 21 22 23 24 25 31 27 32 33 21 22 23 24 25 34 31 27 32 33 21 22 23 24 - bytes:[7048] - 8941 4720968: 35 36 37 38 - bytes:[528] - 596 524728: 39 40 41 42 43 44 45 15 46 47 48 49 50 51 15 52 53 54 55 56 57 54 58 54 59 60 61 62 63 64 65 66 - bytes:[880] - 936 524568: 39 40 41 42 43 44 45 15 46 47 48 49 50 51 15 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 76 77 - bytes:[560] - 993 524552: 91 92 93 94 95 96 15 97 15 98 57 54 58 54 59 60 61 62 63 64 65 66 - bytes:[528] - 1192 524508: 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 - bytes:[440] - 54615 2621560: 119 - bytes:[48] -Locations - 1: 0x0 com.example.function003 Source003.java:103 s=0 - 2: 0x0 com.example.function004 Source004.java:104 s=0 - 3: 0x0 com.example.function005 Source005.java:105 s=0 - 4: 0x0 com.example.function006 Source006.java:106 s=0 - 5: 0x0 com.example.function007 Source007.java:107 s=0 - 6: 0x0 com.example.function008 Source008.java:108 s=0 - 7: 0x0 com.example.function009 Source009.java:109 s=0 - 8: 0x0 com.example.function00a Source00a.java:10 s=0 - 9: 0x0 com.example.function00b Source00b.java:10 s=0 - 10: 0x0 com.example.function00c Source00c.java:10 s=0 - 11: 0x0 com.example.function00d Source00d.java:10 s=0 - 12: 0x0 com.example.function00e Source00e.java:10 s=0 - 13: 0x0 com.example.function00f Source00f.java:10 s=0 - 14: 0x0 com.example.function010 Source010.java:110 s=0 - 15: 0x0 com.example.function011 Source011.java:111 s=0 - 16: 0x0 com.example.function018 Source018.java:118 s=0 - 17: 0x0 com.example.function019 Source019.java:119 s=0 - 18: 0x0 com.example.function01a Source01a.java:11 s=0 - 19: 0x0 com.example.function01b Source01b.java:11 s=0 - 20: 0x0 com.example.function01c Source01c.java:11 s=0 - 21: 0x0 com.example.function01d Source01d.java:11 s=0 - 22: 0x0 com.example.function01e Source01e.java:11 s=0 - 23: 0x0 com.example.function01f Source01f.java:11 s=0 - 24: 0x0 com.example.function020 Source020.java:120 s=0 - 25: 0x0 com.example.function021 Source021.java:121 s=0 - 26: 0x0 com.example.function022 Source022.java:122 s=0 - 27: 0x0 com.example.function023 Source023.java:123 s=0 - 28: 0x0 com.example.function024 Source024.java:124 s=0 - 29: 0x0 com.example.function025 Source025.java:125 s=0 - 30: 0x0 com.example.function026 Source026.java:126 s=0 - 31: 0x0 com.example.function027 Source027.java:127 s=0 - 32: 0x0 com.example.function028 Source028.java:128 s=0 - 33: 0x0 com.example.function029 Source029.java:129 s=0 - 34: 0x0 com.example.function02a Source02a.java:12 s=0 - 35: 0x0 com.example.function02b Source02b.java:12 s=0 - 36: 0x0 com.example.function02c Source02c.java:12 s=0 - 37: 0x0 com.example.function02d Source02d.java:12 s=0 - 38: 0x0 com.example.function02e Source02e.java:12 s=0 - 39: 0x0 com.example.function035 Source035.java:135 s=0 - 40: 0x0 com.example.function036 Source036.java:136 s=0 - 41: 0x0 com.example.function037 Source037.java:137 s=0 - 42: 0x0 com.example.function038 Source038.java:138 s=0 - 43: 0x0 com.example.function039 Source039.java:139 s=0 - 44: 0x0 com.example.function03a Source03a.java:13 s=0 - 45: 0x0 com.example.function03b Source03b.java:13 s=0 - 46: 0x0 com.example.function03d Source03d.java:13 s=0 - 47: 0x0 com.example.function03e Source03e.java:13 s=0 - 48: 0x0 com.example.function03f Source03f.java:13 s=0 - 49: 0x0 com.example.function040 Source040.java:140 s=0 - 50: 0x0 com.example.function041 Source041.java:141 s=0 - 51: 0x0 com.example.function042 Source042.java:142 s=0 - 52: 0x0 com.example.function049 Source049.java:149 s=0 - 53: 0x0 com.example.function04a Source04a.java:14 s=0 - 54: 0x0 com.example.function04b Source04b.java:14 s=0 - 55: 0x0 com.example.function04c Source04c.java:14 s=0 - 56: 0x0 com.example.function04d Source04d.java:14 s=0 - 57: 0x0 com.example.function04e Source04e.java:14 s=0 - 58: 0x0 com.example.function04f Source04f.java:14 s=0 - 59: 0x0 com.example.function050 Source050.java:150 s=0 - 60: 0x0 com.example.function051 Source051.java:151 s=0 - 61: 0x0 com.example.function052 Source052.java:152 s=0 - 62: 0x0 com.example.function053 Source053.java:153 s=0 - 63: 0x0 com.example.function054 Source054.java:154 s=0 - 64: 0x0 com.example.function055 Source055.java:155 s=0 - 65: 0x0 com.example.function056 Source056.java:156 s=0 - 66: 0x0 com.example.function057 Source057.java:157 s=0 - 67: 0x0 com.example.function05e Source05e.java:15 s=0 - 68: 0x0 com.example.function05f Source05f.java:15 s=0 - 69: 0x0 com.example.function060 Source060.java:160 s=0 - 70: 0x0 com.example.function061 Source061.java:161 s=0 - 71: 0x0 com.example.function062 Source062.java:162 s=0 - 72: 0x0 com.example.function063 Source063.java:163 s=0 - 73: 0x0 com.example.function064 Source064.java:164 s=0 - 74: 0x0 com.example.function065 Source065.java:165 s=0 - 75: 0x0 com.example.function066 Source066.java:166 s=0 - 76: 0x0 com.example.function067 Source067.java:167 s=0 - 77: 0x0 com.example.function068 Source068.java:168 s=0 - 78: 0x0 com.example.function069 Source069.java:169 s=0 - 79: 0x0 com.example.function06a Source06a.java:16 s=0 - 80: 0x0 com.example.function06b Source06b.java:16 s=0 - 81: 0x0 com.example.function06c Source06c.java:16 s=0 - 82: 0x0 com.example.function06d Source06d.java:16 s=0 - 83: 0x0 com.example.function06e Source06e.java:16 s=0 - 84: 0x0 com.example.function06f Source06f.java:16 s=0 - 85: 0x0 com.example.function070 Source070.java:170 s=0 - 86: 0x0 com.example.function071 Source071.java:171 s=0 - 87: 0x0 com.example.function072 Source072.java:172 s=0 - 88: 0x0 com.example.function073 Source073.java:173 s=0 - 89: 0x0 com.example.function074 Source074.java:174 s=0 - 90: 0x0 com.example.function075 Source075.java:175 s=0 - 91: 0x0 com.example.function076 Source076.java:176 s=0 - 92: 0x0 com.example.function077 Source077.java:177 s=0 - 93: 0x0 com.example.function078 Source078.java:178 s=0 - 94: 0x0 com.example.function079 Source079.java:179 s=0 - 95: 0x0 com.example.function07a Source07a.java:17 s=0 - 96: 0x0 com.example.function07b Source07b.java:17 s=0 - 97: 0x0 com.example.function081 Source081.java:181 s=0 - 98: 0x0 com.example.function082 Source082.java:182 s=0 - 99: 0x0 com.example.function083 Source083.java:183 s=0 - 100: 0x0 com.example.function084 Source084.java:184 s=0 - 101: 0x0 com.example.function085 Source085.java:185 s=0 - 102: 0x0 com.example.function086 Source086.java:186 s=0 - 103: 0x0 com.example.function087 Source087.java:187 s=0 - 104: 0x0 com.example.function088 Source088.java:188 s=0 - 105: 0x0 com.example.function089 Source089.java:189 s=0 - 106: 0x0 com.example.function08a Source08a.java:18 s=0 - 107: 0x0 com.example.function08b Source08b.java:18 s=0 - 108: 0x0 com.example.function08c Source08c.java:18 s=0 - 109: 0x0 com.example.function08d Source08d.java:18 s=0 - 110: 0x0 com.example.function08e Source08e.java:18 s=0 - 111: 0x0 com.example.function08f Source08f.java:18 s=0 - 112: 0x0 com.example.function090 Source090.java:190 s=0 - 113: 0x0 com.example.function091 Source091.java:191 s=0 - 114: 0x0 com.example.function092 Source092.java:192 s=0 - 115: 0x0 com.example.function093 Source093.java:193 s=0 - 116: 0x0 com.example.function094 Source094.java:194 s=0 - 117: 0x0 com.example.function095 Source095.java:195 s=0 - 118: 0x0 com.example.function096 Source096.java:196 s=0 - 119: 0x0 com.example.function097 Source097.java:197 s=0 -Mappings diff --git a/src/cmd/vendor/github.com/ianlancetaylor/demangle/ast_test.go b/src/cmd/vendor/github.com/ianlancetaylor/demangle/ast_test.go deleted file mode 100644 index b55406169d0ae6..00000000000000 --- a/src/cmd/vendor/github.com/ianlancetaylor/demangle/ast_test.go +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2015 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. - -package demangle - -import ( - "fmt" - "testing" -) - -func TestASTToString(t *testing.T) { - var tests = []struct { - input AST - want string - formatted string - }{ - { - &Qualified{Scope: &Name{Name: "s"}, Name: &Name{Name: "C"}}, - "s::C", - `Qualified: - Scope: s - Name: C`, - }, - { - &Typed{Name: &Name{Name: "v"}, Type: &BuiltinType{"int"}}, - "int v", - `Typed: - Name: v - Type: BuiltinType: int`, - }, - } - - for i, test := range tests { - if got := ASTToString(test.input); got != test.want { - t.Errorf("ASTToString of test %d == %s, want %s", i, test.input, test.want) - } - if got := fmt.Sprintf("%#v", test.input); got != test.formatted { - t.Errorf("Formatted test %d == %s, want %s", i, got, test.formatted) - } - } -} diff --git a/src/cmd/vendor/github.com/ianlancetaylor/demangle/demangle_test.go b/src/cmd/vendor/github.com/ianlancetaylor/demangle/demangle_test.go deleted file mode 100644 index 30a326933e2096..00000000000000 --- a/src/cmd/vendor/github.com/ianlancetaylor/demangle/demangle_test.go +++ /dev/null @@ -1,420 +0,0 @@ -// Copyright 2015 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. - -package demangle - -import ( - "strconv" - "strings" - "testing" -) - -// Check test cases discovered after the code passed the tests in -// demangle-expected (which are tested by TestExpected). Some of this -// are cases where we differ from the standard demangler, some we are -// the same but we weren't initially. -func TestDemangler(t *testing.T) { - var tests = []struct { - input string - want string - wantNoParams string - wantNoTemplateParams string - wantMinimal string - }{ - { - "_ZNSaIcEC1ERKS_", - "std::allocator::allocator(std::allocator const&)", - "std::allocator::allocator", - "std::allocator::allocator(std::allocator const&)", - "std::allocator::allocator", - }, - { - "_ZN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEC1EP8_IO_FILESt13_Ios_Openmodem", - "__gnu_cxx::stdio_filebuf >::stdio_filebuf(_IO_FILE*, std::_Ios_Openmode, unsigned long)", - "__gnu_cxx::stdio_filebuf >::stdio_filebuf", - "__gnu_cxx::stdio_filebuf::stdio_filebuf(_IO_FILE*, std::_Ios_Openmode, unsigned long)", - "__gnu_cxx::stdio_filebuf::stdio_filebuf", - }, - { - "_ZN1n1CcvNS_1DIT_EEI1EEEv", - "n::C::operator n::D()", - "n::C::operator n::D", - "n::C::operator n::D()", - "n::C::operator n::D", - }, - { - "_Z1CIvPN1D1E1FIdJEEEdEPN1GILb0ET_T0_T1_E1HEPFS6_S7_S8_EN1H1I1JIS7_E1KENSG_IS8_E1KE", - "G*, double>::H* C*, double>(void (*)(D::E::F*, double), H::I::J*>::K, H::I::J::K)", - "C*, double>", - "G::H* C(void (*)(D::E::F*, double), H::I::J::K, H::I::J::K)", - "C", - }, - { - "_ZZNK1CI1DIcSt1EIcESaIcEEJEE1FEvE1F", - "C, std::allocator > >::F() const::F", - "C, std::allocator > >::F() const::F", - "C::F() const::F", - "C::F() const::F", - }, - { - "_ZN1CI1DSt1EIK1FN1G1HEEE1I1JIJRKS6_EEEvDpOT_", - "void C >::I::J const&>(std::E const&)", - "C >::I::J const&>", - "void C::I::J(std::E const&)", - "C::I::J", - }, - { - "_ZN1C1D1E1FIJEEEvi1GDpT_", - "void C::D::E::F<>(int, G)", - "C::D::E::F<>", - "void C::D::E::F(int, G)", - "C::D::E::F", - }, - { - "_ZN1CILj50ELb1EE1DEv", - "C<50u, true>::D()", - "C<50u, true>::D", - "C::D()", - "C::D", - }, - { - "_ZN1CUt_C2Ev", - "C::{unnamed type#1}::{unnamed type#1}()", - "C::{unnamed type#1}::{unnamed type#1}", - "C::{unnamed type#1}::{unnamed type#1}()", - "C::{unnamed type#1}::{unnamed type#1}", - }, - { - "_ZN1C12_GLOBAL__N_11DINS_1EEEEN1F1GIDTadcldtcvT__E1HEEEERKS5_NS_1I1JE", - "F::G C::(anonymous namespace)::D(C::E const&, C::I::J)", - "C::(anonymous namespace)::D", - "F::G C::(anonymous namespace)::D(C::E const&, C::I::J)", - "C::(anonymous namespace)::D", - }, - { - "_ZN1CI1DE1EIJiRiRPKcRA1_S4_S8_bS6_S3_RjRPKN1F1GERPKN1H1IEEEEvDpOT_", - "void C::E(int&&, int&, char const*&, char const (&) [1], char const (&) [1], bool&&, char const*&, int&, unsigned int&, F::G const*&, H::I const*&)", - "C::E", - "void C::E(int&&, int&, char const*&, char const (&) [1], char const (&) [1], bool&&, char const*&, int&, unsigned int&, F::G const*&, H::I const*&)", - "C::E", - }, - { - "_ZN1C12_GLOBAL__N_11DIFbPKNS_1EEEEEvPNS_1FERKT_", - "void C::(anonymous namespace)::D(C::F*, bool (&)(C::E const*) const)", - "C::(anonymous namespace)::D", - "void C::(anonymous namespace)::D(C::F*, bool (&)(C::E const*) const)", - "C::(anonymous namespace)::D", - }, - { - "_ZN1C1D1EIJRFviSt1FIFvRKN1G1H1IEEERKSt6vectorINS_1JESaISB_EEERiS9_EvEENS0_1K1LIJDpNSt1MIT_E1NEEEEDpOSM_", - "C::D::K::L, std::vector > const&)>::N, std::M::N, std::M >::N> C::D::E, std::vector > const&), int&, std::F, void>(void (&)(int, std::F, std::vector > const&), int&, std::F&&)", - "C::D::E, std::vector > const&), int&, std::F, void>", - "C::D::K::L C::D::E(void (&)(int, std::F, std::vector const&), int&, std::F&&)", - "C::D::E", - }, - { - "_ZN1C1D1E1FcvNS_1GIT_EEI1HEEv", - "C::D::E::F::operator C::G()", - "C::D::E::F::operator C::G", - "C::D::E::F::operator C::G()", - "C::D::E::F::operator C::G", - }, - { - "_ZN9__gnu_cxx17__normal_iteratorIPK1EIN1F1G1HEESt6vectorIS5_SaIS5_EEEC2IPS5_EERKNS0_IT_NS_11__enable_ifIXsr3std10__are_sameISE_SD_EE7__valueESA_E1IEEE", - "__gnu_cxx::__normal_iterator const*, std::vector, std::allocator > > >::__normal_iterator*>(__gnu_cxx::__normal_iterator*, __gnu_cxx::__enable_if*, E*>::__value, std::vector, std::allocator > > >::I> const&)", - "__gnu_cxx::__normal_iterator const*, std::vector, std::allocator > > >::__normal_iterator*>", - "__gnu_cxx::__normal_iterator::__normal_iterator(__gnu_cxx::__normal_iterator const&)", - "__gnu_cxx::__normal_iterator::__normal_iterator", - }, - { - "_ZNKSt1CIM1DKFjvEEclIJEvEEjPKS0_DpOT_", - "unsigned int std::C::operator()(D const*) const", - "std::C::operator()", - "unsigned int std::C::operator()(D const*) const", - "std::C::operator()", - }, - { - "_ZNSt10_HashtableI12basic_stringIcSt11char_traitsIcESaIcEESt4pairIKS4_N1C1D1EEESaISA_ENSt8__detail10_Select1stESt8equal_toIS4_ESt4hashIS4_ENSC_18_Mod_range_hashingENSC_20_Default_ranged_hashENSC_20_Prime_rehash_policyENSC_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_assignIZNSN_C1ERKSN_EUlPKNSC_10_Hash_nodeISA_Lb1EEEE_EEvSQ_RKT_", - "void std::_Hashtable, std::allocator >, std::pair, std::allocator > const, C::D::E>, std::allocator, std::allocator > const, C::D::E> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign, std::allocator >, std::pair, std::allocator > const, C::D::E>, std::allocator, std::allocator > const, C::D::E> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::pair, std::allocator > const, C::D::E>, std::allocator, std::allocator > const, C::D::E> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&)::{lambda(std::__detail::_Hash_node, std::allocator > const, C::D::E>, true> const*)#1}>(std::_Hashtable, std::allocator >, std::pair, std::allocator > const, C::D::E>, std::allocator, std::allocator > const, C::D::E> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&, std::_Hashtable, std::allocator >, std::pair, std::allocator > const, C::D::E>, std::allocator, std::allocator > const, C::D::E> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::pair, std::allocator > const, C::D::E>, std::allocator, std::allocator > const, C::D::E> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&)::{lambda(std::__detail::_Hash_node, std::allocator > const, C::D::E>, true> const*)#1} const&)", - "std::_Hashtable, std::allocator >, std::pair, std::allocator > const, C::D::E>, std::allocator, std::allocator > const, C::D::E> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign, std::allocator >, std::pair, std::allocator > const, C::D::E>, std::allocator, std::allocator > const, C::D::E> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::pair, std::allocator > const, C::D::E>, std::allocator, std::allocator > const, C::D::E> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&)::{lambda(std::__detail::_Hash_node, std::allocator > const, C::D::E>, true> const*)#1}>", - "void std::_Hashtable::_M_assign(std::_Hashtable const&, std::_Hashtable::_Hashtable(std::_Hashtable const&)::{lambda(std::__detail::_Hash_node const*)#1} const&)", - "std::_Hashtable::_M_assign", - }, - { - "_ZSt3maxIVdERKT_S3_S3_", - "double const volatile& std::max(double const volatile&, double const volatile&)", - "std::max", - "double const volatile& std::max(double const volatile&, double const volatile&)", - "std::max", - }, - { - "_ZZN1C1D1E1F1G1HEvENUlvE_C2EOS4_", - "C::D::E::F::G::H()::{lambda()#1}::{lambda()#1}({lambda()#1}&&)", - "C::D::E::F::G::H()::{lambda()#1}::{lambda()#1}", - "C::D::E::F::G::H()::{lambda()#1}::{lambda()#1}({lambda()#1}&&)", - "C::D::E::F::G::H()::{lambda()#1}::{lambda()#1}", - }, - { - "_ZThn8_NK1C1D1EEv", - "non-virtual thunk to C::D::E() const", - "non-virtual thunk to C::D::E() const", - "non-virtual thunk to C::D::E() const", - "non-virtual thunk to C::D::E() const", - }, - { - "_ZTv0_n96_NK1C1D1E1FEv", - "virtual thunk to C::D::E::F() const", - "virtual thunk to C::D::E::F() const", - "virtual thunk to C::D::E::F() const", - "virtual thunk to C::D::E::F() const", - }, - { - "_ZTCSt9strstream16_So", - "construction vtable for std::ostream-in-std::strstream", - "construction vtable for std::ostream-in-std::strstream", - "construction vtable for std::ostream-in-std::strstream", - "construction vtable for std::ostream-in-std::strstream", - }, - { - "_ZGVZZN1C1D1EEvENK3$_0clEvE1F", - "guard variable for C::D::E()::$_0::operator()() const::F", - "guard variable for C::D::E()::$_0::operator()() const::F", - "guard variable for C::D::E()::$_0::operator()() const::F", - "guard variable for C::D::E()::$_0::operator()() const::F", - }, - { - "_Z1fICiEvT_", - "void f(int _Complex)", - "f", - "void f(int _Complex)", - "f", - }, - { - "_GLOBAL__D__Z2fnv", - "global destructors keyed to fn()", - "global destructors keyed to fn()", - "global destructors keyed to fn()", - "global destructors keyed to fn()", - }, - { - "_Z1fIXadL_Z1hvEEEvv", - "void f<&h>()", - "f<&h>", - "void f()", - "f", - }, - { - "_Z1CIP1DEiRK1EPT_N1F1GIS5_Xaasr1HIS5_E1IntsrSA_1JEE1KE", - "int C(E const&, D**, F::G::I&&(!H::J)>::K)", - "C", - "int C(E const&, D**, F::G::K)", - "C", - }, - { - "_ZNO1A1B1C1DIZN1E1F1GINS3_1HE1IEEvMNS3_1JEFvP1LPKT_PT0_P1KESD_SA_SF_SH_EUlvE_Lb0EEcvPSB_ISG_vvEEv", - "A::B::C::D(void (E::J::*)(L*, E::H const*, I*, K*), E::H const*, L*, I*, K*)::{lambda()#1}, false>::operator K*() &&", - "A::B::C::D(void (E::J::*)(L*, E::H const*, I*, K*), E::H const*, L*, I*, K*)::{lambda()#1}, false>::operator K*", - "A::B::C::D::operator K*() &&", - "A::B::C::D::operator K*", - }, - { - "_ZNSt1AIFSt1BImjEjEZN1C1DI1EEENSt1FIXeqsr1G1H1IIDTadsrT_onclEEE1JLi2EEvE1KEPKcSC_OS7_EUljE_E1KERKSt1Lj", - "std::A (unsigned int), std::F::J==(2), void>::K C::D(char const*, G::H::I, G&&)::{lambda(unsigned int)#1}>::K(std::L const&, unsigned int)", - "std::A (unsigned int), std::F::J==(2), void>::K C::D(char const*, G::H::I, G&&)::{lambda(unsigned int)#1}>::K", - "std::A::K(std::L const&, unsigned int)", - "std::A::K", - }, - { - "_ZNSt1AIFSt1BImjEjEZN1L1CIUljE_EENSt1DIXeqsrN1E1F1GIDTadsrT_clEEE1HLi2EEvE1IEPKcSG_OSA_EUljE_E1JERKSt1Kj", - "std::A (unsigned int), std::D::H==(2), void>::I L::C<{lambda(unsigned int)#1}>(char const*, char const*, {lambda(unsigned int)#1}&&)::{lambda(unsigned int)#1}>::J(std::K const&, unsigned int)", - "std::A (unsigned int), std::D::H==(2), void>::I L::C<{lambda(unsigned int)#1}>(char const*, char const*, {lambda(unsigned int)#1}&&)::{lambda(unsigned int)#1}>::J", - "std::A::J(std::K const&, unsigned int)", - "std::A::J", - }, - { - "_ZNSt1A1BIiNS_1CIiEEE1DIPiEENS_1EIXaasr1FIT_EE1Gsr1HIiNS_1IIS7_E1JEEE1KEvE1LES7_S7_", - "std::A::E::G&&H::J>::K, void>::L std::A::B >::D(F, F)", - "std::A::B >::D", - "std::A::E::L std::A::B::D(F, F)", - "std::A::B::D", - }, - { - "_ZNO1A1B1C1DIJOZZN1E1F1GINS4_1HINS4_1IINS4_1JEEEEEJNS4_1KEEEEN1L1MINS4_1OINT_1PEEEEERKSt6vectorIN1Q1RESaISL_EERKN3gtl1S1TIN1U1VEEERKNS4_1W1XERKNS4_1YERKNSQ_1ZINS4_1aEEEPSt13unordered_mapISL_NSK_9UniquePtrINS4_1bINS0_1cIJS9_NS7_INST_1dEEEEEENS4_1fEEEEENSC_1g1hIvEESt8equal_toISL_ESaISt4pairIKSL_S1J_EEEDpRKT0_ENKUlSL_mmS1G_E_clESL_mmS1G_EUlS9_E_OZZNS5_ISA_JSB_EEESI_SP_SX_S11_S14_S19_S1U_S1Y_ENKS1Z_clESL_mmS1G_EUlS1F_E0_EEclIJRS9_EEEDTclcl1iIXsrNS1_1jISt5tupleIJNS1_1kIS21_EENS29_IS23_EEEEJDpT_EEE1lEEcl1mIS2C_EEEspcl1mIS2D_EEEEDpOS2D_", - "decltype (((i)#1}>, E::F::I& >::P> > E::F::G >, E::F::K>(std::vector > const&, gtl::S::T const&, E::F::W::X const&, E::F::Y const&, gtl::Z const&, std::unordered_map, E::F::I >, E::F::f> >, L::g::h, std::equal_to, std::allocator, E::F::I >, E::F::f> > > > >*, E::F::K const&)::{lambda(Q::R, unsigned long, unsigned long, A::B::c, E::F::I >)#1}::operator()(Q::R, unsigned long, unsigned long, A::B::c, E::F::I >) const::{lambda(E::F::I)#1}&&> >, E::F::I&>::l>)((m)()))(((m)#1}> >)())...)) A::B::C::D >::P> > E::F::G >, E::F::K>(std::vector > const&, gtl::S::T const&, E::F::W::X const&, E::F::Y const&, gtl::Z const&, std::unordered_map, E::F::I >, E::F::f> >, L::g::h, std::equal_to, std::allocator, E::F::I >, E::F::f> > > > >*, E::F::K const&)::{lambda(Q::R, unsigned long, unsigned long, A::B::c, E::F::I >)#1}::operator()(Q::R, unsigned long, unsigned long, A::B::c, E::F::I >) const::{lambda(E::F::I)#1}&&, L::M >::P> > E::F::G >, E::F::K>(std::vector > const&, gtl::S::T const&, E::F::W::X const&, E::F::Y const&, gtl::Z const&, std::unordered_map, E::F::I >, E::F::f> >, L::g::h, std::equal_to, std::allocator, E::F::I >, E::F::f> > > > >*, E::F::K const&)::{lambda(Q::R, unsigned long, unsigned long, A::B::c, E::F::I >)#1}::operator()(Q::R, unsigned long, unsigned long, A::B::c, E::F::I >) const::{lambda(E::F::I)#2}&&>::operator()&>((A::B::C::k<{lambda(E::F::I)#1}>&&)...) &&", - "A::B::C::D >::P> > E::F::G >, E::F::K>(std::vector > const&, gtl::S::T const&, E::F::W::X const&, E::F::Y const&, gtl::Z const&, std::unordered_map, E::F::I >, E::F::f> >, L::g::h, std::equal_to, std::allocator, E::F::I >, E::F::f> > > > >*, E::F::K const&)::{lambda(Q::R, unsigned long, unsigned long, A::B::c, E::F::I >)#1}::operator()(Q::R, unsigned long, unsigned long, A::B::c, E::F::I >) const::{lambda(E::F::I)#1}&&, L::M >::P> > E::F::G >, E::F::K>(std::vector > const&, gtl::S::T const&, E::F::W::X const&, E::F::Y const&, gtl::Z const&, std::unordered_map, E::F::I >, E::F::f> >, L::g::h, std::equal_to, std::allocator, E::F::I >, E::F::f> > > > >*, E::F::K const&)::{lambda(Q::R, unsigned long, unsigned long, A::B::c, E::F::I >)#1}::operator()(Q::R, unsigned long, unsigned long, A::B::c, E::F::I >) const::{lambda(E::F::I)#2}&&>::operator()&>", - "decltype (((i)((m)()))(((m)())...)) A::B::C::D::operator()((A::B::C::k&&)...) &&", - "A::B::C::D::operator()", - }, - { - "_ZcvAna_eE_e", - "operator long double [new long double]", - "operator long double [new long double]", - "operator long double [new long double]", - "operator long double [new long double]", - }, - { - "_ZZ1irFeeEES_S_", - "i(() restrict)::long double (long double)(() restrict) restrict", - "i(long double (long double) restrict)::long double (long double)", - "i(() restrict)::long double (long double)(() restrict) restrict", - "i(long double (long double) restrict)::long double (long double)", - }, - { - "_Z1_VFaeEZS_S_ES_", - "_((() volatile) volatile, signed char (long double)(() volatile) volatile::(() volatile) volatile)", - "_", - "_((() volatile) volatile, signed char (long double)(() volatile) volatile::(() volatile) volatile)", - "_", - }, - { - "_ZdsrFliEZS_GS_EcvS_", - "operator.*(( ( _Imaginary)( _Imaginary) restrict) restrict, long (int)( ( _Imaginary)( _Imaginary) restrict) restrict::operator ( ( _Imaginary)( _Imaginary) restrict) restrict)", - "operator.*", - "operator.*(( ( _Imaginary)( _Imaginary) restrict) restrict, long (int)( ( _Imaginary)( _Imaginary) restrict) restrict::operator ( ( _Imaginary)( _Imaginary) restrict) restrict)", - "operator.*", - }, - } - - for _, test := range tests { - if got, err := ToString(test.input); err != nil { - t.Errorf("demangling %s: unexpected error %v", test.input, err) - } else if got != test.want { - t.Errorf("demangling %s: got %s, want %s", test.input, got, test.want) - } - - if got, err := ToString(test.input, NoParams); err != nil { - t.Errorf("demangling NoParams %s: unexpected error %v", test.input, err) - } else if got != test.wantNoParams { - t.Errorf("demangling NoParams %s: got %s, want %s", test.input, got, test.wantNoParams) - } - - if got, err := ToString(test.input, NoTemplateParams); err != nil { - t.Errorf("demangling NoTemplateParams %s: unexpected error %v", test.input, err) - } else if got != test.wantNoTemplateParams { - t.Errorf("demangling NoTemplateParams %s: got %s, want %s", test.input, got, test.wantNoTemplateParams) - } - - if got, err := ToString(test.input, NoParams, NoTemplateParams); err != nil { - t.Errorf("demangling NoTemplateParams %s: unexpected error %v", test.input, err) - } else if got != test.wantMinimal { - t.Errorf("demangling Minimal %s: got %s, want %s", test.input, got, test.wantMinimal) - } - - // Test Filter also. - if got := Filter(test.input); got != test.want { - t.Errorf("Filter(%s) == %s, want %s", test.input, got, test.want) - } - } -} - -// Test for some failure cases. -func TestFailure(t *testing.T) { - var tests = []struct { - input string - error string - off int - }{ - { - "_Z1FE", - "unparsed characters at end of mangled name", - 4, - }, - { - "_Z1FQ", - "unrecognized type code", - 4, - }, - { - "_ZZSaIL0D", - "expected positive number", - 8, - }, - { - "_ZNKE", - "expected prefix", - 4, - }, - { - "_ZcvT_", - "not in scope of template", - 6, - }, - { - "_Z1AIXsZ1_EE", - "missing argument pack", - 8, - }, - { - "_Z1gIEDTclspilE", - "expected expression", - 15, - }, - { - "_ZNcvZN1ET_IEE", - "after local name", - 14, - }, - { - "_Zv00", - "expected positive number", - 5, - }, - { - "_ZcvT_B2T0", - "template parameter not in scope", - 10, - }, - { - "_ZStcvT_", - "template parameter not in scope", - 8, - }, - { - "_Z1aIeEU1RT_ZcvS1_", - "expected E after local name", - 18, - }, - { - "_ZNcvT_oRIEE", - "template index out of range", - 11, - }, - { - "_ZNcvT_D0IIEE", - "expected prefix", - 13, - }, - { - "_ZcvT_IAoncvT__eE", - "template parameter not in scope", - 17, - }, - } - - for _, test := range tests { - got, err := ToString(test.input) - if err == nil { - t.Errorf("unexpected success for %s: %s", test.input, got) - } else if !strings.Contains(err.Error(), test.error) { - t.Errorf("unexpected error for %s: %v", test.input, err) - } else { - s := err.Error() - i := strings.LastIndex(s, " at ") - if i < 0 { - t.Errorf("missing offset in error for %s: %v", test.input, err) - } else { - off, oerr := strconv.Atoi(s[i+4:]) - if oerr != nil { - t.Errorf("can't parse offset (%s) for %s: %v", s[i+4:], test.input, err) - } else if off != test.off { - t.Errorf("unexpected offset for %s: got %d, want %d", test.input, off, test.off) - } - } - } - - if got := Filter(test.input); got != test.input { - t.Errorf("Filter(%s) == %s, want %s", test.input, got, test.input) - } - } -} diff --git a/src/cmd/vendor/github.com/ianlancetaylor/demangle/expected_test.go b/src/cmd/vendor/github.com/ianlancetaylor/demangle/expected_test.go deleted file mode 100644 index 1dff860ea68e40..00000000000000 --- a/src/cmd/vendor/github.com/ianlancetaylor/demangle/expected_test.go +++ /dev/null @@ -1,183 +0,0 @@ -// Copyright 2015 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. - -package demangle - -import ( - "bufio" - "flag" - "fmt" - "os" - "strings" - "testing" -) - -var verbose = flag.Bool("verbose", false, "print each demangle-expected symbol") - -const filename = "testdata/demangle-expected" - -// A list of exceptions from demangle-expected that we do not handle -// the same as the standard demangler. We keep a list of exceptions -// so that we can use an exact copy of the file. These exceptions are -// all based on different handling of a substitution that refers to a -// template parameter. The standard demangler seems to have a bug in -// which template it uses when a reference or rvalue-reference refers -// to a substitution that resolves to a template parameter. -var exceptions = map[string]bool{ - "_ZSt7forwardIRN1x14refobjiteratorINS0_3refINS0_4mime30multipart_section_processorObjIZ15get_body_parserIZZN14mime_processor21make_section_iteratorERKNS2_INS3_10sectionObjENS0_10ptrrefBaseEEEbENKUlvE_clEvEUlSB_bE_ZZNS6_21make_section_iteratorESB_bENKSC_clEvEUlSB_E0_ENS1_INS2_INS0_20outputrefiteratorObjIiEES8_EEEERKSsSB_OT_OT0_EUlmE_NS3_32make_multipart_default_discarderISP_EEEES8_EEEEEOT_RNSt16remove_referenceISW_E4typeE": true, - "_ZN3mdr16in_cached_threadIRZNK4cudr6GPUSet17parallel_for_eachIZN5tns3d20shape_representation7compute7GPUImpl7executeERKNS_1AINS_7ptr_refIKjEELl3ELl3ENS_8c_strideILl1ELl0EEEEERKNS8_INS9_IjEELl4ELl1ESD_EEEUliRKNS1_7ContextERNS7_5StateEE_JSt6vectorISO_SaISO_EEEEEvOT_DpRT0_EUlSP_E_JSt17reference_wrapperISO_EEEENS_12ScopedFutureIDTclfp_spcl7forwardISW_Efp0_EEEEESV_DpOSW_": true, - "_ZNSt9_Any_data9_M_accessIPZN3sel8Selector6SetObjI3FooJPKcMS4_FviEEEEvRT_DpT0_EUlvE_EESA_v": true, - "_ZNSt9_Any_data9_M_accessIPZN13ThreadManager7newTaskIRSt5_BindIFSt7_Mem_fnIM5DiaryFivEEPS5_EEIEEESt6futureINSt9result_ofIFT_DpT0_EE4typeEEOSF_DpOSG_EUlvE_EERSF_v": true, - "_ZNSt9_Any_data9_M_accessIPZN6cereal18polymorphic_detail15getInputBindingINS1_16JSONInputArchiveEEENS1_6detail15InputBindingMapIT_E11SerializersERS7_jEUlPvRSt10unique_ptrIvNS5_12EmptyDeleterIvEEEE0_EESA_v": true, - "_ZNSt9_Any_data9_M_accessIPZ4postISt8functionIFvvEEEvOT_EUlvE_EERS5_v": true, - "_ZNSt9_Any_data9_M_accessIPZN13ThreadManager10futureTaskISt5_BindIFSt7_Mem_fnIM6RunnerFvvEEPS5_EEEEvOT_EUlvE_EERSC_v": true, -} - -// For simplicity, this test reads an exact copy of -// libiberty/testsuite/demangle-expected from GCC. See that file for -// the syntax. We ignore all tests that are not --format=gnu-v3 or -// --format=auto with a string starting with _Z. -func TestExpected(t *testing.T) { - f, err := os.Open(filename) - if err != nil { - t.Fatal(err) - } - scanner := bufio.NewScanner(f) - lineno := 1 - for { - format, got := getOptLine(t, scanner, &lineno) - if !got { - break - } - report := lineno - input := getLine(t, scanner, &lineno) - expect := getLine(t, scanner, &lineno) - - testNoParams := false - skip := false - if len(format) > 0 && format[0] == '-' { - for _, arg := range strings.Fields(format) { - switch arg { - case "--format=gnu-v3": - case "--format=auto": - if !strings.HasPrefix(input, "_Z") { - skip = true - } - case "--no-params": - testNoParams = true - case "--ret-postfix", "--ret-drop": - skip = true - case "--is-v3-ctor", "--is-v3-dtor": - skip = true - default: - if !strings.HasPrefix(arg, "--format=") { - t.Errorf("%s:%d: unrecognized argument %s", filename, report, arg) - } - skip = true - } - } - } - - // The libiberty testsuite passes DMGL_TYPES to - // demangle type names, but that doesn't seem useful - // and we don't support it. - if !strings.HasPrefix(input, "_Z") && !strings.HasPrefix(input, "_GLOBAL_") { - skip = true - } - - var expectNoParams string - if testNoParams { - expectNoParams = getLine(t, scanner, &lineno) - } - - if skip { - continue - } - - oneTest(t, report, input, expect, true) - if testNoParams { - oneTest(t, report, input, expectNoParams, false) - } - } - if err := scanner.Err(); err != nil { - t.Error(err) - } -} - -// oneTest tests one entry from demangle-expected. -func oneTest(t *testing.T, report int, input, expect string, params bool) { - if *verbose { - fmt.Println(input) - } - - exception := exceptions[input] - - var s string - var err error - if params { - s, err = ToString(input) - } else { - s, err = ToString(input, NoParams) - } - if err != nil { - if exception { - t.Logf("%s:%d: ignore expected difference: got %q, expected %q", filename, report, err, expect) - return - } - - if err != ErrNotMangledName { - if input == expect { - return - } - t.Errorf("%s:%d: %v", filename, report, err) - return - } - s = input - } - - if s != expect { - if exception { - t.Logf("%s:%d: ignore expected difference: got %q, expected %q", filename, report, s, expect) - } else { - var a AST - if params { - a, err = ToAST(input) - } else { - a, err = ToAST(input, NoParams) - } - if err != nil { - t.Logf("ToAST error: %v", err) - } else { - t.Logf("\n%#v", a) - } - t.Errorf("%s:%d: params: %t: got %q, expected %q", filename, report, params, s, expect) - } - } else if exception && params { - t.Errorf("%s:%d: unexpected success (input listed in exceptions)", filename, report) - } -} - -// getLine reads a line from demangle-expected. -func getLine(t *testing.T, scanner *bufio.Scanner, lineno *int) string { - s, got := getOptLine(t, scanner, lineno) - if !got { - t.Fatalf("%s:%d: unexpected EOF", filename, *lineno) - } - return s -} - -// getOptLine reads an optional line from demangle-expected, returning -// false at EOF. It skips comment lines and updates *lineno. -func getOptLine(t *testing.T, scanner *bufio.Scanner, lineno *int) (string, bool) { - for { - if !scanner.Scan() { - return "", false - } - *lineno++ - line := scanner.Text() - if !strings.HasPrefix(line, "#") { - return line, true - } - } -} diff --git a/src/cmd/vendor/github.com/ianlancetaylor/demangle/testdata/demangle-expected b/src/cmd/vendor/github.com/ianlancetaylor/demangle/testdata/demangle-expected deleted file mode 100644 index 015454b4554dc4..00000000000000 --- a/src/cmd/vendor/github.com/ianlancetaylor/demangle/testdata/demangle-expected +++ /dev/null @@ -1,4594 +0,0 @@ -# This file holds test cases for the demangler. -# Each test case looks like this: -# options -# input to be demangled -# expected output -# -# Supported options: -# --format= Sets the demangling style. -# --no-params There are two lines of expected output; the first -# is with DMGL_PARAMS, the second is without it. -# --is-v3-ctor Calls is_gnu_v3_mangled_ctor on input; expected -# output is an integer representing ctor_kind. -# --is-v3-dtor Likewise, but for dtors. -# --ret-postfix Passes the DMGL_RET_POSTFIX option -# -# For compatibility, just in case it matters, the options line may be -# empty, to mean --format=auto. If it doesn't start with --, then it -# may contain only a format name. -# -# A line starting with `#' is ignored. -# However, blank lines in this file are NOT ignored. -# ---format=gnu --no-params -AddAlignment__9ivTSolverUiP12ivInteractorP7ivTGlue -ivTSolver::AddAlignment(unsigned int, ivInteractor *, ivTGlue *) -ivTSolver::AddAlignment -# ---format=gnu --no-params -ArrowheadIntersects__9ArrowLineP9ArrowheadR6BoxObjP7Graphic -ArrowLine::ArrowheadIntersects(Arrowhead *, BoxObj &, Graphic *) -ArrowLine::ArrowheadIntersects -# ---format=gnu --no-params -ArrowheadIntersects__9ArrowLineP9ArrowheadO6BoxObjP7Graphic -ArrowLine::ArrowheadIntersects(Arrowhead *, BoxObj &&, Graphic *) -ArrowLine::ArrowheadIntersects -# ---format=gnu --no-params -AtEnd__13ivRubberGroup -ivRubberGroup::AtEnd(void) -ivRubberGroup::AtEnd -# ---format=gnu --no-params -BgFilter__9ivTSolverP12ivInteractor -ivTSolver::BgFilter(ivInteractor *) -ivTSolver::BgFilter -# ---format=gnu --no-params -Check__6UArrayi -UArray::Check(int) -UArray::Check -# ---format=gnu --no-params -CoreConstDecls__8TextCodeR7ostream -TextCode::CoreConstDecls(ostream &) -TextCode::CoreConstDecls -# ---format=gnu --no-params -CoreConstDecls__8TextCodeO7ostream -TextCode::CoreConstDecls(ostream &&) -TextCode::CoreConstDecls -# ---format=gnu --no-params -Detach__8StateVarP12StateVarView -StateVar::Detach(StateVarView *) -StateVar::Detach -# ---format=gnu --no-params -Done__9ComponentG8Iterator -Component::Done(Iterator) -Component::Done -# ---format=gnu --no-params -Effect__11RelateManipR7ivEvent -RelateManip::Effect(ivEvent &) -RelateManip::Effect -# ---format=gnu --no-params -Effect__11RelateManipO7ivEvent -RelateManip::Effect(ivEvent &&) -RelateManip::Effect -# ---format=gnu --no-params -FindFixed__FRP4CNetP4CNet -FindFixed(CNet *&, CNet *) -FindFixed -# ---format=gnu --no-params -FindFixed__FOP4CNetP4CNet -FindFixed(CNet *&&, CNet *) -FindFixed -# ---format=gnu --no-params -Fix48_abort__FR8twolongs -Fix48_abort(twolongs &) -Fix48_abort -# ---format=gnu --no-params -Fix48_abort__FO8twolongs -Fix48_abort(twolongs &&) -Fix48_abort -# ---format=gnu --no-params -GetBarInfo__15iv2_6_VScrollerP13ivPerspectiveRiT2 -iv2_6_VScroller::GetBarInfo(ivPerspective *, int &, int &) -iv2_6_VScroller::GetBarInfo -# ---format=gnu --no-params -GetBarInfo__15iv2_6_VScrollerP13ivPerspectiveOiT2 -iv2_6_VScroller::GetBarInfo(ivPerspective *, int &&, int &&) -iv2_6_VScroller::GetBarInfo -# ---format=gnu --no-params -GetBgColor__C9ivPainter -ivPainter::GetBgColor(void) const -ivPainter::GetBgColor -# ---format=gnu --no-params -InsertBody__15H_PullrightMenuii -H_PullrightMenu::InsertBody(int, int) -H_PullrightMenu::InsertBody -# ---format=gnu --no-params -InsertCharacter__9TextManipc -TextManip::InsertCharacter(char) -TextManip::InsertCharacter -# ---format=gnu --no-params -InsertToplevel__7ivWorldP12ivInteractorT1 -ivWorld::InsertToplevel(ivInteractor *, ivInteractor *) -ivWorld::InsertToplevel -# ---format=gnu --no-params -InsertToplevel__7ivWorldP12ivInteractorT1iiUi -ivWorld::InsertToplevel(ivInteractor *, ivInteractor *, int, int, unsigned int) -ivWorld::InsertToplevel -# ---format=gnu --no-params -IsAGroup__FP11GraphicViewP11GraphicComp -IsAGroup(GraphicView *, GraphicComp *) -IsAGroup -# ---format=gnu --no-params -IsA__10ButtonCodeUl -ButtonCode::IsA(unsigned long) -ButtonCode::IsA -# ---format=gnu --no-params -ReadName__FR7istreamPc -ReadName(istream &, char *) -ReadName -# ---format=gnu --no-params -Redraw__13StringBrowseriiii -StringBrowser::Redraw(int, int, int, int) -StringBrowser::Redraw -# ---format=gnu --no-params -Rotate__13ivTransformerf -ivTransformer::Rotate(float) -ivTransformer::Rotate -# ---format=gnu --no-params -Rotated__C13ivTransformerf -ivTransformer::Rotated(float) const -ivTransformer::Rotated -# ---format=gnu --no-params -Round__Ff -Round(float) -Round -# ---format=gnu --no-params -SetExport__16MemberSharedNameUi -MemberSharedName::SetExport(unsigned int) -MemberSharedName::SetExport -# ---format=gnu --no-params -Set__14ivControlState13ControlStatusUi -ivControlState::Set(ControlStatus, unsigned int) -ivControlState::Set -# ---format=gnu --no-params -Set__5DFacePcii -DFace::Set(char *, int, int) -DFace::Set -# ---format=gnu --no-params -VConvert__9ivTSolverP12ivInteractorRP8TElementT2 -ivTSolver::VConvert(ivInteractor *, TElement *&, TElement *&) -ivTSolver::VConvert -# ---format=gnu --no-params -VConvert__9ivTSolverP7ivTGlueRP8TElement -ivTSolver::VConvert(ivTGlue *, TElement *&) -ivTSolver::VConvert -# ---format=gnu --no-params -VOrder__9ivTSolverUiRP12ivInteractorT2 -ivTSolver::VOrder(unsigned int, ivInteractor *&, ivInteractor *&) -ivTSolver::VOrder -# ---format=gnu --no-params -_10PageButton$__both -PageButton::__both -PageButton::__both -# ---format=gnu --no-params -_3RNG$singleMantissa -RNG::singleMantissa -RNG::singleMantissa -# ---format=gnu --no-params -_5IComp$_release -IComp::_release -IComp::_release -# ---format=gnu --no-params -_$_10BitmapComp -BitmapComp::~BitmapComp(void) -BitmapComp::~BitmapComp -# ---format=gnu --no-params -_$_9__io_defs -__io_defs::~__io_defs(void) -__io_defs::~__io_defs -# ---format=gnu --no-params -_$_Q23foo3bar -foo::bar::~bar(void) -foo::bar::~bar -# ---format=gnu --no-params -_$_Q33foo3bar4bell -foo::bar::bell::~bell(void) -foo::bar::bell::~bell -# ---format=gnu --no-params -__10ivTelltaleiP7ivGlyph -ivTelltale::ivTelltale(int, ivGlyph *) -ivTelltale::ivTelltale -# ---format=gnu --no-params -__10ivViewportiP12ivInteractorUi -ivViewport::ivViewport(int, ivInteractor *, unsigned int) -ivViewport::ivViewport -# ---format=gnu --no-params -__10ostrstream -ostrstream::ostrstream(void) -ostrstream::ostrstream -# ---format=gnu --no-params -__10ostrstreamPcii -ostrstream::ostrstream(char *, int, int) -ostrstream::ostrstream -# ---format=gnu --no-params -__11BitmapTablei -BitmapTable::BitmapTable(int) -BitmapTable::BitmapTable -# ---format=gnu --no-params -__12ViewportCodeP12ViewportComp -ViewportCode::ViewportCode(ViewportComp *) -ViewportCode::ViewportCode -# ---format=gnu --no-params -__12iv2_6_Borderii -iv2_6_Border::iv2_6_Border(int, int) -iv2_6_Border::iv2_6_Border -# ---format=gnu --no-params -__12ivBreak_Listl -ivBreak_List::ivBreak_List(long) -ivBreak_List::ivBreak_List -# ---format=gnu --no-params -__14iv2_6_MenuItemiP12ivInteractor -iv2_6_MenuItem::iv2_6_MenuItem(int, ivInteractor *) -iv2_6_MenuItem::iv2_6_MenuItem -# ---format=gnu --no-params -__20DisplayList_IteratorR11DisplayList -DisplayList_Iterator::DisplayList_Iterator(DisplayList &) -DisplayList_Iterator::DisplayList_Iterator -# ---format=gnu --no-params -__3fooRT0 -foo::foo(foo &) -foo::foo -# ---format=gnu --no-params -__3fooiN31 -foo::foo(int, int, int, int) -foo::foo -# ---format=gnu --no-params -__3fooiRT0iT2iT2 -foo::foo(int, foo &, int, foo &, int, foo &) -foo::foo -# ---format=gnu --no-params -__6KeyMapPT0 -KeyMap::KeyMap(KeyMap *) -KeyMap::KeyMap -# ---format=gnu --no-params -__8ArrowCmdP6EditorUiUi -ArrowCmd::ArrowCmd(Editor *, unsigned int, unsigned int) -ArrowCmd::ArrowCmd -# ---format=gnu --no-params -__9F_EllipseiiiiP7Graphic -F_Ellipse::F_Ellipse(int, int, int, int, Graphic *) -F_Ellipse::F_Ellipse -# ---format=gnu --no-params -__9FrameDataP9FrameCompi -FrameData::FrameData(FrameComp *, int) -FrameData::FrameData -# ---format=gnu --no-params -__9HVGraphicP9CanvasVarP7Graphic -HVGraphic::HVGraphic(CanvasVar *, Graphic *) -HVGraphic::HVGraphic -# ---format=gnu --no-params -__Q23foo3bar -foo::bar::bar(void) -foo::bar::bar -# ---format=gnu --no-params -__Q33foo3bar4bell -foo::bar::bell::bell(void) -foo::bar::bell::bell -# ---format=gnu --no-params -__aa__3fooRT0 -foo::operator&&(foo &) -foo::operator&& -# ---format=gnu --no-params -__aad__3fooRT0 -foo::operator&=(foo &) -foo::operator&= -# ---format=gnu --no-params -__ad__3fooRT0 -foo::operator&(foo &) -foo::operator& -# ---format=gnu --no-params -__adv__3fooRT0 -foo::operator/=(foo &) -foo::operator/= -# ---format=gnu --no-params -__aer__3fooRT0 -foo::operator^=(foo &) -foo::operator^= -# ---format=gnu --no-params -__als__3fooRT0 -foo::operator<<=(foo &) -foo::operator<<= -# ---format=gnu --no-params -__amd__3fooRT0 -foo::operator%=(foo &) -foo::operator%= -# ---format=gnu --no-params -__ami__3fooRT0 -foo::operator-=(foo &) -foo::operator-= -# ---format=gnu --no-params -__aml__3FixRT0 -Fix::operator*=(Fix &) -Fix::operator*= -# ---format=gnu --no-params -__aml__5Fix16i -Fix16::operator*=(int) -Fix16::operator*= -# ---format=gnu --no-params -__aml__5Fix32RT0 -Fix32::operator*=(Fix32 &) -Fix32::operator*= -# ---format=gnu --no-params -__aor__3fooRT0 -foo::operator|=(foo &) -foo::operator|= -# ---format=gnu --no-params -__apl__3fooRT0 -foo::operator+=(foo &) -foo::operator+= -# ---format=gnu --no-params -__ars__3fooRT0 -foo::operator>>=(foo &) -foo::operator>>= -# ---format=gnu --no-params -__as__3fooRT0 -foo::operator=(foo &) -foo::operator= -# ---format=gnu --no-params -__cl__3fooRT0 -foo::operator()(foo &) -foo::operator() -# ---format=gnu --no-params -__cl__6Normal -Normal::operator()(void) -Normal::operator() -# ---format=gnu --no-params -__cl__6Stringii -String::operator()(int, int) -String::operator() -# ---format=gnu --no-params -__cm__3fooRT0 -foo::operator, (foo &) -foo::operator, -# ---format=gnu --no-params -__co__3foo -foo::operator~(void) -foo::operator~ -# ---format=gnu --no-params -__dl__3fooPv -foo::operator delete(void *) -foo::operator delete -# ---format=gnu --no-params -__dv__3fooRT0 -foo::operator/(foo &) -foo::operator/ -# ---format=gnu --no-params -__eq__3fooRT0 -foo::operator==(foo &) -foo::operator== -# ---format=gnu --no-params -__er__3fooRT0 -foo::operator^(foo &) -foo::operator^ -# ---format=gnu --no-params -__ge__3fooRT0 -foo::operator>=(foo &) -foo::operator>= -# ---format=gnu --no-params -__gt__3fooRT0 -foo::operator>(foo &) -foo::operator> -# ---format=gnu --no-params -__le__3fooRT0 -foo::operator<=(foo &) -foo::operator<= -# ---format=gnu --no-params -__ls__3fooRT0 -foo::operator<<(foo &) -foo::operator<< -# ---format=gnu --no-params -__ls__FR7ostreamPFR3ios_R3ios -operator<<(ostream &, ios &(*)(ios &)) -operator<< -# ---format=gnu --no-params -__ls__FR7ostreamR3Fix -operator<<(ostream &, Fix &) -operator<< -# ---format=gnu --no-params -__lt__3fooRT0 -foo::operator<(foo &) -foo::operator< -# ---format=gnu --no-params -__md__3fooRT0 -foo::operator%(foo &) -foo::operator% -# ---format=gnu --no-params -__mi__3fooRT0 -foo::operator-(foo &) -foo::operator- -# ---format=gnu --no-params -__ml__3fooRT0 -foo::operator*(foo &) -foo::operator* -# ---format=gnu --no-params -__mm__3fooi -foo::operator--(int) -foo::operator-- -# ---format=gnu --no-params -__ne__3fooRT0 -foo::operator!=(foo &) -foo::operator!= -# ---format=gnu --no-params -__nt__3foo -foo::operator!(void) -foo::operator! -# ---format=gnu --no-params -__nw__3fooi -foo::operator new(int) -foo::operator new -# ---format=gnu --no-params -__oo__3fooRT0 -foo::operator||(foo &) -foo::operator|| -# ---format=gnu --no-params -__opPc__3foo -foo::operator char *(void) -foo::operator char * -# ---format=gnu --no-params -__opi__3foo -foo::operator int(void) -foo::operator int -# ---format=gnu --no-params -__or__3fooRT0 -foo::operator|(foo &) -foo::operator| -# ---format=gnu --no-params -__pl__3fooRT0 -foo::operator+(foo &) -foo::operator+ -# ---format=gnu --no-params -__pp__3fooi -foo::operator++(int) -foo::operator++ -# ---format=gnu --no-params -__rf__3foo -foo::operator->(void) -foo::operator-> -# ---format=gnu --no-params -__rm__3fooRT0 -foo::operator->*(foo &) -foo::operator->* -# ---format=gnu --no-params -__rs__3fooRT0 -foo::operator>>(foo &) -foo::operator>> -# ---format=gnu --no-params -_new_Fix__FUs -_new_Fix(unsigned short) -_new_Fix -# ---format=gnu --no-params -_vt.foo -foo virtual table -foo virtual table -# ---format=gnu --no-params -_vt.foo.bar -foo::bar virtual table -foo::bar virtual table -# ---format=gnu --no-params -_vt$foo -foo virtual table -foo virtual table -# ---format=gnu --no-params -_vt$foo$bar -foo::bar virtual table -foo::bar virtual table -# ---format=gnu --no-params -append__7ivGlyphPT0 -ivGlyph::append(ivGlyph *) -ivGlyph::append -# ---format=gnu --no-params -clearok__FP7_win_sti -clearok(_win_st *, int) -clearok -# ---format=gnu --no-params -complexfunc2__FPFPc_i -complexfunc2(int (*)(char *)) -complexfunc2 -# ---format=gnu --no-params -complexfunc3__FPFPFPl_s_i -complexfunc3(int (*)(short (*)(long *))) -complexfunc3 -# ---format=gnu --no-params -complexfunc4__FPFPFPc_s_i -complexfunc4(int (*)(short (*)(char *))) -complexfunc4 -# ---format=gnu --no-params -complexfunc5__FPFPc_PFl_i -complexfunc5(int (*(*)(char *))(long)) -complexfunc5 -# ---format=gnu --no-params -complexfunc6__FPFPi_PFl_i -complexfunc6(int (*(*)(int *))(long)) -complexfunc6 -# ---format=gnu --no-params -complexfunc7__FPFPFPc_i_PFl_i -complexfunc7(int (*(*)(int (*)(char *)))(long)) -complexfunc7 -# ---format=gnu --no-params -foo__FiN30 -foo(int, int, int, int) -foo -# ---format=gnu --no-params -foo__FiR3fooiT1iT1 -foo(int, foo &, int, foo &, int, foo &) -foo -# ---format=gnu --no-params -foo___3barl -bar::foo_(long) -bar::foo_ -# ---format=gnu --no-params -insert__15ivClippingStacklRP8_XRegion -ivClippingStack::insert(long, _XRegion *&) -ivClippingStack::insert -# ---format=gnu --no-params -insert__16ChooserInfo_ListlR11ChooserInfo -ChooserInfo_List::insert(long, ChooserInfo &) -ChooserInfo_List::insert -# ---format=gnu --no-params -insert__17FontFamilyRepListlRP15ivFontFamilyRep -FontFamilyRepList::insert(long, ivFontFamilyRep *&) -FontFamilyRepList::insert -# ---format=gnu --no-params -leaveok__FP7_win_stc -leaveok(_win_st *, char) -leaveok -# ---format=gnu --no-params -left_mover__C7ivMFKitP12ivAdjustableP7ivStyle -ivMFKit::left_mover(ivAdjustable *, ivStyle *) const -ivMFKit::left_mover -# ---format=gnu --no-params -overload1arg__FSc -overload1arg(signed char) -overload1arg -# ---format=gnu --no-params -overload1arg__FUc -overload1arg(unsigned char) -overload1arg -# ---format=gnu --no-params -overload1arg__FUi -overload1arg(unsigned int) -overload1arg -# ---format=gnu --no-params -overload1arg__FUl -overload1arg(unsigned long) -overload1arg -# ---format=gnu --no-params -overload1arg__FUs -overload1arg(unsigned short) -overload1arg -# ---format=gnu --no-params -overload1arg__Fc -overload1arg(char) -overload1arg -# ---format=gnu --no-params -overload1arg__Fd -overload1arg(double) -overload1arg -# ---format=gnu --no-params -overload1arg__Ff -overload1arg(float) -overload1arg -# ---format=gnu --no-params -overload1arg__Fi -overload1arg(int) -overload1arg -# ---format=gnu --no-params -overload1arg__Fl -overload1arg(long) -overload1arg -# ---format=gnu --no-params -overload1arg__Fs -overload1arg(short) -overload1arg -# ---format=gnu --no-params -overload1arg__Fv -overload1arg(void) -overload1arg -# ---format=gnu --no-params -overloadargs__Fi -overloadargs(int) -overloadargs -# ---format=gnu --no-params -overloadargs__Fii -overloadargs(int, int) -overloadargs -# ---format=gnu --no-params -overloadargs__Fiii -overloadargs(int, int, int) -overloadargs -# ---format=gnu --no-params -overloadargs__Fiiii -overloadargs(int, int, int, int) -overloadargs -# ---format=gnu --no-params -overloadargs__Fiiiii -overloadargs(int, int, int, int, int) -overloadargs -# ---format=gnu --no-params -overloadargs__Fiiiiii -overloadargs(int, int, int, int, int, int) -overloadargs -# ---format=gnu --no-params -overloadargs__Fiiiiiii -overloadargs(int, int, int, int, int, int, int) -overloadargs -# ---format=gnu --no-params -overloadargs__Fiiiiiiii -overloadargs(int, int, int, int, int, int, int, int) -overloadargs -# ---format=gnu --no-params -overloadargs__Fiiiiiiiii -overloadargs(int, int, int, int, int, int, int, int, int) -overloadargs -# ---format=gnu --no-params -overloadargs__Fiiiiiiiiii -overloadargs(int, int, int, int, int, int, int, int, int, int) -overloadargs -# ---format=gnu --no-params -overloadargs__Fiiiiiiiiiii -overloadargs(int, int, int, int, int, int, int, int, int, int, int) -overloadargs -# ---format=gnu --no-params -poke__8ivRasterUlUlffff -ivRaster::poke(unsigned long, unsigned long, float, float, float, float) -ivRaster::poke -# ---format=gnu --no-params -polar__Fdd -polar(double, double) -polar -# ---format=gnu --no-params -scale__13ivTransformerff -ivTransformer::scale(float, float) -ivTransformer::scale -# ---format=gnu --no-params -sgetn__7filebufPci -filebuf::sgetn(char *, int) -filebuf::sgetn -# ---format=gnu --no-params -shift__FP5_FrepiT0 -shift(_Frep *, int, _Frep *) -shift -# ---format=gnu --no-params -test__C6BitSeti -BitSet::test(int) const -BitSet::test -# ---format=gnu --no-params -test__C6BitSetii -BitSet::test(int, int) const -BitSet::test -# ---format=gnu --no-params -text_source__8Documentl -Document::text_source(long) -Document::text_source -# ---format=gnu --no-params -variance__6Erlangd -Erlang::variance(double) -Erlang::variance -# ---format=gnu --no-params -view__14DocumentViewerP8ItemViewP11TabularItem -DocumentViewer::view(ItemView *, TabularItem *) -DocumentViewer::view -# ---format=gnu --no-params -xy_extents__11ivExtensionffff -ivExtension::xy_extents(float, float, float, float) -ivExtension::xy_extents -# ---format=gnu --no-params -zero__8osMemoryPvUi -osMemory::zero(void *, unsigned int) -osMemory::zero -# ---format=gnu --no-params -_2T4$N -T4::N -T4::N -# ---format=gnu --no-params -_Q22T42t1$N -T4::t1::N -T4::t1::N -# ---format=gnu --no-params -get__2T1 -T1::get(void) -T1::get -# ---format=gnu --no-params -get__Q22T11a -T1::a::get(void) -T1::a::get -# ---format=gnu --no-params -get__Q32T11a1b -T1::a::b::get(void) -T1::a::b::get -# ---format=gnu --no-params -get__Q42T11a1b1c -T1::a::b::c::get(void) -T1::a::b::c::get -# ---format=gnu --no-params -get__Q52T11a1b1c1d -T1::a::b::c::d::get(void) -T1::a::b::c::d::get -# ---format=gnu --no-params -put__2T1i -T1::put(int) -T1::put -# ---format=gnu --no-params -put__Q22T11ai -T1::a::put(int) -T1::a::put -# ---format=gnu --no-params -put__Q32T11a1bi -T1::a::b::put(int) -T1::a::b::put -# ---format=gnu --no-params -put__Q42T11a1b1ci -T1::a::b::c::put(int) -T1::a::b::c::put -# ---format=gnu --no-params -put__Q52T11a1b1c1di -T1::a::b::c::d::put(int) -T1::a::b::c::d::put -# ---format=gnu --no-params -bar__3fooPv -foo::bar(void *) -foo::bar -# ---format=gnu --no-params -bar__C3fooPv -foo::bar(void *) const -foo::bar -# ---format=gnu --no-params -__eq__3fooRT0 -foo::operator==(foo &) -foo::operator== -# ---format=gnu --no-params -__eq__C3fooR3foo -foo::operator==(foo &) const -foo::operator== -# ---format=gnu --no-params -elem__t6vector1Zdi -vector::elem(int) -vector::elem -# ---format=gnu --no-params -elem__t6vector1Zii -vector::elem(int) -vector::elem -# ---format=gnu --no-params -__t6vector1Zdi -vector::vector(int) -vector::vector -# ---format=gnu --no-params -__t6vector1Zii -vector::vector(int) -vector::vector -# ---format=gnu --no-params -_$_t6vector1Zdi -vector::~vector(int) -vector::~vector -# ---format=gnu --no-params -_$_t6vector1Zii -vector::~vector(int) -vector::~vector -# ---format=gnu --no-params -__nw__t2T11ZcUi -T1::operator new(unsigned int) -T1::operator new -# ---format=gnu --no-params -__nw__t2T11Z1tUi -T1::operator new(unsigned int) -T1::operator new -# ---format=gnu --no-params -__dl__t2T11ZcPv -T1::operator delete(void *) -T1::operator delete -# ---format=gnu --no-params -__dl__t2T11Z1tPv -T1::operator delete(void *) -T1::operator delete -# ---format=gnu --no-params -__t2T11Zci -T1::T1(int) -T1::T1 -# ---format=gnu --no-params -__t2T11Zc -T1::T1(void) -T1::T1 -# ---format=gnu --no-params -__t2T11Z1ti -T1::T1(int) -T1::T1 -# ---format=gnu --no-params -__t2T11Z1t -T1::T1(void) -T1::T1 -# ---format=gnu --no-params -__Q2t4List1Z10VHDLEntity3Pix -List::Pix::Pix(void) -List::Pix::Pix -# ---format=gnu --no-params -__Q2t4List1Z10VHDLEntity3PixPQ2t4List1Z10VHDLEntity7element -List::Pix::Pix(List::element *) -List::Pix::Pix -# ---format=gnu --no-params -__Q2t4List1Z10VHDLEntity3PixRCQ2t4List1Z10VHDLEntity3Pix -List::Pix::Pix(List::Pix const &) -List::Pix::Pix -# ---format=gnu --no-params -__Q2t4List1Z10VHDLEntity3PixOCQ2t4List1Z10VHDLEntity3Pix -List::Pix::Pix(List::Pix const &&) -List::Pix::Pix -# ---format=gnu --no-params -__Q2t4List1Z10VHDLEntity7elementRC10VHDLEntityPT0 -List::element::element(VHDLEntity const &, List::element *) -List::element::element -# ---format=gnu --no-params -__Q2t4List1Z10VHDLEntity7elementOC10VHDLEntityPT0 -List::element::element(VHDLEntity const &&, List::element *) -List::element::element -# ---format=gnu --no-params -__Q2t4List1Z10VHDLEntity7elementRCQ2t4List1Z10VHDLEntity7element -List::element::element(List::element const &) -List::element::element -# ---format=gnu --no-params -__cl__C11VHDLLibraryGt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity -VHDLLibrary::operator()(PixX >) const -VHDLLibrary::operator() -# ---format=gnu --no-params -__cl__Ct4List1Z10VHDLEntityRCQ2t4List1Z10VHDLEntity3Pix -List::operator()(List::Pix const &) const -List::operator() -# ---format=gnu --no-params -__ne__FPvRCQ2t4List1Z10VHDLEntity3Pix -operator!=(void *, List::Pix const &) -operator!= -# ---format=gnu --no-params -__ne__FPvRCt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity -operator!=(void *, PixX > const &) -operator!= -# ---format=gnu --no-params -__t4List1Z10VHDLEntityRCt4List1Z10VHDLEntity -List::List(List const &) -List::List -# ---format=gnu --no-params -__t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity -PixX >::PixX(void) -PixX >::PixX -# ---format=gnu --no-params -__t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntityP14VHDLLibraryRepGQ2t4List1Z10VHDLEntity3Pix -PixX >::PixX(VHDLLibraryRep *, List::Pix) -PixX >::PixX -# ---format=gnu --no-params -__t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntityRCt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity -PixX >::PixX(PixX > const &) -PixX >::PixX -# ---format=gnu --no-params -__t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntityOCt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity -PixX >::PixX(PixX > const &&) -PixX >::PixX -# ---format=gnu --no-params -nextE__C11VHDLLibraryRt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity -VHDLLibrary::nextE(PixX > &) const -VHDLLibrary::nextE -# ---format=gnu --no-params -next__Ct4List1Z10VHDLEntityRQ2t4List1Z10VHDLEntity3Pix -List::next(List::Pix &) const -List::next -# ---format=gnu --no-params -_GLOBAL_$D$set -global destructors keyed to set -global destructors keyed to set -# ---format=gnu --no-params -_GLOBAL_$I$set -global constructors keyed to set -global constructors keyed to set -# ---format=gnu --no-params -__as__t5ListS1ZUiRCt5ListS1ZUi -ListS::operator=(ListS const &) -ListS::operator= -# ---format=gnu --no-params -__cl__Ct5ListS1ZUiRCQ2t5ListS1ZUi3Vix -ListS::operator()(ListS::Vix const &) const -ListS::operator() -# ---format=gnu --no-params -__cl__Ct5SetLS1ZUiRCQ2t5SetLS1ZUi3Vix -SetLS::operator()(SetLS::Vix const &) const -SetLS::operator() -# ---format=gnu --no-params -__t10ListS_link1ZUiRCUiPT0 -ListS_link::ListS_link(unsigned int const &, ListS_link *) -ListS_link::ListS_link -# ---format=gnu --no-params -__t10ListS_link1ZUiRCt10ListS_link1ZUi -ListS_link::ListS_link(ListS_link const &) -ListS_link::ListS_link -# ---format=gnu --no-params -__t5ListS1ZUiRCt5ListS1ZUi -ListS::ListS(ListS const &) -ListS::ListS -# ---format=gnu --no-params -next__Ct5ListS1ZUiRQ2t5ListS1ZUi3Vix -ListS::next(ListS::Vix &) const -ListS::next -# ---format=gnu --no-params -__ne__FPvRCQ2t5SetLS1ZUi3Vix -operator!=(void *, SetLS::Vix const &) -operator!= -# ---format=gnu --no-params -__t8ListElem1Z5LabelRt4List1Z5Label -ListElem(A) ---format=gnu-v3 -_Z1hI1AEDTcldtfp_miEET_ -decltype (({parm#1}.(operator-))()) h(A) ---format=gnu-v3 -_Z1fDn -f(decltype(nullptr)) ---format=gnu-v3 -_Z1fIRiEvOT_b -void f(int&, bool) ---format=gnu-v3 -_ZN5aaaaa6bbbbbb5cccccIN23ddddddddddddddddddddddd3eeeENS2_4ffff16ggggggggggggggggENS0_9hhhhhhhhhES6_S6_S6_S6_S6_S6_S6_EE -aaaaa::bbbbbb::ccccc ---format=gnu-v3 -_Z5outerIsEcPFilE -char outer(int (*)(long)) ---format=gnu-v3 -_Z5outerPFsiEl -outer(short (*)(int), long) ---format=gnu-v3 -_Z6outer2IsEPFilES1_ -int (*outer2(int (*)(long)))(long) ---format=gnu-v3 --ret-postfix -_Z5outerIsEcPFilE -outer(int (*)(long))char ---format=gnu-v3 --ret-postfix -_Z5outerPFsiEl -outer(short (*)(int), long) ---format=gnu-v3 --ret-postfix -_Z6outer2IsEPFilES1_ -outer2(int (*)(long))int (*)(long) ---format=gnu-v3 --ret-drop -_Z5outerIsEcPFilE -outer(int (*)(long)) ---format=gnu-v3 --ret-drop -_Z5outerPFsiEl -outer(short (*)(int), long) ---format=gnu-v3 --ret-drop -_Z6outer2IsEPFilES1_ -outer2(int (*)(long)) -# ---format=gnu-v3 --no-params -_ZN1KIXadL_ZN1S1mEiEEE1fEv -K<&S::m>::f() -K<&S::m>::f ---format=gnu-v3 -_ZN1KILi1EXadL_ZN1S1mEiEEE1fEv -K<1, &S::m>::f() -# Here the `(int)' argument list of `S::m' is already removed. ---format=gnu-v3 -_ZN1KILi1EXadL_ZN1S1mEEEE1fEv -K<1, &S::m>::f() -# -# Used to crash -- binutils PR 13030. ---format=gnu-v3 -_ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_ -_ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_ -# A pack expansion is substitutable. ---format=gnu-v3 -_Z1fIJiEiEv1AIJDpT_EET0_S4_ -void f(A, int, int) -# So is decltype. ---format=gnu-v3 -_Z1fIiiEDTcvT__EET0_S2_ -decltype ((int)()) f(int, int) -# And vector. ---format=gnu-v3 -_Z1fDv4_iS_ -f(int __vector(4), int __vector(4)) ---format=gnu-v3 -_Z2f1Ii1AEDTdsfp_fp0_ET0_MS2_T_ -decltype ({parm#1}.*{parm#2}) f1(A, int A::*) ---format=gnu-v3 -_Z2f2IiEDTquL_Z1bEfp_trET_ -decltype (b?{parm#1} : (throw)) f2(int) ---format=gnu-v3 -_Z6check1IiEvP6helperIXsznw_T_EEE -void check1(helper*) ---format=gnu-v3 -_Z6check2IiEvP6helperIXszgsnw_T_piEEE -void check2(helper*) ---format=gnu-v3 -_Z6check3IiEvP6helperIXsznwadL_Z1iE_T_piLi1EEEE -void check3(helper*) ---format=gnu-v3 -_Z6check4IiEvP6helperIXszna_A1_T_EEE -void check4(helper*) ---format=gnu-v3 -_Z6check5IiEvP6helperIXszna_A1_T_piEEE -void check5(helper*) ---format=gnu-v3 -_Z1fIiEDTcmgsdlfp_psfp_EPT_ -decltype ((::delete {parm#1}),(+{parm#1})) f(int*) ---format=gnu-v3 -_Z1fIiEDTcmdafp_psfp_EPT_ -decltype ((delete[] {parm#1}),(+{parm#1})) f(int*) ---format=gnu-v3 -_ZN1AdlEPv -A::operator delete(void*) ---format=gnu-v3 -_Z2f1IiEDTppfp_ET_ -decltype ({parm#1}++) f1(int) ---format=gnu-v3 -_Z2f1IiEDTpp_fp_ET_ -decltype (++{parm#1}) f1(int) ---format=gnu-v3 -_Z2f1IiEDTcl1gfp_ilEEET_ -decltype (g({parm#1}, {})) f1(int) ---format=gnu-v3 -_Z2f1IiEDTnw_T_ilEES0_ -decltype (new int{}) f1(int) ---format=gnu-v3 -_Zli2_wPKc -operator"" _w(char const*) ---format=gnu-v3 -_Z1fIiEDTnw_Dapifp_EET_ -decltype (new auto({parm#1})) f(int) ---format=gnu-v3 -_Z1fIiERDaRKT_S1_ -auto& f(int const&, int) ---format=gnu-v3 -_Z1gILi1EEvR1AIXT_EER1BIXscbT_EE -void g<1>(A<1>&, B(1)>&) ---format=gnu-v3 -_ZNKSt7complexIiE4realB5cxx11Ev -std::complex::real[abi:cxx11]() const -# -# Some more crashes revealed by fuzz-testing: -# Check for NULL pointer when demangling trinary operators ---format=gnu-v3 -_Z1fAv32_f -_Z1fAv32_f -# Do not overflow when decoding identifier length ---format=gnu-v3 -_Z11111111111 -_Z11111111111 -# Check out-of-bounds access when decoding braced initializer list ---format=gnu-v3 -_ZDTtl -_ZDTtl -# Check for NULL pointer when demangling DEMANGLE_COMPONENT_LOCAL_NAME ---format=gnu-v3 -_ZZN1fEEd_lEv -_ZZN1fEEd_lEv -# Handle DEMANGLE_COMPONENT_FIXED_TYPE in d_find_pack ---format=gnu-v3 -_Z1fDpDFT_ -_Z1fDpDFT_ -# Likewise, DEMANGLE_COMPONENT_DEFAULT_ARG ---format=gnu-v3 -_Z1fIDpZ1fEd_E -_Z1fIDpZ1fEd_E -# Likewise, DEMANGLE_COMPONENT_NUMBER ---format=gnu-v3 -_Z1fDpDv1_c -f((char __vector(1))...) -# -# Ada (GNAT) tests. -# -# Simple test. ---format=gnat -yz__qrs -yz.qrs -# Operator ---format=gnat -oper__Oadd -oper."+" -# Overloaded subprogram. ---format=gnat -yz__qrs__2 -yz.qrs -# Nested subprogram. ---format=gnat -yz__qrs__tuv.1661 -yz.qrs.tuv -# Nested and overloaded subprograms. ---format=gnat -yz__qrs__tuv__2_1.1667 -yz.qrs.tuv ---format=gnat -yz__qrs__tuv__2_2.1670 -yz.qrs.tuv ---format=gnat -yz__qrs__tuv__2_3.1674 -yz.qrs.tuv -# Elaborated flag (not demangled) ---format=gnat -x_E - -# Nested package ---format=gnat -x__m1 -x.m1 ---format=gnat -x__m3 -x.m3 ---format=gnat -x__y__m2X -x.y.m2 ---format=gnat -x__y__z__rXb -x.y.z.r -# Child package ---format=gnat -x__y__j -x.y.j -# Library level ---format=gnat -_ada_x__m3 -x.m3 -# Package body elaborator ---format=gnat -p___elabb -p'Elab_Body -# Package spec elaborator ---format=gnat -p___elabs -p'Elab_Spec -# Task body ---format=gnat -p__taskobjTKB -p.taskobj -# Task subprogram ---format=gnat -p__taskobjTK__f1.2330 -p.taskobj.f1 -# Protected types subprograms ---format=gnat -prot__lock__getN -prot.lock.get ---format=gnat -prot__lock__getP -prot.lock.get ---format=gnat -prot__lock__get__sub.2590 -prot.lock.get.sub ---format=gnat -prot__lock__setN -prot.lock.set ---format=gnat -prot__lock__setP -prot.lock.set -# Protected type entries ---format=gnat -prot__lock__update_B7s -prot.lock.update ---format=gnat -prot__lock__update_E6s -prot.lock.update -# Controlled types ---format=gnat -gnat__sockets__sockets_library_controllerDF__2 -gnat.sockets.sockets_library_controller.Finalize ---format=gnat -system__partition_interface__racw_stub_typeDA -system.partition_interface.racw_stub_type.Adjust -# Stream operations ---format=gnat -gnat__wide_wide_string_split__slice_setSR__2 -gnat.wide_wide_string_split.slice_set'Read ---format=gnat -ada__real_time__timing_events__events__listSW__2Xnn -ada.real_time.timing_events.events.list'Write ---format=gnat -system__finalization_root__root_controlledSI -system.finalization_root.root_controlled'Input ---format=gnat -ada__finalization__limited_controlledSO__2 -ada.finalization.limited_controlled'Output -# Tagged types ---format=gnat -ada__synchronous_task_control___size__2 -ada.synchronous_task_control'Size ---format=gnat -ada__real_time__timing_events__events___alignment__2Xnn -ada.real_time.timing_events.events'Alignment ---format=gnat -system__finalization_root___assign__2 -system.finalization_root.":=" -# -# Used to crash the demangler. ---format=gnu-v3 -DFA -DFA -# -# http://sourceware.org/bugzilla/show_bug.cgi?id=11572 ---format=auto -_ZN3Psi7VariantIIcPKcEE5visitIIRZN11VariantTest9TestVisit11test_methodEvEUlS2_E0_RZNS6_11test_methodEvEUlcE1_RZNS6_11test_methodEvEUlNS_4NoneEE_EEENS_13VariantDetail19SelectVisitorResultIIDpT_EE4typeEDpOSG_ -Psi::VariantDetail::SelectVisitorResult::type Psi::Variant::visit((VariantTest::TestVisit::test_method()::{lambda(Psi::None)#1}&)...) -# -# Clone suffix tests -# ---format=gnu-v3 --no-params -_Z3fo5n.clone.1 -fo5(__int128) [clone .clone.1] -fo5 -# ---format=gnu-v3 --no-params -_Z3fo5n.constprop.2 -fo5(__int128) [clone .constprop.2] -fo5 -# ---format=gnu-v3 --no-params -_Z3fo5n.isra.3 -fo5(__int128) [clone .isra.3] -fo5 -# ---format=gnu-v3 --no-params -_Z3fo5n.part.4 -fo5(__int128) [clone .part.4] -fo5 -# ---format=gnu-v3 --no-params -_Z12to_be_clonediPv.clone.0 -to_be_cloned(int, void*) [clone .clone.0] -to_be_cloned -# ---format=gnu-v3 --no-params -_Z3fooi.1988 -foo(int) [clone .1988] -foo -# ---format=gnu-v3 --no-params -_Z3fooi.part.9.165493.constprop.775.31805 -foo(int) [clone .part.9.165493] [clone .constprop.775.31805] -foo -# ---format=gnu-v3 --no-params -_Z2f1IiEvT_S0_S0_._omp_fn.2 -void f1(int, int, int) [clone ._omp_fn.2] -f1 -# ---format=gnu-v3 --no-params -_Z3fooi._omp_cpyfn.6 -foo(int) [clone ._omp_cpyfn.6] -foo -# ---format=gnu-v3 --no-params -_Z1fIKFvvES0_Evv -void f() -f -# ---format=gnu-v3 -_ZN4modc6parser8sequenceINS_9astParser13LocatedParserINS0_9ParserRefINS2_UlRNS2_16TokenParserInputEE_EEEEEINS0_14OptionalParserINS2_18ListParserTemplateILNS_6tokens5Token4TypeE4EXadL_ZNSD_Ut_13parenthesizedEEEE6ParserINS4_INS0_6ParserIS5_NS_3ast10ExpressionEEEEEEEEENSA_INS4_INS2_22OneOfKeywordsToTParserINSJ_5StyleEEEEEEENS0_14SequenceParserIS5_INS0_18ExactElementParserIS5_EENSA_ISM_EEEEENS0_14RepeatedParserINS4_INS0_15TransformParserINSU_IS5_INS4_INSP_INSJ_10Annotation12RelationshipEEEEESX_EEENS2_UlNS2_3LocES12_ONS_5MaybeISK_EEE19_EEEEELb0EEEEEENSU_INS0_17ExtractParserTypeIT_E9InputTypeEINS0_8MaybeRefIS1F_E4TypeEDpNS1I_IT0_E4TypeEEEEOS1F_DpOS1L_ -modc::parser::ParserRef::Parser::Style> > > >::InputType, modc::parser::MaybeRef&&)#21}>::Type, modc::parser::RepeatedParser::Parser::Style> >::Parser > >::Parser::Annotation::Relationship> >, modc::parser::ExactElementParser> >, modc::astParser::{lambda(modc::astParser::Loc, modc::parser::RepeatedParser, modc::Maybe&&)#21}> >, false>::Parser > > > >::Type, modc::parser::RepeatedParser::Parser::Style> >::Parser > >::Parser::Annotation::Relationship> >, modc::parser::ExactElementParser> >, modc::astParser::{lambda(modc::astParser::Loc, modc::parser::RepeatedParser, modc::Maybe&&)#21}> >, false> >::Parser::Style> > > >::Type, modc::parser::RepeatedParser::Parser::Style> >::Parser > >::Parser::Annotation::Relationship> >, modc::parser::ExactElementParser> >, modc::astParser::{lambda(modc::astParser::Loc, modc::parser::RepeatedParser, modc::Maybe&&)#21}> >, false>, modc::astParser::LocatedParser > > > >::Type, modc::parser::RepeatedParser::Parser::Style> >::Parser > >::Parser::Annotation::Relationship> >, modc::parser::ExactElementParser> >, modc::astParser::{lambda(modc::astParser::Loc, modc::parser::RepeatedParser, modc::Maybe&&)#21}> >, false>::Parser::Style> >::Parser > >::Parser::Annotation::Relationship> >, modc::parser::ExactElementParser> >, modc::astParser::{lambda(modc::astParser::Loc, modc::parser::RepeatedParser, modc::Maybe&&)#21}> >, false> >::Type> modc::parser::sequence >, modc::parser::OptionalParser::Parser > > >, modc::astParser::LocatedParser >::Parser::Style> > >, modc::parser::SequenceParser, modc::astParser::LocatedParser > > >, modc::parser::RepeatedParser::Parser::Style> >::Parser > >::Parser::Annotation::Relationship> >, modc::parser::ExactElementParser> >, modc::astParser::{lambda(modc::astParser::Loc, modc::parser::RepeatedParser, modc::Maybe&&)#21}> >, false> >(modc::astParser::{lambda(modc::astParser::Loc, modc::parser::RepeatedParser, modc::Maybe&&)#21}&&, (modc::parser::ExtractParserType > >&&)...) ---format=gnu-v3 -_ZNKR1A1hEv -A::h() const & ---format=gnu-v3 -_Z1lM1AKFvvRE -l(void (A::*)() const &) ---format=gnu-v3 -_Z1mIFvvOEEvM1AT_ -void m(void (A::*)() &&) ---format=gnu-v3 -_Z1nIM1AKFvvREEvT_ -void n(void (A::*)() const &) ---format=gnu-v3 -_ZL1fIiEvv -void f() -# https://sourceware.org/bugzilla/show_bug.cgi?id=14963#c3 ---format=gnu-v3 -_ZSt7forwardIRN1x14refobjiteratorINS0_3refINS0_4mime30multipart_section_processorObjIZ15get_body_parserIZZN14mime_processor21make_section_iteratorERKNS2_INS3_10sectionObjENS0_10ptrrefBaseEEEbENKUlvE_clEvEUlSB_bE_ZZNS6_21make_section_iteratorESB_bENKSC_clEvEUlSB_E0_ENS1_INS2_INS0_20outputrefiteratorObjIiEES8_EEEERKSsSB_OT_OT0_EUlmE_NS3_32make_multipart_default_discarderISP_EEEES8_EEEEEOT_RNSt16remove_referenceISW_E4typeE -x::refobjiterator, x::ptrrefBase> > get_body_parser const&, bool)::{lambda()#1}::operator()() const::{lambda(x::ref const&, bool)#1}, mime_processor::make_section_iterator(x::ref const&, bool)::{lambda()#1}::operator()() const::{lambda(x::ref const&)#2}>(std::string const&, x::ref const&, mime_processor::make_section_iterator(x::ref const&, bool)::{lambda()#1}::operator()() const::{lambda(x::ref const&, bool)#1}&&, mime_processor::make_section_iterator(x::ref const&, bool)::{lambda()#1}::operator()() const::{lambda(x::ref const&)#2}&&)::{lambda(unsigned long)#1}, x::mime::make_multipart_default_discarder const&, bool)::{lambda()#1}::operator()() const::{lambda(x::ref const&, bool)#1}&&> >, x::ptrrefBase> >& std::forward, x::ptrrefBase> > get_body_parser const&, bool)::{lambda()#1}::operator()() const::{lambda(x::ref const&, bool)#1}, mime_processor::make_section_iterator(x::ref const&, bool)::{lambda()#1}::operator()() const::{lambda(x::ref const&)#2}>(std::string const&, x::ref const&, mime_processor::make_section_iterator(x::ref const&, bool)::{lambda()#1}::operator()() const::{lambda(x::ref const&, bool)#1}&&, mime_processor::make_section_iterator(x::ref const&, bool)::{lambda()#1}::operator()() const::{lambda(x::ref const&)#2}&&)::{lambda(unsigned long)#1}, x::mime::make_multipart_default_discarder const&, bool)::{lambda()#1}::operator()() const::{lambda(x::ref const&, bool)#1}&&> >, x::ptrrefBase> >&>(std::remove_reference, x::ptrrefBase> > get_body_parser const&, bool)::{lambda()#1}::operator()() const::{lambda(x::ref const&, bool)#1}, mime_processor::make_section_iterator(x::ref const&, bool)::{lambda()#1}::operator()() const::{lambda(x::ref const&)#2}>(std::string const&, x::ref const&, mime_processor::make_section_iterator(x::ref const&, bool)::{lambda()#1}::operator()() const::{lambda(x::ref const&, bool)#1}&&, mime_processor::make_section_iterator(x::ref const&, bool)::{lambda()#1}::operator()() const::{lambda(x::ref const&)#2}&&)::{lambda(unsigned long)#1}, x::mime::make_multipart_default_discarder const&, bool)::{lambda()#1}::operator()() const::{lambda(x::ref const&, bool)#1}&&> > >::type&) -# ---format=gnu-v3 --no-params -_ZNK7strings8internal8SplitterINS_9delimiter5AnyOfENS_9SkipEmptyEEcvT_ISt6vectorI12basic_stringIcSt11char_traitsIcESaIcEESaISD_EEvEEv -strings::internal::Splitter::operator std::vector, std::allocator >, std::allocator, std::allocator > > >, std::allocator >, std::allocator, std::allocator > > >, void>() const -strings::internal::Splitter::operator std::vector, std::allocator >, std::allocator, std::allocator > > >, std::allocator >, std::allocator, std::allocator > > >, void> -# ---format=gnu-v3 --no-params -_ZN1AcvT_I1CEEv -A::operator C() -A::operator C -# ---format=gnu-v3 --no-params -_ZN1AcvPT_I1CEEv -A::operator C*() -A::operator C* -# ---format=gnu-v3 --no-params -_ZN1AcvT_IiEI1CEEv -A::operator C() -A::operator C -# https://sourceware.org/bugzilla/show_bug.cgi?id=14963#c16 ---format=gnu-v3 -_ZN3mdr16in_cached_threadIRZNK4cudr6GPUSet17parallel_for_eachIZN5tns3d20shape_representation7compute7GPUImpl7executeERKNS_1AINS_7ptr_refIKjEELl3ELl3ENS_8c_strideILl1ELl0EEEEERKNS8_INS9_IjEELl4ELl1ESD_EEEUliRKNS1_7ContextERNS7_5StateEE_JSt6vectorISO_SaISO_EEEEEvOT_DpRT0_EUlSP_E_JSt17reference_wrapperISO_EEEENS_12ScopedFutureIDTclfp_spcl7forwardISW_Efp0_EEEEESV_DpOSW_ -mdr::ScopedFuture, 3l, 3l, mdr::c_stride<1l, 0l> > const&, mdr::A, 4l, 1l, mdr::c_stride<1l, 0l> > const&)::{lambda(int, cudr::Context const&, tns3d::shape_representation::compute::GPUImpl::State&)#1}, std::vector > >(tns3d::shape_representation::compute::GPUImpl::execute(mdr::A, 3l, 3l, mdr::c_stride<1l, 0l> > const&, mdr::A, 4l, 1l, mdr::c_stride<1l, 0l> > const&)::{lambda(int, cudr::Context const&, tns3d::shape_representation::compute::GPUImpl::State&)#1}&&, std::vector >&) const::{lambda(tns3d::shape_representation::compute::GPUImpl::State&)#1}&>)({parm#2}))...))> mdr::in_cached_thread, 3l, 3l, mdr::c_stride<1l, 0l> > const&, mdr::A, 4l, 1l, mdr::c_stride<1l, 0l> > const&)::{lambda(int, cudr::Context const&, tns3d::shape_representation::compute::GPUImpl::State&)#1}, std::vector > >(void cudr::GPUSet::parallel_for_each, 3l, 3l, mdr::c_stride<1l, 0l> > const&, mdr::A, 4l, 1l, mdr::c_stride<1l, 0l> > const&)::{lambda(int, cudr::Context const&, tns3d::shape_representation::compute::GPUImpl::State&)#1}, std::vector > >(tns3d::shape_representation::compute::GPUImpl::execute(mdr::A, 3l, 3l, mdr::c_stride<1l, 0l> > const&, mdr::A, 4l, 1l, mdr::c_stride<1l, 0l> > const&)::{lambda(int, cudr::Context const&, tns3d::shape_representation::compute::GPUImpl::State&)#1}&&, std::vector >&) const::{lambda(tns3d::shape_representation::compute::GPUImpl::State&)#1}&, std::vector >&) const::{lambda(tns3d::shape_representation::compute::GPUImpl::State&)#1}&, std::reference_wrapper >(void cudr::GPUSet::parallel_for_each, 3l, 3l, mdr::c_stride<1l, 0l> > const&, mdr::A, 4l, 1l, mdr::c_stride<1l, 0l> > const&)::{lambda(int, cudr::Context const&, tns3d::shape_representation::compute::GPUImpl::State&)#1}, std::vector > >(tns3d::shape_representation::compute::GPUImpl::execute(mdr::A, 3l, 3l, mdr::c_stride<1l, 0l> > const&, mdr::A, 4l, 1l, mdr::c_stride<1l, 0l> > const&)::{lambda(int, cudr::Context const&, tns3d::shape_representation::compute::GPUImpl::State&)#1}&&, std::vector >&) const::{lambda(tns3d::shape_representation::compute::GPUImpl::State&)#1}&, (void cudr::GPUSet::parallel_for_each, 3l, 3l, mdr::c_stride<1l, 0l> > const&, mdr::A, 4l, 1l, mdr::c_stride<1l, 0l> > const&)::{lambda(int, cudr::Context const&, tns3d::shape_representation::compute::GPUImpl::State&)#1}, std::vector > >(tns3d::shape_representation::compute::GPUImpl::execute(mdr::A, 3l, 3l, mdr::c_stride<1l, 0l> > const&, mdr::A, 4l, 1l, mdr::c_stride<1l, 0l> > const&)::{lambda(int, cudr::Context const&, tns3d::shape_representation::compute::GPUImpl::State&)#1}&&, std::vector >&) const::{lambda(tns3d::shape_representation::compute::GPUImpl::State&)#1}&&&)...) -# https://sourceware.org/bugzilla/show_bug.cgi?id=14963#c18 ---format=gnu-v3 -_ZNSt9_Any_data9_M_accessIPZN13ThreadManager10futureTaskISt5_BindIFSt7_Mem_fnIM6RunnerFvvEEPS5_EEEEvOT_EUlvE_EERSC_v -void ThreadManager::futureTask (Runner*)> >(std::_Bind (Runner*)>&&)::{lambda()#1}*& std::_Any_data::_M_access (Runner*)> >(void ThreadManager::futureTask (Runner*)> >(std::_Bind (Runner*)>&&)::{lambda()#1}*&&)::{lambda()#1}*>() -# https://sourceware.org/bugzilla/show_bug.cgi?id=14963#c24 -# aka https://sourceware.org/bugzilla/show_bug.cgi?id=16593 ---format=gnu-v3 -_ZNSt9_Any_data9_M_accessIPZN3sel8Selector6SetObjI3FooJPKcMS4_FviEEEEvRT_DpT0_EUlvE_EESA_v -void sel::Selector::SetObj(Foo&, char const*, void (Foo::*)(int))::{lambda()#1}*& std::_Any_data::_M_access(void sel::Selector::SetObj(Foo&, char const*, void (Foo::*)(int))::{lambda()#1}*&, char const*, void (Foo::*)(int))::{lambda()#1}*>() -# https://sourceware.org/bugzilla/show_bug.cgi?id=16752#c1 ---format=gnu-v3 -_ZNSt9_Any_data9_M_accessIPZN13ThreadManager7newTaskIRSt5_BindIFSt7_Mem_fnIM5DiaryFivEEPS5_EEIEEESt6futureINSt9result_ofIFT_DpT0_EE4typeEEOSF_DpOSG_EUlvE_EERSF_v -std::future (Diary*)>& ()>::type> ThreadManager::newTask (Diary*)>&>(std::_Bind (Diary*)>&)::{lambda()#1}*& std::_Any_data::_M_access (Diary*)>& ()>::type> ThreadManager::newTask (Diary*)>&>(std::future (Diary*)>& ()>::type> ThreadManager::newTask (Diary*)>&>(std::_Bind (Diary*)>&)::{lambda()#1}*&&)::{lambda()#1}*>() -# https://sourceware.org/bugzilla/show_bug.cgi?id=16752#c6 ---format=gnu-v3 -_ZNSt9_Any_data9_M_accessIPZN6cereal18polymorphic_detail15getInputBindingINS1_16JSONInputArchiveEEENS1_6detail15InputBindingMapIT_E11SerializersERS7_jEUlPvRSt10unique_ptrIvNS5_12EmptyDeleterIvEEEE0_EESA_v -cereal::detail::InputBindingMap::Serializers cereal::polymorphic_detail::getInputBinding(cereal::JSONInputArchive&, unsigned int)::{lambda(void*, std::unique_ptr >&)#2}*& std::_Any_data::_M_access::Serializers cereal::polymorphic_detail::getInputBinding(cereal::detail::InputBindingMap::Serializers cereal::polymorphic_detail::getInputBinding(cereal::JSONInputArchive&, unsigned int)::{lambda(void*, std::unique_ptr >&)#2}*&, unsigned int)::{lambda(void*, std::unique_ptr >&)#2}*>() -# https://sourceware.org/bugzilla/show_bug.cgi?id=16845#c2 ---format=gnu-v3 -_ZNSt9_Any_data9_M_accessIPZ4postISt8functionIFvvEEEvOT_EUlvE_EERS5_v -void post >(std::function&&)::{lambda()#1}*& std::_Any_data::_M_access >(void post >(std::function&&)::{lambda()#1}*&&)::{lambda()#1}*>() -# ---format=auto --no-params -_Z3xxxDFyuVb -xxx(unsigned long long _Fract, bool volatile) -xxx -# https://sourceware.org/bugzilla/show_bug.cgi?id=16817 ---format=auto --no-params -_QueueNotification_QueueController__$4PPPPPPPM_A_INotice___Z -_QueueNotification_QueueController__$4PPPPPPPM_A_INotice___Z -_QueueNotification_QueueController__$4PPPPPPPM_A_INotice___Z ---format=gnu-v3 -_Z1fSsB3fooS_ -f(std::string[abi:foo], std::string[abi:foo]) ---format=gnu-v3 -_Z18IndirectExternCallIPU7stdcallU7regparmILi3EEFviiEiEvT_T0_S3_ -void IndirectExternCall stdcall*)(int, int), int>(void ( regparm<3> stdcall*)(int, int), int, void ( regparm<3> stdcall*)(int, int)) -# -# ABI tags used to confuse the constructor name calculation. ---format=gnu-v3 --no-params -_ZNSt8ios_base7failureB5cxx11C1EPKcRKSt10error_code -std::ios_base::failure[abi:cxx11]::failure(char const*, std::error_code const&) -std::ios_base::failure[abi:cxx11]::failure ---format=gnu-v3 -_Z1fPDxFvvES0_ -f(void (*)() transaction_safe, void (*)() transaction_safe) -# -# These two are from gcc PR61321, and gcc PR61233 / gdb PR16957 -# ---format=gnu-v3 -_Z13function_tempIiEv1AIXszcvT_Li999EEE -void function_temp(A) -# ---format=gnu-v3 -_Z7ZipWithI7QStringS0_5QListZN4oral6detail16AdaptCreateTableI7AccountEES0_RKNS3_16CachedFieldsDataEEUlRKS0_SA_E_ET1_IDTclfp1_cvT__EcvT0__EEEERKT1_ISC_ERKT1_ISD_ET2_ -QList ZipWith(oral::detail::CachedFieldsData const&)::{lambda(QString const&, QString const&)#1}>(QList(oral::detail::CachedFieldsData const&)::{lambda(QString const&, QString const&)#1}> const&, QList const&, QString oral::detail::AdaptCreateTable(oral::detail::CachedFieldsData const&)::{lambda(QString const&, QString const&)#1}) -# -# These three are symbols generated by g++'s testsuite, which triggered the same bug as above. ---format=gnu-v3 -_Z14int_if_addableI1YERiP1AIXszpldecvPT_Li0EdecvS4_Li0EEE -int& int_if_addable(A*) -# ---format=gnu-v3 -_Z3bazIiEvP1AIXszcl3foocvT__ELCf00000000_00000000EEEE -void baz(A*) -# ---format=gnu-v3 -_Z3fooI1FEN1XIXszdtcl1PclcvT__EEE5arrayEE4TypeEv -X::Type foo() - -_Z1fIJidEEv1AIXsZT_EE -void f(A<2>) - -_ZN1A1fIJiiEiJiiiEEEvRAsPDpT_T0_DpT1_E_iS3_S5_ -void A::f(int (&) [6], int, int, int, int) - -_Z10unary_leftIJLi1ELi2ELi3EEEv1AIXflplT_EE -void unary_left<1, 2, 3>(A<(...+(1, 2, 3))>) - -_Z11unary_rightIJLi1ELi2ELi3EEEv1AIXfrplT_EE -void unary_right<1, 2, 3>(A<((1, 2, 3)+...)>) - -_Z11binary_leftIJLi1ELi2ELi3EEEv1AIXfLplLi42ET_EE -void binary_left<1, 2, 3>(A<((42)+...+(1, 2, 3))>) - -_Z12binary_rightIJLi1ELi2ELi3EEEv1AIXfRplT_Li42EEE -void binary_right<1, 2, 3>(A<((1, 2, 3)+...+(42))>) -# -# Tests a use-after-free problem PR70481 - -_Q.__0 -::Q.(void) -# -# Tests a use-after-free problem PR70481 - -_Q10-__9cafebabe. -cafebabe.::-(void) -# -# Tests integer overflow problem PR70492 - -__vt_90000000000cafebabe -__vt_90000000000cafebabe -# -# Tests write access violation PR70498 - -_Z80800000000000000000000 -_Z80800000000000000000000 -# -# Tests write access violation PR70926 - -0__Ot2m02R5T0000500000 -0__Ot2m02R5T0000500000 -# - -0__GT50000000000_ -0__GT50000000000_ -# - -__t2m05B500000000000000000_ -__t2m05B500000000000000000_ -# -# Tests stack overflow PR71696 - -__10%0__S4_0T0T0 -%0<>::%0(%0<>) diff --git a/src/cmd/vendor/golang.org/x/arch/arm/armasm/decode_test.go b/src/cmd/vendor/golang.org/x/arch/arm/armasm/decode_test.go deleted file mode 100644 index e2d91273488570..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/arm/armasm/decode_test.go +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright 2014 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. - -package armasm - -import ( - "encoding/hex" - "io/ioutil" - "strconv" - "strings" - "testing" -) - -func TestDecode(t *testing.T) { - data, err := ioutil.ReadFile("testdata/decode.txt") - if err != nil { - t.Fatal(err) - } - all := string(data) - for strings.Contains(all, "\t\t") { - all = strings.Replace(all, "\t\t", "\t", -1) - } - for _, line := range strings.Split(all, "\n") { - line = strings.TrimSpace(line) - if line == "" || strings.HasPrefix(line, "#") { - continue - } - f := strings.SplitN(line, "\t", 4) - i := strings.Index(f[0], "|") - if i < 0 { - t.Errorf("parsing %q: missing | separator", f[0]) - continue - } - if i%2 != 0 { - t.Errorf("parsing %q: misaligned | separator", f[0]) - } - size := i / 2 - code, err := hex.DecodeString(f[0][:i] + f[0][i+1:]) - if err != nil { - t.Errorf("parsing %q: %v", f[0], err) - continue - } - mode, err := strconv.Atoi(f[1]) - if err != nil { - t.Errorf("invalid mode %q in: %s", f[1], line) - continue - } - syntax, asm := f[2], f[3] - inst, err := Decode(code, Mode(mode)) - var out string - if err != nil { - out = "error: " + err.Error() - } else { - switch syntax { - case "gnu": - out = GNUSyntax(inst) - case "plan9": // [sic] - out = GoSyntax(inst, 0, nil, nil) - default: - t.Errorf("unknown syntax %q", syntax) - continue - } - } - if out != asm || inst.Len != size { - t.Errorf("Decode(%s) [%s] = %s, %d, want %s, %d", f[0], syntax, out, inst.Len, asm, size) - } - } -} diff --git a/src/cmd/vendor/golang.org/x/arch/arm/armasm/ext_test.go b/src/cmd/vendor/golang.org/x/arch/arm/armasm/ext_test.go deleted file mode 100644 index f0758625f9eaa5..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/arm/armasm/ext_test.go +++ /dev/null @@ -1,615 +0,0 @@ -// Copyright 2014 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. - -// Support for testing against external disassembler program. -// Copied and simplified from ../../x86/x86asm/ext_test.go. - -package armasm - -import ( - "bufio" - "bytes" - "encoding/hex" - "flag" - "fmt" - "io" - "io/ioutil" - "log" - "math/rand" - "os" - "os/exec" - "regexp" - "runtime" - "strings" - "testing" - "time" -) - -var ( - printTests = flag.Bool("printtests", false, "print test cases that exercise new code paths") - dumpTest = flag.Bool("dump", false, "dump all encodings") - mismatch = flag.Bool("mismatch", false, "log allowed mismatches") - longTest = flag.Bool("long", false, "long test") - keep = flag.Bool("keep", false, "keep object files around") - debug = false -) - -// An ExtInst represents a single decoded instruction parsed -// from an external disassembler's output. -type ExtInst struct { - addr uint32 - enc [4]byte - nenc int - text string -} - -func (r ExtInst) String() string { - return fmt.Sprintf("%#x: % x: %s", r.addr, r.enc, r.text) -} - -// An ExtDis is a connection between an external disassembler and a test. -type ExtDis struct { - Arch Mode - Dec chan ExtInst - File *os.File - Size int - KeepFile bool - Cmd *exec.Cmd -} - -// Run runs the given command - the external disassembler - and returns -// a buffered reader of its standard output. -func (ext *ExtDis) Run(cmd ...string) (*bufio.Reader, error) { - if *keep { - log.Printf("%s\n", strings.Join(cmd, " ")) - } - ext.Cmd = exec.Command(cmd[0], cmd[1:]...) - out, err := ext.Cmd.StdoutPipe() - if err != nil { - return nil, fmt.Errorf("stdoutpipe: %v", err) - } - if err := ext.Cmd.Start(); err != nil { - return nil, fmt.Errorf("exec: %v", err) - } - - b := bufio.NewReaderSize(out, 1<<20) - return b, nil -} - -// Wait waits for the command started with Run to exit. -func (ext *ExtDis) Wait() error { - return ext.Cmd.Wait() -} - -// testExtDis tests a set of byte sequences against an external disassembler. -// The disassembler is expected to produce the given syntax and be run -// in the given architecture mode (16, 32, or 64-bit). -// The extdis function must start the external disassembler -// and then parse its output, sending the parsed instructions on ext.Dec. -// The generate function calls its argument f once for each byte sequence -// to be tested. The generate function itself will be called twice, and it must -// make the same sequence of calls to f each time. -// When a disassembly does not match the internal decoding, -// allowedMismatch determines whether this mismatch should be -// allowed, or else considered an error. -func testExtDis( - t *testing.T, - syntax string, - arch Mode, - extdis func(ext *ExtDis) error, - generate func(f func([]byte)), - allowedMismatch func(text string, size int, inst *Inst, dec ExtInst) bool, -) { - start := time.Now() - ext := &ExtDis{ - Dec: make(chan ExtInst), - Arch: arch, - } - errc := make(chan error) - - // First pass: write instructions to input file for external disassembler. - file, f, size, err := writeInst(generate) - if err != nil { - t.Fatal(err) - } - ext.Size = size - ext.File = f - defer func() { - f.Close() - if !*keep { - os.Remove(file) - } - }() - - // Second pass: compare disassembly against our decodings. - var ( - totalTests = 0 - totalSkips = 0 - totalErrors = 0 - - errors = make([]string, 0, 100) // sampled errors, at most cap - ) - go func() { - errc <- extdis(ext) - }() - generate(func(enc []byte) { - dec, ok := <-ext.Dec - if !ok { - t.Errorf("decoding stream ended early") - return - } - inst, text := disasm(syntax, arch, pad(enc)) - totalTests++ - if *dumpTest { - fmt.Printf("%x -> %s [%d]\n", enc[:len(enc)], dec.text, dec.nenc) - } - if text != dec.text || inst.Len != dec.nenc { - suffix := "" - if allowedMismatch(text, size, &inst, dec) { - totalSkips++ - if !*mismatch { - return - } - suffix += " (allowed mismatch)" - } - totalErrors++ - if len(errors) >= cap(errors) { - j := rand.Intn(totalErrors) - if j >= cap(errors) { - return - } - errors = append(errors[:j], errors[j+1:]...) - } - errors = append(errors, fmt.Sprintf("decode(%x) = %q, %d, want %q, %d%s", enc, text, inst.Len, dec.text, dec.nenc, suffix)) - } - }) - - if *mismatch { - totalErrors -= totalSkips - } - - for _, b := range errors { - t.Log(b) - } - - if totalErrors > 0 { - t.Fail() - } - t.Logf("%d test cases, %d expected mismatches, %d failures; %.0f cases/second", totalTests, totalSkips, totalErrors, float64(totalTests)/time.Since(start).Seconds()) - - if err := <-errc; err != nil { - t.Fatalf("external disassembler: %v", err) - } - -} - -const start = 0x8000 // start address of text - -// writeInst writes the generated byte sequences to a new file -// starting at offset start. That file is intended to be the input to -// the external disassembler. -func writeInst(generate func(func([]byte))) (file string, f *os.File, size int, err error) { - f, err = ioutil.TempFile("", "armasm") - if err != nil { - return - } - - file = f.Name() - - f.Seek(start, io.SeekStart) - w := bufio.NewWriter(f) - defer w.Flush() - size = 0 - generate(func(x []byte) { - if len(x) > 4 { - x = x[:4] - } - if debug { - fmt.Printf("%#x: %x%x\n", start+size, x, zeros[len(x):]) - } - w.Write(x) - w.Write(zeros[len(x):]) - size += len(zeros) - }) - return file, f, size, nil -} - -var zeros = []byte{0, 0, 0, 0} - -// pad pads the code sequence with pops. -func pad(enc []byte) []byte { - if len(enc) < 4 { - enc = append(enc[:len(enc):len(enc)], zeros[:4-len(enc)]...) - } - return enc -} - -// disasm returns the decoded instruction and text -// for the given source bytes, using the given syntax and mode. -func disasm(syntax string, mode Mode, src []byte) (inst Inst, text string) { - // If printTests is set, we record the coverage value - // before and after, and we write out the inputs for which - // coverage went up, in the format expected in testdata/decode.text. - // This produces a fairly small set of test cases that exercise nearly - // all the code. - var cover float64 - if *printTests { - cover -= coverage() - } - - inst, err := Decode(src, mode) - if err != nil { - text = "error: " + err.Error() - } else { - text = inst.String() - switch syntax { - //case "arm": - // text = ARMSyntax(inst) - case "gnu": - text = GNUSyntax(inst) - //case "plan9": // [sic] - // text = GoSyntax(inst, 0, nil) - default: - text = "error: unknown syntax " + syntax - } - } - - if *printTests { - cover += coverage() - if cover > 0 { - max := len(src) - if max > 4 && inst.Len <= 4 { - max = 4 - } - fmt.Printf("%x|%x\t%d\t%s\t%s\n", src[:inst.Len], src[inst.Len:max], mode, syntax, text) - } - } - - return -} - -// coverage returns a floating point number denoting the -// test coverage until now. The number increases when new code paths are exercised, -// both in the Go program and in the decoder byte code. -func coverage() float64 { - /* - testing.Coverage is not in the main distribution. - The implementation, which must go in package testing, is: - - // Coverage reports the current code coverage as a fraction in the range [0, 1]. - func Coverage() float64 { - var n, d int64 - for _, counters := range cover.Counters { - for _, c := range counters { - if c > 0 { - n++ - } - d++ - } - } - if d == 0 { - return 0 - } - return float64(n) / float64(d) - } - */ - - var f float64 - f += testing.Coverage() - f += decodeCoverage() - return f -} - -func decodeCoverage() float64 { - n := 0 - for _, t := range decoderCover { - if t { - n++ - } - } - return float64(1+n) / float64(1+len(decoderCover)) -} - -// Helpers for writing disassembler output parsers. - -// hasPrefix reports whether any of the space-separated words in the text s -// begins with any of the given prefixes. -func hasPrefix(s string, prefixes ...string) bool { - for _, prefix := range prefixes { - for s := s; s != ""; { - if strings.HasPrefix(s, prefix) { - return true - } - i := strings.Index(s, " ") - if i < 0 { - break - } - s = s[i+1:] - } - } - return false -} - -// contains reports whether the text s contains any of the given substrings. -func contains(s string, substrings ...string) bool { - for _, sub := range substrings { - if strings.Contains(s, sub) { - return true - } - } - return false -} - -// isHex reports whether b is a hexadecimal character (0-9A-Fa-f). -func isHex(b byte) bool { return b == '0' || unhex[b] > 0 } - -// parseHex parses the hexadecimal byte dump in hex, -// appending the parsed bytes to raw and returning the updated slice. -// The returned bool signals whether any invalid hex was found. -// Spaces and tabs between bytes are okay but any other non-hex is not. -func parseHex(hex []byte, raw []byte) ([]byte, bool) { - hex = trimSpace(hex) - for j := 0; j < len(hex); { - for hex[j] == ' ' || hex[j] == '\t' { - j++ - } - if j >= len(hex) { - break - } - if j+2 > len(hex) || !isHex(hex[j]) || !isHex(hex[j+1]) { - return nil, false - } - raw = append(raw, unhex[hex[j]]<<4|unhex[hex[j+1]]) - j += 2 - } - return raw, true -} - -var unhex = [256]byte{ - '0': 0, - '1': 1, - '2': 2, - '3': 3, - '4': 4, - '5': 5, - '6': 6, - '7': 7, - '8': 8, - '9': 9, - 'A': 10, - 'B': 11, - 'C': 12, - 'D': 13, - 'E': 14, - 'F': 15, - 'a': 10, - 'b': 11, - 'c': 12, - 'd': 13, - 'e': 14, - 'f': 15, -} - -// index is like bytes.Index(s, []byte(t)) but avoids the allocation. -func index(s []byte, t string) int { - i := 0 - for { - j := bytes.IndexByte(s[i:], t[0]) - if j < 0 { - return -1 - } - i = i + j - if i+len(t) > len(s) { - return -1 - } - for k := 1; k < len(t); k++ { - if s[i+k] != t[k] { - goto nomatch - } - } - return i - nomatch: - i++ - } -} - -// fixSpace rewrites runs of spaces, tabs, and newline characters into single spaces in s. -// If s must be rewritten, it is rewritten in place. -func fixSpace(s []byte) []byte { - s = trimSpace(s) - for i := 0; i < len(s); i++ { - if s[i] == '\t' || s[i] == '\n' || i > 0 && s[i] == ' ' && s[i-1] == ' ' { - goto Fix - } - } - return s - -Fix: - b := s - w := 0 - for i := 0; i < len(s); i++ { - c := s[i] - if c == '\t' || c == '\n' { - c = ' ' - } - if c == ' ' && w > 0 && b[w-1] == ' ' { - continue - } - b[w] = c - w++ - } - if w > 0 && b[w-1] == ' ' { - w-- - } - return b[:w] -} - -// trimSpace trims leading and trailing space from s, returning a subslice of s. -func trimSpace(s []byte) []byte { - j := len(s) - for j > 0 && (s[j-1] == ' ' || s[j-1] == '\t' || s[j-1] == '\n') { - j-- - } - i := 0 - for i < j && (s[i] == ' ' || s[i] == '\t') { - i++ - } - return s[i:j] -} - -// pcrel matches instructions using relative addressing mode. -var ( - pcrel = regexp.MustCompile(`^((?:.* )?(?:b|bl)x?(?:eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le)?) 0x([0-9a-f]+)$`) -) - -// Generators. -// -// The test cases are described as functions that invoke a callback repeatedly, -// with a new input sequence each time. These helpers make writing those -// a little easier. - -// condCases generates conditional instructions. -func condCases(t *testing.T) func(func([]byte)) { - return func(try func([]byte)) { - // All the strides are relatively prime to 2 and therefore to 2²⁸, - // so we will not repeat any instructions until we have tried all 2²⁸. - // Using a stride other than 1 is meant to visit the instructions in a - // pseudorandom order, which gives better variety in the set of - // test cases chosen by -printtests. - stride := uint32(10007) - n := 1 << 28 / 7 - if testing.Short() { - stride = 100003 - n = 1 << 28 / 1001 - } else if *longTest { - stride = 200000033 - n = 1 << 28 - } - x := uint32(0) - for i := 0; i < n; i++ { - enc := (x%15)<<28 | x&(1<<28-1) - try([]byte{byte(enc), byte(enc >> 8), byte(enc >> 16), byte(enc >> 24)}) - x += stride - } - } -} - -// uncondCases generates unconditional instructions. -func uncondCases(t *testing.T) func(func([]byte)) { - return func(try func([]byte)) { - condCases(t)(func(enc []byte) { - enc[3] |= 0xF0 - try(enc) - }) - } -} - -func countBits(x uint32) int { - n := 0 - for ; x != 0; x >>= 1 { - n += int(x & 1) - } - return n -} - -func expandBits(x, m uint32) uint32 { - var out uint32 - for i := uint(0); i < 32; i++ { - out >>= 1 - if m&1 != 0 { - out |= (x & 1) << 31 - x >>= 1 - } - m >>= 1 - } - return out -} - -func tryCondMask(mask, val uint32, try func([]byte)) { - n := countBits(^mask) - bits := uint32(0) - for i := 0; i < 1<> 8), byte(x >> 16), byte(x >> 24)}) - } -} - -// vfpCases generates VFP instructions. -func vfpCases(t *testing.T) func(func([]byte)) { - const ( - vfpmask uint32 = 0xFF00FE10 - vfp uint32 = 0x0E009A00 - ) - return func(try func([]byte)) { - tryCondMask(0xff00fe10, 0x0e009a00, try) // standard VFP instruction space - tryCondMask(0xffc00f7f, 0x0e000b10, try) // VFP MOV core reg to/from float64 half - tryCondMask(0xffe00f7f, 0x0e000a10, try) // VFP MOV core reg to/from float32 - tryCondMask(0xffef0fff, 0x0ee10a10, try) // VFP MOV core reg to/from cond codes - } -} - -// hexCases generates the cases written in hexadecimal in the encoded string. -// Spaces in 'encoded' separate entire test cases, not individual bytes. -func hexCases(t *testing.T, encoded string) func(func([]byte)) { - return func(try func([]byte)) { - for _, x := range strings.Fields(encoded) { - src, err := hex.DecodeString(x) - if err != nil { - t.Errorf("parsing %q: %v", x, err) - } - try(src) - } - } -} - -// testdataCases generates the test cases recorded in testdata/decode.txt. -// It only uses the inputs; it ignores the answers recorded in that file. -func testdataCases(t *testing.T) func(func([]byte)) { - var codes [][]byte - data, err := ioutil.ReadFile("testdata/decode.txt") - if err != nil { - t.Fatal(err) - } - for _, line := range strings.Split(string(data), "\n") { - line = strings.TrimSpace(line) - if line == "" || strings.HasPrefix(line, "#") { - continue - } - f := strings.Fields(line)[0] - i := strings.Index(f, "|") - if i < 0 { - t.Errorf("parsing %q: missing | separator", f) - continue - } - if i%2 != 0 { - t.Errorf("parsing %q: misaligned | separator", f) - } - code, err := hex.DecodeString(f[:i] + f[i+1:]) - if err != nil { - t.Errorf("parsing %q: %v", f, err) - continue - } - codes = append(codes, code) - } - - return func(try func([]byte)) { - for _, code := range codes { - try(code) - } - } -} - -func caller(skip int) string { - pc, _, _, _ := runtime.Caller(skip) - f := runtime.FuncForPC(pc) - name := "?" - if f != nil { - name = f.Name() - if i := strings.LastIndex(name, "."); i >= 0 { - name = name[i+1:] - } - } - return name -} diff --git a/src/cmd/vendor/golang.org/x/arch/arm/armasm/objdump_test.go b/src/cmd/vendor/golang.org/x/arch/arm/armasm/objdump_test.go deleted file mode 100644 index db51902cc7a7c7..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/arm/armasm/objdump_test.go +++ /dev/null @@ -1,268 +0,0 @@ -// Copyright 2014 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. - -package armasm - -import ( - "encoding/binary" - "strings" - "testing" -) - -func TestObjdumpARMTestdata(t *testing.T) { testObjdumpARM(t, testdataCases(t)) } -func TestObjdumpARMManual(t *testing.T) { testObjdumpARM(t, hexCases(t, objdumpManualTests)) } -func TestObjdumpARMCond(t *testing.T) { testObjdumpARM(t, condCases(t)) } -func TestObjdumpARMUncond(t *testing.T) { testObjdumpARM(t, uncondCases(t)) } -func TestObjdumpARMVFP(t *testing.T) { testObjdumpARM(t, vfpCases(t)) } - -// objdumpManualTests holds test cases that will be run by TestObjdumpARMManual. -// If you are debugging a few cases that turned up in a longer run, it can be useful -// to list them here and then use -run=Manual, particularly with tracing enabled. -// Note that these are byte sequences, so they must be reversed from the usual -// word presentation. -var objdumpManualTests = ` -002a9b1d -001b9bed -020b8ded -003a9b1d -060b8ded -fcde1100 -b4de1100 -bc480000 -0b008de7 -0b00ade7 -fdbcfaf7 -` - -// allowedMismatchObjdump reports whether the mismatch between text and dec -// should be allowed by the test. -func allowedMismatchObjdump(text string, size int, inst *Inst, dec ExtInst) bool { - if hasPrefix(text, "error:") { - if hasPrefix(dec.text, unsupported...) || strings.Contains(dec.text, "invalid:") || strings.HasSuffix(dec.text, "^") || strings.Contains(dec.text, "f16.f64") || strings.Contains(dec.text, "f64.f16") { - return true - } - // word 4320F02C: libopcodes says 'nopmi {44}'. - if hasPrefix(dec.text, "nop") && strings.Contains(dec.text, "{") { - return true - } - } - - if hasPrefix(dec.text, "error:") && text == "undef" && inst.Enc == 0xf7fabcfd { - return true - } - - // word 00f02053: libopcodes says 'noppl {0}'. - if hasPrefix(dec.text, "nop") && hasPrefix(text, "nop") && dec.text == text+" {0}" { - return true - } - - // word F57FF04F. we say 'dsb #15', libopcodes says 'dsb sy'. - if hasPrefix(text, "dsb") && hasPrefix(dec.text, "dsb") { - return true - } - // word F57FF06F. we say 'isb #15', libopcodes says 'isb sy'. - if hasPrefix(text, "isb") && hasPrefix(dec.text, "isb") { - return true - } - // word F57FF053. we say 'dmb #3', libopcodes says 'dmb osh'. - if hasPrefix(text, "dmb") && hasPrefix(dec.text, "dmb") { - return true - } - - // word 992D0000. push/stmdb with no registers (undefined). - // we say 'stmdbls sp!, {}', libopcodes says 'pushls {}'. - if hasPrefix(text, "stmdb") && hasPrefix(dec.text, "push") && strings.Contains(text, "{}") && strings.Contains(dec.text, "{}") { - return true - } - - // word 28BD0000. pop/ldm with no registers (undefined). - // we say 'ldmcs sp!, {}', libopcodes says 'popcs {}'. - if hasPrefix(text, "ldm") && hasPrefix(dec.text, "pop") && strings.Contains(text, "{}") && strings.Contains(dec.text, "{}") { - return true - } - - // word 014640F0. - // libopcodes emits #-0 for negative zero; we don't. - if strings.Replace(dec.text, "#-0", "#0", -1) == text || strings.Replace(dec.text, ", #-0", "", -1) == text { - return true - } - - // word 91EF90F0. we say 'strdls r9, [pc, #0]!' but libopcodes says 'strdls r9, [pc]'. - // word D16F60F0. we say 'strdle r6, [pc, #0]!' but libopcodes says 'strdle r6, [pc, #-0]'. - if strings.Replace(text, ", #0]!", "]", -1) == strings.Replace(dec.text, ", #-0]", "]", -1) { - return true - } - - // word 510F4000. we say apsr, libopcodes says CPSR. - if strings.Replace(dec.text, "CPSR", "apsr", -1) == text { - return true - } - - // word 06A4B059. - // for ssat and usat, libopcodes decodes asr #0 as asr #0 but the manual seems to say it should be asr #32. - // There is never an asr #0. - if strings.Replace(dec.text, ", asr #0", ", asr #32", -1) == text { - return true - } - - if len(dec.enc) >= 4 { - raw := binary.LittleEndian.Uint32(dec.enc[:4]) - - // word 21FFF0B5. - // the manual is clear that this is pre-indexed mode (with !) but libopcodes generates post-index (without !). - if raw&0x01200000 == 0x01200000 && strings.Replace(text, "!", "", -1) == dec.text { - return true - } - - // word C100543E: libopcodes says tst, but no evidence for that. - if strings.HasPrefix(dec.text, "tst") && raw&0x0ff00000 != 0x03100000 && raw&0x0ff00000 != 0x01100000 { - return true - } - - // word C3203CE8: libopcodes says teq, but no evidence for that. - if strings.HasPrefix(dec.text, "teq") && raw&0x0ff00000 != 0x03300000 && raw&0x0ff00000 != 0x01300000 { - return true - } - - // word D14C552E: libopcodes says cmp but no evidence for that. - if strings.HasPrefix(dec.text, "cmp") && raw&0x0ff00000 != 0x03500000 && raw&0x0ff00000 != 0x01500000 { - return true - } - - // word 2166AA4A: libopcodes says cmn but no evidence for that. - if strings.HasPrefix(dec.text, "cmn") && raw&0x0ff00000 != 0x03700000 && raw&0x0ff00000 != 0x01700000 { - return true - } - - // word E70AEEEF: libopcodes says str but no evidence for that. - if strings.HasPrefix(dec.text, "str") && len(dec.text) >= 5 && (dec.text[3] == ' ' || dec.text[5] == ' ') && raw&0x0e500018 != 0x06000000 && raw&0x0e500000 != 0x0400000 { - return true - } - - // word B0AF48F4: libopcodes says strd but P=0,W=1 which is unpredictable. - if hasPrefix(dec.text, "ldr", "str") && raw&0x01200000 == 0x00200000 { - return true - } - - // word B6CC1C76: libopcodes inexplicably says 'uxtab16lt r1, ip, r6, ROR #24' instead of 'uxtab16lt r1, ip, r6, ror #24' - if strings.ToLower(dec.text) == text { - return true - } - - // word F410FDA1: libopcodes says PLDW but the manual is clear that PLDW is F5/F7, not F4. - // word F7D0FB17: libopcodes says PLDW but the manual is clear that PLDW has 0x10 clear - if hasPrefix(dec.text, "pld") && raw&0xfd000010 != 0xf5000000 { - return true - } - - // word F650FE14: libopcodes says PLI but the manual is clear that PLI has 0x10 clear - if hasPrefix(dec.text, "pli") && raw&0xff000010 != 0xf6000000 { - return true - } - } - - return false -} - -// Instructions known to libopcodes (or xed) but not to us. -// Most of these are floating point coprocessor instructions. -var unsupported = strings.Fields(` - abs - acs - adf - aes - asn - atn - cdp - cf - cmf - cnf - cos - cps - crc32 - dvf - eret - exp - fadd - fcmp - fcpy - fcvt - fdiv - fdv - fix - fld - flt - fmac - fmd - fml - fmr - fms - fmul - fmx - fneg - fnm - frd - fsit - fsq - fst - fsu - fto - fui - hlt - hvc - lda - ldc - ldf - lfm - lgn - log - mar - mcr - mcrr - mia - mnf - mra - mrc - mrrc - mrs - msr - msr - muf - mvf - nrm - pol - pow - rdf - rfc - rfe - rfs - rmf - rnd - rpw - rsf - sdiv - sev - sfm - sha1 - sha256 - sin - smc - sqt - srs - stc - stf - stl - suf - tan - udf - udiv - urd - vfma - vfms - vfnma - vfnms - vrint - wfc - wfs -`) diff --git a/src/cmd/vendor/golang.org/x/arch/arm/armasm/objdumpext_test.go b/src/cmd/vendor/golang.org/x/arch/arm/armasm/objdumpext_test.go deleted file mode 100644 index 033e923d1f2c99..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/arm/armasm/objdumpext_test.go +++ /dev/null @@ -1,259 +0,0 @@ -// Copyright 2014 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. - -// Copied and simplified from ../../x86/x86asm/objdumpext_test.go. - -package armasm - -import ( - "bytes" - "debug/elf" - "encoding/binary" - "fmt" - "io" - "log" - "os" - "strconv" - "strings" - "testing" -) - -const objdumpPath = "/usr/local/bin/arm-linux-elf-objdump" - -func testObjdumpARM(t *testing.T, generate func(func([]byte))) { - testObjdumpArch(t, generate, ModeARM) -} - -func testObjdumpArch(t *testing.T, generate func(func([]byte)), arch Mode) { - if testing.Short() { - t.Skip("skipping objdump test in short mode") - } - if _, err := os.Stat(objdumpPath); err != nil { - t.Skip(err) - } - - testExtDis(t, "gnu", arch, objdump, generate, allowedMismatchObjdump) -} - -func objdump(ext *ExtDis) error { - // File already written with instructions; add ELF header. - if ext.Arch == ModeARM { - if err := writeELF32(ext.File, ext.Size); err != nil { - return err - } - } else { - panic("unknown arch") - } - - b, err := ext.Run(objdumpPath, "-d", "-z", ext.File.Name()) - if err != nil { - return err - } - - var ( - nmatch int - reading bool - next uint32 = start - addr uint32 - encbuf [4]byte - enc []byte - text string - ) - flush := func() { - if addr == next { - if m := pcrel.FindStringSubmatch(text); m != nil { - targ, _ := strconv.ParseUint(m[2], 16, 64) - text = fmt.Sprintf("%s .%+#x", m[1], int32(uint32(targ)-addr-uint32(len(enc)))) - } - if strings.HasPrefix(text, "stmia") { - text = "stm" + text[5:] - } - if strings.HasPrefix(text, "stmfd") { - text = "stmdb" + text[5:] - } - if strings.HasPrefix(text, "ldmfd") { - text = "ldm" + text[5:] - } - text = strings.Replace(text, "#0.0", "#0", -1) - if text == "undefined" && len(enc) == 4 { - text = "error: unknown instruction" - enc = nil - } - if len(enc) == 4 { - // prints as word but we want to record bytes - enc[0], enc[3] = enc[3], enc[0] - enc[1], enc[2] = enc[2], enc[1] - } - ext.Dec <- ExtInst{addr, encbuf, len(enc), text} - encbuf = [4]byte{} - enc = nil - next += 4 - } - } - var textangle = []byte("<.text>:") - for { - line, err := b.ReadSlice('\n') - if err != nil { - if err == io.EOF { - break - } - return fmt.Errorf("reading objdump output: %v", err) - } - if bytes.Contains(line, textangle) { - reading = true - continue - } - if !reading { - continue - } - if debug { - os.Stdout.Write(line) - } - if enc1 := parseContinuation(line, encbuf[:len(enc)]); enc1 != nil { - enc = enc1 - continue - } - flush() - nmatch++ - addr, enc, text = parseLine(line, encbuf[:0]) - if addr > next { - return fmt.Errorf("address out of sync expected <= %#x at %q in:\n%s", next, line, line) - } - } - flush() - if next != start+uint32(ext.Size) { - return fmt.Errorf("not enough results found [%d %d]", next, start+ext.Size) - } - if err := ext.Wait(); err != nil { - return fmt.Errorf("exec: %v", err) - } - - return nil -} - -var ( - undefined = []byte("") - unpredictable = []byte("") - illegalShifter = []byte("") -) - -func parseLine(line []byte, encstart []byte) (addr uint32, enc []byte, text string) { - oline := line - i := index(line, ":\t") - if i < 0 { - log.Fatalf("cannot parse disassembly: %q", oline) - } - x, err := strconv.ParseUint(string(trimSpace(line[:i])), 16, 32) - if err != nil { - log.Fatalf("cannot parse disassembly: %q", oline) - } - addr = uint32(x) - line = line[i+2:] - i = bytes.IndexByte(line, '\t') - if i < 0 { - log.Fatalf("cannot parse disassembly: %q", oline) - } - enc, ok := parseHex(line[:i], encstart) - if !ok { - log.Fatalf("cannot parse disassembly: %q", oline) - } - line = trimSpace(line[i:]) - if bytes.Contains(line, undefined) { - text = "undefined" - return - } - if bytes.Contains(line, illegalShifter) { - text = "undefined" - return - } - if false && bytes.Contains(line, unpredictable) { - text = "unpredictable" - return - } - if i := bytes.IndexByte(line, ';'); i >= 0 { - line = trimSpace(line[:i]) - } - text = string(fixSpace(line)) - return -} - -func parseContinuation(line []byte, enc []byte) []byte { - i := index(line, ":\t") - if i < 0 { - return nil - } - line = line[i+1:] - enc, _ = parseHex(line, enc) - return enc -} - -// writeELF32 writes an ELF32 header to the file, -// describing a text segment that starts at start -// and extends for size bytes. -func writeELF32(f *os.File, size int) error { - f.Seek(0, io.SeekStart) - var hdr elf.Header32 - var prog elf.Prog32 - var sect elf.Section32 - var buf bytes.Buffer - binary.Write(&buf, binary.LittleEndian, &hdr) - off1 := buf.Len() - binary.Write(&buf, binary.LittleEndian, &prog) - off2 := buf.Len() - binary.Write(&buf, binary.LittleEndian, §) - off3 := buf.Len() - buf.Reset() - data := byte(elf.ELFDATA2LSB) - hdr = elf.Header32{ - Ident: [16]byte{0x7F, 'E', 'L', 'F', 1, data, 1}, - Type: 2, - Machine: uint16(elf.EM_ARM), - Version: 1, - Entry: start, - Phoff: uint32(off1), - Shoff: uint32(off2), - Flags: 0x05000002, - Ehsize: uint16(off1), - Phentsize: uint16(off2 - off1), - Phnum: 1, - Shentsize: uint16(off3 - off2), - Shnum: 3, - Shstrndx: 2, - } - binary.Write(&buf, binary.LittleEndian, &hdr) - prog = elf.Prog32{ - Type: 1, - Off: start, - Vaddr: start, - Paddr: start, - Filesz: uint32(size), - Memsz: uint32(size), - Flags: 5, - Align: start, - } - binary.Write(&buf, binary.LittleEndian, &prog) - binary.Write(&buf, binary.LittleEndian, §) // NULL section - sect = elf.Section32{ - Name: 1, - Type: uint32(elf.SHT_PROGBITS), - Addr: start, - Off: start, - Size: uint32(size), - Flags: uint32(elf.SHF_ALLOC | elf.SHF_EXECINSTR), - Addralign: 4, - } - binary.Write(&buf, binary.LittleEndian, §) // .text - sect = elf.Section32{ - Name: uint32(len("\x00.text\x00")), - Type: uint32(elf.SHT_STRTAB), - Addr: 0, - Off: uint32(off2 + (off3-off2)*3), - Size: uint32(len("\x00.text\x00.shstrtab\x00")), - Addralign: 1, - } - binary.Write(&buf, binary.LittleEndian, §) - buf.WriteString("\x00.text\x00.shstrtab\x00") - f.Write(buf.Bytes()) - return nil -} diff --git a/src/cmd/vendor/golang.org/x/arch/arm/armasm/testdata/Makefile b/src/cmd/vendor/golang.org/x/arch/arm/armasm/testdata/Makefile deleted file mode 100644 index 1adab68517b0ad..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/arm/armasm/testdata/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -newdecode.txt: - cd ..; go test -cover -run 'ObjdumpARMCond' -v -timeout 10h -printtests -long 2>&1 | tee log - cd ..; go test -cover -run 'ObjdumpARMUncond' -v -timeout 10h -printtests -long 2>&1 | tee -a log - egrep ' (gnu|plan9) ' ../log |sort >newdecode.txt - diff --git a/src/cmd/vendor/golang.org/x/arch/arm/armasm/testdata/decode.txt b/src/cmd/vendor/golang.org/x/arch/arm/armasm/testdata/decode.txt deleted file mode 100644 index 7653ee06433ef1..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/arm/armasm/testdata/decode.txt +++ /dev/null @@ -1,1600 +0,0 @@ -000001f1| 1 gnu setend le -00100f61| 1 gnu mrsvs r1, apsr -00f02053| 1 gnu noppl -00f0d4f4| 1 gnu pli [r4] -01f020d3| 1 gnu yieldle -02002d59| 1 gnu stmdbpl sp!, {r1} -021da9d8| 1 gnu stmle r9!, {r1, r8, sl, fp, ip} -02c0b071| 1 gnu movsvc ip, r2 -02f02073| 1 gnu wfevc -03f02013| 1 gnu wfine -03f05df7| 1 gnu pld [sp, -r3] -04009d34| 1 gnu popcc {r0} -043a52b1| 1 gnu cmplt r2, r4, lsl #20 -04402de5| 1 gnu push {r4} -045b148d| 1 gnu vldrhi d5, [r4, #-16] -04f02093| 1 gnu sevls -0793eab0| 1 gnu rsclt r9, sl, r7, lsl #6 -079bfb9e| 1 gnu vmovls.f64 d25, #183 -0a4fc9d3| 1 gnu bicle r4, r9, #10, 30 -0bac7ab6| 1 gnu ldrbtlt sl, [sl], -fp, lsl #24 -0c2aee44| 1 gnu strbtmi r2, [lr], #2572 -0c4bb000| 1 gnu adcseq r4, r0, ip, lsl #22 -0e26d561| 1 gnu bicsvs r2, r5, lr, lsl #12 -0f0fa011| 1 gnu lslne r0, pc, #30 -0fa448e0| 1 gnu sub sl, r8, pc, lsl #8 -101af1de| 1 gnu vmrsle r1, fpscr -108a0cee| 1 gnu vmov s24, r8 -108a1dae| 1 gnu vmovge r8, s26 -108ae14e| 1 gnu vmsrmi fpscr, r8 -10faf1ae| 1 gnu vmrsge apsr_nzcv, fpscr -10fb052e| 1 gnu vmovcs.32 d5[0], pc -11c902b7| 1 gnu smladlt r2, r1, r9, ip -11ef5b16| 1 gnu uadd16ne lr, fp, r1 -12fa87a7| 1 gnu usad8ge r7, r2, sl -135f2956| 1 gnu qadd16pl r5, r9, r3 -13de9aa1| 1 gnu orrsge sp, sl, r3, lsl lr -145c0e40| 1 gnu andmi r5, lr, r4, lsl ip -150f7fd6| 1 gnu uhadd16le r0, pc, r5 -15b9bf12| 1 gnu adcsne fp, pc, #344064 -16373391| 1 gnu teqls r3, r6, lsl r7 -19ef1966| 1 gnu sadd16vs lr, r9, r9 -1ab0b091| 1 gnu lslsls fp, sl, r0 -1b9f6fe6| 1 gnu uqadd16 r9, pc, fp -1bb58557| 1 gnu usada8pl r5, fp, r5, fp -1beff8e0| 1 gnu rscs lr, r8, fp, lsl pc -1caff0e6| 1 gnu usat sl, #16, ip, lsl #30 -1d0f3d36| 1 gnu shadd16cc r0, sp, sp -1dca1d52| 1 gnu andspl ip, sp, #118784 -1e4891d0| 1 gnu addsle r4, r1, lr, lsl r8 -1f0889e6| 1 gnu pkhbt r0, r9, pc, lsl #16 -1f1f6fe1| 1 gnu clz r1, pc -1f26d157| 1 gnu bfcpl r2, #12, #6 -1ff07ff5| 1 gnu clrex -1fff2fd1| 1 gnu bxle pc -20f153f6| 1 gnu pli [r3, -r0, lsr #2] -21047013| 1 gnu cmnne r0, #553648128 -21c2eb8b| 1 gnu blhi .-0x50f778 -21c2ebfb| 1 gnu blx .-0x50f776 -21fa62ee| 1 gnu vmul.f32 s31, s4, s3 -23005720| 1 gnu subscs r0, r7, r3, lsr #32 -236a303e| 1 gnu vaddcc.f32 s12, s0, s7 -23f055f6| 1 gnu pli [r5, -r3, lsr #32] -2430a031| 1 gnu lsrcc r3, r4, #32 -245d0803| 1 gnu movweq r5, #36132 -251a86be| 1 gnu vdivlt.f32 s2, s12, s11 -25db7b81| 1 gnu cmnhi fp, r5, lsr #22 -26bc3553| 1 gnu teqpl r5, #9728 -277c2d69| 1 gnu pushvs {r0, r1, r2, r5, sl, fp, ip, sp, lr} -29fc1cf5| 1 gnu pldw [ip, #-3113] -29ff2fc1| 1 gnu bxjgt r9 -2decd9c0| 1 gnu sbcsgt lr, r9, sp, lsr #24 -30fa5e47| 1 gnu smmulrmi lr, r0, sl -316f64d6| 1 gnu uqasxle r6, r4, r1 -323f5da6| 1 gnu uasxge r3, sp, r2 -327fe5e6| 1 gnu usat16 r7, #5, r2 -330151e3| 1 gnu cmp r1, #-1073741812 -34af2ae6| 1 gnu qasx sl, sl, r4 -35fd3710| 1 gnu eorsne pc, r7, r5, lsr sp -36def1c1| 1 gnu mvnsgt sp, r6, lsr lr -3801b061| 1 gnu lsrsvs r0, r8, r1 -38985477| 1 gnu smmlarvc r4, r8, r8, r9 -3a2fbfa6| 1 gnu revge r2, sl -3a3f1b06| 1 gnu sasxeq r3, fp, sl -3a7fa346| 1 gnu ssat16mi r7, #4, sl -3a943b94| 1 gnu ldrtls r9, [fp], #-1082 -3bf505e7| 1 gnu smuadx r5, fp, r5 -3cef7086| 1 gnu uhasxhi lr, r0, ip -3e5f3ec6| 1 gnu shasxgt r5, lr, lr -3f4fff86| 1 gnu rbithi r4, pc -3faf4717| 1 gnu smlaldxne sl, r7, pc, pc -3fff2fc1| 1 gnu blxgt pc -402bbf7e| 1 gnu vcvtvc.u16.f64 d2, d2, #16 -403ab5de| 1 gnu vcmple.f32 s6, #0 -40eb363e| 1 gnu vsubcc.f64 d14, d6, d0 -420f73d1| 1 gnu cmnle r3, r2, asr #30 -424a648e| 1 gnu vnmulhi.f32 s9, s8, s4 -4284d717| 1 gnu ldrbne r8, [r7, r2, asr #8] -42a599c3| 1 gnu orrsgt sl, r9, #276824064 -42abf0be| 1 gnu vmovlt.f64 d26, d2 -446ea031| 1 gnu asrcc r6, r4, #28 -4a953557| 1 gnu ldrpl r9, [r5, -sl, asr #10]! -4ab6f712| 1 gnu rscsne fp, r7, #77594624 -4af07ff5| 1 gnu dsb #10 -4df6def4| 1 gnu pli [lr, #1613] -4efbf52e| 1 gnu vcmpcs.f64 d31, #0 -50aaac79| 1 gnu stmibvc ip!, {r4, r6, r9, fp, sp, pc} -50caf011| 1 gnu mvnsne ip, r0, asr sl -50f04961| 1 gnu qdaddvs pc, r0, r9 -51282008| 1 gnu stmdaeq r0!, {r0, r4, r6, fp, sp} -52bf6576| 1 gnu uqsaxvc fp, r5, r2 -5345c9d0| 1 gnu sbcle r4, r9, r3, asr r5 -538f5e46| 1 gnu usaxmi r8, lr, r3 -54106d31| 1 gnu qdsubcc r1, r4, sp -56e0e557| 1 gnu ubfxpl lr, r6, #0, #6 -57073d11| 1 gnu teqne sp, r7, asr r7 -58bb0aa9| 1 gnu stmdbge sl, {r3, r4, r6, r8, r9, fp, ip, sp, pc} -58f007b1| 1 gnu qaddlt pc, r8, r7 -59fd0e77| 1 gnu smusdvc lr, r9, sp -5ab7f1c5| 1 gnu ldrbgt fp, [r1, #1882]! -5abf23c6| 1 gnu qsaxgt fp, r3, sl -5b8f1c96| 1 gnu ssaxls r8, ip, fp -5b98ab97| 1 gnu sbfxls r9, fp, #16, #12 -5bc9b041| 1 gnu asrsmi ip, fp, r9 -5bf07ff5| 1 gnu dmb #11 -5c102b81| 1 gnu qsubhi r1, ip, fp -5caa49e1| 1 gnu qdadd sl, ip, r9 -5d3f7226| 1 gnu uhsaxcs r3, r2, sp -5db55470| 1 gnu subsvc fp, r4, sp, asr r5 -5ef14387| 1 gnu smlsldhi pc, r3, lr, r1 -5f540a11| 1 gnu qaddne r5, pc, sl -5f9079d1| 1 gnu cmnle r9, pc, asr r0 -5faf3f66| 1 gnu shsaxvs sl, pc, pc -605071d7| 1 gnu ldrble r5, [r1, -r0, rrx]! -614adc76| 1 gnu ldrbvc r4, [ip], r1, ror #20 -616b9e42| 1 gnu addsmi r6, lr, #99328 -62c84f15| 1 gnu strbne ip, [pc, #-2146] -62f051f7| 1 gnu pld [r1, -r2, rrx] -6346c393| 1 gnu bicls r4, r3, #103809024 -654abbae| 1 gnu vcvtge.f32.u16 s8, s8, #5 -65a5f0e3| 1 gnu mvns sl, #423624704 -65f796f7| 1 gnu pldw [r6, r5, ror #14] -670bb12e| 1 gnu vnegcs.f64 d0, d23 -67903731| 1 gnu teqcc r7, r7, rrx -68ddc637| 1 gnu strbcc sp, [r6, r8, ror #26] -695b3ab6| 1 gnu ldrtlt r5, [sl], -r9, ror #22 -697cfc71| 1 gnu mvnsvc r7, r9, ror #24 -6a0ab3ee| 1 gnu vcvtb.f16.f32 s0, s21 -6ad9ad54| 1 gnu strtpl sp, [sp], #2410 -6af07ff5| 1 gnu isb #10 -6afa6f10| 1 gnu rsbne pc, pc, sl, ror #20 -6d5b19ee| 1 gnu vnmla.f64 d5, d9, d29 -6d60b071| 1 gnu rrxsvc r6, sp -6df754f7| 1 gnu pld [r4, -sp, ror #14] -70065821| 1 gnu cmpcs r8, r0, ror r6 -7050ed86| 1 gnu uxtabhi r5, sp, r0 -715f1186| 1 gnu ssub16hi r5, r1, r1 -716c9805| 1 gnu ldreq r6, [r8, #3185] -718d5ab1| 1 gnu cmplt sl, r1, ror sp -71c8cfb6| 1 gnu uxtb16lt ip, r1, ror #16 -7294af06| 1 gnu sxtbeq r9, r2, ror #8 -72c0bac6| 1 gnu sxtahgt ip, sl, r2 -730f6716| 1 gnu uqsub16ne r0, r7, r3 -73608f46| 1 gnu sxtb16mi r6, r3 -73687f22| 1 gnu rsbscs r6, pc, #7536640 -74308816| 1 gnu sxtab16ne r3, r8, r4 -757f3456| 1 gnu shsub16pl r7, r4, r5 -77788016| 1 gnu sxtab16ne r7, r0, r7, ror #16 -78061671| 1 gnu tstvc r6, r8, ror r6 -780a2fe1| 1 gnu bkpt 0xf0a8 -7850abd6| 1 gnu sxtable r5, fp, r8 -792cef26| 1 gnu uxtbcs r2, r9, ror #24 -799eb8e0| 1 gnu adcs r9, r8, r9, ror lr -799f5726| 1 gnu usub16cs r9, r7, r9 -79d0bf16| 1 gnu sxthne sp, r9 -7a037ba1| 1 gnu cmnge fp, sl, ror r3 -7b0f2566| 1 gnu qsub16vs r0, r5, fp -7b79dd51| 1 gnu bicspl r7, sp, fp, ror r9 -7b9a9f1d| 1 gnu vldrne s18, [pc, #492] -7c70cea6| 1 gnu uxtab16ge r7, lr, ip -7d48f966| 1 gnu uxtahvs r4, r9, sp, ror #16 -7d5c13a1| 1 gnu tstge r3, sp, ror ip -7e0001f1| 1 gnu setend le -7e1c0ba7| 1 gnu smlsdxge fp, lr, ip, r1 -7e567e40| 1 gnu rsbsmi r5, lr, lr, ror r6 -7e8f73b6| 1 gnu uhsub16lt r8, r3, lr -7ef0ffd6| 1 gnu uxthle pc, lr -7faaa011| 1 gnu rorne sl, pc, sl -81f19af7| 1 gnu pldw [sl, r1, lsl #3] -82033901| 1 gnu teqeq r9, r2, lsl #7 -82f316f5| 1 gnu pldw [r6, #-898] -830201f1| 1 gnu setend be -838a3b91| 1 gnu teqls fp, r3, lsl #21 -8408af2f| 1 gnu svccs 0x00af0884 -884201d1| 1 gnu smlabble r1, r8, r2, r4 -8aa12e31| 1 gnu smlawbcc lr, sl, r1, sl -8b9b99c0| 1 gnu addsgt r9, r9, fp, lsl #23 -8c005c81| 1 gnu cmphi ip, ip, lsl #1 -8fb429c6| 1 gnu strtgt fp, [r9], -pc, lsl #9 -907b1f9e| 1 gnu vmovls.32 r7, d31[0] -91975f25| 1 gnu ldrbcs r9, [pc, #-1937] -91b010e3| 1 gnu tst r0, #145 -927facb1| 1 gnu strexdlt r7, r2, [ip] -92904c91| 1 gnu swpbls r9, r2, [ip] -92af1226| 1 gnu sadd8cs sl, r2, r2 -92b28c70| 1 gnu umullvc fp, ip, r2, r2 -945f68a6| 1 gnu uqadd8ge r5, r8, r4 -950b2560| 1 gnu mlavs r5, r5, fp, r0 -969fcf71| 1 gnu strexbvc r9, r6, [pc] -96cf35e6| 1 gnu shadd8 ip, r5, r6 -98060eb0| 1 gnu mullt lr, r8, r6 -9843fb93| 1 gnu mvnsls r4, #152, 6 -9a3fe2b0| 1 gnu smlallt r3, r2, sl, pc -9aef58b6| 1 gnu uadd8lt lr, r8, sl -9afcdff5| 1 gnu pld [pc, #3226] -9c221810| 1 gnu mulsne r8, ip, r2 -9c3bc9dd| 1 gnu vstrle d19, [r9, #624] -9c5f2606| 1 gnu qadd8eq r5, r6, ip -9d87dac0| 1 gnu smullsgt r8, sl, sp, r7 -9e0f7c86| 1 gnu uhadd8hi r0, ip, lr -9e814560| 1 gnu umaalvs r8, r5, lr, r1 -9e9f8dc1| 1 gnu strexgt r9, lr, [sp] -9ec3c9d7| 1 gnu bfile ip, lr, #7, #3 -9ed26d90| 1 gnu mlsls sp, lr, r2, sp -9f7fd9c1| 1 gnu ldrexbgt r7, [r9] -9f7fea91| 1 gnu strexhls r7, pc, [sl] -9f9f9921| 1 gnu ldrexcs r9, [r9] -9faffd21| 1 gnu ldrexhcs sl, [sp] -9fcfbd61| 1 gnu ldrexdvs ip, [sp] -9ff7a710| 1 gnu umlalne pc, r7, pc, r7 -a05459d3| 1 gnu cmple r9, #160, 8 -a3062be1| 1 gnu smulwb fp, r3, r6 -a68a92b1| 1 gnu orrslt r8, r2, r6, lsr #21 -abff55f6| 1 gnu pli [r5, -fp, lsr #31] -addbf8ea| 1 gnu b .-0x1c9148 -ae79b021| 1 gnu lsrscs r7, lr, #19 -b590a3b1| 1 gnu strhlt r9, [r3, r5]! -b5b2e390| 1 gnu strhtls fp, [r3], #37 -b6ac4e30| 1 gnu strhcc sl, [lr], #-198 -b73fff86| 1 gnu revshhi r3, r7 -b75fbfc6| 1 gnu rev16gt r5, r7 -b80b7c80| 1 gnu ldrhthi r0, [ip], #-184 -b82035e0| 1 gnu ldrht r2, [r5], -r8 -b8877391| 1 gnu ldrhls r8, [r3, #-120]! -b9703e41| 1 gnu ldrhmi r7, [lr, -r9]! -b9cf8c16| 1 gnu selne ip, ip, r9 -bd81bd58| 1 gnu poppl {r0, r2, r3, r4, r5, r7, r8, pc} -bdfdb469| 1 gnu ldmibvs r4!, {r0, r2, r3, r4, r5, r7, r8, sl, fp, ip, sp, lr, pc} -beb02500| 1 gnu strhteq fp, [r5], -lr -bf1a5e42| 1 gnu subsmi r1, lr, #782336 -c19a4d5e| 1 gnu vmlspl.f32 s19, s27, s2 -c1aab15e| 1 gnu vsqrtpl.f32 s20, s2 -c354b003| 1 gnu movseq r5, #-1023410176 -c4091dc1| 1 gnu tstgt sp, r4, asr #19 -c50e13a9| 1 gnu ldmdbge r3, {r0, r2, r6, r7, r9, sl, fp} -c68c8637| 1 gnu strcc r8, [r6, r6, asr #25] -c6ad48e3| 1 gnu movt sl, #36294 -c6f65ff5| 1 gnu pld [pc, #-1734] -c8a92f10| 1 gnu eorne sl, pc, r8, asr #19 -c9016b61| 1 gnu smulbtvs fp, r9, r1 -cadbf49e| 1 gnu vcmpels.f64 d29, d10 -ce9de476| 1 gnu strbtvc r9, [r4], lr, asr #27 -cf3c1ab1| 1 gnu tstlt sl, pc, asr #25 -d355aab6| 1 gnu ssatlt r5, #11, r3, asr #11 -d4f4df10| 1 gnu ldrsbne pc, [pc], #68 -d6530d61| 1 gnu ldrdvs r5, [sp, -r6] -d74d7800| 1 gnu ldrsbteq r4, [r8], #-215 -d9703680| 1 gnu ldrsbthi r7, [r6], -r9 -dbe003c0| 1 gnu ldrdgt lr, [r3], -fp -dc709561| 1 gnu ldrsbvs r7, [r5, ip] -dcc3b9c8| 1 gnu ldmgt r9!, {r2, r3, r4, r6, r7, r8, r9, lr, pc} -debfa0e5| 1 gnu str fp, [r0, #4062]! -dee062a1| 1 gnu ldrdge lr, [r2, #-14]! -dfa05ab7| 1 gnu smmlslt sl, pc, r0, sl -e02ef011| 1 gnu mvnsne r2, r0, ror #29 -e4d41718| 1 gnu ldmdane r7, {r2, r5, r6, r7, sl, ip, lr, pc} -e6d0fe34| 1 gnu ldrbtcc sp, [lr], #230 -e73bf7be| 1 gnu vcvtlt.f32.f64 s7, d23 -e74e72b3| 1 gnu cmnlt r2, #3696 -e80bf07e| 1 gnu vabsvc.f64 d16, d24 -e9b5b001| 1 gnu rorseq fp, r9, #11 -ea7bbdbe| 1 gnu vcvtlt.s32.f64 s14, d26 -ec063813| 1 gnu teqne r8, #236, 12 -ec0e49e1| 1 gnu smlaltt r0, r9, ip, lr -ee4ab85e| 1 gnu vcvtpl.f32.s32 s8, s29 -ef461f25| 1 gnu ldrcs r4, [pc, #-1775] -ef5fd002| 1 gnu sbcseq r5, r0, #956 -f4cf1d36| 1 gnu ssub8cc ip, sp, r4 -f67f73b6| 1 gnu uhsub8lt r7, r3, r6 -f6e09ca0| 1 gnu ldrshge lr, [ip], r6 -f7702e32| 1 gnu eorcc r7, lr, #247 -fa4dcf20| 1 gnu strdcs r4, [pc], #218 -fac03720| 1 gnu ldrshtcs ip, [r7], -sl -fc0f64c6| 1 gnu uqsub8gt r0, r4, ip -fc28f481| 1 gnu ldrshhi r2, [r4, #140]! -fc300560| 1 gnu strdvs r3, [r5], -ip -fcacfc70| 1 gnu ldrshtvc sl, [ip], #204 -fdbcfaf7| 1 gnu undef -fddf5c86| 1 gnu usub8hi sp, ip, sp -fdf02013| 1 gnu dbgne #13 -fe0319e3| 1 gnu tst r9, #-134217725 -fe7f3116| 1 gnu shsub8ne r7, r1, lr -ff4f2ac6| 1 gnu qsub8gt r4, sl, pc -ff818c71| 1 gnu strdvc r8, [ip, pc] -|6b5721d3 1 gnu error: unknown instruction -|76452001 1 gnu error: unknown instruction -|97acd647 1 gnu error: unknown instruction -11f71507| 1 plan9 SDIV.EQ R7, R1, R5 -15f715e7| 1 plan9 SDIV R7, R5, R5 -11f93517| 1 plan9 UDIV.NE R9, R1, R5 -12fb33e7| 1 plan9 UDIV R11, R2, R3 -ed003be9| 1 plan9 LDMDB [R0,R2-R3,R5-R7], R11! -923124e0| 1 plan9 MLA R1, R2, R3, R4 -923134e0| 1 plan9 MLA.S R1, R2, R3, R4 -923164e0| 1 plan9 MLS R1, R2, R3, R4 -ff1000e2| 1 plan9 AND $255, R0, R1 -ff1400e2| 1 plan9 AND $4278190080, R0, R1 -ff1010e2| 1 plan9 AND.S $255, R0, R1 -ff1410e2| 1 plan9 AND.S $4278190080, R0, R1 -ff0000e2| 1 plan9 AND $255, R0, R0 -ff0400e2| 1 plan9 AND $4278190080, R0, R0 -ff0010e2| 1 plan9 AND.S $255, R0, R0 -ff0410e2| 1 plan9 AND.S $4278190080, R0, R0 -002001e0| 1 plan9 AND R0, R1, R2 -002011e0| 1 plan9 AND.S R0, R1, R2 -001001e0| 1 plan9 AND R0, R1, R1 -001011e0| 1 plan9 AND.S R0, R1, R1 -202e01e0| 1 plan9 AND R0>>$28, R1, R2 -002e01e0| 1 plan9 AND R0<<$28, R1, R2 -402e01e0| 1 plan9 AND R0->$28, R1, R2 -602e01e0| 1 plan9 AND R0@>$28, R1, R2 -202e11e0| 1 plan9 AND.S R0>>$28, R1, R2 -002e11e0| 1 plan9 AND.S R0<<$28, R1, R2 -402e11e0| 1 plan9 AND.S R0->$28, R1, R2 -602e11e0| 1 plan9 AND.S R0@>$28, R1, R2 -001e01e0| 1 plan9 AND R0<<$28, R1, R1 -201e01e0| 1 plan9 AND R0>>$28, R1, R1 -401e01e0| 1 plan9 AND R0->$28, R1, R1 -601e01e0| 1 plan9 AND R0@>$28, R1, R1 -001e11e0| 1 plan9 AND.S R0<<$28, R1, R1 -201e11e0| 1 plan9 AND.S R0>>$28, R1, R1 -401e11e0| 1 plan9 AND.S R0->$28, R1, R1 -601e11e0| 1 plan9 AND.S R0@>$28, R1, R1 -103102e0| 1 plan9 AND R0<>R1, R2, R3 -503102e0| 1 plan9 AND R0->R1, R2, R3 -703102e0| 1 plan9 AND R0@>R1, R2, R3 -103112e0| 1 plan9 AND.S R0<>R1, R2, R3 -503112e0| 1 plan9 AND.S R0->R1, R2, R3 -703112e0| 1 plan9 AND.S R0@>R1, R2, R3 -102102e0| 1 plan9 AND R0<>R1, R2, R2 -502102e0| 1 plan9 AND R0->R1, R2, R2 -702102e0| 1 plan9 AND R0@>R1, R2, R2 -102112e0| 1 plan9 AND.S R0<>R1, R2, R2 -502112e0| 1 plan9 AND.S R0->R1, R2, R2 -702112e0| 1 plan9 AND.S R0@>R1, R2, R2 -ff1020e2| 1 plan9 EOR $255, R0, R1 -ff1420e2| 1 plan9 EOR $4278190080, R0, R1 -ff1030e2| 1 plan9 EOR.S $255, R0, R1 -ff1430e2| 1 plan9 EOR.S $4278190080, R0, R1 -ff0020e2| 1 plan9 EOR $255, R0, R0 -ff0420e2| 1 plan9 EOR $4278190080, R0, R0 -ff0030e2| 1 plan9 EOR.S $255, R0, R0 -ff0430e2| 1 plan9 EOR.S $4278190080, R0, R0 -002021e0| 1 plan9 EOR R0, R1, R2 -002031e0| 1 plan9 EOR.S R0, R1, R2 -001021e0| 1 plan9 EOR R0, R1, R1 -001031e0| 1 plan9 EOR.S R0, R1, R1 -202e21e0| 1 plan9 EOR R0>>$28, R1, R2 -002e21e0| 1 plan9 EOR R0<<$28, R1, R2 -402e21e0| 1 plan9 EOR R0->$28, R1, R2 -602e21e0| 1 plan9 EOR R0@>$28, R1, R2 -202e31e0| 1 plan9 EOR.S R0>>$28, R1, R2 -002e31e0| 1 plan9 EOR.S R0<<$28, R1, R2 -402e31e0| 1 plan9 EOR.S R0->$28, R1, R2 -602e31e0| 1 plan9 EOR.S R0@>$28, R1, R2 -001e21e0| 1 plan9 EOR R0<<$28, R1, R1 -201e21e0| 1 plan9 EOR R0>>$28, R1, R1 -401e21e0| 1 plan9 EOR R0->$28, R1, R1 -601e21e0| 1 plan9 EOR R0@>$28, R1, R1 -001e31e0| 1 plan9 EOR.S R0<<$28, R1, R1 -201e31e0| 1 plan9 EOR.S R0>>$28, R1, R1 -401e31e0| 1 plan9 EOR.S R0->$28, R1, R1 -601e31e0| 1 plan9 EOR.S R0@>$28, R1, R1 -103122e0| 1 plan9 EOR R0<>R1, R2, R3 -503122e0| 1 plan9 EOR R0->R1, R2, R3 -703122e0| 1 plan9 EOR R0@>R1, R2, R3 -103132e0| 1 plan9 EOR.S R0<>R1, R2, R3 -503132e0| 1 plan9 EOR.S R0->R1, R2, R3 -703132e0| 1 plan9 EOR.S R0@>R1, R2, R3 -102122e0| 1 plan9 EOR R0<>R1, R2, R2 -502122e0| 1 plan9 EOR R0->R1, R2, R2 -702122e0| 1 plan9 EOR R0@>R1, R2, R2 -102132e0| 1 plan9 EOR.S R0<>R1, R2, R2 -502132e0| 1 plan9 EOR.S R0->R1, R2, R2 -702132e0| 1 plan9 EOR.S R0@>R1, R2, R2 -ff1080e3| 1 plan9 ORR $255, R0, R1 -ff1480e3| 1 plan9 ORR $4278190080, R0, R1 -ff1090e3| 1 plan9 ORR.S $255, R0, R1 -ff1490e3| 1 plan9 ORR.S $4278190080, R0, R1 -ff0080e3| 1 plan9 ORR $255, R0, R0 -ff0480e3| 1 plan9 ORR $4278190080, R0, R0 -ff0090e3| 1 plan9 ORR.S $255, R0, R0 -ff0490e3| 1 plan9 ORR.S $4278190080, R0, R0 -002081e1| 1 plan9 ORR R0, R1, R2 -002091e1| 1 plan9 ORR.S R0, R1, R2 -001081e1| 1 plan9 ORR R0, R1, R1 -001091e1| 1 plan9 ORR.S R0, R1, R1 -202e81e1| 1 plan9 ORR R0>>$28, R1, R2 -002e81e1| 1 plan9 ORR R0<<$28, R1, R2 -402e81e1| 1 plan9 ORR R0->$28, R1, R2 -602e81e1| 1 plan9 ORR R0@>$28, R1, R2 -202e91e1| 1 plan9 ORR.S R0>>$28, R1, R2 -002e91e1| 1 plan9 ORR.S R0<<$28, R1, R2 -402e91e1| 1 plan9 ORR.S R0->$28, R1, R2 -602e91e1| 1 plan9 ORR.S R0@>$28, R1, R2 -001e81e1| 1 plan9 ORR R0<<$28, R1, R1 -201e81e1| 1 plan9 ORR R0>>$28, R1, R1 -401e81e1| 1 plan9 ORR R0->$28, R1, R1 -601e81e1| 1 plan9 ORR R0@>$28, R1, R1 -001e91e1| 1 plan9 ORR.S R0<<$28, R1, R1 -201e91e1| 1 plan9 ORR.S R0>>$28, R1, R1 -401e91e1| 1 plan9 ORR.S R0->$28, R1, R1 -601e91e1| 1 plan9 ORR.S R0@>$28, R1, R1 -103182e1| 1 plan9 ORR R0<>R1, R2, R3 -503182e1| 1 plan9 ORR R0->R1, R2, R3 -703182e1| 1 plan9 ORR R0@>R1, R2, R3 -103192e1| 1 plan9 ORR.S R0<>R1, R2, R3 -503192e1| 1 plan9 ORR.S R0->R1, R2, R3 -703192e1| 1 plan9 ORR.S R0@>R1, R2, R3 -102182e1| 1 plan9 ORR R0<>R1, R2, R2 -502182e1| 1 plan9 ORR R0->R1, R2, R2 -702182e1| 1 plan9 ORR R0@>R1, R2, R2 -102192e1| 1 plan9 ORR.S R0<>R1, R2, R2 -502192e1| 1 plan9 ORR.S R0->R1, R2, R2 -702192e1| 1 plan9 ORR.S R0@>R1, R2, R2 -ff1040e2| 1 plan9 SUB $255, R0, R1 -ff1440e2| 1 plan9 SUB $4278190080, R0, R1 -ff1050e2| 1 plan9 SUB.S $255, R0, R1 -ff1450e2| 1 plan9 SUB.S $4278190080, R0, R1 -ff0040e2| 1 plan9 SUB $255, R0, R0 -ff0440e2| 1 plan9 SUB $4278190080, R0, R0 -ff0050e2| 1 plan9 SUB.S $255, R0, R0 -ff0450e2| 1 plan9 SUB.S $4278190080, R0, R0 -002041e0| 1 plan9 SUB R0, R1, R2 -002051e0| 1 plan9 SUB.S R0, R1, R2 -001041e0| 1 plan9 SUB R0, R1, R1 -001051e0| 1 plan9 SUB.S R0, R1, R1 -202e41e0| 1 plan9 SUB R0>>$28, R1, R2 -002e41e0| 1 plan9 SUB R0<<$28, R1, R2 -402e41e0| 1 plan9 SUB R0->$28, R1, R2 -602e41e0| 1 plan9 SUB R0@>$28, R1, R2 -202e51e0| 1 plan9 SUB.S R0>>$28, R1, R2 -002e51e0| 1 plan9 SUB.S R0<<$28, R1, R2 -402e51e0| 1 plan9 SUB.S R0->$28, R1, R2 -602e51e0| 1 plan9 SUB.S R0@>$28, R1, R2 -001e41e0| 1 plan9 SUB R0<<$28, R1, R1 -201e41e0| 1 plan9 SUB R0>>$28, R1, R1 -401e41e0| 1 plan9 SUB R0->$28, R1, R1 -601e41e0| 1 plan9 SUB R0@>$28, R1, R1 -001e51e0| 1 plan9 SUB.S R0<<$28, R1, R1 -201e51e0| 1 plan9 SUB.S R0>>$28, R1, R1 -401e51e0| 1 plan9 SUB.S R0->$28, R1, R1 -601e51e0| 1 plan9 SUB.S R0@>$28, R1, R1 -103142e0| 1 plan9 SUB R0<>R1, R2, R3 -503142e0| 1 plan9 SUB R0->R1, R2, R3 -703142e0| 1 plan9 SUB R0@>R1, R2, R3 -103152e0| 1 plan9 SUB.S R0<>R1, R2, R3 -503152e0| 1 plan9 SUB.S R0->R1, R2, R3 -703152e0| 1 plan9 SUB.S R0@>R1, R2, R3 -102142e0| 1 plan9 SUB R0<>R1, R2, R2 -502142e0| 1 plan9 SUB R0->R1, R2, R2 -702142e0| 1 plan9 SUB R0@>R1, R2, R2 -102152e0| 1 plan9 SUB.S R0<>R1, R2, R2 -502152e0| 1 plan9 SUB.S R0->R1, R2, R2 -702152e0| 1 plan9 SUB.S R0@>R1, R2, R2 -ff10c0e2| 1 plan9 SBC $255, R0, R1 -ff14c0e2| 1 plan9 SBC $4278190080, R0, R1 -ff10d0e2| 1 plan9 SBC.S $255, R0, R1 -ff14d0e2| 1 plan9 SBC.S $4278190080, R0, R1 -ff00c0e2| 1 plan9 SBC $255, R0, R0 -ff04c0e2| 1 plan9 SBC $4278190080, R0, R0 -ff00d0e2| 1 plan9 SBC.S $255, R0, R0 -ff04d0e2| 1 plan9 SBC.S $4278190080, R0, R0 -0020c1e0| 1 plan9 SBC R0, R1, R2 -0020d1e0| 1 plan9 SBC.S R0, R1, R2 -0010c1e0| 1 plan9 SBC R0, R1, R1 -0010d1e0| 1 plan9 SBC.S R0, R1, R1 -202ec1e0| 1 plan9 SBC R0>>$28, R1, R2 -002ec1e0| 1 plan9 SBC R0<<$28, R1, R2 -402ec1e0| 1 plan9 SBC R0->$28, R1, R2 -602ec1e0| 1 plan9 SBC R0@>$28, R1, R2 -202ed1e0| 1 plan9 SBC.S R0>>$28, R1, R2 -002ed1e0| 1 plan9 SBC.S R0<<$28, R1, R2 -402ed1e0| 1 plan9 SBC.S R0->$28, R1, R2 -602ed1e0| 1 plan9 SBC.S R0@>$28, R1, R2 -001ec1e0| 1 plan9 SBC R0<<$28, R1, R1 -201ec1e0| 1 plan9 SBC R0>>$28, R1, R1 -401ec1e0| 1 plan9 SBC R0->$28, R1, R1 -601ec1e0| 1 plan9 SBC R0@>$28, R1, R1 -001ed1e0| 1 plan9 SBC.S R0<<$28, R1, R1 -201ed1e0| 1 plan9 SBC.S R0>>$28, R1, R1 -401ed1e0| 1 plan9 SBC.S R0->$28, R1, R1 -601ed1e0| 1 plan9 SBC.S R0@>$28, R1, R1 -1031c2e0| 1 plan9 SBC R0<>R1, R2, R3 -5031c2e0| 1 plan9 SBC R0->R1, R2, R3 -7031c2e0| 1 plan9 SBC R0@>R1, R2, R3 -1031d2e0| 1 plan9 SBC.S R0<>R1, R2, R3 -5031d2e0| 1 plan9 SBC.S R0->R1, R2, R3 -7031d2e0| 1 plan9 SBC.S R0@>R1, R2, R3 -1021c2e0| 1 plan9 SBC R0<>R1, R2, R2 -5021c2e0| 1 plan9 SBC R0->R1, R2, R2 -7021c2e0| 1 plan9 SBC R0@>R1, R2, R2 -1021d2e0| 1 plan9 SBC.S R0<>R1, R2, R2 -5021d2e0| 1 plan9 SBC.S R0->R1, R2, R2 -7021d2e0| 1 plan9 SBC.S R0@>R1, R2, R2 -ff1060e2| 1 plan9 RSB $255, R0, R1 -ff1460e2| 1 plan9 RSB $4278190080, R0, R1 -ff1070e2| 1 plan9 RSB.S $255, R0, R1 -ff1470e2| 1 plan9 RSB.S $4278190080, R0, R1 -ff0060e2| 1 plan9 RSB $255, R0, R0 -ff0460e2| 1 plan9 RSB $4278190080, R0, R0 -ff0070e2| 1 plan9 RSB.S $255, R0, R0 -ff0470e2| 1 plan9 RSB.S $4278190080, R0, R0 -002061e0| 1 plan9 RSB R0, R1, R2 -002071e0| 1 plan9 RSB.S R0, R1, R2 -001061e0| 1 plan9 RSB R0, R1, R1 -001071e0| 1 plan9 RSB.S R0, R1, R1 -202e61e0| 1 plan9 RSB R0>>$28, R1, R2 -002e61e0| 1 plan9 RSB R0<<$28, R1, R2 -402e61e0| 1 plan9 RSB R0->$28, R1, R2 -602e61e0| 1 plan9 RSB R0@>$28, R1, R2 -202e71e0| 1 plan9 RSB.S R0>>$28, R1, R2 -002e71e0| 1 plan9 RSB.S R0<<$28, R1, R2 -402e71e0| 1 plan9 RSB.S R0->$28, R1, R2 -602e71e0| 1 plan9 RSB.S R0@>$28, R1, R2 -001e61e0| 1 plan9 RSB R0<<$28, R1, R1 -201e61e0| 1 plan9 RSB R0>>$28, R1, R1 -401e61e0| 1 plan9 RSB R0->$28, R1, R1 -601e61e0| 1 plan9 RSB R0@>$28, R1, R1 -001e71e0| 1 plan9 RSB.S R0<<$28, R1, R1 -201e71e0| 1 plan9 RSB.S R0>>$28, R1, R1 -401e71e0| 1 plan9 RSB.S R0->$28, R1, R1 -601e71e0| 1 plan9 RSB.S R0@>$28, R1, R1 -103162e0| 1 plan9 RSB R0<>R1, R2, R3 -503162e0| 1 plan9 RSB R0->R1, R2, R3 -703162e0| 1 plan9 RSB R0@>R1, R2, R3 -103172e0| 1 plan9 RSB.S R0<>R1, R2, R3 -503172e0| 1 plan9 RSB.S R0->R1, R2, R3 -703172e0| 1 plan9 RSB.S R0@>R1, R2, R3 -102162e0| 1 plan9 RSB R0<>R1, R2, R2 -502162e0| 1 plan9 RSB R0->R1, R2, R2 -702162e0| 1 plan9 RSB R0@>R1, R2, R2 -102172e0| 1 plan9 RSB.S R0<>R1, R2, R2 -502172e0| 1 plan9 RSB.S R0->R1, R2, R2 -702172e0| 1 plan9 RSB.S R0@>R1, R2, R2 -ff10e0e2| 1 plan9 RSC $255, R0, R1 -ff14e0e2| 1 plan9 RSC $4278190080, R0, R1 -ff10f0e2| 1 plan9 RSC.S $255, R0, R1 -ff14f0e2| 1 plan9 RSC.S $4278190080, R0, R1 -ff00e0e2| 1 plan9 RSC $255, R0, R0 -ff04e0e2| 1 plan9 RSC $4278190080, R0, R0 -ff00f0e2| 1 plan9 RSC.S $255, R0, R0 -ff04f0e2| 1 plan9 RSC.S $4278190080, R0, R0 -0020e1e0| 1 plan9 RSC R0, R1, R2 -0020f1e0| 1 plan9 RSC.S R0, R1, R2 -0010e1e0| 1 plan9 RSC R0, R1, R1 -0010f1e0| 1 plan9 RSC.S R0, R1, R1 -202ee1e0| 1 plan9 RSC R0>>$28, R1, R2 -002ee1e0| 1 plan9 RSC R0<<$28, R1, R2 -402ee1e0| 1 plan9 RSC R0->$28, R1, R2 -602ee1e0| 1 plan9 RSC R0@>$28, R1, R2 -202ef1e0| 1 plan9 RSC.S R0>>$28, R1, R2 -002ef1e0| 1 plan9 RSC.S R0<<$28, R1, R2 -402ef1e0| 1 plan9 RSC.S R0->$28, R1, R2 -602ef1e0| 1 plan9 RSC.S R0@>$28, R1, R2 -001ee1e0| 1 plan9 RSC R0<<$28, R1, R1 -201ee1e0| 1 plan9 RSC R0>>$28, R1, R1 -401ee1e0| 1 plan9 RSC R0->$28, R1, R1 -601ee1e0| 1 plan9 RSC R0@>$28, R1, R1 -001ef1e0| 1 plan9 RSC.S R0<<$28, R1, R1 -201ef1e0| 1 plan9 RSC.S R0>>$28, R1, R1 -401ef1e0| 1 plan9 RSC.S R0->$28, R1, R1 -601ef1e0| 1 plan9 RSC.S R0@>$28, R1, R1 -1031e2e0| 1 plan9 RSC R0<>R1, R2, R3 -5031e2e0| 1 plan9 RSC R0->R1, R2, R3 -7031e2e0| 1 plan9 RSC R0@>R1, R2, R3 -1031f2e0| 1 plan9 RSC.S R0<>R1, R2, R3 -5031f2e0| 1 plan9 RSC.S R0->R1, R2, R3 -7031f2e0| 1 plan9 RSC.S R0@>R1, R2, R3 -1021e2e0| 1 plan9 RSC R0<>R1, R2, R2 -5021e2e0| 1 plan9 RSC R0->R1, R2, R2 -7021e2e0| 1 plan9 RSC R0@>R1, R2, R2 -1021f2e0| 1 plan9 RSC.S R0<>R1, R2, R2 -5021f2e0| 1 plan9 RSC.S R0->R1, R2, R2 -7021f2e0| 1 plan9 RSC.S R0@>R1, R2, R2 -ff1080e2| 1 plan9 ADD $255, R0, R1 -ff1480e2| 1 plan9 ADD $4278190080, R0, R1 -ff1090e2| 1 plan9 ADD.S $255, R0, R1 -ff1490e2| 1 plan9 ADD.S $4278190080, R0, R1 -ff0080e2| 1 plan9 ADD $255, R0, R0 -ff0480e2| 1 plan9 ADD $4278190080, R0, R0 -ff0090e2| 1 plan9 ADD.S $255, R0, R0 -ff0490e2| 1 plan9 ADD.S $4278190080, R0, R0 -002081e0| 1 plan9 ADD R0, R1, R2 -002091e0| 1 plan9 ADD.S R0, R1, R2 -001081e0| 1 plan9 ADD R0, R1, R1 -001091e0| 1 plan9 ADD.S R0, R1, R1 -202e81e0| 1 plan9 ADD R0>>$28, R1, R2 -002e81e0| 1 plan9 ADD R0<<$28, R1, R2 -402e81e0| 1 plan9 ADD R0->$28, R1, R2 -602e81e0| 1 plan9 ADD R0@>$28, R1, R2 -202e91e0| 1 plan9 ADD.S R0>>$28, R1, R2 -002e91e0| 1 plan9 ADD.S R0<<$28, R1, R2 -402e91e0| 1 plan9 ADD.S R0->$28, R1, R2 -602e91e0| 1 plan9 ADD.S R0@>$28, R1, R2 -001e81e0| 1 plan9 ADD R0<<$28, R1, R1 -201e81e0| 1 plan9 ADD R0>>$28, R1, R1 -401e81e0| 1 plan9 ADD R0->$28, R1, R1 -601e81e0| 1 plan9 ADD R0@>$28, R1, R1 -001e91e0| 1 plan9 ADD.S R0<<$28, R1, R1 -201e91e0| 1 plan9 ADD.S R0>>$28, R1, R1 -401e91e0| 1 plan9 ADD.S R0->$28, R1, R1 -601e91e0| 1 plan9 ADD.S R0@>$28, R1, R1 -103182e0| 1 plan9 ADD R0<>R1, R2, R3 -503182e0| 1 plan9 ADD R0->R1, R2, R3 -703182e0| 1 plan9 ADD R0@>R1, R2, R3 -103192e0| 1 plan9 ADD.S R0<>R1, R2, R3 -503192e0| 1 plan9 ADD.S R0->R1, R2, R3 -703192e0| 1 plan9 ADD.S R0@>R1, R2, R3 -102182e0| 1 plan9 ADD R0<>R1, R2, R2 -502182e0| 1 plan9 ADD R0->R1, R2, R2 -702182e0| 1 plan9 ADD R0@>R1, R2, R2 -102192e0| 1 plan9 ADD.S R0<>R1, R2, R2 -502192e0| 1 plan9 ADD.S R0->R1, R2, R2 -702192e0| 1 plan9 ADD.S R0@>R1, R2, R2 -ff10a0e2| 1 plan9 ADC $255, R0, R1 -ff14a0e2| 1 plan9 ADC $4278190080, R0, R1 -ff10b0e2| 1 plan9 ADC.S $255, R0, R1 -ff14b0e2| 1 plan9 ADC.S $4278190080, R0, R1 -ff00a0e2| 1 plan9 ADC $255, R0, R0 -ff04a0e2| 1 plan9 ADC $4278190080, R0, R0 -ff00b0e2| 1 plan9 ADC.S $255, R0, R0 -ff04b0e2| 1 plan9 ADC.S $4278190080, R0, R0 -0020a1e0| 1 plan9 ADC R0, R1, R2 -0020b1e0| 1 plan9 ADC.S R0, R1, R2 -0010a1e0| 1 plan9 ADC R0, R1, R1 -0010b1e0| 1 plan9 ADC.S R0, R1, R1 -202ea1e0| 1 plan9 ADC R0>>$28, R1, R2 -002ea1e0| 1 plan9 ADC R0<<$28, R1, R2 -402ea1e0| 1 plan9 ADC R0->$28, R1, R2 -602ea1e0| 1 plan9 ADC R0@>$28, R1, R2 -202eb1e0| 1 plan9 ADC.S R0>>$28, R1, R2 -002eb1e0| 1 plan9 ADC.S R0<<$28, R1, R2 -402eb1e0| 1 plan9 ADC.S R0->$28, R1, R2 -602eb1e0| 1 plan9 ADC.S R0@>$28, R1, R2 -001ea1e0| 1 plan9 ADC R0<<$28, R1, R1 -201ea1e0| 1 plan9 ADC R0>>$28, R1, R1 -401ea1e0| 1 plan9 ADC R0->$28, R1, R1 -601ea1e0| 1 plan9 ADC R0@>$28, R1, R1 -001eb1e0| 1 plan9 ADC.S R0<<$28, R1, R1 -201eb1e0| 1 plan9 ADC.S R0>>$28, R1, R1 -401eb1e0| 1 plan9 ADC.S R0->$28, R1, R1 -601eb1e0| 1 plan9 ADC.S R0@>$28, R1, R1 -1031a2e0| 1 plan9 ADC R0<>R1, R2, R3 -5031a2e0| 1 plan9 ADC R0->R1, R2, R3 -7031a2e0| 1 plan9 ADC R0@>R1, R2, R3 -1031b2e0| 1 plan9 ADC.S R0<>R1, R2, R3 -5031b2e0| 1 plan9 ADC.S R0->R1, R2, R3 -7031b2e0| 1 plan9 ADC.S R0@>R1, R2, R3 -1021a2e0| 1 plan9 ADC R0<>R1, R2, R2 -5021a2e0| 1 plan9 ADC R0->R1, R2, R2 -7021a2e0| 1 plan9 ADC R0@>R1, R2, R2 -1021b2e0| 1 plan9 ADC.S R0<>R1, R2, R2 -5021b2e0| 1 plan9 ADC.S R0->R1, R2, R2 -7021b2e0| 1 plan9 ADC.S R0@>R1, R2, R2 -ff0037e3| 1 plan9 TEQ $255, R7 -ff0439e3| 1 plan9 TEQ $4278190080, R9 -090f37e1| 1 plan9 TEQ R9<<$30, R7 -290f37e1| 1 plan9 TEQ R9>>$30, R7 -490f37e1| 1 plan9 TEQ R9->$30, R7 -690f37e1| 1 plan9 TEQ R9@>$30, R7 -190837e1| 1 plan9 TEQ R9<>R8, R7 -590837e1| 1 plan9 TEQ R9->R8, R7 -790837e1| 1 plan9 TEQ R9@>R8, R7 -ff0017e3| 1 plan9 TST $255, R7 -ff0419e3| 1 plan9 TST $4278190080, R9 -090f17e1| 1 plan9 TST R9<<$30, R7 -290f17e1| 1 plan9 TST R9>>$30, R7 -490f17e1| 1 plan9 TST R9->$30, R7 -690f17e1| 1 plan9 TST R9@>$30, R7 -190817e1| 1 plan9 TST R9<>R8, R7 -590817e1| 1 plan9 TST R9->R8, R7 -790817e1| 1 plan9 TST R9@>R8, R7 -ff0057e3| 1 plan9 CMP $255, R7 -ff0459e3| 1 plan9 CMP $4278190080, R9 -090f57e1| 1 plan9 CMP R9<<$30, R7 -290f57e1| 1 plan9 CMP R9>>$30, R7 -490f57e1| 1 plan9 CMP R9->$30, R7 -690f57e1| 1 plan9 CMP R9@>$30, R7 -190857e1| 1 plan9 CMP R9<>R8, R7 -590857e1| 1 plan9 CMP R9->R8, R7 -790857e1| 1 plan9 CMP R9@>R8, R7 -ff0077e3| 1 plan9 CMN $255, R7 -ff0479e3| 1 plan9 CMN $4278190080, R9 -090f77e1| 1 plan9 CMN R9<<$30, R7 -290f77e1| 1 plan9 CMN R9>>$30, R7 -490f77e1| 1 plan9 CMN R9->$30, R7 -690f77e1| 1 plan9 CMN R9@>$30, R7 -190877e1| 1 plan9 CMN R9<>R8, R7 -590877e1| 1 plan9 CMN R9->R8, R7 -790877e1| 1 plan9 CMN R9@>R8, R7 -0c00000a| 1 plan9 B.EQ 0x38 -0b00001a| 1 plan9 B.NE 0x34 -0a00002a| 1 plan9 B.CS 0x30 -0900003a| 1 plan9 B.CC 0x2c -0800004a| 1 plan9 B.MI 0x28 -0700005a| 1 plan9 B.PL 0x24 -0600006a| 1 plan9 B.VS 0x20 -0500007a| 1 plan9 B.VC 0x1c -0400008a| 1 plan9 B.HI 0x18 -0300009a| 1 plan9 B.LS 0x14 -020000aa| 1 plan9 B.GE 0x10 -010000ba| 1 plan9 B.LT 0xc -000000ca| 1 plan9 B.GT 0x8 -ffffffda| 1 plan9 B.LE 0x4 -fdffffea| 1 plan9 B 0xfffffffc -fcffffea| 1 plan9 B 0xfffffff8 -fbffffea| 1 plan9 B 0xfffffff4 -faffffea| 1 plan9 B 0xfffffff0 -f9ffffea| 1 plan9 B 0xffffffec -feffffea| 1 plan9 B 0x0 -0c00000b| 1 plan9 BL.EQ 0x38 -0b00001b| 1 plan9 BL.NE 0x34 -0a00002b| 1 plan9 BL.CS 0x30 -0900003b| 1 plan9 BL.CC 0x2c -0800004b| 1 plan9 BL.MI 0x28 -0700005b| 1 plan9 BL.PL 0x24 -0600006b| 1 plan9 BL.VS 0x20 -0500007b| 1 plan9 BL.VC 0x1c -0400008b| 1 plan9 BL.HI 0x18 -0300009b| 1 plan9 BL.LS 0x14 -020000ab| 1 plan9 BL.GE 0x10 -010000bb| 1 plan9 BL.LT 0xc -000000cb| 1 plan9 BL.GT 0x8 -ffffffdb| 1 plan9 BL.LE 0x4 -fdffffeb| 1 plan9 BL 0xfffffffc -fcffffeb| 1 plan9 BL 0xfffffff8 -fbffffeb| 1 plan9 BL 0xfffffff4 -faffffeb| 1 plan9 BL 0xfffffff0 -f9ffffeb| 1 plan9 BL 0xffffffec -feffffeb| 1 plan9 BL 0x0 -ff10c0e3| 1 plan9 BIC $255, R0, R1 -ff14c0e3| 1 plan9 BIC $4278190080, R0, R1 -ff10d0e3| 1 plan9 BIC.S $255, R0, R1 -ff14d0e3| 1 plan9 BIC.S $4278190080, R0, R1 -ff00c0e3| 1 plan9 BIC $255, R0, R0 -ff04c0e3| 1 plan9 BIC $4278190080, R0, R0 -ff00d0e3| 1 plan9 BIC.S $255, R0, R0 -ff04d0e3| 1 plan9 BIC.S $4278190080, R0, R0 -0020c1e1| 1 plan9 BIC R0, R1, R2 -0020d1e1| 1 plan9 BIC.S R0, R1, R2 -0010c1e1| 1 plan9 BIC R0, R1, R1 -0010d1e1| 1 plan9 BIC.S R0, R1, R1 -202ec1e1| 1 plan9 BIC R0>>$28, R1, R2 -002ec1e1| 1 plan9 BIC R0<<$28, R1, R2 -402ec1e1| 1 plan9 BIC R0->$28, R1, R2 -602ec1e1| 1 plan9 BIC R0@>$28, R1, R2 -202ed1e1| 1 plan9 BIC.S R0>>$28, R1, R2 -002ed1e1| 1 plan9 BIC.S R0<<$28, R1, R2 -402ed1e1| 1 plan9 BIC.S R0->$28, R1, R2 -602ed1e1| 1 plan9 BIC.S R0@>$28, R1, R2 -001ec1e1| 1 plan9 BIC R0<<$28, R1, R1 -201ec1e1| 1 plan9 BIC R0>>$28, R1, R1 -401ec1e1| 1 plan9 BIC R0->$28, R1, R1 -601ec1e1| 1 plan9 BIC R0@>$28, R1, R1 -001ed1e1| 1 plan9 BIC.S R0<<$28, R1, R1 -201ed1e1| 1 plan9 BIC.S R0>>$28, R1, R1 -401ed1e1| 1 plan9 BIC.S R0->$28, R1, R1 -601ed1e1| 1 plan9 BIC.S R0@>$28, R1, R1 -1031c2e1| 1 plan9 BIC R0<>R1, R2, R3 -5031c2e1| 1 plan9 BIC R0->R1, R2, R3 -7031c2e1| 1 plan9 BIC R0@>R1, R2, R3 -1031d2e1| 1 plan9 BIC.S R0<>R1, R2, R3 -5031d2e1| 1 plan9 BIC.S R0->R1, R2, R3 -7031d2e1| 1 plan9 BIC.S R0@>R1, R2, R3 -1021c2e1| 1 plan9 BIC R0<>R1, R2, R2 -5021c2e1| 1 plan9 BIC R0->R1, R2, R2 -7021c2e1| 1 plan9 BIC R0@>R1, R2, R2 -1021d2e1| 1 plan9 BIC.S R0<>R1, R2, R2 -5021d2e1| 1 plan9 BIC.S R0->R1, R2, R2 -7021d2e1| 1 plan9 BIC.S R0@>R1, R2, R2 -2567a0e1| 1 plan9 LSR $14, R5, R6 -a567a0e1| 1 plan9 LSR $15, R5, R6 -256fa0e1| 1 plan9 LSR $30, R5, R6 -a56fa0e1| 1 plan9 LSR $31, R5, R6 -2567b0e1| 1 plan9 LSR.S $14, R5, R6 -a567b0e1| 1 plan9 LSR.S $15, R5, R6 -256fb0e1| 1 plan9 LSR.S $30, R5, R6 -a56fb0e1| 1 plan9 LSR.S $31, R5, R6 -2557a0e1| 1 plan9 LSR $14, R5, R5 -a557a0e1| 1 plan9 LSR $15, R5, R5 -255fa0e1| 1 plan9 LSR $30, R5, R5 -a55fa0e1| 1 plan9 LSR $31, R5, R5 -2557b0e1| 1 plan9 LSR.S $14, R5, R5 -a557b0e1| 1 plan9 LSR.S $15, R5, R5 -255fb0e1| 1 plan9 LSR.S $30, R5, R5 -a55fb0e1| 1 plan9 LSR.S $31, R5, R5 -3675a0e1| 1 plan9 LSR R5, R6, R7 -3675b0e1| 1 plan9 LSR.S R5, R6, R7 -3775a0e1| 1 plan9 LSR R5, R7, R7 -3775b0e1| 1 plan9 LSR.S R5, R7, R7 -4567a0e1| 1 plan9 ASR $14, R5, R6 -c567a0e1| 1 plan9 ASR $15, R5, R6 -456fa0e1| 1 plan9 ASR $30, R5, R6 -c56fa0e1| 1 plan9 ASR $31, R5, R6 -4567b0e1| 1 plan9 ASR.S $14, R5, R6 -c567b0e1| 1 plan9 ASR.S $15, R5, R6 -456fb0e1| 1 plan9 ASR.S $30, R5, R6 -c56fb0e1| 1 plan9 ASR.S $31, R5, R6 -4557a0e1| 1 plan9 ASR $14, R5, R5 -c557a0e1| 1 plan9 ASR $15, R5, R5 -455fa0e1| 1 plan9 ASR $30, R5, R5 -c55fa0e1| 1 plan9 ASR $31, R5, R5 -4557b0e1| 1 plan9 ASR.S $14, R5, R5 -c557b0e1| 1 plan9 ASR.S $15, R5, R5 -455fb0e1| 1 plan9 ASR.S $30, R5, R5 -c55fb0e1| 1 plan9 ASR.S $31, R5, R5 -5675a0e1| 1 plan9 ASR R5, R6, R7 -5675b0e1| 1 plan9 ASR.S R5, R6, R7 -5775a0e1| 1 plan9 ASR R5, R7, R7 -5775b0e1| 1 plan9 ASR.S R5, R7, R7 -0567a0e1| 1 plan9 LSL $14, R5, R6 -8567a0e1| 1 plan9 LSL $15, R5, R6 -056fa0e1| 1 plan9 LSL $30, R5, R6 -856fa0e1| 1 plan9 LSL $31, R5, R6 -0567b0e1| 1 plan9 LSL.S $14, R5, R6 -8567b0e1| 1 plan9 LSL.S $15, R5, R6 -056fb0e1| 1 plan9 LSL.S $30, R5, R6 -856fb0e1| 1 plan9 LSL.S $31, R5, R6 -0557a0e1| 1 plan9 LSL $14, R5, R5 -8557a0e1| 1 plan9 LSL $15, R5, R5 -055fa0e1| 1 plan9 LSL $30, R5, R5 -855fa0e1| 1 plan9 LSL $31, R5, R5 -0557b0e1| 1 plan9 LSL.S $14, R5, R5 -8557b0e1| 1 plan9 LSL.S $15, R5, R5 -055fb0e1| 1 plan9 LSL.S $30, R5, R5 -855fb0e1| 1 plan9 LSL.S $31, R5, R5 -1675a0e1| 1 plan9 LSL R5, R6, R7 -1675b0e1| 1 plan9 LSL.S R5, R6, R7 -1775a0e1| 1 plan9 LSL R5, R7, R7 -1775b0e1| 1 plan9 LSL.S R5, R7, R7 -c23124e1| 1 plan9 SMLAWT R1, R2, R3, R4 -823124e1| 1 plan9 SMLAWB R1, R2, R3, R4 -923164e0| 1 plan9 MLS R1, R2, R3, R4 -923124e0| 1 plan9 MLA R1, R2, R3, R4 -923134e0| 1 plan9 MLA.S R1, R2, R3, R4 -123154e7| 1 plan9 SMMLA R1, R2, R3, R4 -d23154e7| 1 plan9 SMMLS R1, R2, R3, R4 -823104e1| 1 plan9 SMLABB R1, R2, R3, R4 -a23104e1| 1 plan9 SMLATB R1, R2, R3, R4 -c23104e1| 1 plan9 SMLABT R1, R2, R3, R4 -e23104e1| 1 plan9 SMLATT R1, R2, R3, R4 -123104e7| 1 plan9 SMLAD R1, R2, R3, R4 -323104e7| 1 plan9 SMLAD.X R1, R2, R3, R4 -523104e7| 1 plan9 SMLSD R1, R2, R3, R4 -723104e7| 1 plan9 SMLSD.X R1, R2, R3, R4 -9231e4e0| 1 plan9 SMLAL R1, R2, R4, R3 -9231f4e0| 1 plan9 SMLAL.S R1, R2, R4, R3 -123144e7| 1 plan9 SMLALD R1, R2, R4, R3 -323144e7| 1 plan9 SMLALD.X R1, R2, R4, R3 -523144e7| 1 plan9 SMLSLD R1, R2, R4, R3 -723144e7| 1 plan9 SMLSLD.X R1, R2, R4, R3 -9231a4e0| 1 plan9 UMLAL R1, R2, R4, R3 -923144e0| 1 plan9 UMAAL R1, R2, R4, R3 -9231b4e0| 1 plan9 UMLAL.S R1, R2, R4, R3 -930204e0| 1 plan9 MUL R2, R3, R4 -920404e0| 1 plan9 MUL R4, R2, R4 -930214e0| 1 plan9 MUL.S R2, R3, R4 -920414e0| 1 plan9 MUL.S R4, R2, R4 -960507e0| 1 plan9 MUL R5, R6, R7 -950707e0| 1 plan9 MUL R7, R5, R7 -960517e0| 1 plan9 MUL.S R5, R6, R7 -950717e0| 1 plan9 MUL.S R7, R5, R7 -923184e0| 1 plan9 UMULL R1, R2, R4, R3 -923194e0| 1 plan9 UMULL.S R1, R2, R4, R3 -9231c4e0| 1 plan9 SMULL R1, R2, R4, R3 -9231d4e0| 1 plan9 SMULL.S R1, R2, R4, R3 -12f153e7| 1 plan9 SMMUL R1, R2, R3 -820163e1| 1 plan9 SMULBB R1, R2, R3 -a20163e1| 1 plan9 SMULTB R1, R2, R3 -c20163e1| 1 plan9 SMULBT R1, R2, R3 -e20163e1| 1 plan9 SMULTT R1, R2, R3 -a20123e1| 1 plan9 SMULWB R1, R2, R3 -e20123e1| 1 plan9 SMULWT R1, R2, R3 -12f103e7| 1 plan9 SMUAD R1, R2, R3 -32f103e7| 1 plan9 SMUAD.X R1, R2, R3 -52f103e7| 1 plan9 SMUSD R1, R2, R3 -72f103e7| 1 plan9 SMUSD.X R1, R2, R3 -312fbfe6| 1 plan9 REV R1, R2 -b12fbfe6| 1 plan9 REV16 R1, R2 -b12fffe6| 1 plan9 REVSH R1, R2 -312fffe6| 1 plan9 RBIT R1, R2 -112f6fe1| 1 plan9 CLZ R1, R2 -f0ffd6f5| 1 plan9 PLD 0xff0(R6) -f0ff59f5| 1 plan9 PLD -0xff0(R9) -f0ff96f5| 1 plan9 PLD.W 0xff0(R6) -f0ff19f5| 1 plan9 PLD.W -0xff0(R9) -f0ffdff5| 1 plan9 PLD 0xff0(R15) -f0ff5ff5| 1 plan9 PLD -0xff0(R15) -00f0d2f7| 1 plan9 PLD (R2)(R0) -00f052f7| 1 plan9 PLD.U (R2)(R0) -00f092f7| 1 plan9 PLD.W (R2)(R0) -00f012f7| 1 plan9 PLD.W.U (R2)(R0) -80f0d2f7| 1 plan9 PLD (R2)(R0<<1) -80f052f7| 1 plan9 PLD.U (R2)(R0<<1) -a0f0d2f7| 1 plan9 PLD (R2)(R0>>1) -a0f052f7| 1 plan9 PLD.U (R2)(R0>>1) -c0f0d2f7| 1 plan9 PLD (R2)(R0->1) -c0f052f7| 1 plan9 PLD.U (R2)(R0->1) -e0f0d2f7| 1 plan9 PLD (R2)(R0@>1) -e0f052f7| 1 plan9 PLD.U (R2)(R0@>1) -80f092f7| 1 plan9 PLD.W (R2)(R0<<1) -80f012f7| 1 plan9 PLD.W.U (R2)(R0<<1) -a0f092f7| 1 plan9 PLD.W (R2)(R0>>1) -a0f012f7| 1 plan9 PLD.W.U (R2)(R0>>1) -c0f092f7| 1 plan9 PLD.W (R2)(R0->1) -c0f012f7| 1 plan9 PLD.W.U (R2)(R0->1) -e0f092f7| 1 plan9 PLD.W (R2)(R0@>1) -e0f012f7| 1 plan9 PLD.W.U (R2)(R0@>1) -f0ffd2f4| 1 plan9 PLI 0xff0(R2) -f0ff52f4| 1 plan9 PLI -0xff0(R2) -00f0d2f6| 1 plan9 PLI (R2)(R0) -00f052f6| 1 plan9 PLI.U (R2)(R0) -82f0d3f6| 1 plan9 PLI (R3)(R2<<1) -82f053f6| 1 plan9 PLI.U (R3)(R2<<1) -a2f0d3f6| 1 plan9 PLI (R3)(R2>>1) -a2f053f6| 1 plan9 PLI.U (R3)(R2>>1) -c2f0d3f6| 1 plan9 PLI (R3)(R2->1) -c2f053f6| 1 plan9 PLI.U (R3)(R2->1) -e2f0d3f6| 1 plan9 PLI (R3)(R2@>1) -e2f053f6| 1 plan9 PLI.U (R3)(R2@>1) -939007e1| 1 plan9 SWP R3, (R7), R9 -948042e1| 1 plan9 SWP.B R4, (R2), R8 -000000ef| 1 plan9 SVC $0 -ffff00ef| 1 plan9 SVC $65535 -ff10e0e3| 1 plan9 MVN $255, R1 -ff14e0e3| 1 plan9 MVN $4278190080, R1 -ff10f0e3| 1 plan9 MVN.S $255, R1 -ff14f0e3| 1 plan9 MVN.S $4278190080, R1 -097fe0e1| 1 plan9 MVN R9<<$30, R7 -297fe0e1| 1 plan9 MVN R9>>$30, R7 -497fe0e1| 1 plan9 MVN R9->$30, R7 -697fe0e1| 1 plan9 MVN R9@>$30, R7 -097ff0e1| 1 plan9 MVN.S R9<<$30, R7 -297ff0e1| 1 plan9 MVN.S R9>>$30, R7 -497ff0e1| 1 plan9 MVN.S R9->$30, R7 -697ff0e1| 1 plan9 MVN.S R9@>$30, R7 -1978e0e1| 1 plan9 MVN R9<>R8, R7 -5978e0e1| 1 plan9 MVN R9->R8, R7 -7978e0e1| 1 plan9 MVN R9@>R8, R7 -1978f0e1| 1 plan9 MVN.S R9<>R8, R7 -5978f0e1| 1 plan9 MVN.S R9->R8, R7 -7978f0e1| 1 plan9 MVN.S R9@>R8, R7 -550081e8| 1 plan9 STM [R0,R2,R4,R6], R1 -5f0f81e8| 1 plan9 STM [R0-R4,R6,R8-R11], R1 -5500a1e8| 1 plan9 STM [R0,R2,R4,R6], R1! -5f0fa1e8| 1 plan9 STM [R0-R4,R6,R8-R11], R1! -550091e8| 1 plan9 LDM [R0,R2,R4,R6], R1 -5f0f91e8| 1 plan9 LDM [R0-R4,R6,R8-R11], R1 -5500b1e8| 1 plan9 LDM [R0,R2,R4,R6], R1! -5f0fb1e8| 1 plan9 LDM [R0-R4,R6,R8-R11], R1! -550001e8| 1 plan9 STMDA [R0,R2,R4,R6], R1 -5f0f01e8| 1 plan9 STMDA [R0-R4,R6,R8-R11], R1 -550021e8| 1 plan9 STMDA [R0,R2,R4,R6], R1! -5f0f21e8| 1 plan9 STMDA [R0-R4,R6,R8-R11], R1! -550011e8| 1 plan9 LDMDA [R0,R2,R4,R6], R1 -5f0f11e8| 1 plan9 LDMDA [R0-R4,R6,R8-R11], R1 -550031e8| 1 plan9 LDMDA [R0,R2,R4,R6], R1! -5f0f31e8| 1 plan9 LDMDA [R0-R4,R6,R8-R11], R1! -550001e9| 1 plan9 STMDB [R0,R2,R4,R6], R1 -5f0f01e9| 1 plan9 STMDB [R0-R4,R6,R8-R11], R1 -550021e9| 1 plan9 STMDB [R0,R2,R4,R6], R1! -5f0f21e9| 1 plan9 STMDB [R0-R4,R6,R8-R11], R1! -550011e9| 1 plan9 LDMDB [R0,R2,R4,R6], R1 -5f0f11e9| 1 plan9 LDMDB [R0-R4,R6,R8-R11], R1 -550031e9| 1 plan9 LDMDB [R0,R2,R4,R6], R1! -5f0f31e9| 1 plan9 LDMDB [R0-R4,R6,R8-R11], R1! -55008ae9| 1 plan9 STMIB [R0,R2,R4,R6], R10 -5f0f8ae9| 1 plan9 STMIB [R0-R4,R6,R8-R11], R10 -5500aae9| 1 plan9 STMIB [R0,R2,R4,R6], R10! -5f0faae9| 1 plan9 STMIB [R0-R4,R6,R8-R11], R10! -55009ae9| 1 plan9 LDMIB [R0,R2,R4,R6], R10 -5f0f9ae9| 1 plan9 LDMIB [R0-R4,R6,R8-R11], R10 -5500bae9| 1 plan9 LDMIB [R0,R2,R4,R6], R10! -5f0fbae9| 1 plan9 LDMIB [R0-R4,R6,R8-R11], R10! -0340a0e1| 1 plan9 MOVW R3, R4 -0920a0e1| 1 plan9 MOVW R9, R2 -ff90a0e3| 1 plan9 MOVW $255, R9 -ff94a0e3| 1 plan9 MOVW $4278190080, R9 -aaaa0a13| 1 plan9 MOVW.NE $43690, R10 -aaaa4a03| 1 plan9 MOVT.EQ $43690, R10 -5110e0e3| 1 plan9 MVN $81, R1 -001082e5| 1 plan9 MOVW R1, (R2) -001082e4| 1 plan9 MOVW.P R1, (R2) -0010a2e5| 1 plan9 MOVW.W R1, (R2) -201082e5| 1 plan9 MOVW R1, 0x20(R2) -201082e4| 1 plan9 MOVW.P R1, 0x20(R2) -2010a2e5| 1 plan9 MOVW.W R1, 0x20(R2) -201002e5| 1 plan9 MOVW R1, -0x20(R2) -201002e4| 1 plan9 MOVW.P R1, -0x20(R2) -201022e5| 1 plan9 MOVW.W R1, -0x20(R2) -001092e5| 1 plan9 MOVW (R2), R1 -001092e4| 1 plan9 MOVW.P (R2), R1 -0010b2e5| 1 plan9 MOVW.W (R2), R1 -201092e5| 1 plan9 MOVW 0x20(R2), R1 -201092e4| 1 plan9 MOVW.P 0x20(R2), R1 -2010b2e5| 1 plan9 MOVW.W 0x20(R2), R1 -201012e5| 1 plan9 MOVW -0x20(R2), R1 -201012e4| 1 plan9 MOVW.P -0x20(R2), R1 -201032e5| 1 plan9 MOVW.W -0x20(R2), R1 -00100fe1| 1 plan9 MOVW APSR, R1 -fef02ce3| 1 plan9 MOVW $254, APSR -fff42ce3| 1 plan9 MOVW $4278190080, APSR -05f02c01| 1 plan9 MOVW.EQ R5, APSR -09f02c11| 1 plan9 MOVW.NE R9, APSR -109af10e| 1 plan9 MOVW.EQ FPSCR, R9 -10aaf1ee| 1 plan9 MOVW FPSCR, R10 -109ae11e| 1 plan9 MOVW.NE R9, FPSCR -10aae1ee| 1 plan9 MOVW R10, FPSCR -202e91e7| 1 plan9 MOVW (R1)(R0>>28), R2 -002e91e7| 1 plan9 MOVW (R1)(R0<<28), R2 -402e91e7| 1 plan9 MOVW (R1)(R0->28), R2 -602e91e7| 1 plan9 MOVW (R1)(R0@>28), R2 -202e11e7| 1 plan9 MOVW.U (R1)(R0>>28), R2 -002e11e7| 1 plan9 MOVW.U (R1)(R0<<28), R2 -402e11e7| 1 plan9 MOVW.U (R1)(R0->28), R2 -602e11e7| 1 plan9 MOVW.U (R1)(R0@>28), R2 -202eb1e7| 1 plan9 MOVW.W (R1)(R0>>28), R2 -002eb1e7| 1 plan9 MOVW.W (R1)(R0<<28), R2 -402eb1e7| 1 plan9 MOVW.W (R1)(R0->28), R2 -602eb1e7| 1 plan9 MOVW.W (R1)(R0@>28), R2 -202e9ae6| 1 plan9 MOVW.P (R10)(R0>>28), R2 -002e9ae6| 1 plan9 MOVW.P (R10)(R0<<28), R2 -402e9ae6| 1 plan9 MOVW.P (R10)(R0->28), R2 -602e9ae6| 1 plan9 MOVW.P (R10)(R0@>28), R2 -202e81e7| 1 plan9 MOVW R2, (R1)(R0>>28) -002e81e7| 1 plan9 MOVW R2, (R1)(R0<<28) -402e81e7| 1 plan9 MOVW R2, (R1)(R0->28) -602e81e7| 1 plan9 MOVW R2, (R1)(R0@>28) -202e01e7| 1 plan9 MOVW.U R2, (R1)(R0>>28) -002e01e7| 1 plan9 MOVW.U R2, (R1)(R0<<28) -402e01e7| 1 plan9 MOVW.U R2, (R1)(R0->28) -602e01e7| 1 plan9 MOVW.U R2, (R1)(R0@>28) -202ea1e7| 1 plan9 MOVW.W R2, (R1)(R0>>28) -002ea1e7| 1 plan9 MOVW.W R2, (R1)(R0<<28) -402ea1e7| 1 plan9 MOVW.W R2, (R1)(R0->28) -602ea1e7| 1 plan9 MOVW.W R2, (R1)(R0@>28) -202e85e6| 1 plan9 MOVW.P R2, (R5)(R0>>28) -002e85e6| 1 plan9 MOVW.P R2, (R5)(R0<<28) -402e85e6| 1 plan9 MOVW.P R2, (R5)(R0->28) -602e85e6| 1 plan9 MOVW.P R2, (R5)(R0@>28) -0010c2e5| 1 plan9 MOVB R1, (R2) -0010c2e4| 1 plan9 MOVB.P R1, (R2) -0010e2e5| 1 plan9 MOVB.W R1, (R2) -2010c2e5| 1 plan9 MOVB R1, 0x20(R2) -2010c2e4| 1 plan9 MOVB.P R1, 0x20(R2) -2010e2e5| 1 plan9 MOVB.W R1, 0x20(R2) -201042e5| 1 plan9 MOVB R1, -0x20(R2) -201042e4| 1 plan9 MOVB.P R1, -0x20(R2) -201062e5| 1 plan9 MOVB.W R1, -0x20(R2) -d010d2e1| 1 plan9 MOVBS (R2), R1 -d010d2e0| 1 plan9 MOVBS.P (R2), R1 -d010f2e1| 1 plan9 MOVBS.W (R2), R1 -d012d2e1| 1 plan9 MOVBS 0x20(R2), R1 -d012d2e0| 1 plan9 MOVBS.P 0x20(R2), R1 -d012f2e1| 1 plan9 MOVBS.W 0x20(R2), R1 -d01252e1| 1 plan9 MOVBS -0x20(R2), R1 -d01252e0| 1 plan9 MOVBS.P -0x20(R2), R1 -d01272e1| 1 plan9 MOVBS.W -0x20(R2), R1 -0010d2e5| 1 plan9 MOVBU (R2), R1 -0010dfe5| 1 plan9 MOVBU (R15), R1 -0020dfe5| 1 plan9 MOVBU (R15), R2 -0010d2e4| 1 plan9 MOVBU.P (R2), R1 -0010f2e5| 1 plan9 MOVBU.W (R2), R1 -2010d2e5| 1 plan9 MOVBU 0x20(R2), R1 -2010d2e4| 1 plan9 MOVBU.P 0x20(R2), R1 -2010f2e5| 1 plan9 MOVBU.W 0x20(R2), R1 -201052e5| 1 plan9 MOVBU -0x20(R2), R1 -201052e4| 1 plan9 MOVBU.P -0x20(R2), R1 -201072e5| 1 plan9 MOVBU.W -0x20(R2), R1 -202ec1e7| 1 plan9 MOVB R2, (R1)(R0>>28) -002ec1e7| 1 plan9 MOVB R2, (R1)(R0<<28) -402ec1e7| 1 plan9 MOVB R2, (R1)(R0->28) -602ec1e7| 1 plan9 MOVB R2, (R1)(R0@>28) -202e41e7| 1 plan9 MOVB.U R2, (R1)(R0>>28) -002e41e7| 1 plan9 MOVB.U R2, (R1)(R0<<28) -402e41e7| 1 plan9 MOVB.U R2, (R1)(R0->28) -602e41e7| 1 plan9 MOVB.U R2, (R1)(R0@>28) -202ee1e7| 1 plan9 MOVB.W R2, (R1)(R0>>28) -002ee1e7| 1 plan9 MOVB.W R2, (R1)(R0<<28) -402ee1e7| 1 plan9 MOVB.W R2, (R1)(R0->28) -602ee1e7| 1 plan9 MOVB.W R2, (R1)(R0@>28) -202e61e7| 1 plan9 MOVB.W.U R2, (R1)(R0>>28) -002e61e7| 1 plan9 MOVB.W.U R2, (R1)(R0<<28) -402e61e7| 1 plan9 MOVB.W.U R2, (R1)(R0->28) -602e61e7| 1 plan9 MOVB.W.U R2, (R1)(R0@>28) -202ec5e6| 1 plan9 MOVB.P R2, (R5)(R0>>28) -002ec5e6| 1 plan9 MOVB.P R2, (R5)(R0<<28) -402ec5e6| 1 plan9 MOVB.P R2, (R5)(R0->28) -602ec5e6| 1 plan9 MOVB.P R2, (R5)(R0@>28) -202ed1e7| 1 plan9 MOVBU (R1)(R0>>28), R2 -002ed1e7| 1 plan9 MOVBU (R1)(R0<<28), R2 -402ed1e7| 1 plan9 MOVBU (R1)(R0->28), R2 -602ed1e7| 1 plan9 MOVBU (R1)(R0@>28), R2 -202e51e7| 1 plan9 MOVBU.U (R1)(R0>>28), R2 -002e51e7| 1 plan9 MOVBU.U (R1)(R0<<28), R2 -402e51e7| 1 plan9 MOVBU.U (R1)(R0->28), R2 -602e51e7| 1 plan9 MOVBU.U (R1)(R0@>28), R2 -202ef1e7| 1 plan9 MOVBU.W (R1)(R0>>28), R2 -002ef1e7| 1 plan9 MOVBU.W (R1)(R0<<28), R2 -402ef1e7| 1 plan9 MOVBU.W (R1)(R0->28), R2 -602ef1e7| 1 plan9 MOVBU.W (R1)(R0@>28), R2 -202e71e7| 1 plan9 MOVBU.W.U (R1)(R0>>28), R2 -002e71e7| 1 plan9 MOVBU.W.U (R1)(R0<<28), R2 -402e71e7| 1 plan9 MOVBU.W.U (R1)(R0->28), R2 -602e71e7| 1 plan9 MOVBU.W.U (R1)(R0@>28), R2 -202edae6| 1 plan9 MOVBU.P (R10)(R0>>28), R2 -002edae6| 1 plan9 MOVBU.P (R10)(R0<<28), R2 -402edae6| 1 plan9 MOVBU.P (R10)(R0->28), R2 -602edae6| 1 plan9 MOVBU.P (R10)(R0@>28), R2 -d02091e1| 1 plan9 MOVBS (R1)(R0), R2 -d02011e1| 1 plan9 MOVBS.U (R1)(R0), R2 -d020b1e1| 1 plan9 MOVBS.W (R1)(R0), R2 -d02091e0| 1 plan9 MOVBS.P (R1)(R0), R2 -b040c3e1| 1 plan9 MOVH R4, (R3) -b032c4e1| 1 plan9 MOVH R3, 0x20(R4) -b032e4e1| 1 plan9 MOVH.W R3, 0x20(R4) -b032c4e0| 1 plan9 MOVH.P R3, 0x20(R4) -b03244e1| 1 plan9 MOVH R3, -0x20(R4) -b03264e1| 1 plan9 MOVH.W R3, -0x20(R4) -b03244e0| 1 plan9 MOVH.P R3, -0x20(R4) -b080d9e1| 1 plan9 MOVHU (R9), R8 -b080f9e1| 1 plan9 MOVHU.W (R9), R8 -b080d9e0| 1 plan9 MOVHU.P (R9), R8 -f080d9e1| 1 plan9 MOVHS (R9), R8 -f080f9e1| 1 plan9 MOVHS.W (R9), R8 -f080d9e0| 1 plan9 MOVHS.P (R9), R8 -b282d9e1| 1 plan9 MOVHU 0x22(R9), R8 -b282f9e1| 1 plan9 MOVHU.W 0x22(R9), R8 -b282d9e0| 1 plan9 MOVHU.P 0x22(R9), R8 -f282d9e1| 1 plan9 MOVHS 0x22(R9), R8 -f282f9e1| 1 plan9 MOVHS.W 0x22(R9), R8 -f282d9e0| 1 plan9 MOVHS.P 0x22(R9), R8 -b48259e1| 1 plan9 MOVHU -0x24(R9), R8 -b48279e1| 1 plan9 MOVHU.W -0x24(R9), R8 -b48259e0| 1 plan9 MOVHU.P -0x24(R9), R8 -f48259e1| 1 plan9 MOVHS -0x24(R9), R8 -f48279e1| 1 plan9 MOVHS.W -0x24(R9), R8 -f48259e0| 1 plan9 MOVHS.P -0x24(R9), R8 -002a310e| 1 plan9 ADDF.EQ F0, F1, F2 -202a310e| 1 plan9 ADDF.EQ S1, F1, F2 -802a31ee| 1 plan9 ADDF F0, S3, F2 -002a71ee| 1 plan9 ADDF F0, F1, S5 -035b340e| 1 plan9 ADDD.EQ F3, F4, F5 -002a321e| 1 plan9 ADDF.NE F0, F2, F2 -035b35ee| 1 plan9 ADDD F3, F5, F5 -402a31ee| 1 plan9 SUBF F0, F1, F2 -602a31ee| 1 plan9 SUBF S1, F1, F2 -c02a31ee| 1 plan9 SUBF F0, S3, F2 -402a71ee| 1 plan9 SUBF F0, F1, S5 -435b340e| 1 plan9 SUBD.EQ F3, F4, F5 -402a321e| 1 plan9 SUBF.NE F0, F2, F2 -435b35ee| 1 plan9 SUBD F3, F5, F5 -002a21ee| 1 plan9 MULF F0, F1, F2 -202a21ee| 1 plan9 MULF S1, F1, F2 -802a21ee| 1 plan9 MULF F0, S3, F2 -002a61ee| 1 plan9 MULF F0, F1, S5 -035b240e| 1 plan9 MULD.EQ F3, F4, F5 -002a221e| 1 plan9 MULF.NE F0, F2, F2 -035b25ee| 1 plan9 MULD F3, F5, F5 -402a21ee| 1 plan9 NMULF F0, F1, F2 -602a21ee| 1 plan9 NMULF S1, F1, F2 -c02a21ee| 1 plan9 NMULF F0, S3, F2 -402a61ee| 1 plan9 NMULF F0, F1, S5 -435b240e| 1 plan9 NMULD.EQ F3, F4, F5 -402a221e| 1 plan9 NMULF.NE F0, F2, F2 -435b25ee| 1 plan9 NMULD F3, F5, F5 -002a01ee| 1 plan9 MULAF F0, F1, F2 -202a01ee| 1 plan9 MULAF S1, F1, F2 -802a01ee| 1 plan9 MULAF F0, S3, F2 -002a41ee| 1 plan9 MULAF F0, F1, S5 -035b040e| 1 plan9 MULAD.EQ F3, F4, F5 -002a021e| 1 plan9 MULAF.NE F0, F2, F2 -035b05ee| 1 plan9 MULAD F3, F5, F5 -402a01ee| 1 plan9 MULSF F0, F1, F2 -602a01ee| 1 plan9 MULSF S1, F1, F2 -c02a01ee| 1 plan9 MULSF F0, S3, F2 -402a41ee| 1 plan9 MULSF F0, F1, S5 -435b040e| 1 plan9 MULSD.EQ F3, F4, F5 -402a021e| 1 plan9 MULSF.NE F0, F2, F2 -435b05ee| 1 plan9 MULSD F3, F5, F5 -002a11ee| 1 plan9 NMULSF F0, F1, F2 -202a11ee| 1 plan9 NMULSF S1, F1, F2 -802a11ee| 1 plan9 NMULSF F0, S3, F2 -002a51ee| 1 plan9 NMULSF F0, F1, S5 -035b140e| 1 plan9 NMULSD.EQ F3, F4, F5 -002a121e| 1 plan9 NMULSF.NE F0, F2, F2 -035b15ee| 1 plan9 NMULSD F3, F5, F5 -402a11ee| 1 plan9 NMULAF F0, F1, F2 -602a11ee| 1 plan9 NMULAF S1, F1, F2 -c02a11ee| 1 plan9 NMULAF F0, S3, F2 -402a51ee| 1 plan9 NMULAF F0, F1, S5 -435b140e| 1 plan9 NMULAD.EQ F3, F4, F5 -402a121e| 1 plan9 NMULAF.NE F0, F2, F2 -435b15ee| 1 plan9 NMULAD F3, F5, F5 -002a81ee| 1 plan9 DIVF F0, F1, F2 -202a81ee| 1 plan9 DIVF S1, F1, F2 -802a81ee| 1 plan9 DIVF F0, S3, F2 -002ac1ee| 1 plan9 DIVF F0, F1, S5 -035b840e| 1 plan9 DIVD.EQ F3, F4, F5 -002a821e| 1 plan9 DIVF.NE F0, F2, F2 -035b85ee| 1 plan9 DIVD F3, F5, F5 -401ab1ee| 1 plan9 NEGF F0, F1 -601ab1ee| 1 plan9 NEGF S1, F1 -401af1ee| 1 plan9 NEGF F0, S3 -445bb1ee| 1 plan9 NEGD F4, F5 -c01ab0ee| 1 plan9 ABSF F0, F1 -e01ab0ee| 1 plan9 ABSF S1, F1 -c01af0ee| 1 plan9 ABSF F0, S3 -c45bb0ee| 1 plan9 ABSD F4, F5 -c01ab1ee| 1 plan9 SQRTF F0, F1 -e01ab1ee| 1 plan9 SQRTF S1, F1 -c01af1ee| 1 plan9 SQRTF F0, S3 -c45bb1ee| 1 plan9 SQRTD F4, F5 -c01ab7ee| 1 plan9 MOVFD F0, F1 -c45bb7ee| 1 plan9 MOVDF F4, F5 -c89ab4ee| 1 plan9 CMPF F8, F9 -c45bb42e| 1 plan9 CMPD.CS F4, F5 -c07ab56e| 1 plan9 CMPF.VS $0, F7 -c06bb5ee| 1 plan9 CMPD $0, F6 -9f9f98e1| 1 plan9 LDREX (R8), R9 -9f9fd8e1| 1 plan9 LDREXB (R8), R9 -9f9ff8e1| 1 plan9 LDREXH (R8), R9 -9fcfbbe1| 1 gnu ldrexd ip, [fp] -935f84e1| 1 plan9 STREX R3, (R4), R5 -935fc4e1| 1 plan9 STREXB R3, (R4), R5 -935fe4e1| 1 plan9 STREXH R3, (R4), R5 -98afa9e1| 1 gnu strexd sl, r8, [r9] -104b08ee| 1 plan9 MOVW R4, F8 -108b14ee| 1 plan9 MOVW F4, R8 -104a080e| 1 plan9 MOVW.EQ R4, F8 -104a181e| 1 plan9 MOVW.NE F8, R4 -904a181e| 1 plan9 MOVW.NE S17, R4 -445ab0ee| 1 plan9 MOVF F4, F5 -467bb0ee| 1 plan9 MOVD F6, F7 -c68abdee| 1 plan9 MOVFW F6, F8 -c68abcee| 1 plan9 MOVFW.U F6, F8 -c68bbdee| 1 plan9 MOVDW F6, F8 -c68bbcee| 1 plan9 MOVDW.U F6, F8 -c68ab8ee| 1 plan9 MOVWF F6, F8 -468ab8ee| 1 plan9 MOVWF.U F6, F8 -c68bb8ee| 1 plan9 MOVWD F6, F8 -468bb8ee| 1 plan9 MOVWD.U F6, F8 -000000ea| 1 plan9 B 0x8 -feffffea| 1 plan9 B 0x0 -fcffffea| 1 plan9 B 0xfffffff8 -1f90cfe7| 1 plan9 BFC $16, $0, R9 -9fb4dee7| 1 plan9 BFC $22, $9, R11 -1790cfe7| 1 plan9 BFI $16, $0, R7, R9 -98b4dee7| 1 plan9 BFI $22, $9, R8, R11 -742321e1| 1 plan9 BKPT $4660 -000000eb| 1 plan9 BL 0x8 -feffffeb| 1 plan9 BL 0x0 -fcffffeb| 1 plan9 BL 0xfffffff8 -000000fa| 1 plan9 BLX 0x8 -fefffffa| 1 plan9 BLX 0x0 -fcfffffa| 1 plan9 BLX 0xfffffff8 -33ff2fe1| 1 plan9 BLX R3 -13ff2fe1| 1 plan9 BX R3 -23ff2fe1| 1 plan9 BXJ R3 -1ff07ff5| 1 plan9 CLREX -f7f020e3| 1 gnu dbg #7 -58f07ff5| 1 gnu dmb #8 -49f07ff5| 1 gnu dsb #9 -62f07ff5| 1 gnu isb #2 -009a94ed| 1 plan9 MOVF (R4), F9 -009ad4ed| 1 plan9 MOVF (R4), S19 -009b940d| 1 plan9 MOVD.EQ (R4), F9 -003a9a1d| 1 plan9 MOVF.NE (R10), F3 -003ada1d| 1 plan9 MOVF.NE (R10), S7 -003b9aed| 1 plan9 MOVD (R10), F3 -089a93ed| 1 plan9 MOVF 0x20(R3), F9 -089ad3ed| 1 plan9 MOVF 0x20(R3), S19 -089b940d| 1 plan9 MOVD.EQ 0x20(R4), F9 -083a1a1d| 1 plan9 MOVF.NE -0x20(R10), F3 -083a5a1d| 1 plan9 MOVF.NE -0x20(R10), S7 -083b1aed| 1 plan9 MOVD -0x20(R10), F3 -009a84ed| 1 plan9 MOVF F9, (R4) -009ac4ed| 1 plan9 MOVF S19, (R4) -009b840d| 1 plan9 MOVD.EQ F9, (R4) -003a8a1d| 1 plan9 MOVF.NE F3, (R10) -003aca1d| 1 plan9 MOVF.NE S7, (R10) -003b8aed| 1 plan9 MOVD F3, (R10) -089a83ed| 1 plan9 MOVF F9, 0x20(R3) -089ac3ed| 1 plan9 MOVF S19, 0x20(R3) -089b840d| 1 plan9 MOVD.EQ F9, 0x20(R4) -083a0a1d| 1 plan9 MOVF.NE F3, -0x20(R10) -083a4a1d| 1 plan9 MOVF.NE S7, -0x20(R10) -083b0aed| 1 plan9 MOVD F3, -0x20(R10) -d060c8e1| 1 gnu ldrd r6, [r8] -d06048e1| 1 gnu ldrd r6, [r8] -d060e8e1| 1 gnu ldrd r6, [r8, #0]! -d06068e1| 1 gnu ldrd r6, [r8, #0]! -d060c8e0| 1 gnu ldrd r6, [r8], #0 -d06048e0| 1 gnu ldrd r6, [r8], #0 -d062c8e1| 1 gnu ldrd r6, [r8, #32] -d06248e1| 1 gnu ldrd r6, [r8, #-32] -d062e8e1| 1 gnu ldrd r6, [r8, #32]! -d06268e1| 1 gnu ldrd r6, [r8, #-32]! -d062c8e0| 1 gnu ldrd r6, [r8], #32 -d06248e0| 1 gnu ldrd r6, [r8], #-32 -d24089e1| 1 gnu ldrd r4, [r9, r2] -d240a9e1| 1 gnu ldrd r4, [r9, r2]! -d24009e1| 1 gnu ldrd r4, [r9, -r2] -d24029e1| 1 gnu ldrd r4, [r9, -r2]! -f060c8e1| 1 gnu strd r6, [r8] -f06048e1| 1 gnu strd r6, [r8] -f060e8e1| 1 gnu strd r6, [r8, #0]! -f06068e1| 1 gnu strd r6, [r8, #0]! -f060c8e0| 1 gnu strd r6, [r8], #0 -f06048e0| 1 gnu strd r6, [r8], #0 -f062c8e1| 1 gnu strd r6, [r8, #32] -f06248e1| 1 gnu strd r6, [r8, #-32] -f062e8e1| 1 gnu strd r6, [r8, #32]! -f06268e1| 1 gnu strd r6, [r8, #-32]! -f062c8e0| 1 gnu strd r6, [r8], #32 -f06248e0| 1 gnu strd r6, [r8], #-32 -f24089e1| 1 gnu strd r4, [r9, r2] -f240a9e1| 1 gnu strd r4, [r9, r2]! -f24009e1| 1 gnu strd r4, [r9, -r2] -f24029e1| 1 gnu strd r4, [r9, -r2]! -0010b2e4| 1 gnu ldrt r1, [r2], #0 -2010b2e4| 1 gnu ldrt r1, [r2], #32 -201032e4| 1 gnu ldrt r1, [r2], #-32 -0040bde4| 1 gnu ldrt r4, [sp], #0 -2040bde4| 1 gnu ldrt r4, [sp], #32 -20403de4| 1 gnu ldrt r4, [sp], #-32 -2314b2e6| 1 gnu ldrt r1, [r2], r3, lsr #8 -0314b2e6| 1 gnu ldrt r1, [r2], r3, lsl #8 -4314b2e6| 1 gnu ldrt r1, [r2], r3, asr #8 -6314b2e6| 1 gnu ldrt r1, [r2], r3, ror #8 -231432e6| 1 gnu ldrt r1, [r2], -r3, lsr #8 -031432e6| 1 gnu ldrt r1, [r2], -r3, lsl #8 -431432e6| 1 gnu ldrt r1, [r2], -r3, asr #8 -631432e6| 1 gnu ldrt r1, [r2], -r3, ror #8 -0010a2e4| 1 gnu strt r1, [r2], #0 -2010a2e4| 1 gnu strt r1, [r2], #32 -201022e4| 1 gnu strt r1, [r2], #-32 -0040ade4| 1 gnu strt r4, [sp], #0 -2040ade4| 1 gnu strt r4, [sp], #32 -20402de4| 1 gnu strt r4, [sp], #-32 -2314a2e6| 1 gnu strt r1, [r2], r3, lsr #8 -0314a2e6| 1 gnu strt r1, [r2], r3, lsl #8 -4314a2e6| 1 gnu strt r1, [r2], r3, asr #8 -6314a2e6| 1 gnu strt r1, [r2], r3, ror #8 -231422e6| 1 gnu strt r1, [r2], -r3, lsr #8 -031422e6| 1 gnu strt r1, [r2], -r3, lsl #8 -431422e6| 1 gnu strt r1, [r2], -r3, asr #8 -631422e6| 1 gnu strt r1, [r2], -r3, ror #8 -0010f2e4| 1 gnu ldrbt r1, [r2], #0 -2010f2e4| 1 gnu ldrbt r1, [r2], #32 -201072e4| 1 gnu ldrbt r1, [r2], #-32 -0040fde4| 1 gnu ldrbt r4, [sp], #0 -2040fde4| 1 gnu ldrbt r4, [sp], #32 -20407de4| 1 gnu ldrbt r4, [sp], #-32 -2314f2e6| 1 gnu ldrbt r1, [r2], r3, lsr #8 -0314f2e6| 1 gnu ldrbt r1, [r2], r3, lsl #8 -4314f2e6| 1 gnu ldrbt r1, [r2], r3, asr #8 -6314f2e6| 1 gnu ldrbt r1, [r2], r3, ror #8 -231472e6| 1 gnu ldrbt r1, [r2], -r3, lsr #8 -031472e6| 1 gnu ldrbt r1, [r2], -r3, lsl #8 -431472e6| 1 gnu ldrbt r1, [r2], -r3, asr #8 -631472e6| 1 gnu ldrbt r1, [r2], -r3, ror #8 -0010e2e4| 1 gnu strbt r1, [r2], #0 -2010e2e4| 1 gnu strbt r1, [r2], #32 -201062e4| 1 gnu strbt r1, [r2], #-32 -0040ede4| 1 gnu strbt r4, [sp], #0 -2040ede4| 1 gnu strbt r4, [sp], #32 -20406de4| 1 gnu strbt r4, [sp], #-32 -2314e2e6| 1 gnu strbt r1, [r2], r3, lsr #8 -0314e2e6| 1 gnu strbt r1, [r2], r3, lsl #8 -4314e2e6| 1 gnu strbt r1, [r2], r3, asr #8 -6314e2e6| 1 gnu strbt r1, [r2], r3, ror #8 -231462e6| 1 gnu strbt r1, [r2], -r3, lsr #8 -031462e6| 1 gnu strbt r1, [r2], -r3, lsl #8 -431462e6| 1 gnu strbt r1, [r2], -r3, asr #8 -631462e6| 1 gnu strbt r1, [r2], -r3, ror #8 -d010f2e0| 1 gnu ldrsbt r1, [r2], #0 -d012f2e0| 1 gnu ldrsbt r1, [r2], #32 -d01272e0| 1 gnu ldrsbt r1, [r2], #-32 -d040fde0| 1 gnu ldrsbt r4, [sp], #0 -d042fde0| 1 gnu ldrsbt r4, [sp], #32 -d0427de0| 1 gnu ldrsbt r4, [sp], #-32 -d310b2e0| 1 gnu ldrsbt r1, [r2], r3 -d640bde0| 1 gnu ldrsbt r4, [sp], r6 -d31032e0| 1 gnu ldrsbt r1, [r2], -r3 -d6403de0| 1 gnu ldrsbt r4, [sp], -r6 -b010f2e0| 1 gnu ldrht r1, [r2], #0 -b012f2e0| 1 gnu ldrht r1, [r2], #32 -b01272e0| 1 gnu ldrht r1, [r2], #-32 -b040fde0| 1 gnu ldrht r4, [sp], #0 -b042fde0| 1 gnu ldrht r4, [sp], #32 -b0427de0| 1 gnu ldrht r4, [sp], #-32 -b310b2e0| 1 gnu ldrht r1, [r2], r3 -b640bde0| 1 gnu ldrht r4, [sp], r6 -b31032e0| 1 gnu ldrht r1, [r2], -r3 -b6403de0| 1 gnu ldrht r4, [sp], -r6 -f010f2e0| 1 gnu ldrsht r1, [r2], #0 -f012f2e0| 1 gnu ldrsht r1, [r2], #32 -f01272e0| 1 gnu ldrsht r1, [r2], #-32 -f040fde0| 1 gnu ldrsht r4, [sp], #0 -f042fde0| 1 gnu ldrsht r4, [sp], #32 -f0427de0| 1 gnu ldrsht r4, [sp], #-32 -f310b2e0| 1 gnu ldrsht r1, [r2], r3 -f640bde0| 1 gnu ldrsht r4, [sp], r6 -f31032e0| 1 gnu ldrsht r1, [r2], -r3 -f6403de0| 1 gnu ldrsht r4, [sp], -r6 -b010f2e0| 1 gnu ldrht r1, [r2], #0 -b012f2e0| 1 gnu ldrht r1, [r2], #32 -b01272e0| 1 gnu ldrht r1, [r2], #-32 -b040fde0| 1 gnu ldrht r4, [sp], #0 -b042fde0| 1 gnu ldrht r4, [sp], #32 -b0427de0| 1 gnu ldrht r4, [sp], #-32 -b310b2e0| 1 gnu ldrht r1, [r2], r3 -b640bde0| 1 gnu ldrht r4, [sp], r6 -b31032e0| 1 gnu ldrht r1, [r2], -r3 -b6403de0| 1 gnu ldrht r4, [sp], -r6 -b010e2e0| 1 gnu strht r1, [r2], #0 -b012e2e0| 1 gnu strht r1, [r2], #32 -b01262e0| 1 gnu strht r1, [r2], #-32 -b040ede0| 1 gnu strht r4, [sp], #0 -b042ede0| 1 gnu strht r4, [sp], #32 -b0426de0| 1 gnu strht r4, [sp], #-32 -b310a2e0| 1 gnu strht r1, [r2], r3 -b640ade0| 1 gnu strht r4, [sp], r6 -b31022e0| 1 gnu strht r1, [r2], -r3 -b6402de0| 1 gnu strht r4, [sp], -r6 -00f020e3| 1 plan9 NOP -445ab0ee| 1 plan9 MOVF F4, F5 -645af0ee| 1 plan9 MOVF S9, S11 -467bb0ee| 1 plan9 MOVD F6, F7 -104b08ee| 1 plan9 MOVW R4, F8 -104b28ee| 1 plan9 MOVW R4, D8[1] -108b14ee| 1 plan9 MOVW F4, R8 -108b34ee| 1 plan9 MOVW D4[1], R8 -c68abdee| 1 plan9 MOVFW F6, F8 -e68afdee| 1 plan9 MOVFW S13, S17 -c68abcee| 1 plan9 MOVFW.U F6, F8 -e68afcee| 1 plan9 MOVFW.U S13, S17 -c68bbdee| 1 plan9 MOVDW F6, F8 -c68bfdee| 1 plan9 MOVDW F6, S17 -c68bbcee| 1 plan9 MOVDW.U F6, F8 -c68bfcee| 1 plan9 MOVDW.U F6, S17 -c68ab8ee| 1 plan9 MOVWF F6, F8 -e68af8ee| 1 plan9 MOVWF S13, S17 -468ab8ee| 1 plan9 MOVWF.U F6, F8 -668af8ee| 1 plan9 MOVWF.U S13, S17 -c68bb8ee| 1 plan9 MOVWD F6, F8 -e68bb8ee| 1 plan9 MOVWD S13, F8 -468bb8ee| 1 plan9 MOVWD.U F6, F8 -668bb8ee| 1 plan9 MOVWD.U S13, F8 -c01ab7ee| 1 plan9 MOVFD F0, F1 -e01ab7ee| 1 plan9 MOVFD S1, F1 -c45bb7ee| 1 plan9 MOVDF F4, F5 -c65bf7ee| 1 plan9 MOVDF F6, S11 -102083e6| 1 gnu pkhbt r2, r3, r0 -102283e6| 1 gnu pkhbt r2, r3, r0, lsl #4 -502083e6| 1 gnu pkhtb r2, r3, r0, asr #32 -d02083e6| 1 gnu pkhtb r2, r3, r0, asr #1 -502283e6| 1 gnu pkhtb r2, r3, r0, asr #4 -faaf2de9| 1 gnu push {r1, r3, r4, r5, r6, r7, r8, r9, sl, fp, sp, pc} -04202de5| 1 gnu push {r2} -faafbde8| 1 gnu pop {r1, r3, r4, r5, r6, r7, r8, r9, sl, fp, sp, pc} -04209de4| 1 gnu pop {r2} -556003e1| 1 gnu qadd r6, r5, r3 -156f28e6| 1 gnu qadd16 r6, r8, r5 -956f28e6| 1 gnu qadd8 r6, r8, r5 -550044e1| 1 gnu qdadd r0, r5, r4 -550066e1| 1 gnu qdsub r0, r5, r6 -156f68e6| 1 gnu uqadd16 r6, r8, r5 -956f68e6| 1 gnu uqadd8 r6, r8, r5 -356f28e6| 1 gnu qasx r6, r8, r5 -556f28e6| 1 gnu qsax r6, r8, r5 -356f64e6| 1 gnu uqasx r6, r4, r5 -553f64e6| 1 gnu uqsax r3, r4, r5 -556022e1| 1 gnu qsub r6, r5, r2 -774f21e6| 1 gnu qsub16 r4, r1, r7 -f74f21e6| 1 gnu qsub8 r4, r1, r7 -774f61e6| 1 gnu uqsub16 r4, r1, r7 -f74f61e6| 1 gnu uqsub8 r4, r1, r7 -6670a0e1| 1 gnu rrx r7, r6 -6670b0e1| 1 gnu rrxs r7, r6 -112f13e6| 1 gnu sadd16 r2, r3, r1 -992f13e6| 1 gnu sadd8 r2, r3, r9 -112f33e6| 1 gnu shadd16 r2, r3, r1 -992f33e6| 1 gnu shadd8 r2, r3, r9 -712f13e6| 1 gnu ssub16 r2, r3, r1 -f92f13e6| 1 gnu ssub8 r2, r3, r9 -712f33e6| 1 gnu shsub16 r2, r3, r1 -f92f33e6| 1 gnu shsub8 r2, r3, r9 -112f53e6| 1 gnu uadd16 r2, r3, r1 -992f53e6| 1 gnu uadd8 r2, r3, r9 -112f73e6| 1 gnu uhadd16 r2, r3, r1 -992f73e6| 1 gnu uhadd8 r2, r3, r9 -712f53e6| 1 gnu usub16 r2, r3, r1 -f92f53e6| 1 gnu usub8 r2, r3, r9 -712f73e6| 1 gnu uhsub16 r2, r3, r1 -f92f73e6| 1 gnu uhsub8 r2, r3, r9 -332f14e6| 1 gnu sasx r2, r4, r3 -532f14e6| 1 gnu ssax r2, r4, r3 -332f54e6| 1 gnu uasx r2, r4, r3 -532f54e6| 1 gnu usax r2, r4, r3 -332f34e6| 1 gnu shasx r2, r4, r3 -532f34e6| 1 gnu shsax r2, r4, r3 -332f74e6| 1 gnu uhasx r2, r4, r3 -532f74e6| 1 gnu uhsax r2, r4, r3 -dc51afe7| 1 plan9 SBFX $16, $3, R12, R5 -dc51efe7| 1 plan9 UBFX $16, $3, R12, R5 -b12f88e6| 1 gnu sel r2, r8, r1 -000201f1| 1 gnu setend be -000001f1| 1 gnu setend le -04f020e3| 1 gnu sev -1155aae6| 1 gnu ssat r5, #11, r1, lsl #10 -5155aae6| 1 gnu ssat r5, #11, r1, asr #10 -335faae6| 1 gnu ssat16 r5, #11, r3 -1155eae6| 1 gnu usat r5, #10, r1, lsl #10 -5155eae6| 1 gnu usat r5, #10, r1, asr #10 -335feae6| 1 gnu usat16 r5, #10, r3 -7788a9e6| 1 plan9 SXTAB R7@>$16, R9, R8 -778889e6| 1 plan9 SXTAB16 R7@>$16, R9, R8 -7788b9e6| 1 plan9 SXTAH R7@>$16, R9, R8 -7784afe6| 1 plan9 MOVBS R7@>$8, R8 -778c8fe6| 1 plan9 SXTB16 R7@>$24, R8 -7780bf16| 1 plan9 MOVHS.NE R7, R8 -7788e906| 1 plan9 UXTAB.EQ R7@>$16, R9, R8 -7788c9e6| 1 plan9 UXTAB16 R7@>$16, R9, R8 -7788f9e6| 1 plan9 UXTAH R7@>$16, R9, R8 -7784efe6| 1 plan9 MOVBU R7@>$8, R8 -778ccfe6| 1 plan9 UXTB16 R7@>$24, R8 -7780ffe6| 1 plan9 MOVHU R7, R8 -11f288e7| 1 gnu usad8 r8, r1, r2 -112388e7| 1 gnu usada8 r8, r1, r3, r2 -02f020e3| 1 gnu wfe -03f020e3| 1 gnu wfi -01f020e3| 1 gnu yield diff --git a/src/cmd/vendor/golang.org/x/arch/arm64/arm64asm/decode_test.go b/src/cmd/vendor/golang.org/x/arch/arm64/arm64asm/decode_test.go deleted file mode 100644 index 9c7d2b62d5c71a..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/arm64/arm64asm/decode_test.go +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2017 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. - -package arm64asm - -import ( - "encoding/hex" - "io/ioutil" - "path/filepath" - "strings" - "testing" -) - -func testDecode(t *testing.T, syntax string) { - input := filepath.Join("testdata", syntax+"cases.txt") - data, err := ioutil.ReadFile(input) - if err != nil { - t.Fatal(err) - } - all := string(data) - for strings.Contains(all, "\t\t") { - all = strings.Replace(all, "\t\t", "\t", -1) - } - for _, line := range strings.Split(all, "\n") { - line = strings.TrimSpace(line) - if line == "" || strings.HasPrefix(line, "#") { - continue - } - f := strings.SplitN(line, "\t", 2) - i := strings.Index(f[0], "|") - if i < 0 { - t.Errorf("parsing %q: missing | separator", f[0]) - continue - } - if i%2 != 0 { - t.Errorf("parsing %q: misaligned | separator", f[0]) - } - code, err := hex.DecodeString(f[0][:i] + f[0][i+1:]) - if err != nil { - t.Errorf("parsing %q: %v", f[0], err) - continue - } - asm := f[1] - inst, decodeErr := Decode(code) - if decodeErr != nil && decodeErr != errUnknown { - // Some rarely used system instructions are not supported - // Following logicals will filter such unknown instructions - - t.Errorf("parsing %x: %s", code, decodeErr) - continue - } - var out string - switch syntax { - case "gnu": - out = GNUSyntax(inst) - case "plan9": - out = GoSyntax(inst, 0, nil, nil) - default: - t.Errorf("unknown syntax %q", syntax) - continue - } - // TODO: system instruction. - var Todo = strings.Fields(` - sys - dc - at - tlbi - ic - hvc - smc - `) - if strings.Replace(out, " ", "", -1) != strings.Replace(asm, " ", "", -1) && !hasPrefix(asm, Todo...) { - // Exclude MSR since GNU objdump result is incorrect. eg. 0xd504431f msr s0_4_c4_c3_0, xzr - if !strings.HasSuffix(asm, " nv") && !strings.HasPrefix(asm, "msr") { - t.Errorf("Decode(%s) [%s] = %s, want %s", strings.Trim(f[0], "|"), syntax, out, asm) - } - } - } -} - -func TestDecodeGNUSyntax(t *testing.T) { - testDecode(t, "gnu") -} - -func TestDecodeGoSyntax(t *testing.T) { - testDecode(t, "plan9") -} diff --git a/src/cmd/vendor/golang.org/x/arch/arm64/arm64asm/ext_test.go b/src/cmd/vendor/golang.org/x/arch/arm64/arm64asm/ext_test.go deleted file mode 100644 index f432203e1501a9..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/arm64/arm64asm/ext_test.go +++ /dev/null @@ -1,604 +0,0 @@ -// Copyright 2017 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. - -// Support for testing against external disassembler program. -// Copied and simplified from ../../arm/armasm/ext_test.go. - -package arm64asm - -import ( - "bufio" - "bytes" - "encoding/hex" - "encoding/json" - "flag" - "fmt" - "io" - "io/ioutil" - "log" - "math/rand" - "os" - "os/exec" - "path/filepath" - "regexp" - "strconv" - "strings" - "testing" - "time" -) - -var ( - dumpTest = flag.Bool("dump", false, "dump all encodings") - mismatch = flag.Bool("mismatch", false, "log allowed mismatches") - longTest = flag.Bool("long", false, "long test") - keep = flag.Bool("keep", false, "keep object files around") - debug = false -) - -// An ExtInst represents a single decoded instruction parsed -// from an external disassembler's output. -type ExtInst struct { - addr uint64 - enc [4]byte - nenc int - text string -} - -func (r ExtInst) String() string { - return fmt.Sprintf("%#x: % x: %s", r.addr, r.enc, r.text) -} - -// An ExtDis is a connection between an external disassembler and a test. -type ExtDis struct { - Arch Mode - Dec chan ExtInst - File *os.File - Size int - KeepFile bool - Cmd *exec.Cmd -} - -// InstJson describes instruction fields value got from ARMv8-A Reference Manual -type InstJson struct { - Name string - Bits string - Arch string - Syntax string - Code string - Alias string - Enc uint32 -} - -// A Mode is an instruction execution mode. -type Mode int - -const ( - _ Mode = iota - ModeARM64 -) - -// Run runs the given command - the external disassembler - and returns -// a buffered reader of its standard output. -func (ext *ExtDis) Run(cmd ...string) (*bufio.Reader, error) { - if *keep { - log.Printf("%s\n", strings.Join(cmd, " ")) - } - ext.Cmd = exec.Command(cmd[0], cmd[1:]...) - out, err := ext.Cmd.StdoutPipe() - if err != nil { - return nil, fmt.Errorf("stdoutpipe: %v", err) - } - if err := ext.Cmd.Start(); err != nil { - return nil, fmt.Errorf("exec: %v", err) - } - - b := bufio.NewReaderSize(out, 1<<20) - return b, nil -} - -// Wait waits for the command started with Run to exit. -func (ext *ExtDis) Wait() error { - return ext.Cmd.Wait() -} - -// testExtDis tests a set of byte sequences against an external disassembler. -// The disassembler is expected to produce the given syntax and run -// in the given architecture mode (16, 32, or 64-bit). -// The extdis function must start the external disassembler -// and then parse its output, sending the parsed instructions on ext.Dec. -// The generate function calls its argument f once for each byte sequence -// to be tested. The generate function itself will be called twice, and it must -// make the same sequence of calls to f each time. -// When a disassembly does not match the internal decoding, -// allowedMismatch determines whether this mismatch should be -// allowed, or else considered an error. -func testExtDis( - t *testing.T, - syntax string, - arch Mode, - extdis func(ext *ExtDis) error, - generate func(f func([]byte)), - allowedMismatch func(text string, inst *Inst, dec ExtInst) bool, -) { - start := time.Now() - ext := &ExtDis{ - Dec: make(chan ExtInst), - Arch: arch, - } - errc := make(chan error) - - // First pass: write instructions to input file for external disassembler. - file, f, size, err := writeInst(generate) - if err != nil { - t.Fatal(err) - } - ext.Size = size - ext.File = f - defer func() { - f.Close() - if !*keep { - os.Remove(file) - } - }() - - // Second pass: compare disassembly against our decodings. - var ( - totalTests = 0 - totalSkips = 0 - totalErrors = 0 - - errors = make([]string, 0, 100) // Sampled errors, at most cap - ) - go func() { - errc <- extdis(ext) - }() - - generate(func(enc []byte) { - dec, ok := <-ext.Dec - if !ok { - t.Errorf("decoding stream ended early") - return - } - inst, text := disasm(syntax, pad(enc)) - - totalTests++ - if *dumpTest { - fmt.Printf("%x -> %s [%d]\n", enc[:len(enc)], dec.text, dec.nenc) - } - if text != dec.text && !strings.Contains(dec.text, "unknown") && syntax == "gnu" { - suffix := "" - if allowedMismatch(text, &inst, dec) { - totalSkips++ - if !*mismatch { - return - } - suffix += " (allowed mismatch)" - } - totalErrors++ - cmp := fmt.Sprintf("decode(%x) = %q, %d, want %q, %d%s\n", enc, text, len(enc), dec.text, dec.nenc, suffix) - - if len(errors) >= cap(errors) { - j := rand.Intn(totalErrors) - if j >= cap(errors) { - return - } - errors = append(errors[:j], errors[j+1:]...) - } - errors = append(errors, cmp) - } - }) - - if *mismatch { - totalErrors -= totalSkips - } - - for _, b := range errors { - t.Log(b) - } - - if totalErrors > 0 { - t.Fail() - } - t.Logf("%d test cases, %d expected mismatches, %d failures; %.0f cases/second", totalTests, totalSkips, totalErrors, float64(totalTests)/time.Since(start).Seconds()) - t.Logf("decoder coverage: %.1f%%;\n", decodeCoverage()) - if err := <-errc; err != nil { - t.Fatalf("external disassembler: %v", err) - } - -} - -// Start address of text. -const start = 0x8000 - -// writeInst writes the generated byte sequences to a new file -// starting at offset start. That file is intended to be the input to -// the external disassembler. -func writeInst(generate func(func([]byte))) (file string, f *os.File, size int, err error) { - f, err = ioutil.TempFile("", "arm64asm") - if err != nil { - return - } - - file = f.Name() - - f.Seek(start, io.SeekStart) - w := bufio.NewWriter(f) - defer w.Flush() - size = 0 - generate(func(x []byte) { - if debug { - fmt.Printf("%#x: %x%x\n", start+size, x, zeros[len(x):]) - } - w.Write(x) - w.Write(zeros[len(x):]) - size += len(zeros) - }) - return file, f, size, nil -} - -var zeros = []byte{0, 0, 0, 0} - -// pad pads the code sequence with pops. -func pad(enc []byte) []byte { - if len(enc) < 4 { - enc = append(enc[:len(enc):len(enc)], zeros[:4-len(enc)]...) - } - return enc -} - -// disasm returns the decoded instruction and text -// for the given source bytes, using the given syntax and mode. -func disasm(syntax string, src []byte) (inst Inst, text string) { - var err error - inst, err = Decode(src) - if err != nil { - text = "error: " + err.Error() - return - } - text = inst.String() - switch syntax { - case "gnu": - text = GNUSyntax(inst) - case "plan9": // [sic] - text = GoSyntax(inst, 0, nil, nil) - default: - text = "error: unknown syntax " + syntax - } - return -} - -// decodecoverage returns a floating point number denoting the -// decoder coverage. -func decodeCoverage() float64 { - n := 0 - for _, t := range decoderCover { - if t { - n++ - } - } - return 100 * float64(1+n) / float64(1+len(decoderCover)) -} - -// Helpers for writing disassembler output parsers. - -// hasPrefix reports whether any of the space-separated words in the text s -// begins with any of the given prefixes. -func hasPrefix(s string, prefixes ...string) bool { - for _, prefix := range prefixes { - for cur_s := s; cur_s != ""; { - if strings.HasPrefix(cur_s, prefix) { - return true - } - i := strings.Index(cur_s, " ") - if i < 0 { - break - } - cur_s = cur_s[i+1:] - } - } - return false -} - -// isHex reports whether b is a hexadecimal character (0-9a-fA-F). -func isHex(b byte) bool { - return ('0' <= b && b <= '9') || ('a' <= b && b <= 'f') || ('A' <= b && b <= 'F') -} - -// parseHex parses the hexadecimal byte dump in hex, -// appending the parsed bytes to raw and returning the updated slice. -// The returned bool reports whether any invalid hex was found. -// Spaces and tabs between bytes are okay but any other non-hex is not. -func parseHex(hex []byte, raw []byte) ([]byte, bool) { - hex = bytes.TrimSpace(hex) - for j := 0; j < len(hex); { - for hex[j] == ' ' || hex[j] == '\t' { - j++ - } - if j >= len(hex) { - break - } - if j+2 > len(hex) || !isHex(hex[j]) || !isHex(hex[j+1]) { - return nil, false - } - raw = append(raw, unhex(hex[j])<<4|unhex(hex[j+1])) - j += 2 - } - return raw, true -} - -func unhex(b byte) byte { - if '0' <= b && b <= '9' { - return b - '0' - } else if 'A' <= b && b <= 'F' { - return b - 'A' + 10 - } else if 'a' <= b && b <= 'f' { - return b - 'a' + 10 - } - return 0 -} - -// index is like bytes.Index(s, []byte(t)) but avoids the allocation. -func index(s []byte, t string) int { - i := 0 - for { - j := bytes.IndexByte(s[i:], t[0]) - if j < 0 { - return -1 - } - i = i + j - if i+len(t) > len(s) { - return -1 - } - for k := 1; k < len(t); k++ { - if s[i+k] != t[k] { - goto nomatch - } - } - return i - nomatch: - i++ - } -} - -// fixSpace rewrites runs of spaces, tabs, and newline characters into single spaces in s. -// If s must be rewritten, it is rewritten in place. -func fixSpace(s []byte) []byte { - s = bytes.TrimSpace(s) - for i := 0; i < len(s); i++ { - if s[i] == '\t' || s[i] == '\n' || i > 0 && s[i] == ' ' && s[i-1] == ' ' { - goto Fix - } - } - return s - -Fix: - b := s - w := 0 - for i := 0; i < len(s); i++ { - c := s[i] - if c == '\t' || c == '\n' { - c = ' ' - } - if c == ' ' && w > 0 && b[w-1] == ' ' { - continue - } - b[w] = c - w++ - } - if w > 0 && b[w-1] == ' ' { - w-- - } - return b[:w] -} - -// Fllowing regular expressions matches instructions using relative addressing mode. -// pcrel matches B instructions and BL instructions. -// pcrelr matches instrucions which consisted of register arguments and label arguments. -// pcrelim matches instructions which consisted of register arguments, immediate -// arguments and lable arguments. -// pcrelrzr and prcelimzr matches instructions when register arguments is zero register. -// pcrelprfm matches PRFM instructions when arguments consisted of register and lable. -// pcrelprfmim matches PRFM instructions when arguments consisted of immediate and lable. -var ( - pcrel = regexp.MustCompile(`^((?:.* )?(?:b|bl)x?(?:\.)?(?:eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|nv)?) 0x([0-9a-f]+)$`) - pcrelr = regexp.MustCompile(`^((?:.*)?(?:ldr|adrp|adr|cbnz|cbz|ldrsw) (?:x|w|s|d|q)(?:[0-9]+,)) 0x([0-9a-f]+)$`) - pcrelrzr = regexp.MustCompile(`^((?:.*)?(?:ldr|adrp|adr|cbnz|cbz|ldrsw) (?:x|w)zr,) 0x([0-9a-f]+)$`) - pcrelim = regexp.MustCompile(`^((?:.*)?(?:tbnz|tbz) (?:x|w)(?:[0-9]+,) (?:#[0-9a-f]+,)) 0x([0-9a-f]+)$`) - pcrelimzr = regexp.MustCompile(`^((?:.*)?(?:tbnz|tbz) (?:x|w)zr, (?:#[0-9a-f]+,)) 0x([0-9a-f]+)$`) - pcrelprfm = regexp.MustCompile(`^((?:.*)?(?:prfm) (?:[0-9a-z]+,)) 0x([0-9a-f]+)$`) - pcrelprfmim = regexp.MustCompile(`^((?:.*)?(?:prfm) (?:#0x[0-9a-f]+,)) 0x([0-9a-f]+)$`) -) - -// Round is the multiple of the number of instructions that read from Json file. -// Round used as seed value for pseudo-random number generator provides the same sequence -// in the same round run for the external disassembler and decoder. -var Round int - -// condmark is used to mark conditional instructions when need to generate and test -// conditional instructions. -var condmark bool = false - -// Generate instruction binary according to Json file -// Encode variable field of instruction with random value -func doFuzzy(inst *InstJson, Ninst int) { - var testdata uint32 - var NonDigRE = regexp.MustCompile(`[\D]`) - rand.Seed(int64(Round + Ninst)) - off := 0 - DigBit := "" - if condmark == true && !strings.Contains(inst.Bits, "cond") { - inst.Enc = 0xffffffff - } else { - for _, f := range strings.Split(inst.Bits, "|") { - if i := strings.Index(f, ":"); i >= 0 { - // consider f contains "01:2" and "Rm:5" - DigBit = f[:i] - m := NonDigRE.FindStringSubmatch(DigBit) - if m == nil { - DigBit = strings.TrimSpace(DigBit) - s := strings.Split(DigBit, "") - for i := 0; i < len(s); i++ { - switch s[i] { - case "1", "(1)": - testdata |= 1 << uint(31-off) - } - off++ - } - } else { - // DigBit is "Rn" or "imm3" - n, _ := strconv.Atoi(f[i+1:]) - if DigBit == "cond" && condmark == true { - r := uint8(Round) - for i := n - 1; i >= 0; i-- { - switch (r >> uint(i)) & 1 { - case 1: - testdata |= 1 << uint(31-off) - } - off++ - } - } else { - for i := 0; i < n; i++ { - r := rand.Intn(2) - switch r { - case 1: - testdata |= 1 << uint(31-off) - } - off++ - } - } - } - continue - } - for _, bit := range strings.Fields(f) { - switch bit { - case "0", "(0)": - off++ - continue - case "1", "(1)": - testdata |= 1 << uint(31-off) - default: - r := rand.Intn(2) - switch r { - case 1: - testdata |= 1 << uint(31-off) - } - } - off++ - } - } - if off != 32 { - log.Printf("incorrect bit count for %s %s: have %d", inst.Name, inst.Bits, off) - } - inst.Enc = testdata - } -} - -// Generators. -// -// The test cases are described as functions that invoke a callback repeatedly, -// with a new input sequence each time. These helpers make writing those -// a little easier. - -// JSONCases generates ARM64 instructions according to inst.json. -func JSONCases(t *testing.T) func(func([]byte)) { - return func(try func([]byte)) { - data, err := ioutil.ReadFile("inst.json") - if err != nil { - t.Fatal(err) - } - var insts []InstJson - var instsN []InstJson - // Change N value to get more cases only when condmark=false. - N := 100 - if condmark == true { - N = 16 - } - if err := json.Unmarshal(data, &insts); err != nil { - t.Fatal(err) - } - // Append instructions to get more test cases. - for i := 0; i < N; { - for _, inst := range insts { - instsN = append(instsN, inst) - } - i++ - } - Round = 0 - for i := range instsN { - if i%len(insts) == 0 { - Round++ - } - doFuzzy(&instsN[i], i) - } - for _, inst := range instsN { - if condmark == true && inst.Enc == 0xffffffff { - continue - } - enc := inst.Enc - try([]byte{byte(enc), byte(enc >> 8), byte(enc >> 16), byte(enc >> 24)}) - } - } -} - -// condCases generates conditional instructions. -func condCases(t *testing.T) func(func([]byte)) { - return func(try func([]byte)) { - condmark = true - JSONCases(t)(func(enc []byte) { - try(enc) - }) - } -} - -// hexCases generates the cases written in hexadecimal in the encoded string. -// Spaces in 'encoded' separate entire test cases, not individual bytes. -func hexCases(t *testing.T, encoded string) func(func([]byte)) { - return func(try func([]byte)) { - for _, x := range strings.Fields(encoded) { - src, err := hex.DecodeString(x) - if err != nil { - t.Errorf("parsing %q: %v", x, err) - } - try(src) - } - } -} - -// testdataCases generates the test cases recorded in testdata/cases.txt. -// It only uses the inputs; it ignores the answers recorded in that file. -func testdataCases(t *testing.T, syntax string) func(func([]byte)) { - var codes [][]byte - input := filepath.Join("testdata", syntax+"cases.txt") - data, err := ioutil.ReadFile(input) - if err != nil { - t.Fatal(err) - } - for _, line := range strings.Split(string(data), "\n") { - line = strings.TrimSpace(line) - if line == "" || strings.HasPrefix(line, "#") { - continue - } - f := strings.Fields(line)[0] - i := strings.Index(f, "|") - if i < 0 { - t.Errorf("parsing %q: missing | separator", f) - continue - } - if i%2 != 0 { - t.Errorf("parsing %q: misaligned | separator", f) - } - code, err := hex.DecodeString(f[:i] + f[i+1:]) - if err != nil { - t.Errorf("parsing %q: %v", f, err) - continue - } - codes = append(codes, code) - } - - return func(try func([]byte)) { - for _, code := range codes { - try(code) - } - } -} diff --git a/src/cmd/vendor/golang.org/x/arch/arm64/arm64asm/objdump_test.go b/src/cmd/vendor/golang.org/x/arch/arm64/arm64asm/objdump_test.go deleted file mode 100644 index 3baf8a19dd19d0..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/arm64/arm64asm/objdump_test.go +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright 2017 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. - -package arm64asm - -import ( - "strings" - "testing" -) - -func TestObjdumpARM64TestDecodeGNUSyntaxdata(t *testing.T) { - testObjdumpARM64(t, testdataCases(t, "gnu")) -} -func TestObjdumpARM64TestDecodeGoSyntaxdata(t *testing.T) { - testObjdumpARM64(t, testdataCases(t, "plan9")) -} -func TestObjdumpARM64Manual(t *testing.T) { testObjdumpARM64(t, hexCases(t, objdumpManualTests)) } -func TestObjdumpARM64Cond(t *testing.T) { testObjdumpARM64(t, condCases(t)) } -func TestObjdumpARM64(t *testing.T) { testObjdumpARM64(t, JSONCases(t)) } - -// objdumpManualTests holds test cases that will be run by TestObjdumpARMManual. -// If you are debugging a few cases that turned up in a longer run, it can be useful -// to list them here and then use -run=Manual, particularly with tracing enabled. -// Note that these are byte sequences, so they must be reversed from the usual -// word presentation. -var objdumpManualTests = ` -bf2003d5 -9f2003d5 -7f2003d5 -5f2003d5 -3f2003d5 -1f2003d5 -df4d03d5 -ff4d03d5 -28d91b14 -da6cb530 -15e5e514 -ff4603d5 -df4803d5 -bf4100d5 -9f3f03d5 -9f3e03d5 -9f3d03d5 -9f3b03d5 -9f3a03d5 -9f3903d5 -9f3703d5 -9f3603d5 -9f3503d5 -9f3303d5 -9f3203d5 -9f3103d5 -ff4603d5 -df4803d5 -bf4100d5 -a3681b53 -47dc78d3 -0500a012 -0500e092 -0500a052 -0500a0d2 -cd5a206e -cd5a202e -743d050e -743d0a0e -743d0c0e -743d084e -` - -// allowedMismatchObjdump reports whether the mismatch between text and dec -// should be allowed by the test. -func allowedMismatchObjdump(text string, inst *Inst, dec ExtInst) bool { - // Skip unsupported instructions - if hasPrefix(dec.text, todo...) { - return true - } - // GNU objdump has incorrect alias conditions for following instructions - if inst.Enc&0x000003ff == 0x000003ff && hasPrefix(dec.text, "negs") && hasPrefix(text, "cmp") { - return true - } - // GNU objdump "NV" is equal to our "AL" - if strings.HasSuffix(dec.text, " nv") && strings.HasSuffix(text, " al") { - return true - } - if strings.HasPrefix(dec.text, "b.nv") && strings.HasPrefix(text, "b.al") { - return true - } - // GNU objdump recognizes invalid binaries as following instructions - if hasPrefix(dec.text, "hint", "mrs", "msr", "bfc", "orr", "mov") { - return true - } - if strings.HasPrefix(text, "hint") { - return true - } - // GNU objdump recognizes reserved valuse as valid ones - if strings.Contains(text, "unknown instruction") && hasPrefix(dec.text, "fmla", "fmul", "fmulx", "fcvtzs", "fcvtzu", "fmls", "fmov", "scvtf", "ucvtf") { - return true - } - // Some old objdump recognizes ldur*/stur*/prfum as ldr*/str*/prfm - for k, v := range oldObjdumpMismatch { - if strings.HasPrefix(dec.text, k) && strings.Replace(dec.text, k, v, 1) == text { - return true - } - } - // New objdump supports some newer mnemonics than this package. This - // package should be updated to support the new mnemonics and the sense - // of this reversed to continue passing with older objdumps but that - // requires internal ARM tooling. - if newForm, ok := newMnemonics[text]; ok && newForm == dec.text { - return true - } - // GNU objdump misses spaces between operands for some instructions (e.g., "ld1 {v10.2s, v11.2s}, [x23],#16") - if strings.Replace(text, " ", "", -1) == strings.Replace(dec.text, " ", "", -1) { - return true - } - return false -} - -// TODO: system instruction. -var todo = strings.Fields(` - sys - dc - at - tlbi - ic - hvc - smc -`) - -// Following instructions can't be covered because they are just aliases to another instructions which are always preferred -var Ncover = strings.Fields(` - sbfm - asrv - bfm - ubfm - lslv - lsrv - rorv - ins - dup -`) - -// Some old objdump wrongly decodes following instructions and allow their mismatches to avoid false alarm -var oldObjdumpMismatch = map[string]string{ - //oldObjValue correctValue - "ldr": "ldur", - "ldrb": "ldurb", - "ldrh": "ldurh", - "ldrsb": "ldursb", - "ldrsh": "ldursh", - "ldrsw": "ldursw", - "str": "stur", - "strb": "sturb", - "strh": "sturh", - "prfm": "prfum", -} - -var newMnemonics = map[string]string{ - "dsb #0x00": "ssbb", - "dsb #0x04": "pssbb", -} diff --git a/src/cmd/vendor/golang.org/x/arch/arm64/arm64asm/objdumpext_test.go b/src/cmd/vendor/golang.org/x/arch/arm64/arm64asm/objdumpext_test.go deleted file mode 100644 index 3bf4fa8539008a..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/arm64/arm64asm/objdumpext_test.go +++ /dev/null @@ -1,299 +0,0 @@ -// Copyright 2017 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. - -// Copied and simplified from ../../arm/armasm/objdumpext_test.go. - -package arm64asm - -import ( - "bytes" - "debug/elf" - "encoding/binary" - "fmt" - "io" - "log" - "os" - "os/exec" - "strconv" - "strings" - "testing" -) - -const objdumpPath = "/usr/bin/objdump" - -func testObjdumpARM64(t *testing.T, generate func(func([]byte))) { - testObjdumpArch(t, generate, ModeARM64) -} - -func testObjdumpArch(t *testing.T, generate func(func([]byte)), arch Mode) { - checkObjdumpAarch64(t) - testExtDis(t, "gnu", arch, objdump, generate, allowedMismatchObjdump) - testExtDis(t, "plan9", arch, objdump, generate, allowedMismatchObjdump) -} - -func checkObjdumpAarch64(t *testing.T) { - out, err := exec.Command(objdumpPath, "-i").Output() - if err != nil { - t.Skipf("cannot run objdump: %v\n%s", err, out) - } - if !strings.Contains(string(out), "aarch64") { - t.Skip("objdump does not have aarch64 support") - } -} - -func objdump(ext *ExtDis) error { - // File already written with instructions; add ELF header. - if ext.Arch == ModeARM64 { - if err := writeELF64(ext.File, ext.Size); err != nil { - return err - } - } else { - panic("unknown arch") - } - - b, err := ext.Run(objdumpPath, "-d", "-z", ext.File.Name()) - if err != nil { - return err - } - - var ( - nmatch int - reading bool - next uint64 = start - addr uint64 - encbuf [4]byte - enc []byte - text string - ) - flush := func() { - if addr == next { - // PC-relative addresses are translated to absolute addresses based on PC by GNU objdump - // Following logical rewrites the absolute addresses back to PC-relative ones for comparing - // with our disassembler output which are PC-relative - - if m := pcrelprfmim.FindStringSubmatch(text); m != nil { - targ, _ := strconv.ParseUint(m[2], 16, 64) - text = fmt.Sprintf("%s .%+#x", m[1], uint64(targ-uint64(addr))) - } - if m := pcrelprfm.FindStringSubmatch(text); m != nil { - targ, _ := strconv.ParseUint(m[2], 16, 64) - text = fmt.Sprintf("%s .%+#x", m[1], uint64(targ-uint64(addr))) - } - if m := pcrelim.FindStringSubmatch(text); m != nil { - targ, _ := strconv.ParseUint(m[2], 16, 64) - text = fmt.Sprintf("%s .%+#x", m[1], uint64(targ-uint64(addr))) - } - if m := pcrelimzr.FindStringSubmatch(text); m != nil { - targ, _ := strconv.ParseUint(m[2], 16, 64) - text = fmt.Sprintf("%s .%+#x", m[1], uint64(targ-uint64(addr))) - } - if m := pcrelr.FindStringSubmatch(text); m != nil { - targ, _ := strconv.ParseUint(m[2], 16, 64) - if strings.Contains(m[1], "adrp") { - text = fmt.Sprintf("%s .%+#x", m[1], uint64(targ-uint64(addr&0xfffff000))) - } else { - text = fmt.Sprintf("%s .%+#x", m[1], uint64(targ-uint64(addr))) - } - } - if m := pcrelrzr.FindStringSubmatch(text); m != nil { - targ, _ := strconv.ParseUint(m[2], 16, 64) - if strings.Contains(m[1], "adrp") { - text = fmt.Sprintf("%s .%+#x", m[1], uint64(targ-uint64(addr&0xfffff000))) - } else { - text = fmt.Sprintf("%s .%+#x", m[1], uint64(targ-uint64(addr))) - } - } - if m := pcrel.FindStringSubmatch(text); m != nil { - targ, _ := strconv.ParseUint(m[2], 16, 64) - text = fmt.Sprintf("%s .%+#x", m[1], uint64(targ-uint64(addr))) - } - if strings.HasPrefix(text, "mov") && strings.Contains(text, "//") { - s := strings.Split(text, " //") - text = s[0] - } - text = strings.Replace(text, "#0.0", "#0", -1) - if text == "undefined" && len(enc) == 4 { - text = "error: unknown instruction" - enc = nil - } - if len(enc) == 4 { - // prints as word but we want to record bytes - enc[0], enc[3] = enc[3], enc[0] - enc[1], enc[2] = enc[2], enc[1] - } - ext.Dec <- ExtInst{addr, encbuf, len(enc), text} - encbuf = [4]byte{} - enc = nil - next += 4 - } - } - var textangle = []byte("<.text>:") - for { - line, err := b.ReadSlice('\n') - if err != nil { - if err == io.EOF { - break - } - return fmt.Errorf("reading objdump output: %v", err) - } - if bytes.Contains(line, textangle) { - reading = true - continue - } - if !reading { - continue - } - if debug { - os.Stdout.Write(line) - } - if enc1 := parseContinuation(line, encbuf[:len(enc)]); enc1 != nil { - enc = enc1 - continue - } - flush() - nmatch++ - addr, enc, text = parseLine(line, encbuf[:0]) - if addr > next { - return fmt.Errorf("address out of sync expected <= %#x at %q in:\n%s", next, line, line) - } - } - flush() - if next != start+uint64(ext.Size) { - return fmt.Errorf("not enough results found [%d %d]", next, start+ext.Size) - } - if err := ext.Wait(); err != nil { - return fmt.Errorf("exec: %v", err) - } - - return nil -} - -var ( - undefined = []byte("undefined") - unpredictable = []byte("unpredictable") - slashslash = []byte("//") -) - -func parseLine(line []byte, encstart []byte) (addr uint64, enc []byte, text string) { - ok := false - oline := line - i := index(line, ":\t") - if i < 0 { - log.Fatalf("cannot parse disassembly: %q", oline) - } - x, err := strconv.ParseUint(string(bytes.TrimSpace(line[:i])), 16, 32) - if err != nil { - log.Fatalf("cannot parse disassembly: %q", oline) - } - addr = uint64(x) - line = line[i+2:] - i = bytes.IndexByte(line, '\t') - if i < 0 { - log.Fatalf("cannot parse disassembly: %q", oline) - } - enc, ok = parseHex(line[:i], encstart) - if !ok { - log.Fatalf("cannot parse disassembly: %q", oline) - } - line = bytes.TrimSpace(line[i:]) - if bytes.Contains(line, undefined) { - text = "undefined" - return - } - if false && bytes.Contains(line, unpredictable) { - text = "unpredictable" - return - } - // Strip trailing comment starting with ';' - // e.g: "csinv x23, x2, x19, cc ; xxx" - if i := bytes.IndexByte(line, ';'); i >= 0 { - line = bytes.TrimSpace(line[:i]) - } - // Strip trailing comment starting with "//" - // e.g: "fccmpe s2, s9, #0x7, ne // xxx" - if i := bytes.Index(line, slashslash); i >= 0 { - line = bytes.TrimSpace(line[:i]) - } - text = string(fixSpace(line)) - return -} - -func parseContinuation(line []byte, enc []byte) []byte { - i := index(line, ":\t") - if i < 0 { - return nil - } - line = line[i+1:] - enc, _ = parseHex(line, enc) - return enc -} - -// writeELF64 writes an ELF64 header to the file, describing a text -// segment that starts at start (0x8000) and extends for size bytes. -func writeELF64(f *os.File, size int) error { - f.Seek(0, io.SeekStart) - var hdr elf.Header64 - var prog elf.Prog64 - var sect elf.Section64 - var buf bytes.Buffer - binary.Write(&buf, binary.LittleEndian, &hdr) - off1 := buf.Len() - binary.Write(&buf, binary.LittleEndian, &prog) - off2 := buf.Len() - binary.Write(&buf, binary.LittleEndian, §) - off3 := buf.Len() - buf.Reset() - data := byte(elf.ELFDATA2LSB) - hdr = elf.Header64{ - Ident: [16]byte{0x7F, 'E', 'L', 'F', 2, data, 1}, - Type: 2, - Machine: uint16(elf.EM_AARCH64), - Version: 1, - Entry: start, - Phoff: uint64(off1), - Shoff: uint64(off2), - Flags: 0x05000002, - Ehsize: uint16(off1), - Phentsize: uint16(off2 - off1), - Phnum: 1, - Shentsize: uint16(off3 - off2), - Shnum: 3, - Shstrndx: 2, - } - binary.Write(&buf, binary.LittleEndian, &hdr) - prog = elf.Prog64{ - Type: 1, - Off: start, - Vaddr: start, - Paddr: start, - Filesz: uint64(size), - Memsz: uint64(size), - Flags: 5, - Align: start, - } - binary.Write(&buf, binary.LittleEndian, &prog) - binary.Write(&buf, binary.LittleEndian, §) // NULL section - sect = elf.Section64{ - Name: 1, - Type: uint32(elf.SHT_PROGBITS), - Addr: start, - Off: start, - Size: uint64(size), - Flags: uint64(elf.SHF_ALLOC | elf.SHF_EXECINSTR), - Addralign: 4, - } - binary.Write(&buf, binary.LittleEndian, §) // .text - sect = elf.Section64{ - Name: uint32(len("\x00.text\x00")), - Type: uint32(elf.SHT_STRTAB), - Addr: 0, - Off: uint64(off2 + (off3-off2)*3), - Size: uint64(len("\x00.text\x00.shstrtab\x00")), - Addralign: 1, - } - binary.Write(&buf, binary.LittleEndian, §) - buf.WriteString("\x00.text\x00.shstrtab\x00") - f.Write(buf.Bytes()) - return nil -} diff --git a/src/cmd/vendor/golang.org/x/arch/arm64/arm64asm/testdata/Makefile b/src/cmd/vendor/golang.org/x/arch/arm64/arm64asm/testdata/Makefile deleted file mode 100644 index 9ff54a6e16b2e3..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/arm64/arm64asm/testdata/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -go test command: - cd ..; go test -run 'ObjdumpARM64Cond' -v -timeout 10h -long 2>&1 | tee log - cd ..; go test -run 'ObjdumpARM64TestGUNSyntaxdata' -v -timeout 10h -long 2>&1 | tee -a log - cd ..; go test -run 'ObjdumpARM64TestGoSyntaxdata' -v -timeout 10h -long 2>&1 | tee -a log - cd ..; go test -run 'ObjdumpARM64' -v -timeout 10h -long 2>&1 | tee -a log - cd ..; go test -run 'ObjdumpARM64Manual' -v -timeout 10h -long 2>&1 | tee -a log - cd ..; go test -run 'TestDecodeGNUSyntax' - cd ..; go test -run 'TestDecodeGoSyntax' - cd ..; go test -run '.*' diff --git a/src/cmd/vendor/golang.org/x/arch/arm64/arm64asm/testdata/gnucases.txt b/src/cmd/vendor/golang.org/x/arch/arm64/arm64asm/testdata/gnucases.txt deleted file mode 100644 index 21542099608305..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/arm64/arm64asm/testdata/gnucases.txt +++ /dev/null @@ -1,4651 +0,0 @@ -0a011f1a| adc w10, w8, wzr -4c00009a| adc x12, x2, x0 -a602093a| adcs w6, w21, w9 -d60217ba| adcs x22, x22, x23 -0921250b| add w9, w8, w5, uxth -ee9e288b| add x14, x23, w8, sxtb #7 -23123011| add w3, w17, #0xc04 -2ba32391| add x11, x25, #0x8e8 -67158d0b| add w7, w11, w13, asr #5 -30da198b| add x16, x17, x25, lsl #54 -a7e72c2b| adds w7, w29, w12, sxtx #1 -357338ab| adds x21, x25, x24, uxtx #4 -6b147731| adds w11, w3, #0xdc5, lsl #12 -cd59872b| adds w13, w14, w7, asr #22 -e41f4eab| adds x4, xzr, x14, lsr #7 -b7dd8470| adr x23, .+0xfffffffffff09bb7 -0f4996d0| adrp x15, .+0xffffffff2c922000 -a2432412| and w2, w29, #0xf0001fff -93910e92| and x19, x12, #0x7c007c007c007c -7a1ec98a| and x26, x19, x9, ror #7 -1ff32972| tst w24, #0xaaaaaaaa -458051f2| ands x5, x2, #0xffff80000000ffff -af629a6a| ands w15, w21, w26, asr #24 -7ab0dfea| ands x26, x3, xzr, ror #44 -792bcc1a| asr w25, w27, w12 -872bce9a| asr x7, x28, x14 -99ff4b93| asr x25, x28, #11 -1628c91a| asr w22, w0, w9 -4e2acf9a| asr x14, x18, x15 -4be5a454| b.lt .+0xfffffffffff49ca8 -53257114| b .+0x1c4954c -dbb557b3| bfxil x27, x14, #23, #23 -70e861b3| bfxil x16, x3, #33, #26 -88a75ab3| bfxil x8, x28, #26, #16 -b03ce70a| bic w16, w5, w7, ror #15 -9235ec8a| bic x18, x12, x12, ror #13 -7450b96a| bics w20, w3, w25, asr #20 -3730b3ea| bics x23, x1, x19, asr #12 -9b897797| bl .+0xfffffffffdde266c -e0013fd6| blr x15 -a0031fd6| br x29 -e08c31d4| brk #0x8c67 -027eb435| cbnz w2, .+0xfffffffffff68fc0 -c7eb42b5| cbnz x7, .+0x85d78 -8f1d4c34| cbz w15, .+0x983b0 -e1c5abb4| cbz x1, .+0xfffffffffff578bc -4bfb543a| ccmn w26, #0x14, #0xb, al -015b46ba| ccmn x24, #0x6, #0x1, pl -8602463a| ccmn w20, w6, #0x6, eq -c6d34cba| ccmn x30, x12, #0x6, le -a76b4f7a| ccmp w29, #0xf, #0x7, vs -e3d853fa| ccmp x7, #0x13, #0x3, le -4022467a| ccmp w18, w6, #0x0, cs -c7b346fa| ccmp x30, x6, #0x7, lt -ee279b1a| csinc w14, wzr, w27, cs -4174819a| csinc x1, x2, x1, vc -5100955a| csinv w17, w2, w21, eq -573093da| csinv x23, x2, x19, cc -5f3403d5| clrex #0x4 -e615c05a| cls w6, w15 -ff15c0da| cls xzr, x15 -2e10c05a| clz w14, w1 -a912c0da| clz x9, x21 -ff11352b| cmn w15, w21, uxtb #4 -1f5220ab| cmn x16, w0, uxtw #4 -ff02266b| cmp w23, w6, uxtb -5fb739eb| cmp x26, w25, sxth #5 -bfa73bf1| cmp x29, #0xee9 -7f5c47eb| cmp x3, x7, lsr #23 -2e458e5a| csneg w14, w9, w14, mi -c3559cda| csneg x3, x14, x28, pl -1041d11a| crc32b w16, w8, w17 -bb46c31a| crc32h w27, w21, w3 -c94bd61a| crc32w w9, w30, w22 -8f4cd49a| crc32x w15, w4, x20 -7653d21a| crc32cb w22, w27, w18 -1454d51a| crc32ch w20, w0, w21 -7c58c91a| crc32cw w28, w3, w9 -185ccb9a| crc32cx w24, w0, x11 -8c30941a| csel w12, w4, w20, cc -0ea08c9a| csel x14, x0, x12, ge -e3b79f1a| cset w3, ge -fea79f9a| cset x30, lt -e5639f5a| csetm w5, vc -e4739fda| csetm x4, vs -bad4981a| csinc w26, w5, w24, le -5167909a| csinc x17, x26, x16, vs -65e3955a| csinv w5, w27, w21, al -8e338bda| csinv x14, x28, x11, cc -0a269d5a| csneg w10, w16, w29, cs -ab1692da| csneg x11, x21, x18, ne -418ea5d4| dcps1 #0x2c72 -6239a5d4| dcps2 #0x29cb -e3ebabd4| dcps3 #0x5f5f -bf3a03d5| dmb ishst -e003bfd6| drps -9f3003d5| dsb #0x00 -c974354a| eon w9, w6, w21, lsl #29 -89b86eca| eon x9, x4, x14, lsr #46 -76e343d2| eor x22, x27, #0xe03fffffffffffff -536d8c4a| eor w19, w10, w12, asr #27 -d1ef1cca| eor x17, x30, x28, lsl #59 -e0039fd6| eret -591d8813| extr w25, w10, w8, #7 -888dd693| extr x8, x12, x22, #35 -bf2003d5| sevl -df2003d5| hint #0x6 -a0fc5fd4| hlt #0xffe5 -df3103d5| isb #0x1 -9dfddf88| ldar w29, [x12] -76ffdfc8| ldar x22, [x27] -36ffdf08| ldarb w22, [x25] -bcfcdf48| ldarh w28, [x5] -54c17f88| ldaxp w20, w16, [x10] -3eaf7fc8| ldaxp x30, x11, [x25] -e2fd5f88| ldaxr w2, [x15] -f5fd5fc8| ldaxr x21, [x15] -70fe5f08| ldaxrb w16, [x19] -bcfc5f48| ldaxrh w28, [x5] -ecff5928| ldnp w12, wzr, [sp,#204] -852744a8| ldnp x5, x9, [x28,#64] -1286d728| ldp w18, w1, [x16],#188 -7668e8a8| ldp x22, x26, [x3],#-384 -6d8bc729| ldp w13, w2, [x27,#60]! -1cadd1a9| ldp x28, x11, [x8,#280]! -bf4e7e29| ldp wzr, w19, [x21,#-16] -61695fa9| ldp x1, x26, [x11,#496] -4c00e668| ldpsw x12, x0, [x2],#-208 -85a0cb69| ldpsw x5, x8, [x4,#92]! -9b894d69| ldpsw x27, x2, [x12,#108] -e9955ab8| ldr w9, [x15],#-87 -5c255df8| ldr x28, [x10],#-46 -703c57b8| ldr w16, [x3,#-141]! -1dac57f8| ldr x29, [x0,#-134]! -393c50b9| ldr w25, [x1,#4156] -498d5cf9| ldr x9, [x10,#14616] -841fe218| ldr w4, .+0xfffffffffffc43f0 -cce88858| ldr x12, .+0xfffffffffff11d18 -72fa72b8| ldr w18, [x19,x18,sxtx #2] -daeb66f8| ldr x26, [x30,x6,sxtx] -8ca74238| ldrb w12, [x28],#42 -4e5c5e38| ldrb w14, [x2,#-27]! -03936d39| ldrb w3, [x24,#2916] -577a6e38| ldrb w23, [x18,x14,lsl #0] -adb54678| ldrh w13, [x13],#107 -820f4c78| ldrh w2, [x28,#192]! -92787579| ldrh w18, [x4,#6844] -4bd6c438| ldrsb w11, [x18],#77 -fb478238| ldrsb x27, [sp],#36 -4d7edc38| ldrsb w13, [x18,#-57]! -18ee9438| ldrsb x24, [x16,#-178]! -16b9c639| ldrsb w22, [x8,#430] -37958f39| ldrsb x23, [x9,#997] -af7ae238| ldrsb w15, [x21,x2,lsl #0] -1568fa38| ldrsb w21, [x0,x26] -744bbf38| ldrsb x20, [x27,wzr,uxtw] -f069a538| ldrsb x16, [x15,x5] -d9a6cd78| ldrsh w25, [x22],#218 -ff368b78| ldrsh xzr, [x23],#179 -5b8cc878| ldrsh w27, [x2,#136]! -361f9c78| ldrsh x22, [x25,#-63]! -359bec79| ldrsh w21, [x25,#5708] -4d6c8079| ldrsh x13, [x2,#54] -9deae578| ldrsh w29, [x20,x5,sxtx] -f2fab878| ldrsh x18, [x23,x24,sxtx #1] -02669cb8| ldrsw x2, [x16],#-58 -5c8e92b8| ldrsw x28, [x18,#-216]! -ea9e92b9| ldrsw x10, [x23,#4764] -6e280c98| ldrsw x14, .+0x1850c -49dabcb8| ldrsw x9, [x18,w28,sxtw #2] -64285eb8| ldtr w4, [x3,#-30] -6ab851f8| ldtr x10, [x3,#-229] -aa094f38| ldtrb w10, [x13,#240] -b7894e78| ldtrh w23, [x13,#232] -85cadd38| ldtrsb w5, [x20,#-36] -2db99838| ldtrsb x13, [x9,#-117] -7ef8ce78| ldtrsh w30, [x3,#239] -786a8978| ldtrsh x24, [x19,#150] -c5eb81b8| ldtrsw x5, [x30,#30] -a1f14bb8| ldur w1, [x13,#191] -c3425cf8| ldur x3, [x22,#-60] -2e125038| ldurb w14, [x17,#-255] -26004878| ldurh w6, [x1,#128] -c3e3cd38| ldursb w3, [x30,#222] -27618938| ldursb x7, [x9,#150] -7c71db78| ldursh w28, [x11,#-73] -1d109e78| ldursh x29, [x0,#-31] -d48084b8| ldursw x20, [x6,#72] -172f7f88| ldxp w23, w11, [x24] -10347fc8| ldxp x16, x13, [x0] -fe7f5f88| ldxr w30, [sp] -6c7f5fc8| ldxr x12, [x27] -047c5f08| ldxrb w4, [x0] -9a7d5f48| ldxrh w26, [x12] -4f21cb1a| lsl w15, w10, w11 -1523db9a| lsl x21, x24, x27 -81c74fd3| ubfx x1, x28, #15, #35 -c922c81a| lsl w9, w22, w8 -fd22dc9a| lsl x29, x23, x28 -4226dd1a| lsr w2, w18, w29 -a224ca9a| lsr x2, x5, x10 -707c0153| lsr w16, w3, #1 -34fc4cd3| lsr x20, x1, #12 -6c24c91a| lsr w12, w3, w9 -8527c89a| lsr x5, x28, x8 -ea36171b| madd w10, w23, w23, w13 -e47a0a9b| madd x4, x23, x10, x30 -35fd001b| mneg w21, w9, w0 -77ff0e9b| mneg x23, x27, x14 -38030011| add w24, w25, #0x0 -37030091| add x23, x25, #0x0 -94b8ad12| mov w20, #0x923bffff -fff29892| mov xzr, #0xffffffffffff3868 -d4adb252| mov w20, #0x956e0000 -8747e2d2| mov x7, #0x123c000000000000 -f5132d32| orr w21, wzr, #0xf80000 -eb7f34b2| mov x11, #0xffffffffffffffff -f503092a| mov w21, w9 -e7031eaa| mov x7, x30 -35e8c1f2| movk x21, #0xf41, lsl #32 -44629512| mov w4, #0xffff54ed -cc0dd392| mov x12, #0xffff6791ffffffff -cbfb9152| mov w11, #0x8fde -3d25ebd2| mov x29, #0x5929000000000000 -e67a3fd5| mrs x6, s3_7_c7_c10_7 -f9dd15d5| msr s2_5_c13_c13_7, x25 -25840c1b| msub w5, w1, w12, w1 -02ce1a9b| msub x2, x16, x26, x19 -b67c1a1b| mul w22, w5, w26 -607c049b| mul x0, x3, x4 -e97f6daa| mvn x9, x13, lsr #31 -fe071f6b| negs w30, wzr, lsl #1 -f68f14eb| negs x22, x20, lsl #35 -e8030d5a| ngc w8, w13 -fe031eda| ngc x30, x30 -e5030a7a| ngcs w5, w10 -f00318fa| ngcs x16, x24 -1f2003d5| nop -032ee42a| orn w3, w16, w4, ror #11 -634cf6aa| orn x3, x3, x22, ror #19 -f8492d32| orr w24, w15, #0xfff8003f -96f542b2| orr x22, x12, #0xcfffffffffffffff -1c110d2a| orr w28, w8, w13, lsl #4 -c65b1eaa| orr x6, x30, x30, lsl #22 -f300b2f9| prfm pstl2strm, [x7,#25600] -2aa196d8| prfm plil2keep, .+0xfffffffffff2d424 -2ad8bef8| prfm plil2keep, [x1,w30,sxtw #3] -c62184f8| prfum #0x06, [x14,#66] -3601c05a| rbit w22, w9 -6401c0da| rbit x4, x11 -e0035fd6| ret xzr -0a09c05a| rev w10, w8 -220cc0da| rev x2, x1 -b206c05a| rev16 w18, w21 -2407c0da| rev16 x4, x25 -7e0bc0da| rev32 x30, x27 -ae0ec0da| rev x14, x21 -336f8413| extr w19, w25, w4, #27 -af47ca93| extr x15, x29, x10, #17 -bc2cdb1a| ror w28, w5, w27 -e52fdd9a| ror x5, xzr, x29 -832dc31a| ror w3, w12, w3 -e22ec09a| ror x2, x23, x0 -1801045a| sbc w24, w8, w4 -5a0119da| sbc x26, x10, x25 -52021b7a| sbcs w18, w18, w27 -250105fa| sbcs x5, x9, x5 -fc430b13| sbfx w28, wzr, #11, #6 -a0574093| sbfx x0, x29, #0, #22 -8b3b7a93| sbfiz x11, x28, #6, #15 -fc310513| sbfx w28, w15, #5, #8 -fbdc4293| sbfx x27, x7, #2, #54 -c90dd61a| sdiv w9, w14, w22 -a90ecd9a| sdiv x9, x21, x13 -9f2003d5| sev -bf2003d5| sevl -d27f229b| smull x18, w30, w2 -efff3a9b| smnegl x15, wzr, w26 -7d963f9b| smsubl x29, w19, wzr, x5 -b57e519b| smulh x21, x21, x17 -a07c209b| smull x0, w5, w0 -d0fe9f88| stlr w16, [x22] -03ff9fc8| stlr x3, [x24] -8bff9f08| stlrb w11, [x28] -f0fe9f48| stlrh w16, [x23] -c6ae3588| stlxp w21, w6, w11, [x22] -c6fa22c8| stlxp w2, x6, x30, [x22] -affd0e88| stlxr w14, w15, [x13] -67ff1cc8| stlxr w28, x7, [x27] -17ff1c08| stlxrb w28, w23, [x24] -7bfe0b48| stlxrh w11, w27, [x19] -2a8c0528| stnp w10, w3, [x1,#44] -67fc10a8| stnp x7, xzr, [x3,#264] -5559bd28| stp w21, w22, [x10],#-24 -166c96a8| stp x22, x27, [x0],#352 -3d4a8729| stp w29, w18, [x17,#56]! -912f86a9| stp x17, x11, [x28,#96]! -c40d3029| stp w4, w3, [x14,#-128] -f73f39a9| stp x23, x15, [sp,#-112] -34441eb8| str w20, [x1],#-28 -11f60bf8| str x17, [x16],#191 -c15d15b8| str w1, [x14,#-171]! -ae4d12f8| str x14, [x13,#-220]! -03ef39b9| str w3, [x24,#14828] -208228f9| str x0, [x17,#20736] -734823f8| str x19, [x3,w3,uxtw] -ffb41838| strb wzr, [x7],#-117 -bb0d1a38| strb w27, [x13,#-96]! -b1612239| strb w17, [x13,#2200] -92682038| strb w18, [x4,x0] -81682638| strb w1, [x4,x6] -87841b78| strh w7, [x4],#-72 -cc3d1878| strh w12, [x14,#-125]! -53cf1c79| strh w19, [x26,#3686] -63792d78| strh w3, [x11,x13,lsl #1] -9d7803b8| sttr w29, [x4,#55] -b9c807f8| sttr x25, [x5,#124] -f04a1e38| sttrb w16, [x23,#-28] -52990078| sttrh w18, [x10,#9] -152002b8| stur w21, [x0,#34] -397217f8| stur x25, [x17,#-137] -8f320138| sturb w15, [x20,#19] -eb021b78| sturh w11, [x23,#-80] -854a3f88| stxp wzr, w5, w18, [x20] -d12620c8| stxp w0, x17, x9, [x22] -537e0288| stxr w2, w19, [x18] -af7d15c8| stxr w21, x15, [x13] -e97c1d08| stxrb w29, w9, [x7] -837d1b48| stxrh w27, w3, [x12] -f25e344b| sub w18, w23, w20, uxtw #7 -3ac825cb| sub x26, x1, w5, sxtw #2 -e8f40ccb| sub x8, x7, x12, lsl #61 -a6ad226b| subs w6, w13, w2, sxth #3 -647735eb| subs x4, x27, x21, uxtx #5 -c770566b| subs w7, w6, w22, lsr #28 -d03c1aeb| subs x16, x6, x26, lsl #15 -a17f03d4| svc #0x1bfd -991f0013| sxtb w25, w28 -a91d4093| sxtb x9, w13 -083d0013| sxth w8, w8 -393e4093| sxth x25, w17 -1b7c4093| sxtw x27, w0 -0c5b2cd5| sysl x12, #4, C5, C11, #0 -09868bb7| tbnz x9, #49, .+0x70c0 -8c2e6836| tbz w12, #13, .+0x5d0 -3f0d0172| tst w9, #0x80000007 -df6f7cf2| tst x30, #0xfffffff0 -1f2f11ea| tst x24, x17, lsl #11 -9ced71d3| ubfx x28, x12, #49, #11 -1cbb7fd3| ubfiz x28, x24, #1, #47 -25e661d3| ubfx x5, x17, #33, #25 -af0adc1a| udiv w15, w21, w28 -550ac29a| udiv x21, x18, x2 -9102b19b| umaddl x17, w20, w17, x0 -41fea39b| umnegl x1, w18, w3 -87d8a39b| umsubl x7, w4, w3, x22 -987ed89b| umulh x24, x20, x24 -d37eb29b| umull x19, w22, w18 -461c0053| uxtb w6, w2 -f43c0053| uxth w20, w7 -5f2003d5| wfe -7f2003d5| wfi -3f2003d5| yield -e5bb200e| abs v5.8b, v31.8b -c9842d0e| add v9.8b, v6.8b, v13.8b -f4bd394e| addp v20.16b, v15.16b, v25.16b -b3b8b14e| addv s19, v5.4s -cd5b284e| aesd v13.16b, v30.16b -4b4b284e| aese v11.16b, v26.16b -2879284e| aesimc v8.16b, v9.16b -fe68284e| aesmc v30.16b, v7.16b -f61e334e| and v22.16b, v23.16b, v19.16b -88a4002f| mvni v8.4h, #0x4, lsl #8 -1877076f| bic v24.4s, #0xf8, lsl #24 -0d1e6c0e| bic v13.8b, v16.8b, v12.8b -b81ce26e| bif v24.16b, v5.16b, v2.16b -381cbf2e| bit v24.8b, v1.8b, v31.8b -cd1f6c6e| bsl v13.16b, v30.16b, v12.16b -8d48a00e| cls v13.2s, v4.2s -324ba02e| clz v18.2s, v25.2s -c88f2b2e| cmeq v8.8b, v30.8b, v11.8b -a799e05e| cmeq d7, d13, #0 -dc9be04e| cmeq v28.2d, v30.2d, #0 -623f2d4e| cmge v2.16b, v27.16b, v13.16b -e889e06e| cmge v8.2d, v15.2d, #0 -cb37e55e| cmgt d11, d30, d5 -8e37b00e| cmgt v14.2s, v28.2s, v16.2s -1a8be04e| cmgt v26.2d, v24.2d, #0 -7f37eb7e| cmhi d31, d27, d11 -333d356e| cmhs v19.16b, v9.16b, v21.16b -bd9ae07e| cmle d29, d21, #0 -8999602e| cmle v9.4h, v12.4h, #0 -aca9e05e| cmlt d12, d13, #0 -7fa8204e| cmlt v31.16b, v3.16b, #0 -588db20e| cmtst v24.2s, v10.2s, v18.2s -cc051d5e| mov b12, v14.b[14] -4c06050e| dup v12.8b, v18.b[2] -790c020e| dup v25.4h, w3 -391d286e| eor v25.16b, v9.16b, v8.16b -4b30156e| ext v11.16b, v2.16b, v21.16b, #6 -44d6bf7e| fabd s4, s18, s31 -17fba00e| fabs v23.2s, v24.2s -90c2201e| fabs s16, s20 -62c2601e| fabs d2, d19 -eeef3f7e| facge s14, s31, s31 -09efa07e| facgt s9, s24, s0 -72edae6e| facgt v18.4s, v11.4s, v14.4s -61d5394e| fadd v1.4s, v11.4s, v25.4s -0d2a3d1e| fadd s13, s16, s29 -4b296f1e| fadd d11, d10, d15 -78d8307e| faddp s24, v3.2s -e7d7322e| faddp v7.2s, v31.2s, v18.2s -e8253c1e| fccmp s15, s28, #0x8, cs -e8857f1e| fccmp d15, d31, #0x8, hi -5714291e| fccmpe s2, s9, #0x7, ne -b484631e| fccmpe d5, d3, #0x4, hi -3ce5685e| fcmeq d28, d9, d8 -50e6214e| fcmeq v16.4s, v18.4s, v1.4s -9ddae05e| fcmeq d29, d20, #0 -b3e62b7e| fcmge s19, s21, s11 -0ce4396e| fcmge v12.4s, v0.4s, v25.4s -a6c9e07e| fcmge d6, d13, #0 -ede6bd7e| fcmgt s13, s23, s29 -13e6ae2e| fcmgt v19.2s, v16.2s, v14.2s -4cc9e05e| fcmgt d12, d10, #0 -41cba04e| fcmgt v1.4s, v26.4s, #0 -96d8e07e| fcmle d22, d4, #0 -0be9a05e| fcmlt s11, s8, #0 -dfe9a04e| fcmlt v31.4s, v14.4s, #0 -a023301e| fcmp s29, s16 -68213e1e| fcmp s11, #0 -20236d1e| fcmp d25, d13 -68216b1e| fcmp d11, #0 -3023351e| fcmpe s25, s21 -78203e1e| fcmpe s3, #0 -b022721e| fcmpe d21, d18 -f8226f1e| fcmpe d23, #0 -b54e271e| fcsel s21, s21, s7, mi -319f611e| fcsel d17, d25, d1, ls -2142e21e| fcvt s1, h17 -cfc3e21e| fcvt d15, h30 -01c1231e| fcvt h1, s8 -4fc0221e| fcvt d15, s2 -f9c0631e| fcvt h25, d7 -2b43621e| fcvt s11, d25 -f1c8615e| fcvtas d17, d7 -ea01241e| fcvtas w10, s15 -0c02249e| fcvtas x12, s16 -e702641e| fcvtas w7, d23 -f501649e| fcvtas x21, d15 -45ca217e| fcvtau s5, s18 -66c9212e| fcvtau v6.2s, v11.2s -b302251e| fcvtau w19, s21 -e102259e| fcvtau x1, s23 -5703651e| fcvtau w23, d26 -2c01659e| fcvtau x12, d9 -2c7b210e| fcvtl v12.4s, v25.4h -f478214e| fcvtl2 v20.4s, v7.8h -d1b8615e| fcvtms d17, d6 -a2ba614e| fcvtms v2.2d, v21.2d -ee01301e| fcvtms w14, s15 -de01309e| fcvtms x30, s14 -8401701e| fcvtms w4, d12 -c502709e| fcvtms x5, d22 -44b8617e| fcvtmu d4, d2 -5601311e| fcvtmu w22, s10 -4602319e| fcvtmu x6, s18 -1003711e| fcvtmu w16, d24 -e602719e| fcvtmu x6, d23 -c16b210e| fcvtn v1.4h, v30.4s -4d6b614e| fcvtn2 v13.4s, v26.2d -95ab215e| fcvtns s21, s28 -65a9614e| fcvtns v5.2d, v11.2d -8a02201e| fcvtns w10, s20 -bc03209e| fcvtns x28, s29 -fc01601e| fcvtns w28, d15 -9800609e| fcvtns x24, d4 -b1aa617e| fcvtnu d17, d21 -80a9216e| fcvtnu v0.4s, v12.4s -3201211e| fcvtnu w18, s9 -e101219e| fcvtnu x1, s15 -ae00611e| fcvtnu w14, d5 -9503619e| fcvtnu x21, d28 -3faae15e| fcvtps d31, d17 -c4a8e14e| fcvtps v4.2d, v6.2d -ab01281e| fcvtps w11, s13 -5800289e| fcvtps x24, s2 -9b02681e| fcvtps w27, d20 -de03689e| fcvtps x30, d30 -d8aaa17e| fcvtpu s24, s22 -e203291e| fcvtpu w2, s31 -5302299e| fcvtpu x19, s18 -5302691e| fcvtpu w19, d18 -8501699e| fcvtpu x5, d12 -93ff735f| fcvtzs d19, d28, #13 -b7fd504f| fcvtzs v23.2d, v13.2d, #48 -7ebba15e| fcvtzs s30, s27 -d49f181e| fcvtzs w20, s30, #25 -538d189e| fcvtzs x19, s10, #29 -7e74589e| fcvtzs x30, d3, #35 -4300381e| fcvtzs w3, s2 -bc03389e| fcvtzs x28, s29 -c702781e| fcvtzs w7, d22 -0401789e| fcvtzs x4, d8 -d1ff2e7f| fcvtzu s17, s30, #18 -d0fd3b2f| fcvtzu v16.2s, v14.2s, #5 -70bae17e| fcvtzu d16, d19 -3ef6191e| fcvtzu w30, s17, #3 -cae7199e| fcvtzu x10, s30, #7 -cffb599e| fcvtzu x15, d30, #2 -e402391e| fcvtzu w4, s23 -1a03399e| fcvtzu x26, s24 -0401791e| fcvtzu w4, d8 -c200799e| fcvtzu x2, d6 -ebfe346e| fdiv v11.4s, v23.4s, v20.4s -c918371e| fdiv s9, s6, s23 -911a7f1e| fdiv d17, d20, d31 -a81f0c1f| fmadd s8, s29, s12, s7 -d0404a1f| fmadd d16, d6, d10, d16 -7ff6324e| fmax v31.4s, v19.4s, v18.4s -b84b351e| fmax s24, s29, s21 -d64b621e| fmax d22, d30, d2 -016b241e| fmaxnm s1, s24, s4 -5b69781e| fmaxnm d27, d10, d24 -f1c8707e| fmaxnmp d17, v7.2d -27c5306e| fmaxnmp v7.4s, v9.4s, v16.4s -aef8707e| fmaxp d14, v5.2d -53f6202e| fmaxp v19.2s, v18.2s, v0.2s -78fb306e| fmaxv s24, v27.4s -5af4ec4e| fmin v26.2d, v2.2d, v12.2d -505a3c1e| fmin s16, s18, s28 -4858661e| fmin d8, d2, d6 -a9c6e04e| fminnm v9.2d, v21.2d, v0.2d -987b311e| fminnm s24, s28, s17 -95796f1e| fminnm d21, d12, d15 -f5cbb07e| fminnmp s21, v31.2s -b0f8f07e| fminp d16, v5.2d -8bf5a42e| fminp v11.2s, v12.2s, v4.2s -87cd384e| fmla v7.4s, v12.4s, v24.4s -fd50db5f| fmls d29, d7, v27.d[0] -d1ccb44e| fmls v17.4s, v6.4s, v20.4s -ebf5064f| fmov v11.4s, #-2.421875000000000000e-01 -49f4056f| fmov v9.2d, #-9.000000000000000000e+00 -0940201e| fmov s9, s0 -db43601e| fmov d27, d30 -a901271e| fmov s9, w13 -3702261e| fmov w23, s17 -4d02679e| fmov d13, x18 -9d02af9e| fmov v29.d[1], x20 -ef03669e| fmov x15, d31 -7101ae9e| fmov x17, v11.d[1] -0e103d1e| fmov s14, #-7.500000000000000000e-01 -1e50761e| fmov d30, #-1.800000000000000000e+01 -d2b4121f| fmsub s18, s6, s18, s13 -0a9c4c1f| fmsub d10, d0, d12, d7 -0d99b35f| fmul s13, s8, v19.s[3] -a89b9b0f| fmul v8.2s, v29.2s, v27.s[2] -75dc376e| fmul v21.4s, v3.4s, v23.4s -7909241e| fmul s25, s11, s4 -d7096b1e| fmul d23, d14, d11 -2999ab7f| fmulx s9, s9, v11.s[3] -35dd6d5e| fmulx d21, d9, d13 -c8dc284e| fmulx v8.4s, v6.4s, v8.4s -c043211e| fneg s0, s30 -4742611e| fneg d7, d18 -9c51251f| fnmadd s28, s12, s5, s20 -e407771f| fnmadd d4, d31, d23, d1 -fbfa3a1f| fnmsub s27, s23, s26, s30 -bbb0691f| fnmsub d27, d5, d9, d12 -6a8b3f1e| fnmul s10, s27, s31 -1a8b751e| fnmul d26, d24, d21 -57d8e15e| frecpe d23, d2 -62dba14e| frecpe v2.4s, v27.4s -81fd325e| frecps s1, s12, s18 -31fe224e| frecps v17.4s, v17.4s, v2.4s -ecf9e15e| frecpx d12, d15 -c18b216e| frinta v1.4s, v30.4s -0240261e| frinta s2, s0 -8041661e| frinta d0, d12 -c89ba12e| frinti v8.2s, v30.2s -2ec2271e| frinti s14, s17 -5cc0671e| frinti d28, d2 -3898210e| frintm v24.2s, v1.2s -9843251e| frintm s24, s28 -5b40651e| frintm d27, d2 -2189614e| frintn v1.2d, v9.2d -7e42241e| frintn s30, s19 -5d40641e| frintn d29, d2 -85c3241e| frintp s5, s28 -46c2641e| frintp d6, d18 -c39b216e| frintx v3.4s, v30.4s -a243271e| frintx s2, s29 -1d41671e| frintx d29, d8 -5499e14e| frintz v20.2d, v10.2d -92c2251e| frintz s18, s20 -75c2651e| frintz d21, d19 -ddd9e17e| frsqrte d29, d14 -60fff85e| frsqrts d0, d27, d24 -dafffb4e| frsqrts v26.2d, v30.2d, v27.2d -1ff9a12e| fsqrt v31.2s, v8.2s -2dc3211e| fsqrt s13, s25 -72c0611e| fsqrt d18, d3 -7d3a3e1e| fsub s29, s19, s30 -3f38771e| fsub d31, d1, d23 -185e016e| mov v24.b[0], v16.b[11] -911d0d4e| mov v17.b[6], w12 -2877400c| ld1 {v8.4h}, [x25] -8ea8404c| ld1 {v14.4s, v15.4s}, [x4] -0f62404c| ld1 {v15.16b-v17.16b}, [x16] -0f27400c| ld1 {v15.4h-v18.4h}, [x24] -4c75df0c| ld1 {v12.4h}, [x10],#8 -2f7bd04c| ld1 {v15.4s}, [x25], x16 -eaaadf0c| ld1 {v10.2s, v11.2s}, [x23],#16 -eca7cc4c| ld1 {v12.8h, v13.8h}, [sp], x12 -cd60df4c| ld1 {v13.16b-v15.16b}, [x6],#48 -9163df0c| ld1 {v17.8b-v19.8b}, [x28],#24 -152ddf4c| ld1 {v21.2d-v24.2d}, [x8],#64 -0725c04c| ld1 {v7.8h-v10.8h}, [x8], x0 -7c04404d| ld1 {v28.b}[9], [x3] -6d49404d| ld1 {v13.h}[5], [x11] -9e81400d| ld1 {v30.s}[0], [x12] -d384404d| ld1 {v19.d}[1], [x6] -b20ddf4d| ld1 {v18.b}[11], [x13],#1 -f114cd4d| ld1 {v17.b}[13], [x7], x13 -bb92df4d| ld1 {v27.s}[3], [x21],#4 -a883d64d| ld1 {v8.s}[2], [x29], x22 -f584df4d| ld1 {v21.d}[1], [x7],#8 -0284c80d| ld1 {v2.d}[0], [x0], x8 -91c3400d| ld1r {v17.8b}, [x28] -71c9df0d| ld1r {v17.2s}, [x11],#4 -e7c4db0d| ld1r {v7.4h}, [x7], x27 -b787404c| ld2 {v23.8h, v24.8h}, [x29] -1280df0c| ld2 {v18.8b, v19.8b}, [x0],#16 -2f88c10c| ld2 {v15.2s, v16.2s}, [x1], x1 -a01e604d| ld2 {v0.b, v1.b}[15], [x21] -eb82604d| ld2 {v11.s, v12.s}[2], [x23] -f985600d| ld2 {v25.d, v26.d}[0], [x15] -e315ff0d| ld2 {v3.b, v4.b}[5], [x15],#2 -1c11f24d| ld2 {v28.b, v29.b}[12], [x8], x18 -f341ef4d| ld2 {v19.h, v20.h}[4], [x15], x15 -5a80ff4d| ld2 {v26.s, v27.s}[2], [x2],#8 -d781fd0d| ld2 {v23.s, v24.s}[0], [x14], x29 -c885ff0d| ld2 {v8.d, v9.d}[0], [x14],#16 -1286f34d| ld2 {v18.d, v19.d}[1], [x16], x19 -06c2600d| ld2r {v6.8b, v7.8b}, [x16] -95c7ff4d| ld2r {v21.8h, v22.8h}, [x28],#4 -d4c1e14d| ld2r {v20.16b, v21.16b}, [x14], x1 -eb4bdf4c| ld3 {v11.4s-v13.4s}, [sp],#48 -ce4fc24c| ld3 {v14.2d-v16.2d}, [x30], x2 -db23400d| ld3 {v27.b-v29.b}[0], [x30] -26b3400d| ld3 {v6.s-v8.s}[1], [x25] -37a4400d| ld3 {v23.d-v25.d}[0], [x1] -052edf4d| ld3 {v5.b-v7.b}[11], [x16],#3 -8c3ccd0d| ld3 {v12.b-v14.b}[7], [x4], x13 -74b0df4d| ld3 {v20.s-v22.s}[3], [x3],#12 -b7b1c84d| ld3 {v23.s-v25.s}[3], [x13], x8 -e6a5df4d| ld3 {v6.d-v8.d}[1], [x15],#24 -42a5c80d| ld3 {v2.d-v4.d}[0], [x10], x8 -9ceb400d| ld3r {v28.2s-v30.2s}, [x28] -6aeadf4d| ld3r {v10.4s-v12.4s}, [x19],#12 -65ebce4d| ld3r {v5.4s-v7.4s}, [x27], x14 -ea05400c| ld4 {v10.4h-v13.4h}, [x15] -1f03df0c| ld4 {v31.8b, v0.8b, v1.8b, v2.8b}, [x24],#32 -ae09c90c| ld4 {v14.2s-v17.2s}, [x13], x9 -fd3a604d| ld4 {v29.b, v30.b, v31.b, v0.b}[14], [x23] -d8a0604d| ld4 {v24.s-v27.s}[2], [x6] -62a4604d| ld4 {v2.d-v5.d}[1], [x3] -712fff0d| ld4 {v17.b-v20.b}[3], [x27],#4 -aa27f40d| ld4 {v10.b-v13.b}[1], [x29], x20 -be71ff4d| ld4 {v30.h, v31.h, v0.h, v1.h}[6], [x13],#8 -e360ee4d| ld4 {v3.h-v6.h}[4], [x7], x14 -c0a0ff0d| ld4 {v0.s-v3.s}[0], [x6],#16 -d3a3e00d| ld4 {v19.s-v22.s}[0], [x30], x0 -95a7ff0d| ld4 {v21.d-v24.d}[0], [x28],#32 -32a6e14d| ld4 {v18.d-v21.d}[1], [x17], x1 -56e0604d| ld4r {v22.16b-v25.16b}, [x2] -dce7ff0d| ld4r {v28.4h-v31.4h}, [x30],#8 -14e8ef0d| ld4r {v20.2s-v23.2s}, [x0], x15 -7776732c| ldnp s23, s29, [x19,#-104] -23dd746c| ldnp d3, d23, [x9,#-184] -383e48ac| ldnp q24, q15, [x17,#256] -0d10c12c| ldp s13, s4, [x0],#8 -fe3ae66c| ldp d30, d14, [x23],#-416 -f627f9ac| ldp q22, q9, [sp],#-224 -918cd82d| ldp s17, s3, [x4,#196]! -986be46d| ldp d24, d26, [x28,#-448]! -ebd8f8ad| ldp q11, q22, [x7,#-240]! -3c905c2d| ldp s28, s4, [x1,#228] -5887536d| ldp d24, d1, [x26,#312] -08957cad| ldp q8, q5, [x8,#-112] -c5e5543c| ldr b5, [x14],#-178 -4ff5417c| ldr h15, [x10],#31 -72e54bbc| ldr s18, [x11],#190 -16b55dfc| ldr d22, [x8],#-37 -9e24db3c| ldr q30, [x4],#-78 -d20c503c| ldr b18, [x6,#-256]! -1f1c4d7c| ldr h31, [x0,#209]! -2fbf4dbc| ldr s15, [x25,#219]! -a06c59fc| ldr d0, [x5,#-106]! -886ddd3c| ldr q8, [x12,#-42]! -58f64e3d| ldr b24, [x18,#957] -f5c3547d| ldr h21, [sp,#2656] -8e8a7bbd| ldr s14, [x20,#15240] -8e3c7afd| ldr d14, [x4,#29816] -f2aeff3d| ldr q18, [x23,#65200] -92831b1c| ldr s18, .+0x37070 -3e01b55c| ldr d30, .+0xfffffffffff6a024 -fdee3b9c| ldr q29, .+0x77ddc -1d78793c| ldr b29, [x0,x25,lsl #0] -b8f15d3c| ldur b24, [x13,#-33] -95635c7c| ldur h21, [x28,#-58] -27d046bc| ldur s7, [x1,#109] -21624efc| ldur d1, [x17,#230] -6dd2d83c| ldur q13, [x19,#-115] -dc09be6f| mla v28.4s, v14.4s, v30.s[3] -eb97af4e| mla v11.4s, v31.4s, v15.4s -0495722e| mls v4.4h, v8.4h, v18.4h -21070a5e| mov h1, v25.h[2] -92471b6e| mov v18.b[13], v28.b[8] -7a1e134e| mov v26.b[9], w19 -761fa30e| orr v22.8b, v27.8b, v3.8b -f23d070e| umov w18, v15.b[3] -a5e6064f| movi v5.16b, #0xd5 -63c5064f| movi v3.4s, #0xcb, msl #8 -bca7014f| movi v28.8h, #0x3d, lsl #8 -95e4040f| movi v21.8b, #0x84 -fce4072f| movi d28, #0xffffff0000ffffff -24e6036f| movi v4.2d, #0xffffff000000ff -429d6a4e| mul v2.8h, v10.8h, v10.8h -e558202e| mvn v5.8b, v7.8b -fe65012f| mvni v30.2s, #0x2f, lsl #24 -2b16046f| bic v11.4s, #0x91 -7756016f| bic v23.4s, #0x33, lsl #16 -e159202e| mvn v1.8b, v15.8b -da1cf14e| orn v26.16b, v6.16b, v17.16b -ca04014f| movi v10.4s, #0x26 -14a6020f| movi v20.4h, #0x50, lsl #8 -2f1fbf0e| orr v15.8b, v25.8b, v31.8b -74e2f20e| pmull v20.1q, v19.1d, v18.1d -2740262e| raddhn v7.8b, v1.8h, v6.8h -17412e6e| raddhn2 v23.16b, v8.8h, v14.8h -da59602e| rbit v26.8b, v14.8b -230a604e| rev64 v3.8h, v17.8h -178d210f| rshrn v23.2s, v8.2d, #31 -6b8d2c4f| rshrn2 v11.4s, v11.2d, #20 -b57c2a0e| saba v21.8b, v5.8b, v10.8b -71533d0e| sabal v17.8h, v27.8b, v29.8b -1c50774e| sabal2 v28.4s, v0.8h, v23.8h -1974be4e| sabd v25.4s, v0.4s, v30.4s -6b71ad0e| sabdl v11.2d, v11.2s, v13.2s -5270324e| sabdl2 v18.8h, v2.16b, v18.16b -366b200e| sadalp v22.4h, v25.8b -1802680e| saddl v24.4s, v16.4h, v8.4h -022b604e| saddlp v2.4s, v24.8h -413ab04e| saddlv d1, v18.4s -4013750e| saddw v0.4s, v26.4s, v21.4h -4412744e| saddw2 v4.4s, v18.4s, v20.8h -2ee6255f| scvtf s14, s17, #27 -dce75f4f| scvtf v28.2d, v30.2d, #33 -5bdb615e| scvtf d27, d26 -3ad9210e| scvtf v26.2s, v9.2s -1ceb421e| scvtf d28, w24, #6 -9dde029e| scvtf s29, x20, #9 -57d1429e| scvtf d23, x10, #12 -d600221e| scvtf s22, w6 -c503621e| scvtf d5, w30 -3303229e| scvtf s19, x25 -0003629e| scvtf d0, x24 -6f01075e| sha1c q15, s11, v7.4s -9308285e| sha1h s19, s4 -b420105e| sha1m q20, s5, v16.4s -f4131f5e| sha1p q20, s31, v31.4s -dc311f5e| sha1su0 v28.4s, v14.4s, v31.4s -bb1a285e| sha1su1 v27.4s, v21.4s -2753075e| sha256h2 q7, q25, v7.4s -3141065e| sha256h q17, q9, v6.4s -172b285e| sha256su0 v23.4s, v24.4s -bb621b5e| sha256su1 v27.4s, v21.4s, v27.4s -7005644e| shadd v16.8h, v11.8h, v4.8h -2d870e0f| shrn v13.8b, v25.8h, #2 -ac86024f| movi v12.8h, #0x55 -1c26a50e| shsub v28.2s, v16.2s, v5.2s -db576b6f| sli v27.2d, v30.2d, #43 -c3652c4e| smax v3.16b, v14.16b, v12.16b -b5a7ab0e| smaxp v21.2s, v29.2s, v11.2s -f1aeb34e| sminp v17.4s, v23.4s, v19.4s -87a8b14e| sminv s7, v4.4s -1e21bc4f| smlal2 v30.2d, v8.4s, v28.s[1] -50a33a0e| smlsl v16.8h, v26.8b, v26.8b -4e2d1a0e| smov w14, v10.h[6] -9ba9b30f| smull v27.2d, v12.2s, v19.s[3] -417a205e| sqabs b1, b18 -9f78a04e| sqabs v31.4s, v4.4s -580d2e5e| sqadd b24, b10, b14 -3d30764f| sqdmlal2 v29.4s, v1.8h, v6.h[3] -9591b25e| sqdmlal d21, s12, s18 -0d92670e| sqdmlal v13.4s, v16.4h, v7.4h -90b1765e| sqdmlsl s16, h12, h22 -83c2ad5f| sqdmulh s3, s20, v13.s[1] -bbb7aa5e| sqdmulh s27, s29, s10 -c8b99a5f| sqdmull d8, s14, v26.s[2] -75b3920f| sqdmull v21.2d, v27.2s, v18.s[0] -86d1b75e| sqdmull d6, s12, s23 -edd06f4e| sqdmull2 v13.4s, v7.8h, v15.8h -0f7ae07e| sqneg d15, d16 -e87b602e| sqneg v8.4h, v31.4h -ecb5a92e| sqrdmulh v12.2s, v15.2s, v9.2s -d75fba5e| sqrshl s23, s30, s26 -f75f324e| sqrshl v23.16b, v31.16b, v18.16b -af9c114f| sqrshrn2 v15.8h, v5.4s, #15 -318d2f6f| sqrshrun2 v17.4s, v9.2d, #17 -b3757c5f| sqshl d19, d13, #60 -0c776f4f| sqshl v12.2d, v24.2d, #47 -d84c2a5e| sqshl b24, b6, b10 -ae4e704e| sqshl v14.8h, v21.8h, v16.8h -b566727f| sqshlu d21, d21, #50 -4566596f| sqshlu v5.2d, v18.2d, #25 -d595140f| sqshrn v21.4h, v14.4s, #12 -00940b4f| sqshrn2 v0.16b, v0.8h, #5 -5384352f| sqshrun v19.2s, v2.2d, #11 -1a2e3d5e| sqsub b26, b16, b29 -b02e6b4e| sqsub v16.8h, v21.8h, v11.8h -1249a15e| sqxtn s18, d8 -eb49610e| sqxtn v11.4h, v15.4s -cb4a614e| sqxtn2 v11.8h, v22.4s -102b217e| sqxtun b16, h24 -492a212e| sqxtun v9.8b, v18.8h -112a616e| sqxtun2 v17.8h, v16.4s -6c16ae4e| srhadd v12.4s, v19.4s, v14.4s -5946467f| sri d25, d18, #58 -21460a2f| sri v1.8b, v17.8b, #6 -9f56b10e| srshl v31.2s, v20.2s, v17.2s -e724635f| srshr d7, d7, #29 -e8266b4f| srshr v8.2d, v23.2d, #21 -2b37180f| srsra v11.4h, v25.4h, #8 -1644f95e| sshl d22, d0, d25 -3644fc4e| sshl v22.2d, v1.2d, v28.2d -d9a61f4f| sshll2 v25.4s, v22.8h, #15 -9b075e5f| sshr d27, d28, #34 -2c044c4f| sshr v12.2d, v1.2d, #52 -d915324f| ssra v25.4s, v14.4s, #14 -de21260e| ssubl v30.8h, v14.8b, v6.8b -c720254e| ssubl2 v7.8h, v6.16b, v5.16b -9d33b90e| ssubw v29.2d, v28.2d, v25.2s -7e71000c| st1 {v30.8b}, [x11] -cca6000c| st1 {v12.4h, v13.4h}, [x22] -5467000c| st1 {v20.4h-v22.4h}, [x26] -cc28004c| st1 {v12.4s-v15.4s}, [x6] -9e7e9f4c| st1 {v30.2d}, [x20],#16 -4b769d0c| st1 {v11.4h}, [x18], x29 -adaa9f0c| st1 {v13.2s, v14.2s}, [x21],#16 -bca7844c| st1 {v28.8h, v29.8h}, [x29], x4 -b5659f0c| st1 {v21.4h-v23.4h}, [x13],#24 -e669874c| st1 {v6.4s-v8.4s}, [x15], x7 -9b2a9f0c| st1 {v27.2s-v30.2s}, [x20],#32 -14278b0c| st1 {v20.4h-v23.4h}, [x24], x11 -d002004d| st1 {v16.b}[8], [x22] -9780004d| st1 {v23.s}[2], [x4] -7787004d| st1 {v23.d}[1], [x27] -850d9f0d| st1 {v5.b}[3], [x12],#1 -7b1f8f0d| st1 {v27.b}[7], [x27], x15 -7a5a9f4d| st1 {v26.h}[7], [x19],#2 -e14b9e4d| st1 {v1.h}[5], [sp], x30 -dd819f4d| st1 {v29.s}[2], [x14],#4 -a281910d| st1 {v2.s}[0], [x13], x17 -b2849f0d| st1 {v18.d}[0], [x5],#8 -c484964d| st1 {v4.d}[1], [x6], x22 -f686004c| st2 {v22.8h, v23.8h}, [x23] -2e869f0c| st2 {v14.4h, v15.4h}, [x17],#16 -d200200d| st2 {v18.b, v19.b}[0], [x6] -ab58200d| st2 {v11.h, v12.h}[3], [x5] -c491204d| st2 {v4.s, v5.s}[3], [x14] -5a85204d| st2 {v26.d, v27.d}[1], [x10] -f217bf0d| st2 {v18.b, v19.b}[5], [sp],#2 -2b0ea04d| st2 {v11.b, v12.b}[11], [x17], x0 -4042bf0d| st2 {v0.h, v1.h}[0], [x18],#4 -9342af4d| st2 {v19.h, v20.h}[4], [x20], x15 -9b91bf4d| st2 {v27.s, v28.s}[3], [x12],#8 -7480a10d| st2 {v20.s, v21.s}[0], [x3], x1 -c884bf0d| st2 {v8.d, v9.d}[0], [x6],#16 -ae86ac4d| st2 {v14.d, v15.d}[1], [x21], x12 -614d004c| st3 {v1.2d-v3.2d}, [x11] -324b9f4c| st3 {v18.4s-v20.4s}, [x25],#48 -7340870c| st3 {v19.8b-v21.8b}, [x3], x7 -ac24004d| st3 {v12.b-v14.b}[9], [x5] -a161004d| st3 {v1.h-v3.h}[4], [x13] -09b1004d| st3 {v9.s-v11.s}[3], [x8] -78a7004d| st3 {v24.d-v26.d}[1], [x27] -4f349f0d| st3 {v15.b-v17.b}[5], [x2],#3 -643d840d| st3 {v4.b-v6.b}[7], [x11], x4 -48699f0d| st3 {v8.h-v10.h}[1], [x10],#6 -85b19f4d| st3 {v5.s-v7.s}[3], [x12],#12 -60a18a0d| st3 {v0.s-v2.s}[0], [x11], x10 -69a49f0d| st3 {v9.d-v11.d}[0], [x3],#24 -ada7814d| st3 {v13.d-v15.d}[1], [x29], x1 -760c004c| st4 {v22.2d-v25.2d}, [x3] -ee0d9f4c| st4 {v14.2d-v17.2d}, [x15],#64 -7800970c| st4 {v24.8b-v27.8b}, [x3], x23 -a221200d| st4 {v2.b-v5.b}[0], [x13] -9a69204d| st4 {v26.h-v29.h}[5], [x12] -02a1204d| st4 {v2.s-v5.s}[2], [x8] -3fa6200d| st4 {v31.d, v0.d, v1.d, v2.d}[0], [x17] -943abf0d| st4 {v20.b-v23.b}[6], [x20],#4 -bf26a60d| st4 {v31.b, v0.b, v1.b, v2.b}[1], [x21], x6 -55b3bf4d| st4 {v21.s-v24.s}[3], [x26],#16 -dda1b04d| st4 {v29.s, v30.s, v31.s, v0.s}[2], [x14], x16 -6aa5bf0d| st4 {v10.d-v13.d}[0], [x11],#32 -e7a7ac0d| st4 {v7.d-v10.d}[0], [sp], x12 -f9c9202c| stnp s25, s18, [x15,#-252] -18b8316c| stnp d24, d14, [x0,#-232] -409c1cac| stnp q0, q7, [x2,#912] -73f0812c| stp s19, s28, [x3],#12 -28d0826c| stp d8, d20, [x1],#40 -9bf5bfac| stp q27, q29, [x12],#-16 -885ead2d| stp s8, s23, [x20,#-152]! -b0de926d| stp d16, d23, [x21,#296]! -713387ad| stp q17, q12, [x27,#224]! -52130a2d| stp s18, s4, [x26,#80] -b63a236d| stp d22, d14, [x21,#-464] -6d5424ad| stp q13, q21, [x3,#-896] -afb60f3c| str b15, [x21],#251 -81e7077c| str h1, [x28],#126 -203713bc| str s0, [x25],#-205 -60c61ffc| str d0, [x19],#-4 -d256813c| str q18, [x22],#21 -ffce083c| str b31, [x23,#140]! -6d3d017c| str h13, [x11,#19]! -52ed01bc| str s18, [x10,#30]! -fafd11fc| str d26, [x15,#-225]! -663e9b3c| str q6, [x19,#-77]! -7d0c393d| str b29, [x3,#3651] -8f50067d| str h15, [x4,#808] -94680dbd| str s20, [x4,#3432] -b7673bfd| str d23, [x29,#30408] -fed3a63d| str q30, [sp,#39744] -8a6a243c| str b10, [x20,x4] -29493fbc| str s9, [x9,wzr,uxtw] -8bd93bfc| str d11, [x12,w27,sxtw #3] -c768a93c| str q7, [x6,x9] -a7b00a3c| stur b7, [x5,#171] -40e3107c| stur h0, [x26,#-242] -18911fbc| stur s24, [x8,#-7] -fcc007fc| stur d28, [x7,#124] -db12893c| stur q27, [x22,#145] -1686716e| sub v22.8h, v16.8h, v17.8h -5362320e| subhn v19.8b, v18.8h, v18.8h -6163bf4e| subhn2 v1.4s, v27.2d, v31.2d -a73be05e| suqadd d7, d29 -21a4100f| sxtl v1.4s, v1.4h -8b23164e| tbl v11.16b, {v28.16b, v29.16b}, v22.16b -3642120e| tbl v22.8b, {v17.16b-v19.16b}, v18.8b -cf611f0e| tbl v15.8b, {v14.16b-v17.16b}, v31.8b -0b020e4e| tbl v11.16b, {v16.16b}, v14.16b -9830014e| tbx v24.16b, {v4.16b, v5.16b}, v1.16b -1452044e| tbx v20.16b, {v16.16b-v18.16b}, v4.16b -b4711a0e| tbx v20.8b, {v13.16b-v16.16b}, v26.8b -f911140e| tbx v25.8b, {v15.16b}, v20.8b -9f28500e| trn1 v31.4h, v4.4h, v16.4h -2e69c64e| trn2 v14.2d, v9.2d, v6.2d -c752756e| uabal2 v7.4s, v22.8h, v21.8h -8675696e| uabd v6.8h, v12.8h, v9.8h -a973ab6e| uabdl2 v9.2d, v29.4s, v11.4s -fa006c2e| uaddl v26.4s, v7.4h, v12.4h -da00236e| uaddl2 v26.8h, v6.16b, v3.16b -ab3a306e| uaddlv h11, v21.16b -a312746e| uaddw2 v3.4s, v21.4s, v20.8h -cee55e7f| ucvtf d14, d14, #34 -8edb617e| ucvtf d14, d28 -ab8f431e| ucvtf d11, w29, #29 -68b3039e| ucvtf s8, x27, #20 -7686439e| ucvtf d22, x19, #31 -2a03231e| ucvtf s10, w25 -9f01631e| ucvtf d31, w12 -a800239e| ucvtf s8, x5 -0302639e| ucvtf d3, x16 -df65a42e| umax v31.2s, v14.2s, v4.2s -29ab702e| umaxv h9, v25.4h -6f6e2e6e| umin v15.16b, v19.16b, v14.16b -fdada32e| uminp v29.2s, v15.2s, v3.2s -07289a6f| umlal2 v7.2d, v0.4s, v26.s[2] -aa80ad2e| umlal v10.2d, v5.2s, v13.2s -d66b462f| umlsl v22.4s, v30.4h, v6.h[4] -12a3b62e| umlsl v18.2d, v24.2s, v22.2s -583e0d0e| umov w24, v18.b[6] -20c3b52e| umull v0.2d, v25.2s, v21.2s -20c2616e| umull2 v0.4s, v17.8h, v1.8h -2f0f6d7e| uqadd h15, h25, h13 -a60c272e| uqadd v6.8b, v5.8b, v7.8b -5b5da27e| uqrshl s27, s10, s2 -195c786e| uqrshl v25.8h, v0.8h, v24.8h -209e282f| uqrshrn v0.2s, v17.2d, #24 -e89e3b6f| uqrshrn2 v8.4s, v23.2d, #5 -4f75147f| uqshl h15, h10, #4 -d2767d6f| uqshl v18.2d, v22.2d, #61 -bb4cfe7e| uqshl d27, d5, d30 -794ea42e| uqshl v25.2s, v19.2s, v4.2s -51960b7f| uqshrn b17, h18, #5 -642ce77e| uqsub d4, d3, d7 -6149617e| uqxtn h1, s11 -4e48a12e| uqxtn v14.2s, v2.2d -9cc8a14e| urecpe v28.4s, v4.4s -2f15a52e| urhadd v15.2s, v9.2s, v5.2s -5757fb7e| urshl d23, d26, d27 -2756706e| urshl v7.8h, v17.8h, v16.8h -a424487f| urshr d4, d5, #56 -b926796f| urshr v25.2d, v21.2d, #7 -1336076f| bic v19.4s, #0xf0, lsl #8 -e347e06e| ushl v3.2d, v31.2d, v0.2d -f7a5272f| ushll v23.2d, v15.2s, #7 -9ba63d6f| ushll2 v27.2d, v20.4s, #29 -d405737f| ushr d20, d14, #13 -3a05116f| ushr v26.8h, v9.8h, #15 -1d39607e| usqadd h29, h8 -0e39e06e| usqadd v14.2d, v8.2d -8022b02e| usubl v0.2d, v20.2s, v16.2s -9a20786e| usubl2 v26.4s, v4.8h, v24.8h -df33692e| usubw v31.4s, v30.4s, v9.4h -92a5102f| uxtl v18.4s, v12.4h -0e19464e| uzp1 v14.8h, v8.8h, v6.8h -7629610e| xtn v22.4h, v11.4s -7338504e| zip1 v19.8h, v3.8h, v16.8h -357bd64e| zip2 v21.2d, v25.2d, v22.2d -63020f1a| adc w3, w19, w15 -1f03159a| adc xzr, x24, x21 -d300103a| adcs w19, w6, w16 -1b0010ba| adcs x27, x0, x16 -dd133f0b| add w29, w30, wzr, uxtb #4 -89c42f8b| add x9, x4, w15, sxtw #1 -4e242a11| add w14, w2, #0xa89 -e1c12f2b| adds w1, w15, w15, sxtw -733421ab| adds x19, x3, w1, uxth #5 -0ccc5aab| adds x12, x0, x26, lsr #51 -51354470| adr x17, .+0x886ab -ef6796d0| adrp x15, .+0xffffffff2ccfe000 -2e122612| and w14, w17, #0x7c000000 -5e4c2992| and x30, x2, #0xff8007ffff8007ff -2805410a| and w8, w9, w1, lsr #1 -ede1938a| and x13, x15, x19, asr #56 -e7c10f72| ands w7, w15, #0x2020202 -23ed55f2| ands x3, x9, #0xfffff87fffffffff -e6935bea| ands x6, xzr, x27, lsr #36 -0e2ac61a| asr w14, w16, w6 -802ad59a| asr x0, x20, x21 -7cfd7793| asr x28, x11, #55 -f028cd1a| asr w16, w7, w13 -132bd29a| asr x19, x24, x18 -c2560e54| b.cs .+0x1cad8 -83516b17| b .+0xfffffffffdad460c -7a571233| bfxil w26, w27, #18, #4 -71b858b3| bfxil x17, x3, #24, #23 -c3964bb3| bfxil x3, x22, #11, #27 -eb561233| bfxil w11, w23, #18, #4 -063f5db3| bfi x6, x24, #35, #16 -0a337a0a| bic w10, w24, w26, lsr #12 -2a71e28a| bic x10, x9, x2, ror #28 -c168bf6a| bics w1, w6, wzr, asr #26 -d8bb3cea| bics x24, x30, x28, lsl #46 -82e81795| bl .+0x45fa208 -40033fd6| blr x26 -c0011fd6| br x14 -00dd31d4| brk #0x8ee8 -7267db35| cbnz w18, .+0xfffffffffffb6cec -e44c7fb5| cbnz x4, .+0xfe99c -9dc4c334| cbz w29, .+0xfffffffffff87890 -376eceb4| cbz x23, .+0xfffffffffff9cdc4 -a6cb563a| ccmn w29, #0x16, #0x6, gt -87db55ba| ccmn x28, #0x15, #0x7, le -a042493a| ccmn w21, w9, #0x0, mi -6a0040ba| ccmn x3, x0, #0xa, eq -46bb5c7a| ccmp w26, #0x1c, #0x6, lt -c72942fa| ccmp x14, #0x2, #0x7, cs -cda1427a| ccmp w14, w2, #0xd, ge -a1314dfa| ccmp x13, x13, #0x1, cc -8706931a| csinc w7, w20, w19, eq -3ae69a9a| csinc x26, x17, x26, al -9e51945a| csinv w30, w12, w20, pl -d5e386da| csinv x21, x30, x6, al -5f3503d5| clrex #0x5 -e515c05a| cls w5, w15 -a815c0da| cls x8, x13 -4a12c05a| clz w10, w18 -3c10c0da| clz x28, x1 -ff70252b| cmn w7, w5, uxtx #4 -9fa133ab| cmn x12, w19, sxth -3f3a822b| cmn w17, w2, asr #14 -df1d44ab| cmn x14, x4, lsr #7 -3f95386b| cmp w9, w24, sxtb #5 -9f653feb| cmp x12, xzr, uxtx #1 -1626915a| csneg w22, w16, w17, cs -b4d587da| csneg x20, x13, x7, le -9841d41a| crc32b w24, w12, w20 -ec45d01a| crc32h w12, w15, w16 -8048ca1a| crc32w w0, w4, w10 -d44ec19a| crc32x w20, w22, x1 -1552d31a| crc32cb w21, w16, w19 -4b54c71a| crc32ch w11, w2, w7 -245ad41a| crc32cw w4, w17, w20 -c35cc89a| crc32cx w3, w6, x8 -14219f1a| csel w20, w8, wzr, cs -9c73979a| csel x28, x28, x23, vc -e7279f1a| cset w7, cc -ec579f9a| cset x12, mi -e5f39f5a| csinv w5, wzr, wzr, al -e8639fda| csetm x8, vc -ea76971a| cinc w10, w23, vs -78a7859a| csinc x24, x27, x5, ge -b590845a| csinv w21, w5, w4, ls -b4029eda| csinv x20, x21, x30, eq -b3969b5a| csneg w19, w21, w27, ls -938591da| csneg x19, x12, x17, hi -016ea8d4| dcps1 #0x4370 -0275a4d4| dcps2 #0x23a8 -a3e9a6d4| dcps3 #0x374d -bf3903d5| dmb ishld -e003bfd6| drps -9f3e03d5| dsb st -50b1a0ca| eon x16, x10, x0, asr #44 -c0b02f52| eor w0, w6, #0x3ffe3ffe -4b0c1ed2| eor x11, x2, #0x3c0000003c -693c074a| eor w9, w3, w7, lsl #15 -113e1aca| eor x17, x16, x26, lsl #15 -e0039fd6| eret -fef8c693| extr x30, x7, x6, #62 -3f2003d5| yield -3f2403d5| hint #0x21 -c0425ad4| hlt #0xd216 -df3003d5| isb #0x0 -f7fddf88| ldar w23, [x15] -96fedfc8| ldar x22, [x20] -11fedf08| ldarb w17, [x16] -c2fedf48| ldarh w2, [x22] -2d927f88| ldaxp w13, w4, [x17] -198f7fc8| ldaxp x25, x3, [x24] -46ff5f88| ldaxr w6, [x26] -81fe5fc8| ldaxr x1, [x20] -86fe5f08| ldaxrb w6, [x20] -78ff5f48| ldaxrh w24, [x27] -35864a28| ldnp w21, w1, [x17,#84] -6da05fa8| ldnp x13, x8, [x3,#504] -a8f9f428| ldp w8, w30, [x13],#-92 -b749e3a8| ldp x23, x18, [x13],#-464 -bdedd929| ldp w29, w27, [x13,#204]! -c8e5c6a9| ldp x8, x25, [x14,#104]! -c0857f29| ldp w0, w1, [x14,#-4] -388a6ca9| ldp x24, x2, [x17,#-312] -086be468| ldpsw x8, x26, [x24],#-224 -d107d269| ldpsw x17, x1, [x30,#144]! -738e4e69| ldpsw x19, x3, [x19,#116] -6ee55fb8| ldr w14, [x11],#-2 -233459f8| ldr x3, [x1],#-109 -919f44b8| ldr w17, [x28,#73]! -acdd45f8| ldr x12, [x13,#93]! -e1cd51b9| ldr w1, [x15,#4556] -95e27bf9| ldr x21, [x20,#30656] -09c4fa18| ldr w9, .+0xffffffffffff5880 -f528ad58| ldr x21, .+0xfffffffffff5a51c -0c554b38| ldrb w12, [x8],#181 -054f5938| ldrb w5, [x24,#-108]! -1f206539| ldrb wzr, [x0,#2376] -73796a38| ldrb w19, [x11,x10,lsl #0] -a8b74f78| ldrh w8, [x29],#251 -021e5e78| ldrh w2, [x16,#-31]! -ec126b79| ldrh w12, [x23,#5512] -fc5a6178| ldrh w28, [x23,w1,uxtw #1] -eaf6c238| ldrsb w10, [x23],#47 -87679838| ldrsb x7, [x28],#-122 -567fdb38| ldrsb w22, [x26,#-73]! -3b2e8138| ldrsb x27, [x17,#18]! -7d74c039| ldrsb w29, [x3,#29] -7d1f8539| ldrsb x29, [x27,#327] -225bff38| ldrsb w2, [x25,wzr,uxtw #0] -6a7bed38| ldrsb w10, [x27,x13,lsl #0] -0f69b538| ldrsb x15, [x8,x21] -c796cc78| ldrsh w7, [x22],#201 -50268e78| ldrsh x16, [x18],#226 -229ddb78| ldrsh w2, [x9,#-71]! -0f4f9178| ldrsh x15, [x24,#-236]! -59ecc379| ldrsh w25, [x2,#502] -83d49679| ldrsh x3, [x4,#2922] -986be878| ldrsh w24, [x28,x8] -cad8bf78| ldrsh x10, [x6,wzr,sxtw #1] -6b4693b8| ldrsw x11, [x19],#-204 -cb9e81b8| ldrsw x11, [x22,#25]! -280d9eb9| ldrsw x8, [x9,#7692] -93dec198| ldrsw x19, .+0xfffffffffff83bd0 -1a68b8b8| ldrsw x26, [x0,x24] -35b955b8| ldtr w21, [x9,#-165] -658b57f8| ldtr x5, [x27,#-136] -b3594038| ldtrb w19, [x13,#5] -5ac95d78| ldtrh w26, [x10,#-36] -2c3ade38| ldtrsb w12, [x17,#-29] -4de99038| ldtrsb x13, [x10,#-242] -e178c378| ldtrsh w1, [x7,#55] -a77a8778| ldtrsh x7, [x21,#119] -cde982b8| ldtrsw x13, [x14,#46] -04d15bb8| ldur w4, [x8,#-67] -02a256f8| ldur x2, [x16,#-150] -97405438| ldurb w23, [x4,#-188] -99b14b78| ldurh w25, [x12,#187] -f9a1cf38| ldursb w25, [x15,#250] -c0218c38| ldursb x0, [x14,#194] -5790d278| ldursh w23, [x2,#-215] -a3808278| ldursh x3, [x5,#40] -a9b08fb8| ldursw x9, [x5,#251] -98217f88| ldxp w24, w8, [x12] -4d6a7fc8| ldxp x13, x26, [x18] -9c7e5f88| ldxr w28, [x20] -0e7c5fc8| ldxr x14, [x0] -507c5f08| ldxrb w16, [x2] -ea7f5f48| ldxrh w10, [sp] -5523dd1a| lsl w21, w26, w29 -9721ca9a| lsl x23, x12, x10 -75665bd3| ubfiz x21, x19, #37, #26 -0a20df1a| lsl w10, w0, wzr -5222c99a| lsl x18, x18, x9 -5124df1a| lsr w17, w2, wzr -6b26d69a| lsr x11, x19, x22 -9a7c0753| lsr w26, w4, #7 -7bfd53d3| lsr x27, x11, #19 -5f26d91a| lsr wzr, w18, w25 -3625d89a| lsr x22, x9, x24 -9d76001b| madd w29, w20, w0, w29 -822f0e9b| madd x2, x28, x14, x11 -e8fe101b| mneg w8, w23, w16 -88fc099b| mneg x8, x4, x9 -dd030011| add w29, w30, #0x0 -db010091| add x27, x14, #0x0 -0c6db012| mov w12, #0x7c97ffff -3ff5aa92| mov xzr, #0xffffffffa856ffff -87f0f6d2| mov x7, #0xb784000000000000 -f3571132| orr w19, wzr, #0xffff801f -f3bb0bb2| mov x19, #0xffefffefffefffef -f103082a| mov w17, w8 -ef031faa| mov x15, xzr -4a6bf5f2| movk x10, #0xab5a, lsl #48 -383b9312| mov w24, #0xffff6626 -f5fb9092| mov x21, #0xffffffffffff7820 -d5b4b052| mov w21, #0x85a60000 -fdc5eed2| mov x29, #0x762f000000000000 -c58435d5| mrs x5, s2_5_c8_c4_6 -1a0f13d5| msr s2_3_c0_c15_0, x26 -52d5181b| msub w18, w10, w24, w21 -c4f81d9b| msub x4, x6, x29, x30 -a57c1b1b| mul w5, w5, w27 -8f7f0a9b| mul x15, x28, x10 -e75361aa| mvn x7, x1, lsr #20 -e0cb15cb| neg x0, x21, lsl #50 -ffdb49eb| cmp xzr, x9, lsr #54 -f5031c5a| ngc w21, w28 -e6031eda| ngc x6, x30 -e103077a| ngcs w1, w7 -f20301fa| ngcs x18, x1 -1f2003d5| nop -9347722a| orn w19, w28, w18, lsr #17 -0591e1aa| orn x5, x8, x1, ror #36 -7ba82a32| orr w27, w3, #0xffc1ffc1 -ae087db2| orr x14, x5, #0x38 -9608472a| orr w22, w4, w7, lsr #2 -c40dc5aa| orr x4, x14, x5, ror #3 -9d83bcf9| prfm #0x1d, [x28,#30976] -78ab03d8| prfm #0x18, .+0x756c -6e9186f8| prfum #0x0e, [x11,#105] -c001c05a| rbit w0, w14 -4203c0da| rbit x2, x26 -c0035fd6| ret -9b08c05a| rev w27, w4 -740cc0da| rev x20, x3 -0205c05a| rev16 w2, w8 -dd07c0da| rev16 x29, x30 -020bc0da| rev32 x2, x24 -780cc0da| rev x24, x3 -9b7f9513| extr w27, w28, w21, #31 -5243dd93| extr x18, x26, x29, #16 -822eca1a| ror w2, w20, w10 -f02ddb9a| ror x16, x15, x27 -082ed81a| ror w8, w16, w24 -7b2cc39a| ror x27, x3, x3 -3b030b5a| sbc w27, w25, w11 -f2021dda| sbc x18, x23, x29 -e600127a| sbcs w6, w7, w18 -cf030ffa| sbcs x15, x30, x15 -3a797793| sbfiz x26, x9, #9, #31 -4a305193| sbfiz x10, x2, #47, #13 -a1c74493| sbfx x1, x29, #4, #46 -a00fc01a| sdiv w0, w29, w0 -f10edd9a| sdiv x17, x23, x29 -9f2003d5| sev -bf2003d5| sevl -a52d319b| smaddl x5, w13, w17, x11 -b4fc399b| smnegl x20, w5, w25 -579e369b| smsubl x23, w18, w22, x7 -ea7e429b| smulh x10, x23, x2 -eb7f219b| smull x11, wzr, w1 -f1fe9f88| stlr w17, [x23] -edff9fc8| stlr x13, [sp] -bffe9f08| stlrb wzr, [x21] -9cfd9f48| stlrh w28, [x12] -41bf2688| stlxp w6, w1, w15, [x26] -01e93cc8| stlxp w28, x1, x26, [x8] -e0fd1f88| stlxr wzr, w0, [x15] -12fe17c8| stlxr w23, x18, [x16] -d4fc1008| stlxrb w16, w20, [x6] -befc0048| stlxrh w0, w30, [x5] -76613728| stnp w22, w24, [x11,#-72] -c7523ba8| stnp x7, x20, [x22,#-80] -8e3a9f28| stp w14, w14, [x20],#248 -aa1fa6a8| stp x10, x7, [x29],#-416 -fbae8d29| stp w27, w11, [x23,#108]! -f63c80a9| stp x22, x15, [x7,#0]! -43d73629| stp w3, w21, [x26,#-76] -1ae01ba9| stp x26, x24, [x0,#440] -8f650cb8| str w15, [x12],#198 -aad503f8| str x10, [x13],#61 -ec4d00b8| str w12, [x15,#4]! -7dbc1df8| str x29, [x3,#-37]! -9b0226b9| str w27, [x20,#9728] -91691af9| str x17, [x12,#13520] -20840838| strb w0, [x1],#136 -060c1f38| strb w6, [x0,#-16]! -2b213a39| strb w11, [x9,#3720] -ab6b3438| strb w11, [x29,x20] -50e51e78| strh w16, [x10],#-18 -5d5d1878| strh w29, [x10,#-123]! -ea862379| strh w10, [x23,#4546] -d65a2778| strh w22, [x22,w7,uxtw #1] -d5ca12b8| sttr w21, [x22,#-212] -001b18f8| sttr x0, [x24,#-127] -290a1e38| sttrb w9, [x17,#-32] -0b381078| sttrh w11, [x0,#-253] -c78101b8| stur w7, [x14,#24] -c0b217f8| stur x0, [x22,#-133] -f8401e38| sturb w24, [x7,#-28] -5e911a78| sturh w30, [x10,#-87] -b7622d88| stxp w13, w23, w24, [x21] -233d37c8| stxp w23, x3, x15, [x9] -847d0088| stxr w0, w4, [x12] -a27d0bc8| stxr w11, x2, [x13] -f27f1e08| stxrb w30, w18, [sp] -3a7d1848| stxrh w24, w26, [x9] -d4dc204b| sub w20, w6, w0, sxtw #7 -874023cb| sub x7, x4, w3, uxtw -44eb4f51| sub w4, w26, #0x3fa, lsl #12 -17b012cb| sub x23, x0, x18, lsl #44 -ac1e376b| subs w12, w21, w23, uxtb #7 -b0483beb| subs x16, x5, w27, uxtw #2 -d1f994eb| subs x17, x14, x20, asr #62 -61d513d4| svc #0x9eab -591d0013| sxtb w25, w10 -9f1f4093| sxtb xzr, w28 -773f0013| sxth w23, w27 -453c4093| sxth x5, w2 -b77c4093| sxtw x23, w5 -743628d5| sysl x20, #0, C3, C6, #3 -6fd248b7| tbnz x15, #41, .+0x1a4c -5afe3036| tbz w26, #6, .+0x1fc8 -9f613672| tst w12, #0xfffffc07 -1f8d22f2| tst x8, #0xc003c003c003c003 -ff6e93ea| tst x23, x19, asr #27 -06997ed3| ubfiz x6, x8, #2, #39 -5dd054d3| ubfx x29, x2, #20, #33 -a54273d3| ubfiz x5, x21, #13, #17 -7d08d11a| udiv w29, w3, w17 -120acf9a| udiv x18, x16, x15 -1401a89b| umaddl x20, w8, w8, x0 -08feb29b| umnegl x8, w16, w18 -eeb0b99b| umsubl x14, w7, w25, x12 -967fdd9b| umulh x22, x28, x29 -947eb59b| umull x20, w20, w21 -7e1f0053| uxtb w30, w27 -983c0053| uxth w24, w4 -5f2003d5| wfe -7f2003d5| wfi -3f2003d5| yield -02bb200e| abs v2.8b, v24.8b -0686ec4e| add v6.2d, v16.2d, v12.2d -ea42ac0e| addhn v10.2s, v23.2d, v12.2d -7d43624e| addhn2 v29.8h, v27.4s, v2.4s -2cbd710e| addp v12.4h, v9.4h, v17.4h -f5bab14e| addv s21, v23.4s -8158284e| aesd v1.16b, v4.16b -ba48284e| aese v26.16b, v5.16b -0c7a284e| aesimc v12.16b, v16.16b -3e6a284e| aesmc v30.16b, v17.16b -091f384e| and v9.16b, v24.16b, v24.16b -07b6046f| bic v7.8h, #0x90, lsl #8 -00c5006f| mvni v0.4s, #0x8, msl #8 -f81e6c0e| bic v24.8b, v23.8b, v12.8b -6f1ced2e| bif v15.8b, v3.8b, v13.8b -e31da16e| bit v3.16b, v15.16b, v1.16b -6a1d7c6e| bsl v10.16b, v11.16b, v28.16b -284a600e| cls v8.4h, v17.4h -9a49202e| clz v26.8b, v12.8b -d78f706e| cmeq v23.8h, v30.8h, v16.8h -7798e05e| cmeq d23, d3, #0 -739a200e| cmeq v19.8b, v19.8b, #0 -ff3f2b4e| cmge v31.16b, v31.16b, v11.16b -5337370e| cmgt v19.8b, v26.8b, v23.8b -3489604e| cmgt v20.8h, v9.8h, #0 -083d782e| cmhs v8.4h, v8.4h, v24.4h -c899e07e| cmle d8, d14, #0 -3498a06e| cmle v20.4s, v1.4s, #0 -ebaa200e| cmlt v11.8b, v23.8b, #0 -408dfe4e| cmtst v0.2d, v10.2d, v30.2d -0e06085e| mov d14, v16.d[0] -1e0d0d0e| dup v30.8b, w8 -8e1d3a6e| eor v14.16b, v12.16b, v26.16b -632a086e| ext v3.16b, v19.16b, v8.16b, #5 -97d7e57e| fabd d23, d28, d5 -6bd4a82e| fabd v11.2s, v3.2s, v8.2s -f7faa00e| fabs v23.2s, v23.2s -54c2201e| fabs s20, s18 -3ec3601e| fabs d30, d25 -2aee317e| facge s10, s17, s17 -2fed392e| facge v15.2s, v9.2s, v25.2s -2befe97e| facgt d11, d25, d9 -65eced6e| facgt v5.2d, v3.2d, v13.2d -55d53c4e| fadd v21.4s, v10.4s, v28.4s -8b283f1e| fadd s11, s4, s31 -d828601e| fadd d24, d6, d0 -e9d8307e| faddp s9, v7.2s -4084391e| fccmp s2, s25, #0x0, hi -ef046d1e| fccmp d7, d13, #0xf, eq -d7a4241e| fccmpe s6, s4, #0x7, ge -dbf5601e| fccmpe d14, d0, #0xb, al -77e7625e| fcmeq d23, d27, d2 -2de67f4e| fcmeq v13.2d, v17.2d, v31.2d -59daa05e| fcmeq s25, s18, #0 -add9a00e| fcmeq v13.2s, v13.2s, #0 -dce42d7e| fcmge s28, s6, s13 -62e6776e| fcmge v2.2d, v19.2d, v23.2d -f9cae07e| fcmge d25, d23, #0 -18e5ab7e| fcmgt s24, s8, s11 -84e7ae6e| fcmgt v4.4s, v28.4s, v14.4s -a0c8e05e| fcmgt d0, d5, #0 -c6cae04e| fcmgt v6.2d, v22.2d, #0 -4fdaa07e| fcmle s15, s18, #0 -e1d9a02e| fcmle v1.2s, v15.2s, #0 -1ee9a05e| fcmlt s30, s8, #0 -23eaa04e| fcmlt v3.4s, v17.4s, #0 -6023321e| fcmp s27, s18 -2823391e| fcmp s25, #0 -00236d1e| fcmp d24, d13 -e820601e| fcmp d7, #0 -3022381e| fcmpe s17, s24 -f8233e1e| fcmpe s31, #0 -b0206a1e| fcmpe d5, d10 -3820691e| fcmpe d1, #0 -d85f271e| fcsel s24, s30, s7, pl -ed8f7a1e| fcsel d13, d31, d26, hi -0042e21e| fcvt s0, h16 -efc1e21e| fcvt d15, h15 -edc1231e| fcvt h13, s15 -0ac0221e| fcvt d10, s0 -39c3631e| fcvt h25, d25 -da43621e| fcvt s26, d30 -10cb615e| fcvtas d16, d24 -f400241e| fcvtas w20, s7 -2f00249e| fcvtas x15, s1 -1d02641e| fcvtas w29, d16 -9303649e| fcvtas x19, d28 -02ca217e| fcvtau s2, s16 -afc8212e| fcvtau v15.2s, v5.2s -6e02251e| fcvtau w14, s19 -fd02259e| fcvtau x29, s23 -8603651e| fcvtau w6, d28 -4001659e| fcvtau x0, d10 -1f78210e| fcvtl v31.4s, v0.4h -d179214e| fcvtl2 v17.4s, v14.8h -fdbb615e| fcvtms d29, d31 -9601301e| fcvtms w22, s12 -f403309e| fcvtms x20, s31 -6b02701e| fcvtms w11, d19 -4802709e| fcvtms x8, d18 -84ba217e| fcvtmu s4, s20 -ae01311e| fcvtmu w14, s13 -8402319e| fcvtmu x4, s20 -7403711e| fcvtmu w20, d27 -2a03719e| fcvtmu x10, d25 -a36b210e| fcvtn v3.4h, v29.4s -5c6a214e| fcvtn2 v28.8h, v18.4s -78a9215e| fcvtns s24, s11 -b1ab614e| fcvtns v17.2d, v29.2d -0c01201e| fcvtns w12, s8 -b303209e| fcvtns x19, s29 -c401601e| fcvtns w4, d14 -5200609e| fcvtns x18, d2 -c2a8617e| fcvtnu d2, d6 -daab616e| fcvtnu v26.2d, v30.2d -d001211e| fcvtnu w16, s14 -0402219e| fcvtnu x4, s16 -7800611e| fcvtnu w24, d3 -e602619e| fcvtnu x6, d23 -74aaa15e| fcvtps s20, s19 -c801281e| fcvtps w8, s14 -8f02289e| fcvtps x15, s20 -6d02681e| fcvtps w13, d19 -bc00689e| fcvtps x28, d5 -43aba17e| fcvtpu s3, s26 -cda9a12e| fcvtpu v13.2s, v14.2s -c102291e| fcvtpu w1, s22 -9103299e| fcvtpu x17, s28 -7602691e| fcvtpu w22, d19 -4501699e| fcvtpu x5, d10 -976a616e| fcvtxn2 v23.4s, v20.2d -d5fc575f| fcvtzs d21, d6, #41 -babaa15e| fcvtzs s26, s21 -7aa6181e| fcvtzs w26, s19, #23 -c410189e| fcvtzs x4, s6, #60 -4db5589e| fcvtzs x13, d10, #19 -9000381e| fcvtzs w16, s4 -1702389e| fcvtzs x23, s16 -8a03781e| fcvtzs w10, d28 -d501789e| fcvtzs x21, d14 -eefd2d7f| fcvtzu s14, s15, #19 -4dfc3c6f| fcvtzu v13.4s, v2.4s, #4 -96bbe17e| fcvtzu d22, d28 -30b8e16e| fcvtzu v16.2d, v1.2d -fdef191e| fcvtzu w29, s31, #5 -1d7b199e| fcvtzu x29, s24, #34 -b8f5591e| fcvtzu w24, d13, #3 -5080599e| fcvtzu x16, d2, #32 -d002391e| fcvtzu w16, s22 -9b03399e| fcvtzu x27, s28 -7501791e| fcvtzu w21, d11 -7603799e| fcvtzu x22, d27 -06fe3c6e| fdiv v6.4s, v16.4s, v28.4s -c41b201e| fdiv s4, s30, s0 -1618781e| fdiv d22, d0, d24 -507b0d1f| fmadd s16, s26, s13, s30 -8803491f| fmadd d8, d28, d9, d0 -75f7394e| fmax v21.4s, v27.4s, v25.4s -804b3c1e| fmax s0, s28, s28 -c1496c1e| fmax d1, d14, d12 -5b69371e| fmaxnm s27, s10, s23 -1468711e| fmaxnm d20, d0, d17 -a4c8707e| fmaxnmp d4, v5.2d -89f9707e| fmaxp d9, v12.2d -4af63e2e| fmaxp v10.2s, v18.2s, v30.2s -25fa306e| fmaxv s5, v17.4s -01f4e04e| fmin v1.2d, v0.2d, v0.2d -59592a1e| fmin s25, s10, s10 -3959611e| fmin d25, d9, d1 -73c7ba4e| fminnm v19.4s, v27.4s, v26.4s -1279391e| fminnm s18, s8, s25 -75796c1e| fminnm d21, d11, d12 -90cbb07e| fminnmp s16, v28.2s -c5c8b06e| fminnmv s5, v6.4s -cdfbf07e| fminp d13, v30.2d -edf6f66e| fminp v13.2d, v23.2d, v22.2d -6513b85f| fmla s5, s27, v24.s[1] -ee18984f| fmla v14.4s, v7.4s, v24.s[2] -b85ab75f| fmls s24, s21, v23.s[3] -a3f5030f| fmov v3.2s, #9.062500000000000000e-01 -eaf7056f| fmov v10.2d, #-3.100000000000000000e+01 -3b41201e| fmov s27, s9 -0d41601e| fmov d13, d8 -9700271e| fmov s23, w4 -ad03261e| fmov w13, s29 -2302679e| fmov d3, x17 -e101af9e| fmov v1.d[1], x15 -f301669e| fmov x19, d15 -1103ae9e| fmov x17, v24.d[1] -0230321e| fmov s2, #-4.250000000000000000e+00 -18b0751e| fmov d24, #-1.450000000000000000e+01 -92bc1b1f| fmsub s18, s4, s27, s15 -f8e14a1f| fmsub d24, d15, d10, d24 -ef91d35f| fmul d15, d15, v19.d[0] -d293c24f| fmul v18.2d, v30.2d, v2.d[0] -18dd2b2e| fmul v24.2s, v8.2s, v11.2s -a4093d1e| fmul s4, s13, s29 -94096f1e| fmul d20, d12, d15 -fe918e7f| fmulx s30, s15, v14.s[0] -7199c56f| fmulx v17.2d, v11.2d, v5.d[1] -32dc695e| fmulx d18, d1, d9 -c8f9e06e| fneg v8.2d, v14.2d -9c41211e| fneg s28, s12 -c443611e| fneg d4, d30 -e77f301f| fnmadd s7, s31, s16, s31 -9f326c1f| fnmadd d31, d20, d12, d12 -d9e92f1f| fnmsub s25, s14, s15, s26 -00ad711f| fnmsub d0, d8, d17, d11 -c889211e| fnmul s8, s14, s1 -528b761e| fnmul d18, d26, d22 -01d8e15e| frecpe d1, d0 -9aff7e5e| frecps d26, d28, d30 -78fe2a4e| frecps v24.4s, v19.4s, v10.4s -01f9e15e| frecpx d1, d8 -128b216e| frinta v18.4s, v24.4s -b241261e| frinta s18, s13 -a841661e| frinta d8, d13 -799aa16e| frinti v25.4s, v19.4s -1cc2271e| frinti s28, s16 -93c2671e| frinti d19, d20 -1a40251e| frintm s26, s0 -ac42651e| frintm d12, d21 -5889214e| frintn v24.4s, v10.4s -5740241e| frintn s23, s2 -9443641e| frintn d20, d28 -4b89a10e| frintp v11.2s, v10.2s -a0c1241e| frintp s0, s13 -93c2641e| frintp d19, d20 -d49b216e| frintx v20.4s, v30.4s -df41271e| frintx s31, s14 -8d41671e| frintx d13, d12 -3998a10e| frintz v25.2s, v1.2s -fdc2251e| frintz s29, s23 -abc2651e| frintz d11, d21 -10dba17e| frsqrte s16, s24 -edd9e16e| frsqrte v13.2d, v15.2d -75ffe35e| frsqrts d21, d27, d3 -b4fdbe4e| frsqrts v20.4s, v13.4s, v30.4s -24f8a16e| fsqrt v4.4s, v1.4s -b6c1211e| fsqrt s22, s13 -c1c3611e| fsqrt d1, d30 -ffd5b44e| fsub v31.4s, v15.4s, v20.4s -d438331e| fsub s20, s6, s19 -f038771e| fsub d16, d7, d23 -675e1a6e| mov v7.h[6], v19.h[5] -2a1c0a4e| mov v10.h[2], w1 -de7f400c| ld1 {v30.1d}, [x30] -4aa7404c| ld1 {v10.8h, v11.8h}, [x26] -5d61400c| ld1 {v29.8b-v31.8b}, [x10] -af21404c| ld1 {v15.16b-v18.16b}, [x13] -737edf0c| ld1 {v19.1d}, [x19],#8 -757dd10c| ld1 {v21.1d}, [x11], x17 -5ca3df4c| ld1 {v28.16b, v29.16b}, [x26],#32 -93a1ce0c| ld1 {v19.8b, v20.8b}, [x12], x14 -1c65df0c| ld1 {v28.4h-v30.4h}, [x8],#24 -4461d34c| ld1 {v4.16b-v6.16b}, [x10], x19 -b22edf4c| ld1 {v18.2d-v21.2d}, [x21],#64 -c12fcc4c| ld1 {v1.2d-v4.2d}, [x30], x12 -5a03400d| ld1 {v26.b}[0], [x26] -8d93404d| ld1 {v13.s}[3], [x28] -2186404d| ld1 {v1.d}[1], [x17] -9604df4d| ld1 {v22.b}[9], [x4],#1 -4a1dc94d| ld1 {v10.b}[15], [x10], x9 -4852df4d| ld1 {v8.h}[6], [x18],#2 -2582df4d| ld1 {v5.s}[2], [x17],#4 -2191c84d| ld1 {v1.s}[3], [x9], x8 -c284df4d| ld1 {v2.d}[1], [x6],#8 -8f85ce0d| ld1 {v15.d}[0], [x12], x14 -87cd400d| ld1r {v7.1d}, [x12] -3bc8df4d| ld1r {v27.4s}, [x1],#4 -77c4dd4d| ld1r {v23.8h}, [x3], x29 -5384404c| ld2 {v19.8h, v20.8h}, [x2] -ca87df0c| ld2 {v10.4h, v11.4h}, [x30],#16 -1280d70c| ld2 {v18.8b, v19.8b}, [x0], x23 -4c0a604d| ld2 {v12.b, v13.b}[10], [x18] -3080600d| ld2 {v16.s, v17.s}[0], [x1] -6686600d| ld2 {v6.d, v7.d}[0], [x19] -061eff0d| ld2 {v6.b, v7.b}[7], [x16],#2 -db05fa0d| ld2 {v27.b, v28.b}[1], [x14], x26 -8a49ff4d| ld2 {v10.h, v11.h}[5], [x12],#4 -bb59ec4d| ld2 {v27.h, v28.h}[7], [x13], x12 -5a82ff0d| ld2 {v26.s, v27.s}[0], [x18],#8 -6180e30d| ld2 {v1.s, v2.s}[0], [x3], x3 -6485ff0d| ld2 {v4.d, v5.d}[0], [x11],#16 -7c86ed4d| ld2 {v28.d, v29.d}[1], [x19], x13 -54c0604d| ld2r {v20.16b, v21.16b}, [x2] -fdcaff0d| ld2r {v29.2s, v30.2s}, [x23],#8 -7bc5e40d| ld2r {v27.4h, v28.4h}, [x11], x4 -b349404c| ld3 {v19.4s-v21.4s}, [x13] -cf46df4c| ld3 {v15.8h-v17.8h}, [x22],#48 -934acc4c| ld3 {v19.4s-v21.4s}, [x20], x12 -2c33404d| ld3 {v12.b-v14.b}[12], [x25] -897a400d| ld3 {v9.h-v11.h}[3], [x20] -f9b2400d| ld3 {v25.s-v27.s}[1], [x23] -4aa7404d| ld3 {v10.d-v12.d}[1], [x26] -4e25df4d| ld3 {v14.b-v16.b}[9], [x10],#3 -7827c40d| ld3 {v24.b-v26.b}[1], [x27], x4 -c4a3df4d| ld3 {v4.s-v6.s}[2], [x30],#12 -f0a1cf0d| ld3 {v16.s-v18.s}[0], [x15], x15 -1ba7df0d| ld3 {v27.d-v29.d}[0], [x24],#24 -f7a7d50d| ld3 {v23.d-v25.d}[0], [sp], x21 -a9ed404d| ld3r {v9.2d-v11.2d}, [x13] -5aecdf4d| ld3r {v26.2d-v28.2d}, [x2],#24 -bae9c74d| ld3r {v26.4s-v28.4s}, [x13], x7 -5904404c| ld4 {v25.8h-v28.8h}, [x2] -743b604d| ld4 {v20.b-v23.b}[14], [x27] -bda1600d| ld4 {v29.s, v30.s, v31.s, v0.s}[0], [x13] -a3a4600d| ld4 {v3.d-v6.d}[0], [x5] -2f3aff4d| ld4 {v15.b-v18.b}[14], [x17],#4 -e73bef4d| ld4 {v7.b-v10.b}[14], [sp], x15 -5d78ef0d| ld4 {v29.h, v30.h, v31.h, v0.h}[3], [x2], x15 -acb3ff0d| ld4 {v12.s-v15.s}[1], [x29],#16 -a8b2f04d| ld4 {v8.s-v11.s}[3], [x21], x16 -75a7ff4d| ld4 {v21.d-v24.d}[1], [x27],#32 -75a6ee4d| ld4 {v21.d-v24.d}[1], [x19], x14 -d8e3604d| ld4r {v24.16b-v27.16b}, [x30] -49e9ff0d| ld4r {v9.2s-v12.2s}, [x10],#16 -81effc0d| ld4r {v1.1d-v4.1d}, [x28], x28 -893e622c| ldnp s9, s15, [x20,#-240] -f90e626c| ldnp d25, d3, [x23,#-480] -b0224fac| ldnp q16, q8, [x21,#480] -9186de2c| ldp s17, s1, [x20],#244 -e820d06c| ldp d8, d8, [x7],#256 -417de8ac| ldp q1, q31, [x10],#-768 -7969ed2d| ldp s25, s26, [x11,#-152]! -70c8c36d| ldp d16, d18, [x3,#56]! -30b4c4ad| ldp q16, q13, [x1,#144]! -a1857f2d| ldp s1, s1, [x13,#-4] -f4ae786d| ldp d20, d11, [x23,#-120] -998366ad| ldp q25, q0, [x28,#-816] -7535453c| ldr b21, [x11],#83 -5465477c| ldr h20, [x10],#118 -a2b44bbc| ldr s2, [x5],#187 -ab045bfc| ldr d11, [x5],#-80 -0515d43c| ldr q5, [x8],#-191 -43ad413c| ldr b3, [x10,#26]! -22cd4f7c| ldr h2, [x9,#252]! -5fad44bc| ldr s31, [x10,#74]! -db7d5afc| ldr d27, [x14,#-89]! -15ccd63c| ldr q21, [x0,#-148]! -95c34b3d| ldr b21, [x28,#752] -f5885e7d| ldr h21, [x7,#3908] -54db66bd| ldr s20, [x26,#9944] -46ee78fd| ldr d6, [x18,#29144] -0cc4e93d| ldr q12, [x0,#42768] -e1c4211c| ldr s1, .+0x4389c -2071c35c| ldr d0, .+0xfffffffffff86e24 -4765789c| ldr q7, .+0xf0ca8 -ae79703c| ldr b14, [x13,x16,lsl #0] -38fb67bc| ldr s24, [x25,x7,sxtx #2] -3e6b6dfc| ldr d30, [x25,x13] -a278ff3c| ldr q2, [x5,xzr,lsl #4] -ed02563c| ldur b13, [x23,#-160] -01c0507c| ldur h1, [x0,#-244] -7fd24ebc| ldur s31, [x19,#237] -7a734ffc| ldur d26, [x27,#247] -d4a3dd3c| ldur q20, [x30,#-38] -1c97250e| mla v28.8b, v24.8b, v5.8b -af97a12e| mls v15.2s, v29.2s, v1.2s -2b061f5e| mov b11, v17.b[15] -805e086e| mov v0.d[0], v20.d[1] -d91fbc4e| orr v25.16b, v30.16b, v28.16b -a43f040e| mov w4, v29.s[0] -fbe6054f| movi v27.16b, #0xb7 -9b75024f| orr v27.4s, #0x4c, lsl #24 -8436020f| orr v4.2s, #0x54, lsl #8 -19f5010f| fmov v25.2s, #1.200000000000000000e+01 -02e5062f| movi d2, #0xffff0000ff000000 -d6e5066f| movi v22.2d, #0xffff0000ffffff00 -be9c240e| mul v30.8b, v5.8b, v4.8b -2659202e| mvn v6.8b, v9.8b -f394046f| bic v19.8h, #0x87 -d856056f| bic v24.4s, #0xb6, lsl #16 -2f85022f| mvni v15.4h, #0x49 -24baa02e| neg v4.2s, v17.2s -145b206e| mvn v20.16b, v24.16b -191fff4e| orn v25.16b, v24.16b, v31.16b -6f96004f| orr v15.8h, #0x13 -a564020f| movi v5.2s, #0x45, lsl #24 -ae1ead0e| orr v14.8b, v21.8b, v13.8b -f2e1e00e| pmull v18.1q, v15.1d, v0.1d -0d426e2e| raddhn v13.4h, v16.4s, v14.4s -4443246e| raddhn2 v4.16b, v26.8h, v4.8h -015b602e| rbit v1.8b, v24.8b -4209202e| rev32 v2.8b, v10.8b -d109a04e| rev64 v17.4s, v14.4s -5a8e380f| rshrn v26.2s, v18.2d, #8 -438d234f| rshrn2 v3.4s, v10.2d, #29 -a861716e| rsubhn2 v8.8h, v13.4s, v17.4s -017c2f0e| saba v1.8b, v0.8b, v15.8b -5d51a90e| sabal v29.2d, v10.2s, v9.2s -c076a04e| sabd v0.4s, v22.4s, v0.4s -2d722e0e| sabdl v13.8h, v17.8b, v14.8b -1f732e4e| sabdl2 v31.8h, v24.16b, v14.16b -c628604e| saddlp v6.4s, v6.8h -103b704e| saddlv s16, v24.8h -8f122f0e| saddw v15.8h, v20.8h, v15.8b -30e6755f| scvtf d16, d17, #11 -73e7544f| scvtf v19.2d, v27.2d, #44 -51d9615e| scvtf d17, d10 -fad9210e| scvtf v26.2s, v15.2s -96c0421e| scvtf d22, w4, #16 -76e1029e| scvtf s22, x11, #8 -a791429e| scvtf d7, x13, #28 -f100221e| scvtf s17, w7 -e101621e| scvtf d1, w15 -6e03229e| scvtf s14, x27 -0b01629e| scvtf d11, x8 -2401025e| sha1c q4, s9, v2.4s -5d08285e| sha1h s29, s2 -65210d5e| sha1m q5, s11, v13.4s -29131a5e| sha1p q9, s25, v26.4s -2b311a5e| sha1su0 v11.4s, v9.4s, v26.4s -0919285e| sha1su1 v9.4s, v8.4s -f052035e| sha256h2 q16, q23, v3.4s -fe401e5e| sha256h q30, q7, v30.4s -7529285e| sha256su0 v21.4s, v11.4s -cc60195e| sha256su1 v12.4s, v6.4s, v25.4s -8b56060f| orr v11.2s, #0xd4, lsl #16 -3f3aa16e| shll2 v31.2d, v17.4s, #32 -0986394f| shrn2 v9.4s, v16.2d, #7 -35276e4e| shsub v21.8h, v25.8h, v14.8h -e2556d7f| sli d2, d15, #45 -f7541e6f| sli v23.8h, v7.8h, #14 -3167630e| smax v17.4h, v25.4h, v3.4h -68a6230e| smaxp v8.8b, v19.8b, v3.8b -a4aa304e| smaxv b4, v21.16b -2520440f| smlal v5.4s, v1.4h, v4.h[0] -8c286f4f| smlal2 v12.4s, v4.8h, v15.h[6] -3a82660e| smlal v26.4s, v17.4h, v6.4h -d92f1f0e| smov w25, v30.b[15] -912d114e| smov x17, v12.b[8] -b87ae05e| sqabs d24, d21 -2d7b200e| sqabs v13.8b, v25.8b -560f645e| sqadd h22, h26, h4 -4f0da54e| sqadd v15.4s, v10.4s, v5.4s -5992ba5e| sqdmlal d25, s18, s26 -b892684e| sqdmlal2 v24.4s, v21.8h, v8.8h -63786e5f| sqdmlsl s3, h3, v14.h[6] -0c79a10f| sqdmlsl v12.2d, v8.2s, v1.s[3] -1d73504f| sqdmlsl2 v29.4s, v24.8h, v0.h[1] -6cb36c5e| sqdmlsl s12, h27, h12 -82b36e4e| sqdmlsl2 v2.4s, v28.8h, v14.8h -8dca5d4f| sqdmulh v13.8h, v20.8h, v13.h[5] -fcb6b64e| sqdmulh v28.4s, v23.4s, v22.4s -d6b0974f| sqdmull2 v22.2d, v6.4s, v23.s[0] -afd0b84e| sqdmull2 v15.2d, v5.4s, v24.4s -067b207e| sqneg b6, b24 -9979606e| sqneg v25.8h, v12.8h -bfdbae0f| sqrdmulh v31.2s, v29.2s, v14.s[3] -c3b7a07e| sqrdmulh s3, s30, s0 -845d3d5e| sqrshl b4, b12, b29 -495dba0e| sqrshl v9.2s, v10.2s, v26.2s -fa8e0d7f| sqrshrun b26, h23, #3 -cf75185f| sqshl h15, h14, #8 -a975250f| sqshl v9.2s, v13.2s, #5 -424da05e| sqshl s2, s10, s0 -464db90e| sqshl v6.2s, v10.2s, v25.2s -af656d7f| sqshlu d15, d13, #45 -e564436f| sqshlu v5.2d, v7.2d, #3 -c1973b5f| sqshrn s1, d30, #5 -d586036f| mvni v21.8h, #0x76 -4c2ea95e| sqsub s12, s18, s9 -df2efe4e| sqsub v31.2d, v22.2d, v30.2d -c149a10e| sqxtn v1.2s, v14.2d -712a217e| sqxtun b17, h19 -9a29a12e| sqxtun v26.2s, v12.2d -6a166e0e| srhadd v10.4h, v19.4h, v14.4h -0445647f| sri d4, d8, #28 -6f44172f| sri v15.4h, v3.4h, #9 -cd56f94e| srshl v13.2d, v22.2d, v25.2d -12345b5f| srsra d18, d0, #37 -f746fa5e| sshl d23, d23, d26 -89476c4e| sshl v9.8h, v28.8h, v12.8h -0da60e0f| sshll v13.8h, v16.8b, #6 -a504585f| sshr d5, d5, #40 -3b07544f| sshr v27.2d, v25.2d, #44 -3417350f| ssra v20.2s, v25.2s, #11 -1a213f0e| ssubl v26.8h, v8.8b, v31.8b -1322a34e| ssubl2 v19.2d, v16.4s, v3.4s -e931b84e| ssubw2 v9.2d, v15.2d, v24.4s -dd7d004c| st1 {v29.2d}, [x14] -cea4000c| st1 {v14.4h, v15.4h}, [x6] -5a64000c| st1 {v26.4h-v28.4h}, [x2] -2b2c004c| st1 {v11.2d-v14.2d}, [x1] -39719f0c| st1 {v25.8b}, [x9],#8 -b771874c| st1 {v23.16b}, [x13], x7 -1da39f0c| st1 {v29.8b, v30.8b}, [x24],#16 -20a0800c| st1 {v0.8b, v1.8b}, [x1], x0 -5a6a9f4c| st1 {v26.4s-v28.4s}, [x18],#48 -0d69994c| st1 {v13.4s-v15.4s}, [x8], x25 -7e239f0c| st1 {v30.8b, v31.8b, v0.8b, v1.8b}, [x27],#32 -9a2d8e0c| st1 {v26.1d-v29.1d}, [x12], x14 -fd0b004d| st1 {v29.b}[10], [sp] -1058004d| st1 {v16.h}[7], [x0] -0593000d| st1 {v5.s}[1], [x24] -3d87000d| st1 {v29.d}[0], [x25] -1a079f0d| st1 {v26.b}[1], [x24],#1 -421b8f4d| st1 {v2.b}[14], [x26], x15 -54489f4d| st1 {v20.h}[5], [x2],#2 -c4809f4d| st1 {v4.s}[2], [x6],#4 -0481840d| st1 {v4.s}[0], [x8], x4 -6b859f0d| st1 {v11.d}[0], [x11],#8 -f7878e4d| st1 {v23.d}[1], [sp], x14 -e788004c| st2 {v7.4s, v8.4s}, [x7] -79889f0c| st2 {v25.2s, v26.2s}, [x3],#16 -a502204d| st2 {v5.b, v6.b}[8], [x21] -0e50204d| st2 {v14.h, v15.h}[6], [x0] -6b93204d| st2 {v11.s, v12.s}[3], [x27] -0987200d| st2 {v9.d, v10.d}[0], [x24] -7003bf0d| st2 {v16.b, v17.b}[0], [x27],#2 -1a09a94d| st2 {v26.b, v27.b}[10], [x8], x9 -1e43b00d| st2 {v30.h, v31.h}[0], [x24], x16 -1a82bf0d| st2 {v26.s, v27.s}[0], [x16],#8 -9892a50d| st2 {v24.s, v25.s}[1], [x20], x5 -5884bf0d| st2 {v24.d, v25.d}[0], [x2],#16 -9e87a34d| st2 {v30.d, v31.d}[1], [x28], x3 -4e47004c| st3 {v14.8h-v16.8h}, [x26] -76489f4c| st3 {v22.4s-v24.4s}, [x3],#48 -3b48860c| st3 {v27.2s-v29.2s}, [x1], x6 -e52a000d| st3 {v5.b-v7.b}[2], [x23] -6f73004d| st3 {v15.h-v17.h}[6], [x27] -9bb1004d| st3 {v27.s-v29.s}[3], [x12] -0ca7000d| st3 {v12.d-v14.d}[0], [x24] -2a259f0d| st3 {v10.b-v12.b}[1], [x9],#3 -0524860d| st3 {v5.b-v7.b}[1], [x0], x6 -94689a4d| st3 {v20.h-v22.h}[5], [x4], x26 -c2a19f4d| st3 {v2.s-v4.s}[2], [x14],#12 -5fb38c0d| st3 {v31.s, v0.s, v1.s}[1], [x26], x12 -6da59f4d| st3 {v13.d-v15.d}[1], [x11],#24 -32a7924d| st3 {v18.d-v20.d}[1], [x25], x18 -5b03000c| st4 {v27.8b-v30.8b}, [x26] -cd059f0c| st4 {v13.4h-v16.4h}, [x14],#32 -8601820c| st4 {v6.8b-v9.8b}, [x12], x2 -7925200d| st4 {v25.b-v28.b}[1], [x11] -cd7a204d| st4 {v13.h-v16.h}[7], [x22] -dfb2204d| st4 {v31.s, v0.s, v1.s, v2.s}[3], [x22] -daa4200d| st4 {v26.d-v29.d}[0], [x6] -2135bf0d| st4 {v1.b-v4.b}[5], [x9],#4 -7727a90d| st4 {v23.b-v26.b}[1], [x27], x9 -b4a3bf0d| st4 {v20.s-v23.s}[0], [x29],#16 -1ba3ae0d| st4 {v27.s-v30.s}[0], [x24], x14 -93a4bf0d| st4 {v19.d-v22.d}[0], [x4],#32 -50a6b80d| st4 {v16.d-v19.d}[0], [x18], x24 -79b53d2c| stnp s25, s13, [x11,#-20] -d895326c| stnp d24, d5, [x14,#-216] -d1810dac| stnp q17, q0, [x14,#432] -08728c2c| stp s8, s28, [x16],#96 -ac1ba16c| stp d12, d6, [x29],#-496 -f4fab1ac| stp q20, q30, [x23],#-464 -c15bbe2d| stp s1, s22, [x30,#-16]! -2422856d| stp d4, d8, [x17,#80]! -3d5282ad| stp q29, q20, [x17,#64]! -5df5352d| stp s29, s29, [x10,#-84] -5c54286d| stp d28, d21, [x2,#-384] -753c11ad| stp q21, q15, [x3,#544] -54e4033c| str b20, [x2],#62 -aa54137c| str h10, [x5],#-203 -c9d615bc| str s9, [x22],#-163 -fc471efc| str d28, [sp],#-28 -20f78d3c| str q0, [x25],#223 -028d1b3c| str b2, [x8,#-72]! -35be037c| str h21, [x17,#59]! -b98c15bc| str s25, [x5,#-168]! -fd1e11fc| str d29, [x23,#-239]! -13ec9a3c| str q19, [x0,#-82]! -b12d123d| str b17, [x13,#1163] -d6500b7d| str h22, [x6,#1448] -d46e39bd| str s20, [x22,#14700] -b84f30fd| str d24, [x29,#24728] -3cee993d| str q28, [x17,#26544] -4348293c| str b3, [x2,w9,uxtw] -ed7b253c| str b13, [sp,x5,lsl #0] -8fc9357c| str h15, [x12,w21,sxtw] -87f832bc| str s7, [x4,x18,sxtx #2] -f1ea38fc| str d17, [x23,x24,sxtx] -1c68a43c| str q28, [x0,x4] -dcb1023c| stur b28, [x14,#43] -6701117c| stur h7, [x11,#-240] -85b11bbc| stur s5, [x12,#-69] -8ea10efc| stur d14, [x12,#234] -eab08f3c| stur q10, [x7,#251] -ca876a2e| sub v10.4h, v30.4h, v10.4h -603be05e| suqadd d0, d27 -513a600e| suqadd v17.4h, v18.4h -25231c4e| tbl v5.16b, {v25.16b, v26.16b}, v28.16b -8c40100e| tbl v12.8b, {v4.16b-v6.16b}, v16.8b -0462040e| tbl v4.8b, {v16.16b-v19.16b}, v4.8b -34000f0e| tbl v20.8b, {v1.16b}, v15.8b -eb301f4e| tbx v11.16b, {v7.16b, v8.16b}, v31.16b -bb51124e| tbx v27.16b, {v13.16b-v15.16b}, v18.16b -cf701d0e| tbx v15.8b, {v6.16b-v9.16b}, v29.8b -4213080e| tbx v2.8b, {v26.16b}, v8.8b -2b2b114e| trn1 v11.16b, v25.16b, v17.16b -766ada4e| trn2 v22.2d, v19.2d, v26.2d -4152672e| uabal v1.4s, v18.4h, v7.4h -0953296e| uabal2 v9.8h, v24.16b, v9.16b -41756c6e| uabd v1.8h, v10.8h, v12.8h -3670ae2e| uabdl v22.2d, v1.2s, v14.2s -5401312e| uaddl v20.8h, v10.8b, v17.8b -d103286e| uaddl2 v17.8h, v30.16b, v8.16b -a92a206e| uaddlp v9.8h, v21.16b -b839706e| uaddlv s24, v13.8h -ea106d2e| uaddw v10.4s, v7.4s, v13.4h -c010726e| uaddw2 v0.4s, v6.4s, v18.8h -e7e5517f| ucvtf d7, d15, #47 -49e7376f| ucvtf v9.4s, v26.4s, #9 -4ada617e| ucvtf d10, d18 -6b82431e| ucvtf d11, w19, #32 -db84039e| ucvtf s27, x6, #31 -1c72439e| ucvtf d28, x16, #36 -f301231e| ucvtf s19, w15 -3503631e| ucvtf d21, w25 -e602239e| ucvtf s6, x23 -d503639e| ucvtf d21, x30 -ec04606e| uhadd v12.8h, v7.8h, v0.8h -3f65782e| umax v31.4h, v9.4h, v24.4h -afa6232e| umaxp v15.8b, v21.8b, v3.8b -cdaa706e| umaxv h13, v22.8h -736c236e| umin v19.16b, v3.16b, v3.16b -a0afa62e| uminp v0.2s, v29.2s, v6.2s -3c229e2f| umlal v28.2d, v17.2s, v30.s[0] -9d29a56f| umlal2 v29.2d, v12.4s, v5.s[3] -6c80392e| umlal v12.8h, v3.8b, v25.8b -4f60692f| umlsl v15.4s, v2.4h, v9.h[2] -61a1606e| umlsl2 v1.4s, v11.8h, v0.8h -183e0b0e| umov w24, v16.b[5] -c0a89b6f| umull2 v0.2d, v6.4s, v27.s[2] -36c0736e| umull2 v22.4s, v1.8h, v19.8h -120d757e| uqadd h18, h8, h21 -3a0c2e2e| uqadd v26.8b, v1.8b, v14.8b -0d5d617e| uqrshl h13, h8, h1 -4d5cb16e| uqrshl v13.4s, v2.4s, v17.4s -439c382f| uqrshrn v3.2s, v2.2d, #8 -9d745c7f| uqshl d29, d4, #28 -7b76656f| uqshl v27.2d, v19.2d, #37 -774ef37e| uqshl d23, d19, d19 -124eb32e| uqshl v18.2s, v16.2s, v19.2s -bc961f6f| uqshrn2 v28.8h, v21.4s, #1 -a62ce07e| uqsub d6, d5, d0 -0f2dae2e| uqsub v15.2s, v8.2s, v14.2s -b24b217e| uqxtn b18, h29 -f148216e| uqxtn2 v17.16b, v7.8h -7d15a42e| urhadd v29.2s, v11.2s, v4.2s -9055fc6e| urshl v16.2d, v12.2d, v28.2d -eb275e7f| urshr d11, d31, #34 -c0347c7f| ursra d0, d6, #4 -fe44e97e| ushl d30, d7, d9 -fa47e86e| ushl v26.2d, v31.2d, v8.2d -95a7262f| ushll v21.2d, v28.2s, #6 -9ca7096f| ushll2 v28.8h, v28.16b, #1 -8a07527f| ushr d10, d28, #46 -c7076b6f| ushr v7.2d, v30.2d, #21 -8d39e07e| usqadd d13, d12 -f716727f| usra d23, d23, #14 -3f14066f| bic v31.4s, #0xc1 -b423ac2e| usubl v20.2d, v29.2s, v12.2s -7c22736e| usubl2 v28.4s, v19.8h, v19.8h -76317d2e| usubw v22.4s, v11.4s, v29.4h -8f302a6e| usubw2 v15.8h, v4.8h, v10.16b -c5a4286f| ushll2 v5.2d, v6.4s, #8 -d3198c0e| uzp1 v19.2s, v14.2s, v12.2s -c05bdb4e| uzp2 v0.2d, v30.2d, v27.2d -362b610e| xtn v22.4h, v25.4s -0c29214e| xtn2 v12.16b, v8.8h -2b39c64e| zip1 v11.2d, v9.2d, v6.2d -9500091a| adc w21, w4, w9 -c2001a9a| adc x2, x6, x26 -6a02163a| adcs w10, w19, w22 -0c0118ba| adcs x12, x8, x24 -b1c42b0b| add w17, w5, w11, sxtw #1 -bf15368b| add sp, x13, w22, uxtb #5 -be1f468b| add x30, x29, x6, lsr #7 -8f51352b| adds w15, w12, w21, uxtw #4 -97043eab| adds x23, x4, w30, uxtb #1 -09b00931| adds w9, w0, #0x26c -4de204ab| adds x13, x18, x4, lsl #56 -bba87030| adr x27, .+0xe1515 -a9bf40d0| adrp x9, .+0x817f6000 -f6b60912| and w22, w23, #0xff9fff9f -a6d13b92| and x6, x13, #0xe3e3e3e3e3e3e3e3 -1cc0138a| and x28, x0, x19, lsl #48 -73882072| ands w19, w3, #0x70007 -b5780af2| ands x21, x5, #0xffdfffffffdfffff -766c90ea| ands x22, x3, x16, asr #27 -a72ac31a| asr w7, w21, w3 -ff28d59a| asr xzr, x7, x21 -3e7f0913| asr w30, w25, #9 -bafd5493| asr x26, x13, #20 -302ad21a| asr w16, w17, w18 -602bd79a| asr x0, x27, x23 -4fa4df54| b.al .+0xfffffffffffbf488 -a2e9cf15| b .+0x73fa688 -eff373b3| bfxil x15, xzr, #51, #10 -9e3e7db3| bfi x30, x20, #3, #16 -87fa41b3| bfxil x7, x20, #1, #62 -b831f80a| bic w24, w13, w24, ror #12 -ffe0ae8a| bic xzr, x7, x14, asr #56 -7c2c276a| bics w28, w3, w7, lsl #11 -ccf2fbea| bics x12, x22, x27, ror #60 -722cd195| bl .+0x744b1c8 -20003fd6| blr x1 -e0021fd6| br x23 -80db37d4| brk #0xbedc -f25a4335| cbnz w18, .+0x86b5c -5d5376b5| cbnz x29, .+0xeca68 -5ce56834| cbz w28, .+0xd1ca8 -29b08cb4| cbz x9, .+0xfffffffffff19604 -e048533a| ccmn w7, #0x13, #0x0, mi -e7da4fba| ccmn x23, #0xf, #0x7, le -67f2583a| ccmn w19, w24, #0x7, al -60a05aba| ccmn x3, x26, #0x0, ge -6a3b517a| ccmp w27, #0x11, #0xa, cc -8a4b55fa| ccmp x28, #0x15, #0xa, mi -ed934b7a| ccmp wzr, w11, #0xd, ls -24414ffa| ccmp x9, x15, #0x4, mi -0e169c1a| csinc w14, w16, w28, ne -8264949a| csinc x2, x4, x20, vs -b363935a| csinv w19, w29, w19, vs -ff619dda| csinv xzr, x15, x29, vs -5f3703d5| clrex #0x7 -0017c05a| cls w0, w24 -8216c0da| cls x2, x20 -3310c05a| clz w19, w1 -6e13c0da| clz x14, x27 -7fd02b2b| cmn w3, w11, sxtw #4 -5f3928ab| cmn x10, w8, uxth #6 -1fb92cb1| cmn x8, #0xb2e -ff164eab| cmn x23, x14, lsr #5 -ff71256b| cmp w15, w5, uxtx #4 -df6034eb| cmp x6, x20, uxtx -ff776af1| cmp sp, #0xa9d, lsl #12 -80e4855a| csneg w0, w4, w5, al -da3490da| csneg x26, x6, x16, cc -af40c71a| crc32b w15, w5, w7 -c546cf1a| crc32h w5, w22, w15 -6148c01a| crc32w w1, w3, w0 -0f4eda9a| crc32x w15, w16, x26 -4950d01a| crc32cb w9, w2, w16 -8155c31a| crc32ch w1, w12, w3 -835ace1a| crc32cw w3, w20, w14 -f05fc59a| crc32cx w16, wzr, x5 -0ae3901a| csel w10, w24, w16, al -ed51969a| csel x13, x15, x22, pl -ee679f1a| cset w14, vc -ed579f9a| cset x13, mi -f2539f5a| csetm w18, mi -ffe39fda| csinv xzr, xzr, xzr, al -9d25941a| csinc w29, w12, w20, cs -afb7829a| csinc x15, x29, x2, lt -7602895a| csinv w22, w19, w9, eq -011394da| csinv x1, x24, x20, ne -68b7935a| csneg w8, w27, w19, lt -a32784da| csneg x3, x29, x4, cs -8159a6d4| dcps1 #0x32cc -c2d9aad4| dcps2 #0x56ce -63ceb7d4| dcps3 #0xbe73 -bf3903d5| dmb ishld -e003bfd6| drps -9f3603d5| dsb nshst -fc76a9ca| eon x28, x23, x9, asr #29 -540f2352| eor w20, w26, #0xe0000001 -187e1ed2| eor x24, x16, #0xffffffffffffffff -fd37004a| eor w29, wzr, w0, lsl #13 -b8c542ca| eor x24, x13, x2, lsr #49 -e0039fd6| eret -5f26c193| extr xzr, x18, x1, #9 -7f2003d5| wfi -ff2a03d5| hint #0x57 -804a59d4| hlt #0xca54 -df3003d5| isb #0x0 -10fcdf88| ldar w16, [x0] -fafcdfc8| ldar x26, [x7] -30fedf08| ldarb w16, [x17] -63fedf48| ldarh w3, [x19] -82ba7f88| ldaxp w2, w14, [x20] -d6917fc8| ldaxp x22, x4, [x14] -59ff5f88| ldaxr w25, [x26] -fefe5fc8| ldaxr x30, [x23] -a0fc5f08| ldaxrb w0, [x5] -fafd5f48| ldaxrh w26, [x15] -b8804428| ldnp w24, w0, [x5,#36] -93e969a8| ldnp x19, x26, [x12,#-360] -caccef28| ldp w10, w19, [x6],#-132 -7365c3a8| ldp x19, x25, [x11],#48 -3106ca29| ldp w17, w1, [x17,#80]! -0c02f7a9| ldp x12, x0, [x16,#-144]! -41af6529| ldp w1, w11, [x26,#-212] -706b65a9| ldp x16, x26, [x27,#-432] -746ecf68| ldpsw x20, x27, [x19],#120 -c051c669| ldpsw x0, x20, [x14,#48]! -aded5b69| ldpsw x13, x27, [x13,#220] -990457b8| ldr w25, [x4],#-144 -bbd556f8| ldr x27, [x13],#-147 -a45c51b8| ldr w4, [x5,#-235]! -344c41f8| ldr x20, [x1,#20]! -2d8755b9| ldr w13, [x25,#5508] -56e360f9| ldr x22, [x26,#16832] -1739b718| ldr w23, .+0xfffffffffff6e720 -97b91c58| ldr x23, .+0x39730 -3b264e38| ldrb w27, [x17],#226 -898f5738| ldrb w9, [x28,#-136]! -c44e6839| ldrb w4, [x22,#2579] -2d687738| ldrb w13, [x1,x23] -4d475978| ldrh w13, [x26],#-108 -39de5278| ldrh w25, [x17,#-211]! -9cc54879| ldrh w28, [x12,#1122] -87fb6978| ldrh w7, [x28,x9,sxtx #1] -3967cb38| ldrsb w25, [x25],#182 -abf69438| ldrsb x11, [x21],#-177 -159ed138| ldrsb w21, [x16,#-231]! -b63e8038| ldrsb x22, [x21,#3]! -4491c939| ldrsb w4, [x10,#612] -497e8039| ldrsb x9, [x18,#31] -7d6bf638| ldrsb w29, [x27,x22] -e578ba38| ldrsb x5, [x7,x26,lsl #0] -9f06ca78| ldrsh wzr, [x20],#160 -15c59d78| ldrsh x21, [x8],#-36 -c07fd278| ldrsh w0, [x30,#-217]! -bdec9278| ldrsh x29, [x5,#-210]! -10e2c979| ldrsh w16, [x16,#1264] -54d29d79| ldrsh x20, [x18,#3816] -eb9484b8| ldrsw x11, [x7],#73 -ba2e8ab8| ldrsw x26, [x21,#162]! -ac7f8ab9| ldrsw x12, [x29,#2684] -9466e898| ldrsw x20, .+0xfffffffffffd0cd0 -a359b3b8| ldrsw x3, [x13,w19,uxtw #2] -f8b941b8| ldtr w24, [x15,#27] -fc0a4ef8| ldtr x28, [x23,#224] -60d84638| ldtrb w0, [x3,#109] -44685978| ldtrh w4, [x2,#-106] -5379dc38| ldtrsb w19, [x10,#-57] -ade99538| ldtrsb x13, [x13,#-162] -905ac078| ldtrsh w16, [x20,#5] -10898478| ldtrsh x16, [x8,#72] -37188eb8| ldtrsw x23, [x1,#225] -992351b8| ldur w25, [x28,#-238] -c9f155f8| ldur x9, [x14,#-161] -76e14e38| ldurb w22, [x11,#238] -47b24478| ldurh w7, [x18,#75] -4020da38| ldursb w0, [x2,#-94] -0dd09e38| ldursb x13, [x0,#-19] -8f81d478| ldursh w15, [x12,#-184] -96918378| ldursh x22, [x12,#57] -b2e383b8| ldursw x18, [x29,#62] -d3717f88| ldxp w19, w28, [x14] -cb677fc8| ldxp x11, x25, [x30] -ed7c5f88| ldxr w13, [x7] -aa7d5fc8| ldxr x10, [x13] -1c7d5f08| ldxrb w28, [x8] -de7f5f48| ldxrh w30, [x30] -1622dc1a| lsl w22, w16, w28 -cd20d59a| lsl x13, x6, x21 -882957d3| ubfiz x8, x12, #41, #11 -3320cc1a| lsl w19, w1, w12 -7320de9a| lsl x19, x3, x30 -af25d31a| lsr w15, w13, w19 -e426c39a| lsr x4, x23, x3 -e87f0653| lsr w8, wzr, #6 -85fe5fd3| lsr x5, x20, #31 -0025dc1a| lsr w0, w8, w28 -6e27c79a| lsr x14, x27, x7 -6d69111b| madd w13, w11, w17, w26 -245d0d9b| madd x4, x9, x13, x23 -85fe1f1b| mneg w5, w20, wzr -9bfc199b| mneg x27, x4, x25 -13000011| add w19, w0, #0x0 -e3000091| add x3, x7, #0x0 -986c9e12| mov w24, #0xffff0c9b -cb24f092| mov x11, #0x7ed9ffffffffffff -3cbb88d2| mov x28, #0x45d9 -e4170232| mov w4, #0xc000000f -fe636bb2| mov x30, #0x3fffffe00000 -ed031b2a| mov w13, w27 -fb0308aa| mov x27, x8 -be3ed1f2| movk x30, #0x89f5, lsl #32 -e0a08312| mov w0, #0xffffe2f8 -a1a6e592| mov x1, #0xd2caffffffffffff -5260f0d2| mov x18, #0x8302000000000000 -a60739d5| mrs x6, s3_1_c0_c7_5 -281a1ed5| msr s3_6_c1_c10_1, x8 -10f31b1b| msub w16, w24, w27, w28 -46b41a9b| msub x6, x2, x26, x13 -ec7f041b| mul w12, wzr, w4 -147f009b| mul x20, x24, x0 -f67f692a| mvn w22, w9, lsr #31 -f2a3f7aa| mvn x18, x23, ror #40 -fe8b0bcb| neg x30, x11, lsl #34 -fef710eb| negs x30, x16, lsl #61 -e0031b5a| ngc w0, w27 -e0031dda| ngc x0, x29 -f003167a| ngcs w16, w22 -e60302fa| ngcs x6, x2 -1f2003d5| nop -2f51732a| orn w15, w9, w19, lsr #20 -9b0facaa| orn x27, x28, x12, asr #3 -efa40032| orr w15, w7, #0x3ff03ff -3a0b19b2| orr x26, x25, #0x38000000380 -4b9ec4aa| orr x11, x18, x4, ror #39 -f5eaa2f9| prfm pstl3strm, [x23,#17872] -731df8d8| prfm pstl2strm, .+0xffffffffffff03ac -85c194f8| prfum pldl3strm, [x12,#-180] -c303c05a| rbit w3, w30 -3000c0da| rbit x16, x1 -20025fd6| ret x17 -ec08c05a| rev w12, w7 -180cc0da| rev x24, x0 -4b07c05a| rev16 w11, w26 -7805c0da| rev16 x24, x11 -ea08c0da| rev32 x10, x7 -a90fc0da| rev x9, x29 -fd788213| extr w29, w7, w2, #30 -e1a0cc93| extr x1, x7, x12, #40 -792fdc1a| ror w25, w27, w28 -2b2cc39a| ror x11, x1, x3 -7e2ec71a| ror w30, w19, w7 -392edd9a| ror x25, x17, x29 -47020a5a| sbc w7, w18, w10 -b7021dda| sbc x23, x21, x29 -7800197a| sbcs w24, w3, w25 -1e0203fa| sbcs x30, x16, x3 -a6b07393| sbfiz x6, x5, #13, #45 -94957d93| sbfiz x20, x12, #3, #38 -ecff5e93| asr x12, xzr, #30 -a50ddb1a| sdiv w5, w13, w27 -7c0ec89a| sdiv x28, x19, x8 -9f2003d5| sev -bf2003d5| sevl -5953349b| smaddl x25, w26, w20, x20 -bafc399b| smnegl x26, w5, w25 -a5cc289b| smsubl x5, w5, w8, x19 -297c579b| smulh x9, x1, x23 -5e7e299b| smull x30, w18, w9 -29fd9f88| stlr w9, [x9] -fdff9fc8| stlr x29, [sp] -defe9f08| stlrb w30, [x22] -2ffc9f48| stlrh w15, [x1] -c1e12f88| stlxp w15, w1, w24, [x14] -62aa2ec8| stlxp w14, x2, x10, [x19] -b9fe1b88| stlxr w27, w25, [x21] -cbff14c8| stlxr w20, x11, [x30] -edfc0608| stlxrb w6, w13, [x7] -8dfe1048| stlxrh w16, w13, [x20] -1a323628| stnp w26, w12, [x16,#-80] -b3cb3da8| stnp x19, x18, [x29,#-40] -52398828| stp w18, w14, [x10],#64 -434c95a8| stp x3, x19, [x2],#336 -2badbd29| stp w11, w11, [x9,#-20]! -daeabaa9| stp x26, x26, [x22,#-88]! -9bc91529| stp w27, w18, [x12,#172] -eea024a9| stp x14, x8, [x7,#-440] -fec514b8| str w30, [x15],#-180 -d21508f8| str x18, [x14],#129 -7c5c0ab8| str w28, [x3,#165]! -6dec1ff8| str x13, [x3,#-2]! -35681eb9| str w21, [x1,#7784] -374d35f9| str x23, [x9,#27288] -1dd83df8| str x29, [x0,w29,sxtw #3] -1b441b38| strb w27, [x0],#-76 -d69c0f38| strb w22, [x6,#249]! -b7ce0d39| strb w23, [x21,#883] -2b7b3938| strb w11, [x25,x25,lsl #0] -4e771d78| strh w14, [x26],#-41 -64cc0b78| strh w4, [x3,#188]! -07b90279| strh w7, [x8,#348] -2eb91cb8| sttr w14, [x9,#-53] -373a1bf8| sttr x23, [x17,#-77] -d0881138| sttrb w16, [x6,#-232] -941a0e78| sttrh w20, [x20,#225] -da3000b8| stur w26, [x6,#3] -5e921cf8| stur x30, [x18,#-55] -09821e38| sturb w9, [x16,#-24] -67d21c78| sturh w7, [x19,#-51] -0c352188| stxp w1, w12, w13, [x8] -146d26c8| stxp w6, x20, x27, [x8] -837d1888| stxr w24, w3, [x12] -f17f1bc8| stxr w27, x17, [sp] -3b7d0f08| stxrb w15, w27, [x9] -6b7c1f48| stxrh wzr, w11, [x3] -70ab204b| sub w16, w27, w0, sxth #2 -303b20cb| sub x16, x25, w0, uxth #6 -69a909d1| sub x9, x11, #0x26a -87384e4b| sub w7, w4, w14, lsr #14 -ec720ecb| sub x12, x23, x14, lsl #28 -2b58256b| subs w11, w1, w5, uxtw #6 -59e93ceb| subs x25, x10, x28, sxtx #2 -9e7b6ff1| subs x30, x28, #0xbde, lsl #12 -3e6d196b| subs w30, w9, w25, lsl #27 -54029ceb| subs x20, x18, x28, asr #0 -c1f91cd4| svc #0xe7ce -091e0013| sxtb w9, w16 -7f1c4093| sxtb xzr, w3 -b53c0013| sxth w21, w5 -773e4093| sxth x23, w19 -707f4093| sxtw x16, w27 -df3a2dd5| sysl xzr, #5, C3, C10, #6 -607f3137| tbnz w0, #6, .+0x2fec -3b700c36| tbz w27, #1, .+0xffffffffffff8e04 -5f612972| tst w10, #0xff80ffff -bf2007f2| tst x5, #0xfe000003fe000003 -1f11136a| tst w8, w19, lsl #4 -5fd10dea| tst x10, x13, lsl #52 -5c826bd3| ubfiz x28, x18, #21, #33 -ad690c53| ubfx w13, w13, #12, #15 -3a0f41d3| ubfx x26, x25, #1, #3 -6a197dd3| ubfiz x10, x11, #3, #7 -520aca1a| udiv w18, w18, w10 -0809c89a| udiv x8, x8, x8 -4e55a69b| umaddl x14, w10, w6, x21 -99fda59b| umnegl x25, w12, w5 -1adabb9b| umsubl x26, w16, w27, x22 -177ddf9b| umulh x23, x8, xzr -1d7da49b| umull x29, w8, w4 -5a1c0053| uxtb w26, w2 -603c0053| uxth w0, w3 -5f2003d5| wfe -7f2003d5| wfi -3f2003d5| yield -02b8600e| abs v2.4h, v0.4h -c886f94e| add v8.2d, v22.2d, v25.2d -5642740e| addhn v22.4h, v18.4s, v20.4s -3743294e| addhn2 v23.16b, v25.8h, v9.8h -2abef74e| addp v10.2d, v17.2d, v23.2d -18bbb14e| addv s24, v24.4s -1a59284e| aesd v26.16b, v8.16b -cf48284e| aese v15.16b, v6.16b -557a284e| aesimc v21.16b, v18.16b -2f6b284e| aesmc v15.16b, v25.16b -cf1c324e| and v15.16b, v6.16b, v18.16b -c9c6032f| mvni v9.2s, #0x76, msl #8 -f1a7012f| mvni v17.4h, #0x3f, lsl #8 -691d600e| bic v9.8b, v11.8b, v0.8b -c31dfe6e| bif v3.16b, v14.16b, v30.16b -c81cb66e| bit v8.16b, v6.16b, v22.16b -701f6b2e| bsl v16.8b, v27.8b, v11.8b -7c4b600e| cls v28.4h, v27.4h -ce4a602e| clz v14.4h, v22.4h -d08de37e| cmeq d16, d14, d3 -e98db96e| cmeq v9.4s, v15.4s, v25.4s -6e99a00e| cmeq v14.2s, v11.2s, #0 -933d304e| cmge v19.16b, v12.16b, v16.16b -0e88e07e| cmge d14, d0, #0 -9b89202e| cmge v27.8b, v12.8b, #0 -6a372f4e| cmgt v10.16b, v27.16b, v15.16b -128be05e| cmgt d18, d24, #0 -9189a00e| cmgt v17.2s, v12.2s, #0 -f734e67e| cmhi d23, d7, d6 -4d36b82e| cmhi v13.2s, v18.2s, v24.2s -003e2b2e| cmhs v0.8b, v16.8b, v11.8b -729ae07e| cmle d18, d19, #0 -3699206e| cmle v22.16b, v9.16b, #0 -d1ab600e| cmlt v17.4h, v30.4h, #0 -ad8e244e| cmtst v13.16b, v21.16b, v4.16b -ef06035e| mov b15, v23.b[1] -5007040e| dup v16.2s, v26.s[0] -890e0b4e| dup v9.16b, w20 -951c276e| eor v21.16b, v4.16b, v7.16b -98d4bf7e| fabd s24, s4, s31 -bcd4ad6e| fabd v28.4s, v5.4s, v13.4s -78f8e04e| fabs v24.2d, v3.2d -8cc0201e| fabs s12, s4 -9ac1601e| fabs d26, d12 -3aee307e| facge s26, s17, s16 -41ed352e| facge v1.2s, v10.2s, v21.2s -35edaf7e| facgt s21, s9, s15 -02efe36e| facgt v2.2d, v24.2d, v3.2d -21d6664e| fadd v1.2d, v17.2d, v6.2d -5e282e1e| fadd s30, s2, s14 -4d2a621e| fadd d13, d18, d2 -7cd8707e| faddp d28, v3.2d -5dd4386e| faddp v29.4s, v2.4s, v24.4s -69363e1e| fccmp s19, s30, #0x9, cc -c8b56a1e| fccmp d14, d10, #0x8, lt -d1f5271e| fccmpe s14, s7, #0x1, al -3645751e| fccmpe d9, d21, #0x6, mi -21e6735e| fcmeq d1, d17, d19 -b6dba05e| fcmeq s22, s29, #0 -49d8a04e| fcmeq v9.4s, v2.4s, #0 -2ee5667e| fcmge d14, d9, d6 -4ee7766e| fcmge v14.2d, v26.2d, v22.2d -4bcba07e| fcmge s11, s26, #0 -11c9a02e| fcmge v17.2s, v8.2s, #0 -81e4a97e| fcmgt s1, s4, s9 -d3e4b56e| fcmgt v19.4s, v6.4s, v21.4s -efc8e05e| fcmgt d15, d7, #0 -3ec9e04e| fcmgt v30.2d, v9.2d, #0 -38d9a07e| fcmle s24, s9, #0 -7dd9a02e| fcmle v29.2s, v11.2s, #0 -bae8a05e| fcmlt s26, s5, #0 -a2eaa04e| fcmlt v2.4s, v21.4s, #0 -60212f1e| fcmp s11, s15 -a8233a1e| fcmp s29, #0 -a020641e| fcmp d5, d4 -e820701e| fcmp d7, #0 -b0203a1e| fcmpe s5, s26 -78203d1e| fcmpe s3, #0 -70226e1e| fcmpe d19, d14 -3821601e| fcmpe d9, #0 -06de241e| fcsel s6, s16, s4, le -51de761e| fcsel d17, d18, d22, le -5e42e21e| fcvt s30, h18 -b9c1e21e| fcvt d25, h13 -58c0231e| fcvt h24, s2 -9bc2221e| fcvt d27, s20 -2bc3631e| fcvt h11, d25 -f640621e| fcvt s22, d7 -caca215e| fcvtas s10, s22 -5ec9210e| fcvtas v30.2s, v10.2s -0302241e| fcvtas w3, s16 -c103249e| fcvtas x1, s30 -3003641e| fcvtas w16, d25 -6201649e| fcvtas x2, d11 -d3c9217e| fcvtau s19, s14 -3bc8212e| fcvtau v27.2s, v1.2s -0802251e| fcvtau w8, s16 -5f02259e| fcvtau xzr, s18 -2801651e| fcvtau w8, d9 -f200659e| fcvtau x18, d7 -d179610e| fcvtl v17.2d, v14.2s -347b614e| fcvtl2 v20.2d, v25.4s -08b9615e| fcvtms d8, d8 -f000301e| fcvtms w16, s7 -8002309e| fcvtms x0, s20 -5202701e| fcvtms w18, d18 -c803709e| fcvtms x8, d30 -1cbb217e| fcvtmu s28, s24 -d1b9212e| fcvtmu v17.2s, v14.2s -2e02311e| fcvtmu w14, s17 -d003319e| fcvtmu x16, s30 -ce03711e| fcvtmu w14, d30 -0801719e| fcvtmu x8, d8 -4c6b210e| fcvtn v12.4h, v26.4s -6869214e| fcvtn2 v8.8h, v11.4s -2faa615e| fcvtns d15, d17 -33aa614e| fcvtns v19.2d, v17.2d -d303201e| fcvtns w19, s30 -4001209e| fcvtns x0, s10 -b202601e| fcvtns w18, d21 -c603609e| fcvtns x6, d30 -8ea8217e| fcvtnu s14, s4 -cc01211e| fcvtnu w12, s14 -3a00219e| fcvtnu x26, s1 -2002611e| fcvtnu w0, d17 -ff01619e| fcvtnu xzr, d15 -1baba15e| fcvtps s27, s24 -9d00281e| fcvtps w29, s4 -eb02289e| fcvtps x11, s23 -3503681e| fcvtps w21, d25 -4301689e| fcvtps x3, d10 -63aba17e| fcvtpu s3, s27 -caa8a12e| fcvtpu v10.2s, v6.2s -7702291e| fcvtpu w23, s19 -b503299e| fcvtpu x21, s29 -2f03691e| fcvtpu w15, d25 -5b01699e| fcvtpu x27, d10 -7369617e| fcvtxn s19, d11 -6b6b612e| fcvtxn v11.2s, v27.2d -f268616e| fcvtxn2 v18.4s, v7.2d -bcff7b5f| fcvtzs d28, d29, #5 -19bbe15e| fcvtzs d25, d24 -c6b9e14e| fcvtzs v6.2d, v14.2d -e9fc189e| fcvtzs x9, s7, #1 -6661589e| fcvtzs x6, d11, #40 -9702381e| fcvtzs w23, s20 -ed00389e| fcvtzs x13, s7 -3a01781e| fcvtzs w26, d9 -8801789e| fcvtzs x8, d12 -a5ff2e2f| fcvtzu v5.2s, v29.2s, #18 -5bbbe17e| fcvtzu d27, d26 -1a74199e| fcvtzu x26, s0, #35 -e391599e| fcvtzu x3, d15, #28 -b203391e| fcvtzu w18, s29 -ed01399e| fcvtzu x13, s15 -c200791e| fcvtzu w2, d6 -5402799e| fcvtzu x20, d18 -1aff2b6e| fdiv v26.4s, v24.4s, v11.4s -171a391e| fdiv s23, s16, s25 -7d196b1e| fdiv d29, d11, d11 -f9721f1f| fmadd s25, s23, s31, s28 -7070551f| fmadd d16, d3, d21, d28 -05f7624e| fmax v5.2d, v24.2d, v2.2d -88493d1e| fmax s8, s12, s29 -4a496d1e| fmax d10, d10, d13 -5068321e| fmaxnm s16, s2, s18 -a66a761e| fmaxnm d6, d21, d22 -0ccb707e| fmaxnmp d12, v24.2d -6ec66f6e| fmaxnmp v14.2d, v19.2d, v15.2d -41f8307e| fmaxp s1, v2.2s -05f72a6e| fmaxp v5.4s, v24.4s, v10.4s -aa5b231e| fmin s10, s29, s3 -d6596a1e| fmin d22, d14, d10 -15c4b24e| fminnm v21.4s, v0.4s, v18.4s -6279281e| fminnm s2, s11, s8 -af7b6a1e| fminnm d15, d29, d10 -7dc9f07e| fminnmp d29, v11.2d -dfc6bb6e| fminnmp v31.4s, v22.4s, v27.4s -56c8b06e| fminnmv s22, v2.4s -0ff8f07e| fminp d15, v0.2d -a211c55f| fmla d2, d13, v5.d[0] -0dce224e| fmla v13.4s, v16.4s, v2.4s -4c5ba15f| fmls s12, s26, v1.s[3] -8953ba0f| fmls v9.2s, v28.2s, v26.s[1] -09cdbd4e| fmls v9.4s, v8.4s, v29.4s -97f7044f| fmov v23.4s, #-7.000000000000000000e+00 -dff4006f| fmov v31.2d, #2.750000000000000000e+00 -c543201e| fmov s5, s30 -1740601e| fmov d23, d0 -a100271e| fmov s1, w5 -f102261e| fmov w17, s23 -b302679e| fmov d19, x21 -4001af9e| fmov v0.d[1], x10 -db01669e| fmov x27, d14 -8300ae9e| fmov x3, v4.d[1] -1870331e| fmov s24, #-6.750000000000000000e+00 -08507d1e| fmov d8, #-8.125000000000000000e-01 -5cbf0c1f| fmsub s28, s26, s12, s15 -89e3501f| fmsub d9, d28, d16, d24 -3a93c95f| fmul d26, d25, v9.d[0] -5a90ae4f| fmul v26.4s, v2.4s, v14.s[1] -ba0a2f1e| fmul s26, s21, s15 -5b0a7c1e| fmul d27, d18, d28 -e991c07f| fmulx d9, d15, v0.d[0] -be989c6f| fmulx v30.4s, v5.4s, v28.s[2] -d3dc7a5e| fmulx d19, d6, d26 -d4de7f4e| fmulx v20.2d, v22.2d, v31.2d -8e41211e| fneg s14, s12 -dc42611e| fneg d28, d22 -cb362e1f| fnmadd s11, s22, s14, s13 -6441791f| fnmadd d4, d11, d25, d16 -36ed291f| fnmsub s22, s9, s9, s27 -35b27a1f| fnmsub d21, d17, d26, d12 -9388301e| fnmul s19, s4, s16 -c088711e| fnmul d0, d6, d17 -e8daa15e| frecpe s8, s23 -a9fc395e| frecps s9, s5, s25 -49fe284e| frecps v9.4s, v18.4s, v8.4s -85f8a15e| frecpx s5, s4 -ee43261e| frinta s14, s31 -7042661e| frinta d16, d19 -2b98a16e| frinti v11.4s, v1.4s -fac2271e| frinti s26, s23 -76c3671e| frinti d22, d27 -7942251e| frintm s25, s19 -8742651e| frintm d7, d20 -fc8a214e| frintn v28.4s, v23.4s -c041241e| frintn s0, s14 -b241641e| frintn d18, d13 -c588a14e| frintp v5.4s, v6.4s -6ec2241e| frintp s14, s19 -ddc0641e| frintp d29, d6 -1a9a616e| frintx v26.2d, v16.2d -7c41271e| frintx s28, s11 -d243671e| frintx d18, d30 -b49aa14e| frintz v20.4s, v21.4s -5bc0251e| frintz s27, s2 -43c1651e| frintz d3, d10 -3bdba17e| frsqrte s27, s25 -9ddba12e| frsqrte v29.2s, v28.2s -1ffee65e| frsqrts d31, d16, d6 -8bfdb54e| frsqrts v11.4s, v12.4s, v21.4s -33c1211e| fsqrt s19, s9 -a5c0611e| fsqrt d5, d5 -a2d7b74e| fsub v2.4s, v29.4s, v23.4s -a338301e| fsub s3, s5, s16 -e139681e| fsub d1, d15, d8 -96170e6e| mov v22.h[3], v28.h[1] -791c014e| mov v25.b[0], w3 -cf79404c| ld1 {v15.4s}, [x14] -75a6404c| ld1 {v21.8h, v22.8h}, [x19] -ed62404c| ld1 {v13.16b-v15.16b}, [x23] -392a400c| ld1 {v25.2s-v28.2s}, [x17] -cd7cdf4c| ld1 {v13.2d}, [x6],#16 -f677ce4c| ld1 {v22.8h}, [sp], x14 -d4a3df0c| ld1 {v20.8b, v21.8b}, [x30],#16 -8ba1d90c| ld1 {v11.8b, v12.8b}, [x12], x25 -396fdf0c| ld1 {v25.1d-v27.1d}, [x25],#24 -4c64db0c| ld1 {v12.4h-v14.4h}, [x2], x27 -3f2adf4c| ld1 {v31.4s, v0.4s, v1.4s, v2.4s}, [x17],#64 -b329ce4c| ld1 {v19.4s-v22.4s}, [x13], x14 -aa02400d| ld1 {v10.b}[0], [x21] -7980404d| ld1 {v25.s}[2], [x3] -5884404d| ld1 {v24.d}[1], [x2] -f203df4d| ld1 {v18.b}[8], [sp],#1 -3519c40d| ld1 {v21.b}[6], [x9], x4 -ed59df0d| ld1 {v13.h}[3], [x15],#2 -9e52d90d| ld1 {v30.h}[2], [x20], x25 -cd93df4d| ld1 {v13.s}[3], [x30],#4 -5982cb4d| ld1 {v25.s}[2], [x18], x11 -4f84df4d| ld1 {v15.d}[1], [x2],#8 -2d85d50d| ld1 {v13.d}[0], [x9], x21 -33c2400d| ld1r {v19.8b}, [x17] -e2c8df4d| ld1r {v2.4s}, [x7],#4 -83c2c44d| ld1r {v3.16b}, [x20], x4 -5487400c| ld2 {v20.4h, v21.4h}, [x26] -e08adf0c| ld2 {v0.2s, v1.2s}, [x23],#16 -768ac40c| ld2 {v22.2s, v23.2s}, [x19], x4 -4c0f604d| ld2 {v12.b, v13.b}[11], [x26] -e043604d| ld2 {v0.h, v1.h}[4], [sp] -c281600d| ld2 {v2.s, v3.s}[0], [x14] -e585600d| ld2 {v5.d, v6.d}[0], [x15] -2c1aff4d| ld2 {v12.b, v13.b}[14], [x17],#2 -820bfd4d| ld2 {v2.b, v3.b}[10], [x28], x29 -d593ff0d| ld2 {v21.s, v22.s}[1], [x30],#8 -6780ea0d| ld2 {v7.s, v8.s}[0], [x3], x10 -3484ff4d| ld2 {v20.d, v21.d}[1], [x1],#16 -6a86ee4d| ld2 {v10.d, v11.d}[1], [x19], x14 -e4c7604d| ld2r {v4.8h, v5.8h}, [sp] -69c8ff0d| ld2r {v9.2s, v10.2s}, [x3],#8 -52ccf30d| ld2r {v18.1d, v19.1d}, [x2], x19 -9e4b404c| ld3 {v30.4s, v31.4s, v0.4s}, [x28] -0440df4c| ld3 {v4.16b-v6.16b}, [x0],#48 -0f49cf0c| ld3 {v15.2s-v17.2s}, [x8], x15 -b22e400d| ld3 {v18.b-v20.b}[3], [x21] -9473400d| ld3 {v20.h-v22.h}[2], [x28] -1da0404d| ld3 {v29.s-v31.s}[2], [x0] -21a5404d| ld3 {v1.d-v3.d}[1], [x9] -3b23df0d| ld3 {v27.b-v29.b}[0], [x25],#3 -0937c60d| ld3 {v9.b-v11.b}[5], [x24], x6 -926bcb4d| ld3 {v18.h-v20.h}[5], [x28], x11 -f5a1df4d| ld3 {v21.s-v23.s}[2], [x15],#12 -dba3c44d| ld3 {v27.s-v29.s}[2], [x30], x4 -12a5df0d| ld3 {v18.d-v20.d}[0], [x8],#24 -daa7d30d| ld3 {v26.d-v28.d}[0], [x30], x19 -3beb400d| ld3r {v27.2s-v29.2s}, [x25] -cde4df4d| ld3r {v13.8h-v15.8h}, [x6],#6 -a4efc44d| ld3r {v4.2d-v6.2d}, [x29], x4 -fc0a400c| ld4 {v28.2s-v31.2s}, [x23] -ae05df0c| ld4 {v14.4h-v17.4h}, [x13],#32 -cb07c84c| ld4 {v11.8h-v14.8h}, [x30], x8 -1825604d| ld4 {v24.b-v27.b}[9], [x8] -2869604d| ld4 {v8.h-v11.h}[5], [x9] -07b2600d| ld4 {v7.s-v10.s}[1], [x16] -9fa4600d| ld4 {v31.d, v0.d, v1.d, v2.d}[0], [x4] -de22ff0d| ld4 {v30.b, v31.b, v0.b, v1.b}[0], [x22],#4 -6a36ed4d| ld4 {v10.b-v13.b}[13], [x19], x13 -23a2ff4d| ld4 {v3.s-v6.s}[2], [x17],#16 -22a0fe4d| ld4 {v2.s-v5.s}[2], [x1], x30 -7ca4ff4d| ld4 {v28.d-v31.d}[1], [x3],#32 -03a7ec4d| ld4 {v3.d-v6.d}[1], [x24], x12 -b9ee600d| ld4r {v25.1d-v28.1d}, [x21] -03e8ff0d| ld4r {v3.2s-v6.2s}, [x0],#16 -e7e3f24d| ld4r {v7.16b-v10.16b}, [sp], x18 -451a4e2c| ldnp s5, s6, [x18,#112] -01236f6c| ldnp d1, d8, [x24,#-272] -204041ac| ldnp q0, q16, [x1,#32] -1b21cc2c| ldp s27, s8, [x8],#96 -41ccc06c| ldp d1, d19, [x2],#8 -65b8e6ac| ldp q5, q14, [x3],#-816 -a58bed2d| ldp s5, s2, [x29,#-148]! -d8a3c46d| ldp d24, d8, [x30,#72]! -dc82c0ad| ldp q28, q0, [x22,#16]! -eda7782d| ldp s13, s9, [sp,#-60] -041b6c6d| ldp d4, d6, [x24,#-320] -17ea6bad| ldp q23, q26, [x16,#-656] -4e14433c| ldr b14, [x2],#49 -cd844e7c| ldr h13, [x6],#232 -99945dbc| ldr s25, [x4],#-39 -170556fc| ldr d23, [x8],#-160 -3115d53c| ldr q17, [x9],#-175 -3c6d403c| ldr b28, [x9,#6]! -f8fc527c| ldr h24, [x7,#-209]! -776c58bc| ldr s23, [x3,#-122]! -075f57fc| ldr d7, [x24,#-139]! -28cdc33c| ldr q8, [x9,#60]! -40a15f3d| ldr b0, [x10,#2024] -3b8c597d| ldr h27, [x1,#3270] -28f958bd| ldr s8, [x9,#6392] -852d6ffd| ldr d5, [x12,#24152] -e149ea3d| ldr q1, [x15,#43296] -807f7c1c| ldr s0, .+0xf8ff0 -e7a61c5c| ldr d7, .+0x394dc -261ec59c| ldr q6, .+0xfffffffffff8a3c4 -4bca773c| ldr b11, [x18,w23,sxtw] -8d69623c| ldr b13, [x12,x2] -cef8797c| ldr h14, [x6,x25,sxtx #1] -b7497bfc| ldr d23, [x13,w27,uxtw] -dbdbfc3c| ldr q27, [x30,w28,sxtw #4] -1a60553c| ldur b26, [x0,#-170] -74f3477c| ldur h20, [x27,#127] -f46249bc| ldur s20, [x23,#150] -b8015bfc| ldur d24, [x13,#-80] -3372de3c| ldur q19, [x17,#-25] -04972c0e| mla v4.8b, v24.8b, v12.8b -f0051b5e| mov b16, v15.b[13] -7f76146e| mov v31.s[2], v19.s[3] -6c1cb60e| orr v12.8b, v3.8b, v22.8b -ae3f1e0e| umov w14, v29.h[7] -f8e5004f| movi v24.16b, #0xf -0355010f| orr v3.2s, #0x28, lsl #16 -4825020f| movi v8.2s, #0x4a, lsl #8 -64d7040f| movi v4.2s, #0x9b, msl #16 -46e6062f| movi d6, #0xffff00ff0000ff00 -bde6056f| movi v29.2d, #0xff00ffff00ff00ff -789f350e| mul v24.8b, v27.8b, v21.8b -7b5b202e| mvn v27.8b, v27.8b -2dd4066f| mvni v13.4s, #0xc1, msl #16 -8266012f| mvni v2.2s, #0x34, lsl #24 -1025022f| mvni v16.2s, #0x48, lsl #8 -eabba06e| neg v10.4s, v31.4s -7e5a206e| mvn v30.16b, v19.16b -6a1fea0e| orn v10.8b, v27.8b, v10.8b -b406010f| movi v20.2s, #0x35 -f564040f| movi v21.2s, #0x87, lsl #24 -b21cb80e| orr v18.8b, v5.8b, v24.8b -2b437a2e| raddhn v11.4h, v25.4s, v26.4s -6d402c6e| raddhn2 v13.16b, v3.8h, v12.8h -655a606e| rbit v5.16b, v19.16b -5108202e| rev32 v17.8b, v2.8b -750a200e| rev64 v21.8b, v19.8b -f88f0b0f| rshrn v24.8b, v31.8h, #5 -8263236e| rsubhn2 v2.16b, v28.8h, v3.8h -787c320e| saba v24.8b, v3.8b, v18.8b -f551220e| sabal v21.8h, v15.8b, v2.8b -b5766d0e| sabd v21.4h, v21.4h, v13.4h -9270240e| sabdl v18.8h, v4.8b, v4.8b -4d71384e| sabdl2 v13.8h, v10.16b, v24.16b -8f6a600e| sadalp v15.2s, v20.4h -e501750e| saddl v5.4s, v15.4h, v21.4h -5202ab4e| saddl2 v18.2d, v18.4s, v11.4s -7029200e| saddlp v16.4h, v11.8b -3913710e| saddw v25.4s, v25.4s, v17.4h -d7e4575f| scvtf d23, d6, #41 -c6db215e| scvtf s6, s30 -17d8214e| scvtf v23.4s, v0.4s -62c4021e| scvtf s2, w3, #15 -f5cd421e| scvtf d21, w15, #13 -6128029e| scvtf s1, x3, #54 -9a7c429e| scvtf d26, x4, #33 -6102221e| scvtf s1, w19 -0b03621e| scvtf d11, w24 -ed01229e| scvtf s13, x15 -6f02629e| scvtf d15, x19 -ac03055e| sha1c q12, s29, v5.4s -e309285e| sha1h s3, s15 -2a221b5e| sha1m q10, s17, v27.4s -a013185e| sha1p q0, s29, v24.4s -6032005e| sha1su0 v0.4s, v19.4s, v0.4s -f918285e| sha1su1 v25.4s, v7.4s -fb50035e| sha256h2 q27, q7, v3.4s -6d421c5e| sha256h q13, q19, v28.4s -c12b285e| sha256su0 v1.4s, v30.4s -6362095e| sha256su1 v3.4s, v19.4s, v9.4s -a805bb0e| shadd v8.2s, v13.2s, v27.2s -783b616e| shll2 v24.4s, v27.8h, #16 -48841b0f| shrn v8.4h, v2.4s, #5 -a924bc4e| shsub v9.4s, v5.4s, v28.4s -1557717f| sli d21, d24, #49 -2a56456f| sli v10.2d, v17.2d, #5 -7c663b0e| smax v28.8b, v19.8b, v27.8b -b5a7694e| smaxp v21.8h, v29.8h, v9.8h -8ea8b04e| smaxv s14, v4.4s -936cb44e| smin v19.4s, v4.4s, v20.4s -15af7e4e| sminp v21.8h, v24.8h, v30.8h -3e81694e| smlal2 v30.4s, v9.8h, v9.8h -29a26d0e| smlsl v9.4s, v17.4h, v13.4h -442e0b4e| smov x4, v18.b[5] -e1a0540f| smull v1.4s, v7.4h, v4.h[1] -5eaa604f| smull2 v30.4s, v18.8h, v0.h[6] -4cc32d4e| smull2 v12.8h, v26.16b, v13.16b -1e7a205e| sqabs b30, b16 -e67ae04e| sqabs v6.2d, v23.2d -a80ded5e| sqadd d8, d13, d13 -e60dae4e| sqadd v6.4s, v15.4s, v14.4s -fe33570f| sqdmlal v30.4s, v31.4h, v7.h[1] -ee90b64e| sqdmlal2 v14.2d, v7.4s, v22.4s -ce79a05f| sqdmlsl d14, s14, v0.s[3] -d5b2a14e| sqdmlsl2 v21.2d, v22.4s, v1.4s -51cb575f| sqdmulh h17, h26, v7.h[5] -0cb5b54e| sqdmulh v12.4s, v8.4s, v21.4s -95d0760e| sqdmull v21.4s, v4.4h, v22.4h -a1d37c4e| sqdmull2 v1.4s, v29.8h, v28.8h -d679e07e| sqneg d22, d14 -3f78602e| sqneg v31.4h, v1.4h -80b4717e| sqrdmulh h0, h4, h17 -4cb76e2e| sqrdmulh v12.4h, v26.4h, v14.4h -aa5ce95e| sqrshl d10, d5, d9 -d25fb74e| sqrshl v18.4s, v30.4s, v23.4s -998c0c6f| sqrshrun2 v25.16b, v4.8h, #4 -4375605f| sqshl d3, d10, #32 -de743f0f| sqshl v30.2s, v6.2s, #31 -a84d675e| sqshl h8, h13, h7 -674dbe4e| sqshl v7.4s, v11.4s, v30.4s -5165587f| sqshlu d17, d10, #24 -b464042f| mvni v20.2s, #0x85, lsl #24 -2086207f| sqshrun s0, d17, #32 -8a851a2f| sqshrun v10.4h, v12.4s, #6 -652c255e| sqsub b5, b3, b5 -632eb30e| sqsub v3.2s, v19.2s, v19.2s -104ba15e| sqxtn s16, d24 -2249214e| sqxtn2 v2.16b, v9.8h -1c14360e| srhadd v28.8b, v0.8b, v22.8b -8044076f| mvni v0.4s, #0xe4, lsl #16 -3a57ed5e| srshl d26, d25, d13 -2c56ef4e| srshl v12.2d, v17.2d, v15.2d -9627140f| srshr v22.4h, v28.4h, #12 -bd37565f| srsra d29, d29, #42 -db34594f| srsra v27.2d, v6.2d, #39 -4546a10e| sshl v5.2s, v18.2s, v1.2s -aca7020f| movi v12.4h, #0x5d, lsl #8 -e004675f| sshr d0, d7, #25 -e5057f4f| sshr v5.2d, v15.2d, #1 -1b15595f| ssra d27, d8, #39 -ba15250f| ssra v26.2s, v13.2s, #27 -3620330e| ssubl v22.8h, v1.8b, v19.8b -c1316d4e| ssubw2 v1.4s, v14.4s, v13.8h -8a76000c| st1 {v10.4h}, [x20] -10a5004c| st1 {v16.8h, v17.8h}, [x8] -ab6b004c| st1 {v11.4s-v13.4s}, [x29] -8d2b004c| st1 {v13.4s-v16.4s}, [x28] -8d7d9f0c| st1 {v13.1d}, [x12],#8 -eb73840c| st1 {v11.8b}, [sp], x4 -48a69f4c| st1 {v8.8h, v9.8h}, [x18],#32 -dca19b4c| st1 {v28.16b, v29.16b}, [x14], x27 -7c699f4c| st1 {v28.4s-v30.4s}, [x11],#48 -da6d870c| st1 {v26.1d-v28.1d}, [x14], x7 -7f279f0c| st1 {v31.4h, v0.4h, v1.4h, v2.4h}, [x27],#32 -4421810c| st1 {v4.8b-v7.8b}, [x10], x1 -a615004d| st1 {v6.b}[13], [x13] -ce92000d| st1 {v14.s}[1], [x22] -c985000d| st1 {v9.d}[0], [x14] -380f9f0d| st1 {v24.b}[3], [x25],#1 -de0b944d| st1 {v30.b}[10], [x30], x20 -3141880d| st1 {v17.h}[0], [x9], x8 -8e939f0d| st1 {v14.s}[1], [x28],#4 -c890870d| st1 {v8.s}[1], [x6], x7 -9f869f4d| st1 {v31.d}[1], [x20],#8 -38879b4d| st1 {v24.d}[1], [x25], x27 -4181004c| st2 {v1.16b, v2.16b}, [x10] -d6819f0c| st2 {v22.8b, v23.8b}, [x14],#16 -bf808a0c| st2 {v31.8b, v0.8b}, [x5], x10 -bd0e204d| st2 {v29.b, v30.b}[11], [x21] -4551204d| st2 {v5.h, v6.h}[6], [x10] -9982204d| st2 {v25.s, v26.s}[2], [x20] -ea86200d| st2 {v10.d, v11.d}[0], [x23] -7b02bf0d| st2 {v27.b, v28.b}[0], [x19],#2 -c000a04d| st2 {v0.b, v1.b}[8], [x6], x0 -fb59a40d| st2 {v27.h, v28.h}[3], [x15], x4 -f880bf0d| st2 {v24.s, v25.s}[0], [x7],#8 -f582ac4d| st2 {v21.s, v22.s}[2], [x23], x12 -9c86bf4d| st2 {v28.d, v29.d}[1], [x20],#16 -3386b14d| st2 {v19.d, v20.d}[1], [x17], x17 -c0469f0c| st3 {v0.4h-v2.4h}, [x22],#24 -2243820c| st3 {v2.8b-v4.8b}, [x25], x2 -c629000d| st3 {v6.b-v8.b}[2], [x14] -4f6a004d| st3 {v15.h-v17.h}[5], [x18] -72a0004d| st3 {v18.s-v20.s}[2], [x3] -c1a4000d| st3 {v1.d-v3.d}[0], [x6] -312e9f0d| st3 {v17.b-v19.b}[3], [x17],#3 -9a28934d| st3 {v26.b-v28.b}[10], [x4], x19 -a1799f4d| st3 {v1.h-v3.h}[7], [x13],#6 -3ba29f0d| st3 {v27.s-v29.s}[0], [x17],#12 -80b2870d| st3 {v0.s-v2.s}[1], [x20], x7 -f6a49f4d| st3 {v22.d-v24.d}[1], [x7],#24 -8fa69a4d| st3 {v15.d-v17.d}[1], [x20], x26 -ee09000c| st4 {v14.2s-v17.2s}, [x15] -1e07880c| st4 {v30.4h, v31.4h, v0.4h, v1.4h}, [x24], x8 -6426204d| st4 {v4.b-v7.b}[9], [x19] -4ea2204d| st4 {v14.s-v17.s}[2], [x18] -05a6200d| st4 {v5.d-v8.d}[0], [x16] -5b21bf0d| st4 {v27.b-v30.b}[0], [x10],#4 -ce28a00d| st4 {v14.b-v17.b}[2], [x6], x0 -767bbf4d| st4 {v22.h-v25.h}[7], [x27],#8 -747aa24d| st4 {v20.h-v23.h}[7], [x19], x2 -24b0bf0d| st4 {v4.s-v7.s}[1], [x1],#16 -c7b1a90d| st4 {v7.s-v10.s}[1], [x14], x9 -9fa4bf4d| st4 {v31.d, v0.d, v1.d, v2.d}[1], [x4],#32 -70a4ab4d| st4 {v16.d-v19.d}[1], [x3], x11 -89fe2e2c| stnp s9, s31, [x20,#-140] -bfd31d6c| stnp d31, d20, [x29,#472] -ddf301ac| stnp q29, q28, [x30,#48] -14f6ac2c| stp s20, s29, [x16],#-156 -251db76c| stp d5, d7, [x9],#-144 -e51fb7ac| stp q5, q7, [sp],#-288 -5c90852d| stp s28, s4, [x2,#44]! -4c51a56d| stp d12, d20, [x10,#-432]! -265d8aad| stp q6, q23, [x9,#320]! -9c0c392d| stp s28, s3, [x4,#-56] -b49e1e6d| stp d20, d7, [x21,#488] -55f105ad| stp q21, q28, [x10,#176] -4dd6003c| str b13, [x18],#13 -e357067c| str h3, [sp],#101 -f6841dbc| str s22, [x7],#-40 -54b710fc| str d20, [x26],#-245 -0d07833c| str q13, [x24],#48 -393f003c| str b25, [x25,#3]! -1fac007c| str h31, [x0,#10]! -d41d13bc| str s20, [x14,#-207]! -908f0dfc| str d16, [x28,#216]! -5ded9d3c| str q29, [x10,#-34]! -6d72073d| str b13, [x19,#476] -68752d7d| str h8, [x11,#5818] -084728bd| str s8, [x24,#10308] -409503fd| str d0, [x10,#1832] -58a1963d| str q24, [x10,#23168] -51c8253c| str b17, [x2,w5,sxtw] -967b313c| str b22, [x28,x17,lsl #0] -b4683e7c| str h20, [x5,x30] -64d9a33c| str q4, [x11,w3,sxtw #4] -e5e1143c| stur b5, [x15,#-178] -99901e7c| stur h25, [x4,#-23] -bb0012bc| stur s27, [x5,#-224] -1d710cfc| stur d29, [x8,#199] -17e1873c| stur q23, [x8,#126] -ed84a26e| sub v13.4s, v7.4s, v2.4s -7761b80e| subhn v23.2s, v11.2d, v24.2d -f838205e| suqadd b24, b7 -7739600e| suqadd v23.4h, v11.4h -26a5204f| sxtl2 v6.2d, v9.4s -5a201a4e| tbl v26.16b, {v2.16b, v3.16b}, v26.16b -c2400f0e| tbl v2.8b, {v6.16b-v8.16b}, v15.8b -7263024e| tbl v18.16b, {v27.16b-v30.16b}, v2.16b -bb010b4e| tbl v27.16b, {v13.16b}, v11.16b -5f31184e| tbx v31.16b, {v10.16b, v11.16b}, v24.16b -a952100e| tbx v9.8b, {v21.16b-v23.16b}, v16.8b -4872170e| tbx v8.8b, {v18.16b-v21.16b}, v23.8b -dc110e4e| tbx v28.16b, {v14.16b}, v14.16b -d7289a4e| trn1 v23.4s, v6.4s, v26.4s -cd6a924e| trn2 v13.4s, v22.4s, v18.4s -a552392e| uabal v5.8h, v21.8b, v25.8b -a653256e| uabal2 v6.8h, v29.16b, v5.16b -fb70b42e| uabdl v27.2d, v7.2s, v20.2s -3b6a202e| uadalp v27.4h, v17.8b -8a03b22e| uaddl v10.2d, v28.2s, v18.2s -262a206e| uaddlp v6.8h, v17.16b -8410312e| uaddw v4.8h, v4.8h, v17.8b -bf11ae6e| uaddw2 v31.2d, v13.2d, v14.4s -a7e65d7f| ucvtf d7, d21, #35 -8bda617e| ucvtf d11, d20 -7fb8431e| ucvtf d31, w3, #18 -1c0f039e| ucvtf s28, x24, #61 -2241439e| ucvtf d2, x9, #48 -d701231e| ucvtf s23, w14 -9600631e| ucvtf d22, w4 -8b01239e| ucvtf s11, x12 -7202639e| ucvtf d18, x19 -3406b82e| uhadd v20.2s, v17.2s, v24.2s -9264612e| umax v18.4h, v4.4h, v1.4h -d9a5772e| umaxp v25.4h, v14.4h, v23.4h -74a8b06e| umaxv s20, v3.4s -24a8312e| uminv b4, v1.8b -c5218e2f| umlal v5.2d, v14.2s, v14.s[0] -3d20a76f| umlal2 v29.2d, v1.4s, v7.s[1] -90817e6e| umlal2 v16.4s, v12.8h, v30.8h -0f69a46f| umlsl2 v15.2d, v8.4s, v4.s[3] -4aa27c2e| umlsl v10.4s, v18.4h, v28.4h -48a27b6e| umlsl2 v8.4s, v18.8h, v27.8h -833c0d0e| umov w3, v4.b[6] -e2a1b22f| umull v2.2d, v15.2s, v18.s[1] -07c06f2e| umull v7.4s, v0.4h, v15.4h -470e367e| uqadd b7, b18, b22 -490e252e| uqadd v9.8b, v18.8b, v5.8b -bf5eaa7e| uqrshl s31, s21, s10 -c49c347f| uqrshrn s4, d6, #12 -b4757a7f| uqshl d20, d13, #58 -d14f777e| uqshl h17, h30, h23 -9e2d7a7e| uqsub h30, h12, h26 -a62c296e| uqsub v6.16b, v5.16b, v9.16b -5d4ba17e| uqxtn s29, d26 -454b212e| uqxtn v5.8b, v26.8h -1c48a16e| uqxtn2 v28.4s, v0.2d -4157736e| urshl v1.8h, v26.8h, v19.8h -2d26797f| urshr d13, d17, #7 -bd27466f| urshr v29.2d, v29.2d, #58 -bcc8a12e| ursqrte v28.2s, v5.2s -f5345d7f| ursra d21, d7, #35 -f8353a6f| ursra v24.4s, v15.4s, #6 -85a6342f| ushll v5.2d, v20.2s, #20 -e7a70e6f| ushll2 v7.8h, v31.16b, #6 -ed04787f| ushr d13, d7, #8 -8f07362f| ushr v15.2s, v28.2s, #10 -963a607e| usqadd h22, h20 -383a206e| usqadd v24.16b, v17.16b -ef16596f| usra v15.2d, v23.2d, #39 -f222ab2e| usubl v18.2d, v23.2s, v11.2s -9220696e| usubl2 v18.4s, v4.8h, v9.8h -0130312e| usubw v1.8h, v0.8h, v17.8b -a932a06e| usubw2 v9.2d, v21.2d, v0.4s -9a19910e| uzp1 v26.2s, v12.2s, v17.2s -a379ca4e| zip2 v3.2d, v13.2d, v10.2d -1202011a| adc w18, w16, w1 -6900199a| adc x9, x3, x25 -01010f3a| adcs w1, w8, w15 -13010fba| adcs x19, x8, x15 -55ed280b| add w21, w10, w8, sxtx #3 -2077268b| add x0, x25, x6, uxtx #5 -7f40560b| add wzr, w3, w22, lsr #16 -3a16282b| adds w26, w17, w8, uxtb #5 -f8a336ab| adds x24, sp, w22, sxth -000e6d31| adds w0, w16, #0xb43, lsl #12 -b48e49b1| adds x20, x21, #0x263, lsl #12 -7e174e2b| adds w30, w27, w14, lsr #5 -25e2f250| adr x5, .+0xfffffffffffe5c46 -294079f0| adrp x9, .+0xf2807000 -3aa13f12| and w26, w9, #0x3fe03fe -32a23592| and x18, x17, #0xf80ff80ff80ff80f -b478070a| and w20, w5, w7, lsl #30 -dd1f988a| and x29, x30, x24, asr #7 -a7351b72| ands w7, w13, #0x7ffe0 -1c056ef2| ands x28, x8, #0xc0000 -defd52ea| ands x30, x14, x18, lsr #63 -8c28d01a| asr w12, w4, w16 -582ac09a| asr x24, x18, x0 -647d1813| asr w4, w11, #24 -d1fe5b93| asr x17, x22, #27 -2329c31a| asr w3, w9, w3 -d929d69a| asr x25, x14, x22 -aefa5354| b.al .+0xa7f54 -76ad3917| b .+0xfffffffffce6b5d8 -de320f33| bfi w30, w22, #17, #13 -af144db3| bfi x15, x5, #51, #6 -161c7eb3| bfi x22, x0, #2, #8 -f9791733| bfxil w25, w15, #23, #8 -781577b3| bfi x24, x11, #9, #6 -0f65f98a| bic x15, x8, x25, ror #25 -2c37e16a| bics w12, w25, w1, ror #13 -a6f473ea| bics x6, x5, x19, lsr #61 -f064ad96| bl .+0xfffffffffab593c0 -80023fd6| blr x20 -00001fd6| br x0 -80de3ed4| brk #0xf6f4 -08276a35| cbnz w8, .+0xd44e0 -acd1c0b5| cbnz x12, .+0xfffffffffff81a34 -ef50bf34| cbz w15, .+0xfffffffffff7ea1c -4bd681b4| cbz x11, .+0xfffffffffff03ac8 -4e2a483a| ccmn w18, #0x8, #0xe, cs -4a3a4eba| ccmn x18, #0xe, #0xa, cc -0143553a| ccmn w24, w21, #0x1, mi -c09359ba| ccmn x30, x25, #0x0, ls -020a567a| ccmp w16, #0x16, #0x2, eq -a6985afa| ccmp x5, #0x1a, #0x6, ls -6fc0487a| ccmp w3, w8, #0xf, gt -21d14bfa| ccmp x9, x11, #0x1, le -75f5991a| csinc w21, w11, w25, al -5a25919a| csinc x26, x10, x17, cs -6a938c5a| csinv w10, w27, w12, ls -6a408eda| csinv x10, x3, x14, mi -5f3603d5| clrex #0x6 -a017c05a| cls w0, w29 -2616c0da| cls x6, x17 -9411c05a| clz w20, w12 -c611c0da| clz x6, x14 -9fc3322b| cmn w28, w18, sxtw -3f9638ab| cmn x17, w24, sxtb #5 -3f681db1| cmn x1, #0x75a -bfd15bab| cmn x13, x27, lsr #52 -ff723b6b| cmp w23, w27, uxtx #4 -1f5234eb| cmp x16, w20, uxtw #4 -9fb22a71| cmp w20, #0xaac -df2478f1| cmp x6, #0xe09, lsl #12 -bf07026b| cmp w29, w2, lsl #1 -bfc514eb| cmp x13, x20, lsl #49 -d494975a| csneg w20, w6, w23, ls -763591da| csneg x22, x11, x17, cc -b440c91a| crc32b w20, w5, w9 -5745cd1a| crc32h w23, w10, w13 -684ad01a| crc32w w8, w19, w16 -884fd59a| crc32x w8, w28, x21 -ea50c61a| crc32cb w10, w7, w6 -1357cf1a| crc32ch w19, w24, w15 -9859c21a| crc32cw w24, w12, w2 -6e5fde9a| crc32cx w14, w27, x30 -9340941a| csel w19, w4, w20, mi -dd42839a| csel x29, x22, x3, mi -fe779f1a| cset w30, vs -f1279f9a| cset x17, cc -eb839f5a| csetm w11, ls -e3139fda| csetm x3, eq -a986841a| csinc w9, w21, w4, hi -19b78b9a| csinc x25, x24, x11, lt -4643835a| csinv w6, w26, w3, mi -5ee38cda| csinv x30, x26, x12, al -d166945a| csneg w17, w22, w20, vs -55f793da| csneg x21, x26, x19, al -0158add4| dcps1 #0x6ac0 -82ceb2d4| dcps2 #0x9674 -a31eb3d4| dcps3 #0x98f5 -bf3203d5| dmb oshst -e003bfd6| drps -9f3403d5| dsb #0x04 -2e2faeca| eon x14, x25, x14, asr #11 -de6b0152| eor w30, w30, #0x83ffffff -4a7714d2| eor x10, x26, #0xfffff3fffffff3ff -2cea0dca| eor x12, x17, x13, lsl #58 -e0039fd6| eret -834cce93| extr x3, x4, x14, #19 -5f2003d5| wfe -bf2e03d5| hint #0x75 -e0f055d4| hlt #0xaf87 -df3403d5| isb #0x4 -22fcdf88| ldar w2, [x1] -78fedfc8| ldar x24, [x19] -cffcdf08| ldarb w15, [x6] -34fedf48| ldarh w20, [x17] -17bb7f88| ldaxp w23, w14, [x24] -6ffe7fc8| ldaxp x15, xzr, [x19] -acfe5f88| ldaxr w12, [x21] -cafe5fc8| ldaxr x10, [x22] -ddfd5f08| ldaxrb w29, [x14] -0efd5f48| ldaxrh w14, [x8] -66445128| ldnp w6, w17, [x3,#136] -3fa77fa8| ldnp xzr, x9, [x25,#-8] -1e04eb28| ldp w30, w1, [x0],#-168 -0da6c0a8| ldp x13, x9, [x16],#8 -7d00d429| ldp w29, w0, [x3,#160]! -d26ae1a9| ldp x18, x26, [x22,#-496]! -d0ca6829| ldp w16, w18, [x22,#-188] -a5e34fa9| ldp x5, x24, [x29,#248] -3e44d168| ldpsw x30, x17, [x1],#136 -5f08e169| ldpsw xzr, x2, [x2,#-248]! -430d6769| ldpsw x3, x3, [x10,#-200] -2c555bb8| ldr w12, [x9],#-75 -83c557f8| ldr x3, [x12],#-132 -f36e47b8| ldr w19, [x23,#118]! -6b1f48f8| ldr x11, [x27,#129]! -f5d64ab9| ldr w21, [x23,#2772] -872d7cf9| ldr x7, [x12,#30808] -f23e8c18| ldr w18, .+0xfffffffffff187dc -a7e72a58| ldr x7, .+0x55cf4 -82a75438| ldrb w2, [x28],#-182 -a7fd5738| ldrb w7, [x13,#-129]! -c83d4239| ldrb w8, [x14,#143] -58c96438| ldrb w24, [x10,w4,sxtw] -8e687e38| ldrb w14, [x4,x30] -70575378| ldrh w16, [x27],#-203 -015f5078| ldrh w1, [x24,#-251]! -7add5c79| ldrh w26, [x11,#3694] -2fcb7778| ldrh w15, [x25,w23,sxtw] -c474c338| ldrsb w4, [x6],#55 -28869638| ldrsb x8, [x17],#-152 -fe3fd438| ldrsb w30, [sp,#-189]! -da0f9938| ldrsb x26, [x30,#-112]! -5b3ac739| ldrsb w27, [x18,#462] -2c579e39| ldrsb x12, [x25,#1941] -54faf838| ldrsb w20, [x18,x24,sxtx #0] -fb68f238| ldrsb w27, [x7,x18] -f26aad38| ldrsb x18, [x23,x13] -17e4c978| ldrsh w23, [x0],#158 -a2759f78| ldrsh x2, [x13],#-9 -9c6ec478| ldrsh w28, [x20,#70]! -fd6f8278| ldrsh x29, [sp,#38]! -a82bc279| ldrsh w8, [x29,#276] -9d89b979| ldrsh x29, [x12,#7364] -962685b8| ldrsw x22, [x20],#82 -76ae8bb8| ldrsw x22, [x19,#186]! -fc2193b9| ldrsw x28, [x15,#4896] -7561fa98| ldrsw x21, .+0xffffffffffff4c2c -e34842b8| ldtr w3, [x7,#36] -4ff84df8| ldtr x15, [x2,#223] -d9e84f38| ldtrb w25, [x6,#254] -397b5378| ldtrh w25, [x25,#-201] -c4c9d138| ldtrsb w4, [x14,#-228] -02789638| ldtrsb x2, [x0,#-153] -a988cb78| ldtrsh w9, [x5,#184] -03888978| ldtrsh x3, [x0,#152] -ccb99fb8| ldtrsw x12, [x14,#-5] -efb154b8| ldur w15, [x15,#-181] -fc2051f8| ldur x28, [x7,#-238] -86d04438| ldurb w6, [x4,#77] -73405d78| ldurh w19, [x3,#-44] -7a81d538| ldursb w26, [x11,#-168] -b0b28038| ldursb x16, [x21,#11] -b4a1d278| ldursh w20, [x13,#-214] -3ed18078| ldursh x30, [x9,#13] -09628eb8| ldursw x9, [x16,#230] -c07e7f88| ldxp w0, wzr, [x22] -3e167fc8| ldxp x30, x5, [x17] -727c5f88| ldxr w18, [x3] -487c5fc8| ldxr x8, [x2] -867d5f08| ldxrb w6, [x12] -747f5f48| ldxrh w20, [x27] -d920d71a| lsl w25, w6, w23 -b920c59a| lsl x25, x5, x5 -4da947d3| ubfx x13, x10, #7, #36 -be23ca1a| lsl w30, w29, w10 -cc20d19a| lsl x12, x6, x17 -ae26c31a| lsr w14, w21, w3 -fc27cb9a| lsr x28, xzr, x11 -2b7e1053| lsr w11, w17, #16 -cefe75d3| lsr x14, x22, #53 -3b25d01a| lsr w27, w9, w16 -e826d79a| lsr x8, x23, x23 -5504031b| madd w21, w2, w3, w1 -9e5c109b| madd x30, x4, x16, x23 -00fe1f1b| mneg w0, w16, wzr -6efe179b| mneg x14, x19, x23 -31020011| add w17, w17, #0x0 -21000091| add x1, x1, #0x0 -39f1bf12| mov w25, #0x76ffff -53b3e992| mov x19, #0xb265ffffffffffff -c0fd9552| mov w0, #0xafee -f16b97d2| mov x17, #0xbb5f -e8972232| mov w8, #0xc00fc00f -e27323b2| mov x2, #0xe3ffffffe3ffffff -e9030e2a| mov w9, w14 -fb0310aa| mov x27, x16 -d0e48472| movk w16, #0x2726 -432dbcf2| movk x3, #0xe16a, lsl #16 -4b679612| mov w11, #0xffff4cc5 -9121e492| mov x17, #0xdef3ffffffffffff -00be90d2| mov x0, #0x85f0 -91d730d5| mrs x17, s2_0_c13_c7_4 -cf301fd5| msr s3_7_c3_c0_6, x15 -daea181b| msub w26, w22, w24, w26 -e1a7109b| msub x1, xzr, x16, x9 -477f0d1b| mul w7, w26, w13 -a17d1c9b| mul x1, x13, x28 -fc9b79aa| mvn x28, x25, lsr #38 -f71b904b| neg w23, w16, asr #6 -e3df4acb| neg x3, x10, lsr #55 -f0334e6b| negs w16, w14, lsr #12 -e6031f5a| ngc w6, wzr -f40302da| ngc x20, x2 -ee03137a| ngcs w14, w19 -ee0303fa| ngcs x14, x3 -1f2003d5| nop -ab14e92a| orn w11, w5, w9, ror #5 -185c3faa| orn x24, x0, xzr, lsl #23 -a8850c32| orr w8, w13, #0x300030 -cad023b2| orr x10, x6, #0xe3e3e3e3e3e3e3e3 -5487ccaa| orr x20, x26, x12, ror #33 -293783f9| prfm plil1strm, [x25,#1640] -501010d8| prfm pstl1keep, .+0x20208 -bc7389f8| prfum #0x1c, [x29,#151] -9203c05a| rbit w18, w28 -0501c0da| rbit x5, x8 -40005fd6| ret x2 -940ac05a| rev w20, w20 -ca0fc0da| rev x10, x30 -7807c05a| rev16 w24, w27 -fb06c0da| rev16 x27, x23 -dc0ac0da| rev32 x28, x22 -970dc0da| rev x23, x12 -42408813| extr w2, w2, w8, #16 -5a96db93| extr x26, x18, x27, #37 -782cc41a| ror w24, w3, w4 -8c2ec69a| ror x12, x20, x6 -372ec61a| ror w23, w17, w6 -b72ddc9a| ror x23, x13, x28 -e501185a| sbc w5, w15, w24 -ac0011da| sbc x12, x5, x17 -7a03067a| sbcs w26, w27, w6 -310008fa| sbcs x17, x1, x8 -65837f93| sbfiz x5, x27, #1, #33 -5c1b4793| sbfiz x28, x26, #57, #7 -a71f5b93| sbfiz x7, x29, #37, #8 -640ede1a| sdiv w4, w19, w30 -2a0dd99a| sdiv x10, x9, x25 -9f2003d5| sev -bf2003d5| sevl -045c389b| smaddl x4, w0, w24, x23 -6efe3e9b| smnegl x14, w19, w30 -ebac239b| smsubl x11, w7, w3, x11 -947f459b| smulh x20, x28, x5 -d67e3e9b| smull x22, w22, w30 -6dff9f88| stlr w13, [x27] -1ffd9fc8| stlr xzr, [x8] -a8fe9f08| stlrb w8, [x21] -abfd9f48| stlrh w11, [x13] -2ec02888| stlxp w8, w14, w16, [x1] -11993ec8| stlxp w30, x17, x6, [x8] -bbfe0f88| stlxr w15, w27, [x21] -e9fc09c8| stlxr w9, x9, [x7] -c6fe0708| stlxrb w7, w6, [x22] -c6fe0c48| stlxrh w12, w6, [x22] -b3283028| stnp w19, w10, [x5,#-128] -252e26a8| stnp x5, x11, [x17,#-416] -9fb18c28| stp wzr, w12, [x12],#100 -9ce5aba8| stp x28, x25, [x12],#-328 -e5d08229| stp w5, w20, [x7,#20]! -d6e79ea9| stp x22, x25, [x30,#488]! -9eef2029| stp w30, w27, [x28,#-252] -57b314a9| stp x23, x12, [x26,#328] -eda503b8| str w13, [x15],#58 -62241df8| str x2, [x3],#-46 -d2bd18b8| str w18, [x14,#-117]! -542d12f8| str x20, [x10,#-222]! -e92c3bb9| str w9, [x7,#15148] -de4804f9| str x30, [x6,#2192] -cce40b38| strb w12, [x6],#190 -eafd1238| strb w10, [x15,#-209]! -7fcb0639| strb wzr, [x27,#434] -03f82738| strb w3, [x0,x7,sxtx #0] -5c6a3e38| strb w28, [x18,x30] -a8551978| strh w8, [x13],#-107 -9e6c0c78| strh w30, [x4,#198]! -c83d0e79| strh w8, [x14,#1822] -502a1db8| sttr w16, [x18,#-46] -ae180af8| sttr x14, [x5,#161] -ea1a0138| sttrb w10, [x23,#17] -416b0278| sttrh w1, [x26,#38] -659107b8| stur w5, [x11,#121] -6b611ff8| stur x11, [x11,#-10] -99a01c38| sturb w25, [x4,#-54] -99421e78| sturh w25, [x20,#-28] -3e2a2688| stxp w6, w30, w10, [x17] -2f6a2cc8| stxp w12, x15, x26, [x17] -7d7f1b88| stxr w27, w29, [x27] -6e7e1bc8| stxr w27, x14, [x19] -ec7c0208| stxrb w2, w12, [x7] -ee7f0648| stxrh w6, w14, [sp] -2f8d204b| sub w15, w9, w0, sxtb #3 -1fbe3acb| sub sp, x16, w26, sxth #7 -5af778d1| sub x26, x26, #0xe3d, lsl #12 -6729034b| sub w7, w11, w3, lsl #10 -ae683f6b| subs w14, w5, wzr, uxtx #2 -2f993deb| subs x15, x9, w29, sxtb #6 -db0d5f71| subs w27, w14, #0x7c3, lsl #12 -3aec1ff1| subs x26, x1, #0x7fb -1f24016b| cmp w0, w1, lsl #9 -a1ae1bd4| svc #0xdd75 -a61e0013| sxtb w6, w21 -441c4093| sxtb x4, w2 -0c3c0013| sxth w12, w0 -b33f4093| sxth x19, w29 -407f4093| sxtw x0, w26 -455929d5| sysl x5, #1, C5, C9, #2 -d1005b37| tbnz w17, #11, .+0x6018 -798eaeb6| tbz x25, #53, .+0xffffffffffffd1cc -bf8c1f72| tst w5, #0x1e001e -ff10836a| tst w7, w3, asr #4 -dfc5daea| tst x14, x26, ror #49 -aa6e43d3| ubfx x10, x21, #3, #25 -46181a53| ubfiz w6, w2, #6, #7 -43294bd3| lsl x3, x10, #53 -77787dd3| ubfiz x23, x3, #3, #31 -1a0bd61a| udiv w26, w24, w22 -9308c19a| udiv x19, x4, x1 -755aa19b| umaddl x21, w19, w1, x22 -1ffdbe9b| umnegl xzr, w8, w30 -cbaaba9b| umsubl x11, w22, w26, x10 -0c7fdb9b| umulh x12, x24, x27 -cc7da79b| umull x12, w14, w7 -3d1c0053| uxtb w29, w1 -0e3f0053| uxth w14, w24 -5f2003d5| wfe -7f2003d5| wfi -3f2003d5| yield -71b9604e| abs v17.8h, v11.8h -5186f65e| add d17, d18, d22 -4986f34e| add v9.2d, v18.2d, v19.2d -1243720e| addhn v18.4h, v24.4s, v18.4s -0640354e| addhn2 v6.16b, v0.8h, v21.8h -d9bdfa4e| addp v25.2d, v14.2d, v26.2d -4c59284e| aesd v12.16b, v10.16b -8c48284e| aese v12.16b, v4.16b -f47a284e| aesimc v20.16b, v23.16b -c56b284e| aesmc v5.16b, v30.16b -bf1c3b0e| and v31.8b, v5.8b, v27.8b -6444026f| mvni v4.4s, #0x43, lsl #16 -1357032f| bic v19.2s, #0x78, lsl #16 -561d6a0e| bic v22.8b, v10.8b, v10.8b -cd1ff06e| bif v13.16b, v30.16b, v16.16b -f31ebd6e| bit v19.16b, v23.16b, v29.16b -6f1d6c2e| bsl v15.8b, v11.8b, v12.8b -1e48600e| cls v30.4h, v0.4h -6948202e| clz v9.8b, v3.8b -968efd7e| cmeq d22, d20, d29 -e58f6d6e| cmeq v5.8h, v31.8h, v13.8h -8f98600e| cmeq v15.4h, v4.4h, #0 -4f3db84e| cmge v15.4s, v10.4s, v24.4s -2788a02e| cmge v7.2s, v1.2s, #0 -bf35714e| cmgt v31.8h, v13.8h, v17.8h -4a89604e| cmgt v10.8h, v10.8h, #0 -9635252e| cmhi v22.8b, v12.8b, v5.8b -d83eff6e| cmhs v24.2d, v22.2d, v31.2d -cb99206e| cmle v11.16b, v14.16b, #0 -29a9604e| cmlt v9.8h, v9.8h, #0 -d18eea5e| cmtst d17, d22, d10 -d18ea94e| cmtst v17.4s, v22.4s, v9.4s -4a04075e| mov b10, v2.b[3] -0504040e| dup v5.2s, v0.s[0] -b20e1f4e| dup v18.16b, w21 -2a1f3e6e| eor v10.16b, v25.16b, v30.16b -0bd5aa7e| fabd s11, s8, s10 -12d7b96e| fabd v18.4s, v24.4s, v25.4s -a1f9a04e| fabs v1.4s, v13.4s -1ac3201e| fabs s26, s24 -d8c3601e| fabs d24, d30 -95ee267e| facge s21, s20, s6 -2bee262e| facge v11.2s, v17.2s, v6.2s -1aedec7e| facgt d26, d8, d12 -74effa6e| facgt v20.2d, v27.2d, v26.2d -7ed4260e| fadd v30.2s, v3.2s, v6.2s -4528251e| fadd s5, s2, s5 -262b661e| fadd d6, d25, d6 -84d8707e| faddp d4, v4.2d -71d4276e| faddp v17.4s, v3.4s, v7.4s -a5f43f1e| fccmp s5, s31, #0x5, al -20e5601e| fccmp d9, d0, #0x0, al -52d4331e| fccmpe s2, s19, #0x2, le -1e66761e| fccmpe d16, d22, #0xe, vs -d7e6695e| fcmeq d23, d22, d9 -e7d9a05e| fcmeq s7, s15, #0 -dadaa04e| fcmeq v26.4s, v22.4s, #0 -28e5737e| fcmge d8, d9, d19 -a2e73a6e| fcmge v2.4s, v29.4s, v26.4s -4fcba07e| fcmge s15, s26, #0 -43c8a02e| fcmge v3.2s, v2.2s, #0 -ffe5a67e| fcmgt s31, s15, s6 -7ee7bd2e| fcmgt v30.2s, v27.2s, v29.2s -5bc8e05e| fcmgt d27, d2, #0 -3dc9a04e| fcmgt v29.4s, v9.4s, #0 -38daa07e| fcmle s24, s17, #0 -8fdaa02e| fcmle v15.2s, v20.2s, #0 -93e8e05e| fcmlt d19, d4, #0 -9fe9a04e| fcmlt v31.4s, v12.4s, #0 -a023201e| fcmp s29, s0 -c822231e| fcmp s22, #0 -a022651e| fcmp d21, d5 -a8227d1e| fcmp d21, #0 -70203e1e| fcmpe s3, s30 -38232b1e| fcmpe s25, #0 -70206c1e| fcmpe d3, d12 -b823731e| fcmpe d29, #0 -3e6f331e| fcsel s30, s25, s19, vs -a64f6d1e| fcsel d6, d29, d13, mi -0d41e21e| fcvt s13, h8 -cbc0e21e| fcvt d11, h6 -18c0231e| fcvt h24, s0 -a7c0221e| fcvt d7, s5 -e7c3631e| fcvt h7, d31 -9f43621e| fcvt s31, d28 -a0c8215e| fcvtas s0, s5 -4dc8210e| fcvtas v13.2s, v2.2s -0300241e| fcvtas w3, s0 -fd03249e| fcvtas x29, s31 -ef01641e| fcvtas w15, d15 -4c01649e| fcvtas x12, d10 -9ac8617e| fcvtau d26, d4 -b802251e| fcvtau w24, s21 -2a03259e| fcvtau x10, s25 -ea00651e| fcvtau w10, d7 -0102659e| fcvtau x1, d16 -0d7a610e| fcvtl v13.2d, v16.2s -ed79214e| fcvtl2 v13.4s, v15.8h -43bb615e| fcvtms d3, d26 -c000301e| fcvtms w0, s6 -9202309e| fcvtms x18, s20 -0800701e| fcvtms w8, d0 -6603709e| fcvtms x6, d27 -f0b9217e| fcvtmu s16, s15 -3bba212e| fcvtmu v27.2s, v17.2s -5900311e| fcvtmu w25, s2 -9a03319e| fcvtmu x26, s28 -fa01711e| fcvtmu w26, d15 -6f01719e| fcvtmu x15, d11 -1968210e| fcvtn v25.4h, v0.4s -3d69214e| fcvtn2 v29.8h, v9.4s -87aa615e| fcvtns d7, d20 -e301201e| fcvtns w3, s15 -6002209e| fcvtns x0, s19 -1600601e| fcvtns w22, d0 -8503609e| fcvtns x5, d28 -f5ab617e| fcvtnu d21, d31 -2b02211e| fcvtnu w11, s17 -f902219e| fcvtnu x25, s23 -0702611e| fcvtnu w7, d16 -9d03619e| fcvtnu x29, d28 -dcaba15e| fcvtps s28, s30 -b4a8a10e| fcvtps v20.2s, v5.2s -5302281e| fcvtps w19, s18 -e003289e| fcvtps x0, s31 -9501681e| fcvtps w21, d12 -6703689e| fcvtps x7, d27 -68a8a17e| fcvtpu s8, s3 -dcaba12e| fcvtpu v28.2s, v30.2s -9d03291e| fcvtpu w29, s28 -5f01299e| fcvtpu xzr, s10 -e101691e| fcvtpu w1, d15 -3f00699e| fcvtpu xzr, d1 -ee6b612e| fcvtxn v14.2s, v31.2d -b1fd215f| fcvtzs s17, s13, #31 -bafd2c0f| fcvtzs v26.2s, v13.2s, #20 -47b8e15e| fcvtzs d7, d2 -dcbbe14e| fcvtzs v28.2d, v30.2d -56f8181e| fcvtzs w22, s2, #2 -9265189e| fcvtzs x18, s12, #39 -d3ad581e| fcvtzs w19, d14, #21 -3d9b589e| fcvtzs x29, d25, #26 -1a00381e| fcvtzs w26, s0 -d302389e| fcvtzs x19, s22 -5303781e| fcvtzs w19, d26 -8f01789e| fcvtzs x15, d12 -57fe537f| fcvtzu d23, d18, #45 -beff796f| fcvtzu v30.2d, v29.2d, #7 -08b9e17e| fcvtzu d8, d8 -cdbbe16e| fcvtzu v13.2d, v30.2d -2126199e| fcvtzu x1, s17, #55 -70a9591e| fcvtzu w16, d11, #22 -8c25599e| fcvtzu x12, d12, #55 -1201391e| fcvtzu w18, s8 -0800399e| fcvtzu x8, s0 -da00791e| fcvtzu w26, d6 -2903799e| fcvtzu x9, d25 -56fd3f2e| fdiv v22.2s, v10.2s, v31.2s -1f182e1e| fdiv s31, s0, s14 -ce1b741e| fdiv d14, d30, d20 -0d61021f| fmadd s13, s8, s2, s24 -03205e1f| fmadd d3, d0, d30, d8 -72f6654e| fmax v18.2d, v19.2d, v5.2d -1849281e| fmax s24, s8, s8 -8e4a6e1e| fmax d14, d20, d14 -54c7304e| fmaxnm v20.4s, v26.4s, v16.4s -91683a1e| fmaxnm s17, s4, s26 -f56a721e| fmaxnm d21, d23, d18 -c8cb307e| fmaxnmp s8, v30.2s -06c9306e| fmaxnmv s6, v8.4s -b6fb707e| fmaxp d22, v29.2d -1759341e| fmin s23, s8, s20 -675b721e| fmin d7, d27, d18 -69792d1e| fminnm s9, s11, s13 -ab786b1e| fminnm d11, d5, d11 -0fcab07e| fminnmp s15, v16.2s -d2c6b26e| fminnmp v18.4s, v22.4s, v18.4s -22fab07e| fminp s2, v17.2s -f5f5f56e| fminp v21.2d, v15.2d, v21.2d -bc13c95f| fmla d28, d29, v9.d[0] -5d51a85f| fmls s29, s10, v8.s[1] -d3ccb94e| fmls v19.4s, v6.4s, v25.4s -5bf4014f| fmov v27.4s, #9.000000000000000000e+00 -5bf5026f| fmov v27.2d, #2.031250000000000000e-01 -6541201e| fmov s5, s11 -b742601e| fmov d23, d21 -6002271e| fmov s0, w19 -5301261e| fmov w19, s10 -c103679e| fmov d1, x30 -3301af9e| fmov v19.d[1], x9 -bd00669e| fmov x29, d5 -ee02ae9e| fmov x14, v23.d[1] -0ff0251e| fmov s15, #1.550000000000000000e+01 -16506a1e| fmov d22, #2.812500000000000000e-01 -d1c20e1f| fmsub s17, s22, s14, s16 -fdae491f| fmsub d29, d23, d9, d11 -a4989d4f| fmul v4.4s, v5.4s, v29.s[2] -efde706e| fmul v15.2d, v23.2d, v16.2d -190a291e| fmul s25, s16, s9 -430a671e| fmul d3, d18, d7 -21919e7f| fmulx s1, s9, v30.s[0] -5298c76f| fmulx v18.2d, v2.2d, v7.d[1] -1ddf3c5e| fmulx s29, s24, s28 -a2fba06e| fneg v2.4s, v29.4s -7a40211e| fneg s26, s3 -f843611e| fneg d24, d31 -326b381f| fnmadd s18, s25, s24, s26 -4b636a1f| fnmadd d11, d26, d10, d24 -48fa201f| fnmsub s8, s18, s0, s30 -04d87f1f| fnmsub d4, d0, d31, d22 -0289371e| fnmul s2, s8, s23 -0e8a691e| fnmul d14, d16, d9 -05dba15e| frecpe s5, s24 -42d9a14e| frecpe v2.4s, v10.4s -2eff655e| frecps d14, d25, d5 -03fe774e| frecps v3.2d, v16.2d, v23.2d -b4fba15e| frecpx s20, s29 -9d41261e| frinta s29, s12 -ea42661e| frinta d10, d23 -e399a16e| frinti v3.4s, v15.4s -6ec3271e| frinti s14, s27 -ecc1671e| frinti d12, d15 -4543251e| frintm s5, s26 -f242651e| frintm d18, d23 -898a214e| frintn v9.4s, v20.4s -1641241e| frintn s22, s8 -5341641e| frintn d19, d10 -248be14e| frintp v4.2d, v25.2d -35c2241e| frintp s21, s17 -6fc3641e| frintp d15, d27 -0940271e| frintx s9, s0 -4643671e| frintx d6, d26 -749aa14e| frintz v20.4s, v19.4s -8bc0251e| frintz s11, s4 -7cc1651e| frintz d28, d11 -dedbe17e| frsqrte d30, d30 -04daa16e| frsqrte v4.4s, v16.4s -cdfce45e| frsqrts d13, d6, d4 -d9fda04e| frsqrts v25.4s, v14.4s, v0.4s -c5c1211e| fsqrt s5, s14 -67c1611e| fsqrt d7, d11 -a4d6b14e| fsub v4.4s, v21.4s, v17.4s -6138351e| fsub s1, s3, s21 -be3b6a1e| fsub d30, d29, d10 -4d2f016e| mov v13.b[0], v26.b[5] -741e174e| mov v20.b[11], w19 -e170404c| ld1 {v1.16b}, [x7] -7aa9404c| ld1 {v26.4s, v27.4s}, [x11] -4b6d400c| ld1 {v11.1d-v13.1d}, [x10] -582b400c| ld1 {v24.2s-v27.2s}, [x26] -8f7cdf4c| ld1 {v15.2d}, [x4],#16 -0a76ce4c| ld1 {v10.8h}, [x16], x14 -2aa6df0c| ld1 {v10.4h, v11.4h}, [x17],#16 -35a7d70c| ld1 {v21.4h, v22.4h}, [x25], x23 -ae6ddf4c| ld1 {v14.2d-v16.2d}, [x13],#48 -b362d74c| ld1 {v19.16b-v21.16b}, [x21], x23 -6d22df0c| ld1 {v13.8b-v16.8b}, [x19],#32 -6722c90c| ld1 {v7.8b-v10.8b}, [x19], x9 -c71f404d| ld1 {v7.b}[15], [x30] -f55a400d| ld1 {v21.h}[3], [x23] -f080400d| ld1 {v16.s}[0], [x7] -ed84404d| ld1 {v13.d}[1], [x7] -fd0bdf4d| ld1 {v29.b}[10], [sp],#1 -c811dc0d| ld1 {v8.b}[4], [x14], x28 -6548cb4d| ld1 {v5.h}[5], [x3], x11 -9882df4d| ld1 {v24.s}[2], [x20],#4 -f482c74d| ld1 {v20.s}[2], [x23], x7 -0d87df0d| ld1 {v13.d}[0], [x24],#8 -1b85db0d| ld1 {v27.d}[0], [x8], x27 -58c3404d| ld1r {v24.16b}, [x26] -c0c6df4d| ld1r {v0.8h}, [x22],#2 -a6cec90d| ld1r {v6.1d}, [x21], x9 -e68a400c| ld2 {v6.2s, v7.2s}, [x23] -4007604d| ld2 {v0.b, v1.b}[9], [x26] -8c49604d| ld2 {v12.h, v13.h}[5], [x12] -4f92600d| ld2 {v15.s, v16.s}[1], [x18] -b186600d| ld2 {v17.d, v18.d}[0], [x21] -631aff0d| ld2 {v3.b, v4.b}[6], [x19],#2 -330ceb4d| ld2 {v19.b, v20.b}[11], [x1], x11 -454bff4d| ld2 {v5.h, v6.h}[5], [x26],#4 -0792ff0d| ld2 {v7.s, v8.s}[1], [x16],#8 -3b91fd0d| ld2 {v27.s, v28.s}[1], [x9], x29 -b086ff4d| ld2 {v16.d, v17.d}[1], [x21],#16 -da86e30d| ld2 {v26.d, v27.d}[0], [x22], x3 -e7cf604d| ld2r {v7.2d, v8.2d}, [sp] -5ac8ff0d| ld2r {v26.2s, v27.2s}, [x2],#8 -13c1f10d| ld2r {v19.8b, v20.8b}, [x8], x17 -0947404c| ld3 {v9.8h-v11.8h}, [x24] -8043df0c| ld3 {v0.8b-v2.8b}, [x28],#24 -6344d50c| ld3 {v3.4h-v5.4h}, [x3], x21 -663d400d| ld3 {v6.b-v8.b}[7], [x11] -5b6b400d| ld3 {v27.h-v29.h}[1], [x26] -02a0404d| ld3 {v2.s-v4.s}[2], [x0] -e1a5404d| ld3 {v1.d-v3.d}[1], [x15] -b53edf0d| ld3 {v21.b-v23.b}[7], [x21],#3 -f625d10d| ld3 {v22.b-v24.b}[1], [x15], x17 -3d7bda4d| ld3 {v29.h-v31.h}[7], [x25], x26 -6ea0df0d| ld3 {v14.s-v16.s}[0], [x3],#12 -d9a0c60d| ld3 {v25.s-v27.s}[0], [x6], x6 -b6a7df0d| ld3 {v22.d-v24.d}[0], [x29],#24 -dfa6d94d| ld3 {v31.d, v0.d, v1.d}[1], [x22], x25 -7de9404d| ld3r {v29.4s-v31.4s}, [x11] -2fe6df4d| ld3r {v15.8h-v17.8h}, [x17],#6 -cae7c84d| ld3r {v10.8h-v12.8h}, [x30], x8 -9a0b400c| ld4 {v26.2s-v29.2s}, [x28] -4b03df0c| ld4 {v11.8b-v14.8b}, [x26],#32 -8e0bcc4c| ld4 {v14.4s-v17.4s}, [x28], x12 -182c604d| ld4 {v24.b-v27.b}[11], [x0] -feb2600d| ld4 {v30.s, v31.s, v0.s, v1.s}[1], [x23] -59a4604d| ld4 {v25.d-v28.d}[1], [x2] -9b25ff4d| ld4 {v27.b-v30.b}[9], [x12],#4 -1f35e84d| ld4 {v31.b, v0.b, v1.b, v2.b}[13], [x8], x8 -91b2ff4d| ld4 {v17.s-v20.s}[3], [x20],#16 -88b3ed4d| ld4 {v8.s-v11.s}[3], [x28], x13 -9aa5ff4d| ld4 {v26.d-v29.d}[1], [x12],#32 -efa5e10d| ld4 {v15.d-v18.d}[0], [x15], x1 -07ed604d| ld4r {v7.2d-v10.2d}, [x8] -0defff0d| ld4r {v13.1d-v16.1d}, [x24],#32 -43e1f14d| ld4r {v3.16b-v6.16b}, [x10], x17 -136e682c| ldnp s19, s27, [x16,#-192] -cc67676c| ldnp d12, d25, [x30,#-400] -e6dd4eac| ldnp q6, q23, [x15,#464] -b7e9c22c| ldp s23, s26, [x13],#20 -92c3fe6c| ldp d18, d16, [x28],#-24 -f281e6ac| ldp q18, q0, [x15],#-816 -4f06cd2d| ldp s15, s1, [x18,#104]! -0f6fdc6d| ldp d15, d27, [x24,#448]! -170ccbad| ldp q23, q3, [x0,#352]! -71ea7a2d| ldp s17, s26, [x19,#-44] -c8816c6d| ldp d8, d0, [x14,#-312] -da6540ad| ldp q26, q25, [x14] -92064c3c| ldr b18, [x20],#192 -94d4577c| ldr h20, [x4],#-131 -39055fbc| ldr s25, [x9],#-16 -989551fc| ldr d24, [x12],#-231 -4764c23c| ldr q7, [x2],#38 -c15e4e3c| ldr b1, [x22,#229]! -c8ce487c| ldr h8, [x22,#140]! -ca5d5bbc| ldr s10, [x14,#-75]! -34fd56fc| ldr d20, [x9,#-145]! -bd0dd53c| ldr q29, [x13,#-176]! -ab65443d| ldr b11, [x13,#281] -cb57537d| ldr h11, [x30,#2474] -f2606fbd| ldr s18, [x7,#12128] -088b67fd| ldr d8, [x24,#20240] -0173ce3d| ldr q1, [x24,#14784] -ba112c1c| ldr s26, .+0x58234 -e489c25c| ldr d4, .+0xfffffffffff8513c -42458d9c| ldr q2, .+0xfffffffffff1a8a8 -3cdb753c| ldr b28, [x25,w21,sxtw #0] -726b733c| ldr b18, [x27,x19] -395b627c| ldr h25, [x25,w2,uxtw #1] -9b486cbc| ldr s27, [x4,w12,uxtw] -1cda7efc| ldr d28, [x16,w30,sxtw #3] -365bf33c| ldr q22, [x25,w19,uxtw #4] -43a1413c| ldur b3, [x10,#26] -c7034f7c| ldur h7, [x30,#240] -ad8350bc| ldur s13, [x29,#-248] -07a350fc| ldur d7, [x24,#-246] -0212c63c| ldur q2, [x16,#97] -6f0a7a2f| mla v15.4h, v19.4h, v10.h[7] -fe95294e| mla v30.16b, v15.16b, v9.16b -f24a4f2f| mls v18.4h, v23.4h, v15.h[4] -26947e2e| mls v6.4h, v1.4h, v30.4h -6606115e| mov b6, v19.b[8] -0866116e| mov v8.b[8], v16.b[12] -6e1d0f4e| mov v14.b[7], w11 -6d1fa10e| orr v13.8b, v27.8b, v1.8b -b93f1a0e| umov w25, v29.h[6] -74e7020f| movi v20.8b, #0x5b -0ff4040f| fmov v15.2s, #-2.000000000000000000e+00 -4c47060f| movi v12.2s, #0xda, lsl #16 -aa06064f| movi v10.4s, #0xd5 -8de4042f| movi d13, #0xff00000000ff0000 -b1e6046f| movi v17.2d, #0xff0000ff00ff00ff -609f214e| mul v0.16b, v27.16b, v1.16b -9f5a206e| mvn v31.16b, v20.16b -da65032f| mvni v26.2s, #0x6e, lsl #24 -4d36036f| bic v13.4s, #0x72, lsl #8 -4d66052f| mvni v13.2s, #0xb2, lsl #24 -a4bbe06e| neg v4.2d, v29.2d -bf5a206e| mvn v31.16b, v21.16b -2b1fe24e| orn v11.16b, v25.16b, v2.16b -22e4024f| movi v2.16b, #0x41 -3086050f| movi v16.4h, #0xb1 -051db80e| orr v5.8b, v8.8b, v24.8b -48e2290e| pmull v8.8h, v18.8b, v9.8b -7341652e| raddhn v19.4h, v11.4s, v5.4s -1b417f6e| raddhn2 v27.8h, v8.4s, v31.4s -e158606e| rbit v1.16b, v7.16b -f418200e| rev16 v20.8b, v7.8b -228d2a0f| rshrn v2.2s, v9.2d, #22 -a861aa2e| rsubhn v8.2s, v13.2d, v10.2d -7160786e| rsubhn2 v17.8h, v3.4s, v24.4s -cc7f314e| saba v12.16b, v30.16b, v17.16b -1350644e| sabal2 v19.4s, v0.8h, v4.8h -a1757d4e| sabd v1.8h, v13.8h, v29.8h -0971a00e| sabdl v9.2d, v8.2s, v0.2s -af70214e| sabdl2 v15.8h, v5.16b, v1.16b -626ba04e| sadalp v2.2d, v27.4s -1503374e| saddl2 v21.8h, v24.16b, v23.16b -592b204e| saddlp v25.8h, v26.16b -d813600e| saddw v24.4s, v30.4s, v0.4h -31e5210f| scvtf v17.2s, v9.2s, #31 -aeda215e| scvtf s14, s21 -f0e9021e| scvtf s16, w15, #6 -42b4421e| scvtf d2, w2, #19 -8b10029e| scvtf s11, x4, #60 -59e6429e| scvtf d25, x18, #7 -cf01221e| scvtf s15, w14 -2d03621e| scvtf d13, w25 -af00229e| scvtf s15, x5 -bf00629e| scvtf d31, x5 -2a02025e| sha1c q10, s17, v2.4s -8b0b285e| sha1h s11, s28 -11201f5e| sha1m q17, s0, v31.4s -f110115e| sha1p q17, s7, v17.4s -b732115e| sha1su0 v23.4s, v21.4s, v17.4s -cf18285e| sha1su1 v15.4s, v6.4s -2e520f5e| sha256h2 q14, q17, v15.4s -77401a5e| sha256h q23, q3, v26.4s -b92a285e| sha256su0 v25.4s, v21.4s -7e63175e| sha256su1 v30.4s, v27.4s, v23.4s -d504ab0e| shadd v21.2s, v6.2s, v11.2s -5a54734f| shl v26.2d, v2.2d, #51 -0638212e| shll v6.8h, v0.8b, #8 -a238216e| shll2 v2.8h, v5.16b, #8 -f5863e0f| shrn v21.2s, v23.2d, #2 -f187234f| shrn2 v17.4s, v31.2d, #29 -e124b04e| shsub v1.4s, v7.4s, v16.4s -3657252f| sli v22.2s, v25.2s, #5 -c266aa4e| smax v2.4s, v22.4s, v10.4s -2c6ca74e| smin v12.4s, v1.4s, v7.4s -4aae390e| sminp v10.8b, v18.8b, v25.8b -1a82ba0e| smlal v26.2d, v16.2s, v26.2s -2381ad4e| smlal2 v3.2d, v9.4s, v13.4s -0da17a4e| smlsl2 v13.4s, v8.8h, v26.8h -4f2e0d4e| smov x15, v18.b[6] -e4a0980f| smull v4.2d, v7.2s, v24.s[0] -51c2220e| smull v17.8h, v18.8b, v2.8b -01c26d4e| smull2 v1.4s, v16.8h, v13.8h -f978205e| sqabs b25, b7 -760cef5e| sqadd d22, d3, d15 -390c224e| sqadd v25.16b, v1.16b, v2.16b -5439455f| sqdmlal s20, h10, v5.h[4] -8391765e| sqdmlal s3, h12, h22 -c9907a4e| sqdmlal2 v9.4s, v6.8h, v26.8h -0b73445f| sqdmlsl s11, h24, v4.h[0] -8e728d0f| sqdmlsl v14.2d, v20.2s, v13.s[0] -fe787d4f| sqdmlsl2 v30.4s, v7.8h, v13.h[7] -bdb2b55e| sqdmlsl d29, s21, s21 -d0c9be4f| sqdmulh v16.4s, v14.4s, v30.s[3] -89b77c5e| sqdmulh h9, h28, h28 -c9bb515f| sqdmull s9, h30, v1.h[5] -5379e07e| sqneg d19, d10 -4b7aa06e| sqneg v11.4s, v18.4s -1bd1750f| sqrdmulh v27.4h, v8.4h, v5.h[3] -f55e755e| sqrshl h21, h23, h21 -ba5fbd4e| sqrshl v26.4s, v29.4s, v29.4s -ba9d1e0f| sqrshrn v26.4h, v13.4s, #2 -3d9c284f| sqrshrn2 v29.4s, v1.2d, #24 -8a8f2c6f| sqrshrun2 v10.4s, v28.2d, #20 -eb760b5f| sqshl b11, b23, #3 -4a77220f| sqshl v10.2s, v26.2s, #2 -6c4cfb5e| sqshl d12, d3, d27 -ad4eba4e| sqshl v13.4s, v21.4s, v26.4s -9364257f| sqshlu s19, s4, #5 -b267392f| sqshlu v18.2s, v29.2s, #25 -c085042f| mvni v0.4h, #0x8e -7584326f| sqshrun2 v21.4s, v3.2d, #14 -3a2fe25e| sqsub d26, d25, d2 -2c2ca34e| sqsub v12.4s, v1.4s, v3.4s -484ba15e| sqxtn s8, d26 -824b210e| sqxtn v2.8b, v28.8h -5b48214e| sqxtn2 v27.16b, v2.8h -e228a16e| sqxtun2 v2.4s, v7.2d -1c44416f| sri v28.2d, v0.2d, #63 -1e56eb5e| srshl d30, d16, d11 -bb56fe4e| srshl v27.2d, v21.2d, v30.2d -c6262d0f| srshr v6.2s, v22.2s, #19 -0c366c5f| srsra d12, d16, #20 -13376e4f| srsra v19.2d, v24.2d, #18 -7ba5040f| movi v27.4h, #0x8b, lsl #8 -9c076f5f| sshr d28, d28, #17 -2804434f| sshr v8.2d, v1.2d, #61 -b717535f| ssra d23, d29, #45 -c2160f0f| ssra v2.8b, v22.8b, #1 -8a333a4e| ssubw2 v10.8h, v28.8h, v26.16b -3a70000c| st1 {v26.8b}, [x1] -1bab004c| st1 {v27.4s, v28.4s}, [x24] -8d69004c| st1 {v13.4s-v15.4s}, [x12] -9c26004c| st1 {v28.8h-v31.8h}, [x20] -c87a9f0c| st1 {v8.2s}, [x22],#8 -5a7f800c| st1 {v26.1d}, [x26], x0 -eea99f4c| st1 {v14.4s, v15.4s}, [x15],#32 -11af9d4c| st1 {v17.2d, v18.2d}, [x24], x29 -ec689f0c| st1 {v12.2s-v14.2s}, [x7],#24 -8662900c| st1 {v6.8b-v8.8b}, [x20], x16 -0b249f4c| st1 {v11.8h-v14.8h}, [x0],#64 -6b2d8b4c| st1 {v11.2d-v14.2d}, [x11], x11 -3212004d| st1 {v18.b}[12], [x17] -3392004d| st1 {v19.s}[3], [x17] -0284000d| st1 {v2.d}[0], [x0] -340f9f0d| st1 {v20.b}[3], [x25],#1 -0d069a4d| st1 {v13.b}[9], [x16], x26 -2e51950d| st1 {v14.h}[2], [x9], x21 -3f839f0d| st1 {v31.s}[0], [x25],#4 -1492844d| st1 {v20.s}[3], [x16], x4 -dd869f4d| st1 {v29.d}[1], [x22],#8 -2e869b4d| st1 {v14.d}[1], [x17], x27 -1e87000c| st2 {v30.4h, v31.4h}, [x24] -07829f0c| st2 {v7.8b, v8.8b}, [x16],#16 -d38a884c| st2 {v19.4s, v20.4s}, [x22], x8 -541c204d| st2 {v20.b, v21.b}[15], [x2] -9180200d| st2 {v17.s, v18.s}[0], [x4] -2585204d| st2 {v5.d, v6.d}[1], [x9] -2f06bf4d| st2 {v15.b, v16.b}[9], [x17],#2 -3b08b44d| st2 {v27.b, v28.b}[10], [x1], x20 -805bbf0d| st2 {v0.h, v1.h}[3], [x28],#4 -fb80bf0d| st2 {v27.s, v28.s}[0], [x7],#8 -6290a80d| st2 {v2.s, v3.s}[1], [x3], x8 -b587bf4d| st2 {v21.d, v22.d}[1], [x29],#16 -2c84b64d| st2 {v12.d, v13.d}[1], [x1], x22 -22469f0c| st3 {v2.4h-v4.4h}, [x17],#24 -0e30004d| st3 {v14.b-v16.b}[12], [x0] -62a1004d| st3 {v2.s-v4.s}[2], [x11] -54a4000d| st3 {v20.d-v22.d}[0], [x2] -84259f4d| st3 {v4.b-v6.b}[9], [x12],#3 -693c9d4d| st3 {v9.b-v11.b}[15], [x3], x29 -5b709f0d| st3 {v27.h-v29.h}[2], [x2],#6 -e47a960d| st3 {v4.h-v6.h}[3], [x23], x22 -a0a39f0d| st3 {v0.s-v2.s}[0], [x29],#12 -37b0890d| st3 {v23.s-v25.s}[1], [x1], x9 -9aa59f4d| st3 {v26.d-v28.d}[1], [x12],#24 -26a5924d| st3 {v6.d-v8.d}[1], [x9], x18 -3e05000c| st4 {v30.4h, v31.4h, v0.4h, v1.4h}, [x9] -a8039f0c| st4 {v8.8b-v11.8b}, [x29],#32 -4126204d| st4 {v1.b-v4.b}[9], [x18] -3b71204d| st4 {v27.h-v30.h}[6], [x9] -f2b3204d| st4 {v18.s-v21.s}[3], [sp] -7fa4200d| st4 {v31.d, v0.d, v1.d, v2.d}[0], [x3] -562ebf4d| st4 {v22.b-v25.b}[11], [x18],#4 -563cae0d| st4 {v22.b-v25.b}[7], [x2], x14 -1271bf4d| st4 {v18.h-v21.h}[6], [x8],#8 -e7a1bf0d| st4 {v7.s-v10.s}[0], [x15],#16 -f3b2a30d| st4 {v19.s-v22.s}[1], [x23], x3 -eca5bf4d| st4 {v12.d-v15.d}[1], [x15],#32 -4ca7bb0d| st4 {v12.d-v15.d}[0], [x26], x27 -4f5b182c| stnp s15, s22, [x26,#192] -e05e0b6c| stnp d0, d23, [x23,#176] -77be2eac| stnp q23, q15, [x19,#-560] -bb3fa72c| stp s27, s15, [x29],#-200 -ef18bb6c| stp d15, d6, [x7],#-80 -777d84ac| stp q23, q31, [x11],#128 -d0f9952d| stp s16, s30, [x14,#172]! -125ca26d| stp d18, d23, [x0,#-480]! -33bbbfad| stp q19, q14, [x25,#-16]! -6ebb322d| stp s14, s14, [x27,#-108] -cb92096d| stp d11, d4, [x22,#152] -f2871dad| stp q18, q1, [sp,#944] -f676003c| str b22, [x23],#7 -50f50d7c| str h16, [x10],#223 -0d251ebc| str s13, [x8],#-30 -1f3510fc| str d31, [x8],#-253 -05a4883c| str q5, [x0],#138 -800e063c| str b0, [x20,#96]! -668d157c| str h6, [x11,#-168]! -1f3d11bc| str s31, [x8,#-237]! -71bf06fc| str d17, [x27,#107]! -f50c843c| str q21, [x7,#64]! -f186013d| str b17, [x23,#97] -f0e5357d| str h16, [x15,#6898] -938d3bbd| str s19, [x12,#15244] -aeb813fd| str d14, [x5,#10096] -2cc4943d| str q12, [x1,#21264] -e2f8263c| str b2, [x7,x6,sxtx #0] -1d79373c| str b29, [x8,x23,lsl #0] -bc70003c| stur b28, [x5,#7] -7190157c| stur h17, [x3,#-167] -073309bc| stur s7, [x24,#147] -298100fc| stur d9, [x9,#8] -e8c1843c| stur q8, [x15,#76] -3384266e| sub v19.16b, v1.16b, v6.16b -9163750e| subhn v17.4h, v28.4s, v21.4s -f3627d4e| subhn2 v19.8h, v23.4s, v29.4s -1939205e| suqadd b25, b8 -0638604e| suqadd v6.8h, v0.8h -81a4284f| sshll2 v1.2d, v4.4s, #8 -f920030e| tbl v25.8b, {v7.16b, v8.16b}, v3.8b -71400e4e| tbl v17.16b, {v3.16b-v5.16b}, v14.16b -bc630d4e| tbl v28.16b, {v29.16b, v30.16b, v31.16b, v0.16b}, v13.16b -6803030e| tbl v8.8b, {v27.16b}, v3.8b -4b32124e| tbx v11.16b, {v18.16b, v19.16b}, v18.16b -8f50170e| tbx v15.8b, {v4.16b-v6.16b}, v23.8b -5673020e| tbx v22.8b, {v26.16b-v29.16b}, v2.8b -f2130f4e| tbx v18.16b, {v31.16b}, v15.16b -9e29c34e| trn1 v30.2d, v12.2d, v3.2d -9b6bcf4e| trn2 v27.2d, v28.2d, v15.2d -157cb02e| uaba v21.2s, v0.2s, v16.2s -28513c2e| uabal v8.8h, v9.8b, v28.8b -f950a26e| uabal2 v25.2d, v7.4s, v2.4s -a776b26e| uabd v7.4s, v21.4s, v18.4s -da726b2e| uabdl v26.4s, v22.4h, v11.4h -9473746e| uabdl2 v20.4s, v28.8h, v20.8h -aa6b602e| uadalp v10.2s, v29.4h -ac013d2e| uaddl v12.8h, v13.8b, v29.8b -e500a86e| uaddl2 v5.2d, v7.4s, v8.4s -9c28a02e| uaddlp v28.1d, v4.2s -4c3a302e| uaddlv h12, v18.8b -2810b62e| uaddw v8.2d, v1.2d, v22.2s -f2132d6e| uaddw2 v18.8h, v31.8h, v13.16b -b3e67f7f| ucvtf d19, d21, #1 -ece5676f| ucvtf v12.2d, v15.2d, #25 -d7d8217e| ucvtf s23, s6 -cdd9212e| ucvtf v13.2s, v14.2s -5788031e| ucvtf s23, w2, #30 -c7ac431e| ucvtf d7, w6, #21 -0777039e| ucvtf s7, x24, #35 -e4f4439e| ucvtf d4, x7, #3 -9100231e| ucvtf s17, w4 -e202631e| ucvtf d2, w23 -3903239e| ucvtf s25, x25 -2001639e| ucvtf d0, x9 -2a07b76e| uhadd v10.4s, v25.4s, v23.4s -dc25372e| uhsub v28.8b, v14.8b, v23.8b -de646f2e| umax v30.4h, v6.4h, v15.4h -4ba6766e| umaxp v11.8h, v18.8h, v22.8h -e26db42e| umin v2.2s, v15.2s, v20.2s -a7ae712e| uminp v7.4h, v21.4h, v17.4h -afaa716e| uminv h15, v21.8h -42298c2f| umlal v2.2d, v10.2s, v12.s[2] -0a826e2e| umlal v10.4s, v16.4h, v14.4h -2681a06e| umlal2 v6.2d, v9.4s, v0.4s -2860bd6f| umlsl2 v8.2d, v1.4s, v29.s[1] -19a26b6e| umlsl2 v25.4s, v16.8h, v11.8h -8a3d140e| mov w10, v12.s[2] -22a1ba6f| umull2 v2.2d, v9.4s, v26.s[1] -15c0712e| umull v21.4s, v0.4h, v17.4h -2ec0296e| umull2 v14.8h, v1.16b, v9.16b -6e0fba7e| uqadd s14, s27, s26 -db0fe06e| uqadd v27.2d, v30.2d, v0.2d -535e6c7e| uqrshl h19, h18, h12 -7c5cfe6e| uqrshl v28.2d, v3.2d, v30.2d -9a9e327f| uqrshrn s26, d20, #14 -339f0b2f| uqrshrn v19.8b, v25.8h, #5 -7e77337f| uqshl s30, s27, #19 -8b4d657e| uqshl h11, h12, h5 -414c622e| uqshl v1.4h, v2.4h, v2.4h -95942b2f| uqshrn v21.2s, v4.2d, #21 -d396246f| uqshrn2 v19.4s, v22.2d, #28 -b22ff27e| uqsub d18, d29, d18 -b32e756e| uqsub v19.8h, v21.8h, v21.8h -0e4b616e| uqxtn2 v14.8h, v24.4s -ca16236e| urhadd v10.16b, v22.16b, v3.16b -1f57a26e| urshl v31.4s, v24.4s, v2.4s -8324777f| urshr d3, d4, #9 -37caa16e| ursqrte v23.4s, v17.4s -b735517f| ursra d23, d13, #47 -0a47f67e| ushl d10, d24, d22 -e7a71c2f| ushll v7.4s, v31.4h, #12 -9c38607e| usqadd h28, h4 -dc39206e| usqadd v28.16b, v14.16b -dc145d7f| usra d28, d6, #35 -d720752e| usubl v23.4s, v6.4h, v21.4h -2c236f6e| usubl2 v12.4s, v25.8h, v15.8h -ed32222e| usubw v13.8h, v23.8h, v2.8b -72332d6e| usubw2 v18.8h, v27.8h, v13.16b -655a1c4e| uzp2 v5.16b, v19.16b, v28.16b -972a210e| xtn v23.8b, v20.8h -5f2aa14e| xtn2 v31.4s, v18.2d -9a38910e| zip1 v26.2s, v4.2s, v17.2s -d979990e| zip2 v25.2s, v14.2s, v25.2s -41e5a454| b.ne .+0xfffffffffff49ca8 -ea1b543a| ccmn wzr, #0x14, #0xa, ne -681946ba| ccmn x11, #0x6, #0x8, ne -2410463a| ccmn w1, w6, #0x4, ne -6e134cba| ccmn x27, x12, #0xe, ne -ad194f7a| ccmp w13, #0xf, #0xd, ne -471b53fa| ccmp x26, #0x13, #0x7, ne -a210467a| ccmp w5, w6, #0x2, ne -ee1246fa| ccmp x23, x6, #0xe, ne -be149b1a| csinc w30, w5, w27, ne -c415819a| csinc x4, x14, x1, ne -0510955a| csinv w5, w0, w21, ne -c51093da| csinv x5, x6, x19, ne -12158e5a| csneg w18, w8, w14, ne -5c159cda| csneg x28, x10, x28, ne -c810941a| csel w8, w6, w20, ne -80128c9a| csel x0, x20, x12, ne -f6179f1a| cset w22, eq -f5179f9a| cset x21, eq -ec139f5a| csetm w12, eq -ee139fda| csetm x14, eq -4b17981a| csinc w11, w26, w24, ne -b515909a| csinc x21, x13, x16, ne -b613955a| csinv w22, w29, w21, ne -f8108bda| csinv x24, x7, x11, ne -a0149d5a| csneg w0, w5, w29, ne -6a1492da| csneg x10, x3, x18, ne -8f143c1e| fccmp s4, s28, #0xf, ne -0f167f1e| fccmp d16, d31, #0xf, ne -5214291e| fccmpe s2, s9, #0x2, ne -1516631e| fccmpe d16, d3, #0x5, ne -2b1d271e| fcsel s11, s9, s7, ne -731e611e| fcsel d19, d19, d1, ne -c2560e54| b.cs .+0x1cad8 -2d2b563a| ccmn w25, #0x16, #0xd, cs -6c2b55ba| ccmn x27, #0x15, #0xc, cs -2521493a| ccmn w9, w9, #0x5, cs -032040ba| ccmn x0, x0, #0x3, cs -ea2a5c7a| ccmp w23, #0x1c, #0xa, cs -8e2842fa| ccmp x4, #0x2, #0xe, cs -8e22427a| ccmp w20, w2, #0xe, cs -cd204dfa| ccmp x6, x13, #0xd, cs -2824931a| csinc w8, w1, w19, cs -a3279a9a| csinc x3, x29, x26, cs -5921945a| csinv w25, w10, w20, cs -bd2386da| csinv x29, x29, x6, cs -a124915a| csneg w1, w5, w17, cs -5b2787da| csneg x27, x26, x7, cs -91209f1a| csel w17, w4, wzr, cs -f921979a| csel x25, x15, x23, cs -e4279f1a| cset w4, cc -ea279f9a| cset x10, cc -fe239f5a| csetm w30, cc -ec239fda| csetm x12, cc -ee25971a| csinc w14, w15, w23, cs -b726859a| csinc x23, x21, x5, cs -4b22845a| csinv w11, w18, w4, cs -2b209eda| csinv x11, x1, x30, cs -6b269b5a| csneg w11, w19, w27, cs -192691da| csneg x25, x16, x17, cs -0226391e| fccmp s16, s25, #0x2, cs -07246d1e| fccmp d0, d13, #0x7, cs -9626241e| fccmpe s20, s4, #0x6, cs -de27601e| fccmpe d30, d0, #0xe, cs -7d2d271e| fcsel s29, s11, s7, cs -3e2e7a1e| fcsel d30, d17, d26, cs -43a4df54| b.cc .+0xfffffffffffbf488 -0739533a| ccmn w8, #0x13, #0x7, cc -673b4fba| ccmn x27, #0xf, #0x7, cc -e333583a| ccmn wzr, w24, #0x3, cc -83325aba| ccmn x20, x26, #0x3, cc -eb38517a| ccmp w7, #0x11, #0xb, cc -2c3955fa| ccmp x9, #0x15, #0xc, cc -6f324b7a| ccmp w19, w11, #0xf, cc -09314ffa| ccmp x8, x15, #0x9, cc -60349c1a| csinc w0, w3, w28, cc -8835949a| csinc x8, x12, x20, cc -bb31935a| csinv w27, w13, w19, cc -9f319dda| csinv xzr, x12, x29, cc -8837855a| csneg w8, w28, w5, cc -cd3490da| csneg x13, x6, x16, cc -b033901a| csel w16, w29, w16, cc -5e31969a| csel x30, x10, x22, cc -ec379f1a| cset w12, cs -ea379f9a| cset x10, cs -eb339f5a| csetm w11, cs -fd339fda| csetm x29, cs -9934941a| csinc w25, w4, w20, cc -fa36829a| csinc x26, x23, x2, cc -2730895a| csinv w7, w1, w9, cc -703094da| csinv x16, x3, x20, cc -f636935a| csneg w22, w23, w19, cc -ba3484da| csneg x26, x5, x4, cc -e3343e1e| fccmp s7, s30, #0x3, cc -ce366a1e| fccmp d22, d10, #0xe, cc -de37271e| fccmpe s30, s7, #0xe, cc -1935751e| fccmpe d8, d21, #0x9, cc -603f241e| fcsel s0, s27, s4, cc -653f761e| fcsel d5, d27, d22, cc -a4fa5354| b.mi .+0xa7f54 -a248483a| ccmn w5, #0x8, #0x2, mi -e2484eba| ccmn x7, #0xe, #0x2, mi -2841553a| ccmn w9, w21, #0x8, mi -6e4259ba| ccmn x19, x25, #0xe, mi -2048567a| ccmp w1, #0x16, #0x0, mi -454a5afa| ccmp x18, #0x1a, #0x5, mi -0343487a| ccmp w24, w8, #0x3, mi -49434bfa| ccmp x26, x11, #0x9, mi -d747991a| csinc w23, w30, w25, mi -9544919a| csinc x21, x4, x17, mi -76428c5a| csinv w22, w19, w12, mi -06418eda| csinv x6, x8, x14, mi -4d46975a| csneg w13, w18, w23, mi -d74491da| csneg x23, x6, x17, mi -0941941a| csel w9, w8, w20, mi -2d41839a| csel x13, x9, x3, mi -ef479f1a| cset w15, pl -e5479f9a| cset x5, pl -f0439f5a| csetm w16, pl -e2439fda| csetm x2, pl -2a46841a| csinc w10, w17, w4, mi -f1468b9a| csinc x17, x23, x11, mi -3441835a| csinv w20, w9, w3, mi -b5438cda| csinv x21, x29, x12, mi -ad45945a| csneg w13, w13, w20, mi -f54793da| csneg x21, xzr, x19, mi -c5473f1e| fccmp s30, s31, #0x5, mi -8947601e| fccmp d28, d0, #0x9, mi -5247331e| fccmpe s26, s19, #0x2, mi -b045761e| fccmpe d13, d22, #0x0, mi -b34d331e| fcsel s19, s13, s19, mi -3a4d6d1e| fcsel d26, d9, d13, mi -a5497054| b.pl .+0xe0934 -eb5a493a| ccmn w23, #0x9, #0xb, pl -0a5941ba| ccmn x8, #0x1, #0xa, pl -0452523a| ccmn w16, w18, #0x4, pl -e55053ba| ccmn x7, x19, #0x5, pl -a45b407a| ccmp w29, #0x0, #0x4, pl -ca5b4efa| ccmp x30, #0xe, #0xa, pl -ab514e7a| ccmp w13, w14, #0xb, pl -ce5349fa| ccmp x30, x9, #0xe, pl -8555971a| csinc w5, w12, w23, pl -4b569e9a| csinc x11, x18, x30, pl -90538f5a| csinv w16, w28, w15, pl -c3508bda| csinv x3, x6, x11, pl -1f55955a| csneg wzr, w8, w21, pl -52568eda| csneg x18, x18, x14, pl -a750851a| csel w7, w5, w5, pl -b252899a| csel x18, x21, x9, pl -eb579f1a| cset w11, mi -e6579f9a| cset x6, mi -fd539f5a| csetm w29, mi -e1539fda| csetm x1, mi -33579e1a| csinc w19, w25, w30, pl -b5558c9a| csinc x21, x13, x12, pl -ec53885a| csinv w12, wzr, w8, pl -ec5196da| csinv x12, x15, x22, pl -ae57945a| csneg w14, w29, w20, pl -64578bda| csneg x4, x27, x11, pl -2657241e| fccmp s25, s4, #0x6, pl -2357761e| fccmp d25, d22, #0x3, pl -f255361e| fccmpe s15, s22, #0x2, pl -3756781e| fccmpe d17, d24, #0x7, pl -985c3f1e| fcsel s24, s4, s31, pl -5b5d621e| fcsel d27, d10, d2, pl -c6d26454| b.vs .+0xc9a58 -6c6a4f3a| ccmn w19, #0xf, #0xc, vs -2f694cba| ccmn x9, #0xc, #0xf, vs -e962583a| ccmn w23, w24, #0x9, vs -80615fba| ccmn x12, xzr, #0x0, vs -4b6b497a| ccmp w26, #0x9, #0xb, vs -cc6a48fa| ccmp x22, #0x8, #0xc, vs -4e61567a| ccmp w10, w22, #0xe, vs -476054fa| ccmp x2, x20, #0x7, vs -c965911a| csinc w9, w14, w17, vs -41668f9a| csinc x1, x18, x15, vs -db608f5a| csinv w27, w6, w15, vs -896097da| csinv x9, x4, x23, vs -1867915a| csneg w24, w24, w17, vs -49678eda| csneg x9, x26, x14, vs -3162881a| csel w17, w17, w8, vs -db608f9a| csel x27, x6, x15, vs -f9679f1a| cset w25, vc -f9679f9a| cset x25, vc -f7639f5a| csetm w23, vc -e1639fda| csetm x1, vc -f4678a1a| csinc w20, wzr, w10, vs -3e65879a| csinc x30, x9, x7, vs -6c63975a| csinv w12, w27, w23, vs -806191da| csinv x0, x12, x17, vs -7f679f5a| csneg wzr, w27, wzr, vs -3b6488da| csneg x27, x1, x8, vs -0565301e| fccmp s8, s16, #0x5, vs -e266621e| fccmp d23, d2, #0x2, vs -b7653a1e| fccmpe s13, s26, #0x7, vs -d866791e| fccmpe d22, d25, #0x8, vs -326d3d1e| fcsel s18, s9, s29, vs -f66e7b1e| fcsel d22, d23, d27, vs -e774fd54| b.vc .+0xffffffffffffae9c -0479483a| ccmn w8, #0x8, #0x4, vc -897b56ba| ccmn x28, #0x16, #0x9, vc -8b70513a| ccmn w4, w17, #0xb, vc -ca7150ba| ccmn x14, x16, #0xa, vc -46794f7a| ccmp w10, #0xf, #0x6, vc -057948fa| ccmp x8, #0x8, #0x5, vc -0373417a| ccmp w24, w1, #0x3, vc -ca705ffa| ccmp x6, xzr, #0xa, vc -d3769f1a| csinc w19, w22, wzr, vc -1076899a| csinc x16, x16, x9, vc -c8718e5a| cinv w8, w14, vs -06729eda| csinv x6, x16, x30, vc -6076895a| csneg w0, w19, w9, vc -b87589da| csneg x24, x13, x9, vc -3b72891a| csel w27, w17, w9, vc -fd70899a| csel x29, x7, x9, vc -e3779f1a| cset w3, vs -f4779f9a| cset x20, vs -fc739f5a| csetm w28, vs -ea739fda| csetm x10, vs -ab75891a| csinc w11, w13, w9, vc -6177859a| csinc x1, x27, x5, vc -3272945a| csinv w18, w17, w20, vc -7a729dda| csinv x26, x19, x29, vc -b5779e5a| csneg w21, w29, w30, vc -fe748eda| csneg x30, x7, x14, vc -ed76231e| fccmp s23, s3, #0xd, vc -cf74791e| fccmp d6, d25, #0xf, vc -b4763e1e| fccmpe s21, s30, #0x4, vc -59766e1e| fccmpe d18, d14, #0x9, vc -ce7c271e| fcsel s14, s6, s7, vc -be7c651e| fcsel d30, d5, d5, vc -88f29d54| b.hi .+0xfffffffffff3be50 -8f8b513a| ccmn w28, #0x11, #0xf, hi -6f8b5cba| ccmn x27, #0x1c, #0xf, hi -8780463a| ccmn w4, w6, #0x7, hi -4f8348ba| ccmn x26, x8, #0xf, hi -48884d7a| ccmp w2, #0xd, #0x8, hi -088957fa| ccmp x8, #0x17, #0x8, hi -0180517a| ccmp w0, w17, #0x1, hi -ce805efa| ccmp x6, x30, #0xe, hi -1d868e1a| csinc w29, w16, w14, hi -0785889a| cinc x7, x8, ls -4782935a| csinv w7, w18, w19, hi -118197da| csinv x17, x8, x23, hi -00868a5a| csneg w0, w16, w10, hi -128585da| csneg x18, x8, x5, hi -4c808f1a| csel w12, w2, w15, hi -7783909a| csel x23, x27, x16, hi -e5879f1a| cset w5, ls -f3879f9a| cset x19, ls -f9839f5a| csetm w25, ls -eb839fda| csetm x11, ls -b3869e1a| csinc w19, w21, w30, hi -f086909a| csinc x16, x23, x16, hi -34839c5a| csinv w20, w25, w28, hi -ea8294da| csinv x10, x23, x20, hi -8e84895a| csneg w14, w4, w9, hi -c48695da| csneg x4, x22, x21, hi -cc84361e| fccmp s6, s22, #0xc, hi -8086781e| fccmp d20, d24, #0x0, hi -7187341e| fccmpe s27, s20, #0x1, hi -30867e1e| fccmpe d17, d30, #0x0, hi -b98e361e| fcsel s25, s21, s22, hi -2c8c651e| fcsel d12, d1, d5, hi -69888c54| b.ls .+0xfffffffffff1910c -0e9b523a| ccmn w24, #0x12, #0xe, ls -679854ba| ccmn x3, #0x14, #0x7, ls -0492563a| ccmn w16, w22, #0x4, ls -42924dba| ccmn x18, x13, #0x2, ls -2198417a| ccmp w1, #0x1, #0x1, ls -c89a54fa| ccmp x22, #0x14, #0x8, ls -0f905e7a| ccmp w0, w30, #0xf, ls -c59342fa| ccmp x30, x2, #0x5, ls -0d958c1a| csinc w13, w8, w12, ls -7596879a| csinc x21, x19, x7, ls -1791905a| csinv w23, w8, w16, ls -5e9186da| csinv x30, x10, x6, ls -23969e5a| csneg w3, w17, w30, ls -619493da| csneg x1, x3, x19, ls -b5918e1a| csel w21, w13, w14, ls -b393819a| csel x19, x29, x1, ls -f9979f1a| cset w25, hi -ee979f9a| cset x14, hi -eb939f5a| csetm w11, hi -ea939fda| csetm x10, hi -f497871a| csinc w20, wzr, w7, ls -c4949d9a| csinc x4, x6, x29, ls -e892895a| csinv w8, w23, w9, ls -6c908eda| csinv x12, x3, x14, ls -26949f5a| csneg w6, w1, wzr, ls -329498da| csneg x18, x1, x24, ls -81952d1e| fccmp s12, s13, #0x1, ls -60967f1e| fccmp d19, d31, #0x0, ls -1794321e| fccmpe s0, s18, #0x7, ls -3f97641e| fccmpe d25, d4, #0xf, ls -089c2d1e| fcsel s8, s0, s13, ls -699f631e| fcsel d9, d27, d3, ls -8afbfe54| b.ge .+0xffffffffffffdf70 -44aa573a| ccmn w18, #0x17, #0x4, ge -00a84fba| ccmn x0, #0xf, #0x0, ge -c9a04d3a| ccmn w6, w13, #0x9, ge -88a041ba| ccmn x4, x1, #0x8, ge -caaa467a| ccmp w22, #0x6, #0xa, ge -85a85cfa| ccmp x4, #0x1c, #0x5, ge -47a35f7a| ccmp w26, wzr, #0x7, ge -0aa34dfa| ccmp x24, x13, #0xa, ge -dea7981a| csinc w30, w30, w24, ge -c6a5909a| csinc x6, x14, x16, ge -8aa1965a| csinv w10, w12, w22, ge -e3a392da| csinv x3, xzr, x18, ge -20a5845a| csneg w0, w9, w4, ge -fba694da| csneg x27, x23, x20, ge -faa1851a| csel w26, w15, w5, ge -25a3959a| csel x5, x25, x21, ge -e2a79f1a| cset w2, lt -fda79f9a| cset x29, lt -eea39f5a| csetm w14, lt -e2a39fda| csetm x2, lt -efa6951a| csinc w15, w23, w21, ge -4ca69e9a| csinc x12, x18, x30, ge -22a2885a| csinv w2, w17, w8, ge -53a089da| csinv x19, x2, x9, ge -f9a6875a| csneg w25, w23, w7, ge -c9a795da| csneg x9, x30, x21, ge -24a73e1e| fccmp s25, s30, #0x4, ge -6da5651e| fccmp d11, d5, #0xd, ge -bda52e1e| fccmpe s13, s14, #0xd, ge -f6a7651e| fccmpe d31, d5, #0x6, ge -e3ac251e| fcsel s3, s7, s5, ge -b3ae781e| fcsel d19, d21, d24, ge -ab621754| b.lt .+0x2ec54 -e1b84c3a| ccmn w7, #0xc, #0x1, lt -89ba4eba| ccmn x20, #0xe, #0x9, lt -88b14a3a| ccmn w12, w10, #0x8, lt -89b145ba| ccmn x12, x5, #0x9, lt -47b9547a| ccmp w10, #0x14, #0x7, lt -07b95bfa| ccmp x8, #0x1b, #0x7, lt -4ab2407a| ccmp w18, w0, #0xa, lt -8ab144fa| ccmp x12, x4, #0xa, lt -79b5821a| csinc w25, w11, w2, lt -8bb4919a| csinc x11, x4, x17, lt -c9b19f5a| csinv w9, w14, wzr, lt -10b28bda| csinv x16, x16, x11, lt -d8b4925a| csneg w24, w6, w18, lt -3ab69fda| csneg x26, x17, xzr, lt -2cb3841a| csel w12, w25, w4, lt -77b0969a| csel x23, x3, x22, lt -e2b79f1a| cset w2, ge -e9b79f9a| cset x9, ge -f4b39f5a| csetm w20, ge -f2b39fda| csetm x18, ge -87b59a1a| csinc w7, w12, w26, lt -70b69c9a| csinc x16, x19, x28, lt -17b08f5a| csinv w23, w0, w15, lt -cab288da| csinv x10, x22, x8, lt -bab7905a| csneg w26, w29, w16, lt -08b796da| csneg x8, x24, x22, lt -2eb73e1e| fccmp s25, s30, #0xe, lt -86b7671e| fccmp d28, d7, #0x6, lt -f0b6211e| fccmpe s23, s1, #0x0, lt -b2b76b1e| fccmpe d29, d11, #0x2, lt -e8bf241e| fcsel s8, s31, s4, lt -9ebd7d1e| fcsel d30, d12, d29, lt -cc87d354| b.gt .+0xfffffffffffa70f8 -43c8563a| ccmn w2, #0x16, #0x3, gt -c5c94dba| ccmn x14, #0xd, #0x5, gt -6fc0533a| ccmn w3, w19, #0xf, gt -06c351ba| ccmn x24, x17, #0x6, gt -c3c95c7a| ccmp w14, #0x1c, #0x3, gt -29cb52fa| ccmp x25, #0x12, #0x9, gt -8bc25a7a| ccmp w20, w26, #0xb, gt -45c14dfa| ccmp x10, x13, #0x5, gt -80c7841a| csinc w0, w28, w4, gt -40c4919a| csinc x0, x2, x17, gt -04c2805a| csinv w4, w16, w0, gt -55c086da| csinv x21, x2, x6, gt -32c7935a| csneg w18, w25, w19, gt -31c59fda| csneg x17, x9, xzr, gt -6cc2921a| csel w12, w19, w18, gt -37c08d9a| csel x23, x1, x13, gt -eec79f1a| cset w14, le -eec79f9a| cset x14, le -f4c39f5a| csetm w20, le -f6c39fda| csetm x22, le -31c5971a| csinc w17, w9, w23, gt -76c7899a| csinc x22, x27, x9, gt -bbc1805a| csinv w27, w13, w0, gt -e8c384da| csinv x8, xzr, x4, gt -83c5955a| csneg w3, w12, w21, gt -77c790da| csneg x23, x27, x16, gt -e9c5251e| fccmp s15, s5, #0x9, gt -a3c4671e| fccmp d5, d7, #0x3, gt -71c72e1e| fccmpe s27, s14, #0x1, gt -3dc4781e| fccmpe d1, d24, #0xd, gt -57cf3d1e| fcsel s23, s26, s29, gt -8fcc7e1e| fcsel d15, d4, d30, gt -8d1ec054| b.le .+0xfffffffffff803d0 -4bdb5b3a| ccmn w26, #0x1b, #0xb, le -47d94fba| ccmn x10, #0xf, #0x7, le -4dd1443a| ccmn w10, w4, #0xd, le -82d353ba| ccmn x28, x19, #0x2, le -e8d9527a| ccmp w15, #0x12, #0x8, le -00db45fa| ccmp x24, #0x5, #0x0, le -c5d1437a| ccmp w14, w3, #0x5, le -e4d041fa| ccmp x7, x1, #0x4, le -0bd6941a| csinc w11, w16, w20, le -57d6929a| cinc x23, x18, gt -3dd29a5a| csinv w29, w17, w26, le -ded085da| csinv x30, x6, x5, le -27d5985a| csneg w7, w9, w24, le -7fd59ada| csneg xzr, x11, x26, le -b7d0911a| csel w23, w5, w17, le -a4d3879a| csel x4, x29, x7, le -e6d79f1a| cset w6, gt -f1d79f9a| cset x17, gt -f3d39f5a| csetm w19, gt -f9d39fda| csetm x25, gt -42d78d1a| csinc w2, w26, w13, le -88d58a9a| csinc x8, x12, x10, le -ccd3805a| csinv w12, w30, w0, le -0fd085da| csinv x15, x0, x5, le -55d5975a| csneg w21, w10, w23, le -3fd699da| csneg xzr, x17, x25, le -60d4251e| fccmp s3, s5, #0x0, le -6dd6601e| fccmp d19, d0, #0xd, le -bdd5221e| fccmpe s13, s2, #0xd, le -f4d67d1e| fccmpe d23, d29, #0x4, le -0cdd381e| fcsel s12, s8, s24, le -70de7e1e| fcsel d16, d19, d30, le -8e585454| b.al .+0xa8b10 -41eb483a| ccmn w26, #0x8, #0x1, al -8aeb42ba| ccmn x28, #0x2, #0xa, al -c8e3473a| ccmn w30, w7, #0x8, al -ade059ba| ccmn x5, x25, #0xd, al -67eb5b7a| ccmp w27, #0x1b, #0x7, al -05e849fa| ccmp x0, #0x9, #0x5, al -42e3407a| ccmp w26, w0, #0x2, al -03e053fa| ccmp x0, x19, #0x3, al -9ce4931a| csinc w28, w4, w19, al -8ee69d9a| csinc x14, x20, x29, al -68e0835a| csinv w8, w3, w3, al -20e381da| csinv x0, x25, x1, al -e0e58d5a| csneg w0, w15, w13, al -9ae589da| csneg x26, x12, x9, al -6ee0941a| csel w14, w3, w20, al -77e38a9a| csel x23, x27, x10, al -efe79f1a| csinc w15, wzr, wzr, al -e5e79f9a| csinc x5, xzr, xzr, al -f2e39f5a| csinv w18, wzr, wzr, al -fae39fda| csinv x26, xzr, xzr, al -ede7861a| csinc w13, wzr, w6, al -0ce58a9a| csinc x12, x8, x10, al -75e2835a| csinv w21, w19, w3, al -38e391da| csinv x24, x25, x17, al -fee4845a| csneg w30, w7, w4, al -09e49bda| csneg x9, x0, x27, al -a8e6271e| fccmp s21, s7, #0x8, al -ede67d1e| fccmp d23, d29, #0xd, al -bbe53b1e| fccmpe s13, s27, #0xb, al -70e6661e| fccmpe d19, d6, #0x0, al -01ee3b1e| fcsel s1, s16, s27, al -15ec651e| fcsel d21, d0, d5, al -4f462554| b.al .+0x4a8c8 -eef9493a| ccmn w15, #0x9, #0xe, al -88fa53ba| ccmn x20, #0x13, #0x8, al -c0f25f3a| ccmn w22, wzr, #0x0, al -c6f05cba| ccmn x6, x28, #0x6, al -45f84c7a| ccmp w2, #0xc, #0x5, al -a3fa4afa| ccmp x21, #0xa, #0x3, al -caf3517a| ccmp w30, w17, #0xa, al -81f055fa| ccmp x4, x21, #0x1, al -cbf69e1a| csinc w11, w22, w30, al -01f48e9a| csinc x1, x0, x14, al -61f1845a| csinv w1, w11, w4, al -11f397da| csinv x17, x24, x23, al -7bf69f5a| csneg w27, w19, wzr, al -b1f686da| csneg x17, x21, x6, al -69f39e1a| csel w9, w27, w30, al -79f2859a| csel x25, x19, x5, al -e1f79f1a| csinc w1, wzr, wzr, al -e6f79f9a| csinc x6, xzr, xzr, al -fcf39f5a| csinv w28, wzr, wzr, al -fbf39fda| csinv x27, xzr, xzr, al -2ef4831a| csinc w14, w1, w3, al -55f6859a| csinc x21, x18, x5, al -4ff0905a| csinv w15, w2, w16, al -81f393da| csinv x1, x28, x19, al -8bf68d5a| csneg w11, w20, w13, al -c2f48fda| csneg x2, x6, x15, al -e9f6391e| fccmp s23, s25, #0x9, al -27f46f1e| fccmp d1, d15, #0x7, al -72f6301e| fccmpe s19, s16, #0x2, al -37f57a1e| fccmpe d9, d26, #0x7, al -fcfe3a1e| fcsel s28, s23, s26, al -80fd701e| fcsel d0, d12, d16, al -40946454| b.eq .+0xc9288 -8b09473a| ccmn w12, #0x7, #0xb, eq -c50a5eba| ccmn x22, #0x1e, #0x5, eq -05005a3a| ccmn w0, w26, #0x5, eq -cf024bba| ccmn x22, x11, #0xf, eq -8a084f7a| ccmp w4, #0xf, #0xa, eq -e20a41fa| ccmp x23, #0x1, #0x2, eq -8c015f7a| ccmp w12, wzr, #0xc, eq -e4015cfa| ccmp x15, x28, #0x4, eq -42078e1a| csinc w2, w26, w14, eq -2005879a| csinc x0, x9, x7, eq -f003955a| csinv w16, wzr, w21, eq -dc019dda| csinv x28, x14, x29, eq -4607885a| csneg w6, w26, w8, eq -26069eda| csneg x6, x17, x30, eq -72018a1a| csel w18, w11, w10, eq -8003849a| csel x0, x28, x4, eq -f1079f1a| cset w17, ne -fb079f9a| cset x27, ne -ef039f5a| csetm w15, ne -e1039fda| csetm x1, ne -5307881a| csinc w19, w26, w8, eq -8a06969a| csinc x10, x20, x22, eq -ab00955a| csinv w11, w5, w21, eq -c3039bda| csinv x3, x30, x27, eq -8005875a| csneg w0, w12, w7, eq -740694da| csneg x20, x19, x20, eq -e207281e| fccmp s31, s8, #0x2, eq -2b056a1e| fccmp d9, d10, #0xb, eq -7e063f1e| fccmpe s19, s31, #0xe, eq -3c05671e| fccmpe d9, d7, #0xc, eq -830f271e| fcsel s3, s28, s7, eq -4d0d621e| fcsel d13, d10, d2, eq -bf2003d5| sevl -9f2003d5| sev -7f2003d5| wfi -5f2003d5| wfe -3f2003d5| yield -1f2003d5| nop -df4d03d5| msr daifset, #0xd -ff4d03d5| msr daifclr, #0xd -28d91b14| b .+0x6f64a0 -da6cb530| adr x26, .+0xfffffffffff6ad99 -15e5e514| b .+0x3979454 -ff4603d5| msr daifclr, #0x6 -df4803d5| msr daifset, #0x8 -bf4100d5| msr spsel, #0x1 -9f3f03d5| dsb sy -9f3e03d5| dsb st -9f3d03d5| dsb ld -9f3b03d5| dsb ish -9f3a03d5| dsb ishst -9f3903d5| dsb ishld -9f3703d5| dsb nsh -9f3603d5| dsb nshst -9f3503d5| dsb nshld -9f3303d5| dsb osh -9f3203d5| dsb oshst -9f3103d5| dsb oshld -ff4603d5| msr daifclr, #0x6 -df4803d5| msr daifset, #0x8 -bf4100d5| msr spsel, #0x1 -a3681b53| lsl w3, w5, #5 -47dc78d3| lsl x7, x2, #8 -0500a012| movn w5, #0x0, lsl #16 -0500e092| movn x5, #0x0, lsl #48 -0500a052| movz w5, #0x0, lsl #16 -0500a0d2| movz x5, #0x0, lsl #16 -cd5a206e| mvn v13.16b, v22.16b -cd5a202e| mvn v13.8b, v22.8b -743d050e| umov w20, v11.b[2] -743d0a0e| umov w20, v11.h[2] -743d0c0e| mov w20, v11.s[1] -743d084e| mov x20, v11.d[0] diff --git a/src/cmd/vendor/golang.org/x/arch/arm64/arm64asm/testdata/plan9cases.txt b/src/cmd/vendor/golang.org/x/arch/arm64/arm64asm/testdata/plan9cases.txt deleted file mode 100644 index 873de3db44df15..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/arm64/arm64asm/testdata/plan9cases.txt +++ /dev/null @@ -1,4564 +0,0 @@ -0a011f1a| ADCW ZR, R8, R10 -4c00009a| ADC R0, R2, R12 -a602093a| ADCSW R9, R21, R6 -d60217ba| ADCS R23, R22, R22 -0921250b| ADDW R5.UXTH, R8, R9 -ee9e288b| ADD R8.SXTB<<7, R23, R14 -23123011| ADDW $3076, R17, R3 -2ba32391| ADD $2280, R25, R11 -67158d0b| ADDW R13->5, R11, R7 -30da198b| ADD R25<<54, R17, R16 -a7e72c2b| ADDSW R12.SXTX<<1, R29, R7 -357338ab| ADDS R24.UXTX<<4, R25, R21 -6b147731| ADDSW $(3525<<12), R3, R11 -cd59872b| ADDSW R7->22, R14, R13 -e41f4eab| ADDS R14>>7, ZR, R4 -a2432412| ANDW $4026540031, R29, R2 -93910e92| AND $34903429696192636, R12, R19 -7a1ec98a| AND R9@>7, R19, R26 -1ff32972| TSTW $2863311530, R24 -458051f2| ANDS $-140737488289793, R2, R5 -af629a6a| ANDSW R26->24, R21, R15 -7ab0dfea| ANDS ZR@>44, R3, R26 -792bcc1a| ASRW R12, R27, R25 -872bce9a| ASR R14, R28, R7 -99ff4b93| ASR $11, R28, R25 -1628c91a| ASRW R9, R0, R22 -4e2acf9a| ASR R15, R18, R14 -4be5a454| BLT -186582(PC) -53257114| JMP 7415123(PC) -dbb557b3| BFXIL $23, R14, $23, R27 -70e861b3| BFXIL $33, R3, $26, R16 -88a75ab3| BFXIL $26, R28, $16, R8 -b03ce70a| BICW R7@>15, R5, R16 -9235ec8a| BIC R12@>13, R12, R18 -7450b96a| BICSW R25->20, R3, R20 -3730b3ea| BICS R19->12, R1, R23 -9b897797| CALL -8943205(PC) -e0013fd6| CALL (R15) -a0031fd6| JMP (R29) -e08c31d4| BRK $35943 -027eb435| CBNZW R2, -154640(PC) -c7eb42b5| CBNZ R7, 137054(PC) -8f1d4c34| CBZW R15, 155884(PC) -e1c5abb4| CBZ R1, -172497(PC) -4bfb543a| CCMNW AL, R26, $20, $11 -015b46ba| CCMN PL, R24, $6, $1 -8602463a| CCMNW EQ, R20, R6, $6 -c6d34cba| CCMN LE, R30, R12, $6 -a76b4f7a| CCMPW VS, R29, $15, $7 -e3d853fa| CCMP LE, R7, $19, $3 -4022467a| CCMPW HS, R18, R6, $0 -c7b346fa| CCMP LT, R30, R6, $7 -ee279b1a| CSINCW HS, ZR, R27, R14 -4174819a| CSINC VC, R2, R1, R1 -5100955a| CSINVW EQ, R2, R21, R17 -573093da| CSINV LO, R2, R19, R23 -5f3403d5| CLREX $4 -e615c05a| CLSW R15, R6 -ff15c0da| CLS R15, ZR -2e10c05a| CLZW R1, R14 -a912c0da| CLZ R21, R9 -ff11352b| CMNW R21.UXTB<<4, R15 -1f5220ab| CMN R0.UXTW<<4, R16 -ff02266b| CMPW R6.UXTB, R23 -5fb739eb| CMP R25.SXTH<<5, R26 -bfa73bf1| CMP $3817, R29 -7f5c47eb| CMP R7>>23, R3 -2e458e5a| CSNEGW MI, R9, R14, R14 -c3559cda| CSNEG PL, R14, R28, R3 -1041d11a| CRC32B R17, R8, R16 -bb46c31a| CRC32H R3, R21, R27 -c94bd61a| CRC32W R22, R30, R9 -8f4cd49a| CRC32X R20, R4, R15 -7653d21a| CRC32CB R18, R27, R22 -1454d51a| CRC32CH R21, R0, R20 -7c58c91a| CRC32CW R9, R3, R28 -185ccb9a| CRC32CX R11, R0, R24 -8c30941a| CSELW LO, R4, R20, R12 -0ea08c9a| CSEL GE, R0, R12, R14 -e3b79f1a| CSETW GE, R3 -fea79f9a| CSET LT, R30 -e5639f5a| CSETMW VC, R5 -e4739fda| CSETM VS, R4 -bad4981a| CSINCW LE, R5, R24, R26 -5167909a| CSINC VS, R26, R16, R17 -65e3955a| CSINVW AL, R27, R21, R5 -8e338bda| CSINV LO, R28, R11, R14 -0a269d5a| CSNEGW HS, R16, R29, R10 -ab1692da| CSNEG NE, R21, R18, R11 -418ea5d4| DCPS1 $11378 -6239a5d4| DCPS2 $10699 -e3ebabd4| DCPS3 $24415 -bf3a03d5| DMB $10 -e003bfd6| DRPS -9f3003d5| DSB $0 -c974354a| EONW R21<<29, R6, R9 -89b86eca| EON R14>>46, R4, R9 -76e343d2| EOR $-2287828610704211969, R27, R22 -536d8c4a| EORW R12->27, R10, R19 -d1ef1cca| EOR R28<<59, R30, R17 -e0039fd6| ERET -591d8813| EXTRW $7, R8, R10, R25 -888dd693| EXTR $35, R22, R12, R8 -bf2003d5| SEVL -df2003d5| HINT $6 -a0fc5fd4| HLT $65509 -df3103d5| ISB $1 -9dfddf88| LDARW (R12), R29 -76ffdfc8| LDAR (R27), R22 -36ffdf08| LDARB (R25), R22 -bcfcdf48| LDARH (R5), R28 -54c17f88| LDAXPW (R10), (R20, R16) -3eaf7fc8| LDAXP (R25), (R30, R11) -e2fd5f88| LDAXRW (R15), R2 -f5fd5fc8| LDAXR (R15), R21 -70fe5f08| LDAXRB (R19), R16 -bcfc5f48| LDAXRH (R5), R28 -ecff5928| LDNPW 204(RSP), ZR, R12 -852744a8| LDNP 64(R28), R9, R5 -1286d728| LDP.P 188(R16), (R18, R1) -7668e8a8| LDP.P -384(R3), (R22, R26) -6d8bc729| LDP.W 60(R27), (R13, R2) -1cadd1a9| LDP.W 280(R8), (R28, R11) -bf4e7e29| LDP -16(R21), (ZR, R19) -61695fa9| LDP 496(R11), (R1, R26) -4c00e668| LDPSW -208(R2), R0, R12 -85a0cb69| LDPSW 92(R4), R8, R5 -9b894d69| LDPSW 108(R12), R2, R27 -e9955ab8| MOVWU.P -87(R15), R9 -5c255df8| MOVD.P -46(R10), R28 -703c57b8| MOVWU.W -141(R3), R16 -1dac57f8| MOVD.W -134(R0), R29 -393c50b9| MOVWU 4156(R1), R25 -498d5cf9| MOVD 14616(R10), R9 -72fa72b8| MOVWU (R19)(R18.SXTX<<2), R18 -daeb66f8| MOVD (R30)(R6.SXTX), R26 -8ca74238| MOVBU.P 42(R28), R12 -4e5c5e38| MOVBU.W -27(R2), R14 -03936d39| MOVBU 2916(R24), R3 -577a6e38| MOVBU (R18)(R14), R23 -adb54678| MOVHU.P 107(R13), R13 -820f4c78| MOVHU.W 192(R28), R2 -92787579| MOVHU 6844(R4), R18 -4bd6c438| MOVBW.P 77(R18), R11 -fb478238| MOVB.P 36(RSP), R27 -4d7edc38| MOVBW.W -57(R18), R13 -18ee9438| MOVB.W -178(R16), R24 -16b9c639| MOVBW 430(R8), R22 -37958f39| MOVB 997(R9), R23 -af7ae238| MOVBW (R21)(R2), R15 -1568fa38| MOVBW (R0)(R26), R21 -744bbf38| MOVB (R27)(ZR.UXTW), R20 -f069a538| MOVB (R15)(R5), R16 -d9a6cd78| MOVHW.P 218(R22), R25 -ff368b78| MOVH.P 179(R23), ZR -5b8cc878| MOVHW.W 136(R2), R27 -361f9c78| MOVH.W -63(R25), R22 -359bec79| MOVHW 5708(R25), R21 -4d6c8079| MOVH 54(R2), R13 -9deae578| MOVHW (R20)(R5.SXTX), R29 -f2fab878| MOVH (R23)(R24.SXTX<<1), R18 -02669cb8| MOVW.P -58(R16), R2 -5c8e92b8| MOVW.W -216(R18), R28 -ea9e92b9| MOVW 4764(R23), R10 -49dabcb8| MOVW (R18)(R28.SXTW<<2), R9 -64285eb8| LDTRW -30(R3), R4 -6ab851f8| LDTR -229(R3), R10 -aa094f38| LDTRBW 240(R13), R10 -b7894e78| LDTRH 232(R13), R23 -85cadd38| LDTRSBW -36(R20), R5 -2db99838| LDTRSB -117(R9), R13 -7ef8ce78| LDTRSHW 239(R3), R30 -786a8978| LDTRSH 150(R19), R24 -c5eb81b8| LDTRSW 30(R30), R5 -a1f14bb8| LDURW 191(R13), R1 -c3425cf8| LDUR -60(R22), R3 -2e125038| LDURBW -255(R17), R14 -26004878| LDURHW 128(R1), R6 -c3e3cd38| LDURSBW 222(R30), R3 -27618938| LDURSB 150(R9), R7 -7c71db78| LDURSHW -73(R11), R28 -1d109e78| LDURSH -31(R0), R29 -d48084b8| LDURSW 72(R6), R20 -172f7f88| LDXPW (R24), (R23, R11) -10347fc8| LDXP (R0), (R16, R13) -fe7f5f88| LDXRW (RSP), R30 -6c7f5fc8| LDXR (R27), R12 -047c5f08| LDXRB (R0), R4 -9a7d5f48| LDXRH (R12), R26 -4f21cb1a| LSLW R11, R10, R15 -1523db9a| LSL R27, R24, R21 -81c74fd3| UBFX $15, R28, $35, R1 -c922c81a| LSLW R8, R22, R9 -fd22dc9a| LSL R28, R23, R29 -4226dd1a| LSRW R29, R18, R2 -a224ca9a| LSR R10, R5, R2 -707c0153| LSRW $1, R3, R16 -34fc4cd3| LSR $12, R1, R20 -6c24c91a| LSRW R9, R3, R12 -8527c89a| LSR R8, R28, R5 -ea36171b| MADDW R23, R13, R23, R10 -e47a0a9b| MADD R10, R30, R23, R4 -35fd001b| MNEGW R0, R9, R21 -77ff0e9b| MNEG R14, R27, R23 -38030011| ADDW $0, R25, R24 -37030091| ADD $0, R25, R23 -94b8ad12| MOVW $2453405695, R20 -fff29892| MOVD $-51096, ZR -d4adb252| MOVW $2507014144, R20 -8747e2d2| MOVD $1313925191285342208, R7 -f5132d32| ORRW $16252928, ZR, R21 -eb7f34b2| MOVD $-1, R11 -f503092a| MOVW R9, R21 -e7031eaa| MOVD R30, R7 -35e8c1f2| MOVK $(3905<<32), R21 -44629512| MOVW $4294923501, R4 -cc0dd392| MOVD $-167598213824513, R12 -cbfb9152| MOVW $36830, R11 -3d25ebd2| MOVD $6424666343420723200, R29 -e67a3fd5| MRS $31703, R6 -f9dd15d5| MSR R25, S2_5_C13_C13_7 -25840c1b| MSUBW R12, R1, R1, R5 -02ce1a9b| MSUB R26, R19, R16, R2 -b67c1a1b| MULW R26, R5, R22 -607c049b| MUL R4, R3, R0 -e97f6daa| MVN R13>>31, R9 -fe071f6b| NEGSW ZR<<1, R30 -f68f14eb| NEGS R20<<35, R22 -e8030d5a| NGCW R13, R8 -fe031eda| NGC R30, R30 -e5030a7a| NGCSW R10, R5 -f00318fa| NGCS R24, R16 -1f2003d5| NOP -032ee42a| ORNW R4@>11, R16, R3 -634cf6aa| ORN R22@>19, R3, R3 -f8492d32| ORRW $4294443071, R15, R24 -96f542b2| ORR $-3458764513820540929, R12, R22 -1c110d2a| ORRW R13<<4, R8, R28 -c65b1eaa| ORR R30<<22, R30, R6 -f300b2f9| PRFM 25600(R7), PSTL2STRM -2aa196d8| PRFM -215799(PC), PLIL2KEEP -2ad8bef8| PRFM (R1)(R30.SXTW<<3), PLIL2KEEP -c62184f8| PRFUM 66(R14), $6 -3601c05a| RBITW R9, R22 -6401c0da| RBIT R11, R4 -e0035fd6| RET ZR -0a09c05a| REVW R8, R10 -220cc0da| REV R1, R2 -b206c05a| REV16W R21, R18 -2407c0da| REV16 R25, R4 -7e0bc0da| REV32 R27, R30 -ae0ec0da| REV R21, R14 -336f8413| EXTRW $27, R4, R25, R19 -af47ca93| EXTR $17, R10, R29, R15 -bc2cdb1a| RORW R27, R5, R28 -e52fdd9a| ROR R29, ZR, R5 -832dc31a| RORW R3, R12, R3 -e22ec09a| ROR R0, R23, R2 -1801045a| SBCW R4, R8, R24 -5a0119da| SBC R25, R10, R26 -52021b7a| SBCSW R27, R18, R18 -250105fa| SBCS R5, R9, R5 -fc430b13| SBFXW $11, ZR, $6, R28 -a0574093| SBFX $0, R29, $22, R0 -8b3b7a93| SBFIZ $6, R28, $15, R11 -fc310513| SBFXW $5, R15, $8, R28 -fbdc4293| SBFX $2, R7, $54, R27 -c90dd61a| SDIVW R22, R14, R9 -a90ecd9a| SDIV R13, R21, R9 -9f2003d5| SEV -bf2003d5| SEVL -d27f229b| SMULL R2, R30, R18 -efff3a9b| SMNEGL R26, ZR, R15 -7d963f9b| SMSUBL ZR, R5, R19, R29 -b57e519b| SMULH R17, R21, R21 -a07c209b| SMULL R0, R5, R0 -d0fe9f88| STLRW R16, (R22) -03ff9fc8| STLR R3, (R24) -8bff9f08| STLRB R11, (R28) -f0fe9f48| STLRH R16, (R23) -c6ae3588| STLXPW (R6, R11), (R22), R21 -c6fa22c8| STLXP (R6, R30), (R22), R2 -affd0e88| STLXRW R15, (R13), R14 -67ff1cc8| STLXR R7, (R27), R28 -17ff1c08| STLXRB R23, (R24), R28 -7bfe0b48| STLXRH R27, (R19), R11 -2a8c0528| STNPW 44(R1), R3, R10 -67fc10a8| STNP 264(R3), ZR, R7 -5559bd28| STP.P (R21, R22), -24(R10) -166c96a8| STP.P (R22, R27), 352(R0) -3d4a8729| STP.W (R29, R18), 56(R17) -912f86a9| STP.W (R17, R11), 96(R28) -c40d3029| STP (R4, R3), -128(R14) -f73f39a9| STP (R23, R15), -112(RSP) -34441eb8| MOVW.P R20, -28(R1) -11f60bf8| MOVD.P R17, 191(R16) -c15d15b8| MOVW.W R1, -171(R14) -ae4d12f8| MOVD.W R14, -220(R13) -03ef39b9| MOVW R3, 14828(R24) -208228f9| MOVD R0, 20736(R17) -734823f8| MOVD R19, (R3)(R3.UXTW) -ffb41838| MOVB.P ZR, -117(R7) -bb0d1a38| MOVB.W R27, -96(R13) -b1612239| MOVB R17, 2200(R13) -92682038| MOVB R18, (R4)(R0) -81682638| MOVB R1, (R4)(R6) -87841b78| MOVH.P R7, -72(R4) -cc3d1878| MOVH.W R12, -125(R14) -53cf1c79| MOVH R19, 3686(R26) -63792d78| MOVH R3, (R11)(R13<<1) -9d7803b8| STTRW 55(R4), R29 -b9c807f8| STTR 124(R5), R25 -f04a1e38| STTRBW -28(R23), R16 -52990078| STTRHW 9(R10), R18 -152002b8| MOVW R21, 34(R0) -397217f8| MOVD R25, -137(R17) -8f320138| MOVB R15, 19(R20) -eb021b78| MOVH R11, -80(R23) -854a3f88| STXPW (R5, R18), (R20), ZR -d12620c8| STXP (R17, R9), (R22), R0 -537e0288| STXRW R19, (R18), R2 -af7d15c8| STXR R15, (R13), R21 -e97c1d08| STXRB R9, (R7), R29 -837d1b48| STXRH R3, (R12), R27 -f25e344b| SUBW R20.UXTW<<7, R23, R18 -3ac825cb| SUB R5.SXTW<<2, R1, R26 -e8f40ccb| SUB R12<<61, R7, R8 -a6ad226b| SUBSW R2.SXTH<<3, R13, R6 -647735eb| SUBS R21.UXTX<<5, R27, R4 -c770566b| SUBSW R22>>28, R6, R7 -d03c1aeb| SUBS R26<<15, R6, R16 -a17f03d4| SVC $7165 -991f0013| SXTBW R28, R25 -a91d4093| SXTB R13, R9 -083d0013| SXTHW R8, R8 -393e4093| SXTH R17, R25 -1b7c4093| SXTW R0, R27 -0c5b2cd5| SYSL $285440, R12 -3f0d0172| TSTW $2147483655, R9 -df6f7cf2| TST $4294967280, R30 -1f2f11ea| TST R17<<11, R24 -9ced71d3| UBFX $49, R12, $11, R28 -1cbb7fd3| UBFIZ $1, R24, $47, R28 -25e661d3| UBFX $33, R17, $25, R5 -af0adc1a| UDIVW R28, R21, R15 -550ac29a| UDIV R2, R18, R21 -9102b19b| UMADDL R17, R0, R20, R17 -41fea39b| UMNEGL R3, R18, R1 -87d8a39b| UMSUBL R3, R22, R4, R7 -987ed89b| UMULH R24, R20, R24 -d37eb29b| UMULL R18, R22, R19 -461c0053| UXTBW R2, R6 -f43c0053| UXTHW R7, R20 -5f2003d5| WFE -7f2003d5| WFI -3f2003d5| YIELD -e5bb200e| VABS V31.B8, V5.B8 -c9842d0e| VADD V13.B8, V6.B8, V9.B8 -f4bd394e| VADDP V25.B16, V15.B16, V20.B16 -b3b8b14e| VADDV V5.S4, V19 -cd5b284e| AESD V30.B16, V13.B16 -4b4b284e| AESE V26.B16, V11.B16 -2879284e| AESIMC V9.B16, V8.B16 -fe68284e| AESMC V7.B16, V30.B16 -f61e334e| VAND V19.B16, V23.B16, V22.B16 -88a4002f| VMVNI $(4<<8), V8.H4 -1877076f| VBIC $(248<<24), V24.S4 -0d1e6c0e| VBIC V12.B8, V16.B8, V13.B8 -b81ce26e| VBIF V2.B16, V5.B16, V24.B16 -381cbf2e| VBIT V31.B8, V1.B8, V24.B8 -cd1f6c6e| VBSL V12.B16, V30.B16, V13.B16 -8d48a00e| VCLS V4.S2, V13.S2 -324ba02e| VCLZ V25.S2, V18.S2 -c88f2b2e| VCMEQ V11.B8, V30.B8, V8.B8 -a799e05e| VCMEQ $0, V13, V7 -dc9be04e| VCMEQ $0, V30.D2, V28.D2 -623f2d4e| VCMGE V13.B16, V27.B16, V2.B16 -e889e06e| VCMGE $0, V15.D2, V8.D2 -cb37e55e| VCMGT V5, V30, V11 -8e37b00e| VCMGT V16.S2, V28.S2, V14.S2 -1a8be04e| VCMGT $0, V24.D2, V26.D2 -7f37eb7e| VCMHI V11, V27, V31 -333d356e| VCMHS V21.B16, V9.B16, V19.B16 -bd9ae07e| VCMLE $0, V21, V29 -8999602e| VCMLE $0, V12.H4, V9.H4 -aca9e05e| VCMLT $0, V13, V12 -7fa8204e| VCMLT $0, V3.B16, V31.B16 -588db20e| VCMTST V18.S2, V10.S2, V24.S2 -cc051d5e| VMOV V14.B[14], V12 -4c06050e| VDUP V18.B[2], V12.B8 -790c020e| VDUP R3, V25.H4 -391d286e| VEOR V8.B16, V9.B16, V25.B16 -4b30156e| VEXT $6, V21.B16, V2.B16, V11.B16 -44d6bf7e| FABD F31, F18, F4 -17fba00e| FABS V24.S2, V23.S2 -90c2201e| FABSS F20, F16 -62c2601e| FABSD F19, F2 -eeef3f7e| FACGE F31, F31, F14 -09efa07e| FACGT F0, F24, F9 -72edae6e| VFACGT V14.S4, V11.S4, V18.S4 -61d5394e| FADD V25.S4, V11.S4, V1.S4 -0d2a3d1e| FADDS F29, F16, F13 -4b296f1e| FADDD F15, F10, F11 -78d8307e| FADDP V3.S2, F24 -e7d7322e| VFADDP V18.S2, V31.S2, V7.S2 -e8253c1e| FCCMPS HS, F28, F15, $8 -e8857f1e| FCCMPD HI, F31, F15, $8 -5714291e| FCCMPES NE, F9, F2, $7 -b484631e| FCCMPED HI, F3, F5, $4 -3ce5685e| FCMEQ F8, F9, F28 -50e6214e| VFCMEQ V1.S4, V18.S4, V16.S4 -9ddae05e| FCMEQ $0, F20, F29 -b3e62b7e| FCMGE F11, F21, F19 -0ce4396e| VFCMGE V25.S4, V0.S4, V12.S4 -a6c9e07e| FCMGE $0, F13, F6 -ede6bd7e| FCMGT F29, F23, F13 -13e6ae2e| VFCMGT V14.S2, V16.S2, V19.S2 -4cc9e05e| FCMGT $0, F10, F12 -41cba04e| VFCMGT $0, V26.S4, V1.S4 -96d8e07e| FCMLE $0, F4, F22 -0be9a05e| FCMLT $0, F8, F11 -dfe9a04e| VFCMLT $0, V14.S4, V31.S4 -a023301e| FCMPS F16, F29 -68213e1e| FCMPS $(0.0), F11 -20236d1e| FCMPD F13, F25 -68216b1e| FCMPD $(0.0), F11 -3023351e| FCMPES F21, F25 -78203e1e| FCMPES $(0.0), F3 -b022721e| FCMPED F18, F21 -f8226f1e| FCMPED $(0.0), F23 -b54e271e| FCSELS MI, F21, F7, F21 -319f611e| FCSELD LS, F25, F1, F17 -2142e21e| FCVTHS F17, F1 -cfc3e21e| FCVTHD F30, F15 -01c1231e| FCVTSH F8, F1 -4fc0221e| FCVTSD F2, F15 -f9c0631e| FCVTDH F7, F25 -2b43621e| FCVTDS F25, F11 -f1c8615e| FCVTAS F7, F17 -ea01241e| FCVTASW F15, R10 -0c02249e| FCVTAS F16, R12 -e702641e| FCVTASW F23, R7 -f501649e| FCVTAS F15, R21 -45ca217e| FCVTAU F18, F5 -66c9212e| VFCVTAU V11.S2, V6.S2 -b302251e| FCVTAUW F21, R19 -e102259e| FCVTAU F23, R1 -5703651e| FCVTAUW F26, R23 -2c01659e| FCVTAU F9, R12 -2c7b210e| VFCVTL V25.H4, V12.S4 -f478214e| VFCVTL2 V7.H8, V20.S4 -d1b8615e| FCVTMS F6, F17 -a2ba614e| VFCVTMS V21.D2, V2.D2 -ee01301e| FCVTMSW F15, R14 -de01309e| FCVTMS F14, R30 -8401701e| FCVTMSW F12, R4 -c502709e| FCVTMS F22, R5 -44b8617e| FCVTMU F2, F4 -5601311e| FCVTMUW F10, R22 -4602319e| FCVTMU F18, R6 -1003711e| FCVTMUW F24, R16 -e602719e| FCVTMU F23, R6 -c16b210e| VFCVTN V30.S4, V1.H4 -4d6b614e| VFCVTN2 V26.D2, V13.S4 -95ab215e| FCVTNS F28, F21 -65a9614e| VFCVTNS V11.D2, V5.D2 -8a02201e| FCVTNSW F20, R10 -bc03209e| FCVTNS F29, R28 -fc01601e| FCVTNSW F15, R28 -9800609e| FCVTNS F4, R24 -b1aa617e| FCVTNU F21, F17 -80a9216e| VFCVTNU V12.S4, V0.S4 -3201211e| FCVTNUW F9, R18 -e101219e| FCVTNU F15, R1 -ae00611e| FCVTNUW F5, R14 -9503619e| FCVTNU F28, R21 -3faae15e| FCVTPS F17, F31 -c4a8e14e| VFCVTPS V6.D2, V4.D2 -ab01281e| FCVTPSW F13, R11 -5800289e| FCVTPS F2, R24 -9b02681e| FCVTPSW F20, R27 -de03689e| FCVTPS F30, R30 -d8aaa17e| FCVTPU F22, F24 -e203291e| FCVTPUW F31, R2 -5302299e| FCVTPU F18, R19 -5302691e| FCVTPUW F18, R19 -8501699e| FCVTPU F12, R5 -93ff735f| FCVTZS $13, F28, F19 -b7fd504f| FCVTZS $48, V13.D2, V23.D2 -7ebba15e| FCVTZSSS F27, F30 -d49f181e| FCVTZS $25, F30, R20 -538d189e| FCVTZS $29, F10, R19 -7e74589e| FCVTZS $35, F3, R30 -4300381e| FCVTZSSW F2, R3 -bc03389e| FCVTZSS F29, R28 -c702781e| FCVTZSDW F22, R7 -0401789e| FCVTZSD F8, R4 -d1ff2e7f| FCVTZU $18, F30, F17 -d0fd3b2f| FCVTZU $5, V14.S2, V16.S2 -70bae17e| FCVTZUDD F19, F16 -3ef6191e| FCVTZU $3, F17, R30 -cae7199e| FCVTZU $7, F30, R10 -cffb599e| FCVTZU $2, F30, R15 -e402391e| FCVTZUSW F23, R4 -1a03399e| FCVTZUS F24, R26 -0401791e| FCVTZUDW F8, R4 -c200799e| FCVTZUD F6, R2 -ebfe346e| FDIV V20.S4, V23.S4, V11.S4 -c918371e| FDIVS F23, F6, F9 -911a7f1e| FDIVD F31, F20, F17 -a81f0c1f| FMADDS F12, F7, F29, F8 -d0404a1f| FMADDD F10, F16, F6, F16 -7ff6324e| FMAX V18.S4, V19.S4, V31.S4 -b84b351e| FMAXS F21, F29, F24 -d64b621e| FMAXD F2, F30, F22 -016b241e| FMAXNMS F4, F24, F1 -5b69781e| FMAXNMD F24, F10, F27 -f1c8707e| FMAXNMP V7.D2, F17 -27c5306e| VFMAXNMP V16.S4, V9.S4, V7.S4 -aef8707e| FMAXP V5.D2, F14 -53f6202e| VFMAXP V0.S2, V18.S2, V19.S2 -78fb306e| FMAXV V27.S4, F24 -5af4ec4e| FMIN V12.D2, V2.D2, V26.D2 -505a3c1e| FMINS F28, F18, F16 -4858661e| FMIND F6, F2, F8 -a9c6e04e| FMINNM V0.D2, V21.D2, V9.D2 -987b311e| FMINNMS F17, F28, F24 -95796f1e| FMINNMD F15, F12, F21 -f5cbb07e| FMINNMP V31.S2, F21 -b0f8f07e| FMINP V5.D2, F16 -8bf5a42e| VFMINP V4.S2, V12.S2, V11.S2 -87cd384e| VFMLA V24.S4, V12.S4, V7.S4 -fd50db5f| FMLS V27.D[0], F7, F29 -d1ccb44e| VFMLS V20.S4, V6.S4, V17.S4 -ebf5064f| FMOV $-0.242188, V11.S4 -49f4056f| FMOV $-9., V9.D2 -0940201e| FMOVS F0, F9 -db43601e| FMOVD F30, F27 -a901271e| FMOVS R13, F9 -3702261e| FMOVS F17, R23 -4d02679e| FMOVD R18, F13 -9d02af9e| FMOV R20, V29.D[1] -ef03669e| FMOVD F31, R15 -7101ae9e| FMOV V11.D[1], R17 -0e103d1e| FMOVS $-0.75, F14 -1e50761e| FMOVD $-18., F30 -d2b4121f| FMSUBS F18, F13, F6, F18 -0a9c4c1f| FMSUBD F12, F7, F0, F10 -0d99b35f| FMULS V19.S[3], F8, F13 -a89b9b0f| FMUL V27.S[2], V29.S2, V8.S2 -75dc376e| FMUL V23.S4, V3.S4, V21.S4 -7909241e| FMULS F4, F11, F25 -d7096b1e| FMULD F11, F14, F23 -2999ab7f| FMULX V11.S[3], F9, F9 -35dd6d5e| FMULX F13, F9, F21 -c8dc284e| VFMULX V8.S4, V6.S4, V8.S4 -c043211e| FNEGS F30, F0 -4742611e| FNEGD F18, F7 -9c51251f| FNMADDS F5, F20, F12, F28 -e407771f| FNMADDD F23, F1, F31, F4 -fbfa3a1f| FNMSUBS F26, F30, F23, F27 -bbb0691f| FNMSUBD F9, F12, F5, F27 -6a8b3f1e| FNMULS F31, F27, F10 -1a8b751e| FNMULD F21, F24, F26 -57d8e15e| FRECPE F2, F23 -62dba14e| VFRECPE V27.S4, V2.S4 -81fd325e| FRECPS F18, F12, F1 -31fe224e| VFRECPS V2.S4, V17.S4, V17.S4 -ecf9e15e| FRECPX F15, F12 -c18b216e| FRINTA V30.S4, V1.S4 -0240261e| FRINTAS F0, F2 -8041661e| FRINTAD F12, F0 -c89ba12e| FRINTI V30.S2, V8.S2 -2ec2271e| FRINTIS F17, F14 -5cc0671e| FRINTID F2, F28 -3898210e| FRINTM V1.S2, V24.S2 -9843251e| FRINTMS F28, F24 -5b40651e| FRINTMD F2, F27 -2189614e| FRINTN V9.D2, V1.D2 -7e42241e| FRINTNS F19, F30 -5d40641e| FRINTND F2, F29 -85c3241e| FRINTPS F28, F5 -46c2641e| FRINTPD F18, F6 -c39b216e| FRINTX V30.S4, V3.S4 -a243271e| FRINTXS F29, F2 -1d41671e| FRINTXD F8, F29 -5499e14e| FRINTZ V10.D2, V20.D2 -92c2251e| FRINTZS F20, F18 -75c2651e| FRINTZD F19, F21 -ddd9e17e| FRSQRTE F14, F29 -60fff85e| FRSQRTS F24, F27, F0 -dafffb4e| VFRSQRTS V27.D2, V30.D2, V26.D2 -1ff9a12e| FSQRT V8.S2, V31.S2 -2dc3211e| FSQRTS F25, F13 -72c0611e| FSQRTD F3, F18 -7d3a3e1e| FSUBS F30, F19, F29 -3f38771e| FSUBD F23, F1, F31 -185e016e| VMOV V16.B[11], V24.B[0] -911d0d4e| VMOV R12, V17.B[6] -2877400c| VLD1 (R25), [V8.H4] -8ea8404c| VLD1 (R4), [V14.S4, V15.S4] -0f62404c| VLD1 (R16), [V15.B16, V16.B16, V17.B16] -0f27400c| VLD1 (R24), [V15.H4, V16.H4, V17.H4, V18.H4] -4c75df0c| VLD1.P 8(R10), [V12.H4] -2f7bd04c| VLD1.P (R25)(R16), [V15.S4] -eaaadf0c| VLD1.P 16(R23), [V10.S2, V11.S2] -eca7cc4c| VLD1.P (RSP)(R12), [V12.H8, V13.H8] -cd60df4c| VLD1.P 48(R6), [V13.B16, V14.B16, V15.B16] -9163df0c| VLD1.P 24(R28), [V17.B8, V18.B8, V19.B8] -152ddf4c| VLD1.P 64(R8), [V21.D2, V22.D2, V23.D2, V24.D2] -0725c04c| VLD1.P (R8)(R0), [V7.H8, V8.H8, V9.H8, V10.H8] -7c04404d| VLD1 (R3), V28.B[9] -6d49404d| VLD1 (R11), V13.H[5] -9e81400d| VLD1 (R12), V30.S[0] -d384404d| VLD1 (R6), V19.D[1] -b20ddf4d| VLD1.P 1(R13), V18.B[11] -f114cd4d| VLD1.P (R7)(R13), V17.B[13] -bb92df4d| VLD1.P 4(R21), V27.S[3] -a883d64d| VLD1.P (R29)(R22), V8.S[2] -f584df4d| VLD1.P 8(R7), V21.D[1] -0284c80d| VLD1.P (R0)(R8), V2.D[0] -91c3400d| VLD1R (R28), [V17.B8] -71c9df0d| VLD1R 4(R11), [V17.S2] -e7c4db0d| VLD1R (R7)(R27), [V7.H4] -b787404c| VLD2 (R29), [V23.H8, V24.H8] -1280df0c| VLD2 16(R0), [V18.B8, V19.B8] -2f88c10c| VLD2 (R1)(R1), [V15.S2, V16.S2] -a01e604d| LD2 (R21), [V0.B, V1.B][15] -eb82604d| LD2 (R23), [V11.S, V12.S][2] -f985600d| LD2 (R15), [V25.D, V26.D][0] -e315ff0d| LD2 2(R15), [V3.B, V4.B][5] -1c11f24d| LD2 (R8)(R18), [V28.B, V29.B][12] -f341ef4d| LD2 (R15)(R15), [V19.H, V20.H][4] -5a80ff4d| LD2 8(R2), [V26.S, V27.S][2] -d781fd0d| LD2 (R14)(R29), [V23.S, V24.S][0] -c885ff0d| LD2 16(R14), [V8.D, V9.D][0] -1286f34d| LD2 (R16)(R19), [V18.D, V19.D][1] -06c2600d| VLD2R (R16), [V6.B8, V7.B8] -95c7ff4d| VLD2R 4(R28), [V21.H8, V22.H8] -d4c1e14d| VLD2R (R14)(R1), [V20.B16, V21.B16] -eb4bdf4c| VLD3 48(RSP), [V11.S4, V12.S4, V13.S4] -ce4fc24c| VLD3 (R30)(R2), [V14.D2, V15.D2, V16.D2] -db23400d| LD3 (R30), [V27.B, V28.B, V29.B][0] -26b3400d| LD3 (R25), [V6.S, V7.S, V8.S][1] -37a4400d| LD3 (R1), [V23.D, V24.D, V25.D][0] -052edf4d| LD3 3(R16), [V5.B, V6.B, V7.B][11] -8c3ccd0d| LD3 (R4)(R13), [V12.B, V13.B, V14.B][7] -74b0df4d| LD3 12(R3), [V20.S, V21.S, V22.S][3] -b7b1c84d| LD3 (R13)(R8), [V23.S, V24.S, V25.S][3] -e6a5df4d| LD3 24(R15), [V6.D, V7.D, V8.D][1] -42a5c80d| LD3 (R10)(R8), [V2.D, V3.D, V4.D][0] -9ceb400d| VLD3R (R28), [V28.S2, V29.S2, V30.S2] -6aeadf4d| VLD3R 12(R19), [V10.S4, V11.S4, V12.S4] -65ebce4d| VLD3R (R27)(R14), [V5.S4, V6.S4, V7.S4] -ea05400c| VLD4 (R15), [V10.H4, V11.H4, V12.H4, V13.H4] -1f03df0c| VLD4 32(R24), [V31.B8, V0.B8, V1.B8, V2.B8] -ae09c90c| VLD4 (R13)(R9), [V14.S2, V15.S2, V16.S2, V17.S2] -fd3a604d| LD4 (R23), [V29.B, V30.B, V31.B, V0.B][14] -d8a0604d| LD4 (R6), [V24.S, V25.S, V26.S, V27.S][2] -62a4604d| LD4 (R3), [V2.D, V3.D, V4.D, V5.D][1] -712fff0d| LD4 4(R27), [V17.B, V18.B, V19.B, V20.B][3] -aa27f40d| LD4 (R29)(R20), [V10.B, V11.B, V12.B, V13.B][1] -be71ff4d| LD4 8(R13), [V30.H, V31.H, V0.H, V1.H][6] -e360ee4d| LD4 (R7)(R14), [V3.H, V4.H, V5.H, V6.H][4] -c0a0ff0d| LD4 16(R6), [V0.S, V1.S, V2.S, V3.S][0] -d3a3e00d| LD4 (R30)(R0), [V19.S, V20.S, V21.S, V22.S][0] -95a7ff0d| LD4 32(R28), [V21.D, V22.D, V23.D, V24.D][0] -32a6e14d| LD4 (R17)(R1), [V18.D, V19.D, V20.D, V21.D][1] -56e0604d| VLD4R (R2), [V22.B16, V23.B16, V24.B16, V25.B16] -dce7ff0d| VLD4R 8(R30), [V28.H4, V29.H4, V30.H4, V31.H4] -14e8ef0d| VLD4R (R0)(R15), [V20.S2, V21.S2, V22.S2, V23.S2] -7776732c| VLDNP -104(R19), V29, V23 -23dd746c| VLDNP -184(R9), V23, V3 -383e48ac| VLDNP 256(R17), V15, V24 -0d10c12c| LDP.P 8(R0), (V13, V4) -fe3ae66c| LDP.P -416(R23), (V30, V14) -f627f9ac| LDP.P -224(RSP), (V22, V9) -918cd82d| LDP.W 196(R4), (V17, V3) -986be46d| LDP.W -448(R28), (V24, V26) -ebd8f8ad| LDP.W -240(R7), (V11, V22) -3c905c2d| LDP 228(R1), (V28, V4) -5887536d| LDP 312(R26), (V24, V1) -08957cad| LDP -112(R8), (V8, V5) -c5e5543c| MOVD.P -178(R14), V5 -4ff5417c| MOVD.P 31(R10), V15 -72e54bbc| FMOVS.P 190(R11), F18 -16b55dfc| FMOVD.P -37(R8), F22 -9e24db3c| MOVD.P -78(R4), V30 -d20c503c| MOVD.W -256(R6), V18 -1f1c4d7c| MOVD.W 209(R0), V31 -2fbf4dbc| FMOVS.W 219(R25), F15 -a06c59fc| FMOVD.W -106(R5), F0 -886ddd3c| MOVD.W -42(R12), V8 -58f64e3d| MOVD 957(R18), V24 -f5c3547d| MOVD 2656(RSP), V21 -8e8a7bbd| FMOVS 15240(R20), F14 -8e3c7afd| FMOVD 29816(R4), F14 -f2aeff3d| MOVD 65200(R23), V18 -1d78793c| MOVD (R0)(R25), V29 -b8f15d3c| VLDUR -33(R13), V24 -95635c7c| VLDUR -58(R28), V21 -27d046bc| VLDUR 109(R1), V7 -21624efc| VLDUR 230(R17), V1 -6dd2d83c| VLDUR -115(R19), V13 -dc09be6f| VMLA V30.S[3], V14.S4, V28.S4 -eb97af4e| VMLA V15.S4, V31.S4, V11.S4 -0495722e| VMLS V18.H4, V8.H4, V4.H4 -21070a5e| VMOV V25.H[2], V1 -92471b6e| VMOV V28.B[8], V18.B[13] -7a1e134e| VMOV R19, V26.B[9] -761fa30e| VORR V3.B8, V27.B8, V22.B8 -f23d070e| VMOV V15.B[3], R18 -a5e6064f| VMOVI $213, V5.B16 -63c5064f| VMOVI $(203<<136), V3.S4 -bca7014f| VMOVI $(61<<8), V28.H8 -95e4040f| VMOVI $132, V21.B8 -fce4072f| VMOVI $-1099494850561, V28 -24e6036f| VMOVI $72057589742960895, V4.D2 -429d6a4e| VMUL V10.H8, V10.H8, V2.H8 -e558202e| VMVN V7.B8, V5.B8 -fe65012f| VMVNI $(47<<24), V30.S2 -2b16046f| VBIC $145, V11.S4 -7756016f| VBIC $(51<<16), V23.S4 -e159202e| VMVN V15.B8, V1.B8 -da1cf14e| VORN V17.B16, V6.B16, V26.B16 -ca04014f| VMOVI $38, V10.S4 -14a6020f| VMOVI $(80<<8), V20.H4 -2f1fbf0e| VORR V31.B8, V25.B8, V15.B8 -74e2f20e| VPMULL V18.D1, V19.D1, V20.Q1 -2740262e| VRADDHN V6.H8, V1.H8, V7.B8 -17412e6e| VRADDHN2 V14.H8, V8.H8, V23.B16 -da59602e| VRBIT V14.B8, V26.B8 -230a604e| VREV64 V17.H8, V3.H8 -178d210f| VRSHRN $31, V8.D2, V23.S2 -6b8d2c4f| VRSHRN2 $20, V11.D2, V11.S4 -b57c2a0e| VSABA V10.B8, V5.B8, V21.B8 -71533d0e| VSABAL V29.B8, V27.B8, V17.H8 -1c50774e| VSABAL2 V23.H8, V0.H8, V28.S4 -1974be4e| VSABD V30.S4, V0.S4, V25.S4 -6b71ad0e| VSABDL V13.S2, V11.S2, V11.D2 -5270324e| VSABDL2 V18.B16, V2.B16, V18.H8 -366b200e| VSADALP V25.B8, V22.H4 -1802680e| VSADDL V8.H4, V16.H4, V24.S4 -022b604e| VSADDLP V24.H8, V2.S4 -413ab04e| VSADDLV V18.S4, V1 -4013750e| VSADDW V21.H4, V26.S4, V0.S4 -4412744e| VSADDW2 V20.H8, V18.S4, V4.S4 -2ee6255f| SCVTF $27, F17, F14 -dce75f4f| SCVTF $33, V30.D2, V28.D2 -5bdb615e| SCVTFDD F26, F27 -3ad9210e| SCVTF V9.S2, V26.S2 -1ceb421e| SCVTF $6, R24, F28 -9dde029e| SCVTF $9, R20, F29 -57d1429e| SCVTF $12, R10, F23 -d600221e| SCVTFWS R6, F22 -c503621e| SCVTFWD R30, F5 -3303229e| SCVTFS R25, F19 -0003629e| SCVTFD R24, F0 -6f01075e| SHA1C V7.S4, V11, V15 -9308285e| SHA1H V4, V19 -b420105e| SHA1M V16.S4, V5, V20 -f4131f5e| SHA1P V31.S4, V31, V20 -dc311f5e| SHA1SU0 V31.S4, V14.S4, V28.S4 -bb1a285e| SHA1SU1 V21.S4, V27.S4 -2753075e| SHA256H2 V7.S4, V25, V7 -3141065e| SHA256H V6.S4, V9, V17 -172b285e| SHA256SU0 V24.S4, V23.S4 -bb621b5e| SHA256SU1 V27.S4, V21.S4, V27.S4 -7005644e| VSHADD V4.H8, V11.H8, V16.H8 -2d870e0f| VSHRN $2, V25.H8, V13.B8 -ac86024f| VMOVI $85, V12.H8 -1c26a50e| VSHSUB V5.S2, V16.S2, V28.S2 -db576b6f| VSLI $43, V30.D2, V27.D2 -c3652c4e| VSMAX V12.B16, V14.B16, V3.B16 -b5a7ab0e| VSMAXP V11.S2, V29.S2, V21.S2 -f1aeb34e| VSMINP V19.S4, V23.S4, V17.S4 -87a8b14e| VSMINV V4.S4, V7 -1e21bc4f| VSMLAL2 V28.S[1], V8.S4, V30.D2 -50a33a0e| VSMLSL V26.B8, V26.B8, V16.H8 -4e2d1a0e| SMOVW V10.H[6], R14 -9ba9b30f| VSMULL V19.S[3], V12.S2, V27.D2 -417a205e| VSQABS V18, V1 -9f78a04e| VSQABS V4.S4, V31.S4 -580d2e5e| VSQADD V14, V10, V24 -3d30764f| VSQDMLAL2 V6.H[3], V1.H8, V29.S4 -9591b25e| VSQDMLAL V18, V12, V21 -0d92670e| VSQDMLAL V7.H4, V16.H4, V13.S4 -90b1765e| VSQDMLSL V22, V12, V16 -83c2ad5f| VSQDMULH V13.S[1], V20, V3 -bbb7aa5e| VSQDMULH V10, V29, V27 -c8b99a5f| VSQDMULL V26.S[2], V14, V8 -75b3920f| VSQDMULL V18.S[0], V27.S2, V21.D2 -86d1b75e| VSQDMULL V23, V12, V6 -edd06f4e| VSQDMULL2 V15.H8, V7.H8, V13.S4 -0f7ae07e| VSQNEG V16, V15 -e87b602e| VSQNEG V31.H4, V8.H4 -ecb5a92e| VSQRDMULH V9.S2, V15.S2, V12.S2 -d75fba5e| VSQRSHL V26, V30, V23 -f75f324e| VSQRSHL V18.B16, V31.B16, V23.B16 -af9c114f| VSQRSHRN2 $15, V5.S4, V15.H8 -318d2f6f| VSQRSHRUN2 $17, V9.D2, V17.S4 -b3757c5f| VSQSHL $60, V13, V19 -0c776f4f| VSQSHL $47, V24.D2, V12.D2 -d84c2a5e| VSQSHL V10, V6, V24 -ae4e704e| VSQSHL V16.H8, V21.H8, V14.H8 -b566727f| VSQSHLU $50, V21, V21 -4566596f| VSQSHLU $25, V18.D2, V5.D2 -d595140f| VSQSHRN $12, V14.S4, V21.H4 -00940b4f| VSQSHRN2 $5, V0.H8, V0.B16 -5384352f| VSQSHRUN $11, V2.D2, V19.S2 -1a2e3d5e| VSQSUB V29, V16, V26 -b02e6b4e| VSQSUB V11.H8, V21.H8, V16.H8 -1249a15e| VSQXTN V8, V18 -eb49610e| VSQXTN V15.S4, V11.H4 -cb4a614e| VSQXTN2 V22.S4, V11.H8 -102b217e| VSQXTUN V24, V16 -492a212e| VSQXTUN V18.H8, V9.B8 -112a616e| VSQXTUN2 V16.S4, V17.H8 -6c16ae4e| VSRHADD V14.S4, V19.S4, V12.S4 -5946467f| VSRI $58, V18, V25 -21460a2f| VSRI $6, V17.B8, V1.B8 -9f56b10e| VSRSHL V17.S2, V20.S2, V31.S2 -e724635f| VSRSHR $29, V7, V7 -e8266b4f| VSRSHR $21, V23.D2, V8.D2 -2b37180f| VSRSRA $8, V25.H4, V11.H4 -1644f95e| VSSHL V25, V0, V22 -3644fc4e| VSSHL V28.D2, V1.D2, V22.D2 -d9a61f4f| VSSHLL2 $15, V22.H8, V25.S4 -9b075e5f| VSSHR $34, V28, V27 -2c044c4f| VSSHR $52, V1.D2, V12.D2 -d915324f| VSSRA $14, V14.S4, V25.S4 -de21260e| VSSUBL V6.B8, V14.B8, V30.H8 -c720254e| VSSUBL2 V5.B16, V6.B16, V7.H8 -9d33b90e| VSSUBW V25.S2, V28.D2, V29.D2 -7e71000c| VST1 [V30.B8], (R11) -cca6000c| VST1 [V12.H4, V13.H4], (R22) -5467000c| VST1 [V20.H4, V21.H4, V22.H4], (R26) -cc28004c| VST1 [V12.S4, V13.S4, V14.S4, V15.S4], (R6) -9e7e9f4c| VST1.P [V30.D2], 16(R20) -4b769d0c| VST1.P [V11.H4], (R18)(R29) -adaa9f0c| VST1.P [V13.S2, V14.S2], 16(R21) -bca7844c| VST1.P [V28.H8, V29.H8], (R29)(R4) -b5659f0c| VST1.P [V21.H4, V22.H4, V23.H4], 24(R13) -e669874c| VST1.P [V6.S4, V7.S4, V8.S4], (R15)(R7) -9b2a9f0c| VST1.P [V27.S2, V28.S2, V29.S2, V30.S2], 32(R20) -14278b0c| VST1.P [V20.H4, V21.H4, V22.H4, V23.H4], (R24)(R11) -d002004d| VST1 V16.B[8], (R22) -9780004d| VST1 V23.S[2], (R4) -7787004d| VST1 V23.D[1], (R27) -850d9f0d| VST1.P V5.B[3], 1(R12) -7b1f8f0d| VST1.P V27.B[7], (R27)(R15) -7a5a9f4d| VST1.P V26.H[7], 2(R19) -e14b9e4d| VST1.P V1.H[5], (RSP)(R30) -dd819f4d| VST1.P V29.S[2], 4(R14) -a281910d| VST1.P V2.S[0], (R13)(R17) -b2849f0d| VST1.P V18.D[0], 8(R5) -c484964d| VST1.P V4.D[1], (R6)(R22) -f686004c| VST2 (R23), [V22.H8, V23.H8] -2e869f0c| VST2 16(R17), [V14.H4, V15.H4] -d200200d| ST2 (R6), [V18.B, V19.B][0] -ab58200d| ST2 (R5), [V11.H, V12.H][3] -c491204d| ST2 (R14), [V4.S, V5.S][3] -5a85204d| ST2 (R10), [V26.D, V27.D][1] -f217bf0d| ST2 2(RSP), [V18.B, V19.B][5] -2b0ea04d| ST2 (R17)(R0), [V11.B, V12.B][11] -4042bf0d| ST2 4(R18), [V0.H, V1.H][0] -9342af4d| ST2 (R20)(R15), [V19.H, V20.H][4] -9b91bf4d| ST2 8(R12), [V27.S, V28.S][3] -7480a10d| ST2 (R3)(R1), [V20.S, V21.S][0] -c884bf0d| ST2 16(R6), [V8.D, V9.D][0] -ae86ac4d| ST2 (R21)(R12), [V14.D, V15.D][1] -614d004c| VST3 (R11), [V1.D2, V2.D2, V3.D2] -324b9f4c| VST3 48(R25), [V18.S4, V19.S4, V20.S4] -7340870c| VST3 (R3)(R7), [V19.B8, V20.B8, V21.B8] -ac24004d| ST3 (R5), [V12.B, V13.B, V14.B][9] -a161004d| ST3 (R13), [V1.H, V2.H, V3.H][4] -09b1004d| ST3 (R8), [V9.S, V10.S, V11.S][3] -78a7004d| ST3 (R27), [V24.D, V25.D, V26.D][1] -4f349f0d| ST3 3(R2), [V15.B, V16.B, V17.B][5] -643d840d| ST3 (R11)(R4), [V4.B, V5.B, V6.B][7] -48699f0d| ST3 6(R10), [V8.H, V9.H, V10.H][1] -85b19f4d| ST3 12(R12), [V5.S, V6.S, V7.S][3] -60a18a0d| ST3 (R11)(R10), [V0.S, V1.S, V2.S][0] -69a49f0d| ST3 24(R3), [V9.D, V10.D, V11.D][0] -ada7814d| ST3 (R29)(R1), [V13.D, V14.D, V15.D][1] -760c004c| VST4 (R3), [V22.D2, V23.D2, V24.D2, V25.D2] -ee0d9f4c| VST4 64(R15), [V14.D2, V15.D2, V16.D2, V17.D2] -7800970c| VST4 (R3)(R23), [V24.B8, V25.B8, V26.B8, V27.B8] -a221200d| ST4 (R13), [V2.B, V3.B, V4.B, V5.B][0] -9a69204d| ST4 (R12), [V26.H, V27.H, V28.H, V29.H][5] -02a1204d| ST4 (R8), [V2.S, V3.S, V4.S, V5.S][2] -3fa6200d| ST4 (R17), [V31.D, V0.D, V1.D, V2.D][0] -943abf0d| ST4 4(R20), [V20.B, V21.B, V22.B, V23.B][6] -bf26a60d| ST4 (R21)(R6), [V31.B, V0.B, V1.B, V2.B][1] -55b3bf4d| ST4 16(R26), [V21.S, V22.S, V23.S, V24.S][3] -dda1b04d| ST4 (R14)(R16), [V29.S, V30.S, V31.S, V0.S][2] -6aa5bf0d| ST4 32(R11), [V10.D, V11.D, V12.D, V13.D][0] -e7a7ac0d| ST4 (RSP)(R12), [V7.D, V8.D, V9.D, V10.D][0] -f9c9202c| VSTNP -252(R15), V18, V25 -18b8316c| VSTNP -232(R0), V14, V24 -409c1cac| VSTNP 912(R2), V7, V0 -73f0812c| STP.P (V19, V28), 12(R3) -28d0826c| STP.P (V8, V20), 40(R1) -9bf5bfac| STP.P (V27, V29), -16(R12) -885ead2d| STP.W (V8, V23), -152(R20) -b0de926d| STP.W (V16, V23), 296(R21) -713387ad| STP.W (V17, V12), 224(R27) -52130a2d| STP (V18, V4), 80(R26) -b63a236d| STP (V22, V14), -464(R21) -6d5424ad| STP (V13, V21), -896(R3) -afb60f3c| MOVD.P V15, 251(R21) -81e7077c| MOVD.P V1, 126(R28) -203713bc| FMOVS.P F0, -205(R25) -60c61ffc| FMOVD.P F0, -4(R19) -d256813c| MOVD.P V18, 21(R22) -ffce083c| MOVD.W V31, 140(R23) -6d3d017c| MOVD.W V13, 19(R11) -52ed01bc| FMOVS.W F18, 30(R10) -fafd11fc| FMOVD.W F26, -225(R15) -663e9b3c| MOVD.W V6, -77(R19) -7d0c393d| MOVD V29, 3651(R3) -8f50067d| MOVD V15, 808(R4) -94680dbd| FMOVS F20, 3432(R4) -b7673bfd| FMOVD F23, 30408(R29) -fed3a63d| MOVD V30, 39744(RSP) -8a6a243c| MOVD V10, (R20)(R4) -29493fbc| FMOVS F9, (R9)(ZR.UXTW) -8bd93bfc| FMOVD F11, (R12)(R27.SXTW<<3) -c768a93c| MOVD V7, (R6)(R9) -a7b00a3c| MOVD V7, 171(R5) -40e3107c| MOVD V0, -242(R26) -18911fbc| FMOVS F24, -7(R8) -fcc007fc| FMOVD F28, 124(R7) -db12893c| MOVD V27, 145(R22) -1686716e| VSUB V17.H8, V16.H8, V22.H8 -5362320e| VSUBHN V18.H8, V18.H8, V19.B8 -6163bf4e| VSUBHN2 V31.D2, V27.D2, V1.S4 -a73be05e| VSUQADD V29, V7 -21a4100f| VSXTL V1.H4, V1.S4 -8b23164e| VTBL V22.B16, [V28.B16, V29.B16], V11.B16 -3642120e| VTBL V18.B8, [V17.B16, V18.B16, V19.B16], V22.B8 -cf611f0e| VTBL V31.B8, [V14.B16, V15.B16, V16.B16, V17.B16], V15.B8 -0b020e4e| VTBL V14.B16, [V16.B16], V11.B16 -9830014e| VTBX V1.B16, [V4.B16, V5.B16], V24.B16 -1452044e| VTBX V4.B16, [V16.B16, V17.B16, V18.B16], V20.B16 -b4711a0e| VTBX V26.B8, [V13.B16, V14.B16, V15.B16, V16.B16], V20.B8 -f911140e| VTBX V20.B8, [V15.B16], V25.B8 -9f28500e| VTRN1 V16.H4, V4.H4, V31.H4 -2e69c64e| VTRN2 V6.D2, V9.D2, V14.D2 -c752756e| VUABAL2 V21.H8, V22.H8, V7.S4 -8675696e| VUABD V9.H8, V12.H8, V6.H8 -a973ab6e| VUABDL2 V11.S4, V29.S4, V9.D2 -fa006c2e| VUADDL V12.H4, V7.H4, V26.S4 -da00236e| VUADDL2 V3.B16, V6.B16, V26.H8 -ab3a306e| VUADDLV V21.B16, V11 -a312746e| VUADDW2 V20.H8, V21.S4, V3.S4 -cee55e7f| UCVTF $34, F14, F14 -8edb617e| UCVTFDD F28, F14 -ab8f431e| UCVTF $29, R29, F11 -68b3039e| UCVTF $20, R27, F8 -7686439e| UCVTF $31, R19, F22 -2a03231e| UCVTFWS R25, F10 -9f01631e| UCVTFWD R12, F31 -a800239e| UCVTFS R5, F8 -0302639e| UCVTFD R16, F3 -df65a42e| VUMAX V4.S2, V14.S2, V31.S2 -29ab702e| VUMAXV V25.H4, V9 -6f6e2e6e| VUMIN V14.B16, V19.B16, V15.B16 -fdada32e| VUMINP V3.S2, V15.S2, V29.S2 -07289a6f| VUMLAL2 V26.S[2], V0.S4, V7.D2 -aa80ad2e| VUMLAL V13.S2, V5.S2, V10.D2 -d66b462f| VUMLSL V6.H[4], V30.H4, V22.S4 -12a3b62e| VUMLSL V22.S2, V24.S2, V18.D2 -583e0d0e| VMOV V18.B[6], R24 -20c3b52e| VUMULL V21.S2, V25.S2, V0.D2 -20c2616e| VUMULL2 V1.H8, V17.H8, V0.S4 -2f0f6d7e| VUQADD V13, V25, V15 -a60c272e| VUQADD V7.B8, V5.B8, V6.B8 -5b5da27e| VUQRSHL V2, V10, V27 -195c786e| VUQRSHL V24.H8, V0.H8, V25.H8 -209e282f| VUQRSHRN $24, V17.D2, V0.S2 -e89e3b6f| VUQRSHRN2 $5, V23.D2, V8.S4 -4f75147f| VUQSHL $4, V10, V15 -d2767d6f| VUQSHL $61, V22.D2, V18.D2 -bb4cfe7e| VUQSHL V30, V5, V27 -794ea42e| VUQSHL V4.S2, V19.S2, V25.S2 -51960b7f| VUQSHRN $5, V18, V17 -642ce77e| VUQSUB V7, V3, V4 -6149617e| VUQXTN V11, V1 -4e48a12e| VUQXTN V2.D2, V14.S2 -9cc8a14e| VURECPE V4.S4, V28.S4 -2f15a52e| VURHADD V5.S2, V9.S2, V15.S2 -5757fb7e| VURSHL V27, V26, V23 -2756706e| VURSHL V16.H8, V17.H8, V7.H8 -a424487f| VURSHR $56, V5, V4 -b926796f| VURSHR $7, V21.D2, V25.D2 -1336076f| VBIC $(240<<8), V19.S4 -e347e06e| VUSHL V0.D2, V31.D2, V3.D2 -f7a5272f| VUSHLL $7, V15.S2, V23.D2 -9ba63d6f| VUSHLL2 $29, V20.S4, V27.D2 -d405737f| VUSHR $13, V14, V20 -3a05116f| VUSHR $15, V9.H8, V26.H8 -1d39607e| VUSQADD V8, V29 -0e39e06e| VUSQADD V8.D2, V14.D2 -8022b02e| VUSUBL V16.S2, V20.S2, V0.D2 -9a20786e| VUSUBL2 V24.H8, V4.H8, V26.S4 -df33692e| VUSUBW V9.H4, V30.S4, V31.S4 -92a5102f| VUXTL V12.H4, V18.S4 -0e19464e| VUZP1 V6.H8, V8.H8, V14.H8 -7629610e| VXTN V11.S4, V22.H4 -7338504e| VZIP1 V16.H8, V3.H8, V19.H8 -357bd64e| VZIP2 V22.D2, V25.D2, V21.D2 -63020f1a| ADCW R15, R19, R3 -1f03159a| ADC R21, R24, ZR -d300103a| ADCSW R16, R6, R19 -1b0010ba| ADCS R16, R0, R27 -dd133f0b| ADDW ZR.UXTB<<4, R30, R29 -89c42f8b| ADD R15.SXTW<<1, R4, R9 -4e242a11| ADDW $2697, R2, R14 -e1c12f2b| ADDSW R15.SXTW, R15, R1 -733421ab| ADDS R1.UXTH<<5, R3, R19 -0ccc5aab| ADDS R26>>51, R0, R12 -2e122612| ANDW $2080374784, R17, R14 -5e4c2992| AND $-36020000934328321, R2, R30 -2805410a| ANDW R1>>1, R9, R8 -ede1938a| AND R19->56, R15, R13 -e7c10f72| ANDSW $33686018, R15, R7 -23ed55f2| ANDS $-8246337208321, R9, R3 -e6935bea| ANDS R27>>36, ZR, R6 -0e2ac61a| ASRW R6, R16, R14 -802ad59a| ASR R21, R20, R0 -7cfd7793| ASR $55, R11, R28 -f028cd1a| ASRW R13, R7, R16 -132bd29a| ASR R18, R24, R19 -c2560e54| BCS 29366(PC) -83516b17| JMP -9743997(PC) -7a571233| BFXILW $18, R27, $4, R26 -71b858b3| BFXIL $24, R3, $23, R17 -c3964bb3| BFXIL $11, R22, $27, R3 -eb561233| BFXILW $18, R23, $4, R11 -063f5db3| BFI $35, R24, $16, R6 -0a337a0a| BICW R26>>12, R24, R10 -2a71e28a| BIC R2@>28, R9, R10 -c168bf6a| BICSW ZR->26, R6, R1 -d8bb3cea| BICS R28<<46, R30, R24 -82e81795| CALL 18344066(PC) -40033fd6| CALL (R26) -c0011fd6| JMP (R14) -00dd31d4| BRK $36584 -7267db35| CBNZW R18, -74949(PC) -e44c7fb5| CBNZ R4, 260711(PC) -9dc4c334| CBZW R29, -123356(PC) -376eceb4| CBZ R23, -101519(PC) -a6cb563a| CCMNW GT, R29, $22, $6 -87db55ba| CCMN LE, R28, $21, $7 -a042493a| CCMNW MI, R21, R9, $0 -6a0040ba| CCMN EQ, R3, R0, $10 -46bb5c7a| CCMPW LT, R26, $28, $6 -c72942fa| CCMP HS, R14, $2, $7 -cda1427a| CCMPW GE, R14, R2, $13 -a1314dfa| CCMP LO, R13, R13, $1 -8706931a| CSINCW EQ, R20, R19, R7 -3ae69a9a| CSINC AL, R17, R26, R26 -9e51945a| CSINVW PL, R12, R20, R30 -d5e386da| CSINV AL, R30, R6, R21 -5f3503d5| CLREX $5 -e515c05a| CLSW R15, R5 -a815c0da| CLS R13, R8 -4a12c05a| CLZW R18, R10 -3c10c0da| CLZ R1, R28 -ff70252b| CMNW R5.UXTX<<4, R7 -9fa133ab| CMN R19.SXTH, R12 -3f3a822b| CMNW R2->14, R17 -df1d44ab| CMN R4>>7, R14 -3f95386b| CMPW R24.SXTB<<5, R9 -9f653feb| CMP ZR.UXTX<<1, R12 -1626915a| CSNEGW HS, R16, R17, R22 -b4d587da| CSNEG LE, R13, R7, R20 -9841d41a| CRC32B R20, R12, R24 -ec45d01a| CRC32H R16, R15, R12 -8048ca1a| CRC32W R10, R4, R0 -d44ec19a| CRC32X R1, R22, R20 -1552d31a| CRC32CB R19, R16, R21 -4b54c71a| CRC32CH R7, R2, R11 -245ad41a| CRC32CW R20, R17, R4 -c35cc89a| CRC32CX R8, R6, R3 -14219f1a| CSELW HS, R8, ZR, R20 -9c73979a| CSEL VC, R28, R23, R28 -e7279f1a| CSETW LO, R7 -ec579f9a| CSET MI, R12 -e5f39f5a| CSINVW AL, ZR, ZR, R5 -e8639fda| CSETM VC, R8 -ea76971a| CINCW VS, R23, R10 -78a7859a| CSINC GE, R27, R5, R24 -b590845a| CSINVW LS, R5, R4, R21 -b4029eda| CSINV EQ, R21, R30, R20 -b3969b5a| CSNEGW LS, R21, R27, R19 -938591da| CSNEG HI, R12, R17, R19 -016ea8d4| DCPS1 $17264 -0275a4d4| DCPS2 $9128 -a3e9a6d4| DCPS3 $14157 -bf3903d5| DMB $9 -e003bfd6| DRPS -9f3e03d5| DSB $14 -50b1a0ca| EON R0->44, R10, R16 -c0b02f52| EORW $1073627134, R6, R0 -4b0c1ed2| EOR $257698037820, R2, R11 -693c074a| EORW R7<<15, R3, R9 -113e1aca| EOR R26<<15, R16, R17 -e0039fd6| ERET -fef8c693| EXTR $62, R6, R7, R30 -3f2003d5| YIELD -3f2403d5| HINT $33 -c0425ad4| HLT $53782 -df3003d5| ISB $0 -f7fddf88| LDARW (R15), R23 -96fedfc8| LDAR (R20), R22 -11fedf08| LDARB (R16), R17 -c2fedf48| LDARH (R22), R2 -2d927f88| LDAXPW (R17), (R13, R4) -198f7fc8| LDAXP (R24), (R25, R3) -46ff5f88| LDAXRW (R26), R6 -81fe5fc8| LDAXR (R20), R1 -86fe5f08| LDAXRB (R20), R6 -78ff5f48| LDAXRH (R27), R24 -35864a28| LDNPW 84(R17), R1, R21 -6da05fa8| LDNP 504(R3), R8, R13 -a8f9f428| LDP.P -92(R13), (R8, R30) -b749e3a8| LDP.P -464(R13), (R23, R18) -bdedd929| LDP.W 204(R13), (R29, R27) -c8e5c6a9| LDP.W 104(R14), (R8, R25) -c0857f29| LDP -4(R14), (R0, R1) -388a6ca9| LDP -312(R17), (R24, R2) -086be468| LDPSW -224(R24), R26, R8 -d107d269| LDPSW 144(R30), R1, R17 -738e4e69| LDPSW 116(R19), R3, R19 -6ee55fb8| MOVWU.P -2(R11), R14 -233459f8| MOVD.P -109(R1), R3 -919f44b8| MOVWU.W 73(R28), R17 -acdd45f8| MOVD.W 93(R13), R12 -e1cd51b9| MOVWU 4556(R15), R1 -95e27bf9| MOVD 30656(R20), R21 -0c554b38| MOVBU.P 181(R8), R12 -054f5938| MOVBU.W -108(R24), R5 -1f206539| MOVBU 2376(R0), ZR -73796a38| MOVBU (R11)(R10), R19 -a8b74f78| MOVHU.P 251(R29), R8 -021e5e78| MOVHU.W -31(R16), R2 -ec126b79| MOVHU 5512(R23), R12 -fc5a6178| MOVHU (R23)(R1.UXTW<<1), R28 -eaf6c238| MOVBW.P 47(R23), R10 -87679838| MOVB.P -122(R28), R7 -567fdb38| MOVBW.W -73(R26), R22 -3b2e8138| MOVB.W 18(R17), R27 -7d74c039| MOVBW 29(R3), R29 -7d1f8539| MOVB 327(R27), R29 -225bff38| MOVBW (R25)(ZR.UXTW), R2 -6a7bed38| MOVBW (R27)(R13), R10 -0f69b538| MOVB (R8)(R21), R15 -c796cc78| MOVHW.P 201(R22), R7 -50268e78| MOVH.P 226(R18), R16 -229ddb78| MOVHW.W -71(R9), R2 -0f4f9178| MOVH.W -236(R24), R15 -59ecc379| MOVHW 502(R2), R25 -83d49679| MOVH 2922(R4), R3 -986be878| MOVHW (R28)(R8), R24 -cad8bf78| MOVH (R6)(ZR.SXTW<<1), R10 -6b4693b8| MOVW.P -204(R19), R11 -cb9e81b8| MOVW.W 25(R22), R11 -280d9eb9| MOVW 7692(R9), R8 -1a68b8b8| MOVW (R0)(R24), R26 -35b955b8| LDTRW -165(R9), R21 -658b57f8| LDTR -136(R27), R5 -b3594038| LDTRBW 5(R13), R19 -5ac95d78| LDTRH -36(R10), R26 -2c3ade38| LDTRSBW -29(R17), R12 -4de99038| LDTRSB -242(R10), R13 -e178c378| LDTRSHW 55(R7), R1 -a77a8778| LDTRSH 119(R21), R7 -cde982b8| LDTRSW 46(R14), R13 -04d15bb8| LDURW -67(R8), R4 -02a256f8| LDUR -150(R16), R2 -97405438| LDURBW -188(R4), R23 -99b14b78| LDURHW 187(R12), R25 -f9a1cf38| LDURSBW 250(R15), R25 -c0218c38| LDURSB 194(R14), R0 -5790d278| LDURSHW -215(R2), R23 -a3808278| LDURSH 40(R5), R3 -a9b08fb8| LDURSW 251(R5), R9 -98217f88| LDXPW (R12), (R24, R8) -4d6a7fc8| LDXP (R18), (R13, R26) -9c7e5f88| LDXRW (R20), R28 -0e7c5fc8| LDXR (R0), R14 -507c5f08| LDXRB (R2), R16 -ea7f5f48| LDXRH (RSP), R10 -5523dd1a| LSLW R29, R26, R21 -9721ca9a| LSL R10, R12, R23 -75665bd3| UBFIZ $37, R19, $26, R21 -0a20df1a| LSLW ZR, R0, R10 -5222c99a| LSL R9, R18, R18 -5124df1a| LSRW ZR, R2, R17 -6b26d69a| LSR R22, R19, R11 -9a7c0753| LSRW $7, R4, R26 -7bfd53d3| LSR $19, R11, R27 -5f26d91a| LSRW R25, R18, ZR -3625d89a| LSR R24, R9, R22 -9d76001b| MADDW R0, R29, R20, R29 -822f0e9b| MADD R14, R11, R28, R2 -e8fe101b| MNEGW R16, R23, R8 -88fc099b| MNEG R9, R4, R8 -dd030011| ADDW $0, R30, R29 -db010091| ADD $0, R14, R27 -0c6db012| MOVW $2090336255, R12 -3ff5aa92| MOVD $-1470693377, ZR -87f0f6d2| MOVD $-5223049667842932736, R7 -f3571132| ORRW $4294934559, ZR, R19 -f3bb0bb2| MOVD $-4503668347895825, R19 -f103082a| MOVW R8, R17 -ef031faa| MOVD ZR, R15 -4a6bf5f2| MOVK $(43866<<48), R10 -383b9312| MOVW $4294927910, R24 -f5fb9092| MOVD $-34784, R21 -d5b4b052| MOVW $2242248704, R21 -fdc5eed2| MOVD $8516025420380897280, R29 -c58435d5| MRS $11302, R5 -1a0f13d5| MSR R26, S2_3_C0_C15_0 -52d5181b| MSUBW R24, R21, R10, R18 -c4f81d9b| MSUB R29, R30, R6, R4 -a57c1b1b| MULW R27, R5, R5 -8f7f0a9b| MUL R10, R28, R15 -e75361aa| MVN R1>>20, R7 -e0cb15cb| NEG R21<<50, R0 -ffdb49eb| CMP R9>>54, ZR -f5031c5a| NGCW R28, R21 -e6031eda| NGC R30, R6 -e103077a| NGCSW R7, R1 -f20301fa| NGCS R1, R18 -1f2003d5| NOP -9347722a| ORNW R18>>17, R28, R19 -0591e1aa| ORN R1@>36, R8, R5 -7ba82a32| ORRW $4290904001, R3, R27 -ae087db2| ORR $56, R5, R14 -9608472a| ORRW R7>>2, R4, R22 -c40dc5aa| ORR R5@>3, R14, R4 -9d83bcf9| PRFM 30976(R28), $29 -78ab03d8| PRFM 7515(PC), $24 -6e9186f8| PRFUM 105(R11), $14 -c001c05a| RBITW R14, R0 -4203c0da| RBIT R26, R2 -c0035fd6| RET -9b08c05a| REVW R4, R27 -740cc0da| REV R3, R20 -0205c05a| REV16W R8, R2 -dd07c0da| REV16 R30, R29 -020bc0da| REV32 R24, R2 -780cc0da| REV R3, R24 -9b7f9513| EXTRW $31, R21, R28, R27 -5243dd93| EXTR $16, R29, R26, R18 -822eca1a| RORW R10, R20, R2 -f02ddb9a| ROR R27, R15, R16 -082ed81a| RORW R24, R16, R8 -7b2cc39a| ROR R3, R3, R27 -3b030b5a| SBCW R11, R25, R27 -f2021dda| SBC R29, R23, R18 -e600127a| SBCSW R18, R7, R6 -cf030ffa| SBCS R15, R30, R15 -3a797793| SBFIZ $9, R9, $31, R26 -4a305193| SBFIZ $47, R2, $13, R10 -a1c74493| SBFX $4, R29, $46, R1 -a00fc01a| SDIVW R0, R29, R0 -f10edd9a| SDIV R29, R23, R17 -9f2003d5| SEV -bf2003d5| SEVL -a52d319b| SMADDL R17, R11, R13, R5 -b4fc399b| SMNEGL R25, R5, R20 -579e369b| SMSUBL R22, R7, R18, R23 -ea7e429b| SMULH R2, R23, R10 -eb7f219b| SMULL R1, ZR, R11 -f1fe9f88| STLRW R17, (R23) -edff9fc8| STLR R13, (RSP) -bffe9f08| STLRB ZR, (R21) -9cfd9f48| STLRH R28, (R12) -41bf2688| STLXPW (R1, R15), (R26), R6 -01e93cc8| STLXP (R1, R26), (R8), R28 -e0fd1f88| STLXRW R0, (R15), ZR -12fe17c8| STLXR R18, (R16), R23 -d4fc1008| STLXRB R20, (R6), R16 -befc0048| STLXRH R30, (R5), R0 -76613728| STNPW -72(R11), R24, R22 -c7523ba8| STNP -80(R22), R20, R7 -8e3a9f28| STP.P (R14, R14), 248(R20) -aa1fa6a8| STP.P (R10, R7), -416(R29) -fbae8d29| STP.W (R27, R11), 108(R23) -f63c80a9| STP.W (R22, R15), (R7) -43d73629| STP (R3, R21), -76(R26) -1ae01ba9| STP (R26, R24), 440(R0) -8f650cb8| MOVW.P R15, 198(R12) -aad503f8| MOVD.P R10, 61(R13) -ec4d00b8| MOVW.W R12, 4(R15) -7dbc1df8| MOVD.W R29, -37(R3) -9b0226b9| MOVW R27, 9728(R20) -91691af9| MOVD R17, 13520(R12) -20840838| MOVB.P R0, 136(R1) -060c1f38| MOVB.W R6, -16(R0) -2b213a39| MOVB R11, 3720(R9) -ab6b3438| MOVB R11, (R29)(R20) -50e51e78| MOVH.P R16, -18(R10) -5d5d1878| MOVH.W R29, -123(R10) -ea862379| MOVH R10, 4546(R23) -d65a2778| MOVH R22, (R22)(R7.UXTW<<1) -d5ca12b8| STTRW -212(R22), R21 -001b18f8| STTR -127(R24), R0 -290a1e38| STTRBW -32(R17), R9 -0b381078| STTRHW -253(R0), R11 -c78101b8| MOVW R7, 24(R14) -c0b217f8| MOVD R0, -133(R22) -f8401e38| MOVB R24, -28(R7) -5e911a78| MOVH R30, -87(R10) -b7622d88| STXPW (R23, R24), (R21), R13 -233d37c8| STXP (R3, R15), (R9), R23 -847d0088| STXRW R4, (R12), R0 -a27d0bc8| STXR R2, (R13), R11 -f27f1e08| STXRB R18, (RSP), R30 -3a7d1848| STXRH R26, (R9), R24 -d4dc204b| SUBW R0.SXTW<<7, R6, R20 -874023cb| SUB R3.UXTW, R4, R7 -44eb4f51| SUBW $(1018<<12), R26, R4 -17b012cb| SUB R18<<44, R0, R23 -ac1e376b| SUBSW R23.UXTB<<7, R21, R12 -b0483beb| SUBS R27.UXTW<<2, R5, R16 -d1f994eb| SUBS R20->62, R14, R17 -61d513d4| SVC $40619 -591d0013| SXTBW R10, R25 -9f1f4093| SXTB R28, ZR -773f0013| SXTHW R27, R23 -453c4093| SXTH R2, R5 -b77c4093| SXTW R5, R23 -743628d5| SYSL $13920, R20 -9f613672| TSTW $4294966279, R12 -1f8d22f2| TST $-4610630471158349821, R8 -ff6e93ea| TST R19->27, R23 -06997ed3| UBFIZ $2, R8, $39, R6 -5dd054d3| UBFX $20, R2, $33, R29 -a54273d3| UBFIZ $13, R21, $17, R5 -7d08d11a| UDIVW R17, R3, R29 -120acf9a| UDIV R15, R16, R18 -1401a89b| UMADDL R8, R0, R8, R20 -08feb29b| UMNEGL R18, R16, R8 -eeb0b99b| UMSUBL R25, R12, R7, R14 -967fdd9b| UMULH R29, R28, R22 -947eb59b| UMULL R21, R20, R20 -7e1f0053| UXTBW R27, R30 -983c0053| UXTHW R4, R24 -5f2003d5| WFE -7f2003d5| WFI -3f2003d5| YIELD -02bb200e| VABS V24.B8, V2.B8 -0686ec4e| VADD V12.D2, V16.D2, V6.D2 -ea42ac0e| VADDHN V12.D2, V23.D2, V10.S2 -7d43624e| VADDHN2 V2.S4, V27.S4, V29.H8 -2cbd710e| VADDP V17.H4, V9.H4, V12.H4 -f5bab14e| VADDV V23.S4, V21 -8158284e| AESD V4.B16, V1.B16 -ba48284e| AESE V5.B16, V26.B16 -0c7a284e| AESIMC V16.B16, V12.B16 -3e6a284e| AESMC V17.B16, V30.B16 -091f384e| VAND V24.B16, V24.B16, V9.B16 -07b6046f| VBIC $(144<<8), V7.H8 -00c5006f| VMVNI $(8<<136), V0.S4 -f81e6c0e| VBIC V12.B8, V23.B8, V24.B8 -6f1ced2e| VBIF V13.B8, V3.B8, V15.B8 -e31da16e| VBIT V1.B16, V15.B16, V3.B16 -6a1d7c6e| VBSL V28.B16, V11.B16, V10.B16 -284a600e| VCLS V17.H4, V8.H4 -9a49202e| VCLZ V12.B8, V26.B8 -d78f706e| VCMEQ V16.H8, V30.H8, V23.H8 -7798e05e| VCMEQ $0, V3, V23 -739a200e| VCMEQ $0, V19.B8, V19.B8 -ff3f2b4e| VCMGE V11.B16, V31.B16, V31.B16 -5337370e| VCMGT V23.B8, V26.B8, V19.B8 -3489604e| VCMGT $0, V9.H8, V20.H8 -083d782e| VCMHS V24.H4, V8.H4, V8.H4 -c899e07e| VCMLE $0, V14, V8 -3498a06e| VCMLE $0, V1.S4, V20.S4 -ebaa200e| VCMLT $0, V23.B8, V11.B8 -408dfe4e| VCMTST V30.D2, V10.D2, V0.D2 -0e06085e| VMOV V16.D[0], V14 -1e0d0d0e| VDUP R8, V30.B8 -8e1d3a6e| VEOR V26.B16, V12.B16, V14.B16 -632a086e| VEXT $5, V8.B16, V19.B16, V3.B16 -97d7e57e| FABD F5, F28, F23 -6bd4a82e| VFABD V8.S2, V3.S2, V11.S2 -f7faa00e| FABS V23.S2, V23.S2 -54c2201e| FABSS F18, F20 -3ec3601e| FABSD F25, F30 -2aee317e| FACGE F17, F17, F10 -2fed392e| VFACGE V25.S2, V9.S2, V15.S2 -2befe97e| FACGT F9, F25, F11 -65eced6e| VFACGT V13.D2, V3.D2, V5.D2 -55d53c4e| FADD V28.S4, V10.S4, V21.S4 -8b283f1e| FADDS F31, F4, F11 -d828601e| FADDD F0, F6, F24 -e9d8307e| FADDP V7.S2, F9 -4084391e| FCCMPS HI, F25, F2, $0 -ef046d1e| FCCMPD EQ, F13, F7, $15 -d7a4241e| FCCMPES GE, F4, F6, $7 -dbf5601e| FCCMPED AL, F0, F14, $11 -77e7625e| FCMEQ F2, F27, F23 -2de67f4e| VFCMEQ V31.D2, V17.D2, V13.D2 -59daa05e| FCMEQ $0, F18, F25 -add9a00e| VFCMEQ $0, V13.S2, V13.S2 -dce42d7e| FCMGE F13, F6, F28 -62e6776e| VFCMGE V23.D2, V19.D2, V2.D2 -f9cae07e| FCMGE $0, F23, F25 -18e5ab7e| FCMGT F11, F8, F24 -84e7ae6e| VFCMGT V14.S4, V28.S4, V4.S4 -a0c8e05e| FCMGT $0, F5, F0 -c6cae04e| VFCMGT $0, V22.D2, V6.D2 -4fdaa07e| FCMLE $0, F18, F15 -e1d9a02e| VFCMLE $0, V15.S2, V1.S2 -1ee9a05e| FCMLT $0, F8, F30 -23eaa04e| VFCMLT $0, V17.S4, V3.S4 -6023321e| FCMPS F18, F27 -2823391e| FCMPS $(0.0), F25 -00236d1e| FCMPD F13, F24 -e820601e| FCMPD $(0.0), F7 -3022381e| FCMPES F24, F17 -f8233e1e| FCMPES $(0.0), F31 -b0206a1e| FCMPED F10, F5 -3820691e| FCMPED $(0.0), F1 -d85f271e| FCSELS PL, F30, F7, F24 -ed8f7a1e| FCSELD HI, F31, F26, F13 -0042e21e| FCVTHS F16, F0 -efc1e21e| FCVTHD F15, F15 -edc1231e| FCVTSH F15, F13 -0ac0221e| FCVTSD F0, F10 -39c3631e| FCVTDH F25, F25 -da43621e| FCVTDS F30, F26 -10cb615e| FCVTAS F24, F16 -f400241e| FCVTASW F7, R20 -2f00249e| FCVTAS F1, R15 -1d02641e| FCVTASW F16, R29 -9303649e| FCVTAS F28, R19 -02ca217e| FCVTAU F16, F2 -afc8212e| VFCVTAU V5.S2, V15.S2 -6e02251e| FCVTAUW F19, R14 -fd02259e| FCVTAU F23, R29 -8603651e| FCVTAUW F28, R6 -4001659e| FCVTAU F10, R0 -1f78210e| VFCVTL V0.H4, V31.S4 -d179214e| VFCVTL2 V14.H8, V17.S4 -fdbb615e| FCVTMS F31, F29 -9601301e| FCVTMSW F12, R22 -f403309e| FCVTMS F31, R20 -6b02701e| FCVTMSW F19, R11 -4802709e| FCVTMS F18, R8 -84ba217e| FCVTMU F20, F4 -ae01311e| FCVTMUW F13, R14 -8402319e| FCVTMU F20, R4 -7403711e| FCVTMUW F27, R20 -2a03719e| FCVTMU F25, R10 -a36b210e| VFCVTN V29.S4, V3.H4 -5c6a214e| VFCVTN2 V18.S4, V28.H8 -78a9215e| FCVTNS F11, F24 -b1ab614e| VFCVTNS V29.D2, V17.D2 -0c01201e| FCVTNSW F8, R12 -b303209e| FCVTNS F29, R19 -c401601e| FCVTNSW F14, R4 -5200609e| FCVTNS F2, R18 -c2a8617e| FCVTNU F6, F2 -daab616e| VFCVTNU V30.D2, V26.D2 -d001211e| FCVTNUW F14, R16 -0402219e| FCVTNU F16, R4 -7800611e| FCVTNUW F3, R24 -e602619e| FCVTNU F23, R6 -74aaa15e| FCVTPS F19, F20 -c801281e| FCVTPSW F14, R8 -8f02289e| FCVTPS F20, R15 -6d02681e| FCVTPSW F19, R13 -bc00689e| FCVTPS F5, R28 -43aba17e| FCVTPU F26, F3 -cda9a12e| VFCVTPU V14.S2, V13.S2 -c102291e| FCVTPUW F22, R1 -9103299e| FCVTPU F28, R17 -7602691e| FCVTPUW F19, R22 -4501699e| FCVTPU F10, R5 -976a616e| VFCVTXN2 V20.D2, V23.S4 -d5fc575f| FCVTZS $41, F6, F21 -babaa15e| FCVTZSSS F21, F26 -7aa6181e| FCVTZS $23, F19, R26 -c410189e| FCVTZS $60, F6, R4 -4db5589e| FCVTZS $19, F10, R13 -9000381e| FCVTZSSW F4, R16 -1702389e| FCVTZSS F16, R23 -8a03781e| FCVTZSDW F28, R10 -d501789e| FCVTZSD F14, R21 -eefd2d7f| FCVTZU $19, F15, F14 -4dfc3c6f| FCVTZU $4, V2.S4, V13.S4 -96bbe17e| FCVTZUDD F28, F22 -30b8e16e| FCVTZU V1.D2, V16.D2 -fdef191e| FCVTZU $5, F31, R29 -1d7b199e| FCVTZU $34, F24, R29 -b8f5591e| FCVTZU $3, F13, R24 -5080599e| FCVTZU $32, F2, R16 -d002391e| FCVTZUSW F22, R16 -9b03399e| FCVTZUS F28, R27 -7501791e| FCVTZUDW F11, R21 -7603799e| FCVTZUD F27, R22 -06fe3c6e| FDIV V28.S4, V16.S4, V6.S4 -c41b201e| FDIVS F0, F30, F4 -1618781e| FDIVD F24, F0, F22 -507b0d1f| FMADDS F13, F30, F26, F16 -8803491f| FMADDD F9, F0, F28, F8 -75f7394e| FMAX V25.S4, V27.S4, V21.S4 -804b3c1e| FMAXS F28, F28, F0 -c1496c1e| FMAXD F12, F14, F1 -5b69371e| FMAXNMS F23, F10, F27 -1468711e| FMAXNMD F17, F0, F20 -a4c8707e| FMAXNMP V5.D2, F4 -89f9707e| FMAXP V12.D2, F9 -4af63e2e| VFMAXP V30.S2, V18.S2, V10.S2 -25fa306e| FMAXV V17.S4, F5 -01f4e04e| FMIN V0.D2, V0.D2, V1.D2 -59592a1e| FMINS F10, F10, F25 -3959611e| FMIND F1, F9, F25 -73c7ba4e| FMINNM V26.S4, V27.S4, V19.S4 -1279391e| FMINNMS F25, F8, F18 -75796c1e| FMINNMD F12, F11, F21 -90cbb07e| FMINNMP V28.S2, F16 -c5c8b06e| FMINNMV V6.S4, F5 -cdfbf07e| FMINP V30.D2, F13 -edf6f66e| VFMINP V22.D2, V23.D2, V13.D2 -6513b85f| FMLA V24.S[1], F27, F5 -ee18984f| VFMLA V24.S[2], V7.S4, V14.S4 -b85ab75f| FMLS V23.S[3], F21, F24 -a3f5030f| FMOV $0.90625, V3.S2 -eaf7056f| FMOV $-31., V10.D2 -3b41201e| FMOVS F9, F27 -0d41601e| FMOVD F8, F13 -9700271e| FMOVS R4, F23 -ad03261e| FMOVS F29, R13 -2302679e| FMOVD R17, F3 -e101af9e| FMOV R15, V1.D[1] -f301669e| FMOVD F15, R19 -1103ae9e| FMOV V24.D[1], R17 -0230321e| FMOVS $-4.25, F2 -18b0751e| FMOVD $-14.5, F24 -92bc1b1f| FMSUBS F27, F15, F4, F18 -f8e14a1f| FMSUBD F10, F24, F15, F24 -ef91d35f| FMULD V19.D[0], F15, F15 -d293c24f| FMUL V2.D[0], V30.D2, V18.D2 -18dd2b2e| FMUL V11.S2, V8.S2, V24.S2 -a4093d1e| FMULS F29, F13, F4 -94096f1e| FMULD F15, F12, F20 -fe918e7f| FMULX V14.S[0], F15, F30 -7199c56f| VFMULX V5.D[1], V11.D2, V17.D2 -32dc695e| FMULX F9, F1, F18 -c8f9e06e| FNEG V14.D2, V8.D2 -9c41211e| FNEGS F12, F28 -c443611e| FNEGD F30, F4 -e77f301f| FNMADDS F16, F31, F31, F7 -9f326c1f| FNMADDD F12, F12, F20, F31 -d9e92f1f| FNMSUBS F15, F26, F14, F25 -00ad711f| FNMSUBD F17, F11, F8, F0 -c889211e| FNMULS F1, F14, F8 -528b761e| FNMULD F22, F26, F18 -01d8e15e| FRECPE F0, F1 -9aff7e5e| FRECPS F30, F28, F26 -78fe2a4e| VFRECPS V10.S4, V19.S4, V24.S4 -01f9e15e| FRECPX F8, F1 -128b216e| FRINTA V24.S4, V18.S4 -b241261e| FRINTAS F13, F18 -a841661e| FRINTAD F13, F8 -799aa16e| FRINTI V19.S4, V25.S4 -1cc2271e| FRINTIS F16, F28 -93c2671e| FRINTID F20, F19 -1a40251e| FRINTMS F0, F26 -ac42651e| FRINTMD F21, F12 -5889214e| FRINTN V10.S4, V24.S4 -5740241e| FRINTNS F2, F23 -9443641e| FRINTND F28, F20 -4b89a10e| FRINTP V10.S2, V11.S2 -a0c1241e| FRINTPS F13, F0 -93c2641e| FRINTPD F20, F19 -d49b216e| FRINTX V30.S4, V20.S4 -df41271e| FRINTXS F14, F31 -8d41671e| FRINTXD F12, F13 -3998a10e| FRINTZ V1.S2, V25.S2 -fdc2251e| FRINTZS F23, F29 -abc2651e| FRINTZD F21, F11 -10dba17e| FRSQRTE F24, F16 -edd9e16e| VFRSQRTE V15.D2, V13.D2 -75ffe35e| FRSQRTS F3, F27, F21 -b4fdbe4e| VFRSQRTS V30.S4, V13.S4, V20.S4 -24f8a16e| FSQRT V1.S4, V4.S4 -b6c1211e| FSQRTS F13, F22 -c1c3611e| FSQRTD F30, F1 -ffd5b44e| FSUB V20.S4, V15.S4, V31.S4 -d438331e| FSUBS F19, F6, F20 -f038771e| FSUBD F23, F7, F16 -675e1a6e| VMOV V19.H[5], V7.H[6] -2a1c0a4e| VMOV R1, V10.H[2] -de7f400c| VLD1 (R30), [V30.D1] -4aa7404c| VLD1 (R26), [V10.H8, V11.H8] -5d61400c| VLD1 (R10), [V29.B8, V30.B8, V31.B8] -af21404c| VLD1 (R13), [V15.B16, V16.B16, V17.B16, V18.B16] -737edf0c| VLD1.P 8(R19), [V19.D1] -757dd10c| VLD1.P (R11)(R17), [V21.D1] -5ca3df4c| VLD1.P 32(R26), [V28.B16, V29.B16] -93a1ce0c| VLD1.P (R12)(R14), [V19.B8, V20.B8] -1c65df0c| VLD1.P 24(R8), [V28.H4, V29.H4, V30.H4] -4461d34c| VLD1.P (R10)(R19), [V4.B16, V5.B16, V6.B16] -b22edf4c| VLD1.P 64(R21), [V18.D2, V19.D2, V20.D2, V21.D2] -c12fcc4c| VLD1.P (R30)(R12), [V1.D2, V2.D2, V3.D2, V4.D2] -5a03400d| VLD1 (R26), V26.B[0] -8d93404d| VLD1 (R28), V13.S[3] -2186404d| VLD1 (R17), V1.D[1] -9604df4d| VLD1.P 1(R4), V22.B[9] -4a1dc94d| VLD1.P (R10)(R9), V10.B[15] -4852df4d| VLD1.P 2(R18), V8.H[6] -2582df4d| VLD1.P 4(R17), V5.S[2] -2191c84d| VLD1.P (R9)(R8), V1.S[3] -c284df4d| VLD1.P 8(R6), V2.D[1] -8f85ce0d| VLD1.P (R12)(R14), V15.D[0] -87cd400d| VLD1R (R12), [V7.D1] -3bc8df4d| VLD1R 4(R1), [V27.S4] -77c4dd4d| VLD1R (R3)(R29), [V23.H8] -5384404c| VLD2 (R2), [V19.H8, V20.H8] -ca87df0c| VLD2 16(R30), [V10.H4, V11.H4] -1280d70c| VLD2 (R0)(R23), [V18.B8, V19.B8] -4c0a604d| LD2 (R18), [V12.B, V13.B][10] -3080600d| LD2 (R1), [V16.S, V17.S][0] -6686600d| LD2 (R19), [V6.D, V7.D][0] -061eff0d| LD2 2(R16), [V6.B, V7.B][7] -db05fa0d| LD2 (R14)(R26), [V27.B, V28.B][1] -8a49ff4d| LD2 4(R12), [V10.H, V11.H][5] -bb59ec4d| LD2 (R13)(R12), [V27.H, V28.H][7] -5a82ff0d| LD2 8(R18), [V26.S, V27.S][0] -6180e30d| LD2 (R3)(R3), [V1.S, V2.S][0] -6485ff0d| LD2 16(R11), [V4.D, V5.D][0] -7c86ed4d| LD2 (R19)(R13), [V28.D, V29.D][1] -54c0604d| VLD2R (R2), [V20.B16, V21.B16] -fdcaff0d| VLD2R 8(R23), [V29.S2, V30.S2] -7bc5e40d| VLD2R (R11)(R4), [V27.H4, V28.H4] -b349404c| VLD3 (R13), [V19.S4, V20.S4, V21.S4] -cf46df4c| VLD3 48(R22), [V15.H8, V16.H8, V17.H8] -934acc4c| VLD3 (R20)(R12), [V19.S4, V20.S4, V21.S4] -2c33404d| LD3 (R25), [V12.B, V13.B, V14.B][12] -897a400d| LD3 (R20), [V9.H, V10.H, V11.H][3] -f9b2400d| LD3 (R23), [V25.S, V26.S, V27.S][1] -4aa7404d| LD3 (R26), [V10.D, V11.D, V12.D][1] -4e25df4d| LD3 3(R10), [V14.B, V15.B, V16.B][9] -7827c40d| LD3 (R27)(R4), [V24.B, V25.B, V26.B][1] -c4a3df4d| LD3 12(R30), [V4.S, V5.S, V6.S][2] -f0a1cf0d| LD3 (R15)(R15), [V16.S, V17.S, V18.S][0] -1ba7df0d| LD3 24(R24), [V27.D, V28.D, V29.D][0] -f7a7d50d| LD3 (RSP)(R21), [V23.D, V24.D, V25.D][0] -a9ed404d| VLD3R (R13), [V9.D2, V10.D2, V11.D2] -5aecdf4d| VLD3R 24(R2), [V26.D2, V27.D2, V28.D2] -bae9c74d| VLD3R (R13)(R7), [V26.S4, V27.S4, V28.S4] -5904404c| VLD4 (R2), [V25.H8, V26.H8, V27.H8, V28.H8] -743b604d| LD4 (R27), [V20.B, V21.B, V22.B, V23.B][14] -bda1600d| LD4 (R13), [V29.S, V30.S, V31.S, V0.S][0] -a3a4600d| LD4 (R5), [V3.D, V4.D, V5.D, V6.D][0] -2f3aff4d| LD4 4(R17), [V15.B, V16.B, V17.B, V18.B][14] -e73bef4d| LD4 (RSP)(R15), [V7.B, V8.B, V9.B, V10.B][14] -5d78ef0d| LD4 (R2)(R15), [V29.H, V30.H, V31.H, V0.H][3] -acb3ff0d| LD4 16(R29), [V12.S, V13.S, V14.S, V15.S][1] -a8b2f04d| LD4 (R21)(R16), [V8.S, V9.S, V10.S, V11.S][3] -75a7ff4d| LD4 32(R27), [V21.D, V22.D, V23.D, V24.D][1] -75a6ee4d| LD4 (R19)(R14), [V21.D, V22.D, V23.D, V24.D][1] -d8e3604d| VLD4R (R30), [V24.B16, V25.B16, V26.B16, V27.B16] -49e9ff0d| VLD4R 16(R10), [V9.S2, V10.S2, V11.S2, V12.S2] -81effc0d| VLD4R (R28)(R28), [V1.D1, V2.D1, V3.D1, V4.D1] -893e622c| VLDNP -240(R20), V15, V9 -f90e626c| VLDNP -480(R23), V3, V25 -b0224fac| VLDNP 480(R21), V8, V16 -9186de2c| LDP.P 244(R20), (V17, V1) -e820d06c| LDP.P 256(R7), (V8, V8) -417de8ac| LDP.P -768(R10), (V1, V31) -7969ed2d| LDP.W -152(R11), (V25, V26) -70c8c36d| LDP.W 56(R3), (V16, V18) -30b4c4ad| LDP.W 144(R1), (V16, V13) -a1857f2d| LDP -4(R13), (V1, V1) -f4ae786d| LDP -120(R23), (V20, V11) -998366ad| LDP -816(R28), (V25, V0) -7535453c| MOVD.P 83(R11), V21 -5465477c| MOVD.P 118(R10), V20 -a2b44bbc| FMOVS.P 187(R5), F2 -ab045bfc| FMOVD.P -80(R5), F11 -0515d43c| MOVD.P -191(R8), V5 -43ad413c| MOVD.W 26(R10), V3 -22cd4f7c| MOVD.W 252(R9), V2 -5fad44bc| FMOVS.W 74(R10), F31 -db7d5afc| FMOVD.W -89(R14), F27 -15ccd63c| MOVD.W -148(R0), V21 -95c34b3d| MOVD 752(R28), V21 -f5885e7d| MOVD 3908(R7), V21 -54db66bd| FMOVS 9944(R26), F20 -46ee78fd| FMOVD 29144(R18), F6 -0cc4e93d| MOVD 42768(R0), V12 -e1c4211c| FMOVS 69159(PC), F1 -2071c35c| FMOVD -124023(PC), F0 -ae79703c| MOVD (R13)(R16), V14 -38fb67bc| FMOVS (R25)(R7.SXTX<<2), F24 -3e6b6dfc| FMOVD (R25)(R13), F30 -a278ff3c| MOVD (R5)(ZR<<4), V2 -ed02563c| VLDUR -160(R23), V13 -01c0507c| VLDUR -244(R0), V1 -7fd24ebc| VLDUR 237(R19), V31 -7a734ffc| VLDUR 247(R27), V26 -d4a3dd3c| VLDUR -38(R30), V20 -1c97250e| VMLA V5.B8, V24.B8, V28.B8 -af97a12e| VMLS V1.S2, V29.S2, V15.S2 -2b061f5e| VMOV V17.B[15], V11 -805e086e| VMOV V20.D[1], V0.D[0] -d91fbc4e| VORR V28.B16, V30.B16, V25.B16 -a43f040e| VMOV V29.S[0], R4 -fbe6054f| VMOVI $183, V27.B16 -9b75024f| VORR $(76<<24), V27.S4 -8436020f| VORR $(84<<8), V4.S2 -19f5010f| FMOV $12., V25.S2 -02e5062f| VMOVI $-281470698520576, V2 -d6e5066f| VMOVI $-281470681743616, V22.D2 -be9c240e| VMUL V4.B8, V5.B8, V30.B8 -2659202e| VMVN V9.B8, V6.B8 -f394046f| VBIC $135, V19.H8 -d856056f| VBIC $(182<<16), V24.S4 -2f85022f| VMVNI $73, V15.H4 -24baa02e| VNEG V17.S2, V4.S2 -145b206e| VMVN V24.B16, V20.B16 -191fff4e| VORN V31.B16, V24.B16, V25.B16 -6f96004f| VORR $19, V15.H8 -a564020f| VMOVI $(69<<24), V5.S2 -ae1ead0e| VORR V13.B8, V21.B8, V14.B8 -f2e1e00e| VPMULL V0.D1, V15.D1, V18.Q1 -0d426e2e| VRADDHN V14.S4, V16.S4, V13.H4 -4443246e| VRADDHN2 V4.H8, V26.H8, V4.B16 -015b602e| VRBIT V24.B8, V1.B8 -4209202e| VREV32 V10.B8, V2.B8 -d109a04e| VREV64 V14.S4, V17.S4 -5a8e380f| VRSHRN $8, V18.D2, V26.S2 -438d234f| VRSHRN2 $29, V10.D2, V3.S4 -a861716e| VRSUBHN2 V17.S4, V13.S4, V8.H8 -017c2f0e| VSABA V15.B8, V0.B8, V1.B8 -5d51a90e| VSABAL V9.S2, V10.S2, V29.D2 -c076a04e| VSABD V0.S4, V22.S4, V0.S4 -2d722e0e| VSABDL V14.B8, V17.B8, V13.H8 -1f732e4e| VSABDL2 V14.B16, V24.B16, V31.H8 -c628604e| VSADDLP V6.H8, V6.S4 -103b704e| VSADDLV V24.H8, V16 -8f122f0e| VSADDW V15.B8, V20.H8, V15.H8 -30e6755f| SCVTF $11, F17, F16 -73e7544f| SCVTF $44, V27.D2, V19.D2 -51d9615e| SCVTFDD F10, F17 -fad9210e| SCVTF V15.S2, V26.S2 -96c0421e| SCVTF $16, R4, F22 -76e1029e| SCVTF $8, R11, F22 -a791429e| SCVTF $28, R13, F7 -f100221e| SCVTFWS R7, F17 -e101621e| SCVTFWD R15, F1 -6e03229e| SCVTFS R27, F14 -0b01629e| SCVTFD R8, F11 -2401025e| SHA1C V2.S4, V9, V4 -5d08285e| SHA1H V2, V29 -65210d5e| SHA1M V13.S4, V11, V5 -29131a5e| SHA1P V26.S4, V25, V9 -2b311a5e| SHA1SU0 V26.S4, V9.S4, V11.S4 -0919285e| SHA1SU1 V8.S4, V9.S4 -f052035e| SHA256H2 V3.S4, V23, V16 -fe401e5e| SHA256H V30.S4, V7, V30 -7529285e| SHA256SU0 V11.S4, V21.S4 -cc60195e| SHA256SU1 V25.S4, V6.S4, V12.S4 -8b56060f| VORR $(212<<16), V11.S2 -3f3aa16e| VSHLL2 $32, V17.S4, V31.D2 -0986394f| VSHRN2 $7, V16.D2, V9.S4 -35276e4e| VSHSUB V14.H8, V25.H8, V21.H8 -e2556d7f| VSLI $45, V15, V2 -f7541e6f| VSLI $14, V7.H8, V23.H8 -3167630e| VSMAX V3.H4, V25.H4, V17.H4 -68a6230e| VSMAXP V3.B8, V19.B8, V8.B8 -a4aa304e| VSMAXV V21.B16, V4 -2520440f| VSMLAL V4.H[0], V1.H4, V5.S4 -8c286f4f| VSMLAL2 V15.H[6], V4.H8, V12.S4 -3a82660e| VSMLAL V6.H4, V17.H4, V26.S4 -d92f1f0e| SMOVW V30.B[15], R25 -912d114e| SMOV V12.B[8], R17 -b87ae05e| VSQABS V21, V24 -2d7b200e| VSQABS V25.B8, V13.B8 -560f645e| VSQADD V4, V26, V22 -4f0da54e| VSQADD V5.S4, V10.S4, V15.S4 -5992ba5e| VSQDMLAL V26, V18, V25 -b892684e| VSQDMLAL2 V8.H8, V21.H8, V24.S4 -63786e5f| VSQDMLSL V14.H[6], V3, V3 -0c79a10f| VSQDMLSL V1.S[3], V8.S2, V12.D2 -1d73504f| VSQDMLSL2 V0.H[1], V24.H8, V29.S4 -6cb36c5e| VSQDMLSL V12, V27, V12 -82b36e4e| VSQDMLSL2 V14.H8, V28.H8, V2.S4 -8dca5d4f| VSQDMULH V13.H[5], V20.H8, V13.H8 -fcb6b64e| VSQDMULH V22.S4, V23.S4, V28.S4 -d6b0974f| VSQDMULL2 V23.S[0], V6.S4, V22.D2 -afd0b84e| VSQDMULL2 V24.S4, V5.S4, V15.D2 -067b207e| VSQNEG V24, V6 -9979606e| VSQNEG V12.H8, V25.H8 -bfdbae0f| VSQRDMULH V14.S[3], V29.S2, V31.S2 -c3b7a07e| VSQRDMULH V0, V30, V3 -845d3d5e| VSQRSHL V29, V12, V4 -495dba0e| VSQRSHL V26.S2, V10.S2, V9.S2 -fa8e0d7f| VSQRSHRUN $3, V23, V26 -cf75185f| VSQSHL $8, V14, V15 -a975250f| VSQSHL $5, V13.S2, V9.S2 -424da05e| VSQSHL V0, V10, V2 -464db90e| VSQSHL V25.S2, V10.S2, V6.S2 -af656d7f| VSQSHLU $45, V13, V15 -e564436f| VSQSHLU $3, V7.D2, V5.D2 -c1973b5f| VSQSHRN $5, V30, V1 -d586036f| VMVNI $118, V21.H8 -4c2ea95e| VSQSUB V9, V18, V12 -df2efe4e| VSQSUB V30.D2, V22.D2, V31.D2 -c149a10e| VSQXTN V14.D2, V1.S2 -712a217e| VSQXTUN V19, V17 -9a29a12e| VSQXTUN V12.D2, V26.S2 -6a166e0e| VSRHADD V14.H4, V19.H4, V10.H4 -0445647f| VSRI $28, V8, V4 -6f44172f| VSRI $9, V3.H4, V15.H4 -cd56f94e| VSRSHL V25.D2, V22.D2, V13.D2 -12345b5f| VSRSRA $37, V0, V18 -f746fa5e| VSSHL V26, V23, V23 -89476c4e| VSSHL V12.H8, V28.H8, V9.H8 -0da60e0f| VSSHLL $6, V16.B8, V13.H8 -a504585f| VSSHR $40, V5, V5 -3b07544f| VSSHR $44, V25.D2, V27.D2 -3417350f| VSSRA $11, V25.S2, V20.S2 -1a213f0e| VSSUBL V31.B8, V8.B8, V26.H8 -1322a34e| VSSUBL2 V3.S4, V16.S4, V19.D2 -e931b84e| VSSUBW2 V24.S4, V15.D2, V9.D2 -dd7d004c| VST1 [V29.D2], (R14) -cea4000c| VST1 [V14.H4, V15.H4], (R6) -5a64000c| VST1 [V26.H4, V27.H4, V28.H4], (R2) -2b2c004c| VST1 [V11.D2, V12.D2, V13.D2, V14.D2], (R1) -39719f0c| VST1.P [V25.B8], 8(R9) -b771874c| VST1.P [V23.B16], (R13)(R7) -1da39f0c| VST1.P [V29.B8, V30.B8], 16(R24) -20a0800c| VST1.P [V0.B8, V1.B8], (R1)(R0) -5a6a9f4c| VST1.P [V26.S4, V27.S4, V28.S4], 48(R18) -0d69994c| VST1.P [V13.S4, V14.S4, V15.S4], (R8)(R25) -7e239f0c| VST1.P [V30.B8, V31.B8, V0.B8, V1.B8], 32(R27) -9a2d8e0c| VST1.P [V26.D1, V27.D1, V28.D1, V29.D1], (R12)(R14) -fd0b004d| VST1 V29.B[10], (RSP) -1058004d| VST1 V16.H[7], (R0) -0593000d| VST1 V5.S[1], (R24) -3d87000d| VST1 V29.D[0], (R25) -1a079f0d| VST1.P V26.B[1], 1(R24) -421b8f4d| VST1.P V2.B[14], (R26)(R15) -54489f4d| VST1.P V20.H[5], 2(R2) -c4809f4d| VST1.P V4.S[2], 4(R6) -0481840d| VST1.P V4.S[0], (R8)(R4) -6b859f0d| VST1.P V11.D[0], 8(R11) -f7878e4d| VST1.P V23.D[1], (RSP)(R14) -e788004c| VST2 (R7), [V7.S4, V8.S4] -79889f0c| VST2 16(R3), [V25.S2, V26.S2] -a502204d| ST2 (R21), [V5.B, V6.B][8] -0e50204d| ST2 (R0), [V14.H, V15.H][6] -6b93204d| ST2 (R27), [V11.S, V12.S][3] -0987200d| ST2 (R24), [V9.D, V10.D][0] -7003bf0d| ST2 2(R27), [V16.B, V17.B][0] -1a09a94d| ST2 (R8)(R9), [V26.B, V27.B][10] -1e43b00d| ST2 (R24)(R16), [V30.H, V31.H][0] -1a82bf0d| ST2 8(R16), [V26.S, V27.S][0] -9892a50d| ST2 (R20)(R5), [V24.S, V25.S][1] -5884bf0d| ST2 16(R2), [V24.D, V25.D][0] -9e87a34d| ST2 (R28)(R3), [V30.D, V31.D][1] -4e47004c| VST3 (R26), [V14.H8, V15.H8, V16.H8] -76489f4c| VST3 48(R3), [V22.S4, V23.S4, V24.S4] -3b48860c| VST3 (R1)(R6), [V27.S2, V28.S2, V29.S2] -e52a000d| ST3 (R23), [V5.B, V6.B, V7.B][2] -6f73004d| ST3 (R27), [V15.H, V16.H, V17.H][6] -9bb1004d| ST3 (R12), [V27.S, V28.S, V29.S][3] -0ca7000d| ST3 (R24), [V12.D, V13.D, V14.D][0] -2a259f0d| ST3 3(R9), [V10.B, V11.B, V12.B][1] -0524860d| ST3 (R0)(R6), [V5.B, V6.B, V7.B][1] -94689a4d| ST3 (R4)(R26), [V20.H, V21.H, V22.H][5] -c2a19f4d| ST3 12(R14), [V2.S, V3.S, V4.S][2] -5fb38c0d| ST3 (R26)(R12), [V31.S, V0.S, V1.S][1] -6da59f4d| ST3 24(R11), [V13.D, V14.D, V15.D][1] -32a7924d| ST3 (R25)(R18), [V18.D, V19.D, V20.D][1] -5b03000c| VST4 (R26), [V27.B8, V28.B8, V29.B8, V30.B8] -cd059f0c| VST4 32(R14), [V13.H4, V14.H4, V15.H4, V16.H4] -8601820c| VST4 (R12)(R2), [V6.B8, V7.B8, V8.B8, V9.B8] -7925200d| ST4 (R11), [V25.B, V26.B, V27.B, V28.B][1] -cd7a204d| ST4 (R22), [V13.H, V14.H, V15.H, V16.H][7] -dfb2204d| ST4 (R22), [V31.S, V0.S, V1.S, V2.S][3] -daa4200d| ST4 (R6), [V26.D, V27.D, V28.D, V29.D][0] -2135bf0d| ST4 4(R9), [V1.B, V2.B, V3.B, V4.B][5] -7727a90d| ST4 (R27)(R9), [V23.B, V24.B, V25.B, V26.B][1] -b4a3bf0d| ST4 16(R29), [V20.S, V21.S, V22.S, V23.S][0] -1ba3ae0d| ST4 (R24)(R14), [V27.S, V28.S, V29.S, V30.S][0] -93a4bf0d| ST4 32(R4), [V19.D, V20.D, V21.D, V22.D][0] -50a6b80d| ST4 (R18)(R24), [V16.D, V17.D, V18.D, V19.D][0] -79b53d2c| VSTNP -20(R11), V13, V25 -d895326c| VSTNP -216(R14), V5, V24 -d1810dac| VSTNP 432(R14), V0, V17 -08728c2c| STP.P (V8, V28), 96(R16) -ac1ba16c| STP.P (V12, V6), -496(R29) -f4fab1ac| STP.P (V20, V30), -464(R23) -c15bbe2d| STP.W (V1, V22), -16(R30) -2422856d| STP.W (V4, V8), 80(R17) -3d5282ad| STP.W (V29, V20), 64(R17) -5df5352d| STP (V29, V29), -84(R10) -5c54286d| STP (V28, V21), -384(R2) -753c11ad| STP (V21, V15), 544(R3) -54e4033c| MOVD.P V20, 62(R2) -aa54137c| MOVD.P V10, -203(R5) -c9d615bc| FMOVS.P F9, -163(R22) -fc471efc| FMOVD.P F28, -28(RSP) -20f78d3c| MOVD.P V0, 223(R25) -028d1b3c| MOVD.W V2, -72(R8) -35be037c| MOVD.W V21, 59(R17) -b98c15bc| FMOVS.W F25, -168(R5) -fd1e11fc| FMOVD.W F29, -239(R23) -13ec9a3c| MOVD.W V19, -82(R0) -b12d123d| MOVD V17, 1163(R13) -d6500b7d| MOVD V22, 1448(R6) -d46e39bd| FMOVS F20, 14700(R22) -b84f30fd| FMOVD F24, 24728(R29) -3cee993d| MOVD V28, 26544(R17) -4348293c| MOVD V3, (R2)(R9.UXTW) -ed7b253c| MOVD V13, (RSP)(R5) -8fc9357c| MOVD V15, (R12)(R21.SXTW) -87f832bc| FMOVS F7, (R4)(R18.SXTX<<2) -f1ea38fc| FMOVD F17, (R23)(R24.SXTX) -1c68a43c| MOVD V28, (R0)(R4) -dcb1023c| MOVD V28, 43(R14) -6701117c| MOVD V7, -240(R11) -85b11bbc| FMOVS F5, -69(R12) -8ea10efc| FMOVD F14, 234(R12) -eab08f3c| MOVD V10, 251(R7) -ca876a2e| VSUB V10.H4, V30.H4, V10.H4 -603be05e| VSUQADD V27, V0 -513a600e| VSUQADD V18.H4, V17.H4 -25231c4e| VTBL V28.B16, [V25.B16, V26.B16], V5.B16 -8c40100e| VTBL V16.B8, [V4.B16, V5.B16, V6.B16], V12.B8 -0462040e| VTBL V4.B8, [V16.B16, V17.B16, V18.B16, V19.B16], V4.B8 -34000f0e| VTBL V15.B8, [V1.B16], V20.B8 -eb301f4e| VTBX V31.B16, [V7.B16, V8.B16], V11.B16 -bb51124e| VTBX V18.B16, [V13.B16, V14.B16, V15.B16], V27.B16 -cf701d0e| VTBX V29.B8, [V6.B16, V7.B16, V8.B16, V9.B16], V15.B8 -4213080e| VTBX V8.B8, [V26.B16], V2.B8 -2b2b114e| VTRN1 V17.B16, V25.B16, V11.B16 -766ada4e| VTRN2 V26.D2, V19.D2, V22.D2 -4152672e| VUABAL V7.H4, V18.H4, V1.S4 -0953296e| VUABAL2 V9.B16, V24.B16, V9.H8 -41756c6e| VUABD V12.H8, V10.H8, V1.H8 -3670ae2e| VUABDL V14.S2, V1.S2, V22.D2 -5401312e| VUADDL V17.B8, V10.B8, V20.H8 -d103286e| VUADDL2 V8.B16, V30.B16, V17.H8 -a92a206e| VUADDLP V21.B16, V9.H8 -b839706e| VUADDLV V13.H8, V24 -ea106d2e| VUADDW V13.H4, V7.S4, V10.S4 -c010726e| VUADDW2 V18.H8, V6.S4, V0.S4 -e7e5517f| UCVTF $47, F15, F7 -49e7376f| UCVTF $9, V26.S4, V9.S4 -4ada617e| UCVTFDD F18, F10 -6b82431e| UCVTF $32, R19, F11 -db84039e| UCVTF $31, R6, F27 -1c72439e| UCVTF $36, R16, F28 -f301231e| UCVTFWS R15, F19 -3503631e| UCVTFWD R25, F21 -e602239e| UCVTFS R23, F6 -d503639e| UCVTFD R30, F21 -ec04606e| VUHADD V0.H8, V7.H8, V12.H8 -3f65782e| VUMAX V24.H4, V9.H4, V31.H4 -afa6232e| VUMAXP V3.B8, V21.B8, V15.B8 -cdaa706e| VUMAXV V22.H8, V13 -736c236e| VUMIN V3.B16, V3.B16, V19.B16 -a0afa62e| VUMINP V6.S2, V29.S2, V0.S2 -3c229e2f| VUMLAL V30.S[0], V17.S2, V28.D2 -9d29a56f| VUMLAL2 V5.S[3], V12.S4, V29.D2 -6c80392e| VUMLAL V25.B8, V3.B8, V12.H8 -4f60692f| VUMLSL V9.H[2], V2.H4, V15.S4 -61a1606e| VUMLSL2 V0.H8, V11.H8, V1.S4 -183e0b0e| VMOV V16.B[5], R24 -c0a89b6f| VUMULL2 V27.S[2], V6.S4, V0.D2 -36c0736e| VUMULL2 V19.H8, V1.H8, V22.S4 -120d757e| VUQADD V21, V8, V18 -3a0c2e2e| VUQADD V14.B8, V1.B8, V26.B8 -0d5d617e| VUQRSHL V1, V8, V13 -4d5cb16e| VUQRSHL V17.S4, V2.S4, V13.S4 -439c382f| VUQRSHRN $8, V2.D2, V3.S2 -9d745c7f| VUQSHL $28, V4, V29 -7b76656f| VUQSHL $37, V19.D2, V27.D2 -774ef37e| VUQSHL V19, V19, V23 -124eb32e| VUQSHL V19.S2, V16.S2, V18.S2 -bc961f6f| VUQSHRN2 $1, V21.S4, V28.H8 -a62ce07e| VUQSUB V0, V5, V6 -0f2dae2e| VUQSUB V14.S2, V8.S2, V15.S2 -b24b217e| VUQXTN V29, V18 -f148216e| VUQXTN2 V7.H8, V17.B16 -7d15a42e| VURHADD V4.S2, V11.S2, V29.S2 -9055fc6e| VURSHL V28.D2, V12.D2, V16.D2 -eb275e7f| VURSHR $34, V31, V11 -c0347c7f| VURSRA $4, V6, V0 -fe44e97e| VUSHL V9, V7, V30 -fa47e86e| VUSHL V8.D2, V31.D2, V26.D2 -95a7262f| VUSHLL $6, V28.S2, V21.D2 -9ca7096f| VUSHLL2 $1, V28.B16, V28.H8 -8a07527f| VUSHR $46, V28, V10 -c7076b6f| VUSHR $21, V30.D2, V7.D2 -8d39e07e| VUSQADD V12, V13 -f716727f| VUSRA $14, V23, V23 -3f14066f| VBIC $193, V31.S4 -b423ac2e| VUSUBL V12.S2, V29.S2, V20.D2 -7c22736e| VUSUBL2 V19.H8, V19.H8, V28.S4 -76317d2e| VUSUBW V29.H4, V11.S4, V22.S4 -8f302a6e| VUSUBW2 V10.B16, V4.H8, V15.H8 -c5a4286f| VUSHLL2 $8, V6.S4, V5.D2 -d3198c0e| VUZP1 V12.S2, V14.S2, V19.S2 -c05bdb4e| VUZP2 V27.D2, V30.D2, V0.D2 -362b610e| VXTN V25.S4, V22.H4 -0c29214e| VXTN2 V8.H8, V12.B16 -2b39c64e| VZIP1 V6.D2, V9.D2, V11.D2 -9500091a| ADCW R9, R4, R21 -c2001a9a| ADC R26, R6, R2 -6a02163a| ADCSW R22, R19, R10 -0c0118ba| ADCS R24, R8, R12 -b1c42b0b| ADDW R11.SXTW<<1, R5, R17 -bf15368b| ADD R22.UXTB<<5, R13, RSP -be1f468b| ADD R6>>7, R29, R30 -8f51352b| ADDSW R21.UXTW<<4, R12, R15 -97043eab| ADDS R30.UXTB<<1, R4, R23 -09b00931| ADDSW $620, R0, R9 -4de204ab| ADDS R4<<56, R18, R13 -f6b60912| ANDW $4288675743, R23, R22 -a6d13b92| AND $-2025524839466146845, R13, R6 -1cc0138a| AND R19<<48, R0, R28 -73882072| ANDSW $458759, R3, R19 -b5780af2| ANDS $-9007199256838145, R5, R21 -766c90ea| ANDS R16->27, R3, R22 -a72ac31a| ASRW R3, R21, R7 -ff28d59a| ASR R21, R7, ZR -3e7f0913| ASRW $9, R25, R30 -bafd5493| ASR $20, R13, R26 -302ad21a| ASRW R18, R17, R16 -602bd79a| ASR R23, R27, R0 -4fa4df54| BAL -66270(PC) -a2e9cf15| JMP 30402978(PC) -eff373b3| BFXIL $51, ZR, $10, R15 -9e3e7db3| BFI $3, R20, $16, R30 -87fa41b3| BFXIL $1, R20, $62, R7 -b831f80a| BICW R24@>12, R13, R24 -ffe0ae8a| BIC R14->56, R7, ZR -7c2c276a| BICSW R7<<11, R3, R28 -ccf2fbea| BICS R27@>60, R22, R12 -722cd195| CALL 30485618(PC) -20003fd6| CALL (R1) -e0021fd6| JMP (R23) -80db37d4| BRK $48860 -f25a4335| CBNZW R18, 137943(PC) -5d5376b5| CBNZ R29, 242330(PC) -5ce56834| CBZW R28, 214826(PC) -29b08cb4| CBZ R9, -236159(PC) -e048533a| CCMNW MI, R7, $19, $0 -e7da4fba| CCMN LE, R23, $15, $7 -67f2583a| CCMNW AL, R19, R24, $7 -60a05aba| CCMN GE, R3, R26, $0 -6a3b517a| CCMPW LO, R27, $17, $10 -8a4b55fa| CCMP MI, R28, $21, $10 -ed934b7a| CCMPW LS, ZR, R11, $13 -24414ffa| CCMP MI, R9, R15, $4 -0e169c1a| CSINCW NE, R16, R28, R14 -8264949a| CSINC VS, R4, R20, R2 -b363935a| CSINVW VS, R29, R19, R19 -ff619dda| CSINV VS, R15, R29, ZR -5f3703d5| CLREX $7 -0017c05a| CLSW R24, R0 -8216c0da| CLS R20, R2 -3310c05a| CLZW R1, R19 -6e13c0da| CLZ R27, R14 -7fd02b2b| CMNW R11.SXTW<<4, R3 -5f3928ab| CMN R8.UXTH<<6, R10 -1fb92cb1| CMN $2862, R8 -ff164eab| CMN R14>>5, R23 -ff71256b| CMPW R5.UXTX<<4, R15 -df6034eb| CMP R20.UXTX, R6 -ff776af1| CMP $(2717<<12), RSP -80e4855a| CSNEGW AL, R4, R5, R0 -da3490da| CSNEG LO, R6, R16, R26 -af40c71a| CRC32B R7, R5, R15 -c546cf1a| CRC32H R15, R22, R5 -6148c01a| CRC32W R0, R3, R1 -0f4eda9a| CRC32X R26, R16, R15 -4950d01a| CRC32CB R16, R2, R9 -8155c31a| CRC32CH R3, R12, R1 -835ace1a| CRC32CW R14, R20, R3 -f05fc59a| CRC32CX R5, ZR, R16 -0ae3901a| CSELW AL, R24, R16, R10 -ed51969a| CSEL PL, R15, R22, R13 -ee679f1a| CSETW VC, R14 -ed579f9a| CSET MI, R13 -f2539f5a| CSETMW MI, R18 -ffe39fda| CSINV AL, ZR, ZR, ZR -9d25941a| CSINCW HS, R12, R20, R29 -afb7829a| CSINC LT, R29, R2, R15 -7602895a| CSINVW EQ, R19, R9, R22 -011394da| CSINV NE, R24, R20, R1 -68b7935a| CSNEGW LT, R27, R19, R8 -a32784da| CSNEG HS, R29, R4, R3 -8159a6d4| DCPS1 $13004 -c2d9aad4| DCPS2 $22222 -63ceb7d4| DCPS3 $48755 -bf3903d5| DMB $9 -e003bfd6| DRPS -9f3603d5| DSB $6 -fc76a9ca| EON R9->29, R23, R28 -540f2352| EORW $3758096385, R26, R20 -187e1ed2| EOR $-1, R16, R24 -fd37004a| EORW R0<<13, ZR, R29 -b8c542ca| EOR R2>>49, R13, R24 -e0039fd6| ERET -5f26c193| EXTR $9, R1, R18, ZR -7f2003d5| WFI -ff2a03d5| HINT $87 -804a59d4| HLT $51796 -df3003d5| ISB $0 -10fcdf88| LDARW (R0), R16 -fafcdfc8| LDAR (R7), R26 -30fedf08| LDARB (R17), R16 -63fedf48| LDARH (R19), R3 -82ba7f88| LDAXPW (R20), (R2, R14) -d6917fc8| LDAXP (R14), (R22, R4) -59ff5f88| LDAXRW (R26), R25 -fefe5fc8| LDAXR (R23), R30 -a0fc5f08| LDAXRB (R5), R0 -fafd5f48| LDAXRH (R15), R26 -b8804428| LDNPW 36(R5), R0, R24 -93e969a8| LDNP -360(R12), R26, R19 -caccef28| LDP.P -132(R6), (R10, R19) -7365c3a8| LDP.P 48(R11), (R19, R25) -3106ca29| LDP.W 80(R17), (R17, R1) -0c02f7a9| LDP.W -144(R16), (R12, R0) -41af6529| LDP -212(R26), (R1, R11) -706b65a9| LDP -432(R27), (R16, R26) -746ecf68| LDPSW 120(R19), R27, R20 -c051c669| LDPSW 48(R14), R20, R0 -aded5b69| LDPSW 220(R13), R27, R13 -990457b8| MOVWU.P -144(R4), R25 -bbd556f8| MOVD.P -147(R13), R27 -a45c51b8| MOVWU.W -235(R5), R4 -344c41f8| MOVD.W 20(R1), R20 -2d8755b9| MOVWU 5508(R25), R13 -56e360f9| MOVD 16832(R26), R22 -3b264e38| MOVBU.P 226(R17), R27 -898f5738| MOVBU.W -136(R28), R9 -c44e6839| MOVBU 2579(R22), R4 -2d687738| MOVBU (R1)(R23), R13 -4d475978| MOVHU.P -108(R26), R13 -39de5278| MOVHU.W -211(R17), R25 -9cc54879| MOVHU 1122(R12), R28 -87fb6978| MOVHU (R28)(R9.SXTX<<1), R7 -3967cb38| MOVBW.P 182(R25), R25 -abf69438| MOVB.P -177(R21), R11 -159ed138| MOVBW.W -231(R16), R21 -b63e8038| MOVB.W 3(R21), R22 -4491c939| MOVBW 612(R10), R4 -497e8039| MOVB 31(R18), R9 -7d6bf638| MOVBW (R27)(R22), R29 -e578ba38| MOVB (R7)(R26), R5 -9f06ca78| MOVHW.P 160(R20), ZR -15c59d78| MOVH.P -36(R8), R21 -c07fd278| MOVHW.W -217(R30), R0 -bdec9278| MOVH.W -210(R5), R29 -10e2c979| MOVHW 1264(R16), R16 -54d29d79| MOVH 3816(R18), R20 -eb9484b8| MOVW.P 73(R7), R11 -ba2e8ab8| MOVW.W 162(R21), R26 -ac7f8ab9| MOVW 2684(R29), R12 -a359b3b8| MOVW (R13)(R19.UXTW<<2), R3 -f8b941b8| LDTRW 27(R15), R24 -fc0a4ef8| LDTR 224(R23), R28 -60d84638| LDTRBW 109(R3), R0 -44685978| LDTRH -106(R2), R4 -5379dc38| LDTRSBW -57(R10), R19 -ade99538| LDTRSB -162(R13), R13 -905ac078| LDTRSHW 5(R20), R16 -10898478| LDTRSH 72(R8), R16 -37188eb8| LDTRSW 225(R1), R23 -992351b8| LDURW -238(R28), R25 -c9f155f8| LDUR -161(R14), R9 -76e14e38| LDURBW 238(R11), R22 -47b24478| LDURHW 75(R18), R7 -4020da38| LDURSBW -94(R2), R0 -0dd09e38| LDURSB -19(R0), R13 -8f81d478| LDURSHW -184(R12), R15 -96918378| LDURSH 57(R12), R22 -b2e383b8| LDURSW 62(R29), R18 -d3717f88| LDXPW (R14), (R19, R28) -cb677fc8| LDXP (R30), (R11, R25) -ed7c5f88| LDXRW (R7), R13 -aa7d5fc8| LDXR (R13), R10 -1c7d5f08| LDXRB (R8), R28 -de7f5f48| LDXRH (R30), R30 -1622dc1a| LSLW R28, R16, R22 -cd20d59a| LSL R21, R6, R13 -882957d3| UBFIZ $41, R12, $11, R8 -3320cc1a| LSLW R12, R1, R19 -7320de9a| LSL R30, R3, R19 -af25d31a| LSRW R19, R13, R15 -e426c39a| LSR R3, R23, R4 -e87f0653| LSRW $6, ZR, R8 -85fe5fd3| LSR $31, R20, R5 -0025dc1a| LSRW R28, R8, R0 -6e27c79a| LSR R7, R27, R14 -6d69111b| MADDW R17, R26, R11, R13 -245d0d9b| MADD R13, R23, R9, R4 -85fe1f1b| MNEGW ZR, R20, R5 -9bfc199b| MNEG R25, R4, R27 -13000011| ADDW $0, R0, R19 -e3000091| ADD $0, R7, R3 -986c9e12| MOVW $4294904987, R24 -cb24f092| MOVD $9140618393701842943, R11 -3cbb88d2| MOVD $17881, R28 -e4170232| MOVW $3221225487, R4 -fe636bb2| MOVD $70368742080512, R30 -ed031b2a| MOVW R27, R13 -fb0308aa| MOVD R8, R27 -be3ed1f2| MOVK $(35317<<32), R30 -e0a08312| MOVW $4294959864, R0 -a1a6e592| MOVD $-3257509905472421889, R1 -5260f0d2| MOVD $-9006636304787570688, R18 -a60739d5| MRS $18493, R6 -281a1ed5| MSR R8, S3_6_C1_C10_1 -10f31b1b| MSUBW R27, R28, R24, R16 -46b41a9b| MSUB R26, R13, R2, R6 -ec7f041b| MULW R4, ZR, R12 -147f009b| MUL R0, R24, R20 -f67f692a| MVNW R9>>31, R22 -f2a3f7aa| MVN R23@>40, R18 -fe8b0bcb| NEG R11<<34, R30 -fef710eb| NEGS R16<<61, R30 -e0031b5a| NGCW R27, R0 -e0031dda| NGC R29, R0 -f003167a| NGCSW R22, R16 -e60302fa| NGCS R2, R6 -1f2003d5| NOP -2f51732a| ORNW R19>>20, R9, R15 -9b0facaa| ORN R12->3, R28, R27 -efa40032| ORRW $67044351, R7, R15 -3a0b19b2| ORR $3848290698112, R25, R26 -4b9ec4aa| ORR R4@>39, R18, R11 -f5eaa2f9| PRFM 17872(R23), PSTL3STRM -731df8d8| PRFM -16149(PC), PSTL2STRM -85c194f8| PRFUM -180(R12), PLDL3STRM -c303c05a| RBITW R30, R3 -3000c0da| RBIT R1, R16 -20025fd6| RET R17 -ec08c05a| REVW R7, R12 -180cc0da| REV R0, R24 -4b07c05a| REV16W R26, R11 -7805c0da| REV16 R11, R24 -ea08c0da| REV32 R7, R10 -a90fc0da| REV R29, R9 -fd788213| EXTRW $30, R2, R7, R29 -e1a0cc93| EXTR $40, R12, R7, R1 -792fdc1a| RORW R28, R27, R25 -2b2cc39a| ROR R3, R1, R11 -7e2ec71a| RORW R7, R19, R30 -392edd9a| ROR R29, R17, R25 -47020a5a| SBCW R10, R18, R7 -b7021dda| SBC R29, R21, R23 -7800197a| SBCSW R25, R3, R24 -1e0203fa| SBCS R3, R16, R30 -a6b07393| SBFIZ $13, R5, $45, R6 -94957d93| SBFIZ $3, R12, $38, R20 -ecff5e93| ASR $30, ZR, R12 -a50ddb1a| SDIVW R27, R13, R5 -7c0ec89a| SDIV R8, R19, R28 -9f2003d5| SEV -bf2003d5| SEVL -5953349b| SMADDL R20, R20, R26, R25 -bafc399b| SMNEGL R25, R5, R26 -a5cc289b| SMSUBL R8, R19, R5, R5 -297c579b| SMULH R23, R1, R9 -5e7e299b| SMULL R9, R18, R30 -29fd9f88| STLRW R9, (R9) -fdff9fc8| STLR R29, (RSP) -defe9f08| STLRB R30, (R22) -2ffc9f48| STLRH R15, (R1) -c1e12f88| STLXPW (R1, R24), (R14), R15 -62aa2ec8| STLXP (R2, R10), (R19), R14 -b9fe1b88| STLXRW R25, (R21), R27 -cbff14c8| STLXR R11, (R30), R20 -edfc0608| STLXRB R13, (R7), R6 -8dfe1048| STLXRH R13, (R20), R16 -1a323628| STNPW -80(R16), R12, R26 -b3cb3da8| STNP -40(R29), R18, R19 -52398828| STP.P (R18, R14), 64(R10) -434c95a8| STP.P (R3, R19), 336(R2) -2badbd29| STP.W (R11, R11), -20(R9) -daeabaa9| STP.W (R26, R26), -88(R22) -9bc91529| STP (R27, R18), 172(R12) -eea024a9| STP (R14, R8), -440(R7) -fec514b8| MOVW.P R30, -180(R15) -d21508f8| MOVD.P R18, 129(R14) -7c5c0ab8| MOVW.W R28, 165(R3) -6dec1ff8| MOVD.W R13, -2(R3) -35681eb9| MOVW R21, 7784(R1) -374d35f9| MOVD R23, 27288(R9) -1dd83df8| MOVD R29, (R0)(R29.SXTW<<3) -1b441b38| MOVB.P R27, -76(R0) -d69c0f38| MOVB.W R22, 249(R6) -b7ce0d39| MOVB R23, 883(R21) -2b7b3938| MOVB R11, (R25)(R25) -4e771d78| MOVH.P R14, -41(R26) -64cc0b78| MOVH.W R4, 188(R3) -07b90279| MOVH R7, 348(R8) -2eb91cb8| STTRW -53(R9), R14 -373a1bf8| STTR -77(R17), R23 -d0881138| STTRBW -232(R6), R16 -941a0e78| STTRHW 225(R20), R20 -da3000b8| MOVW R26, 3(R6) -5e921cf8| MOVD R30, -55(R18) -09821e38| MOVB R9, -24(R16) -67d21c78| MOVH R7, -51(R19) -0c352188| STXPW (R12, R13), (R8), R1 -146d26c8| STXP (R20, R27), (R8), R6 -837d1888| STXRW R3, (R12), R24 -f17f1bc8| STXR R17, (RSP), R27 -3b7d0f08| STXRB R27, (R9), R15 -6b7c1f48| STXRH R11, (R3), ZR -70ab204b| SUBW R0.SXTH<<2, R27, R16 -303b20cb| SUB R0.UXTH<<6, R25, R16 -69a909d1| SUB $618, R11, R9 -87384e4b| SUBW R14>>14, R4, R7 -ec720ecb| SUB R14<<28, R23, R12 -2b58256b| SUBSW R5.UXTW<<6, R1, R11 -59e93ceb| SUBS R28.SXTX<<2, R10, R25 -9e7b6ff1| SUBS $(3038<<12), R28, R30 -3e6d196b| SUBSW R25<<27, R9, R30 -54029ceb| SUBS R28->0, R18, R20 -c1f91cd4| SVC $59342 -091e0013| SXTBW R16, R9 -7f1c4093| SXTB R3, ZR -b53c0013| SXTHW R5, R21 -773e4093| SXTH R19, R23 -707f4093| SXTW R27, R16 -df3a2dd5| SYSL $342720, ZR -5f612972| TSTW $4286644223, R10 -bf2007f2| TST $-144115170929541117, R5 -1f11136a| TSTW R19<<4, R8 -5fd10dea| TST R13<<52, R10 -5c826bd3| UBFIZ $21, R18, $33, R28 -ad690c53| UBFXW $12, R13, $15, R13 -3a0f41d3| UBFX $1, R25, $3, R26 -6a197dd3| UBFIZ $3, R11, $7, R10 -520aca1a| UDIVW R10, R18, R18 -0809c89a| UDIV R8, R8, R8 -4e55a69b| UMADDL R6, R21, R10, R14 -99fda59b| UMNEGL R5, R12, R25 -1adabb9b| UMSUBL R27, R22, R16, R26 -177ddf9b| UMULH ZR, R8, R23 -1d7da49b| UMULL R4, R8, R29 -5a1c0053| UXTBW R2, R26 -603c0053| UXTHW R3, R0 -5f2003d5| WFE -7f2003d5| WFI -3f2003d5| YIELD -02b8600e| VABS V0.H4, V2.H4 -c886f94e| VADD V25.D2, V22.D2, V8.D2 -5642740e| VADDHN V20.S4, V18.S4, V22.H4 -3743294e| VADDHN2 V9.H8, V25.H8, V23.B16 -2abef74e| VADDP V23.D2, V17.D2, V10.D2 -18bbb14e| VADDV V24.S4, V24 -1a59284e| AESD V8.B16, V26.B16 -cf48284e| AESE V6.B16, V15.B16 -557a284e| AESIMC V18.B16, V21.B16 -2f6b284e| AESMC V25.B16, V15.B16 -cf1c324e| VAND V18.B16, V6.B16, V15.B16 -c9c6032f| VMVNI $(118<<136), V9.S2 -f1a7012f| VMVNI $(63<<8), V17.H4 -691d600e| VBIC V0.B8, V11.B8, V9.B8 -c31dfe6e| VBIF V30.B16, V14.B16, V3.B16 -c81cb66e| VBIT V22.B16, V6.B16, V8.B16 -701f6b2e| VBSL V11.B8, V27.B8, V16.B8 -7c4b600e| VCLS V27.H4, V28.H4 -ce4a602e| VCLZ V22.H4, V14.H4 -d08de37e| VCMEQ V3, V14, V16 -e98db96e| VCMEQ V25.S4, V15.S4, V9.S4 -6e99a00e| VCMEQ $0, V11.S2, V14.S2 -933d304e| VCMGE V16.B16, V12.B16, V19.B16 -0e88e07e| VCMGE $0, V0, V14 -9b89202e| VCMGE $0, V12.B8, V27.B8 -6a372f4e| VCMGT V15.B16, V27.B16, V10.B16 -128be05e| VCMGT $0, V24, V18 -9189a00e| VCMGT $0, V12.S2, V17.S2 -f734e67e| VCMHI V6, V7, V23 -4d36b82e| VCMHI V24.S2, V18.S2, V13.S2 -003e2b2e| VCMHS V11.B8, V16.B8, V0.B8 -729ae07e| VCMLE $0, V19, V18 -3699206e| VCMLE $0, V9.B16, V22.B16 -d1ab600e| VCMLT $0, V30.H4, V17.H4 -ad8e244e| VCMTST V4.B16, V21.B16, V13.B16 -ef06035e| VMOV V23.B[1], V15 -5007040e| VDUP V26.S[0], V16.S2 -890e0b4e| VDUP R20, V9.B16 -951c276e| VEOR V7.B16, V4.B16, V21.B16 -98d4bf7e| FABD F31, F4, F24 -bcd4ad6e| VFABD V13.S4, V5.S4, V28.S4 -78f8e04e| FABS V3.D2, V24.D2 -8cc0201e| FABSS F4, F12 -9ac1601e| FABSD F12, F26 -3aee307e| FACGE F16, F17, F26 -41ed352e| VFACGE V21.S2, V10.S2, V1.S2 -35edaf7e| FACGT F15, F9, F21 -02efe36e| VFACGT V3.D2, V24.D2, V2.D2 -21d6664e| FADD V6.D2, V17.D2, V1.D2 -5e282e1e| FADDS F14, F2, F30 -4d2a621e| FADDD F2, F18, F13 -7cd8707e| FADDP V3.D2, F28 -5dd4386e| VFADDP V24.S4, V2.S4, V29.S4 -69363e1e| FCCMPS LO, F30, F19, $9 -c8b56a1e| FCCMPD LT, F10, F14, $8 -d1f5271e| FCCMPES AL, F7, F14, $1 -3645751e| FCCMPED MI, F21, F9, $6 -21e6735e| FCMEQ F19, F17, F1 -b6dba05e| FCMEQ $0, F29, F22 -49d8a04e| VFCMEQ $0, V2.S4, V9.S4 -2ee5667e| FCMGE F6, F9, F14 -4ee7766e| VFCMGE V22.D2, V26.D2, V14.D2 -4bcba07e| FCMGE $0, F26, F11 -11c9a02e| VFCMGE $0, V8.S2, V17.S2 -81e4a97e| FCMGT F9, F4, F1 -d3e4b56e| VFCMGT V21.S4, V6.S4, V19.S4 -efc8e05e| FCMGT $0, F7, F15 -3ec9e04e| VFCMGT $0, V9.D2, V30.D2 -38d9a07e| FCMLE $0, F9, F24 -7dd9a02e| VFCMLE $0, V11.S2, V29.S2 -bae8a05e| FCMLT $0, F5, F26 -a2eaa04e| VFCMLT $0, V21.S4, V2.S4 -60212f1e| FCMPS F15, F11 -a8233a1e| FCMPS $(0.0), F29 -a020641e| FCMPD F4, F5 -e820701e| FCMPD $(0.0), F7 -b0203a1e| FCMPES F26, F5 -78203d1e| FCMPES $(0.0), F3 -70226e1e| FCMPED F14, F19 -3821601e| FCMPED $(0.0), F9 -06de241e| FCSELS LE, F16, F4, F6 -51de761e| FCSELD LE, F18, F22, F17 -5e42e21e| FCVTHS F18, F30 -b9c1e21e| FCVTHD F13, F25 -58c0231e| FCVTSH F2, F24 -9bc2221e| FCVTSD F20, F27 -2bc3631e| FCVTDH F25, F11 -f640621e| FCVTDS F7, F22 -caca215e| FCVTAS F22, F10 -5ec9210e| VFCVTAS V10.S2, V30.S2 -0302241e| FCVTASW F16, R3 -c103249e| FCVTAS F30, R1 -3003641e| FCVTASW F25, R16 -6201649e| FCVTAS F11, R2 -d3c9217e| FCVTAU F14, F19 -3bc8212e| VFCVTAU V1.S2, V27.S2 -0802251e| FCVTAUW F16, R8 -5f02259e| FCVTAU F18, ZR -2801651e| FCVTAUW F9, R8 -f200659e| FCVTAU F7, R18 -d179610e| VFCVTL V14.S2, V17.D2 -347b614e| VFCVTL2 V25.S4, V20.D2 -08b9615e| FCVTMS F8, F8 -f000301e| FCVTMSW F7, R16 -8002309e| FCVTMS F20, R0 -5202701e| FCVTMSW F18, R18 -c803709e| FCVTMS F30, R8 -1cbb217e| FCVTMU F24, F28 -d1b9212e| VFCVTMU V14.S2, V17.S2 -2e02311e| FCVTMUW F17, R14 -d003319e| FCVTMU F30, R16 -ce03711e| FCVTMUW F30, R14 -0801719e| FCVTMU F8, R8 -4c6b210e| VFCVTN V26.S4, V12.H4 -6869214e| VFCVTN2 V11.S4, V8.H8 -2faa615e| FCVTNS F17, F15 -33aa614e| VFCVTNS V17.D2, V19.D2 -d303201e| FCVTNSW F30, R19 -4001209e| FCVTNS F10, R0 -b202601e| FCVTNSW F21, R18 -c603609e| FCVTNS F30, R6 -8ea8217e| FCVTNU F4, F14 -cc01211e| FCVTNUW F14, R12 -3a00219e| FCVTNU F1, R26 -2002611e| FCVTNUW F17, R0 -ff01619e| FCVTNU F15, ZR -1baba15e| FCVTPS F24, F27 -9d00281e| FCVTPSW F4, R29 -eb02289e| FCVTPS F23, R11 -3503681e| FCVTPSW F25, R21 -4301689e| FCVTPS F10, R3 -63aba17e| FCVTPU F27, F3 -caa8a12e| VFCVTPU V6.S2, V10.S2 -7702291e| FCVTPUW F19, R23 -b503299e| FCVTPU F29, R21 -2f03691e| FCVTPUW F25, R15 -5b01699e| FCVTPU F10, R27 -7369617e| FCVTXN F11, F19 -6b6b612e| VFCVTXN V27.D2, V11.S2 -f268616e| VFCVTXN2 V7.D2, V18.S4 -bcff7b5f| FCVTZS $5, F29, F28 -19bbe15e| FCVTZSDD F24, F25 -c6b9e14e| FCVTZS V14.D2, V6.D2 -e9fc189e| FCVTZS $1, F7, R9 -6661589e| FCVTZS $40, F11, R6 -9702381e| FCVTZSSW F20, R23 -ed00389e| FCVTZSS F7, R13 -3a01781e| FCVTZSDW F9, R26 -8801789e| FCVTZSD F12, R8 -a5ff2e2f| FCVTZU $18, V29.S2, V5.S2 -5bbbe17e| FCVTZUDD F26, F27 -1a74199e| FCVTZU $35, F0, R26 -e391599e| FCVTZU $28, F15, R3 -b203391e| FCVTZUSW F29, R18 -ed01399e| FCVTZUS F15, R13 -c200791e| FCVTZUDW F6, R2 -5402799e| FCVTZUD F18, R20 -1aff2b6e| FDIV V11.S4, V24.S4, V26.S4 -171a391e| FDIVS F25, F16, F23 -7d196b1e| FDIVD F11, F11, F29 -f9721f1f| FMADDS F31, F28, F23, F25 -7070551f| FMADDD F21, F28, F3, F16 -05f7624e| FMAX V2.D2, V24.D2, V5.D2 -88493d1e| FMAXS F29, F12, F8 -4a496d1e| FMAXD F13, F10, F10 -5068321e| FMAXNMS F18, F2, F16 -a66a761e| FMAXNMD F22, F21, F6 -0ccb707e| FMAXNMP V24.D2, F12 -6ec66f6e| VFMAXNMP V15.D2, V19.D2, V14.D2 -41f8307e| FMAXP V2.S2, F1 -05f72a6e| VFMAXP V10.S4, V24.S4, V5.S4 -aa5b231e| FMINS F3, F29, F10 -d6596a1e| FMIND F10, F14, F22 -15c4b24e| FMINNM V18.S4, V0.S4, V21.S4 -6279281e| FMINNMS F8, F11, F2 -af7b6a1e| FMINNMD F10, F29, F15 -7dc9f07e| FMINNMP V11.D2, F29 -dfc6bb6e| VFMINNMP V27.S4, V22.S4, V31.S4 -56c8b06e| FMINNMV V2.S4, F22 -0ff8f07e| FMINP V0.D2, F15 -a211c55f| FMLA V5.D[0], F13, F2 -0dce224e| VFMLA V2.S4, V16.S4, V13.S4 -4c5ba15f| FMLS V1.S[3], F26, F12 -8953ba0f| VFMLS V26.S[1], V28.S2, V9.S2 -09cdbd4e| VFMLS V29.S4, V8.S4, V9.S4 -97f7044f| FMOV $-7., V23.S4 -dff4006f| FMOV $2.75, V31.D2 -c543201e| FMOVS F30, F5 -1740601e| FMOVD F0, F23 -a100271e| FMOVS R5, F1 -f102261e| FMOVS F23, R17 -b302679e| FMOVD R21, F19 -4001af9e| FMOV R10, V0.D[1] -db01669e| FMOVD F14, R27 -8300ae9e| FMOV V4.D[1], R3 -1870331e| FMOVS $-6.75, F24 -08507d1e| FMOVD $-0.8125, F8 -5cbf0c1f| FMSUBS F12, F15, F26, F28 -89e3501f| FMSUBD F16, F24, F28, F9 -3a93c95f| FMULD V9.D[0], F25, F26 -5a90ae4f| FMUL V14.S[1], V2.S4, V26.S4 -ba0a2f1e| FMULS F15, F21, F26 -5b0a7c1e| FMULD F28, F18, F27 -e991c07f| FMULX V0.D[0], F15, F9 -be989c6f| VFMULX V28.S[2], V5.S4, V30.S4 -d3dc7a5e| FMULX F26, F6, F19 -d4de7f4e| VFMULX V31.D2, V22.D2, V20.D2 -8e41211e| FNEGS F12, F14 -dc42611e| FNEGD F22, F28 -cb362e1f| FNMADDS F14, F13, F22, F11 -6441791f| FNMADDD F25, F16, F11, F4 -36ed291f| FNMSUBS F9, F27, F9, F22 -35b27a1f| FNMSUBD F26, F12, F17, F21 -9388301e| FNMULS F16, F4, F19 -c088711e| FNMULD F17, F6, F0 -e8daa15e| FRECPE F23, F8 -a9fc395e| FRECPS F25, F5, F9 -49fe284e| VFRECPS V8.S4, V18.S4, V9.S4 -85f8a15e| FRECPX F4, F5 -ee43261e| FRINTAS F31, F14 -7042661e| FRINTAD F19, F16 -2b98a16e| FRINTI V1.S4, V11.S4 -fac2271e| FRINTIS F23, F26 -76c3671e| FRINTID F27, F22 -7942251e| FRINTMS F19, F25 -8742651e| FRINTMD F20, F7 -fc8a214e| FRINTN V23.S4, V28.S4 -c041241e| FRINTNS F14, F0 -b241641e| FRINTND F13, F18 -c588a14e| FRINTP V6.S4, V5.S4 -6ec2241e| FRINTPS F19, F14 -ddc0641e| FRINTPD F6, F29 -1a9a616e| FRINTX V16.D2, V26.D2 -7c41271e| FRINTXS F11, F28 -d243671e| FRINTXD F30, F18 -b49aa14e| FRINTZ V21.S4, V20.S4 -5bc0251e| FRINTZS F2, F27 -43c1651e| FRINTZD F10, F3 -3bdba17e| FRSQRTE F25, F27 -9ddba12e| VFRSQRTE V28.S2, V29.S2 -1ffee65e| FRSQRTS F6, F16, F31 -8bfdb54e| VFRSQRTS V21.S4, V12.S4, V11.S4 -33c1211e| FSQRTS F9, F19 -a5c0611e| FSQRTD F5, F5 -a2d7b74e| FSUB V23.S4, V29.S4, V2.S4 -a338301e| FSUBS F16, F5, F3 -e139681e| FSUBD F8, F15, F1 -96170e6e| VMOV V28.H[1], V22.H[3] -791c014e| VMOV R3, V25.B[0] -cf79404c| VLD1 (R14), [V15.S4] -75a6404c| VLD1 (R19), [V21.H8, V22.H8] -ed62404c| VLD1 (R23), [V13.B16, V14.B16, V15.B16] -392a400c| VLD1 (R17), [V25.S2, V26.S2, V27.S2, V28.S2] -cd7cdf4c| VLD1.P 16(R6), [V13.D2] -f677ce4c| VLD1.P (RSP)(R14), [V22.H8] -d4a3df0c| VLD1.P 16(R30), [V20.B8, V21.B8] -8ba1d90c| VLD1.P (R12)(R25), [V11.B8, V12.B8] -396fdf0c| VLD1.P 24(R25), [V25.D1, V26.D1, V27.D1] -4c64db0c| VLD1.P (R2)(R27), [V12.H4, V13.H4, V14.H4] -3f2adf4c| VLD1.P 64(R17), [V31.S4, V0.S4, V1.S4, V2.S4] -b329ce4c| VLD1.P (R13)(R14), [V19.S4, V20.S4, V21.S4, V22.S4] -aa02400d| VLD1 (R21), V10.B[0] -7980404d| VLD1 (R3), V25.S[2] -5884404d| VLD1 (R2), V24.D[1] -f203df4d| VLD1.P 1(RSP), V18.B[8] -3519c40d| VLD1.P (R9)(R4), V21.B[6] -ed59df0d| VLD1.P 2(R15), V13.H[3] -9e52d90d| VLD1.P (R20)(R25), V30.H[2] -cd93df4d| VLD1.P 4(R30), V13.S[3] -5982cb4d| VLD1.P (R18)(R11), V25.S[2] -4f84df4d| VLD1.P 8(R2), V15.D[1] -2d85d50d| VLD1.P (R9)(R21), V13.D[0] -33c2400d| VLD1R (R17), [V19.B8] -e2c8df4d| VLD1R 4(R7), [V2.S4] -83c2c44d| VLD1R (R20)(R4), [V3.B16] -5487400c| VLD2 (R26), [V20.H4, V21.H4] -e08adf0c| VLD2 16(R23), [V0.S2, V1.S2] -768ac40c| VLD2 (R19)(R4), [V22.S2, V23.S2] -4c0f604d| LD2 (R26), [V12.B, V13.B][11] -e043604d| LD2 (RSP), [V0.H, V1.H][4] -c281600d| LD2 (R14), [V2.S, V3.S][0] -e585600d| LD2 (R15), [V5.D, V6.D][0] -2c1aff4d| LD2 2(R17), [V12.B, V13.B][14] -820bfd4d| LD2 (R28)(R29), [V2.B, V3.B][10] -d593ff0d| LD2 8(R30), [V21.S, V22.S][1] -6780ea0d| LD2 (R3)(R10), [V7.S, V8.S][0] -3484ff4d| LD2 16(R1), [V20.D, V21.D][1] -6a86ee4d| LD2 (R19)(R14), [V10.D, V11.D][1] -e4c7604d| VLD2R (RSP), [V4.H8, V5.H8] -69c8ff0d| VLD2R 8(R3), [V9.S2, V10.S2] -52ccf30d| VLD2R (R2)(R19), [V18.D1, V19.D1] -9e4b404c| VLD3 (R28), [V30.S4, V31.S4, V0.S4] -0440df4c| VLD3 48(R0), [V4.B16, V5.B16, V6.B16] -0f49cf0c| VLD3 (R8)(R15), [V15.S2, V16.S2, V17.S2] -b22e400d| LD3 (R21), [V18.B, V19.B, V20.B][3] -9473400d| LD3 (R28), [V20.H, V21.H, V22.H][2] -1da0404d| LD3 (R0), [V29.S, V30.S, V31.S][2] -21a5404d| LD3 (R9), [V1.D, V2.D, V3.D][1] -3b23df0d| LD3 3(R25), [V27.B, V28.B, V29.B][0] -0937c60d| LD3 (R24)(R6), [V9.B, V10.B, V11.B][5] -926bcb4d| LD3 (R28)(R11), [V18.H, V19.H, V20.H][5] -f5a1df4d| LD3 12(R15), [V21.S, V22.S, V23.S][2] -dba3c44d| LD3 (R30)(R4), [V27.S, V28.S, V29.S][2] -12a5df0d| LD3 24(R8), [V18.D, V19.D, V20.D][0] -daa7d30d| LD3 (R30)(R19), [V26.D, V27.D, V28.D][0] -3beb400d| VLD3R (R25), [V27.S2, V28.S2, V29.S2] -cde4df4d| VLD3R 6(R6), [V13.H8, V14.H8, V15.H8] -a4efc44d| VLD3R (R29)(R4), [V4.D2, V5.D2, V6.D2] -fc0a400c| VLD4 (R23), [V28.S2, V29.S2, V30.S2, V31.S2] -ae05df0c| VLD4 32(R13), [V14.H4, V15.H4, V16.H4, V17.H4] -cb07c84c| VLD4 (R30)(R8), [V11.H8, V12.H8, V13.H8, V14.H8] -1825604d| LD4 (R8), [V24.B, V25.B, V26.B, V27.B][9] -2869604d| LD4 (R9), [V8.H, V9.H, V10.H, V11.H][5] -07b2600d| LD4 (R16), [V7.S, V8.S, V9.S, V10.S][1] -9fa4600d| LD4 (R4), [V31.D, V0.D, V1.D, V2.D][0] -de22ff0d| LD4 4(R22), [V30.B, V31.B, V0.B, V1.B][0] -6a36ed4d| LD4 (R19)(R13), [V10.B, V11.B, V12.B, V13.B][13] -23a2ff4d| LD4 16(R17), [V3.S, V4.S, V5.S, V6.S][2] -22a0fe4d| LD4 (R1)(R30), [V2.S, V3.S, V4.S, V5.S][2] -7ca4ff4d| LD4 32(R3), [V28.D, V29.D, V30.D, V31.D][1] -03a7ec4d| LD4 (R24)(R12), [V3.D, V4.D, V5.D, V6.D][1] -b9ee600d| VLD4R (R21), [V25.D1, V26.D1, V27.D1, V28.D1] -03e8ff0d| VLD4R 16(R0), [V3.S2, V4.S2, V5.S2, V6.S2] -e7e3f24d| VLD4R (RSP)(R18), [V7.B16, V8.B16, V9.B16, V10.B16] -451a4e2c| VLDNP 112(R18), V6, V5 -01236f6c| VLDNP -272(R24), V8, V1 -204041ac| VLDNP 32(R1), V16, V0 -1b21cc2c| LDP.P 96(R8), (V27, V8) -41ccc06c| LDP.P 8(R2), (V1, V19) -65b8e6ac| LDP.P -816(R3), (V5, V14) -a58bed2d| LDP.W -148(R29), (V5, V2) -d8a3c46d| LDP.W 72(R30), (V24, V8) -dc82c0ad| LDP.W 16(R22), (V28, V0) -eda7782d| LDP -60(RSP), (V13, V9) -041b6c6d| LDP -320(R24), (V4, V6) -17ea6bad| LDP -656(R16), (V23, V26) -4e14433c| MOVD.P 49(R2), V14 -cd844e7c| MOVD.P 232(R6), V13 -99945dbc| FMOVS.P -39(R4), F25 -170556fc| FMOVD.P -160(R8), F23 -3115d53c| MOVD.P -175(R9), V17 -3c6d403c| MOVD.W 6(R9), V28 -f8fc527c| MOVD.W -209(R7), V24 -776c58bc| FMOVS.W -122(R3), F23 -075f57fc| FMOVD.W -139(R24), F7 -28cdc33c| MOVD.W 60(R9), V8 -40a15f3d| MOVD 2024(R10), V0 -3b8c597d| MOVD 3270(R1), V27 -28f958bd| FMOVS 6392(R9), F8 -852d6ffd| FMOVD 24152(R12), F5 -e149ea3d| MOVD 43296(R15), V1 -807f7c1c| FMOVS 254972(PC), F0 -e7a61c5c| FMOVD 58679(PC), F7 -4bca773c| MOVD (R18)(R23.SXTW), V11 -8d69623c| MOVD (R12)(R2), V13 -cef8797c| MOVD (R6)(R25.SXTX<<1), V14 -b7497bfc| FMOVD (R13)(R27.UXTW), F23 -dbdbfc3c| MOVD (R30)(R28.SXTW<<4), V27 -1a60553c| VLDUR -170(R0), V26 -74f3477c| VLDUR 127(R27), V20 -f46249bc| VLDUR 150(R23), V20 -b8015bfc| VLDUR -80(R13), V24 -3372de3c| VLDUR -25(R17), V19 -04972c0e| VMLA V12.B8, V24.B8, V4.B8 -f0051b5e| VMOV V15.B[13], V16 -7f76146e| VMOV V19.S[3], V31.S[2] -6c1cb60e| VORR V22.B8, V3.B8, V12.B8 -ae3f1e0e| VMOV V29.H[7], R14 -f8e5004f| VMOVI $15, V24.B16 -0355010f| VORR $(40<<16), V3.S2 -4825020f| VMOVI $(74<<8), V8.S2 -64d7040f| VMOVI $(155<<144), V4.S2 -46e6062f| VMOVI $-280379759984896, V6 -bde6056f| VMOVI $-71776123339472641, V29.D2 -789f350e| VMUL V21.B8, V27.B8, V24.B8 -7b5b202e| VMVN V27.B8, V27.B8 -2dd4066f| VMVNI $(193<<144), V13.S4 -8266012f| VMVNI $(52<<24), V2.S2 -1025022f| VMVNI $(72<<8), V16.S2 -eabba06e| VNEG V31.S4, V10.S4 -7e5a206e| VMVN V19.B16, V30.B16 -6a1fea0e| VORN V10.B8, V27.B8, V10.B8 -b406010f| VMOVI $53, V20.S2 -f564040f| VMOVI $(135<<24), V21.S2 -b21cb80e| VORR V24.B8, V5.B8, V18.B8 -2b437a2e| VRADDHN V26.S4, V25.S4, V11.H4 -6d402c6e| VRADDHN2 V12.H8, V3.H8, V13.B16 -655a606e| VRBIT V19.B16, V5.B16 -5108202e| VREV32 V2.B8, V17.B8 -750a200e| VREV64 V19.B8, V21.B8 -f88f0b0f| VRSHRN $5, V31.H8, V24.B8 -8263236e| VRSUBHN2 V3.H8, V28.H8, V2.B16 -787c320e| VSABA V18.B8, V3.B8, V24.B8 -f551220e| VSABAL V2.B8, V15.B8, V21.H8 -b5766d0e| VSABD V13.H4, V21.H4, V21.H4 -9270240e| VSABDL V4.B8, V4.B8, V18.H8 -4d71384e| VSABDL2 V24.B16, V10.B16, V13.H8 -8f6a600e| VSADALP V20.H4, V15.S2 -e501750e| VSADDL V21.H4, V15.H4, V5.S4 -5202ab4e| VSADDL2 V11.S4, V18.S4, V18.D2 -7029200e| VSADDLP V11.B8, V16.H4 -3913710e| VSADDW V17.H4, V25.S4, V25.S4 -d7e4575f| SCVTF $41, F6, F23 -c6db215e| SCVTFSS F30, F6 -17d8214e| SCVTF V0.S4, V23.S4 -62c4021e| SCVTF $15, R3, F2 -f5cd421e| SCVTF $13, R15, F21 -6128029e| SCVTF $54, R3, F1 -9a7c429e| SCVTF $33, R4, F26 -6102221e| SCVTFWS R19, F1 -0b03621e| SCVTFWD R24, F11 -ed01229e| SCVTFS R15, F13 -6f02629e| SCVTFD R19, F15 -ac03055e| SHA1C V5.S4, V29, V12 -e309285e| SHA1H V15, V3 -2a221b5e| SHA1M V27.S4, V17, V10 -a013185e| SHA1P V24.S4, V29, V0 -6032005e| SHA1SU0 V0.S4, V19.S4, V0.S4 -f918285e| SHA1SU1 V7.S4, V25.S4 -fb50035e| SHA256H2 V3.S4, V7, V27 -6d421c5e| SHA256H V28.S4, V19, V13 -c12b285e| SHA256SU0 V30.S4, V1.S4 -6362095e| SHA256SU1 V9.S4, V19.S4, V3.S4 -a805bb0e| VSHADD V27.S2, V13.S2, V8.S2 -783b616e| VSHLL2 $16, V27.H8, V24.S4 -48841b0f| VSHRN $5, V2.S4, V8.H4 -a924bc4e| VSHSUB V28.S4, V5.S4, V9.S4 -1557717f| VSLI $49, V24, V21 -2a56456f| VSLI $5, V17.D2, V10.D2 -7c663b0e| VSMAX V27.B8, V19.B8, V28.B8 -b5a7694e| VSMAXP V9.H8, V29.H8, V21.H8 -8ea8b04e| VSMAXV V4.S4, V14 -936cb44e| VSMIN V20.S4, V4.S4, V19.S4 -15af7e4e| VSMINP V30.H8, V24.H8, V21.H8 -3e81694e| VSMLAL2 V9.H8, V9.H8, V30.S4 -29a26d0e| VSMLSL V13.H4, V17.H4, V9.S4 -442e0b4e| SMOV V18.B[5], R4 -e1a0540f| VSMULL V4.H[1], V7.H4, V1.S4 -5eaa604f| VSMULL2 V0.H[6], V18.H8, V30.S4 -4cc32d4e| VSMULL2 V13.B16, V26.B16, V12.H8 -1e7a205e| VSQABS V16, V30 -e67ae04e| VSQABS V23.D2, V6.D2 -a80ded5e| VSQADD V13, V13, V8 -e60dae4e| VSQADD V14.S4, V15.S4, V6.S4 -fe33570f| VSQDMLAL V7.H[1], V31.H4, V30.S4 -ee90b64e| VSQDMLAL2 V22.S4, V7.S4, V14.D2 -ce79a05f| VSQDMLSL V0.S[3], V14, V14 -d5b2a14e| VSQDMLSL2 V1.S4, V22.S4, V21.D2 -51cb575f| VSQDMULH V7.H[5], V26, V17 -0cb5b54e| VSQDMULH V21.S4, V8.S4, V12.S4 -95d0760e| VSQDMULL V22.H4, V4.H4, V21.S4 -a1d37c4e| VSQDMULL2 V28.H8, V29.H8, V1.S4 -d679e07e| VSQNEG V14, V22 -3f78602e| VSQNEG V1.H4, V31.H4 -80b4717e| VSQRDMULH V17, V4, V0 -4cb76e2e| VSQRDMULH V14.H4, V26.H4, V12.H4 -aa5ce95e| VSQRSHL V9, V5, V10 -d25fb74e| VSQRSHL V23.S4, V30.S4, V18.S4 -998c0c6f| VSQRSHRUN2 $4, V4.H8, V25.B16 -4375605f| VSQSHL $32, V10, V3 -de743f0f| VSQSHL $31, V6.S2, V30.S2 -a84d675e| VSQSHL V7, V13, V8 -674dbe4e| VSQSHL V30.S4, V11.S4, V7.S4 -5165587f| VSQSHLU $24, V10, V17 -b464042f| VMVNI $(133<<24), V20.S2 -2086207f| VSQSHRUN $32, V17, V0 -8a851a2f| VSQSHRUN $6, V12.S4, V10.H4 -652c255e| VSQSUB V5, V3, V5 -632eb30e| VSQSUB V19.S2, V19.S2, V3.S2 -104ba15e| VSQXTN V24, V16 -2249214e| VSQXTN2 V9.H8, V2.B16 -1c14360e| VSRHADD V22.B8, V0.B8, V28.B8 -8044076f| VMVNI $(228<<16), V0.S4 -3a57ed5e| VSRSHL V13, V25, V26 -2c56ef4e| VSRSHL V15.D2, V17.D2, V12.D2 -9627140f| VSRSHR $12, V28.H4, V22.H4 -bd37565f| VSRSRA $42, V29, V29 -db34594f| VSRSRA $39, V6.D2, V27.D2 -4546a10e| VSSHL V1.S2, V18.S2, V5.S2 -aca7020f| VMOVI $(93<<8), V12.H4 -e004675f| VSSHR $25, V7, V0 -e5057f4f| VSSHR $1, V15.D2, V5.D2 -1b15595f| VSSRA $39, V8, V27 -ba15250f| VSSRA $27, V13.S2, V26.S2 -3620330e| VSSUBL V19.B8, V1.B8, V22.H8 -c1316d4e| VSSUBW2 V13.H8, V14.S4, V1.S4 -8a76000c| VST1 [V10.H4], (R20) -10a5004c| VST1 [V16.H8, V17.H8], (R8) -ab6b004c| VST1 [V11.S4, V12.S4, V13.S4], (R29) -8d2b004c| VST1 [V13.S4, V14.S4, V15.S4, V16.S4], (R28) -8d7d9f0c| VST1.P [V13.D1], 8(R12) -eb73840c| VST1.P [V11.B8], (RSP)(R4) -48a69f4c| VST1.P [V8.H8, V9.H8], 32(R18) -dca19b4c| VST1.P [V28.B16, V29.B16], (R14)(R27) -7c699f4c| VST1.P [V28.S4, V29.S4, V30.S4], 48(R11) -da6d870c| VST1.P [V26.D1, V27.D1, V28.D1], (R14)(R7) -7f279f0c| VST1.P [V31.H4, V0.H4, V1.H4, V2.H4], 32(R27) -4421810c| VST1.P [V4.B8, V5.B8, V6.B8, V7.B8], (R10)(R1) -a615004d| VST1 V6.B[13], (R13) -ce92000d| VST1 V14.S[1], (R22) -c985000d| VST1 V9.D[0], (R14) -380f9f0d| VST1.P V24.B[3], 1(R25) -de0b944d| VST1.P V30.B[10], (R30)(R20) -3141880d| VST1.P V17.H[0], (R9)(R8) -8e939f0d| VST1.P V14.S[1], 4(R28) -c890870d| VST1.P V8.S[1], (R6)(R7) -9f869f4d| VST1.P V31.D[1], 8(R20) -38879b4d| VST1.P V24.D[1], (R25)(R27) -4181004c| VST2 (R10), [V1.B16, V2.B16] -d6819f0c| VST2 16(R14), [V22.B8, V23.B8] -bf808a0c| VST2 (R5)(R10), [V31.B8, V0.B8] -bd0e204d| ST2 (R21), [V29.B, V30.B][11] -4551204d| ST2 (R10), [V5.H, V6.H][6] -9982204d| ST2 (R20), [V25.S, V26.S][2] -ea86200d| ST2 (R23), [V10.D, V11.D][0] -7b02bf0d| ST2 2(R19), [V27.B, V28.B][0] -c000a04d| ST2 (R6)(R0), [V0.B, V1.B][8] -fb59a40d| ST2 (R15)(R4), [V27.H, V28.H][3] -f880bf0d| ST2 8(R7), [V24.S, V25.S][0] -f582ac4d| ST2 (R23)(R12), [V21.S, V22.S][2] -9c86bf4d| ST2 16(R20), [V28.D, V29.D][1] -3386b14d| ST2 (R17)(R17), [V19.D, V20.D][1] -c0469f0c| VST3 24(R22), [V0.H4, V1.H4, V2.H4] -2243820c| VST3 (R25)(R2), [V2.B8, V3.B8, V4.B8] -c629000d| ST3 (R14), [V6.B, V7.B, V8.B][2] -4f6a004d| ST3 (R18), [V15.H, V16.H, V17.H][5] -72a0004d| ST3 (R3), [V18.S, V19.S, V20.S][2] -c1a4000d| ST3 (R6), [V1.D, V2.D, V3.D][0] -312e9f0d| ST3 3(R17), [V17.B, V18.B, V19.B][3] -9a28934d| ST3 (R4)(R19), [V26.B, V27.B, V28.B][10] -a1799f4d| ST3 6(R13), [V1.H, V2.H, V3.H][7] -3ba29f0d| ST3 12(R17), [V27.S, V28.S, V29.S][0] -80b2870d| ST3 (R20)(R7), [V0.S, V1.S, V2.S][1] -f6a49f4d| ST3 24(R7), [V22.D, V23.D, V24.D][1] -8fa69a4d| ST3 (R20)(R26), [V15.D, V16.D, V17.D][1] -ee09000c| VST4 (R15), [V14.S2, V15.S2, V16.S2, V17.S2] -1e07880c| VST4 (R24)(R8), [V30.H4, V31.H4, V0.H4, V1.H4] -6426204d| ST4 (R19), [V4.B, V5.B, V6.B, V7.B][9] -4ea2204d| ST4 (R18), [V14.S, V15.S, V16.S, V17.S][2] -05a6200d| ST4 (R16), [V5.D, V6.D, V7.D, V8.D][0] -5b21bf0d| ST4 4(R10), [V27.B, V28.B, V29.B, V30.B][0] -ce28a00d| ST4 (R6)(R0), [V14.B, V15.B, V16.B, V17.B][2] -767bbf4d| ST4 8(R27), [V22.H, V23.H, V24.H, V25.H][7] -747aa24d| ST4 (R19)(R2), [V20.H, V21.H, V22.H, V23.H][7] -24b0bf0d| ST4 16(R1), [V4.S, V5.S, V6.S, V7.S][1] -c7b1a90d| ST4 (R14)(R9), [V7.S, V8.S, V9.S, V10.S][1] -9fa4bf4d| ST4 32(R4), [V31.D, V0.D, V1.D, V2.D][1] -70a4ab4d| ST4 (R3)(R11), [V16.D, V17.D, V18.D, V19.D][1] -89fe2e2c| VSTNP -140(R20), V31, V9 -bfd31d6c| VSTNP 472(R29), V20, V31 -ddf301ac| VSTNP 48(R30), V28, V29 -14f6ac2c| STP.P (V20, V29), -156(R16) -251db76c| STP.P (V5, V7), -144(R9) -e51fb7ac| STP.P (V5, V7), -288(RSP) -5c90852d| STP.W (V28, V4), 44(R2) -4c51a56d| STP.W (V12, V20), -432(R10) -265d8aad| STP.W (V6, V23), 320(R9) -9c0c392d| STP (V28, V3), -56(R4) -b49e1e6d| STP (V20, V7), 488(R21) -55f105ad| STP (V21, V28), 176(R10) -4dd6003c| MOVD.P V13, 13(R18) -e357067c| MOVD.P V3, 101(RSP) -f6841dbc| FMOVS.P F22, -40(R7) -54b710fc| FMOVD.P F20, -245(R26) -0d07833c| MOVD.P V13, 48(R24) -393f003c| MOVD.W V25, 3(R25) -1fac007c| MOVD.W V31, 10(R0) -d41d13bc| FMOVS.W F20, -207(R14) -908f0dfc| FMOVD.W F16, 216(R28) -5ded9d3c| MOVD.W V29, -34(R10) -6d72073d| MOVD V13, 476(R19) -68752d7d| MOVD V8, 5818(R11) -084728bd| FMOVS F8, 10308(R24) -409503fd| FMOVD F0, 1832(R10) -58a1963d| MOVD V24, 23168(R10) -51c8253c| MOVD V17, (R2)(R5.SXTW) -967b313c| MOVD V22, (R28)(R17) -b4683e7c| MOVD V20, (R5)(R30) -64d9a33c| MOVD V4, (R11)(R3.SXTW<<4) -e5e1143c| MOVD V5, -178(R15) -99901e7c| MOVD V25, -23(R4) -bb0012bc| FMOVS F27, -224(R5) -1d710cfc| FMOVD F29, 199(R8) -17e1873c| MOVD V23, 126(R8) -ed84a26e| VSUB V2.S4, V7.S4, V13.S4 -7761b80e| VSUBHN V24.D2, V11.D2, V23.S2 -f838205e| VSUQADD V7, V24 -7739600e| VSUQADD V11.H4, V23.H4 -26a5204f| VSXTL2 V9.S4, V6.D2 -5a201a4e| VTBL V26.B16, [V2.B16, V3.B16], V26.B16 -c2400f0e| VTBL V15.B8, [V6.B16, V7.B16, V8.B16], V2.B8 -7263024e| VTBL V2.B16, [V27.B16, V28.B16, V29.B16, V30.B16], V18.B16 -bb010b4e| VTBL V11.B16, [V13.B16], V27.B16 -5f31184e| VTBX V24.B16, [V10.B16, V11.B16], V31.B16 -a952100e| VTBX V16.B8, [V21.B16, V22.B16, V23.B16], V9.B8 -4872170e| VTBX V23.B8, [V18.B16, V19.B16, V20.B16, V21.B16], V8.B8 -dc110e4e| VTBX V14.B16, [V14.B16], V28.B16 -d7289a4e| VTRN1 V26.S4, V6.S4, V23.S4 -cd6a924e| VTRN2 V18.S4, V22.S4, V13.S4 -a552392e| VUABAL V25.B8, V21.B8, V5.H8 -a653256e| VUABAL2 V5.B16, V29.B16, V6.H8 -fb70b42e| VUABDL V20.S2, V7.S2, V27.D2 -3b6a202e| VUADALP V17.B8, V27.H4 -8a03b22e| VUADDL V18.S2, V28.S2, V10.D2 -262a206e| VUADDLP V17.B16, V6.H8 -8410312e| VUADDW V17.B8, V4.H8, V4.H8 -bf11ae6e| VUADDW2 V14.S4, V13.D2, V31.D2 -a7e65d7f| UCVTF $35, F21, F7 -8bda617e| UCVTFDD F20, F11 -7fb8431e| UCVTF $18, R3, F31 -1c0f039e| UCVTF $61, R24, F28 -2241439e| UCVTF $48, R9, F2 -d701231e| UCVTFWS R14, F23 -9600631e| UCVTFWD R4, F22 -8b01239e| UCVTFS R12, F11 -7202639e| UCVTFD R19, F18 -3406b82e| VUHADD V24.S2, V17.S2, V20.S2 -9264612e| VUMAX V1.H4, V4.H4, V18.H4 -d9a5772e| VUMAXP V23.H4, V14.H4, V25.H4 -74a8b06e| VUMAXV V3.S4, V20 -24a8312e| VUMINV V1.B8, V4 -c5218e2f| VUMLAL V14.S[0], V14.S2, V5.D2 -3d20a76f| VUMLAL2 V7.S[1], V1.S4, V29.D2 -90817e6e| VUMLAL2 V30.H8, V12.H8, V16.S4 -0f69a46f| VUMLSL2 V4.S[3], V8.S4, V15.D2 -4aa27c2e| VUMLSL V28.H4, V18.H4, V10.S4 -48a27b6e| VUMLSL2 V27.H8, V18.H8, V8.S4 -833c0d0e| VMOV V4.B[6], R3 -e2a1b22f| VUMULL V18.S[1], V15.S2, V2.D2 -07c06f2e| VUMULL V15.H4, V0.H4, V7.S4 -470e367e| VUQADD V22, V18, V7 -490e252e| VUQADD V5.B8, V18.B8, V9.B8 -bf5eaa7e| VUQRSHL V10, V21, V31 -c49c347f| VUQRSHRN $12, V6, V4 -b4757a7f| VUQSHL $58, V13, V20 -d14f777e| VUQSHL V23, V30, V17 -9e2d7a7e| VUQSUB V26, V12, V30 -a62c296e| VUQSUB V9.B16, V5.B16, V6.B16 -5d4ba17e| VUQXTN V26, V29 -454b212e| VUQXTN V26.H8, V5.B8 -1c48a16e| VUQXTN2 V0.D2, V28.S4 -4157736e| VURSHL V19.H8, V26.H8, V1.H8 -2d26797f| VURSHR $7, V17, V13 -bd27466f| VURSHR $58, V29.D2, V29.D2 -bcc8a12e| VURSQRTE V5.S2, V28.S2 -f5345d7f| VURSRA $35, V7, V21 -f8353a6f| VURSRA $6, V15.S4, V24.S4 -85a6342f| VUSHLL $20, V20.S2, V5.D2 -e7a70e6f| VUSHLL2 $6, V31.B16, V7.H8 -ed04787f| VUSHR $8, V7, V13 -8f07362f| VUSHR $10, V28.S2, V15.S2 -963a607e| VUSQADD V20, V22 -383a206e| VUSQADD V17.B16, V24.B16 -ef16596f| VUSRA $39, V23.D2, V15.D2 -f222ab2e| VUSUBL V11.S2, V23.S2, V18.D2 -9220696e| VUSUBL2 V9.H8, V4.H8, V18.S4 -0130312e| VUSUBW V17.B8, V0.H8, V1.H8 -a932a06e| VUSUBW2 V0.S4, V21.D2, V9.D2 -9a19910e| VUZP1 V17.S2, V12.S2, V26.S2 -a379ca4e| VZIP2 V10.D2, V13.D2, V3.D2 -1202011a| ADCW R1, R16, R18 -6900199a| ADC R25, R3, R9 -01010f3a| ADCSW R15, R8, R1 -13010fba| ADCS R15, R8, R19 -55ed280b| ADDW R8.SXTX<<3, R10, R21 -2077268b| ADD R6.UXTX<<5, R25, R0 -7f40560b| ADDW R22>>16, R3, ZR -3a16282b| ADDSW R8.UXTB<<5, R17, R26 -f8a336ab| ADDS R22.SXTH, RSP, R24 -000e6d31| ADDSW $(2883<<12), R16, R0 -b48e49b1| ADDS $(611<<12), R21, R20 -7e174e2b| ADDSW R14>>5, R27, R30 -3aa13f12| ANDW $66978814, R9, R26 -32a23592| AND $-571965880182769649, R17, R18 -b478070a| ANDW R7<<30, R5, R20 -dd1f988a| AND R24->7, R30, R29 -a7351b72| ANDSW $524256, R13, R7 -1c056ef2| ANDS $786432, R8, R28 -defd52ea| ANDS R18>>63, R14, R30 -8c28d01a| ASRW R16, R4, R12 -582ac09a| ASR R0, R18, R24 -647d1813| ASRW $24, R11, R4 -d1fe5b93| ASR $27, R22, R17 -2329c31a| ASRW R3, R9, R3 -d929d69a| ASR R22, R14, R25 -aefa5354| BAL 171989(PC) -76ad3917| JMP -12997258(PC) -de320f33| BFIW $17, R22, $13, R30 -af144db3| BFI $51, R5, $6, R15 -161c7eb3| BFI $2, R0, $8, R22 -f9791733| BFXILW $23, R15, $8, R25 -781577b3| BFI $9, R11, $6, R24 -0f65f98a| BIC R25@>25, R8, R15 -2c37e16a| BICSW R1@>13, R25, R12 -a6f473ea| BICS R19>>61, R5, R6 -f064ad96| CALL -22190864(PC) -80023fd6| CALL (R20) -00001fd6| JMP (R0) -80de3ed4| BRK $63220 -08276a35| CBNZW R8, 217400(PC) -acd1c0b5| CBNZ R12, -129395(PC) -ef50bf34| CBZW R15, -132473(PC) -4bd681b4| CBZ R11, -258382(PC) -4e2a483a| CCMNW HS, R18, $8, $14 -4a3a4eba| CCMN LO, R18, $14, $10 -0143553a| CCMNW MI, R24, R21, $1 -c09359ba| CCMN LS, R30, R25, $0 -020a567a| CCMPW EQ, R16, $22, $2 -a6985afa| CCMP LS, R5, $26, $6 -6fc0487a| CCMPW GT, R3, R8, $15 -21d14bfa| CCMP LE, R9, R11, $1 -75f5991a| CSINCW AL, R11, R25, R21 -5a25919a| CSINC HS, R10, R17, R26 -6a938c5a| CSINVW LS, R27, R12, R10 -6a408eda| CSINV MI, R3, R14, R10 -5f3603d5| CLREX $6 -a017c05a| CLSW R29, R0 -2616c0da| CLS R17, R6 -9411c05a| CLZW R12, R20 -c611c0da| CLZ R14, R6 -9fc3322b| CMNW R18.SXTW, R28 -3f9638ab| CMN R24.SXTB<<5, R17 -3f681db1| CMN $1882, R1 -bfd15bab| CMN R27>>52, R13 -ff723b6b| CMPW R27.UXTX<<4, R23 -1f5234eb| CMP R20.UXTW<<4, R16 -9fb22a71| CMPW $2732, R20 -df2478f1| CMP $(3593<<12), R6 -bf07026b| CMPW R2<<1, R29 -bfc514eb| CMP R20<<49, R13 -d494975a| CSNEGW LS, R6, R23, R20 -763591da| CSNEG LO, R11, R17, R22 -b440c91a| CRC32B R9, R5, R20 -5745cd1a| CRC32H R13, R10, R23 -684ad01a| CRC32W R16, R19, R8 -884fd59a| CRC32X R21, R28, R8 -ea50c61a| CRC32CB R6, R7, R10 -1357cf1a| CRC32CH R15, R24, R19 -9859c21a| CRC32CW R2, R12, R24 -6e5fde9a| CRC32CX R30, R27, R14 -9340941a| CSELW MI, R4, R20, R19 -dd42839a| CSEL MI, R22, R3, R29 -fe779f1a| CSETW VS, R30 -f1279f9a| CSET LO, R17 -eb839f5a| CSETMW LS, R11 -e3139fda| CSETM EQ, R3 -a986841a| CSINCW HI, R21, R4, R9 -19b78b9a| CSINC LT, R24, R11, R25 -4643835a| CSINVW MI, R26, R3, R6 -5ee38cda| CSINV AL, R26, R12, R30 -d166945a| CSNEGW VS, R22, R20, R17 -55f793da| CSNEG AL, R26, R19, R21 -0158add4| DCPS1 $27328 -82ceb2d4| DCPS2 $38516 -a31eb3d4| DCPS3 $39157 -bf3203d5| DMB $2 -e003bfd6| DRPS -9f3403d5| DSB $4 -2e2faeca| EON R14->11, R25, R14 -de6b0152| EORW $2214592511, R30, R30 -4a7714d2| EOR $-13194139536385, R26, R10 -2cea0dca| EOR R13<<58, R17, R12 -e0039fd6| ERET -834cce93| EXTR $19, R14, R4, R3 -5f2003d5| WFE -bf2e03d5| HINT $117 -e0f055d4| HLT $44935 -df3403d5| ISB $4 -22fcdf88| LDARW (R1), R2 -78fedfc8| LDAR (R19), R24 -cffcdf08| LDARB (R6), R15 -34fedf48| LDARH (R17), R20 -17bb7f88| LDAXPW (R24), (R23, R14) -6ffe7fc8| LDAXP (R19), (R15, ZR) -acfe5f88| LDAXRW (R21), R12 -cafe5fc8| LDAXR (R22), R10 -ddfd5f08| LDAXRB (R14), R29 -0efd5f48| LDAXRH (R8), R14 -66445128| LDNPW 136(R3), R17, R6 -3fa77fa8| LDNP -8(R25), R9, ZR -1e04eb28| LDP.P -168(R0), (R30, R1) -0da6c0a8| LDP.P 8(R16), (R13, R9) -7d00d429| LDP.W 160(R3), (R29, R0) -d26ae1a9| LDP.W -496(R22), (R18, R26) -d0ca6829| LDP -188(R22), (R16, R18) -a5e34fa9| LDP 248(R29), (R5, R24) -3e44d168| LDPSW 136(R1), R17, R30 -5f08e169| LDPSW -248(R2), R2, ZR -430d6769| LDPSW -200(R10), R3, R3 -2c555bb8| MOVWU.P -75(R9), R12 -83c557f8| MOVD.P -132(R12), R3 -f36e47b8| MOVWU.W 118(R23), R19 -6b1f48f8| MOVD.W 129(R27), R11 -f5d64ab9| MOVWU 2772(R23), R21 -872d7cf9| MOVD 30808(R12), R7 -82a75438| MOVBU.P -182(R28), R2 -a7fd5738| MOVBU.W -129(R13), R7 -c83d4239| MOVBU 143(R14), R8 -58c96438| MOVBU (R10)(R4.SXTW), R24 -8e687e38| MOVBU (R4)(R30), R14 -70575378| MOVHU.P -203(R27), R16 -015f5078| MOVHU.W -251(R24), R1 -7add5c79| MOVHU 3694(R11), R26 -2fcb7778| MOVHU (R25)(R23.SXTW), R15 -c474c338| MOVBW.P 55(R6), R4 -28869638| MOVB.P -152(R17), R8 -fe3fd438| MOVBW.W -189(RSP), R30 -da0f9938| MOVB.W -112(R30), R26 -5b3ac739| MOVBW 462(R18), R27 -2c579e39| MOVB 1941(R25), R12 -54faf838| MOVBW (R18)(R24.SXTX), R20 -fb68f238| MOVBW (R7)(R18), R27 -f26aad38| MOVB (R23)(R13), R18 -17e4c978| MOVHW.P 158(R0), R23 -a2759f78| MOVH.P -9(R13), R2 -9c6ec478| MOVHW.W 70(R20), R28 -fd6f8278| MOVH.W 38(RSP), R29 -a82bc279| MOVHW 276(R29), R8 -9d89b979| MOVH 7364(R12), R29 -962685b8| MOVW.P 82(R20), R22 -76ae8bb8| MOVW.W 186(R19), R22 -fc2193b9| MOVW 4896(R15), R28 -e34842b8| LDTRW 36(R7), R3 -4ff84df8| LDTR 223(R2), R15 -d9e84f38| LDTRBW 254(R6), R25 -397b5378| LDTRH -201(R25), R25 -c4c9d138| LDTRSBW -228(R14), R4 -02789638| LDTRSB -153(R0), R2 -a988cb78| LDTRSHW 184(R5), R9 -03888978| LDTRSH 152(R0), R3 -ccb99fb8| LDTRSW -5(R14), R12 -efb154b8| LDURW -181(R15), R15 -fc2051f8| LDUR -238(R7), R28 -86d04438| LDURBW 77(R4), R6 -73405d78| LDURHW -44(R3), R19 -7a81d538| LDURSBW -168(R11), R26 -b0b28038| LDURSB 11(R21), R16 -b4a1d278| LDURSHW -214(R13), R20 -3ed18078| LDURSH 13(R9), R30 -09628eb8| LDURSW 230(R16), R9 -c07e7f88| LDXPW (R22), (R0, ZR) -3e167fc8| LDXP (R17), (R30, R5) -727c5f88| LDXRW (R3), R18 -487c5fc8| LDXR (R2), R8 -867d5f08| LDXRB (R12), R6 -747f5f48| LDXRH (R27), R20 -d920d71a| LSLW R23, R6, R25 -b920c59a| LSL R5, R5, R25 -4da947d3| UBFX $7, R10, $36, R13 -be23ca1a| LSLW R10, R29, R30 -cc20d19a| LSL R17, R6, R12 -ae26c31a| LSRW R3, R21, R14 -fc27cb9a| LSR R11, ZR, R28 -2b7e1053| LSRW $16, R17, R11 -cefe75d3| LSR $53, R22, R14 -3b25d01a| LSRW R16, R9, R27 -e826d79a| LSR R23, R23, R8 -5504031b| MADDW R3, R1, R2, R21 -9e5c109b| MADD R16, R23, R4, R30 -00fe1f1b| MNEGW ZR, R16, R0 -6efe179b| MNEG R23, R19, R14 -31020011| ADDW $0, R17, R17 -21000091| ADD $0, R1, R1 -39f1bf12| MOVW $7798783, R25 -53b3e992| MOVD $-5591781887333892097, R19 -c0fd9552| MOVW $45038, R0 -f16b97d2| MOVD $47967, R17 -e8972232| MOVW $3222257679, R8 -e27323b2| MOVD $-2017612633531744257, R2 -e9030e2a| MOVW R14, R9 -fb0310aa| MOVD R16, R27 -d0e48472| MOVKW $10022, R16 -432dbcf2| MOVK $(57706<<16), R3 -4b679612| MOVW $4294921413, R11 -9121e492| MOVD $-2381278302972149761, R17 -00be90d2| MOVD $34288, R0 -91d730d5| MRS $1724, R17 -cf301fd5| MSR R15, S3_7_C3_C0_6 -daea181b| MSUBW R24, R26, R22, R26 -e1a7109b| MSUB R16, R9, ZR, R1 -477f0d1b| MULW R13, R26, R7 -a17d1c9b| MUL R28, R13, R1 -fc9b79aa| MVN R25>>38, R28 -f71b904b| NEGW R16->6, R23 -e3df4acb| NEG R10>>55, R3 -f0334e6b| NEGSW R14>>12, R16 -e6031f5a| NGCW ZR, R6 -f40302da| NGC R2, R20 -ee03137a| NGCSW R19, R14 -ee0303fa| NGCS R3, R14 -1f2003d5| NOP -ab14e92a| ORNW R9@>5, R5, R11 -185c3faa| ORN ZR<<23, R0, R24 -a8850c32| ORRW $3145776, R13, R8 -cad023b2| ORR $-2025524839466146845, R6, R10 -5487ccaa| ORR R12@>33, R26, R20 -293783f9| PRFM 1640(R25), PLIL1STRM -501010d8| PRFM 32898(PC), PSTL1KEEP -bc7389f8| PRFUM 151(R29), $28 -9203c05a| RBITW R28, R18 -0501c0da| RBIT R8, R5 -40005fd6| RET R2 -940ac05a| REVW R20, R20 -ca0fc0da| REV R30, R10 -7807c05a| REV16W R27, R24 -fb06c0da| REV16 R23, R27 -dc0ac0da| REV32 R22, R28 -970dc0da| REV R12, R23 -42408813| EXTRW $16, R8, R2, R2 -5a96db93| EXTR $37, R27, R18, R26 -782cc41a| RORW R4, R3, R24 -8c2ec69a| ROR R6, R20, R12 -372ec61a| RORW R6, R17, R23 -b72ddc9a| ROR R28, R13, R23 -e501185a| SBCW R24, R15, R5 -ac0011da| SBC R17, R5, R12 -7a03067a| SBCSW R6, R27, R26 -310008fa| SBCS R8, R1, R17 -65837f93| SBFIZ $1, R27, $33, R5 -5c1b4793| SBFIZ $57, R26, $7, R28 -a71f5b93| SBFIZ $37, R29, $8, R7 -640ede1a| SDIVW R30, R19, R4 -2a0dd99a| SDIV R25, R9, R10 -9f2003d5| SEV -bf2003d5| SEVL -045c389b| SMADDL R24, R23, R0, R4 -6efe3e9b| SMNEGL R30, R19, R14 -ebac239b| SMSUBL R3, R11, R7, R11 -947f459b| SMULH R5, R28, R20 -d67e3e9b| SMULL R30, R22, R22 -6dff9f88| STLRW R13, (R27) -1ffd9fc8| STLR ZR, (R8) -a8fe9f08| STLRB R8, (R21) -abfd9f48| STLRH R11, (R13) -2ec02888| STLXPW (R14, R16), (R1), R8 -11993ec8| STLXP (R17, R6), (R8), R30 -bbfe0f88| STLXRW R27, (R21), R15 -e9fc09c8| STLXR R9, (R7), R9 -c6fe0708| STLXRB R6, (R22), R7 -c6fe0c48| STLXRH R6, (R22), R12 -b3283028| STNPW -128(R5), R10, R19 -252e26a8| STNP -416(R17), R11, R5 -9fb18c28| STP.P (ZR, R12), 100(R12) -9ce5aba8| STP.P (R28, R25), -328(R12) -e5d08229| STP.W (R5, R20), 20(R7) -d6e79ea9| STP.W (R22, R25), 488(R30) -9eef2029| STP (R30, R27), -252(R28) -57b314a9| STP (R23, R12), 328(R26) -eda503b8| MOVW.P R13, 58(R15) -62241df8| MOVD.P R2, -46(R3) -d2bd18b8| MOVW.W R18, -117(R14) -542d12f8| MOVD.W R20, -222(R10) -e92c3bb9| MOVW R9, 15148(R7) -de4804f9| MOVD R30, 2192(R6) -cce40b38| MOVB.P R12, 190(R6) -eafd1238| MOVB.W R10, -209(R15) -7fcb0639| MOVB ZR, 434(R27) -03f82738| MOVB R3, (R0)(R7.SXTX) -5c6a3e38| MOVB R28, (R18)(R30) -a8551978| MOVH.P R8, -107(R13) -9e6c0c78| MOVH.W R30, 198(R4) -c83d0e79| MOVH R8, 1822(R14) -502a1db8| STTRW -46(R18), R16 -ae180af8| STTR 161(R5), R14 -ea1a0138| STTRBW 17(R23), R10 -416b0278| STTRHW 38(R26), R1 -659107b8| MOVW R5, 121(R11) -6b611ff8| MOVD R11, -10(R11) -99a01c38| MOVB R25, -54(R4) -99421e78| MOVH R25, -28(R20) -3e2a2688| STXPW (R30, R10), (R17), R6 -2f6a2cc8| STXP (R15, R26), (R17), R12 -7d7f1b88| STXRW R29, (R27), R27 -6e7e1bc8| STXR R14, (R19), R27 -ec7c0208| STXRB R12, (R7), R2 -ee7f0648| STXRH R14, (RSP), R6 -2f8d204b| SUBW R0.SXTB<<3, R9, R15 -1fbe3acb| SUB R26.SXTH<<7, R16, RSP -5af778d1| SUB $(3645<<12), R26, R26 -6729034b| SUBW R3<<10, R11, R7 -ae683f6b| SUBSW ZR.UXTX<<2, R5, R14 -2f993deb| SUBS R29.SXTB<<6, R9, R15 -db0d5f71| SUBSW $(1987<<12), R14, R27 -3aec1ff1| SUBS $2043, R1, R26 -1f24016b| CMPW R1<<9, R0 -a1ae1bd4| SVC $56693 -a61e0013| SXTBW R21, R6 -441c4093| SXTB R2, R4 -0c3c0013| SXTHW R0, R12 -b33f4093| SXTH R29, R19 -407f4093| SXTW R26, R0 -455929d5| SYSL $88384, R5 -bf8c1f72| TSTW $1966110, R5 -ff10836a| TSTW R3->4, R7 -dfc5daea| TST R26@>49, R14 -aa6e43d3| UBFX $3, R21, $25, R10 -46181a53| UBFIZW $6, R2, $7, R6 -43294bd3| LSL $53, R10, R3 -77787dd3| UBFIZ $3, R3, $31, R23 -1a0bd61a| UDIVW R22, R24, R26 -9308c19a| UDIV R1, R4, R19 -755aa19b| UMADDL R1, R22, R19, R21 -1ffdbe9b| UMNEGL R30, R8, ZR -cbaaba9b| UMSUBL R26, R10, R22, R11 -0c7fdb9b| UMULH R27, R24, R12 -cc7da79b| UMULL R7, R14, R12 -3d1c0053| UXTBW R1, R29 -0e3f0053| UXTHW R24, R14 -5f2003d5| WFE -7f2003d5| WFI -3f2003d5| YIELD -71b9604e| VABS V11.H8, V17.H8 -5186f65e| VADD V22, V18, V17 -4986f34e| VADD V19.D2, V18.D2, V9.D2 -1243720e| VADDHN V18.S4, V24.S4, V18.H4 -0640354e| VADDHN2 V21.H8, V0.H8, V6.B16 -d9bdfa4e| VADDP V26.D2, V14.D2, V25.D2 -4c59284e| AESD V10.B16, V12.B16 -8c48284e| AESE V4.B16, V12.B16 -f47a284e| AESIMC V23.B16, V20.B16 -c56b284e| AESMC V30.B16, V5.B16 -bf1c3b0e| VAND V27.B8, V5.B8, V31.B8 -6444026f| VMVNI $(67<<16), V4.S4 -1357032f| VBIC $(120<<16), V19.S2 -561d6a0e| VBIC V10.B8, V10.B8, V22.B8 -cd1ff06e| VBIF V16.B16, V30.B16, V13.B16 -f31ebd6e| VBIT V29.B16, V23.B16, V19.B16 -6f1d6c2e| VBSL V12.B8, V11.B8, V15.B8 -1e48600e| VCLS V0.H4, V30.H4 -6948202e| VCLZ V3.B8, V9.B8 -968efd7e| VCMEQ V29, V20, V22 -e58f6d6e| VCMEQ V13.H8, V31.H8, V5.H8 -8f98600e| VCMEQ $0, V4.H4, V15.H4 -4f3db84e| VCMGE V24.S4, V10.S4, V15.S4 -2788a02e| VCMGE $0, V1.S2, V7.S2 -bf35714e| VCMGT V17.H8, V13.H8, V31.H8 -4a89604e| VCMGT $0, V10.H8, V10.H8 -9635252e| VCMHI V5.B8, V12.B8, V22.B8 -d83eff6e| VCMHS V31.D2, V22.D2, V24.D2 -cb99206e| VCMLE $0, V14.B16, V11.B16 -29a9604e| VCMLT $0, V9.H8, V9.H8 -d18eea5e| VCMTST V10, V22, V17 -d18ea94e| VCMTST V9.S4, V22.S4, V17.S4 -4a04075e| VMOV V2.B[3], V10 -0504040e| VDUP V0.S[0], V5.S2 -b20e1f4e| VDUP R21, V18.B16 -2a1f3e6e| VEOR V30.B16, V25.B16, V10.B16 -0bd5aa7e| FABD F10, F8, F11 -12d7b96e| VFABD V25.S4, V24.S4, V18.S4 -a1f9a04e| FABS V13.S4, V1.S4 -1ac3201e| FABSS F24, F26 -d8c3601e| FABSD F30, F24 -95ee267e| FACGE F6, F20, F21 -2bee262e| VFACGE V6.S2, V17.S2, V11.S2 -1aedec7e| FACGT F12, F8, F26 -74effa6e| VFACGT V26.D2, V27.D2, V20.D2 -7ed4260e| FADD V6.S2, V3.S2, V30.S2 -4528251e| FADDS F5, F2, F5 -262b661e| FADDD F6, F25, F6 -84d8707e| FADDP V4.D2, F4 -71d4276e| VFADDP V7.S4, V3.S4, V17.S4 -a5f43f1e| FCCMPS AL, F31, F5, $5 -20e5601e| FCCMPD AL, F0, F9, $0 -52d4331e| FCCMPES LE, F19, F2, $2 -1e66761e| FCCMPED VS, F22, F16, $14 -d7e6695e| FCMEQ F9, F22, F23 -e7d9a05e| FCMEQ $0, F15, F7 -dadaa04e| VFCMEQ $0, V22.S4, V26.S4 -28e5737e| FCMGE F19, F9, F8 -a2e73a6e| VFCMGE V26.S4, V29.S4, V2.S4 -4fcba07e| FCMGE $0, F26, F15 -43c8a02e| VFCMGE $0, V2.S2, V3.S2 -ffe5a67e| FCMGT F6, F15, F31 -7ee7bd2e| VFCMGT V29.S2, V27.S2, V30.S2 -5bc8e05e| FCMGT $0, F2, F27 -3dc9a04e| VFCMGT $0, V9.S4, V29.S4 -38daa07e| FCMLE $0, F17, F24 -8fdaa02e| VFCMLE $0, V20.S2, V15.S2 -93e8e05e| FCMLT $0, F4, F19 -9fe9a04e| VFCMLT $0, V12.S4, V31.S4 -a023201e| FCMPS F0, F29 -c822231e| FCMPS $(0.0), F22 -a022651e| FCMPD F5, F21 -a8227d1e| FCMPD $(0.0), F21 -70203e1e| FCMPES F30, F3 -38232b1e| FCMPES $(0.0), F25 -70206c1e| FCMPED F12, F3 -b823731e| FCMPED $(0.0), F29 -3e6f331e| FCSELS VS, F25, F19, F30 -a64f6d1e| FCSELD MI, F29, F13, F6 -0d41e21e| FCVTHS F8, F13 -cbc0e21e| FCVTHD F6, F11 -18c0231e| FCVTSH F0, F24 -a7c0221e| FCVTSD F5, F7 -e7c3631e| FCVTDH F31, F7 -9f43621e| FCVTDS F28, F31 -a0c8215e| FCVTAS F5, F0 -4dc8210e| VFCVTAS V2.S2, V13.S2 -0300241e| FCVTASW F0, R3 -fd03249e| FCVTAS F31, R29 -ef01641e| FCVTASW F15, R15 -4c01649e| FCVTAS F10, R12 -9ac8617e| FCVTAU F4, F26 -b802251e| FCVTAUW F21, R24 -2a03259e| FCVTAU F25, R10 -ea00651e| FCVTAUW F7, R10 -0102659e| FCVTAU F16, R1 -0d7a610e| VFCVTL V16.S2, V13.D2 -ed79214e| VFCVTL2 V15.H8, V13.S4 -43bb615e| FCVTMS F26, F3 -c000301e| FCVTMSW F6, R0 -9202309e| FCVTMS F20, R18 -0800701e| FCVTMSW F0, R8 -6603709e| FCVTMS F27, R6 -f0b9217e| FCVTMU F15, F16 -3bba212e| VFCVTMU V17.S2, V27.S2 -5900311e| FCVTMUW F2, R25 -9a03319e| FCVTMU F28, R26 -fa01711e| FCVTMUW F15, R26 -6f01719e| FCVTMU F11, R15 -1968210e| VFCVTN V0.S4, V25.H4 -3d69214e| VFCVTN2 V9.S4, V29.H8 -87aa615e| FCVTNS F20, F7 -e301201e| FCVTNSW F15, R3 -6002209e| FCVTNS F19, R0 -1600601e| FCVTNSW F0, R22 -8503609e| FCVTNS F28, R5 -f5ab617e| FCVTNU F31, F21 -2b02211e| FCVTNUW F17, R11 -f902219e| FCVTNU F23, R25 -0702611e| FCVTNUW F16, R7 -9d03619e| FCVTNU F28, R29 -dcaba15e| FCVTPS F30, F28 -b4a8a10e| VFCVTPS V5.S2, V20.S2 -5302281e| FCVTPSW F18, R19 -e003289e| FCVTPS F31, R0 -9501681e| FCVTPSW F12, R21 -6703689e| FCVTPS F27, R7 -68a8a17e| FCVTPU F3, F8 -dcaba12e| VFCVTPU V30.S2, V28.S2 -9d03291e| FCVTPUW F28, R29 -5f01299e| FCVTPU F10, ZR -e101691e| FCVTPUW F15, R1 -3f00699e| FCVTPU F1, ZR -ee6b612e| VFCVTXN V31.D2, V14.S2 -b1fd215f| FCVTZS $31, F13, F17 -bafd2c0f| FCVTZS $20, V13.S2, V26.S2 -47b8e15e| FCVTZSDD F2, F7 -dcbbe14e| FCVTZS V30.D2, V28.D2 -56f8181e| FCVTZS $2, F2, R22 -9265189e| FCVTZS $39, F12, R18 -d3ad581e| FCVTZS $21, F14, R19 -3d9b589e| FCVTZS $26, F25, R29 -1a00381e| FCVTZSSW F0, R26 -d302389e| FCVTZSS F22, R19 -5303781e| FCVTZSDW F26, R19 -8f01789e| FCVTZSD F12, R15 -57fe537f| FCVTZU $45, F18, F23 -beff796f| FCVTZU $7, V29.D2, V30.D2 -08b9e17e| FCVTZUDD F8, F8 -cdbbe16e| FCVTZU V30.D2, V13.D2 -2126199e| FCVTZU $55, F17, R1 -70a9591e| FCVTZU $22, F11, R16 -8c25599e| FCVTZU $55, F12, R12 -1201391e| FCVTZUSW F8, R18 -0800399e| FCVTZUS F0, R8 -da00791e| FCVTZUDW F6, R26 -2903799e| FCVTZUD F25, R9 -56fd3f2e| FDIV V31.S2, V10.S2, V22.S2 -1f182e1e| FDIVS F14, F0, F31 -ce1b741e| FDIVD F20, F30, F14 -0d61021f| FMADDS F2, F24, F8, F13 -03205e1f| FMADDD F30, F8, F0, F3 -72f6654e| FMAX V5.D2, V19.D2, V18.D2 -1849281e| FMAXS F8, F8, F24 -8e4a6e1e| FMAXD F14, F20, F14 -54c7304e| FMAXNM V16.S4, V26.S4, V20.S4 -91683a1e| FMAXNMS F26, F4, F17 -f56a721e| FMAXNMD F18, F23, F21 -c8cb307e| FMAXNMP V30.S2, F8 -06c9306e| FMAXNMV V8.S4, F6 -b6fb707e| FMAXP V29.D2, F22 -1759341e| FMINS F20, F8, F23 -675b721e| FMIND F18, F27, F7 -69792d1e| FMINNMS F13, F11, F9 -ab786b1e| FMINNMD F11, F5, F11 -0fcab07e| FMINNMP V16.S2, F15 -d2c6b26e| VFMINNMP V18.S4, V22.S4, V18.S4 -22fab07e| FMINP V17.S2, F2 -f5f5f56e| VFMINP V21.D2, V15.D2, V21.D2 -bc13c95f| FMLA V9.D[0], F29, F28 -5d51a85f| FMLS V8.S[1], F10, F29 -d3ccb94e| VFMLS V25.S4, V6.S4, V19.S4 -5bf4014f| FMOV $9., V27.S4 -5bf5026f| FMOV $0.203125, V27.D2 -6541201e| FMOVS F11, F5 -b742601e| FMOVD F21, F23 -6002271e| FMOVS R19, F0 -5301261e| FMOVS F10, R19 -c103679e| FMOVD R30, F1 -3301af9e| FMOV R9, V19.D[1] -bd00669e| FMOVD F5, R29 -ee02ae9e| FMOV V23.D[1], R14 -0ff0251e| FMOVS $15.5, F15 -16506a1e| FMOVD $0.28125, F22 -d1c20e1f| FMSUBS F14, F16, F22, F17 -fdae491f| FMSUBD F9, F11, F23, F29 -a4989d4f| FMUL V29.S[2], V5.S4, V4.S4 -efde706e| FMUL V16.D2, V23.D2, V15.D2 -190a291e| FMULS F9, F16, F25 -430a671e| FMULD F7, F18, F3 -21919e7f| FMULX V30.S[0], F9, F1 -5298c76f| VFMULX V7.D[1], V2.D2, V18.D2 -1ddf3c5e| FMULX F28, F24, F29 -a2fba06e| FNEG V29.S4, V2.S4 -7a40211e| FNEGS F3, F26 -f843611e| FNEGD F31, F24 -326b381f| FNMADDS F24, F26, F25, F18 -4b636a1f| FNMADDD F10, F24, F26, F11 -48fa201f| FNMSUBS F0, F30, F18, F8 -04d87f1f| FNMSUBD F31, F22, F0, F4 -0289371e| FNMULS F23, F8, F2 -0e8a691e| FNMULD F9, F16, F14 -05dba15e| FRECPE F24, F5 -42d9a14e| VFRECPE V10.S4, V2.S4 -2eff655e| FRECPS F5, F25, F14 -03fe774e| VFRECPS V23.D2, V16.D2, V3.D2 -b4fba15e| FRECPX F29, F20 -9d41261e| FRINTAS F12, F29 -ea42661e| FRINTAD F23, F10 -e399a16e| FRINTI V15.S4, V3.S4 -6ec3271e| FRINTIS F27, F14 -ecc1671e| FRINTID F15, F12 -4543251e| FRINTMS F26, F5 -f242651e| FRINTMD F23, F18 -898a214e| FRINTN V20.S4, V9.S4 -1641241e| FRINTNS F8, F22 -5341641e| FRINTND F10, F19 -248be14e| FRINTP V25.D2, V4.D2 -35c2241e| FRINTPS F17, F21 -6fc3641e| FRINTPD F27, F15 -0940271e| FRINTXS F0, F9 -4643671e| FRINTXD F26, F6 -749aa14e| FRINTZ V19.S4, V20.S4 -8bc0251e| FRINTZS F4, F11 -7cc1651e| FRINTZD F11, F28 -dedbe17e| FRSQRTE F30, F30 -04daa16e| VFRSQRTE V16.S4, V4.S4 -cdfce45e| FRSQRTS F4, F6, F13 -d9fda04e| VFRSQRTS V0.S4, V14.S4, V25.S4 -c5c1211e| FSQRTS F14, F5 -67c1611e| FSQRTD F11, F7 -a4d6b14e| FSUB V17.S4, V21.S4, V4.S4 -6138351e| FSUBS F21, F3, F1 -be3b6a1e| FSUBD F10, F29, F30 -4d2f016e| VMOV V26.B[5], V13.B[0] -741e174e| VMOV R19, V20.B[11] -e170404c| VLD1 (R7), [V1.B16] -7aa9404c| VLD1 (R11), [V26.S4, V27.S4] -4b6d400c| VLD1 (R10), [V11.D1, V12.D1, V13.D1] -582b400c| VLD1 (R26), [V24.S2, V25.S2, V26.S2, V27.S2] -8f7cdf4c| VLD1.P 16(R4), [V15.D2] -0a76ce4c| VLD1.P (R16)(R14), [V10.H8] -2aa6df0c| VLD1.P 16(R17), [V10.H4, V11.H4] -35a7d70c| VLD1.P (R25)(R23), [V21.H4, V22.H4] -ae6ddf4c| VLD1.P 48(R13), [V14.D2, V15.D2, V16.D2] -b362d74c| VLD1.P (R21)(R23), [V19.B16, V20.B16, V21.B16] -6d22df0c| VLD1.P 32(R19), [V13.B8, V14.B8, V15.B8, V16.B8] -6722c90c| VLD1.P (R19)(R9), [V7.B8, V8.B8, V9.B8, V10.B8] -c71f404d| VLD1 (R30), V7.B[15] -f55a400d| VLD1 (R23), V21.H[3] -f080400d| VLD1 (R7), V16.S[0] -ed84404d| VLD1 (R7), V13.D[1] -fd0bdf4d| VLD1.P 1(RSP), V29.B[10] -c811dc0d| VLD1.P (R14)(R28), V8.B[4] -6548cb4d| VLD1.P (R3)(R11), V5.H[5] -9882df4d| VLD1.P 4(R20), V24.S[2] -f482c74d| VLD1.P (R23)(R7), V20.S[2] -0d87df0d| VLD1.P 8(R24), V13.D[0] -1b85db0d| VLD1.P (R8)(R27), V27.D[0] -58c3404d| VLD1R (R26), [V24.B16] -c0c6df4d| VLD1R 2(R22), [V0.H8] -a6cec90d| VLD1R (R21)(R9), [V6.D1] -e68a400c| VLD2 (R23), [V6.S2, V7.S2] -4007604d| LD2 (R26), [V0.B, V1.B][9] -8c49604d| LD2 (R12), [V12.H, V13.H][5] -4f92600d| LD2 (R18), [V15.S, V16.S][1] -b186600d| LD2 (R21), [V17.D, V18.D][0] -631aff0d| LD2 2(R19), [V3.B, V4.B][6] -330ceb4d| LD2 (R1)(R11), [V19.B, V20.B][11] -454bff4d| LD2 4(R26), [V5.H, V6.H][5] -0792ff0d| LD2 8(R16), [V7.S, V8.S][1] -3b91fd0d| LD2 (R9)(R29), [V27.S, V28.S][1] -b086ff4d| LD2 16(R21), [V16.D, V17.D][1] -da86e30d| LD2 (R22)(R3), [V26.D, V27.D][0] -e7cf604d| VLD2R (RSP), [V7.D2, V8.D2] -5ac8ff0d| VLD2R 8(R2), [V26.S2, V27.S2] -13c1f10d| VLD2R (R8)(R17), [V19.B8, V20.B8] -0947404c| VLD3 (R24), [V9.H8, V10.H8, V11.H8] -8043df0c| VLD3 24(R28), [V0.B8, V1.B8, V2.B8] -6344d50c| VLD3 (R3)(R21), [V3.H4, V4.H4, V5.H4] -663d400d| LD3 (R11), [V6.B, V7.B, V8.B][7] -5b6b400d| LD3 (R26), [V27.H, V28.H, V29.H][1] -02a0404d| LD3 (R0), [V2.S, V3.S, V4.S][2] -e1a5404d| LD3 (R15), [V1.D, V2.D, V3.D][1] -b53edf0d| LD3 3(R21), [V21.B, V22.B, V23.B][7] -f625d10d| LD3 (R15)(R17), [V22.B, V23.B, V24.B][1] -3d7bda4d| LD3 (R25)(R26), [V29.H, V30.H, V31.H][7] -6ea0df0d| LD3 12(R3), [V14.S, V15.S, V16.S][0] -d9a0c60d| LD3 (R6)(R6), [V25.S, V26.S, V27.S][0] -b6a7df0d| LD3 24(R29), [V22.D, V23.D, V24.D][0] -dfa6d94d| LD3 (R22)(R25), [V31.D, V0.D, V1.D][1] -7de9404d| VLD3R (R11), [V29.S4, V30.S4, V31.S4] -2fe6df4d| VLD3R 6(R17), [V15.H8, V16.H8, V17.H8] -cae7c84d| VLD3R (R30)(R8), [V10.H8, V11.H8, V12.H8] -9a0b400c| VLD4 (R28), [V26.S2, V27.S2, V28.S2, V29.S2] -4b03df0c| VLD4 32(R26), [V11.B8, V12.B8, V13.B8, V14.B8] -8e0bcc4c| VLD4 (R28)(R12), [V14.S4, V15.S4, V16.S4, V17.S4] -182c604d| LD4 (R0), [V24.B, V25.B, V26.B, V27.B][11] -feb2600d| LD4 (R23), [V30.S, V31.S, V0.S, V1.S][1] -59a4604d| LD4 (R2), [V25.D, V26.D, V27.D, V28.D][1] -9b25ff4d| LD4 4(R12), [V27.B, V28.B, V29.B, V30.B][9] -1f35e84d| LD4 (R8)(R8), [V31.B, V0.B, V1.B, V2.B][13] -91b2ff4d| LD4 16(R20), [V17.S, V18.S, V19.S, V20.S][3] -88b3ed4d| LD4 (R28)(R13), [V8.S, V9.S, V10.S, V11.S][3] -9aa5ff4d| LD4 32(R12), [V26.D, V27.D, V28.D, V29.D][1] -efa5e10d| LD4 (R15)(R1), [V15.D, V16.D, V17.D, V18.D][0] -07ed604d| VLD4R (R8), [V7.D2, V8.D2, V9.D2, V10.D2] -0defff0d| VLD4R 32(R24), [V13.D1, V14.D1, V15.D1, V16.D1] -43e1f14d| VLD4R (R10)(R17), [V3.B16, V4.B16, V5.B16, V6.B16] -136e682c| VLDNP -192(R16), V27, V19 -cc67676c| VLDNP -400(R30), V25, V12 -e6dd4eac| VLDNP 464(R15), V23, V6 -b7e9c22c| LDP.P 20(R13), (V23, V26) -92c3fe6c| LDP.P -24(R28), (V18, V16) -f281e6ac| LDP.P -816(R15), (V18, V0) -4f06cd2d| LDP.W 104(R18), (V15, V1) -0f6fdc6d| LDP.W 448(R24), (V15, V27) -170ccbad| LDP.W 352(R0), (V23, V3) -71ea7a2d| LDP -44(R19), (V17, V26) -c8816c6d| LDP -312(R14), (V8, V0) -da6540ad| LDP (R14), (V26, V25) -92064c3c| MOVD.P 192(R20), V18 -94d4577c| MOVD.P -131(R4), V20 -39055fbc| FMOVS.P -16(R9), F25 -989551fc| FMOVD.P -231(R12), F24 -4764c23c| MOVD.P 38(R2), V7 -c15e4e3c| MOVD.W 229(R22), V1 -c8ce487c| MOVD.W 140(R22), V8 -ca5d5bbc| FMOVS.W -75(R14), F10 -34fd56fc| FMOVD.W -145(R9), F20 -bd0dd53c| MOVD.W -176(R13), V29 -ab65443d| MOVD 281(R13), V11 -cb57537d| MOVD 2474(R30), V11 -f2606fbd| FMOVS 12128(R7), F18 -088b67fd| FMOVD 20240(R24), F8 -0173ce3d| MOVD 14784(R24), V1 -ba112c1c| FMOVS 90253(PC), F26 -e489c25c| FMOVD -125873(PC), F4 -3cdb753c| MOVD (R25)(R21.SXTW), V28 -726b733c| MOVD (R27)(R19), V18 -395b627c| MOVD (R25)(R2.UXTW<<1), V25 -9b486cbc| FMOVS (R4)(R12.UXTW), F27 -1cda7efc| FMOVD (R16)(R30.SXTW<<3), F28 -365bf33c| MOVD (R25)(R19.UXTW<<4), V22 -43a1413c| VLDUR 26(R10), V3 -c7034f7c| VLDUR 240(R30), V7 -ad8350bc| VLDUR -248(R29), V13 -07a350fc| VLDUR -246(R24), V7 -0212c63c| VLDUR 97(R16), V2 -6f0a7a2f| VMLA V10.H[7], V19.H4, V15.H4 -fe95294e| VMLA V9.B16, V15.B16, V30.B16 -f24a4f2f| VMLS V15.H[4], V23.H4, V18.H4 -26947e2e| VMLS V30.H4, V1.H4, V6.H4 -6606115e| VMOV V19.B[8], V6 -0866116e| VMOV V16.B[12], V8.B[8] -6e1d0f4e| VMOV R11, V14.B[7] -6d1fa10e| VORR V1.B8, V27.B8, V13.B8 -b93f1a0e| VMOV V29.H[6], R25 -74e7020f| VMOVI $91, V20.B8 -0ff4040f| FMOV $-2., V15.S2 -4c47060f| VMOVI $(218<<16), V12.S2 -aa06064f| VMOVI $213, V10.S4 -8de4042f| VMOVI $-72057594021216256, V13 -b1e6046f| VMOVI $-72056498804555521, V17.D2 -609f214e| VMUL V1.B16, V27.B16, V0.B16 -9f5a206e| VMVN V20.B16, V31.B16 -da65032f| VMVNI $(110<<24), V26.S2 -4d36036f| VBIC $(114<<8), V13.S4 -4d66052f| VMVNI $(178<<24), V13.S2 -a4bbe06e| VNEG V29.D2, V4.D2 -bf5a206e| VMVN V21.B16, V31.B16 -2b1fe24e| VORN V2.B16, V25.B16, V11.B16 -22e4024f| VMOVI $65, V2.B16 -3086050f| VMOVI $177, V16.H4 -051db80e| VORR V24.B8, V8.B8, V5.B8 -48e2290e| VPMULL V9.B8, V18.B8, V8.H8 -7341652e| VRADDHN V5.S4, V11.S4, V19.H4 -1b417f6e| VRADDHN2 V31.S4, V8.S4, V27.H8 -e158606e| VRBIT V7.B16, V1.B16 -f418200e| VREV16 V7.B8, V20.B8 -228d2a0f| VRSHRN $22, V9.D2, V2.S2 -a861aa2e| VRSUBHN V10.D2, V13.D2, V8.S2 -7160786e| VRSUBHN2 V24.S4, V3.S4, V17.H8 -cc7f314e| VSABA V17.B16, V30.B16, V12.B16 -1350644e| VSABAL2 V4.H8, V0.H8, V19.S4 -a1757d4e| VSABD V29.H8, V13.H8, V1.H8 -0971a00e| VSABDL V0.S2, V8.S2, V9.D2 -af70214e| VSABDL2 V1.B16, V5.B16, V15.H8 -626ba04e| VSADALP V27.S4, V2.D2 -1503374e| VSADDL2 V23.B16, V24.B16, V21.H8 -592b204e| VSADDLP V26.B16, V25.H8 -d813600e| VSADDW V0.H4, V30.S4, V24.S4 -31e5210f| SCVTF $31, V9.S2, V17.S2 -aeda215e| SCVTFSS F21, F14 -f0e9021e| SCVTF $6, R15, F16 -42b4421e| SCVTF $19, R2, F2 -8b10029e| SCVTF $60, R4, F11 -59e6429e| SCVTF $7, R18, F25 -cf01221e| SCVTFWS R14, F15 -2d03621e| SCVTFWD R25, F13 -af00229e| SCVTFS R5, F15 -bf00629e| SCVTFD R5, F31 -2a02025e| SHA1C V2.S4, V17, V10 -8b0b285e| SHA1H V28, V11 -11201f5e| SHA1M V31.S4, V0, V17 -f110115e| SHA1P V17.S4, V7, V17 -b732115e| SHA1SU0 V17.S4, V21.S4, V23.S4 -cf18285e| SHA1SU1 V6.S4, V15.S4 -2e520f5e| SHA256H2 V15.S4, V17, V14 -77401a5e| SHA256H V26.S4, V3, V23 -b92a285e| SHA256SU0 V21.S4, V25.S4 -7e63175e| SHA256SU1 V23.S4, V27.S4, V30.S4 -d504ab0e| VSHADD V11.S2, V6.S2, V21.S2 -5a54734f| VSHL $51, V2.D2, V26.D2 -0638212e| VSHLL $8, V0.B8, V6.H8 -a238216e| VSHLL2 $8, V5.B16, V2.H8 -f5863e0f| VSHRN $2, V23.D2, V21.S2 -f187234f| VSHRN2 $29, V31.D2, V17.S4 -e124b04e| VSHSUB V16.S4, V7.S4, V1.S4 -3657252f| VSLI $5, V25.S2, V22.S2 -c266aa4e| VSMAX V10.S4, V22.S4, V2.S4 -2c6ca74e| VSMIN V7.S4, V1.S4, V12.S4 -4aae390e| VSMINP V25.B8, V18.B8, V10.B8 -1a82ba0e| VSMLAL V26.S2, V16.S2, V26.D2 -2381ad4e| VSMLAL2 V13.S4, V9.S4, V3.D2 -0da17a4e| VSMLSL2 V26.H8, V8.H8, V13.S4 -4f2e0d4e| SMOV V18.B[6], R15 -e4a0980f| VSMULL V24.S[0], V7.S2, V4.D2 -51c2220e| VSMULL V2.B8, V18.B8, V17.H8 -01c26d4e| VSMULL2 V13.H8, V16.H8, V1.S4 -f978205e| VSQABS V7, V25 -760cef5e| VSQADD V15, V3, V22 -390c224e| VSQADD V2.B16, V1.B16, V25.B16 -5439455f| VSQDMLAL V5.H[4], V10, V20 -8391765e| VSQDMLAL V22, V12, V3 -c9907a4e| VSQDMLAL2 V26.H8, V6.H8, V9.S4 -0b73445f| VSQDMLSL V4.H[0], V24, V11 -8e728d0f| VSQDMLSL V13.S[0], V20.S2, V14.D2 -fe787d4f| VSQDMLSL2 V13.H[7], V7.H8, V30.S4 -bdb2b55e| VSQDMLSL V21, V21, V29 -d0c9be4f| VSQDMULH V30.S[3], V14.S4, V16.S4 -89b77c5e| VSQDMULH V28, V28, V9 -c9bb515f| VSQDMULL V1.H[5], V30, V9 -5379e07e| VSQNEG V10, V19 -4b7aa06e| VSQNEG V18.S4, V11.S4 -1bd1750f| VSQRDMULH V5.H[3], V8.H4, V27.H4 -f55e755e| VSQRSHL V21, V23, V21 -ba5fbd4e| VSQRSHL V29.S4, V29.S4, V26.S4 -ba9d1e0f| VSQRSHRN $2, V13.S4, V26.H4 -3d9c284f| VSQRSHRN2 $24, V1.D2, V29.S4 -8a8f2c6f| VSQRSHRUN2 $20, V28.D2, V10.S4 -eb760b5f| VSQSHL $3, V23, V11 -4a77220f| VSQSHL $2, V26.S2, V10.S2 -6c4cfb5e| VSQSHL V27, V3, V12 -ad4eba4e| VSQSHL V26.S4, V21.S4, V13.S4 -9364257f| VSQSHLU $5, V4, V19 -b267392f| VSQSHLU $25, V29.S2, V18.S2 -c085042f| VMVNI $142, V0.H4 -7584326f| VSQSHRUN2 $14, V3.D2, V21.S4 -3a2fe25e| VSQSUB V2, V25, V26 -2c2ca34e| VSQSUB V3.S4, V1.S4, V12.S4 -484ba15e| VSQXTN V26, V8 -824b210e| VSQXTN V28.H8, V2.B8 -5b48214e| VSQXTN2 V2.H8, V27.B16 -e228a16e| VSQXTUN2 V7.D2, V2.S4 -1c44416f| VSRI $63, V0.D2, V28.D2 -1e56eb5e| VSRSHL V11, V16, V30 -bb56fe4e| VSRSHL V30.D2, V21.D2, V27.D2 -c6262d0f| VSRSHR $19, V22.S2, V6.S2 -0c366c5f| VSRSRA $20, V16, V12 -13376e4f| VSRSRA $18, V24.D2, V19.D2 -7ba5040f| VMOVI $(139<<8), V27.H4 -9c076f5f| VSSHR $17, V28, V28 -2804434f| VSSHR $61, V1.D2, V8.D2 -b717535f| VSSRA $45, V29, V23 -c2160f0f| VSSRA $1, V22.B8, V2.B8 -8a333a4e| VSSUBW2 V26.B16, V28.H8, V10.H8 -3a70000c| VST1 [V26.B8], (R1) -1bab004c| VST1 [V27.S4, V28.S4], (R24) -8d69004c| VST1 [V13.S4, V14.S4, V15.S4], (R12) -9c26004c| VST1 [V28.H8, V29.H8, V30.H8, V31.H8], (R20) -c87a9f0c| VST1.P [V8.S2], 8(R22) -5a7f800c| VST1.P [V26.D1], (R26)(R0) -eea99f4c| VST1.P [V14.S4, V15.S4], 32(R15) -11af9d4c| VST1.P [V17.D2, V18.D2], (R24)(R29) -ec689f0c| VST1.P [V12.S2, V13.S2, V14.S2], 24(R7) -8662900c| VST1.P [V6.B8, V7.B8, V8.B8], (R20)(R16) -0b249f4c| VST1.P [V11.H8, V12.H8, V13.H8, V14.H8], 64(R0) -6b2d8b4c| VST1.P [V11.D2, V12.D2, V13.D2, V14.D2], (R11)(R11) -3212004d| VST1 V18.B[12], (R17) -3392004d| VST1 V19.S[3], (R17) -0284000d| VST1 V2.D[0], (R0) -340f9f0d| VST1.P V20.B[3], 1(R25) -0d069a4d| VST1.P V13.B[9], (R16)(R26) -2e51950d| VST1.P V14.H[2], (R9)(R21) -3f839f0d| VST1.P V31.S[0], 4(R25) -1492844d| VST1.P V20.S[3], (R16)(R4) -dd869f4d| VST1.P V29.D[1], 8(R22) -2e869b4d| VST1.P V14.D[1], (R17)(R27) -1e87000c| VST2 (R24), [V30.H4, V31.H4] -07829f0c| VST2 16(R16), [V7.B8, V8.B8] -d38a884c| VST2 (R22)(R8), [V19.S4, V20.S4] -541c204d| ST2 (R2), [V20.B, V21.B][15] -9180200d| ST2 (R4), [V17.S, V18.S][0] -2585204d| ST2 (R9), [V5.D, V6.D][1] -2f06bf4d| ST2 2(R17), [V15.B, V16.B][9] -3b08b44d| ST2 (R1)(R20), [V27.B, V28.B][10] -805bbf0d| ST2 4(R28), [V0.H, V1.H][3] -fb80bf0d| ST2 8(R7), [V27.S, V28.S][0] -6290a80d| ST2 (R3)(R8), [V2.S, V3.S][1] -b587bf4d| ST2 16(R29), [V21.D, V22.D][1] -2c84b64d| ST2 (R1)(R22), [V12.D, V13.D][1] -22469f0c| VST3 24(R17), [V2.H4, V3.H4, V4.H4] -0e30004d| ST3 (R0), [V14.B, V15.B, V16.B][12] -62a1004d| ST3 (R11), [V2.S, V3.S, V4.S][2] -54a4000d| ST3 (R2), [V20.D, V21.D, V22.D][0] -84259f4d| ST3 3(R12), [V4.B, V5.B, V6.B][9] -693c9d4d| ST3 (R3)(R29), [V9.B, V10.B, V11.B][15] -5b709f0d| ST3 6(R2), [V27.H, V28.H, V29.H][2] -e47a960d| ST3 (R23)(R22), [V4.H, V5.H, V6.H][3] -a0a39f0d| ST3 12(R29), [V0.S, V1.S, V2.S][0] -37b0890d| ST3 (R1)(R9), [V23.S, V24.S, V25.S][1] -9aa59f4d| ST3 24(R12), [V26.D, V27.D, V28.D][1] -26a5924d| ST3 (R9)(R18), [V6.D, V7.D, V8.D][1] -3e05000c| VST4 (R9), [V30.H4, V31.H4, V0.H4, V1.H4] -a8039f0c| VST4 32(R29), [V8.B8, V9.B8, V10.B8, V11.B8] -4126204d| ST4 (R18), [V1.B, V2.B, V3.B, V4.B][9] -3b71204d| ST4 (R9), [V27.H, V28.H, V29.H, V30.H][6] -f2b3204d| ST4 (RSP), [V18.S, V19.S, V20.S, V21.S][3] -7fa4200d| ST4 (R3), [V31.D, V0.D, V1.D, V2.D][0] -562ebf4d| ST4 4(R18), [V22.B, V23.B, V24.B, V25.B][11] -563cae0d| ST4 (R2)(R14), [V22.B, V23.B, V24.B, V25.B][7] -1271bf4d| ST4 8(R8), [V18.H, V19.H, V20.H, V21.H][6] -e7a1bf0d| ST4 16(R15), [V7.S, V8.S, V9.S, V10.S][0] -f3b2a30d| ST4 (R23)(R3), [V19.S, V20.S, V21.S, V22.S][1] -eca5bf4d| ST4 32(R15), [V12.D, V13.D, V14.D, V15.D][1] -4ca7bb0d| ST4 (R26)(R27), [V12.D, V13.D, V14.D, V15.D][0] -4f5b182c| VSTNP 192(R26), V22, V15 -e05e0b6c| VSTNP 176(R23), V23, V0 -77be2eac| VSTNP -560(R19), V15, V23 -bb3fa72c| STP.P (V27, V15), -200(R29) -ef18bb6c| STP.P (V15, V6), -80(R7) -777d84ac| STP.P (V23, V31), 128(R11) -d0f9952d| STP.W (V16, V30), 172(R14) -125ca26d| STP.W (V18, V23), -480(R0) -33bbbfad| STP.W (V19, V14), -16(R25) -6ebb322d| STP (V14, V14), -108(R27) -cb92096d| STP (V11, V4), 152(R22) -f2871dad| STP (V18, V1), 944(RSP) -f676003c| MOVD.P V22, 7(R23) -50f50d7c| MOVD.P V16, 223(R10) -0d251ebc| FMOVS.P F13, -30(R8) -1f3510fc| FMOVD.P F31, -253(R8) -05a4883c| MOVD.P V5, 138(R0) -800e063c| MOVD.W V0, 96(R20) -668d157c| MOVD.W V6, -168(R11) -1f3d11bc| FMOVS.W F31, -237(R8) -71bf06fc| FMOVD.W F17, 107(R27) -f50c843c| MOVD.W V21, 64(R7) -f186013d| MOVD V17, 97(R23) -f0e5357d| MOVD V16, 6898(R15) -938d3bbd| FMOVS F19, 15244(R12) -aeb813fd| FMOVD F14, 10096(R5) -2cc4943d| MOVD V12, 21264(R1) -e2f8263c| MOVD V2, (R7)(R6.SXTX) -1d79373c| MOVD V29, (R8)(R23) -bc70003c| MOVD V28, 7(R5) -7190157c| MOVD V17, -167(R3) -073309bc| FMOVS F7, 147(R24) -298100fc| FMOVD F9, 8(R9) -e8c1843c| MOVD V8, 76(R15) -3384266e| VSUB V6.B16, V1.B16, V19.B16 -9163750e| VSUBHN V21.S4, V28.S4, V17.H4 -f3627d4e| VSUBHN2 V29.S4, V23.S4, V19.H8 -1939205e| VSUQADD V8, V25 -0638604e| VSUQADD V0.H8, V6.H8 -81a4284f| VSSHLL2 $8, V4.S4, V1.D2 -f920030e| VTBL V3.B8, [V7.B16, V8.B16], V25.B8 -71400e4e| VTBL V14.B16, [V3.B16, V4.B16, V5.B16], V17.B16 -bc630d4e| VTBL V13.B16, [V29.B16, V30.B16, V31.B16, V0.B16], V28.B16 -6803030e| VTBL V3.B8, [V27.B16], V8.B8 -4b32124e| VTBX V18.B16, [V18.B16, V19.B16], V11.B16 -8f50170e| VTBX V23.B8, [V4.B16, V5.B16, V6.B16], V15.B8 -5673020e| VTBX V2.B8, [V26.B16, V27.B16, V28.B16, V29.B16], V22.B8 -f2130f4e| VTBX V15.B16, [V31.B16], V18.B16 -9e29c34e| VTRN1 V3.D2, V12.D2, V30.D2 -9b6bcf4e| VTRN2 V15.D2, V28.D2, V27.D2 -157cb02e| VUABA V16.S2, V0.S2, V21.S2 -28513c2e| VUABAL V28.B8, V9.B8, V8.H8 -f950a26e| VUABAL2 V2.S4, V7.S4, V25.D2 -a776b26e| VUABD V18.S4, V21.S4, V7.S4 -da726b2e| VUABDL V11.H4, V22.H4, V26.S4 -9473746e| VUABDL2 V20.H8, V28.H8, V20.S4 -aa6b602e| VUADALP V29.H4, V10.S2 -ac013d2e| VUADDL V29.B8, V13.B8, V12.H8 -e500a86e| VUADDL2 V8.S4, V7.S4, V5.D2 -9c28a02e| VUADDLP V4.S2, V28.D1 -4c3a302e| VUADDLV V18.B8, V12 -2810b62e| VUADDW V22.S2, V1.D2, V8.D2 -f2132d6e| VUADDW2 V13.B16, V31.H8, V18.H8 -b3e67f7f| UCVTF $1, F21, F19 -ece5676f| UCVTF $25, V15.D2, V12.D2 -d7d8217e| UCVTFSS F6, F23 -cdd9212e| UCVTF V14.S2, V13.S2 -5788031e| UCVTF $30, R2, F23 -c7ac431e| UCVTF $21, R6, F7 -0777039e| UCVTF $35, R24, F7 -e4f4439e| UCVTF $3, R7, F4 -9100231e| UCVTFWS R4, F17 -e202631e| UCVTFWD R23, F2 -3903239e| UCVTFS R25, F25 -2001639e| UCVTFD R9, F0 -2a07b76e| VUHADD V23.S4, V25.S4, V10.S4 -dc25372e| VUHSUB V23.B8, V14.B8, V28.B8 -de646f2e| VUMAX V15.H4, V6.H4, V30.H4 -4ba6766e| VUMAXP V22.H8, V18.H8, V11.H8 -e26db42e| VUMIN V20.S2, V15.S2, V2.S2 -a7ae712e| VUMINP V17.H4, V21.H4, V7.H4 -afaa716e| VUMINV V21.H8, V15 -42298c2f| VUMLAL V12.S[2], V10.S2, V2.D2 -0a826e2e| VUMLAL V14.H4, V16.H4, V10.S4 -2681a06e| VUMLAL2 V0.S4, V9.S4, V6.D2 -2860bd6f| VUMLSL2 V29.S[1], V1.S4, V8.D2 -19a26b6e| VUMLSL2 V11.H8, V16.H8, V25.S4 -8a3d140e| VMOV V12.S[2], R10 -22a1ba6f| VUMULL2 V26.S[1], V9.S4, V2.D2 -15c0712e| VUMULL V17.H4, V0.H4, V21.S4 -2ec0296e| VUMULL2 V9.B16, V1.B16, V14.H8 -6e0fba7e| VUQADD V26, V27, V14 -db0fe06e| VUQADD V0.D2, V30.D2, V27.D2 -535e6c7e| VUQRSHL V12, V18, V19 -7c5cfe6e| VUQRSHL V30.D2, V3.D2, V28.D2 -9a9e327f| VUQRSHRN $14, V20, V26 -339f0b2f| VUQRSHRN $5, V25.H8, V19.B8 -7e77337f| VUQSHL $19, V27, V30 -8b4d657e| VUQSHL V5, V12, V11 -414c622e| VUQSHL V2.H4, V2.H4, V1.H4 -95942b2f| VUQSHRN $21, V4.D2, V21.S2 -d396246f| VUQSHRN2 $28, V22.D2, V19.S4 -b22ff27e| VUQSUB V18, V29, V18 -b32e756e| VUQSUB V21.H8, V21.H8, V19.H8 -0e4b616e| VUQXTN2 V24.S4, V14.H8 -ca16236e| VURHADD V3.B16, V22.B16, V10.B16 -1f57a26e| VURSHL V2.S4, V24.S4, V31.S4 -8324777f| VURSHR $9, V4, V3 -37caa16e| VURSQRTE V17.S4, V23.S4 -b735517f| VURSRA $47, V13, V23 -0a47f67e| VUSHL V22, V24, V10 -e7a71c2f| VUSHLL $12, V31.H4, V7.S4 -9c38607e| VUSQADD V4, V28 -dc39206e| VUSQADD V14.B16, V28.B16 -dc145d7f| VUSRA $35, V6, V28 -d720752e| VUSUBL V21.H4, V6.H4, V23.S4 -2c236f6e| VUSUBL2 V15.H8, V25.H8, V12.S4 -ed32222e| VUSUBW V2.B8, V23.H8, V13.H8 -72332d6e| VUSUBW2 V13.B16, V27.H8, V18.H8 -655a1c4e| VUZP2 V28.B16, V19.B16, V5.B16 -972a210e| VXTN V20.H8, V23.B8 -5f2aa14e| VXTN2 V18.D2, V31.S4 -9a38910e| VZIP1 V17.S2, V4.S2, V26.S2 -d979990e| VZIP2 V25.S2, V14.S2, V25.S2 -21004192| AND $-9223372036854775808, R1, R1 -0a011f1a| ADCW ZR, R8, R10 -4c00009a| ADC R0, R2, R12 -a602093a| ADCSW R9, R21, R6 -d60217ba| ADCS R23, R22, R22 -0921250b| ADDW R5.UXTH, R8, R9 -ee8e288b| ADD R8.SXTB<<3, R23, R14 -23123011| ADDW $3076, R17, R3 -23127011| ADDW $(3076<<12), R17, R3 -2ba32391| ADD $2280, R25, R11 -2ba36391| ADD $(2280<<12), R25, R11 -67158d0b| ADDW R13->5, R11, R7 -30da198b| ADD R25<<54, R17, R16 -a7e72c2b| ADDSW R12.SXTX<<1, R29, R7 -357338ab| ADDS R24.UXTX<<4, R25, R21 -6b147731| ADDSW $(3525<<12), R3, R11 -6b1477b1| ADDS $(3525<<12), R3, R11 -cd59872b| ADDSW R7->22, R14, R13 -e41f4eab| ADDS R14>>7, ZR, R4 -21004192| AND $-9223372036854775808, R1, R1 -a2430412| ANDW $4026540031, R29, R2 -93910e92| AND $34903429696192636, R12, R19 -7a1ec90a| ANDW R9@>7, R19, R26 -7a1ec98a| AND R9@>7, R19, R26 -17f30172| ANDSW $2863311530, R24, R23 -458051f2| ANDS $-140737488289793, R2, R5 -af629a6a| ANDSW R26->24, R21, R15 -7ab0deea| ANDS R30@>44, R3, R26 -792bcc1a| ASRW R12, R27, R25 -672bce9a| ASR R14, R27, R7 -79ff4b93| ASR $11, R27, R25 -797f0b13| ASRW $11, R27, R25 -ebffff54| BLT -1(PC) -ffffff17| JMP -1(PC) -80161033| BFIW $16, R20, $6, R0 -b95265b3| BFI $27, R21, $21, R25 -6e670333| BFXILW $3, R27, $23, R14 -14a55ab3| BFXIL $26, R8, $16, R20 -b03ce70a| BICW R7@>15, R5, R16 -9235ec8a| BIC R12@>13, R12, R18 -7450b96a| BICSW R25->20, R3, R20 -3730b3ea| BICS R19->12, R1, R23 -370033ea| BICS R19, R1, R23 -370073ea| BICS R19>>0, R1, R23 -ffffff97| CALL -1(PC) -e0013fd6| CALL (R15) -a0031fd6| JMP (R29) -e08c31d4| BRK $35943 -e2ffff35| CBNZW R2, -1(PC) -e7ffffb5| CBNZ R7, -1(PC) -efffff34| CBZW R15, -1(PC) -e1ffffb4| CBZ R1, -1(PC) -e44341ba| CCMN MI, ZR, R1, $4 -4beb543a| CCMNW AL, R26, $20, $11 -015b46ba| CCMN PL, R24, $6, $1 -8602463a| CCMNW EQ, R20, R6, $6 -c6d34cba| CCMN LE, R30, R12, $6 -a76b4f7a| CCMPW VS, R29, $15, $7 -e3d853fa| CCMP LE, R7, $19, $3 -4022467a| CCMPW HS, R18, R6, $0 -c7b346fa| CCMP LT, R30, R6, $7 -e44341ba| CCMN MI, ZR, R1, $4 -ee279b1a| CSINCW HS, ZR, R27, R14 -4174819a| CSINC VC, R2, R1, R1 -5100955a| CSINVW EQ, R2, R21, R17 -573093da| CSINV LO, R2, R19, R23 -6e279b1a| CINCW LO, R27, R14 -7f379b1a| CINCW HS, R27, ZR -5110825a| CINVW EQ, R2, R17 -87718cda| CINV VS, R12, R7 -de739eda| CINV VS, R30, R30 -5f3403d5| CLREX $4 -5f3003d5| CLREX $0 -e615c05a| CLSW R15, R6 -ff15c0da| CLS R15, ZR -2e10c05a| CLZW R1, R14 -a912c0da| CLZ R21, R9 -ff11352b| CMNW R21.UXTB<<4, R15 -1f5220ab| CMN R0.UXTW<<4, R16 -3f214d2b| CMNW R13>>8, R9 -7f4486ab| CMN R6->17, R3 -bf084031| CMNW $(2<<12), R5 -9f2140b1| CMN $(8<<12), R12 -7f0086ab| CMN R6->0, R3 -7f0006ab| CMN R6, R3 -bf001e2b| CMNW R30, R5 -bf080031| CMNW $2, R5 -7f001fab| CMN ZR, R3 -7f0000ab| CMN R0, R3 -ff02266b| CMPW R6.UXTB, R23 -5fab39eb| CMP R25.SXTH<<2, R26 -bfa73bf1| CMP $3817, R29 -7f5c47eb| CMP R7>>23, R3 -2e45895a| CNEGW PL, R9, R14 -ae24895a| CSNEGW HS, R5, R9, R14 -c35595da| CSNEG PL, R14, R21, R3 -ef2487da| CNEG LO, R7, R15 -1041d11a| CRC32B R17, R8, R16 -bb46c31a| CRC32H R3, R21, R27 -c94bd61a| CRC32W R22, R30, R9 -8f4cd49a| CRC32X R20, R4, R15 -7653d21a| CRC32CB R18, R27, R22 -1454d51a| CRC32CH R21, R0, R20 -7558c91a| CRC32CW R9, R3, R21 -185ccb9a| CRC32CX R11, R0, R24 -8c30941a| CSELW LO, R4, R20, R12 -0ea08c9a| CSEL GE, R0, R12, R14 -e3b79f1a| CSETW GE, R3 -fea79f9a| CSET LT, R30 -e5639f5a| CSETMW VC, R5 -e4739fda| CSETM VS, R4 -bad4981a| CSINCW LE, R5, R24, R26 -5167909a| CSINC VS, R26, R16, R17 -e5e2955a| CSINVW AL, R23, R21, R5 -4e308bda| CSINV LO, R2, R11, R14 -0a269d5a| CSNEGW HS, R16, R29, R10 -ab1692da| CSNEG NE, R21, R18, R11 -418ea5d4| DCPS1 $11378 -6239a5d4| DCPS2 $10699 -e3ebabd4| DCPS3 $24415 -bf3103d5| DMB $1 -bf3003d5| DMB $0 -e003bfd6| DRPS -9f3103d5| DSB $1 -c974354a| EONW R21<<29, R6, R9 -89b86eca| EON R14>>46, R4, R9 -76e343d2| EOR $-2287828610704211969, R27, R22 -536d8c4a| EORW R12->27, R10, R19 -d1ef02ca| EOR R2<<59, R30, R17 -e0039fd6| ERET -591d8813| EXTRW $7, R8, R10, R25 -888dd693| EXTR $35, R22, R12, R8 -bf2003d5| SEVL -df2003d5| HINT $6 -a0fc5fd4| HLT $65509 -df3103d5| ISB $1 -df3f03d5| ISB $15 -9dfddf88| LDARW (R12), R29 -d6ffdf88| LDARW (R30), R22 -f6ffdf88| LDARW (RSP), R22 -76ffdfc8| LDAR (R27), R22 -22ffdf08| LDARB (R25), R2 -a7fcdf48| LDARH (R5), R7 -54c17f88| LDAXPW (R10), (R20, R16) -3eaf7fc8| LDAXP (R25), (R30, R11) -e2fd5f88| LDAXRW (R15), R2 -f5fd5fc8| LDAXR (R15), R21 -70fe5f08| LDAXRB (R19), R16 -a8fc5f48| LDAXRH (R5), R8 -e9c55ab8| MOVWU.P -84(R15), R9 -48255df8| MOVD.P -46(R10), R8 -480540f8| MOVD.P (R10), R8 -703c57b8| MOVWU.W -141(R3), R16 -1dac57f8| MOVD.W -134(R0), R29 -393c50b9| MOVWU 4156(R1), R25 -498d5cf9| MOVD 14616(R10), R9 -87d86cb8| MOVWU (R4)(R12.SXTW<<2), R7 -f9586bf8| MOVD (R7)(R11.UXTW<<3), R25 -447866f8| MOVD (R2)(R6<<3), R4 -727a72b8| MOVWU (R19)(R18<<2), R18 -4ca44238| MOVBU.P 42(R2), R12 -4e5c5e38| MOVBU.W -27(R2), R14 -03936d39| MOVBU 2916(R24), R3 -adb54678| MOVHU.P 107(R13), R13 -420c4c78| MOVHU.W 192(R2), R2 -92787579| MOVHU 6844(R4), R18 -fb478238| MOVB.P 36(RSP), R27 -18ee9438| MOVB.W -178(R16), R24 -37958f39| MOVB 997(R9), R23 -e5368b78| MOVH.P 179(R23), R5 -361f9c78| MOVH.W -63(R25), R22 -4d6c8079| MOVH 54(R2), R13 -02669cb8| MOVW.P -58(R16), R2 -488e92b8| MOVW.W -216(R18), R8 -ea9e92b9| MOVW 4764(R23), R10 -172f7f88| LDXPW (R24), (R23, R11) -10347fc8| LDXP (R0), (R16, R13) -fe7f5f88| LDXRW (RSP), R30 -6c7f5fc8| LDXR (R27), R12 -047c5f08| LDXRB (R0), R4 -9a7d5f48| LDXRH (R12), R26 -4f21cb1a| LSLW R11, R10, R15 -1523db9a| LSL R27, R24, R21 -f6681b53| LSLW $5, R7, R22 -221a47d3| LSL $57, R17, R2 -6c24c91a| LSRW R9, R3, R12 -a224ca9a| LSR R10, R5, R2 -707c0153| LSRW $1, R3, R16 -34fc4cd3| LSR $12, R1, R20 -6a5c0d1b| MADDW R13, R23, R3, R10 -445d059b| MADD R5, R23, R10, R4 -35fd001b| MNEGW R0, R9, R21 -77ff0e9b| MNEG R14, R27, R23 -e70302aa| MOVD R2, R7 -fff29892| MOVD $-51096, ZR -d4adb252| MOVW $2507014144, R20 -8747e2d2| MOVD $1313925191285342208, R7 -f5130d32| ORRW $16252928, ZR, R21 -eb6b16b2| MOVD $-4260607558625, R11 -e7031eaa| MOVD R30, R7 -35e88172| MOVKW $3905, R21 -35e8a172| MOVKW $(3905<<16), R21 -35e8c1f2| MOVK $(3905<<32), R21 -050080d2| MOVD $0, R5 -bf4100d5| MSR $1, SPSel -df4903d5| MSR $9, DAIFSet -ff4603d5| MSR $6, DAIFClr -8585011b| MSUBW R1, R1, R12, R5 -42c3139b| MSUB R19, R16, R26, R2 -b67c1a1b| MULW R26, R5, R22 -607c049b| MUL R4, R3, R0 -e837e32a| MVNW R3@>13, R8 -e97f6daa| MVN R13>>31, R9 -fe07176b| NEGSW R23<<1, R30 -f68f54eb| NEGS R20>>35, R22 -e8030d5a| NGCW R13, R8 -e70302da| NGC R2, R7 -e5030a7a| NGCSW R10, R5 -f00318fa| NGCS R24, R16 -032ee42a| ORNW R4@>11, R16, R3 -634cf6aa| ORN R22@>19, R3, R3 -f8490d32| ORRW $4294443071, R15, R24 -96f542b2| ORR $-3458764513820540929, R12, R22 -1a110d2a| ORRW R13<<4, R8, R26 -a65803aa| ORR R3<<22, R5, R6 -190180f9| PRFM (R8), $25 -400080f9| PRFM (R2), PLDL1KEEP -3601c05a| RBITW R9, R22 -6401c0da| RBIT R11, R4 -c0035fd6| RET -0a09c05a| REVW R8, R10 -220cc0da| REV R1, R2 -b206c05a| REV16W R21, R18 -2407c0da| REV16 R25, R4 -750bc0da| REV32 R27, R21 -336f8413| EXTRW $27, R4, R25, R19 -af47ca93| EXTR $17, R10, R29, R15 -cf39ce93| ROR $14, R14, R15 -cf718e13| RORW $28, R14, R15 -832dc31a| RORW R3, R12, R3 -e22ec09a| ROR R0, R23, R2 -1801045a| SBCW R4, R8, R24 -5a0119da| SBC R25, R10, R26 -52021b7a| SBCSW R27, R18, R18 -250105fa| SBCS R5, R9, R5 -56451713| SBFIZW $9, R10, $18, R22 -74397a93| SBFIZ $6, R11, $15, R20 -f4450813| SBFXW $8, R15, $10, R20 -67df4293| SBFX $2, R27, $54, R7 -c90dd61a| SDIVW R22, R14, R9 -a90ecd9a| SDIV R13, R21, R9 -9f2003d5| SEV -bf2003d5| SEVL -691d239b| SMADDL R3, R7, R11, R9 -7dcd259b| SMSUBL R5, R19, R11, R29 -6ffc3a9b| SMNEGL R26, R3, R15 -b57e519b| SMULH R17, R21, R21 -a07c209b| SMULL R0, R5, R0 -d0fe9f88| STLRW R16, (R22) -03ff9fc8| STLR R3, (R24) -67ff08c8| STLXR R7, (R27), R8 -edfd0e88| STLXRW R13, (R15), R14 -f8fe0808| STLXRB R24, (R23), R8 -73ff0b48| STLXRH R19, (R27), R11 -468d22c8| STLXP (R6, R3), (R10), R2 -c6ae3588| STLXPW (R6, R11), (R22), R21 -7668e8a8| LDP.P -384(R3), (R22, R26) -12add1a9| LDP.W 280(R8), (R18, R11) -166c96a8| STP.P (R22, R27), 352(R0) -112d86a9| STP.W (R17, R11), 96(R8) -34441eb8| MOVW.P R20, -28(R1) -11f60bf8| MOVD.P R17, 191(R16) -c15d15b8| MOVW.W R1, -171(R14) -ae4d12f8| MOVD.W R14, -220(R13) -03ef39b9| MOVW R3, 14828(R24) -208228f9| MOVD R0, 20736(R17) -ffb41838| MOVB.P ZR, -117(R7) -bb0d1a38| MOVB.W R27, -96(R13) -b1612239| MOVB R17, 2200(R13) -87841b78| MOVH.P R7, -72(R4) -cc3d1878| MOVH.W R12, -125(R14) -53cf1c79| MOVH R19, 3686(R26) -152002b8| MOVW R21, 34(R0) -397217f8| MOVD R25, -137(R17) -eb021b78| MOVH R11, -80(R23) -61082ac8| STXP (R1, R2), (R3), R10 -e10b2ac8| STXP (R1, R2), (RSP), R10 -61082a88| STXPW (R1, R2), (R3), R10 -e10b2a88| STXPW (R1, R2), (RSP), R10 -627e1288| STXRW R2, (R19), R18 -af7e0dc8| STXR R15, (R21), R13 -277d1808| STXRB R7, (R9), R24 -6c7c0848| STXRH R12, (R3), R8 -f24a344b| SUBW R20.UXTW<<2, R23, R18 -3ac825cb| SUB R5.SXTW<<2, R1, R26 -9b0c5ed1| SUB $(1923<<12), R4, R27 -9b0c5e51| SUBW $(1923<<12), R4, R27 -e8740c4b| SUBW R12<<29, R7, R8 -e8f40ccb| SUB R12<<61, R7, R8 -a6ad226b| SUBSW R2.SXTH<<3, R13, R6 -646b35eb| SUBS R21.UXTX<<2, R27, R4 -c9b04071| SUBSW $(44<<12), R6, R9 -a9315cf1| SUBS $(1804<<12), R13, R9 -c770966b| SUBSW R22->28, R6, R7 -c770566b| SUBSW R22>>28, R6, R7 -d03c1aeb| SUBS R26<<15, R6, R16 -010000d4| SVC $0 -a17f03d4| SVC $7165 -191d0013| SXTBW R8, R25 -a91d4093| SXTB R13, R9 -083d0013| SXTHW R8, R8 -393e4093| SXTH R17, R25 -1b7c4093| SXTW R0, R27 -0c5b2cd5| SYSL $285440, R12 -6e361d53| UBFIZW $3, R19, $14, R14 -c4367dd3| UBFIZ $3, R22, $14, R4 -ef580353| UBFXW $3, R7, $20, R15 -25e661d3| UBFX $33, R17, $25, R5 -af0ac81a| UDIVW R8, R21, R15 -550ac29a| UDIV R2, R18, R21 -3152a09b| UMADDL R0, R20, R17, R17 -6790b69b| UMSUBL R22, R4, R3, R7 -41fea39b| UMNEGL R3, R18, R1 -987ed89b| UMULH R24, R20, R24 -d37eb29b| UMULL R18, R22, R19 -461c0053| UXTBW R2, R6 -f43c0053| UXTHW R7, R20 -0058200e| VCNT V0.B8, V0.B8 -5f2003d5| WFE -7f2003d5| WFI -3f2003d5| YIELD -5cc0201e| FABSS F2, F28 -0ec0601e| FABSD F0, F14 -4a282c1e| FADDS F12, F2, F10 -cc29781e| FADDD F24, F14, F12 -8ed5311e| FCCMPS LE, F17, F12, $14 -ef856b1e| FCCMPD HI, F11, F15, $15 -bd253c1e| FCCMPES HS, F28, F13, $13 -99b4741e| FCCMPED LT, F20, F4, $9 -2022231e| FCMPS F3, F17 -0821201e| FCMPS $(0.0), F8 -60236b1e| FCMPD F11, F27 -2823601e| FCMPD $(0.0), F25 -d023301e| FCMPES F16, F30 -b823201e| FCMPES $(0.0), F29 -50216d1e| FCMPED F13, F10 -3823601e| FCMPED $(0.0), F25 -590f3b1e| FCSELS EQ, F26, F27, F25 -075d761e| FCSELD PL, F8, F22, F7 -ef00381e| FCVTZSSW F7, R15 -1f02389e| FCVTZSS F16, ZR -6302781e| FCVTZSDW F19, R3 -e700789e| FCVTZSD F7, R7 -4900391e| FCVTZUSW F2, R9 -9d01399e| FCVTZUS F12, R29 -7603791e| FCVTZUDW F27, R22 -3603799e| FCVTZUD F25, R22 -5419301e| FDIVS F16, F10, F20 -3e1b6b1e| FDIVD F11, F25, F30 -01090f1f| FMADDS F15, F2, F8, F1 -29574f1f| FMADDD F15, F21, F25, F9 -9b4b251e| FMAXS F5, F28, F27 -ff4b6c1e| FMAXD F12, F31, F31 -0c6b2b1e| FMAXNMS F11, F24, F12 -d068741e| FMAXNMD F20, F6, F16 -5e5a3a1e| FMINS F26, F18, F30 -95587d1e| FMIND F29, F4, F21 -817a371e| FMINNMS F23, F20, F1 -7878681e| FMINNMD F8, F3, F24 -8ece3d0e| VFMLA V29.S2, V20.S2, V14.S2 -71cfbd0e| VFMLS V29.S2, V27.S2, V17.S2 -4f00669e| FMOVD F2, R15 -6b00679e| FMOVD R3, F11 -9d02261e| FMOVS F20, R29 -0f01271e| FMOVS R8, F15 -4940601e| FMOVD F2, F9 -9b40201e| FMOVS F4, F27 -b3d50d1f| FMSUBS F13, F21, F13, F19 -ff9d4b1f| FMSUBD F11, F7, F15, F31 -d808201e| FMULS F0, F6, F24 -a90b651e| FMULD F5, F29, F9 -0542211e| FNEGS F16, F5 -ff43611e| FNEGD F31, F31 -d458311f| FNMADDS F17, F22, F6, F20 -54036f1f| FNMADDD F15, F0, F26, F20 -6ec32e1f| FNMSUBS F14, F16, F27, F14 -0ae57d1f| FNMSUBD F29, F25, F8, F10 -d28a381e| FNMULS F24, F22, F18 -c78b6e1e| FNMULD F14, F30, F7 -1540261e| FRINTAS F0, F21 -1641661e| FRINTAD F8, F22 -31c2271e| FRINTIS F17, F17 -2fc1671e| FRINTID F9, F15 -1043251e| FRINTMS F24, F16 -a240651e| FRINTMD F5, F2 -4e43241e| FRINTNS F26, F14 -8c43641e| FRINTND F28, F12 -64c3241e| FRINTPS F27, F4 -d6c0641e| FRINTPD F6, F22 -4a43271e| FRINTXS F26, F10 -0c42671e| FRINTXD F16, F12 -7cc0251e| FRINTZS F3, F28 -06c3651e| FRINTZD F24, F6 -09c0211e| FSQRTS F0, F9 -dbc1611e| FSQRTD F14, F27 -e03a391e| FSUBS F25, F23, F0 -b8396b1e| FSUBD F11, F13, F24 -7000221e| SCVTFWS R3, F16 -8402621e| SCVTFWD R20, F4 -0c02229e| SCVTFS R16, F12 -4e03629e| SCVTFD R26, F14 -c400231e| UCVTFWS R6, F4 -5701631e| UCVTFWD R10, F23 -1d03239e| UCVTFS R24, F29 -8b02639e| UCVTFD R20, F11 -6e86f05e| VADD V16, V19, V14 -4986654e| VADD V5.H8, V18.H8, V9.H8 -31bf674e| VADDP V7.H8, V25.H8, V17.H8 -60b8714e| VADDV V3.H8, V0 -d35a284e| AESD V22.B16, V19.B16 -fd4b284e| AESE V31.B16, V29.B16 -9b79284e| AESIMC V12.B16, V27.B16 -dc69284e| AESMC V14.B16, V28.B16 -891c244e| VAND V4.B16, V4.B16, V9.B16 -ac8db86e| VCMEQ V24.S4, V13.S4, V12.S4 -ab59200e| VCNT V13.B8, V11.B8 -f2071f5e| VMOV V31.B[15], V18 -f4071b4e| VDUP V31.B[13], V20.B16 -471e242e| VEOR V4.B8, V18.B8, V7.B8 -2320022e| VEXT $4, V2.B8, V1.B8, V3.B8 -2340026e| VEXT $8, V2.B16, V1.B16, V3.B16 -705d196e| VMOV V11.B[11], V16.B[12] -951e054e| VMOV R20, V21.B[2] -5570404c| VLD1 (R2), [V21.B16] -126f400c| VLD1 (R24), [V18.D1, V19.D1, V20.D1] -ae2f400c| VLD1 (R29), [V14.D1, V15.D1, V16.D1, V17.D1] -e172df4c| VLD1.P 16(R23), [V1.B16] -df7ccb0c| VLD1.P (R6)(R11), [V31.D1] -ffacdf0c| VLD1.P 16(R7), [V31.D1, V0.D1] -78a2c40c| VLD1.P (R19)(R4), [V24.B8, V25.B8] -8766c84c| VLD1.P (R20)(R8), [V7.H8, V8.H8, V9.H8] -c523df0c| VLD1.P 32(R30), [V5.B8, V6.B8, V7.B8, V8.B8] -4e1e404d| VLD1 (R18), V14.B[15] -a04b400d| VLD1 (R29), V0.H[1] -6283400d| VLD1 (R27), V2.S[0] -a586404d| VLD1 (R21), V5.D[1] -4a1adf4d| VLD1.P 1(R18), V10.B[14] -700cce4d| VLD1.P (R3)(R14), V16.B[11] -3c50df0d| VLD1.P 2(R1), V28.H[2] -a951d40d| VLD1.P (R13)(R20), V9.H[2] -2192df4d| VLD1.P 4(R17), V1.S[3] -d181c24d| VLD1.P (R14)(R2), V17.S[2] -be84df4d| VLD1.P 8(R5), V30.D[1] -7b87cd0d| VLD1.P (R27)(R13), V27.D[0] -e8375ebc| FMOVS.P -29(RSP), F8 -bc7f44bc| FMOVS.W 71(R29), F28 -971058bd| FMOVS 6160(R4), F23 -5b06155e| VMOV V18.B[10], V27 -9c15196e| VMOV V12.B[2], V28.B[12] -c41f1b4e| VMOV R30, V4.B[13] -441ca24e| VMOV V2.B16, V4.B16 -b43d040e| VMOV V13.S[0], R20 -b43d084e| VMOV V13.D[0], R20 -56e6044f| VMOVI $146, V22.B16 -cf1eb94e| VORR V25.B16, V22.B16, V15.B16 -23e0e20e| VPMULL V2.D1, V1.D1, V3.Q1 -24e0e24e| VPMULL2 V2.D2, V1.D2, V4.Q1 -23e0220e| VPMULL V2.B8, V1.B8, V3.H8 -24e0224e| VPMULL2 V2.B16, V1.B16, V4.H8 -5559606e| VRBIT V10.B16, V21.B16 -4108606e| VREV32 V2.H8, V1.H8 -d100221e| SCVTFWS R6, F17 -6f00621e| SCVTFWD R3, F15 -9902229e| SCVTFS R20, F25 -a901629e| SCVTFD R13, F9 -0201085e| SHA1C V8.S4, V8, V2 -390a285e| SHA1H V17, V25 -7b23005e| SHA1M V0.S4, V27, V27 -9b12035e| SHA1P V3.S4, V20, V27 -b031115e| SHA1SU0 V17.S4, V13.S4, V16.S4 -171b285e| SHA1SU1 V24.S4, V23.S4 -0b52065e| SHA256H2 V6.S4, V16, V11 -4b40045e| SHA256H V4.S4, V2, V11 -1028285e| SHA256SU0 V0.S4, V16.S4 -6f601f5e| SHA256SU1 V31.S4, V3.S4, V15.S4 -d956474f| VSHL $7, V22.D2, V25.D2 -6e67000c| VST1 [V14.H4, V15.H4, V16.H4], (R27) -c229004c| VST1 [V2.S4, V3.S4, V4.S4, V5.S4], (R14) -f9789d4c| VST1.P [V25.S4], (R7)(R29) -f9ac9f4c| VST1.P [V25.D2, V26.D2], 32(R7) -eeac970c| VST1.P [V14.D1, V15.D1], (R7)(R23) -796f9f4c| VST1.P [V25.D2, V26.D2, V27.D2], 48(R27) -6d648e4c| VST1.P [V13.H8, V14.H8, V15.H8], (R3)(R14) -d0289f4c| VST1.P [V16.S4, V17.S4, V18.S4, V19.S4], 64(R6) -9324900c| VST1.P [V19.H4, V20.H4, V21.H4, V22.H4], (R4)(R16) -2c0c000d| VST1 V12.B[3], (R1) -2c0c000d| VST1 V12.B[3], (R1) -9982004d| VST1 V25.S[2], (R20) -e987004d| VST1 V9.D[1], (RSP) -7e189f0d| VST1.P V30.B[6], 1(R3) -6800950d| VST1.P V8.B[0], (R3)(R21) -4f499f4d| VST1.P V15.H[5], 2(R10) -e15a8b4d| VST1.P V1.H[7], (R23)(R11) -7a819f0d| VST1.P V26.S[0], 4(R11) -0992950d| VST1.P V9.S[1], (R16)(R21) -30859f0d| VST1.P V16.D[0], 8(R9) -b786904d| VST1.P V23.D[1], (R21)(R16) -9785e17e| VSUB V1, V12, V23 -eb3bb06e| VUADDLV V31.S4, V11 -7301231e| UCVTFWS R11, F19 -4d03631e| UCVTFWD R26, F13 -eb02239e| UCVTFS R23, F11 -bd00639e| UCVTFD R5, F29 -0b3c030e| VMOV V0.B[1], R11 -2c3c0e0e| VMOV V1.H[3], R12 -d7061a6f| VUSHR $6, V22.H8, V23.H8 diff --git a/src/cmd/vendor/golang.org/x/arch/ppc64/ppc64asm/decode_test.go b/src/cmd/vendor/golang.org/x/arch/ppc64/ppc64asm/decode_test.go deleted file mode 100644 index 039b3edfa0ad07..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/ppc64/ppc64asm/decode_test.go +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2014 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. - -package ppc64asm - -import ( - "encoding/binary" - "encoding/hex" - "io/ioutil" - "strings" - "testing" -) - -func TestDecode(t *testing.T) { - data, err := ioutil.ReadFile("testdata/decode.txt") - if err != nil { - t.Fatal(err) - } - all := string(data) - for strings.Contains(all, "\t\t") { - all = strings.Replace(all, "\t\t", "\t", -1) - } - for _, line := range strings.Split(all, "\n") { - line = strings.TrimSpace(line) - if line == "" || strings.HasPrefix(line, "#") { - continue - } - f := strings.SplitN(line, "\t", 3) - i := strings.Index(f[0], "|") - if i < 0 { - t.Errorf("parsing %q: missing | separator", f[0]) - continue - } - if i%2 != 0 { - t.Errorf("parsing %q: misaligned | separator", f[0]) - } - size := i / 2 - code, err := hex.DecodeString(f[0][:i] + f[0][i+1:]) - if err != nil { - t.Errorf("parsing %q: %v", f[0], err) - continue - } - syntax, asm := f[1], f[2] - inst, err := Decode(code, binary.BigEndian) - var out string - if err != nil { - out = "error: " + err.Error() - } else { - switch syntax { - case "gnu": - out = GNUSyntax(inst) - case "plan9": - out = GoSyntax(inst, 0, nil) - default: - t.Errorf("unknown syntax %q", syntax) - continue - } - } - if out != asm || inst.Len != size { - t.Errorf("Decode(%s) [%s] = %s want %s", f[0], syntax, out, asm) - } - } -} diff --git a/src/cmd/vendor/golang.org/x/arch/ppc64/ppc64asm/ext_test.go b/src/cmd/vendor/golang.org/x/arch/ppc64/ppc64asm/ext_test.go deleted file mode 100644 index cb7f3195fbccd3..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/ppc64/ppc64asm/ext_test.go +++ /dev/null @@ -1,536 +0,0 @@ -// Copyright 2014 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. - -// Support for testing against external disassembler program. -// Copied and simplified from rsc.io/arm/armasm/ext_test.go. - -package ppc64asm - -import ( - "bufio" - "bytes" - "encoding/binary" - "encoding/hex" - "flag" - "fmt" - "io" - "io/ioutil" - "log" - "math/rand" - "os" - "os/exec" - "regexp" - "runtime" - "strings" - "testing" - "time" -) - -var ( - printTests = flag.Bool("printtests", false, "print test cases that exercise new code paths") - dumpTest = flag.Bool("dump", false, "dump all encodings") - mismatch = flag.Bool("mismatch", false, "log allowed mismatches") - longTest = flag.Bool("long", false, "long test") - keep = flag.Bool("keep", false, "keep object files around") - debug = false -) - -// An ExtInst represents a single decoded instruction parsed -// from an external disassembler's output. -type ExtInst struct { - addr uint32 - enc [4]byte - nenc int - text string -} - -func (r ExtInst) String() string { - return fmt.Sprintf("%#x: % x: %s", r.addr, r.enc, r.text) -} - -// An ExtDis is a connection between an external disassembler and a test. -type ExtDis struct { - Dec chan ExtInst - File *os.File - Size int - KeepFile bool - Cmd *exec.Cmd -} - -// Run runs the given command - the external disassembler - and returns -// a buffered reader of its standard output. -func (ext *ExtDis) Run(cmd ...string) (*bufio.Reader, error) { - if *keep { - log.Printf("%s\n", strings.Join(cmd, " ")) - } - ext.Cmd = exec.Command(cmd[0], cmd[1:]...) - out, err := ext.Cmd.StdoutPipe() - if err != nil { - return nil, fmt.Errorf("stdoutpipe: %v", err) - } - if err := ext.Cmd.Start(); err != nil { - return nil, fmt.Errorf("exec: %v", err) - } - - b := bufio.NewReaderSize(out, 1<<20) - return b, nil -} - -// Wait waits for the command started with Run to exit. -func (ext *ExtDis) Wait() error { - return ext.Cmd.Wait() -} - -// testExtDis tests a set of byte sequences against an external disassembler. -// The disassembler is expected to produce the given syntax and be run -// in the given architecture mode (16, 32, or 64-bit). -// The extdis function must start the external disassembler -// and then parse its output, sending the parsed instructions on ext.Dec. -// The generate function calls its argument f once for each byte sequence -// to be tested. The generate function itself will be called twice, and it must -// make the same sequence of calls to f each time. -// When a disassembly does not match the internal decoding, -// allowedMismatch determines whether this mismatch should be -// allowed, or else considered an error. -func testExtDis( - t *testing.T, - syntax string, - extdis func(ext *ExtDis) error, - generate func(f func([]byte)), - allowedMismatch func(text string, size int, inst *Inst, dec ExtInst) bool, -) { - start := time.Now() - ext := &ExtDis{ - Dec: make(chan ExtInst), - } - errc := make(chan error) - - // First pass: write instructions to input file for external disassembler. - file, f, size, err := writeInst(generate) - if err != nil { - t.Fatal(err) - } - ext.Size = size - ext.File = f - defer func() { - f.Close() - if !*keep { - os.Remove(file) - } - }() - - // Second pass: compare disassembly against our decodings. - var ( - totalTests = 0 - totalSkips = 0 - totalErrors = 0 - - errors = make([]string, 0, 100) // sampled errors, at most cap - ) - go func() { - errc <- extdis(ext) - }() - generate(func(enc []byte) { - dec, ok := <-ext.Dec - if !ok { - t.Errorf("decoding stream ended early") - return - } - inst, text := disasm(syntax, pad(enc)) - totalTests++ - if *dumpTest { - fmt.Printf("%x -> %s [%d]\n", enc[:len(enc)], dec.text, dec.nenc) - } - if text != dec.text || inst.Len != dec.nenc { - suffix := "" - if allowedMismatch(text, size, &inst, dec) { - totalSkips++ - if !*mismatch { - return - } - suffix += " (allowed mismatch)" - } - totalErrors++ - if len(errors) >= cap(errors) { - j := rand.Intn(totalErrors) - if j >= cap(errors) { - return - } - errors = append(errors[:j], errors[j+1:]...) - } - errors = append(errors, fmt.Sprintf("decode(%x) = %q, %d, want %q, %d%s", enc, text, inst.Len, dec.text, dec.nenc, suffix)) - } - }) - - if *mismatch { - totalErrors -= totalSkips - } - - for _, b := range errors { - t.Log(b) - } - - if totalErrors > 0 { - t.Fail() - } - t.Logf("%d test cases, %d expected mismatches, %d failures; %.0f cases/second", totalTests, totalSkips, totalErrors, float64(totalTests)/time.Since(start).Seconds()) - - if err := <-errc; err != nil { - t.Fatalf("external disassembler: %v", err) - } - -} - -const start = 0x8000 // start address of text - -// writeInst writes the generated byte sequences to a new file -// starting at offset start. That file is intended to be the input to -// the external disassembler. -func writeInst(generate func(func([]byte))) (file string, f *os.File, size int, err error) { - f, err = ioutil.TempFile("", "ppc64asm") - if err != nil { - return - } - - file = f.Name() - - f.Seek(start, io.SeekStart) - w := bufio.NewWriter(f) - defer w.Flush() - size = 0 - generate(func(x []byte) { - if len(x) > 4 { - x = x[:4] - } - if debug { - fmt.Printf("%#x: %x%x\n", start+size, x, zeros[len(x):]) - } - w.Write(x) - w.Write(zeros[len(x):]) - size += len(zeros) - }) - return file, f, size, nil -} - -var zeros = []byte{0, 0, 0, 0} - -// pad pads the code sequence with pops. -func pad(enc []byte) []byte { - if len(enc) < 4 { - enc = append(enc[:len(enc):len(enc)], zeros[:4-len(enc)]...) - } - return enc -} - -// disasm returns the decoded instruction and text -// for the given source bytes, using the given syntax and mode. -func disasm(syntax string, src []byte) (inst Inst, text string) { - // If printTests is set, we record the coverage value - // before and after, and we write out the inputs for which - // coverage went up, in the format expected in testdata/decode.text. - // This produces a fairly small set of test cases that exercise nearly - // all the code. - var cover float64 - if *printTests { - cover -= coverage() - } - - inst, err := Decode(src, binary.BigEndian) - if err != nil { - text = "error: " + err.Error() - } else { - text = inst.String() - switch syntax { - //case "arm": - // text = ARMSyntax(inst) - case "gnu": - text = GNUSyntax(inst) - //case "plan9": - // text = GoSyntax(inst, 0, nil) - default: - text = "error: unknown syntax " + syntax - } - } - - if *printTests { - cover += coverage() - if cover > 0 { - max := len(src) - if max > 4 && inst.Len <= 4 { - max = 4 - } - fmt.Printf("%x|%x\t%s\t%s\n", src[:inst.Len], src[inst.Len:max], syntax, text) - } - } - - return -} - -// coverage returns a floating point number denoting the -// test coverage until now. The number increases when new code paths are exercised, -// both in the Go program and in the decoder byte code. -func coverage() float64 { - var f float64 - f += testing.Coverage() - f += decodeCoverage() - return f -} - -func decodeCoverage() float64 { - n := 0 - for _, t := range decoderCover { - if t { - n++ - } - } - return float64(1+n) / float64(1+len(decoderCover)) -} - -// Helpers for writing disassembler output parsers. - -// hasPrefix reports whether any of the space-separated words in the text s -// begins with any of the given prefixes. -func hasPrefix(s string, prefixes ...string) bool { - for _, prefix := range prefixes { - for s := s; s != ""; { - if strings.HasPrefix(s, prefix) { - return true - } - i := strings.Index(s, " ") - if i < 0 { - break - } - s = s[i+1:] - } - } - return false -} - -// contains reports whether the text s contains any of the given substrings. -func contains(s string, substrings ...string) bool { - for _, sub := range substrings { - if strings.Contains(s, sub) { - return true - } - } - return false -} - -// isHex reports whether b is a hexadecimal character (0-9A-Fa-f). -func isHex(b byte) bool { return b == '0' || unhex[b] > 0 } - -// parseHex parses the hexadecimal byte dump in hex, -// appending the parsed bytes to raw and returning the updated slice. -// The returned bool signals whether any invalid hex was found. -// Spaces and tabs between bytes are okay but any other non-hex is not. -func parseHex(hex []byte, raw []byte) ([]byte, bool) { - hex = trimSpace(hex) - for j := 0; j < len(hex); { - for hex[j] == ' ' || hex[j] == '\t' { - j++ - } - if j >= len(hex) { - break - } - if j+2 > len(hex) || !isHex(hex[j]) || !isHex(hex[j+1]) { - return nil, false - } - raw = append(raw, unhex[hex[j]]<<4|unhex[hex[j+1]]) - j += 2 - } - return raw, true -} - -var unhex = [256]byte{ - '0': 0, - '1': 1, - '2': 2, - '3': 3, - '4': 4, - '5': 5, - '6': 6, - '7': 7, - '8': 8, - '9': 9, - 'A': 10, - 'B': 11, - 'C': 12, - 'D': 13, - 'E': 14, - 'F': 15, - 'a': 10, - 'b': 11, - 'c': 12, - 'd': 13, - 'e': 14, - 'f': 15, -} - -// index is like bytes.Index(s, []byte(t)) but avoids the allocation. -func index(s []byte, t string) int { - i := 0 - for { - j := bytes.IndexByte(s[i:], t[0]) - if j < 0 { - return -1 - } - i = i + j - if i+len(t) > len(s) { - return -1 - } - for k := 1; k < len(t); k++ { - if s[i+k] != t[k] { - goto nomatch - } - } - return i - nomatch: - i++ - } -} - -// fixSpace rewrites runs of spaces, tabs, and newline characters into single spaces in s. -// If s must be rewritten, it is rewritten in place. -func fixSpace(s []byte) []byte { - s = trimSpace(s) - for i := 0; i < len(s); i++ { - if s[i] == '\t' || s[i] == '\n' || i > 0 && s[i] == ' ' && s[i-1] == ' ' { - goto Fix - } - } - return s - -Fix: - b := s - w := 0 - for i := 0; i < len(s); i++ { - c := s[i] - if c == '\t' || c == '\n' { - c = ' ' - } - if c == ' ' && w > 0 && b[w-1] == ' ' { - continue - } - b[w] = c - w++ - } - if w > 0 && b[w-1] == ' ' { - w-- - } - return b[:w] -} - -// trimSpace trims leading and trailing space from s, returning a subslice of s. -func trimSpace(s []byte) []byte { - j := len(s) - for j > 0 && (s[j-1] == ' ' || s[j-1] == '\t' || s[j-1] == '\n') { - j-- - } - i := 0 - for i < j && (s[i] == ' ' || s[i] == '\t') { - i++ - } - return s[i:j] -} - -// pcrel matches instructions using relative addressing mode. -var ( - pcrel = regexp.MustCompile(`^((?:.* )?(?:b|bc)[^ac ]* (?:(?:[0-9]{1,2},)|(?:[0-7]\*)|\+|lt|gt|eq|so|cr[0-7]|,)*)0x([0-9a-f]+)$`) -) - -// Generators. -// -// The test cases are described as functions that invoke a callback repeatedly, -// with a new input sequence each time. These helpers make writing those -// a little easier. - -// randomCases generates random instructions. -func randomCases(t *testing.T) func(func([]byte)) { - return func(try func([]byte)) { - // All the strides are relatively prime to 2 and therefore to 2²⁸, - // so we will not repeat any instructions until we have tried all 2²⁸. - // Using a stride other than 1 is meant to visit the instructions in a - // pseudorandom order, which gives better variety in the set of - // test cases chosen by -printtests. - stride := uint32(10007) - n := 1 << 28 / 7 - if testing.Short() { - stride = 100003 - n = 1 << 28 / 1001 - } else if *longTest { - stride = 2000033 - n = 1 << 29 - } - x := uint32(0) - for i := 0; i < n; i++ { - enc := (x%15)<<28 | x&(1<<28-1) - try([]byte{byte(enc), byte(enc >> 8), byte(enc >> 16), byte(enc >> 24)}) - x += stride - } - } -} - -// hexCases generates the cases written in hexadecimal in the encoded string. -// Spaces in 'encoded' separate entire test cases, not individual bytes. -func hexCases(t *testing.T, encoded string) func(func([]byte)) { - return func(try func([]byte)) { - for _, x := range strings.Fields(encoded) { - src, err := hex.DecodeString(x) - if err != nil { - t.Errorf("parsing %q: %v", x, err) - } - try(src) - } - } -} - -// testdataCases generates the test cases recorded in testdata/decode.txt. -// It only uses the inputs; it ignores the answers recorded in that file. -func testdataCases(t *testing.T) func(func([]byte)) { - var codes [][]byte - data, err := ioutil.ReadFile("testdata/decode.txt") - if err != nil { - t.Fatal(err) - } - for _, line := range strings.Split(string(data), "\n") { - line = strings.TrimSpace(line) - if line == "" || strings.HasPrefix(line, "#") { - continue - } - f := strings.Fields(line)[0] - i := strings.Index(f, "|") - if i < 0 { - t.Errorf("parsing %q: missing | separator", f) - continue - } - if i%2 != 0 { - t.Errorf("parsing %q: misaligned | separator", f) - } - code, err := hex.DecodeString(f[:i] + f[i+1:]) - if err != nil { - t.Errorf("parsing %q: %v", f, err) - continue - } - codes = append(codes, code) - } - - return func(try func([]byte)) { - for _, code := range codes { - try(code) - } - } -} - -func caller(skip int) string { - pc, _, _, _ := runtime.Caller(skip) - f := runtime.FuncForPC(pc) - name := "?" - if f != nil { - name = f.Name() - if i := strings.LastIndex(name, "."); i >= 0 { - name = name[i+1:] - } - } - return name -} diff --git a/src/cmd/vendor/golang.org/x/arch/ppc64/ppc64asm/field_test.go b/src/cmd/vendor/golang.org/x/arch/ppc64/ppc64asm/field_test.go deleted file mode 100644 index 14eb2f8e4e6317..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/ppc64/ppc64asm/field_test.go +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2014 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. - -package ppc64asm - -import ( - "testing" -) - -func panicOrNot(f func()) (panicked bool) { - defer func() { - if err := recover(); err != nil { - panicked = true - } - }() - f() - return false -} - -func TestBitField(t *testing.T) { - var tests = []struct { - b BitField - i uint32 // input - u uint32 // unsigned output - s int32 // signed output - fail bool // if the check should panic - }{ - {BitField{0, 0}, 0, 0, 0, true}, - {BitField{31, 2}, 0, 0, 0, true}, - {BitField{31, 1}, 1, 1, -1, false}, - {BitField{29, 2}, 0 << 1, 0, 0, false}, - {BitField{29, 2}, 1 << 1, 1, 1, false}, - {BitField{29, 2}, 2 << 1, 2, -2, false}, - {BitField{29, 2}, 3 << 1, 3, -1, false}, - {BitField{0, 32}, 1<<32 - 1, 1<<32 - 1, -1, false}, - {BitField{16, 3}, 1 << 15, 4, -4, false}, - } - for i, tst := range tests { - var ( - ou uint32 - os int32 - ) - failed := panicOrNot(func() { - ou = tst.b.Parse(tst.i) - os = tst.b.ParseSigned(tst.i) - }) - if failed != tst.fail { - t.Errorf("case %d: %v: fail test failed, got %v, expected %v", i, tst.b, failed, tst.fail) - continue - } - if ou != tst.u { - t.Errorf("case %d: %v.Parse(%d) returned %d, expected %d", i, tst.b, tst.i, ou, tst.u) - continue - } - if os != tst.s { - t.Errorf("case %d: %v.ParseSigned(%d) returned %d, expected %d", i, tst.b, tst.i, os, tst.s) - } - } -} diff --git a/src/cmd/vendor/golang.org/x/arch/ppc64/ppc64asm/objdump_test.go b/src/cmd/vendor/golang.org/x/arch/ppc64/ppc64asm/objdump_test.go deleted file mode 100644 index b886f7bad1a501..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/ppc64/ppc64asm/objdump_test.go +++ /dev/null @@ -1,133 +0,0 @@ -// Copyright 2014 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. - -package ppc64asm - -import ( - "encoding/binary" - "strings" - "testing" -) - -func TestObjdumpPowerTestdata(t *testing.T) { testObjdump(t, testdataCases(t)) } -func TestObjdumpPowerManual(t *testing.T) { testObjdump(t, hexCases(t, objdumpManualTests)) } - -// Disable this for now since generating all possible bit combinations within a word -// generates lots of ppc64x instructions not possible with golang so not worth supporting.. -//func TestObjdumpPowerRandom(t *testing.T) { testObjdump(t, randomCases(t)) } - -// objdumpManualTests holds test cases that will be run by TestObjdumpARMManual. -// If you are debugging a few cases that turned up in a longer run, it can be useful -// to list them here and then use -run=Manual, particularly with tracing enabled. -// Note that these are byte sequences, so they must be reversed from the usual -// word presentation. -var objdumpManualTests = ` -6d746162 -4c040000 -88000017 -` - -// allowedMismatchObjdump reports whether the mismatch between text and dec -// should be allowed by the test. -func allowedMismatchObjdump(text string, size int, inst *Inst, dec ExtInst) bool { - if hasPrefix(dec.text, deleted...) { - return true - } - - // we support more instructions than binutils - if strings.Contains(dec.text, ".long") { - return true - } - - if hasPrefix(text, "error:") { - if hasPrefix(dec.text, unsupported...) { - return true - } - } - - switch inst.Op { - case BC, BCA, BL, BLA, BCL, BCLA, TDI, TWI, TW, TD: - return true // TODO(minux): we lack the support for extended opcodes here - case RLWNM, RLWNMCC, RLDICL, RLDICLCC, RLWINM, RLWINMCC, RLDCL, RLDCLCC: - return true // TODO(minux): we lack the support for extended opcodes here - case DCBTST, DCBT: - return true // objdump uses the embedded argument order, we use the server argument order - case MTFSF, MTFSFCC: // objdump doesn't show the last two arguments - return true - case VSPLTB, VSPLTH, VSPLTW: // objdump generates unreasonable result "vspltw v6,v19,4" for 10c49a8c, the last 4 should be 0. - return true - } - if hasPrefix(text, "evm", "evl", "efs") { // objdump will disassemble them wrong (e.g. evmhoumia as vsldoi) - return true - } - - if len(dec.enc) >= 4 { - _ = binary.BigEndian.Uint32(dec.enc[:4]) - } - - return false -} - -// Instructions known to libopcodes (or xed) but not to us. -// TODO(minux): those single precision instructions are missing from ppc64.csv -// those data cache instructions are deprecated, but must be treated as no-ops, see 4.3.2.1 pg. 774. -var unsupported = strings.Fields(` -fmsubs -fmsubs. -fnmadds -fnmadds. -fnmsubs -fnmsubs. -fmuls -fmuls. -fdivs -fdivs. -fadds -fadds. -fsubs -fsubs. -dst -dstst -dssall -`) - -// Instructions explicitly dropped in Power ISA that were in POWER architecture. -// See A.30 Deleted Instructions and A.31 Discontiued Opcodes -var deleted = strings.Fields(` -abs -clcs -clf -cli -dclst -div -divs -doz -dozi -lscbx -maskg -maskir -mfsri -mul -nabs -rac -rfi -rfsvc -rlmi -rrib -sle -sleq -sliq -slliq -sllq -slq -sraiq -sraq -sre -srea -sreq -sriq -srliq -srlq -srq -maskg`) diff --git a/src/cmd/vendor/golang.org/x/arch/ppc64/ppc64asm/objdumpext_test.go b/src/cmd/vendor/golang.org/x/arch/ppc64/ppc64asm/objdumpext_test.go deleted file mode 100644 index d4f8fc8808d9cf..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/ppc64/ppc64asm/objdumpext_test.go +++ /dev/null @@ -1,255 +0,0 @@ -// Copyright 2014 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. - -// Copied and simplified from rsc.io/arm/armasm/objdumpext_test.go. - -package ppc64asm - -import ( - "bytes" - "debug/elf" - "encoding/binary" - "fmt" - "io" - "log" - "os" - "runtime" - "strconv" - "strings" - "testing" -) - -const objdumpPath = "/usr/bin/objdump" - -func testObjdump(t *testing.T, generate func(func([]byte))) { - if testing.Short() { - t.Skip("skipping objdump test in short mode") - } - if runtime.GOARCH != "ppc64le" && runtime.GOARCH != "ppc64" { - t.Skip("skipping; test requires host tool objdump for ppc64 or ppc64le") - } - if _, err := os.Stat(objdumpPath); err != nil { - t.Skip(err) - } - - testExtDis(t, "gnu", objdump, generate, allowedMismatchObjdump) -} - -func objdump(ext *ExtDis) error { - // File already written with instructions; add ELF header. - if err := writeELF64(ext.File, ext.Size); err != nil { - return err - } - - b, err := ext.Run(objdumpPath, "-d", "-z", ext.File.Name()) - if err != nil { - return err - } - - var ( - nmatch int - reading bool - next uint32 = start - addr uint32 - encbuf [4]byte - enc []byte - text string - ) - flush := func() { - if addr == next { - if m := pcrel.FindStringSubmatch(text); m != nil { - targ, _ := strconv.ParseUint(m[2], 16, 64) - text = fmt.Sprintf("%s.%+#x", m[1], int32(uint32(targ)-addr)) - } - if strings.HasPrefix(text, "stmia") { - text = "stm" + text[5:] - } - if strings.HasPrefix(text, "stmfd") { - text = "stmdb" + text[5:] - } - if strings.HasPrefix(text, "ldmfd") { - text = "ldm" + text[5:] - } - text = strings.Replace(text, "#0.0", "#0", -1) - if text == "undefined" && len(enc) == 4 { - text = "error: unknown instruction" - enc = nil - } - if len(enc) == 4 { - // prints as word but we want to record bytes - enc[0], enc[3] = enc[3], enc[0] - enc[1], enc[2] = enc[2], enc[1] - } - ext.Dec <- ExtInst{addr, encbuf, len(enc), text} - encbuf = [4]byte{} - enc = nil - next += 4 - } - } - var textangle = []byte("<.text>:") - for { - line, err := b.ReadSlice('\n') - if err != nil { - if err == io.EOF { - break - } - return fmt.Errorf("reading objdump output: %v", err) - } - if bytes.Contains(line, textangle) { - reading = true - continue - } - if !reading { - continue - } - if debug { - os.Stdout.Write(line) - } - if enc1 := parseContinuation(line, encbuf[:len(enc)]); enc1 != nil { - enc = enc1 - continue - } - flush() - nmatch++ - addr, enc, text = parseLine(line, encbuf[:0]) - if addr > next { - return fmt.Errorf("address out of sync expected <= %#x at %q in:\n%s", next, line, line) - } - } - flush() - if next != start+uint32(ext.Size) { - return fmt.Errorf("not enough results found [%d %d]", next, start+ext.Size) - } - if err := ext.Wait(); err != nil { - return fmt.Errorf("exec: %v", err) - } - - return nil -} - -var ( - undefined = []byte("") - unpredictable = []byte("") - illegalShifter = []byte("") -) - -func parseLine(line []byte, encstart []byte) (addr uint32, enc []byte, text string) { - oline := line - i := index(line, ":\t") - if i < 0 { - log.Fatalf("cannot parse disassembly: %q", oline) - } - x, err := strconv.ParseUint(string(trimSpace(line[:i])), 16, 32) - if err != nil { - log.Fatalf("cannot parse disassembly: %q", oline) - } - addr = uint32(x) - line = line[i+2:] - i = bytes.IndexByte(line, '\t') - if i < 0 { - log.Fatalf("cannot parse disassembly: %q", oline) - } - enc, ok := parseHex(line[:i], encstart) - if !ok { - log.Fatalf("cannot parse disassembly: %q", oline) - } - line = trimSpace(line[i:]) - if bytes.Contains(line, undefined) { - text = "undefined" - return - } - if bytes.Contains(line, illegalShifter) { - text = "undefined" - return - } - if false && bytes.Contains(line, unpredictable) { - text = "unpredictable" - return - } - if i := bytes.IndexByte(line, ';'); i >= 0 { - line = trimSpace(line[:i]) - } - text = string(fixSpace(line)) - return -} - -func parseContinuation(line []byte, enc []byte) []byte { - i := index(line, ":\t") - if i < 0 { - return nil - } - line = line[i+1:] - enc, _ = parseHex(line, enc) - return enc -} - -// writeELF64 writes an ELF64 header to the file, -// describing a text segment that starts at start -// and extends for size bytes. -func writeELF64(f *os.File, size int) error { - f.Seek(0, io.SeekStart) - var hdr elf.Header64 - var prog elf.Prog64 - var sect elf.Section64 - var buf bytes.Buffer - binary.Write(&buf, binary.BigEndian, &hdr) - off1 := buf.Len() - binary.Write(&buf, binary.BigEndian, &prog) - off2 := buf.Len() - binary.Write(&buf, binary.BigEndian, §) - off3 := buf.Len() - buf.Reset() - data := byte(elf.ELFDATA2MSB) - hdr = elf.Header64{ - Ident: [16]byte{0x7F, 'E', 'L', 'F', 2, data, 1}, - Type: 2, - Machine: uint16(elf.EM_PPC64), - Version: 1, - Entry: start, - Phoff: uint64(off1), - Shoff: uint64(off2), - Flags: 0x05000002, - Ehsize: uint16(off1), - Phentsize: uint16(off2 - off1), - Phnum: 1, - Shentsize: uint16(off3 - off2), - Shnum: 3, - Shstrndx: 2, - } - binary.Write(&buf, binary.BigEndian, &hdr) - prog = elf.Prog64{ - Type: 1, - Off: start, - Vaddr: start, - Paddr: start, - Filesz: uint64(size), - Memsz: uint64(size), - Flags: 5, - Align: start, - } - binary.Write(&buf, binary.BigEndian, &prog) - binary.Write(&buf, binary.BigEndian, §) // NULL section - sect = elf.Section64{ - Name: 1, - Type: uint32(elf.SHT_PROGBITS), - Addr: start, - Off: start, - Size: uint64(size), - Flags: uint64(elf.SHF_ALLOC | elf.SHF_EXECINSTR), - Addralign: 4, - } - binary.Write(&buf, binary.BigEndian, §) // .text - sect = elf.Section64{ - Name: uint32(len("\x00.text\x00")), - Type: uint32(elf.SHT_STRTAB), - Addr: 0, - Off: uint64(off2 + (off3-off2)*3), - Size: uint64(len("\x00.text\x00.shstrtab\x00")), - Addralign: 1, - } - binary.Write(&buf, binary.BigEndian, §) - buf.WriteString("\x00.text\x00.shstrtab\x00") - f.Write(buf.Bytes()) - return nil -} diff --git a/src/cmd/vendor/golang.org/x/arch/ppc64/ppc64asm/testdata/decode.txt b/src/cmd/vendor/golang.org/x/arch/ppc64/ppc64asm/testdata/decode.txt deleted file mode 100644 index 2a89de04c91326..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/ppc64/ppc64asm/testdata/decode.txt +++ /dev/null @@ -1,56 +0,0 @@ -6d746162| gnu xoris r20,r11,24930 -6d746162| plan9 XORIS R11,$24930,R20 -4c040000| gnu mcrf cr0,cr1 -88a70002| gnu lbz r5,2(r7) -88a70002| plan9 MOVBZ 2(R7),R5 -00000000| plan9 WORD $0 -00010000| plan9 error: unknown instruction -00000000| gnu .long 0x0 -00002000| gnu error: unknown instruction -a1841e80| gnu lhz r12,7808(r4) -a1841e80| plan9 MOVHZ 7808(R4),R12 -42093d10| gnu bc 16,4*cr2+gt,.+0x3d10 -e38d5b90| gnu lq r28,23440(r13) -84127a20| gnu lwzu r0,31264(r18) -84127a20| plan9 MOVWZU 31264(R18),R0 -a8630000| gnu lha r3,0(r3) -a8630000| plan9 MOVH 0(R3),R3 -ebb24fd1| gnu ldu r29,20432(r18) -ebb24fd1| plan9 MOVDU 20432(R18),R29 -b1ce0612| gnu sth r14,1554(r14) -b1ce0612| plan9 MOVH R14,1554(R14) -945c62a2| gnu stwu r2,25250(r28) -f91b9c7a| gnu stq r8,-25480(r27) -2c030001| gnu cmpwi r3,1 -2c030001| plan9 CMPW R3,$1 -e8610032| gnu lwa r3,48(r1) -e8610032| plan9 MOVW 48(R1),R3 -4320336b| gnu bcla 25,lt,0x3368 -7e40092e| gnu stwx r18,0,r1 -7e40092e| plan9 MOVW R18,(R1)(0) -7c103c2c| gnu lwbrx r0,r16,r7 -7c103c2c| plan9 MOVWBR (R7)(R16),R0 -7c441d28| gnu stdbrx r2,r4,r3 -7c441d28| plan9 MOVDBR R2,(R3)(R4) -3d220001| gnu addis r9,r2,1 -3d220001| plan9 ADDIS R2,$1,R9 -7ce628ae| gnu lbzx r7,r6,r5 -7ce628ae| plan9 MOVBZ (R5)(R6),R7 -7c0e1e99| gnu lxvd2x vs32,r14,r3 -7c0e1e99| plan9 LXVD2X (R3)(R14),VS32 -7c00422c| gnu dcbt r0,r8,0 -7c00422c| plan9 DCBT (R8) -7fab3040| gnu cmpld cr7,r11,r6 -7fab3040| plan9 CMPU CR7,R11,R6 -2c030001| gnu cmpwi r3,1 -2c030001| plan9 CMPW R3,$1 -7c2b4840| gnu cmpld r11,r9 -7c2b4840| plan9 CMPU R11,R9 -7c6521ad| gnu stdcx. r3,r5,r4 -7c6521ad| plan9 STDCXCC R3,(R4)(R5) -fbe1ffd1| gnu stdu r31,-48(r1) -fbe1ffd1| plan9 MOVDU R31,-48(R1) -7c941f19| gnu stxvw4x vs36,r20,r3 -7c941f19| plan9 STXVW4X VS36,(R3)(R20) -7c6520a8| gnu ldarx r3,r5,r4 -7c6520a8| plan9 LDAR (R4)(R5),R3 diff --git a/src/cmd/vendor/golang.org/x/arch/x86/x86asm/decode_test.go b/src/cmd/vendor/golang.org/x/arch/x86/x86asm/decode_test.go deleted file mode 100644 index 127be263d772bf..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/x86/x86asm/decode_test.go +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2014 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. - -package x86asm - -import ( - "encoding/hex" - "io/ioutil" - "strconv" - "strings" - "testing" -) - -func TestDecode(t *testing.T) { - data, err := ioutil.ReadFile("testdata/decode.txt") - if err != nil { - t.Fatal(err) - } - all := string(data) - for strings.Contains(all, "\t\t") { - all = strings.Replace(all, "\t\t", "\t", -1) - } - for _, line := range strings.Split(all, "\n") { - line = strings.TrimSpace(line) - if line == "" || strings.HasPrefix(line, "#") { - continue - } - f := strings.SplitN(line, "\t", 4) - i := strings.Index(f[0], "|") - if i < 0 { - t.Errorf("parsing %q: missing | separator", f[0]) - continue - } - if i%2 != 0 { - t.Errorf("parsing %q: misaligned | separator", f[0]) - } - size := i / 2 - code, err := hex.DecodeString(f[0][:i] + f[0][i+1:]) - if err != nil { - t.Errorf("parsing %q: %v", f[0], err) - continue - } - mode, err := strconv.Atoi(f[1]) - if err != nil { - t.Errorf("invalid mode %q in: %s", f[1], line) - continue - } - syntax, asm := f[2], f[3] - inst, err := Decode(code, mode) - var out string - if err != nil { - out = "error: " + err.Error() - } else { - switch syntax { - case "gnu": - out = GNUSyntax(inst, 0, nil) - case "intel": - out = IntelSyntax(inst, 0, nil) - case "plan9": // [sic] - out = GoSyntax(inst, 0, nil) - default: - t.Errorf("unknown syntax %q", syntax) - continue - } - } - if out != asm || inst.Len != size { - t.Errorf("Decode(%s) [%s] = %s, %d, want %s, %d", f[0], syntax, out, inst.Len, asm, size) - } - } -} diff --git a/src/cmd/vendor/golang.org/x/arch/x86/x86asm/ext_test.go b/src/cmd/vendor/golang.org/x/arch/x86/x86asm/ext_test.go deleted file mode 100644 index 526ef5aa26eff7..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/x86/x86asm/ext_test.go +++ /dev/null @@ -1,811 +0,0 @@ -// Copyright 2014 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. - -// Support for testing against external disassembler program. - -package x86asm - -import ( - "bufio" - "bytes" - "encoding/hex" - "flag" - "fmt" - "io" - "io/ioutil" - "log" - "math/rand" - "os" - "os/exec" - "regexp" - "runtime" - "strings" - "testing" - "time" -) - -var ( - printTests = flag.Bool("printtests", false, "print test cases that exercise new code paths") - dumpTest = flag.Bool("dump", false, "dump all encodings") - mismatch = flag.Bool("mismatch", false, "log allowed mismatches") - longTest = flag.Bool("long", false, "long test") - keep = flag.Bool("keep", false, "keep object files around") - debug = false -) - -// An ExtInst represents a single decoded instruction parsed -// from an external disassembler's output. -type ExtInst struct { - addr uint32 - enc [32]byte - nenc int - text string -} - -func (r ExtInst) String() string { - return fmt.Sprintf("%#x: % x: %s", r.addr, r.enc, r.text) -} - -// An ExtDis is a connection between an external disassembler and a test. -type ExtDis struct { - Arch int - Dec chan ExtInst - File *os.File - Size int - KeepFile bool - Cmd *exec.Cmd -} - -// Run runs the given command - the external disassembler - and returns -// a buffered reader of its standard output. -func (ext *ExtDis) Run(cmd ...string) (*bufio.Reader, error) { - if *keep { - log.Printf("%s\n", strings.Join(cmd, " ")) - } - ext.Cmd = exec.Command(cmd[0], cmd[1:]...) - out, err := ext.Cmd.StdoutPipe() - if err != nil { - return nil, fmt.Errorf("stdoutpipe: %v", err) - } - if err := ext.Cmd.Start(); err != nil { - return nil, fmt.Errorf("exec: %v", err) - } - - b := bufio.NewReaderSize(out, 1<<20) - return b, nil -} - -// Wait waits for the command started with Run to exit. -func (ext *ExtDis) Wait() error { - return ext.Cmd.Wait() -} - -// testExtDis tests a set of byte sequences against an external disassembler. -// The disassembler is expected to produce the given syntax and be run -// in the given architecture mode (16, 32, or 64-bit). -// The extdis function must start the external disassembler -// and then parse its output, sending the parsed instructions on ext.Dec. -// The generate function calls its argument f once for each byte sequence -// to be tested. The generate function itself will be called twice, and it must -// make the same sequence of calls to f each time. -// When a disassembly does not match the internal decoding, -// allowedMismatch determines whether this mismatch should be -// allowed, or else considered an error. -func testExtDis( - t *testing.T, - syntax string, - arch int, - extdis func(ext *ExtDis) error, - generate func(f func([]byte)), - allowedMismatch func(text string, size int, inst *Inst, dec ExtInst) bool, -) { - start := time.Now() - ext := &ExtDis{ - Dec: make(chan ExtInst), - Arch: arch, - } - errc := make(chan error) - - // First pass: write instructions to input file for external disassembler. - file, f, size, err := writeInst(generate) - if err != nil { - t.Fatal(err) - } - ext.Size = size - ext.File = f - defer func() { - f.Close() - if !*keep { - os.Remove(file) - } - }() - - // Second pass: compare disassembly against our decodings. - var ( - totalTests = 0 - totalSkips = 0 - totalErrors = 0 - - errors = make([]string, 0, 100) // sampled errors, at most cap - ) - go func() { - errc <- extdis(ext) - }() - generate(func(enc []byte) { - dec, ok := <-ext.Dec - if !ok { - t.Errorf("decoding stream ended early") - return - } - inst, text := disasm(syntax, arch, pad(enc)) - totalTests++ - if *dumpTest { - fmt.Printf("%x -> %s [%d]\n", enc[:len(enc)], dec.text, dec.nenc) - } - if text != dec.text || inst.Len != dec.nenc { - suffix := "" - if allowedMismatch(text, size, &inst, dec) { - totalSkips++ - if !*mismatch { - return - } - suffix += " (allowed mismatch)" - } - totalErrors++ - if len(errors) >= cap(errors) { - j := rand.Intn(totalErrors) - if j >= cap(errors) { - return - } - errors = append(errors[:j], errors[j+1:]...) - } - errors = append(errors, fmt.Sprintf("decode(%x) = %q, %d, want %q, %d%s", enc, text, inst.Len, dec.text, dec.nenc, suffix)) - } - }) - - if *mismatch { - totalErrors -= totalSkips - } - - for _, b := range errors { - t.Log(b) - } - - if totalErrors > 0 { - t.Fail() - } - t.Logf("%d test cases, %d expected mismatches, %d failures; %.0f cases/second", totalTests, totalSkips, totalErrors, float64(totalTests)/time.Since(start).Seconds()) - - if err := <-errc; err != nil { - t.Fatalf("external disassembler: %v", err) - } -} - -const start = 0x8000 // start address of text - -// writeInst writes the generated byte sequences to a new file -// starting at offset start. That file is intended to be the input to -// the external disassembler. -func writeInst(generate func(func([]byte))) (file string, f *os.File, size int, err error) { - f, err = ioutil.TempFile("", "x86map") - if err != nil { - return - } - - file = f.Name() - - f.Seek(start, io.SeekStart) - w := bufio.NewWriter(f) - defer w.Flush() - size = 0 - generate(func(x []byte) { - if len(x) > 16 { - x = x[:16] - } - if debug { - fmt.Printf("%#x: %x%x\n", start+size, x, pops[len(x):]) - } - w.Write(x) - w.Write(pops[len(x):]) - size += len(pops) - }) - return file, f, size, nil -} - -// 0x5F is a single-byte pop instruction. -// We pad the bytes we want decoded with enough 0x5Fs -// that no matter what state the instruction stream is in -// after reading our bytes, the pops will get us back to -// a forced instruction boundary. -var pops = []byte{ - 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, - 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, - 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, - 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, -} - -// pad pads the code sequence with pops. -func pad(enc []byte) []byte { - return append(enc[:len(enc):len(enc)], pops...) -} - -// disasm returns the decoded instruction and text -// for the given source bytes, using the given syntax and mode. -func disasm(syntax string, mode int, src []byte) (inst Inst, text string) { - // If printTests is set, we record the coverage value - // before and after, and we write out the inputs for which - // coverage went up, in the format expected in testdata/decode.text. - // This produces a fairly small set of test cases that exercise nearly - // all the code. - var cover float64 - if *printTests { - cover -= coverage() - } - - inst, err := decode1(src, mode, syntax == "gnu") - if err != nil { - text = "error: " + err.Error() - } else { - switch syntax { - case "gnu": - text = GNUSyntax(inst, 0, nil) - case "intel": - text = IntelSyntax(inst, 0, nil) - case "plan9": // [sic] - text = GoSyntax(inst, 0, nil) - default: - text = "error: unknown syntax " + syntax - } - } - - if *printTests { - cover += coverage() - if cover > 0 { - max := len(src) - if max > 16 && inst.Len <= 16 { - max = 16 - } - fmt.Printf("%x|%x\t%d\t%s\t%s\n", src[:inst.Len], src[inst.Len:max], mode, syntax, text) - } - } - - return -} - -// coverage returns a floating point number denoting the -// test coverage until now. The number increases when new code paths are exercised, -// both in the Go program and in the decoder byte code. -func coverage() float64 { - /* - testing.Coverage is not in the main distribution. - The implementation, which must go in package testing, is: - - // Coverage reports the current code coverage as a fraction in the range [0, 1]. - func Coverage() float64 { - var n, d int64 - for _, counters := range cover.Counters { - for _, c := range counters { - if c > 0 { - n++ - } - d++ - } - } - if d == 0 { - return 0 - } - return float64(n) / float64(d) - } - */ - - var f float64 - // f += testing.Coverage() - f += decodeCoverage() - return f -} - -func decodeCoverage() float64 { - n := 0 - for _, t := range decoderCover { - if t { - n++ - } - } - return float64(1+n) / float64(1+len(decoderCover)) -} - -// Helpers for writing disassembler output parsers. - -// isPrefix reports whether text is the name of an instruction prefix. -func isPrefix(text string) bool { - return prefixByte[text] > 0 -} - -// prefixByte maps instruction prefix text to actual prefix byte values. -var prefixByte = map[string]byte{ - "es": 0x26, - "cs": 0x2e, - "ss": 0x36, - "ds": 0x3e, - "fs": 0x64, - "gs": 0x65, - "data16": 0x66, - "addr16": 0x67, - "lock": 0xf0, - "repn": 0xf2, - "repne": 0xf2, - "rep": 0xf3, - "repe": 0xf3, - "xacquire": 0xf2, - "xrelease": 0xf3, - "bnd": 0xf2, - "addr32": 0x66, - "data32": 0x67, -} - -// hasPrefix reports whether any of the space-separated words in the text s -// begins with any of the given prefixes. -func hasPrefix(s string, prefixes ...string) bool { - for _, prefix := range prefixes { - for s := s; s != ""; { - if strings.HasPrefix(s, prefix) { - return true - } - i := strings.Index(s, " ") - if i < 0 { - break - } - s = s[i+1:] - } - } - return false -} - -// contains reports whether the text s contains any of the given substrings. -func contains(s string, substrings ...string) bool { - for _, sub := range substrings { - if strings.Contains(s, sub) { - return true - } - } - return false -} - -// isHex reports whether b is a hexadecimal character (0-9A-Fa-f). -func isHex(b byte) bool { return b == '0' || unhex[b] > 0 } - -// parseHex parses the hexadecimal byte dump in hex, -// appending the parsed bytes to raw and returning the updated slice. -// The returned bool signals whether any invalid hex was found. -// Spaces and tabs between bytes are okay but any other non-hex is not. -func parseHex(hex []byte, raw []byte) ([]byte, bool) { - hex = trimSpace(hex) - for j := 0; j < len(hex); { - for hex[j] == ' ' || hex[j] == '\t' { - j++ - } - if j >= len(hex) { - break - } - if j+2 > len(hex) || !isHex(hex[j]) || !isHex(hex[j+1]) { - return nil, false - } - raw = append(raw, unhex[hex[j]]<<4|unhex[hex[j+1]]) - j += 2 - } - return raw, true -} - -var unhex = [256]byte{ - '0': 0, - '1': 1, - '2': 2, - '3': 3, - '4': 4, - '5': 5, - '6': 6, - '7': 7, - '8': 8, - '9': 9, - 'A': 10, - 'B': 11, - 'C': 12, - 'D': 13, - 'E': 14, - 'F': 15, - 'a': 10, - 'b': 11, - 'c': 12, - 'd': 13, - 'e': 14, - 'f': 15, -} - -// index is like bytes.Index(s, []byte(t)) but avoids the allocation. -func index(s []byte, t string) int { - i := 0 - for { - j := bytes.IndexByte(s[i:], t[0]) - if j < 0 { - return -1 - } - i = i + j - if i+len(t) > len(s) { - return -1 - } - for k := 1; k < len(t); k++ { - if s[i+k] != t[k] { - goto nomatch - } - } - return i - nomatch: - i++ - } -} - -// fixSpace rewrites runs of spaces, tabs, and newline characters into single spaces in s. -// If s must be rewritten, it is rewritten in place. -func fixSpace(s []byte) []byte { - s = trimSpace(s) - for i := 0; i < len(s); i++ { - if s[i] == '\t' || s[i] == '\n' || i > 0 && s[i] == ' ' && s[i-1] == ' ' { - goto Fix - } - } - return s - -Fix: - b := s - w := 0 - for i := 0; i < len(s); i++ { - c := s[i] - if c == '\t' || c == '\n' { - c = ' ' - } - if c == ' ' && w > 0 && b[w-1] == ' ' { - continue - } - b[w] = c - w++ - } - if w > 0 && b[w-1] == ' ' { - w-- - } - return b[:w] -} - -// trimSpace trims leading and trailing space from s, returning a subslice of s. -func trimSpace(s []byte) []byte { - j := len(s) - for j > 0 && (s[j-1] == ' ' || s[j-1] == '\t' || s[j-1] == '\n') { - j-- - } - i := 0 - for i < j && (s[i] == ' ' || s[i] == '\t') { - i++ - } - return s[i:j] -} - -// pcrel and pcrelw match instructions using relative addressing mode. -var ( - pcrel = regexp.MustCompile(`^((?:.* )?(?:j[a-z]+|call|ljmp|loopn?e?w?|xbegin)q?(?:,p[nt])?) 0x([0-9a-f]+)$`) - pcrelw = regexp.MustCompile(`^((?:.* )?(?:callw|jmpw|xbeginw|ljmpw)(?:,p[nt])?) 0x([0-9a-f]+)$`) -) - -// Generators. -// -// The test cases are described as functions that invoke a callback repeatedly, -// with a new input sequence each time. These helpers make writing those -// a little easier. - -// hexCases generates the cases written in hexadecimal in the encoded string. -// Spaces in 'encoded' separate entire test cases, not individual bytes. -func hexCases(t *testing.T, encoded string) func(func([]byte)) { - return func(try func([]byte)) { - for _, x := range strings.Fields(encoded) { - src, err := hex.DecodeString(x) - if err != nil { - t.Errorf("parsing %q: %v", x, err) - } - try(src) - } - } -} - -// testdataCases generates the test cases recorded in testdata/decode.txt. -// It only uses the inputs; it ignores the answers recorded in that file. -func testdataCases(t *testing.T) func(func([]byte)) { - var codes [][]byte - data, err := ioutil.ReadFile("testdata/decode.txt") - if err != nil { - t.Fatal(err) - } - for _, line := range strings.Split(string(data), "\n") { - line = strings.TrimSpace(line) - if line == "" || strings.HasPrefix(line, "#") { - continue - } - f := strings.Fields(line)[0] - i := strings.Index(f, "|") - if i < 0 { - t.Errorf("parsing %q: missing | separator", f) - continue - } - if i%2 != 0 { - t.Errorf("parsing %q: misaligned | separator", f) - } - code, err := hex.DecodeString(f[:i] + f[i+1:]) - if err != nil { - t.Errorf("parsing %q: %v", f, err) - continue - } - codes = append(codes, code) - } - - return func(try func([]byte)) { - for _, code := range codes { - try(code) - } - } -} - -// manyPrefixes generates all possible 2⁹ combinations of nine chosen prefixes. -// The relative ordering of the prefixes within the combinations varies deterministically. -func manyPrefixes(try func([]byte)) { - var prefixBytes = []byte{0x66, 0x67, 0xF0, 0xF2, 0xF3, 0x3E, 0x36, 0x66, 0x67} - var enc []byte - for i := 0; i < 1< 0 { - k := i % len(enc) - enc[0], enc[k] = enc[k], enc[0] - } - try(enc) - } -} - -// basicPrefixes geneartes 8 different possible prefix cases: no prefix -// and then one each of seven different prefix bytes. -func basicPrefixes(try func([]byte)) { - try(nil) - for _, b := range []byte{0x66, 0x67, 0xF0, 0xF2, 0xF3, 0x3E, 0x36} { - try([]byte{b}) - } -} - -func rexPrefixes(try func([]byte)) { - try(nil) - for _, b := range []byte{0x40, 0x48, 0x43, 0x4C} { - try([]byte{b}) - } -} - -// concat takes two generators and returns a generator for the -// cross product of the two, concatenating the results from each. -func concat(gen1, gen2 func(func([]byte))) func(func([]byte)) { - return func(try func([]byte)) { - gen1(func(enc1 []byte) { - gen2(func(enc2 []byte) { - try(append(enc1[:len(enc1):len(enc1)], enc2...)) - }) - }) - } -} - -// concat3 takes three generators and returns a generator for the -// cross product of the three, concatenating the results from each. -func concat3(gen1, gen2, gen3 func(func([]byte))) func(func([]byte)) { - return func(try func([]byte)) { - gen1(func(enc1 []byte) { - gen2(func(enc2 []byte) { - gen3(func(enc3 []byte) { - try(append(append(enc1[:len(enc1):len(enc1)], enc2...), enc3...)) - }) - }) - }) - } -} - -// concat4 takes four generators and returns a generator for the -// cross product of the four, concatenating the results from each. -func concat4(gen1, gen2, gen3, gen4 func(func([]byte))) func(func([]byte)) { - return func(try func([]byte)) { - gen1(func(enc1 []byte) { - gen2(func(enc2 []byte) { - gen3(func(enc3 []byte) { - gen4(func(enc4 []byte) { - try(append(append(append(enc1[:len(enc1):len(enc1)], enc2...), enc3...), enc4...)) - }) - }) - }) - }) - } -} - -// filter generates the sequences from gen that satisfy ok. -func filter(gen func(func([]byte)), ok func([]byte) bool) func(func([]byte)) { - return func(try func([]byte)) { - gen(func(enc []byte) { - if ok(enc) { - try(enc) - } - }) - } -} - -// enum8bit generates all possible 1-byte sequences, followed by distinctive padding. -func enum8bit(try func([]byte)) { - for i := 0; i < 1<<8; i++ { - try([]byte{byte(i), 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88}) - } -} - -// enum8bit generates all possible 2-byte sequences, followed by distinctive padding. -func enum16bit(try func([]byte)) { - for i := 0; i < 1<<16; i++ { - try([]byte{byte(i), byte(i >> 8), 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88}) - } -} - -// enum24bit generates all possible 3-byte sequences, followed by distinctive padding. -func enum24bit(try func([]byte)) { - for i := 0; i < 1<<24; i++ { - try([]byte{byte(i), byte(i >> 8), byte(i >> 16), 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88}) - } -} - -// enumModRM generates all possible modrm bytes and, for modrm values that indicate -// a following sib byte, all possible modrm, sib combinations. -func enumModRM(try func([]byte)) { - for i := 0; i < 256; i++ { - if (i>>3)&07 == 04 && i>>6 != 3 { // has sib - for j := 0; j < 256; j++ { - try([]byte{0, byte(i), byte(j), 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88}) // byte encodings - try([]byte{1, byte(i), byte(j), 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88}) // word encodings - } - } else { - try([]byte{0, byte(i), 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88}) // byte encodings - try([]byte{1, byte(i), 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88}) // word encodings - } - } -} - -// fixed generates the single case b. -// It's mainly useful to prepare an argument for concat or concat3. -func fixed(b ...byte) func(func([]byte)) { - return func(try func([]byte)) { - try(b) - } -} - -// testBasic runs the given test function with cases all using opcode as the initial opcode bytes. -// It runs three phases: -// -// First, zero-or-one prefixes followed by opcode followed by all possible 1-byte values. -// If in -short mode, that's all. -// -// Second, zero-or-one prefixes followed by opcode followed by all possible 2-byte values. -// If not in -long mode, that's all. This phase and the next run in parallel with other tests -// (using t.Parallel). -// -// Finally, opcode followed by all possible 3-byte values. The test can take a very long time -// and prints progress messages to package log. -func testBasic(t *testing.T, testfn func(*testing.T, func(func([]byte))), opcode ...byte) { - testfn(t, concat3(basicPrefixes, fixed(opcode...), enum8bit)) - if testing.Short() { - return - } - - t.Parallel() - testfn(t, concat3(basicPrefixes, fixed(opcode...), enum16bit)) - if !*longTest { - return - } - - name := caller(2) - op1 := make([]byte, len(opcode)+1) - copy(op1, opcode) - for i := 0; i < 256; i++ { - log.Printf("%s 24-bit: %d/256\n", name, i) - op1[len(opcode)] = byte(i) - testfn(t, concat(fixed(op1...), enum16bit)) - } -} - -func testBasicREX(t *testing.T, testfn func(*testing.T, func(func([]byte))), opcode ...byte) { - testfn(t, filter(concat4(basicPrefixes, rexPrefixes, fixed(opcode...), enum8bit), isValidREX)) - if testing.Short() { - return - } - - t.Parallel() - testfn(t, filter(concat4(basicPrefixes, rexPrefixes, fixed(opcode...), enum16bit), isValidREX)) - if !*longTest { - return - } - - name := caller(2) - op1 := make([]byte, len(opcode)+1) - copy(op1, opcode) - for i := 0; i < 256; i++ { - log.Printf("%s 24-bit: %d/256\n", name, i) - op1[len(opcode)] = byte(i) - testfn(t, filter(concat3(rexPrefixes, fixed(op1...), enum16bit), isValidREX)) - } -} - -// testPrefix runs the given test function for all many prefix possibilities -// followed by all possible 1-byte sequences. -// -// If in -long mode, it then runs a test of all the prefix possibilities followed -// by all possible 2-byte sequences. -func testPrefix(t *testing.T, testfn func(*testing.T, func(func([]byte)))) { - t.Parallel() - testfn(t, concat(manyPrefixes, enum8bit)) - if testing.Short() || !*longTest { - return - } - - name := caller(2) - for i := 0; i < 256; i++ { - log.Printf("%s 16-bit: %d/256\n", name, i) - testfn(t, concat3(manyPrefixes, fixed(byte(i)), enum8bit)) - } -} - -func testPrefixREX(t *testing.T, testfn func(*testing.T, func(func([]byte)))) { - t.Parallel() - testfn(t, filter(concat3(manyPrefixes, rexPrefixes, enum8bit), isValidREX)) - if testing.Short() || !*longTest { - return - } - - name := caller(2) - for i := 0; i < 256; i++ { - log.Printf("%s 16-bit: %d/256\n", name, i) - testfn(t, filter(concat4(manyPrefixes, rexPrefixes, fixed(byte(i)), enum8bit), isValidREX)) - } -} - -func caller(skip int) string { - pc, _, _, _ := runtime.Caller(skip) - f := runtime.FuncForPC(pc) - name := "?" - if f != nil { - name = f.Name() - if i := strings.LastIndex(name, "."); i >= 0 { - name = name[i+1:] - } - } - return name -} - -func isValidREX(x []byte) bool { - i := 0 - for i < len(x) && isPrefixByte(x[i]) { - i++ - } - if i < len(x) && Prefix(x[i]).IsREX() { - i++ - if i < len(x) { - return !isPrefixByte(x[i]) && !Prefix(x[i]).IsREX() - } - } - return true -} - -func isPrefixByte(b byte) bool { - switch b { - case 0x26, 0x2E, 0x36, 0x3E, 0x64, 0x65, 0x66, 0x67, 0xF0, 0xF2, 0xF3: - return true - } - return false -} diff --git a/src/cmd/vendor/golang.org/x/arch/x86/x86asm/format_test.go b/src/cmd/vendor/golang.org/x/arch/x86/x86asm/format_test.go deleted file mode 100644 index 9f110f8105170d..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/x86/x86asm/format_test.go +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2017 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. - -package x86asm - -import ( - "encoding/hex" - "testing" -) - -func testFormattingSymname(addr uint64) (string, uint64) { - switch addr { - case 0x424080: - return "runtime.printint", 0x424080 - case 0x4c8068: - return "main.A", 0x4c8068 - } - return "", 0 -} - -func TestFormatting(t *testing.T) { - testCases := []struct { - PC uint64 - bytes string - - goSyntax, intelSyntax, gnuSyntax string - }{ - {0x4816b2, "0f8677010000", - "JBE 0x48182f", - "jbe 0x48182f", - "jbe 0x48182f"}, - {0x45065b, "488b442408", - "MOVQ 0x8(SP), AX", - "mov rax, qword ptr [rsp+0x8]", - "mov 0x8(%rsp),%rax"}, - {0x450678, "488b05e9790700", - "MOVQ main.A(SB), AX", - "mov rax, qword ptr [main.A]", - "mov main.A,%rax"}, - {0x450664, "e8173afdff", - "CALL runtime.printint(SB)", - "call runtime.printint", - "callq runtime.printint"}, - {0x45069b, "488d0575d90100", - "LEAQ 0x1d975(IP), AX", - "lea rax, ptr [rip+0x1d975]", - "lea 0x1d975(%rip),%rax"}, - } - - for _, testCase := range testCases { - t.Logf("%#x %s %s", testCase.PC, testCase.bytes, testCase.goSyntax) - bs, _ := hex.DecodeString(testCase.bytes) - inst, err := Decode(bs, 64) - if err != nil { - t.Errorf("decode error %v", err) - } - if out := GoSyntax(inst, testCase.PC, testFormattingSymname); out != testCase.goSyntax { - t.Errorf("GoSyntax: %q", out) - } - if out := IntelSyntax(inst, testCase.PC, testFormattingSymname); out != testCase.intelSyntax { - t.Errorf("IntelSyntax: %q expected: %q", out, testCase.intelSyntax) - } - if out := GNUSyntax(inst, testCase.PC, testFormattingSymname); out != testCase.gnuSyntax { - t.Errorf("GNUSyntax: %q expected: %q", out, testCase.gnuSyntax) - } - } -} diff --git a/src/cmd/vendor/golang.org/x/arch/x86/x86asm/inst_test.go b/src/cmd/vendor/golang.org/x/arch/x86/x86asm/inst_test.go deleted file mode 100644 index 23ac5232076555..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/x86/x86asm/inst_test.go +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2014 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. - -package x86asm - -import ( - "strings" - "testing" -) - -func TestRegString(t *testing.T) { - for r := Reg(1); r <= regMax; r++ { - if regNames[r] == "" { - t.Errorf("regNames[%d] is missing", int(r)) - } else if s := r.String(); strings.Contains(s, "Reg(") { - t.Errorf("Reg(%d).String() = %s, want proper name", int(r), s) - } - } -} diff --git a/src/cmd/vendor/golang.org/x/arch/x86/x86asm/objdump_test.go b/src/cmd/vendor/golang.org/x/arch/x86/x86asm/objdump_test.go deleted file mode 100644 index 3d4e1460f8ccdf..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/x86/x86asm/objdump_test.go +++ /dev/null @@ -1,385 +0,0 @@ -// Copyright 2014 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. - -package x86asm - -import ( - "bytes" - "strings" - "testing" -) - -func TestObjdump32Manual(t *testing.T) { testObjdump32(t, hexCases(t, objdumpManualTests)) } -func TestObjdump32Testdata(t *testing.T) { testObjdump32(t, concat(basicPrefixes, testdataCases(t))) } -func TestObjdump32ModRM(t *testing.T) { testObjdump32(t, concat(basicPrefixes, enumModRM)) } -func TestObjdump32OneByte(t *testing.T) { testBasic(t, testObjdump32) } -func TestObjdump320F(t *testing.T) { testBasic(t, testObjdump32, 0x0F) } -func TestObjdump320F38(t *testing.T) { testBasic(t, testObjdump32, 0x0F, 0x38) } -func TestObjdump320F3A(t *testing.T) { testBasic(t, testObjdump32, 0x0F, 0x3A) } -func TestObjdump32Prefix(t *testing.T) { testPrefix(t, testObjdump32) } - -func TestObjdump64Manual(t *testing.T) { testObjdump64(t, hexCases(t, objdumpManualTests)) } -func TestObjdump64Testdata(t *testing.T) { testObjdump64(t, concat(basicPrefixes, testdataCases(t))) } -func TestObjdump64ModRM(t *testing.T) { testObjdump64(t, concat(basicPrefixes, enumModRM)) } -func TestObjdump64OneByte(t *testing.T) { testBasic(t, testObjdump64) } -func TestObjdump640F(t *testing.T) { testBasic(t, testObjdump64, 0x0F) } -func TestObjdump640F38(t *testing.T) { testBasic(t, testObjdump64, 0x0F, 0x38) } -func TestObjdump640F3A(t *testing.T) { testBasic(t, testObjdump64, 0x0F, 0x3A) } -func TestObjdump64Prefix(t *testing.T) { testPrefix(t, testObjdump64) } - -func TestObjdump64REXTestdata(t *testing.T) { - testObjdump64(t, filter(concat3(basicPrefixes, rexPrefixes, testdataCases(t)), isValidREX)) -} -func TestObjdump64REXModRM(t *testing.T) { - testObjdump64(t, concat3(basicPrefixes, rexPrefixes, enumModRM)) -} -func TestObjdump64REXOneByte(t *testing.T) { testBasicREX(t, testObjdump64) } -func TestObjdump64REX0F(t *testing.T) { testBasicREX(t, testObjdump64, 0x0F) } -func TestObjdump64REX0F38(t *testing.T) { testBasicREX(t, testObjdump64, 0x0F, 0x38) } -func TestObjdump64REX0F3A(t *testing.T) { testBasicREX(t, testObjdump64, 0x0F, 0x3A) } -func TestObjdump64REXPrefix(t *testing.T) { testPrefixREX(t, testObjdump64) } - -// objdumpManualTests holds test cases that will be run by TestObjdumpManual. -// If you are debugging a few cases that turned up in a longer run, it can be useful -// to list them here and then use -run=ObjdumpManual, particularly with tracing enabled. -var objdumpManualTests = ` -4883FE017413 -488DFC2500000000 -488D3D00000000 -` - -// allowedMismatchObjdump reports whether the mismatch between text and dec -// should be allowed by the test. -func allowedMismatchObjdump(text string, size int, inst *Inst, dec ExtInst) bool { - if size == 15 && dec.nenc == 15 && contains(text, "truncated") && contains(dec.text, "(bad)") { - return true - } - - if i := strings.LastIndex(dec.text, " "); isPrefix(dec.text[i+1:]) && size == 1 && isPrefix(text) { - return true - } - - if size == dec.nenc && contains(dec.text, "movupd") && contains(dec.text, "data32") { - s := strings.Replace(dec.text, "data32 ", "", -1) - if text == s { - return true - } - } - - // Simplify our invalid instruction text. - if text == "error: unrecognized instruction" { - text = "BAD" - } - - // Invalid instructions for which libopcodes prints %? register. - // FF E8 11 22 33 44: - // Invalid instructions for which libopcodes prints "internal disassembler error". - // Invalid instructions for which libopcodes prints 8087 only (e.g., DB E0) - // or prints 287 only (e.g., DB E4). - if contains(dec.text, "%?", "", "(8087 only)", "(287 only)") { - dec.text = "(bad)" - } - - // 0F 19 11, 0F 1C 11, 0F 1D 11, 0F 1E 11, 0F 1F 11: libopcodes says nop, - // but the Intel manuals say that the only NOP there is 0F 1F /0. - // Perhaps libopcodes is reporting an older encoding. - i := bytes.IndexByte(dec.enc[:], 0x0F) - if contains(dec.text, "nop") && i >= 0 && i+2 < len(dec.enc) && dec.enc[i+1]&^7 == 0x18 && (dec.enc[i+1] != 0x1F || (dec.enc[i+2]>>3)&7 != 0) { - dec.text = "(bad)" - } - - // Any invalid instruction. - if text == "BAD" && contains(dec.text, "(bad)") { - return true - } - - // Instructions libopcodes knows but we do not (e.g., 0F 19 11). - if (text == "BAD" || size == 1 && isPrefix(text)) && hasPrefix(dec.text, unsupported...) { - return true - } - - // Instructions we know but libopcodes does not (e.g., 0F D0 11). - if (contains(dec.text, "(bad)") || dec.nenc == 1 && isPrefix(dec.text)) && hasPrefix(text, libopcodesUnsupported...) { - return true - } - - // Libopcodes rejects F2 90 as NOP. Not sure why. - if (contains(dec.text, "(bad)") || dec.nenc == 1 && isPrefix(dec.text)) && inst.Opcode>>24 == 0x90 && countPrefix(inst, 0xF2) > 0 { - return true - } - - // 0F 20 11, 0F 21 11, 0F 22 11, 0F 23 11, 0F 24 11: - // Moves into and out of some control registers seem to be unsupported by libopcodes. - // TODO(rsc): Are they invalid somehow? - if (contains(dec.text, "(bad)") || dec.nenc == 1 && isPrefix(dec.text)) && contains(text, "%cr", "%db", "%tr") { - return true - } - - if contains(dec.text, "fwait") && dec.nenc == 1 && dec.enc[0] != 0x9B { - return true - } - - // 9B D9 11: libopcodes reports FSTSW instead of FWAIT + FNSTSW. - // This is correct in that FSTSW is a pseudo-op for the pair, but it really - // is a pair of instructions: execution can stop between them. - // Our decoder chooses to separate them. - if (text == "fwait" || strings.HasSuffix(text, " fwait")) && dec.nenc >= len(strings.Fields(text)) && dec.enc[len(strings.Fields(text))-1] == 0x9B { - return true - } - - // 0F 18 77 11: - // Invalid instructions for which libopcodes prints "nop/reserved". - // Perhaps libopcodes is reporting an older encoding. - if text == "BAD" && contains(dec.text, "nop/reserved") { - return true - } - - // 0F C7 B0 11 22 33 44: libopcodes says vmptrld 0x44332211(%eax); we say rdrand %eax. - // TODO(rsc): Fix, since we are probably wrong, but we don't have vmptrld in the manual. - if contains(text, "rdrand") && contains(dec.text, "vmptrld", "vmxon", "vmclear") { - return true - } - - // DD C8: libopcodes says FNOP but the Intel manual is clear FNOP is only D9 D0. - // Perhaps libopcodes is reporting an older encoding. - if text == "BAD" && contains(dec.text, "fnop") && (dec.enc[0] != 0xD9 || dec.enc[1] != 0xD0) { - return true - } - - // 66 90: libopcodes says xchg %ax,%ax; we say 'data16 nop'. - // The 16-bit swap will preserve the high bits of the register, - // so they are the same. - if contains(text, "nop") && contains(dec.text, "xchg %ax,%ax") { - return true - } - - // If there are multiple prefixes, allow libopcodes to use an alternate name. - if size == 1 && dec.nenc == 1 && prefixByte[text] > 0 && prefixByte[text] == prefixByte[dec.text] { - return true - } - - // 26 9B: libopcodes reports "fwait"/1, ignoring segment prefix. - // https://sourceware.org/bugzilla/show_bug.cgi?id=16891 - // F0 82: Decode="lock"/1 but libopcodes="lock (bad)"/2. - if size == 1 && dec.nenc >= 1 && prefixByte[text] == dec.enc[0] && contains(dec.text, "(bad)", "fwait", "fnop") { - return true - } - - // libopcodes interprets 660f801122 as taking a rel16 but - // truncating the address at 16 bits. Not sure what is correct. - if contains(text, ".+0x2211", ".+0x11") && contains(dec.text, " .-") { - return true - } - - // 66 F3 0F D6 C5, 66 F2 0F D6 C0: libopcodes reports use of XMM register instead of MMX register, - // but only when the instruction has a 66 prefix. Maybe they know something we don't. - if countPrefix(inst, 0x66) > 0 && contains(dec.text, "movdq2q", "movq2dq") && !contains(dec.text, "%mm") { - return true - } - - // 0F 01 F8, 0F 05, 0F 07: these are 64-bit instructions but libopcodes accepts them. - if (text == "BAD" || size == 1 && isPrefix(text)) && contains(dec.text, "swapgs", "syscall", "sysret", "rdfsbase", "rdgsbase", "wrfsbase", "wrgsbase") { - return true - } - - return false -} - -// Instructions known to libopcodes (or xed) but not to us. -// Most of these come from supplementary manuals of one form or another. -var unsupported = strings.Fields(` - bndc - bndl - bndm - bnds - clac - clgi - femms - fldln - fldz - getsec - invlpga - kmov - montmul - pavg - pf2i - pfacc - pfadd - pfcmp - pfmax - pfmin - pfmul - pfna - pfpnac - pfrc - pfrs - pfsub - phadd - phsub - pi2f - pmulhr - prefetch - pswap - ptest - rdseed - sha1 - sha256 - skinit - stac - stgi - vadd - vand - vcmp - vcomis - vcvt - vcvt - vdiv - vhadd - vhsub - vld - vmax - vmcall - vmfunc - vmin - vmlaunch - vmload - vmmcall - vmov - vmov - vmov - vmptrld - vmptrst - vmread - vmresume - vmrun - vmsave - vmul - vmwrite - vmxoff - vor - vpack - vpadd - vpand - vpavg - vpcmp - vpcmp - vpins - vpmadd - vpmax - vpmin - vpmul - vpmul - vpor - vpsad - vpshuf - vpsll - vpsra - vpsrad - vpsrl - vpsub - vpunp - vpxor - vrcp - vrsqrt - vshuf - vsqrt - vsub - vucomis - vunp - vxor - vzero - xcrypt - xsha1 - xsha256 - xstore-rng - insertq - extrq - vmclear - invvpid - adox - vmxon - invept - adcx - vmclear - prefetchwt1 - enclu - encls - salc - fstpnce - fdisi8087_nop - fsetpm287_nop - feni8087_nop - syscall - sysret -`) - -// Instructions known to us but not to libopcodes (at least in binutils 2.24). -var libopcodesUnsupported = strings.Fields(` - addsubps - aes - blend - cvttpd2dq - dpp - extract - haddps - hsubps - insert - invpcid - lddqu - movmsk - movnt - movq2dq - mps - pack - pblend - pclmul - pcmp - pext - phmin - pins - pmax - pmin - pmov - pmovmsk - pmul - popcnt - pslld - psllq - psllw - psrad - psraw - psrl - ptest - punpck - round - xrstor - xsavec - xsaves - comis - ucomis - movhps - movntps - rsqrt - rcpp - puncpck - bsf - movq2dq - cvttpd2dq - movq - hsubpd - movdqa - movhpd - addsubpd - movd - haddpd - cvtps2dq - bsr - cvtdq2ps - rdrand - maskmov - movq2dq - movlhps - movbe - movlpd -`) diff --git a/src/cmd/vendor/golang.org/x/arch/x86/x86asm/objdumpext_test.go b/src/cmd/vendor/golang.org/x/arch/x86/x86asm/objdumpext_test.go deleted file mode 100644 index d1b067d84ec6a1..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/x86/x86asm/objdumpext_test.go +++ /dev/null @@ -1,313 +0,0 @@ -// Copyright 2014 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. - -package x86asm - -import ( - "bytes" - "debug/elf" - "encoding/binary" - "fmt" - "io" - "log" - "os" - "strconv" - "strings" - "testing" -) - -// Apologies for the proprietary path, but we need objdump 2.24 + some committed patches that will land in 2.25. -const objdumpPath = "/Users/rsc/bin/objdump2" - -func testObjdump32(t *testing.T, generate func(func([]byte))) { - testObjdumpArch(t, generate, 32) -} - -func testObjdump64(t *testing.T, generate func(func([]byte))) { - testObjdumpArch(t, generate, 64) -} - -func testObjdumpArch(t *testing.T, generate func(func([]byte)), arch int) { - if testing.Short() { - t.Skip("skipping objdump test in short mode") - } - if _, err := os.Stat(objdumpPath); err != nil { - t.Skip(err) - } - - testExtDis(t, "gnu", arch, objdump, generate, allowedMismatchObjdump) -} - -func objdump(ext *ExtDis) error { - // File already written with instructions; add ELF header. - if ext.Arch == 32 { - if err := writeELF32(ext.File, ext.Size); err != nil { - return err - } - } else { - if err := writeELF64(ext.File, ext.Size); err != nil { - return err - } - } - - b, err := ext.Run(objdumpPath, "-d", "-z", ext.File.Name()) - if err != nil { - return err - } - - var ( - nmatch int - reading bool - next uint32 = start - addr uint32 - encbuf [32]byte - enc []byte - text string - ) - flush := func() { - if addr == next { - switch text { - case "repz": - text = "rep" - case "repnz": - text = "repn" - default: - text = strings.Replace(text, "repz ", "rep ", -1) - text = strings.Replace(text, "repnz ", "repn ", -1) - } - if m := pcrelw.FindStringSubmatch(text); m != nil { - targ, _ := strconv.ParseUint(m[2], 16, 64) - text = fmt.Sprintf("%s .%+#x", m[1], int16(uint32(targ)-uint32(uint16(addr))-uint32(len(enc)))) - } - if m := pcrel.FindStringSubmatch(text); m != nil { - targ, _ := strconv.ParseUint(m[2], 16, 64) - text = fmt.Sprintf("%s .%+#x", m[1], int32(uint32(targ)-addr-uint32(len(enc)))) - } - text = strings.Replace(text, "0x0(", "(", -1) - text = strings.Replace(text, "%st(0)", "%st", -1) - - ext.Dec <- ExtInst{addr, encbuf, len(enc), text} - encbuf = [32]byte{} - enc = nil - next += 32 - } - } - var textangle = []byte("<.text>:") - for { - line, err := b.ReadSlice('\n') - if err != nil { - if err == io.EOF { - break - } - return fmt.Errorf("reading objdump output: %v", err) - } - if bytes.Contains(line, textangle) { - reading = true - continue - } - if !reading { - continue - } - if debug { - os.Stdout.Write(line) - } - if enc1 := parseContinuation(line, encbuf[:len(enc)]); enc1 != nil { - enc = enc1 - continue - } - flush() - nmatch++ - addr, enc, text = parseLine(line, encbuf[:0]) - if addr > next { - return fmt.Errorf("address out of sync expected <= %#x at %q in:\n%s", next, line, line) - } - } - flush() - if next != start+uint32(ext.Size) { - return fmt.Errorf("not enough results found [%d %d]", next, start+ext.Size) - } - if err := ext.Wait(); err != nil { - return fmt.Errorf("exec: %v", err) - } - - return nil -} - -func parseLine(line []byte, encstart []byte) (addr uint32, enc []byte, text string) { - oline := line - i := index(line, ":\t") - if i < 0 { - log.Fatalf("cannot parse disassembly: %q", oline) - } - x, err := strconv.ParseUint(string(trimSpace(line[:i])), 16, 32) - if err != nil { - log.Fatalf("cannot parse disassembly: %q", oline) - } - addr = uint32(x) - line = line[i+2:] - i = bytes.IndexByte(line, '\t') - if i < 0 { - log.Fatalf("cannot parse disassembly: %q", oline) - } - enc, ok := parseHex(line[:i], encstart) - if !ok { - log.Fatalf("cannot parse disassembly: %q", oline) - } - line = trimSpace(line[i:]) - if i := bytes.IndexByte(line, '#'); i >= 0 { - line = trimSpace(line[:i]) - } - text = string(fixSpace(line)) - return -} - -func parseContinuation(line []byte, enc []byte) []byte { - i := index(line, ":\t") - if i < 0 { - return nil - } - line = line[i+1:] - enc, _ = parseHex(line, enc) - return enc -} - -// writeELF32 writes an ELF32 header to the file, -// describing a text segment that starts at start -// and extends for size bytes. -func writeELF32(f *os.File, size int) error { - f.Seek(0, io.SeekStart) - var hdr elf.Header32 - var prog elf.Prog32 - var sect elf.Section32 - var buf bytes.Buffer - binary.Write(&buf, binary.LittleEndian, &hdr) - off1 := buf.Len() - binary.Write(&buf, binary.LittleEndian, &prog) - off2 := buf.Len() - binary.Write(&buf, binary.LittleEndian, §) - off3 := buf.Len() - buf.Reset() - data := byte(elf.ELFDATA2LSB) - hdr = elf.Header32{ - Ident: [16]byte{0x7F, 'E', 'L', 'F', 1, data, 1}, - Type: 2, - Machine: uint16(elf.EM_386), - Version: 1, - Entry: start, - Phoff: uint32(off1), - Shoff: uint32(off2), - Flags: 0x05000002, - Ehsize: uint16(off1), - Phentsize: uint16(off2 - off1), - Phnum: 1, - Shentsize: uint16(off3 - off2), - Shnum: 3, - Shstrndx: 2, - } - binary.Write(&buf, binary.LittleEndian, &hdr) - prog = elf.Prog32{ - Type: 1, - Off: start, - Vaddr: start, - Paddr: start, - Filesz: uint32(size), - Memsz: uint32(size), - Flags: 5, - Align: start, - } - binary.Write(&buf, binary.LittleEndian, &prog) - binary.Write(&buf, binary.LittleEndian, §) // NULL section - sect = elf.Section32{ - Name: 1, - Type: uint32(elf.SHT_PROGBITS), - Addr: start, - Off: start, - Size: uint32(size), - Flags: uint32(elf.SHF_ALLOC | elf.SHF_EXECINSTR), - Addralign: 4, - } - binary.Write(&buf, binary.LittleEndian, §) // .text - sect = elf.Section32{ - Name: uint32(len("\x00.text\x00")), - Type: uint32(elf.SHT_STRTAB), - Addr: 0, - Off: uint32(off2 + (off3-off2)*3), - Size: uint32(len("\x00.text\x00.shstrtab\x00")), - Addralign: 1, - } - binary.Write(&buf, binary.LittleEndian, §) - buf.WriteString("\x00.text\x00.shstrtab\x00") - f.Write(buf.Bytes()) - return nil -} - -// writeELF64 writes an ELF64 header to the file, -// describing a text segment that starts at start -// and extends for size bytes. -func writeELF64(f *os.File, size int) error { - f.Seek(0, io.SeekStart) - var hdr elf.Header64 - var prog elf.Prog64 - var sect elf.Section64 - var buf bytes.Buffer - binary.Write(&buf, binary.LittleEndian, &hdr) - off1 := buf.Len() - binary.Write(&buf, binary.LittleEndian, &prog) - off2 := buf.Len() - binary.Write(&buf, binary.LittleEndian, §) - off3 := buf.Len() - buf.Reset() - data := byte(elf.ELFDATA2LSB) - hdr = elf.Header64{ - Ident: [16]byte{0x7F, 'E', 'L', 'F', 2, data, 1}, - Type: 2, - Machine: uint16(elf.EM_X86_64), - Version: 1, - Entry: start, - Phoff: uint64(off1), - Shoff: uint64(off2), - Flags: 0x05000002, - Ehsize: uint16(off1), - Phentsize: uint16(off2 - off1), - Phnum: 1, - Shentsize: uint16(off3 - off2), - Shnum: 3, - Shstrndx: 2, - } - binary.Write(&buf, binary.LittleEndian, &hdr) - prog = elf.Prog64{ - Type: 1, - Off: start, - Vaddr: start, - Paddr: start, - Filesz: uint64(size), - Memsz: uint64(size), - Flags: 5, - Align: start, - } - binary.Write(&buf, binary.LittleEndian, &prog) - binary.Write(&buf, binary.LittleEndian, §) // NULL section - sect = elf.Section64{ - Name: 1, - Type: uint32(elf.SHT_PROGBITS), - Addr: start, - Off: start, - Size: uint64(size), - Flags: uint64(elf.SHF_ALLOC | elf.SHF_EXECINSTR), - Addralign: 4, - } - binary.Write(&buf, binary.LittleEndian, §) // .text - sect = elf.Section64{ - Name: uint32(len("\x00.text\x00")), - Type: uint32(elf.SHT_STRTAB), - Addr: 0, - Off: uint64(off2 + (off3-off2)*3), - Size: uint64(len("\x00.text\x00.shstrtab\x00")), - Addralign: 1, - } - binary.Write(&buf, binary.LittleEndian, §) - buf.WriteString("\x00.text\x00.shstrtab\x00") - f.Write(buf.Bytes()) - return nil -} diff --git a/src/cmd/vendor/golang.org/x/arch/x86/x86asm/plan9ext_test.go b/src/cmd/vendor/golang.org/x/arch/x86/x86asm/plan9ext_test.go deleted file mode 100644 index 9bd296cf756000..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/x86/x86asm/plan9ext_test.go +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright 2014 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. - -package x86asm - -import ( - "bytes" - "fmt" - "io" - "log" - "os" - "strconv" - "testing" -) - -const plan9Path = "testdata/libmach8db" - -func testPlan9Arch(t *testing.T, arch int, generate func(func([]byte))) { - if testing.Short() { - t.Skip("skipping libmach test in short mode") - } - if _, err := os.Stat(plan9Path); err != nil { - t.Skip(err) - } - - testExtDis(t, "plan9", arch, plan9, generate, allowedMismatchPlan9) -} - -func testPlan932(t *testing.T, generate func(func([]byte))) { - testPlan9Arch(t, 32, generate) -} - -func testPlan964(t *testing.T, generate func(func([]byte))) { - testPlan9Arch(t, 64, generate) -} - -func plan9(ext *ExtDis) error { - flag := "-8" - if ext.Arch == 64 { - flag = "-6" - } - b, err := ext.Run(plan9Path, flag, ext.File.Name()) - if err != nil { - return err - } - - nmatch := 0 - next := uint32(start) - var ( - addr uint32 - encbuf [32]byte - enc []byte - text string - ) - - for { - line, err := b.ReadSlice('\n') - if err != nil { - if err == io.EOF { - break - } - return fmt.Errorf("reading libmach8db output: %v", err) - } - if debug { - os.Stdout.Write(line) - } - nmatch++ - addr, enc, text = parseLinePlan9(line, encbuf[:0]) - if addr > next { - return fmt.Errorf("address out of sync expected <= %#x at %q in:\n%s", next, line, line) - } - if addr < next { - continue - } - if m := pcrelw.FindStringSubmatch(text); m != nil { - targ, _ := strconv.ParseUint(m[2], 16, 64) - text = fmt.Sprintf("%s .%+#x", m[1], int16(uint32(targ)-uint32(uint16(addr))-uint32(len(enc)))) - } - if m := pcrel.FindStringSubmatch(text); m != nil { - targ, _ := strconv.ParseUint(m[2], 16, 64) - text = fmt.Sprintf("%s .%+#x", m[1], int32(uint32(targ)-addr-uint32(len(enc)))) - } - ext.Dec <- ExtInst{addr, encbuf, len(enc), text} - encbuf = [32]byte{} - enc = nil - next += 32 - } - if next != start+uint32(ext.Size) { - return fmt.Errorf("not enough results found [%d %d]", next, start+ext.Size) - } - if err := ext.Wait(); err != nil { - return fmt.Errorf("exec: %v", err) - } - - return nil -} - -func parseLinePlan9(line []byte, encstart []byte) (addr uint32, enc []byte, text string) { - i := bytes.IndexByte(line, ' ') - if i < 0 || line[0] != '0' || line[1] != 'x' { - log.Fatalf("cannot parse disassembly: %q", line) - } - j := bytes.IndexByte(line[i+1:], ' ') - if j < 0 { - log.Fatalf("cannot parse disassembly: %q", line) - } - j += i + 1 - x, err := strconv.ParseUint(string(trimSpace(line[2:i])), 16, 32) - if err != nil { - log.Fatalf("cannot parse disassembly: %q", line) - } - addr = uint32(x) - enc, ok := parseHex(line[i+1:j], encstart) - if !ok { - log.Fatalf("cannot parse disassembly: %q", line) - } - return addr, enc, string(fixSpace(line[j+1:])) -} diff --git a/src/cmd/vendor/golang.org/x/arch/x86/x86asm/plan9x_test.go b/src/cmd/vendor/golang.org/x/arch/x86/x86asm/plan9x_test.go deleted file mode 100644 index f2ea28cd90547e..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/x86/x86asm/plan9x_test.go +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2014 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. - -package x86asm - -import ( - "strings" - "testing" -) - -func TestPlan932Manual(t *testing.T) { testPlan932(t, hexCases(t, plan9ManualTests)) } -func TestPlan932Testdata(t *testing.T) { testPlan932(t, concat(basicPrefixes, testdataCases(t))) } -func TestPlan932ModRM(t *testing.T) { testPlan932(t, concat(basicPrefixes, enumModRM)) } -func TestPlan932OneByte(t *testing.T) { testBasic(t, testPlan932) } -func TestPlan9320F(t *testing.T) { testBasic(t, testPlan932, 0x0F) } -func TestPlan9320F38(t *testing.T) { testBasic(t, testPlan932, 0x0F, 0x38) } -func TestPlan9320F3A(t *testing.T) { testBasic(t, testPlan932, 0x0F, 0x3A) } -func TestPlan932Prefix(t *testing.T) { testPrefix(t, testPlan932) } - -func TestPlan964Manual(t *testing.T) { testPlan964(t, hexCases(t, plan9ManualTests)) } -func TestPlan964Testdata(t *testing.T) { testPlan964(t, concat(basicPrefixes, testdataCases(t))) } -func TestPlan964ModRM(t *testing.T) { testPlan964(t, concat(basicPrefixes, enumModRM)) } -func TestPlan964OneByte(t *testing.T) { testBasic(t, testPlan964) } -func TestPlan9640F(t *testing.T) { testBasic(t, testPlan964, 0x0F) } -func TestPlan9640F38(t *testing.T) { testBasic(t, testPlan964, 0x0F, 0x38) } -func TestPlan9640F3A(t *testing.T) { testBasic(t, testPlan964, 0x0F, 0x3A) } -func TestPlan964Prefix(t *testing.T) { testPrefix(t, testPlan964) } - -func TestPlan964REXTestdata(t *testing.T) { - testPlan964(t, filter(concat3(basicPrefixes, rexPrefixes, testdataCases(t)), isValidREX)) -} -func TestPlan964REXModRM(t *testing.T) { testPlan964(t, concat3(basicPrefixes, rexPrefixes, enumModRM)) } -func TestPlan964REXOneByte(t *testing.T) { testBasicREX(t, testPlan964) } -func TestPlan964REX0F(t *testing.T) { testBasicREX(t, testPlan964, 0x0F) } -func TestPlan964REX0F38(t *testing.T) { testBasicREX(t, testPlan964, 0x0F, 0x38) } -func TestPlan964REX0F3A(t *testing.T) { testBasicREX(t, testPlan964, 0x0F, 0x3A) } -func TestPlan964REXPrefix(t *testing.T) { testPrefixREX(t, testPlan964) } - -// plan9ManualTests holds test cases that will be run by TestPlan9Manual32 and TestPlan9Manual64. -// If you are debugging a few cases that turned up in a longer run, it can be useful -// to list them here and then use -run=Plan9Manual, particularly with tracing enabled. -var plan9ManualTests = ` -` - -// allowedMismatchPlan9 reports whether the mismatch between text and dec -// should be allowed by the test. -func allowedMismatchPlan9(text string, size int, inst *Inst, dec ExtInst) bool { - return false -} - -// Instructions known to us but not to plan9. -var plan9Unsupported = strings.Fields(` -`) diff --git a/src/cmd/vendor/golang.org/x/arch/x86/x86asm/testdata/Makefile b/src/cmd/vendor/golang.org/x/arch/x86/x86asm/testdata/Makefile deleted file mode 100644 index 9cb44127a4b785..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/x86/x86asm/testdata/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -libmach8db: libmach8db.c - 9c libmach8db.c && 9l -o libmach8db libmach8db.o; rm libmach8db.o - -newdecode.txt: - cd ..; go test -cover -run 'Objdump.*32' -v -timeout 10h -printtests 2>&1 | tee log - cd ..; go test -cover -run 'Objdump.*64' -v -timeout 10h -printtests 2>&1 | tee -a log - cd ..; go test -cover -run 'Xed.*32' -v -timeout 10h -printtests 2>&1 | tee -a log - cd ..; go test -cover -run 'Xed.*64' -v -timeout 10h -printtests 2>&1 | tee -a log - cd ..; go test -cover -run 'Plan9.*32' -v -timeout 10h -printtests 2>&1 | tee -a log - cd ..; go test -cover -run 'Plan9.*64' -v -timeout 10h -printtests 2>&1 | tee -a log - egrep ' (gnu|intel|plan9) ' ../log |sort >newdecode.txt - diff --git a/src/cmd/vendor/golang.org/x/arch/x86/x86asm/testdata/decode.txt b/src/cmd/vendor/golang.org/x/arch/x86/x86asm/testdata/decode.txt deleted file mode 100644 index 520378916ba807..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/x86/x86asm/testdata/decode.txt +++ /dev/null @@ -1,6771 +0,0 @@ -000511223344|556677885f5f5f5f5f5f 32 intel add byte ptr [0x44332211], al -000511223344|556677885f5f5f5f5f5f 64 gnu add %al,0x44332211(%rip) -000511223344|556677885f5f5f5f5f5f 64 intel add byte ptr [rip+0x44332211], al -0100|11223344556677885f5f5f5f5f5f 32 intel add dword ptr [eax], eax -0100|11223344556677885f5f5f5f5f5f 32 plan9 ADDL AX, 0(AX) -0100|11223344556677885f5f5f5f5f5f 64 gnu add %eax,(%rax) -0100|11223344556677885f5f5f5f5f5f 64 intel add dword ptr [rax], eax -0100|11223344556677885f5f5f5f5f5f 64 plan9 ADDL AX, 0(AX) -0211|223344556677885f5f5f5f5f5f5f 32 intel add dl, byte ptr [ecx] -0211|223344556677885f5f5f5f5f5f5f 32 plan9 ADDB 0(CX), DL -0211|223344556677885f5f5f5f5f5f5f 64 gnu add (%rcx),%dl -0211|223344556677885f5f5f5f5f5f5f 64 intel add dl, byte ptr [rcx] -0211|223344556677885f5f5f5f5f5f5f 64 plan9 ADDB 0(CX), DL -0311|223344556677885f5f5f5f5f5f5f 32 intel add edx, dword ptr [ecx] -0311|223344556677885f5f5f5f5f5f5f 32 plan9 ADDL 0(CX), DX -0311|223344556677885f5f5f5f5f5f5f 64 gnu add (%rcx),%edx -0311|223344556677885f5f5f5f5f5f5f 64 intel add edx, dword ptr [rcx] -0311|223344556677885f5f5f5f5f5f5f 64 plan9 ADDL 0(CX), DX -0411|223344556677885f5f5f5f5f5f5f 32 intel add al, 0x11 -0411|223344556677885f5f5f5f5f5f5f 32 plan9 ADDL $0x11, AL -0411|223344556677885f5f5f5f5f5f5f 64 gnu add $0x11,%al -0411|223344556677885f5f5f5f5f5f5f 64 intel add al, 0x11 -0411|223344556677885f5f5f5f5f5f5f 64 plan9 ADDL $0x11, AL -0511223344|556677885f5f5f5f5f5f5f 32 intel add eax, 0x44332211 -0511223344|556677885f5f5f5f5f5f5f 32 plan9 ADDL $0x44332211, AX -0511223344|556677885f5f5f5f5f5f5f 64 gnu add $0x44332211,%eax -0511223344|556677885f5f5f5f5f5f5f 64 intel add eax, 0x44332211 -0511223344|556677885f5f5f5f5f5f5f 64 plan9 ADDL $0x44332211, AX -06|11223344556677885f5f5f5f5f5f5f 32 intel push es -06|11223344556677885f5f5f5f5f5f5f 32 plan9 PUSHL ES -06|11223344556677885f5f5f5f5f5f5f 64 gnu error: unrecognized instruction -06|11223344556677885f5f5f5f5f5f5f 64 intel error: unrecognized instruction -06|11223344556677885f5f5f5f5f5f5f 64 plan9 error: unrecognized instruction -07|11223344556677885f5f5f5f5f5f5f 32 intel pop es -07|11223344556677885f5f5f5f5f5f5f 32 plan9 POPL ES -07|11223344556677885f5f5f5f5f5f5f 64 gnu error: unrecognized instruction -07|11223344556677885f5f5f5f5f5f5f 64 intel error: unrecognized instruction -07|11223344556677885f5f5f5f5f5f5f 64 plan9 error: unrecognized instruction -0811|223344556677885f5f5f5f5f5f5f 32 intel or byte ptr [ecx], dl -0811|223344556677885f5f5f5f5f5f5f 32 plan9 ORB DL, 0(CX) -0811|223344556677885f5f5f5f5f5f5f 64 gnu or %dl,(%rcx) -0811|223344556677885f5f5f5f5f5f5f 64 intel or byte ptr [rcx], dl -0811|223344556677885f5f5f5f5f5f5f 64 plan9 ORB DL, 0(CX) -0911|223344556677885f5f5f5f5f5f5f 32 intel or dword ptr [ecx], edx -0911|223344556677885f5f5f5f5f5f5f 32 plan9 ORL DX, 0(CX) -0911|223344556677885f5f5f5f5f5f5f 64 gnu or %edx,(%rcx) -0911|223344556677885f5f5f5f5f5f5f 64 intel or dword ptr [rcx], edx -0911|223344556677885f5f5f5f5f5f5f 64 plan9 ORL DX, 0(CX) -0a11|223344556677885f5f5f5f5f5f5f 32 intel or dl, byte ptr [ecx] -0a11|223344556677885f5f5f5f5f5f5f 32 plan9 ORB 0(CX), DL -0a11|223344556677885f5f5f5f5f5f5f 64 gnu or (%rcx),%dl -0a11|223344556677885f5f5f5f5f5f5f 64 intel or dl, byte ptr [rcx] -0a11|223344556677885f5f5f5f5f5f5f 64 plan9 ORB 0(CX), DL -0b11|223344556677885f5f5f5f5f5f5f 32 intel or edx, dword ptr [ecx] -0b11|223344556677885f5f5f5f5f5f5f 32 plan9 ORL 0(CX), DX -0b11|223344556677885f5f5f5f5f5f5f 64 gnu or (%rcx),%edx -0b11|223344556677885f5f5f5f5f5f5f 64 intel or edx, dword ptr [rcx] -0b11|223344556677885f5f5f5f5f5f5f 64 plan9 ORL 0(CX), DX -0c11|223344556677885f5f5f5f5f5f5f 32 intel or al, 0x11 -0c11|223344556677885f5f5f5f5f5f5f 32 plan9 ORL $0x11, AL -0c11|223344556677885f5f5f5f5f5f5f 64 gnu or $0x11,%al -0c11|223344556677885f5f5f5f5f5f5f 64 intel or al, 0x11 -0c11|223344556677885f5f5f5f5f5f5f 64 plan9 ORL $0x11, AL -0d11223344|556677885f5f5f5f5f5f5f 32 intel or eax, 0x44332211 -0d11223344|556677885f5f5f5f5f5f5f 32 plan9 ORL $0x44332211, AX -0d11223344|556677885f5f5f5f5f5f5f 64 gnu or $0x44332211,%eax -0d11223344|556677885f5f5f5f5f5f5f 64 intel or eax, 0x44332211 -0d11223344|556677885f5f5f5f5f5f5f 64 plan9 ORL $0x44332211, AX -0e|11223344556677885f5f5f5f5f5f5f 32 intel push cs -0e|11223344556677885f5f5f5f5f5f5f 32 plan9 PUSHL CS -0e|11223344556677885f5f5f5f5f5f5f 64 gnu error: unrecognized instruction -0e|11223344556677885f5f5f5f5f5f5f 64 intel error: unrecognized instruction -0e|11223344556677885f5f5f5f5f5f5f 64 plan9 error: unrecognized instruction -0f0000|11223344556677885f5f5f5f5f 32 intel sldt word ptr [eax] -0f0000|11223344556677885f5f5f5f5f 32 plan9 SLDT 0(AX) -0f0000|11223344556677885f5f5f5f5f 64 gnu sldt (%rax) -0f0000|11223344556677885f5f5f5f5f 64 intel sldt word ptr [rax] -0f0000|11223344556677885f5f5f5f5f 64 plan9 SLDT 0(AX) -0f0008|11223344556677885f5f5f5f5f 32 intel str word ptr [eax] -0f0008|11223344556677885f5f5f5f5f 32 plan9 STR 0(AX) -0f0008|11223344556677885f5f5f5f5f 64 gnu str (%rax) -0f0008|11223344556677885f5f5f5f5f 64 intel str word ptr [rax] -0f0008|11223344556677885f5f5f5f5f 64 plan9 STR 0(AX) -0f0011|223344556677885f5f5f5f5f5f 32 intel lldt word ptr [ecx] -0f0011|223344556677885f5f5f5f5f5f 32 plan9 LLDT 0(CX) -0f0011|223344556677885f5f5f5f5f5f 64 gnu lldt (%rcx) -0f0011|223344556677885f5f5f5f5f5f 64 intel lldt word ptr [rcx] -0f0011|223344556677885f5f5f5f5f5f 64 plan9 LLDT 0(CX) -0f0018|11223344556677885f5f5f5f5f 32 intel ltr word ptr [eax] -0f0018|11223344556677885f5f5f5f5f 32 plan9 LTR 0(AX) -0f0018|11223344556677885f5f5f5f5f 64 gnu ltr (%rax) -0f0018|11223344556677885f5f5f5f5f 64 intel ltr word ptr [rax] -0f0018|11223344556677885f5f5f5f5f 64 plan9 LTR 0(AX) -0f0020|11223344556677885f5f5f5f5f 32 intel verr word ptr [eax] -0f0020|11223344556677885f5f5f5f5f 32 plan9 VERR 0(AX) -0f0020|11223344556677885f5f5f5f5f 64 gnu verr (%rax) -0f0020|11223344556677885f5f5f5f5f 64 intel verr word ptr [rax] -0f0020|11223344556677885f5f5f5f5f 64 plan9 VERR 0(AX) -0f0028|11223344556677885f5f5f5f5f 32 intel verw word ptr [eax] -0f0028|11223344556677885f5f5f5f5f 32 plan9 VERW 0(AX) -0f0028|11223344556677885f5f5f5f5f 64 gnu verw (%rax) -0f0028|11223344556677885f5f5f5f5f 64 intel verw word ptr [rax] -0f0028|11223344556677885f5f5f5f5f 64 plan9 VERW 0(AX) -0f0030|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f0030|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f0100|11223344556677885f5f5f5f5f 32 intel sgdt ptr [eax] -0f0100|11223344556677885f5f5f5f5f 32 plan9 SGDT 0(AX) -0f0100|11223344556677885f5f5f5f5f 64 gnu sgdtl (%rax) -0f0100|11223344556677885f5f5f5f5f 64 intel sgdt ptr [rax] -0f0100|11223344556677885f5f5f5f5f 64 plan9 SGDT 0(AX) -0f0108|11223344556677885f5f5f5f5f 32 intel sidt ptr [eax] -0f0108|11223344556677885f5f5f5f5f 32 plan9 SIDT 0(AX) -0f0108|11223344556677885f5f5f5f5f 64 gnu sidtl (%rax) -0f0108|11223344556677885f5f5f5f5f 64 intel sidt ptr [rax] -0f0108|11223344556677885f5f5f5f5f 64 plan9 SIDT 0(AX) -0f0111|223344556677885f5f5f5f5f5f 32 intel lgdt ptr [ecx] -0f0111|223344556677885f5f5f5f5f5f 32 plan9 LGDT 0(CX) -0f0111|223344556677885f5f5f5f5f5f 64 gnu lgdtl (%rcx) -0f0111|223344556677885f5f5f5f5f5f 64 intel lgdt ptr [rcx] -0f0111|223344556677885f5f5f5f5f5f 64 plan9 LGDT 0(CX) -0f0118|11223344556677885f5f5f5f5f 32 intel lidt ptr [eax] -0f0118|11223344556677885f5f5f5f5f 32 plan9 LIDT 0(AX) -0f0118|11223344556677885f5f5f5f5f 64 gnu lidtl (%rax) -0f0118|11223344556677885f5f5f5f5f 64 intel lidt ptr [rax] -0f0118|11223344556677885f5f5f5f5f 64 plan9 LIDT 0(AX) -0f0120|11223344556677885f5f5f5f5f 32 intel smsw word ptr [eax] -0f0120|11223344556677885f5f5f5f5f 32 plan9 SMSW 0(AX) -0f0120|11223344556677885f5f5f5f5f 64 gnu smsw (%rax) -0f0120|11223344556677885f5f5f5f5f 64 intel smsw word ptr [rax] -0f0120|11223344556677885f5f5f5f5f 64 plan9 SMSW 0(AX) -0f0130|11223344556677885f5f5f5f5f 32 intel lmsw word ptr [eax] -0f0130|11223344556677885f5f5f5f5f 32 plan9 LMSW 0(AX) -0f0130|11223344556677885f5f5f5f5f 64 gnu lmsw (%rax) -0f0130|11223344556677885f5f5f5f5f 64 intel lmsw word ptr [rax] -0f0130|11223344556677885f5f5f5f5f 64 plan9 LMSW 0(AX) -0f0138|11223344556677885f5f5f5f5f 32 intel invlpg byte ptr [eax] -0f0138|11223344556677885f5f5f5f5f 32 plan9 INVLPG 0(AX) -0f0138|11223344556677885f5f5f5f5f 64 gnu invlpg (%rax) -0f0138|11223344556677885f5f5f5f5f 64 intel invlpg byte ptr [rax] -0f0138|11223344556677885f5f5f5f5f 64 plan9 INVLPG 0(AX) -0f01c8|11223344556677885f5f5f5f5f 32 intel monitor -0f01c8|11223344556677885f5f5f5f5f 32 plan9 MONITOR -0f01c8|11223344556677885f5f5f5f5f 64 gnu monitor %eax,%ecx,%edx -0f01c8|11223344556677885f5f5f5f5f 64 intel monitor -0f01c8|11223344556677885f5f5f5f5f 64 plan9 MONITOR -0f01c9|11223344556677885f5f5f5f5f 32 intel mwait -0f01c9|11223344556677885f5f5f5f5f 32 plan9 MWAIT -0f01c9|11223344556677885f5f5f5f5f 64 gnu mwait %rax,%rcx -0f01c9|11223344556677885f5f5f5f5f 64 intel mwait -0f01c9|11223344556677885f5f5f5f5f 64 plan9 MWAIT -0f01d0|11223344556677885f5f5f5f5f 32 intel xgetbv -0f01d0|11223344556677885f5f5f5f5f 32 plan9 XGETBV -0f01d0|11223344556677885f5f5f5f5f 64 gnu xgetbv -0f01d0|11223344556677885f5f5f5f5f 64 intel xgetbv -0f01d0|11223344556677885f5f5f5f5f 64 plan9 XGETBV -0f01d1|11223344556677885f5f5f5f5f 32 intel xsetbv -0f01d1|11223344556677885f5f5f5f5f 32 plan9 XSETBV -0f01d1|11223344556677885f5f5f5f5f 64 gnu xsetbv -0f01d1|11223344556677885f5f5f5f5f 64 intel xsetbv -0f01d1|11223344556677885f5f5f5f5f 64 plan9 XSETBV -0f01d5|11223344556677885f5f5f5f5f 32 intel xend -0f01d5|11223344556677885f5f5f5f5f 32 plan9 XEND -0f01d5|11223344556677885f5f5f5f5f 64 gnu xend -0f01d5|11223344556677885f5f5f5f5f 64 intel xend -0f01d5|11223344556677885f5f5f5f5f 64 plan9 XEND -0f01d6|11223344556677885f5f5f5f5f 32 intel xtest -0f01d6|11223344556677885f5f5f5f5f 32 plan9 XTEST -0f01d6|11223344556677885f5f5f5f5f 64 gnu xtest -0f01d6|11223344556677885f5f5f5f5f 64 intel xtest -0f01d6|11223344556677885f5f5f5f5f 64 plan9 XTEST -0f01f8|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f01f8|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f01f8|11223344556677885f5f5f5f5f 64 gnu swapgs -0f01f8|11223344556677885f5f5f5f5f 64 intel swapgs -0f01f8|11223344556677885f5f5f5f5f 64 plan9 SWAPGS -0f01f9|11223344556677885f5f5f5f5f 32 intel rdtscp -0f01f9|11223344556677885f5f5f5f5f 32 plan9 RDTSCP -0f01f9|11223344556677885f5f5f5f5f 64 gnu rdtscp -0f01f9|11223344556677885f5f5f5f5f 64 intel rdtscp -0f01f9|11223344556677885f5f5f5f5f 64 plan9 RDTSCP -0f0211|223344556677885f5f5f5f5f5f 32 intel lar edx, word ptr [ecx] -0f0211|223344556677885f5f5f5f5f5f 32 plan9 LAR 0(CX), DX -0f0211|223344556677885f5f5f5f5f5f 64 gnu lar (%rcx),%edx -0f0211|223344556677885f5f5f5f5f5f 64 intel lar edx, word ptr [rcx] -0f0211|223344556677885f5f5f5f5f5f 64 plan9 LAR 0(CX), DX -0f0311|223344556677885f5f5f5f5f5f 32 intel lsl edx, word ptr [ecx] -0f0311|223344556677885f5f5f5f5f5f 32 plan9 LSL 0(CX), DX -0f0311|223344556677885f5f5f5f5f5f 64 gnu lsl (%rcx),%edx -0f0311|223344556677885f5f5f5f5f5f 64 intel lsl edx, word ptr [rcx] -0f0311|223344556677885f5f5f5f5f5f 64 plan9 LSL 0(CX), DX -0f04|11223344556677885f5f5f5f5f5f 32 intel error: unrecognized instruction -0f04|11223344556677885f5f5f5f5f5f 32 plan9 error: unrecognized instruction -0f04|11223344556677885f5f5f5f5f5f 64 gnu error: unrecognized instruction -0f04|11223344556677885f5f5f5f5f5f 64 intel error: unrecognized instruction -0f04|11223344556677885f5f5f5f5f5f 64 plan9 error: unrecognized instruction -0f05|11223344556677885f5f5f5f5f5f 32 intel error: unrecognized instruction -0f05|11223344556677885f5f5f5f5f5f 32 plan9 error: unrecognized instruction -0f05|11223344556677885f5f5f5f5f5f 64 gnu syscall -0f05|11223344556677885f5f5f5f5f5f 64 intel syscall -0f05|11223344556677885f5f5f5f5f5f 64 plan9 SYSCALL -0f06|11223344556677885f5f5f5f5f5f 32 intel clts -0f06|11223344556677885f5f5f5f5f5f 32 plan9 CLTS -0f06|11223344556677885f5f5f5f5f5f 64 gnu clts -0f06|11223344556677885f5f5f5f5f5f 64 intel clts -0f06|11223344556677885f5f5f5f5f5f 64 plan9 CLTS -0f07|11223344556677885f5f5f5f5f5f 32 intel error: unrecognized instruction -0f07|11223344556677885f5f5f5f5f5f 32 plan9 error: unrecognized instruction -0f07|11223344556677885f5f5f5f5f5f 64 gnu sysretq -0f07|11223344556677885f5f5f5f5f5f 64 intel sysret -0f07|11223344556677885f5f5f5f5f5f 64 plan9 SYSRET -0f08|11223344556677885f5f5f5f5f5f 32 intel invd -0f08|11223344556677885f5f5f5f5f5f 32 plan9 INVD -0f08|11223344556677885f5f5f5f5f5f 64 gnu invd -0f08|11223344556677885f5f5f5f5f5f 64 intel invd -0f08|11223344556677885f5f5f5f5f5f 64 plan9 INVD -0f09|11223344556677885f5f5f5f5f5f 32 intel wbinvd -0f09|11223344556677885f5f5f5f5f5f 32 plan9 WBINVD -0f09|11223344556677885f5f5f5f5f5f 64 gnu wbinvd -0f09|11223344556677885f5f5f5f5f5f 64 intel wbinvd -0f09|11223344556677885f5f5f5f5f5f 64 plan9 WBINVD -0f0b|11223344556677885f5f5f5f5f5f 32 intel ud2 -0f0b|11223344556677885f5f5f5f5f5f 32 plan9 UD2 -0f0b|11223344556677885f5f5f5f5f5f 64 gnu ud2 -0f0b|11223344556677885f5f5f5f5f5f 64 intel ud2 -0f0b|11223344556677885f5f5f5f5f5f 64 plan9 UD2 -0f0d08|11223344556677885f5f5f5f5f 32 intel prefetchw zmmword ptr [eax] -0f0d08|11223344556677885f5f5f5f5f 32 plan9 PREFETCHW 0(AX) -0f0d08|11223344556677885f5f5f5f5f 64 gnu prefetchw (%rax) -0f0d08|11223344556677885f5f5f5f5f 64 intel prefetchw zmmword ptr [rax] -0f0d08|11223344556677885f5f5f5f5f 64 plan9 PREFETCHW 0(AX) -0f1011|223344556677885f5f5f5f5f5f 32 intel movups xmm2, xmmword ptr [ecx] -0f1011|223344556677885f5f5f5f5f5f 32 plan9 MOVUPS 0(CX), X2 -0f1011|223344556677885f5f5f5f5f5f 64 gnu movups (%rcx),%xmm2 -0f1011|223344556677885f5f5f5f5f5f 64 intel movups xmm2, xmmword ptr [rcx] -0f1011|223344556677885f5f5f5f5f5f 64 plan9 MOVUPS 0(CX), X2 -0f1122|3344556677885f5f5f5f5f5f5f 32 intel movups xmmword ptr [edx], xmm4 -0f1122|3344556677885f5f5f5f5f5f5f 32 plan9 MOVUPS X4, 0(DX) -0f1122|3344556677885f5f5f5f5f5f5f 64 gnu movups %xmm4,(%rdx) -0f1122|3344556677885f5f5f5f5f5f5f 64 intel movups xmmword ptr [rdx], xmm4 -0f1122|3344556677885f5f5f5f5f5f5f 64 plan9 MOVUPS X4, 0(DX) -0f1211|223344556677885f5f5f5f5f5f 32 intel movlps xmm2, qword ptr [ecx] -0f1211|223344556677885f5f5f5f5f5f 32 plan9 MOVLPS 0(CX), X2 -0f1211|223344556677885f5f5f5f5f5f 64 gnu movlps (%rcx),%xmm2 -0f1211|223344556677885f5f5f5f5f5f 64 intel movlps xmm2, qword ptr [rcx] -0f1211|223344556677885f5f5f5f5f5f 64 plan9 MOVLPS 0(CX), X2 -0f12c0|11223344556677885f5f5f5f5f 32 intel movhlps xmm0, xmm0 -0f12c0|11223344556677885f5f5f5f5f 32 plan9 MOVHLPS X0, X0 -0f12c0|11223344556677885f5f5f5f5f 64 gnu movhlps %xmm0,%xmm0 -0f12c0|11223344556677885f5f5f5f5f 64 intel movhlps xmm0, xmm0 -0f12c0|11223344556677885f5f5f5f5f 64 plan9 MOVHLPS X0, X0 -0f1311|223344556677885f5f5f5f5f5f 32 intel movlps qword ptr [ecx], xmm2 -0f1311|223344556677885f5f5f5f5f5f 32 plan9 MOVLPS X2, 0(CX) -0f1311|223344556677885f5f5f5f5f5f 64 gnu movlps %xmm2,(%rcx) -0f1311|223344556677885f5f5f5f5f5f 64 intel movlps qword ptr [rcx], xmm2 -0f1311|223344556677885f5f5f5f5f5f 64 plan9 MOVLPS X2, 0(CX) -0f1411|223344556677885f5f5f5f5f5f 32 intel unpcklps xmm2, xmmword ptr [ecx] -0f1411|223344556677885f5f5f5f5f5f 32 plan9 UNPCKLPS 0(CX), X2 -0f1411|223344556677885f5f5f5f5f5f 64 gnu unpcklps (%rcx),%xmm2 -0f1411|223344556677885f5f5f5f5f5f 64 intel unpcklps xmm2, xmmword ptr [rcx] -0f1411|223344556677885f5f5f5f5f5f 64 plan9 UNPCKLPS 0(CX), X2 -0f1511|223344556677885f5f5f5f5f5f 32 intel unpckhps xmm2, xmmword ptr [ecx] -0f1511|223344556677885f5f5f5f5f5f 32 plan9 UNPCKHPS 0(CX), X2 -0f1511|223344556677885f5f5f5f5f5f 64 gnu unpckhps (%rcx),%xmm2 -0f1511|223344556677885f5f5f5f5f5f 64 intel unpckhps xmm2, xmmword ptr [rcx] -0f1511|223344556677885f5f5f5f5f5f 64 plan9 UNPCKHPS 0(CX), X2 -0f1611|223344556677885f5f5f5f5f5f 32 intel movhps xmm2, qword ptr [ecx] -0f1611|223344556677885f5f5f5f5f5f 32 plan9 MOVHPS 0(CX), X2 -0f1611|223344556677885f5f5f5f5f5f 64 gnu movhps (%rcx),%xmm2 -0f1611|223344556677885f5f5f5f5f5f 64 intel movhps xmm2, qword ptr [rcx] -0f1611|223344556677885f5f5f5f5f5f 64 plan9 MOVHPS 0(CX), X2 -0f16c0|11223344556677885f5f5f5f5f 32 intel movlhps xmm0, xmm0 -0f16c0|11223344556677885f5f5f5f5f 32 plan9 MOVLHPS X0, X0 -0f16c0|11223344556677885f5f5f5f5f 64 gnu movlhps %xmm0,%xmm0 -0f16c0|11223344556677885f5f5f5f5f 64 intel movlhps xmm0, xmm0 -0f16c0|11223344556677885f5f5f5f5f 64 plan9 MOVLHPS X0, X0 -0f1711|223344556677885f5f5f5f5f5f 32 intel movhps qword ptr [ecx], xmm2 -0f1711|223344556677885f5f5f5f5f5f 32 plan9 MOVHPS X2, 0(CX) -0f1711|223344556677885f5f5f5f5f5f 64 gnu movhps %xmm2,(%rcx) -0f1711|223344556677885f5f5f5f5f5f 64 intel movhps qword ptr [rcx], xmm2 -0f1711|223344556677885f5f5f5f5f5f 64 plan9 MOVHPS X2, 0(CX) -0f1800|11223344556677885f5f5f5f5f 32 intel prefetchnta zmmword ptr [eax] -0f1800|11223344556677885f5f5f5f5f 32 plan9 PREFETCHNTA 0(AX) -0f1800|11223344556677885f5f5f5f5f 64 gnu prefetchnta (%rax) -0f1800|11223344556677885f5f5f5f5f 64 intel prefetchnta zmmword ptr [rax] -0f1800|11223344556677885f5f5f5f5f 64 plan9 PREFETCHNTA 0(AX) -0f1808|11223344556677885f5f5f5f5f 32 intel prefetcht0 zmmword ptr [eax] -0f1808|11223344556677885f5f5f5f5f 32 plan9 PREFETCHT0 0(AX) -0f1808|11223344556677885f5f5f5f5f 64 gnu prefetcht0 (%rax) -0f1808|11223344556677885f5f5f5f5f 64 intel prefetcht0 zmmword ptr [rax] -0f1808|11223344556677885f5f5f5f5f 64 plan9 PREFETCHT0 0(AX) -0f1811|223344556677885f5f5f5f5f5f 32 intel prefetcht1 zmmword ptr [ecx] -0f1811|223344556677885f5f5f5f5f5f 32 plan9 PREFETCHT1 0(CX) -0f1811|223344556677885f5f5f5f5f5f 64 gnu prefetcht1 (%rcx) -0f1811|223344556677885f5f5f5f5f5f 64 intel prefetcht1 zmmword ptr [rcx] -0f1811|223344556677885f5f5f5f5f5f 64 plan9 PREFETCHT1 0(CX) -0f1818|11223344556677885f5f5f5f5f 32 intel prefetcht2 zmmword ptr [eax] -0f1818|11223344556677885f5f5f5f5f 32 plan9 PREFETCHT2 0(AX) -0f1818|11223344556677885f5f5f5f5f 64 gnu prefetcht2 (%rax) -0f1818|11223344556677885f5f5f5f5f 64 intel prefetcht2 zmmword ptr [rax] -0f1818|11223344556677885f5f5f5f5f 64 plan9 PREFETCHT2 0(AX) -0f1f00|11223344556677885f5f5f5f5f 32 intel nop dword ptr [eax], eax -0f1f00|11223344556677885f5f5f5f5f 32 plan9 NOPL 0(AX) -0f1f00|11223344556677885f5f5f5f5f 64 gnu nopl (%rax) -0f1f00|11223344556677885f5f5f5f5f 64 intel nop dword ptr [rax], eax -0f1f00|11223344556677885f5f5f5f5f 64 plan9 NOPL 0(AX) -0f2011|223344556677885f5f5f5f5f5f 32 intel mov ecx, cr2 -0f2011|223344556677885f5f5f5f5f5f 32 plan9 MOVL CR2, CX -0f2011|223344556677885f5f5f5f5f5f 64 gnu mov %cr2,%rcx -0f2011|223344556677885f5f5f5f5f5f 64 intel mov rcx, cr2 -0f2011|223344556677885f5f5f5f5f5f 64 plan9 MOVL CR2, CX -0f2111|223344556677885f5f5f5f5f5f 32 intel mov ecx, dr2 -0f2111|223344556677885f5f5f5f5f5f 32 plan9 MOVL DR2, CX -0f2111|223344556677885f5f5f5f5f5f 64 gnu mov %db2,%rcx -0f2111|223344556677885f5f5f5f5f5f 64 intel mov rcx, dr2 -0f2111|223344556677885f5f5f5f5f5f 64 plan9 MOVL DR2, CX -0f2211|223344556677885f5f5f5f5f5f 32 intel mov cr2, ecx -0f2211|223344556677885f5f5f5f5f5f 32 plan9 MOVL CX, CR2 -0f2211|223344556677885f5f5f5f5f5f 64 gnu mov %rcx,%cr2 -0f2211|223344556677885f5f5f5f5f5f 64 intel mov cr2, rcx -0f2211|223344556677885f5f5f5f5f5f 64 plan9 MOVL CX, CR2 -0f2311|223344556677885f5f5f5f5f5f 32 intel mov dr2, ecx -0f2311|223344556677885f5f5f5f5f5f 32 plan9 MOVL CX, DR2 -0f2311|223344556677885f5f5f5f5f5f 64 gnu mov %rcx,%db2 -0f2311|223344556677885f5f5f5f5f5f 64 intel mov dr2, rcx -0f2311|223344556677885f5f5f5f5f5f 64 plan9 MOVL CX, DR2 -0f2411|223344556677885f5f5f5f5f5f 32 intel mov ecx, tr2 -0f2411|223344556677885f5f5f5f5f5f 32 plan9 MOVL TR2, CX -0f2411|223344556677885f5f5f5f5f5f 64 gnu mov %tr2,%rcx -0f2411|223344556677885f5f5f5f5f5f 64 intel mov rcx, tr2 -0f2411|223344556677885f5f5f5f5f5f 64 plan9 MOVL TR2, CX -0f2611|223344556677885f5f5f5f5f5f 32 intel mov tr2, ecx -0f2611|223344556677885f5f5f5f5f5f 32 plan9 MOVL CX, TR2 -0f2611|223344556677885f5f5f5f5f5f 64 gnu mov %rcx,%tr2 -0f2611|223344556677885f5f5f5f5f5f 64 intel mov tr2, rcx -0f2611|223344556677885f5f5f5f5f5f 64 plan9 MOVL CX, TR2 -0f2811|223344556677885f5f5f5f5f5f 32 intel movaps xmm2, xmmword ptr [ecx] -0f2811|223344556677885f5f5f5f5f5f 32 plan9 MOVAPS 0(CX), X2 -0f2811|223344556677885f5f5f5f5f5f 64 gnu movaps (%rcx),%xmm2 -0f2811|223344556677885f5f5f5f5f5f 64 intel movaps xmm2, xmmword ptr [rcx] -0f2811|223344556677885f5f5f5f5f5f 64 plan9 MOVAPS 0(CX), X2 -0f2911|223344556677885f5f5f5f5f5f 32 intel movaps xmmword ptr [ecx], xmm2 -0f2911|223344556677885f5f5f5f5f5f 32 plan9 MOVAPS X2, 0(CX) -0f2911|223344556677885f5f5f5f5f5f 64 gnu movaps %xmm2,(%rcx) -0f2911|223344556677885f5f5f5f5f5f 64 intel movaps xmmword ptr [rcx], xmm2 -0f2911|223344556677885f5f5f5f5f5f 64 plan9 MOVAPS X2, 0(CX) -0f2a11|223344556677885f5f5f5f5f5f 32 intel cvtpi2ps xmm2, qword ptr [ecx] -0f2a11|223344556677885f5f5f5f5f5f 32 plan9 CVTPI2PS 0(CX), X2 -0f2a11|223344556677885f5f5f5f5f5f 64 gnu cvtpi2ps (%rcx),%xmm2 -0f2a11|223344556677885f5f5f5f5f5f 64 intel cvtpi2ps xmm2, qword ptr [rcx] -0f2a11|223344556677885f5f5f5f5f5f 64 plan9 CVTPI2PS 0(CX), X2 -0f2b11|223344556677885f5f5f5f5f5f 32 intel movntps xmmword ptr [ecx], xmm2 -0f2b11|223344556677885f5f5f5f5f5f 32 plan9 MOVNTPS X2, 0(CX) -0f2b11|223344556677885f5f5f5f5f5f 64 gnu movntps %xmm2,(%rcx) -0f2b11|223344556677885f5f5f5f5f5f 64 intel movntps xmmword ptr [rcx], xmm2 -0f2b11|223344556677885f5f5f5f5f5f 64 plan9 MOVNTPS X2, 0(CX) -0f2c11|223344556677885f5f5f5f5f5f 32 intel cvttps2pi mmx2, qword ptr [ecx] -0f2c11|223344556677885f5f5f5f5f5f 32 plan9 CVTTPS2PI 0(CX), M2 -0f2c11|223344556677885f5f5f5f5f5f 64 gnu cvttps2pi (%rcx),%mm2 -0f2c11|223344556677885f5f5f5f5f5f 64 intel cvttps2pi mmx2, qword ptr [rcx] -0f2c11|223344556677885f5f5f5f5f5f 64 plan9 CVTTPS2PI 0(CX), M2 -0f2d11|223344556677885f5f5f5f5f5f 32 intel cvtps2pi mmx2, qword ptr [ecx] -0f2d11|223344556677885f5f5f5f5f5f 32 plan9 CVTPS2PI 0(CX), M2 -0f2d11|223344556677885f5f5f5f5f5f 64 gnu cvtps2pi (%rcx),%mm2 -0f2d11|223344556677885f5f5f5f5f5f 64 intel cvtps2pi mmx2, qword ptr [rcx] -0f2d11|223344556677885f5f5f5f5f5f 64 plan9 CVTPS2PI 0(CX), M2 -0f2e11|223344556677885f5f5f5f5f5f 32 intel ucomiss xmm2, dword ptr [ecx] -0f2e11|223344556677885f5f5f5f5f5f 32 plan9 UCOMISS 0(CX), X2 -0f2e11|223344556677885f5f5f5f5f5f 64 gnu ucomiss (%rcx),%xmm2 -0f2e11|223344556677885f5f5f5f5f5f 64 intel ucomiss xmm2, dword ptr [rcx] -0f2e11|223344556677885f5f5f5f5f5f 64 plan9 UCOMISS 0(CX), X2 -0f2f11|223344556677885f5f5f5f5f5f 32 intel comiss xmm2, dword ptr [ecx] -0f2f11|223344556677885f5f5f5f5f5f 32 plan9 COMISS 0(CX), X2 -0f2f11|223344556677885f5f5f5f5f5f 64 gnu comiss (%rcx),%xmm2 -0f2f11|223344556677885f5f5f5f5f5f 64 intel comiss xmm2, dword ptr [rcx] -0f2f11|223344556677885f5f5f5f5f5f 64 plan9 COMISS 0(CX), X2 -0f30|11223344556677885f5f5f5f5f5f 32 intel wrmsr -0f30|11223344556677885f5f5f5f5f5f 32 plan9 WRMSR -0f30|11223344556677885f5f5f5f5f5f 64 gnu wrmsr -0f30|11223344556677885f5f5f5f5f5f 64 intel wrmsr -0f30|11223344556677885f5f5f5f5f5f 64 plan9 WRMSR -0f31|11223344556677885f5f5f5f5f5f 32 intel rdtsc -0f31|11223344556677885f5f5f5f5f5f 32 plan9 RDTSC -0f31|11223344556677885f5f5f5f5f5f 64 gnu rdtsc -0f31|11223344556677885f5f5f5f5f5f 64 intel rdtsc -0f31|11223344556677885f5f5f5f5f5f 64 plan9 RDTSC -0f32|11223344556677885f5f5f5f5f5f 32 intel rdmsr -0f32|11223344556677885f5f5f5f5f5f 32 plan9 RDMSR -0f32|11223344556677885f5f5f5f5f5f 64 gnu rdmsr -0f32|11223344556677885f5f5f5f5f5f 64 intel rdmsr -0f32|11223344556677885f5f5f5f5f5f 64 plan9 RDMSR -0f33|11223344556677885f5f5f5f5f5f 32 intel rdpmc -0f33|11223344556677885f5f5f5f5f5f 32 plan9 RDPMC -0f33|11223344556677885f5f5f5f5f5f 64 gnu rdpmc -0f33|11223344556677885f5f5f5f5f5f 64 intel rdpmc -0f33|11223344556677885f5f5f5f5f5f 64 plan9 RDPMC -0f34|11223344556677885f5f5f5f5f5f 32 intel sysenter -0f34|11223344556677885f5f5f5f5f5f 32 plan9 SYSENTER -0f34|11223344556677885f5f5f5f5f5f 64 gnu sysenter -0f34|11223344556677885f5f5f5f5f5f 64 intel sysenter -0f34|11223344556677885f5f5f5f5f5f 64 plan9 SYSENTER -0f35|11223344556677885f5f5f5f5f5f 32 intel sysexit -0f35|11223344556677885f5f5f5f5f5f 32 plan9 SYSEXIT -0f35|11223344556677885f5f5f5f5f5f 64 gnu sysexit -0f35|11223344556677885f5f5f5f5f5f 64 intel sysexit -0f35|11223344556677885f5f5f5f5f5f 64 plan9 SYSEXIT -0f380011|223344556677885f5f5f5f5f 32 intel pshufb mmx2, qword ptr [ecx] -0f380011|223344556677885f5f5f5f5f 32 plan9 PSHUFB 0(CX), M2 -0f380011|223344556677885f5f5f5f5f 64 gnu pshufb (%rcx),%mm2 -0f380011|223344556677885f5f5f5f5f 64 intel pshufb mmx2, qword ptr [rcx] -0f380011|223344556677885f5f5f5f5f 64 plan9 PSHUFB 0(CX), M2 -0f380111|223344556677885f5f5f5f5f 32 intel phaddw mmx2, qword ptr [ecx] -0f380111|223344556677885f5f5f5f5f 32 plan9 PHADDW 0(CX), M2 -0f380111|223344556677885f5f5f5f5f 64 gnu phaddw (%rcx),%mm2 -0f380111|223344556677885f5f5f5f5f 64 intel phaddw mmx2, qword ptr [rcx] -0f380111|223344556677885f5f5f5f5f 64 plan9 PHADDW 0(CX), M2 -0f380211|223344556677885f5f5f5f5f 32 intel phaddd mmx2, qword ptr [ecx] -0f380211|223344556677885f5f5f5f5f 32 plan9 PHADDD 0(CX), M2 -0f380211|223344556677885f5f5f5f5f 64 gnu phaddd (%rcx),%mm2 -0f380211|223344556677885f5f5f5f5f 64 intel phaddd mmx2, qword ptr [rcx] -0f380211|223344556677885f5f5f5f5f 64 plan9 PHADDD 0(CX), M2 -0f380311|223344556677885f5f5f5f5f 32 intel phaddsw mmx2, qword ptr [ecx] -0f380311|223344556677885f5f5f5f5f 32 plan9 PHADDSW 0(CX), M2 -0f380311|223344556677885f5f5f5f5f 64 gnu phaddsw (%rcx),%mm2 -0f380311|223344556677885f5f5f5f5f 64 intel phaddsw mmx2, qword ptr [rcx] -0f380311|223344556677885f5f5f5f5f 64 plan9 PHADDSW 0(CX), M2 -0f380411|223344556677885f5f5f5f5f 32 intel pmaddubsw mmx2, qword ptr [ecx] -0f380411|223344556677885f5f5f5f5f 32 plan9 PMADDUBSW 0(CX), M2 -0f380411|223344556677885f5f5f5f5f 64 gnu pmaddubsw (%rcx),%mm2 -0f380411|223344556677885f5f5f5f5f 64 intel pmaddubsw mmx2, qword ptr [rcx] -0f380411|223344556677885f5f5f5f5f 64 plan9 PMADDUBSW 0(CX), M2 -0f380511|223344556677885f5f5f5f5f 32 intel phsubw mmx2, qword ptr [ecx] -0f380511|223344556677885f5f5f5f5f 32 plan9 PHSUBW 0(CX), M2 -0f380511|223344556677885f5f5f5f5f 64 gnu phsubw (%rcx),%mm2 -0f380511|223344556677885f5f5f5f5f 64 intel phsubw mmx2, qword ptr [rcx] -0f380511|223344556677885f5f5f5f5f 64 plan9 PHSUBW 0(CX), M2 -0f380611|223344556677885f5f5f5f5f 32 intel phsubd mmx2, qword ptr [ecx] -0f380611|223344556677885f5f5f5f5f 32 plan9 PHSUBD 0(CX), M2 -0f380611|223344556677885f5f5f5f5f 64 gnu phsubd (%rcx),%mm2 -0f380611|223344556677885f5f5f5f5f 64 intel phsubd mmx2, qword ptr [rcx] -0f380611|223344556677885f5f5f5f5f 64 plan9 PHSUBD 0(CX), M2 -0f380711|223344556677885f5f5f5f5f 32 intel phsubsw mmx2, qword ptr [ecx] -0f380711|223344556677885f5f5f5f5f 32 plan9 PHSUBSW 0(CX), M2 -0f380711|223344556677885f5f5f5f5f 64 gnu phsubsw (%rcx),%mm2 -0f380711|223344556677885f5f5f5f5f 64 intel phsubsw mmx2, qword ptr [rcx] -0f380711|223344556677885f5f5f5f5f 64 plan9 PHSUBSW 0(CX), M2 -0f380811|223344556677885f5f5f5f5f 32 intel psignb mmx2, qword ptr [ecx] -0f380811|223344556677885f5f5f5f5f 32 plan9 PSIGNB 0(CX), M2 -0f380811|223344556677885f5f5f5f5f 64 gnu psignb (%rcx),%mm2 -0f380811|223344556677885f5f5f5f5f 64 intel psignb mmx2, qword ptr [rcx] -0f380811|223344556677885f5f5f5f5f 64 plan9 PSIGNB 0(CX), M2 -0f380911|223344556677885f5f5f5f5f 32 intel psignw mmx2, qword ptr [ecx] -0f380911|223344556677885f5f5f5f5f 32 plan9 PSIGNW 0(CX), M2 -0f380911|223344556677885f5f5f5f5f 64 gnu psignw (%rcx),%mm2 -0f380911|223344556677885f5f5f5f5f 64 intel psignw mmx2, qword ptr [rcx] -0f380911|223344556677885f5f5f5f5f 64 plan9 PSIGNW 0(CX), M2 -0f380a11|223344556677885f5f5f5f5f 32 intel psignd mmx2, qword ptr [ecx] -0f380a11|223344556677885f5f5f5f5f 32 plan9 PSIGND 0(CX), M2 -0f380a11|223344556677885f5f5f5f5f 64 gnu psignd (%rcx),%mm2 -0f380a11|223344556677885f5f5f5f5f 64 intel psignd mmx2, qword ptr [rcx] -0f380a11|223344556677885f5f5f5f5f 64 plan9 PSIGND 0(CX), M2 -0f380b11|223344556677885f5f5f5f5f 32 intel pmulhrsw mmx2, qword ptr [ecx] -0f380b11|223344556677885f5f5f5f5f 32 plan9 PMULHRSW 0(CX), M2 -0f380b11|223344556677885f5f5f5f5f 64 gnu pmulhrsw (%rcx),%mm2 -0f380b11|223344556677885f5f5f5f5f 64 intel pmulhrsw mmx2, qword ptr [rcx] -0f380b11|223344556677885f5f5f5f5f 64 plan9 PMULHRSW 0(CX), M2 -0f3810|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3810|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3810|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3810|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3810|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3811|223344556677885f5f5f5f5f5f 32 intel error: unrecognized instruction -0f3811|223344556677885f5f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3811|223344556677885f5f5f5f5f5f 64 gnu error: unrecognized instruction -0f3811|223344556677885f5f5f5f5f5f 64 intel error: unrecognized instruction -0f3811|223344556677885f5f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3814|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3814|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3814|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3814|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3814|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3815|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3815|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3815|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3815|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3815|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3817|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3817|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3817|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3817|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3817|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f381c11|223344556677885f5f5f5f5f 32 intel pabsb mmx2, qword ptr [ecx] -0f381c11|223344556677885f5f5f5f5f 32 plan9 PABSB 0(CX), M2 -0f381c11|223344556677885f5f5f5f5f 64 gnu pabsb (%rcx),%mm2 -0f381c11|223344556677885f5f5f5f5f 64 intel pabsb mmx2, qword ptr [rcx] -0f381c11|223344556677885f5f5f5f5f 64 plan9 PABSB 0(CX), M2 -0f381d11|223344556677885f5f5f5f5f 32 intel pabsw mmx2, qword ptr [ecx] -0f381d11|223344556677885f5f5f5f5f 32 plan9 PABSW 0(CX), M2 -0f381d11|223344556677885f5f5f5f5f 64 gnu pabsw (%rcx),%mm2 -0f381d11|223344556677885f5f5f5f5f 64 intel pabsw mmx2, qword ptr [rcx] -0f381d11|223344556677885f5f5f5f5f 64 plan9 PABSW 0(CX), M2 -0f381e11|223344556677885f5f5f5f5f 32 intel pabsd mmx2, qword ptr [ecx] -0f381e11|223344556677885f5f5f5f5f 32 plan9 PABSD 0(CX), M2 -0f381e11|223344556677885f5f5f5f5f 64 gnu pabsd (%rcx),%mm2 -0f381e11|223344556677885f5f5f5f5f 64 intel pabsd mmx2, qword ptr [rcx] -0f381e11|223344556677885f5f5f5f5f 64 plan9 PABSD 0(CX), M2 -0f3820|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3820|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3820|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3820|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3820|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3821|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3821|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3821|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3821|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3821|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3822|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3822|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3822|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3822|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3822|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3823|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3823|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3823|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3823|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3823|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3824|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3824|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3824|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3824|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3824|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3825|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3825|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3825|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3825|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3825|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3828|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3828|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3828|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3828|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3828|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3829|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3829|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3829|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3829|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3829|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f382a|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f382a|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f382a|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f382a|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f382a|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f382b|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f382b|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f382b|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f382b|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f382b|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3830|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3830|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3830|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3830|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3830|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3831|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3831|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3831|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3831|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3831|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3832|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3832|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3832|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3832|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3832|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3833|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3833|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3833|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3833|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3833|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3834|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3834|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3834|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3834|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3834|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3835|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3835|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3835|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3835|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3835|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3837|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3837|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3837|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3837|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3837|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3838|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3838|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3838|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3838|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3838|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3839|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3839|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3839|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3839|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3839|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f383a|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f383a|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f383a|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f383a|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f383a|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f383b|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f383b|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f383b|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f383b|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f383b|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f383c|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f383c|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f383c|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f383c|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f383c|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f383d|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f383d|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f383d|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f383d|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f383d|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f383e|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f383e|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f383e|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f383e|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f383e|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f383f|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f383f|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f383f|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f383f|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f383f|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3840|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3840|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3840|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3840|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3840|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3841|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3841|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3841|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3841|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3841|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3882|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3882|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3882|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3882|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3882|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f38db|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f38db|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f38db|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f38db|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f38db|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f38dc|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f38dc|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f38dc|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f38dc|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f38dc|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f38dd|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f38dd|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f38dd|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f38dd|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f38dd|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f38de|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f38de|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f38de|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f38de|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f38de|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f38df|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f38df|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f38df|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f38df|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f38df|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f38f011|223344556677885f5f5f5f5f 32 intel movbe edx, dword ptr [ecx] -0f38f011|223344556677885f5f5f5f5f 32 plan9 MOVBE 0(CX), DX -0f38f011|223344556677885f5f5f5f5f 64 gnu movbe (%rcx),%edx -0f38f011|223344556677885f5f5f5f5f 64 intel movbe edx, dword ptr [rcx] -0f38f011|223344556677885f5f5f5f5f 64 plan9 MOVBE 0(CX), DX -0f38f111|223344556677885f5f5f5f5f 32 intel movbe dword ptr [ecx], edx -0f38f111|223344556677885f5f5f5f5f 32 plan9 MOVBE DX, 0(CX) -0f38f111|223344556677885f5f5f5f5f 64 gnu movbe %edx,(%rcx) -0f38f111|223344556677885f5f5f5f5f 64 intel movbe dword ptr [rcx], edx -0f38f111|223344556677885f5f5f5f5f 64 plan9 MOVBE DX, 0(CX) -0f3a08|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3a08|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3a08|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3a08|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3a08|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3a09|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3a09|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3a09|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3a09|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3a09|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3a0a|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3a0a|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3a0a|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3a0a|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3a0a|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3a0b|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3a0b|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3a0b|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3a0b|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3a0b|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3a0c|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3a0c|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3a0c|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3a0c|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3a0c|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3a0d|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3a0d|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3a0d|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3a0d|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3a0d|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3a0e|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3a0e|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3a0e|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3a0e|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3a0e|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3a0f1122|3344556677885f5f5f5f5f 32 intel palignr mmx2, qword ptr [ecx], 0x22 -0f3a0f1122|3344556677885f5f5f5f5f 32 plan9 PALIGNR $0x22, 0(CX), M2 -0f3a0f1122|3344556677885f5f5f5f5f 64 gnu palignr $0x22,(%rcx),%mm2 -0f3a0f1122|3344556677885f5f5f5f5f 64 intel palignr mmx2, qword ptr [rcx], 0x22 -0f3a0f1122|3344556677885f5f5f5f5f 64 plan9 PALIGNR $0x22, 0(CX), M2 -0f3a11|223344556677885f5f5f5f5f5f 32 intel error: unrecognized instruction -0f3a11|223344556677885f5f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3a11|223344556677885f5f5f5f5f5f 64 gnu error: unrecognized instruction -0f3a11|223344556677885f5f5f5f5f5f 64 intel error: unrecognized instruction -0f3a11|223344556677885f5f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3a14|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3a14|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3a14|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3a14|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3a14|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3a15|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3a15|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3a15|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3a15|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3a15|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3a16|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3a16|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3a16|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3a16|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3a16|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3a17|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3a17|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3a17|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3a17|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3a17|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3a20|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3a20|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3a20|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3a20|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3a20|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3a21|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3a21|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3a21|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3a21|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3a21|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3a22|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3a22|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3a22|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3a22|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3a22|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3a40|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3a40|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3a40|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3a40|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3a40|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3a41|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3a41|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3a41|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3a41|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3a41|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3a42|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3a42|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3a42|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3a42|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3a42|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3a44|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3a44|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3a44|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3a44|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3a44|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3a60|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3a60|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3a60|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3a60|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3a60|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3a61|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3a61|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3a61|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3a61|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3a61|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3a62|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3a62|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3a62|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3a62|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3a62|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3a63|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3a63|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3a63|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3a63|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3a63|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f3adf|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f3adf|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f3adf|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f3adf|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f3adf|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f4011|223344556677885f5f5f5f5f5f 32 intel cmovo edx, dword ptr [ecx] -0f4011|223344556677885f5f5f5f5f5f 32 plan9 CMOVO 0(CX), DX -0f4011|223344556677885f5f5f5f5f5f 64 gnu cmovo (%rcx),%edx -0f4011|223344556677885f5f5f5f5f5f 64 intel cmovo edx, dword ptr [rcx] -0f4011|223344556677885f5f5f5f5f5f 64 plan9 CMOVO 0(CX), DX -0f4111|223344556677885f5f5f5f5f5f 32 intel cmovno edx, dword ptr [ecx] -0f4111|223344556677885f5f5f5f5f5f 32 plan9 CMOVNO 0(CX), DX -0f4111|223344556677885f5f5f5f5f5f 64 gnu cmovno (%rcx),%edx -0f4111|223344556677885f5f5f5f5f5f 64 intel cmovno edx, dword ptr [rcx] -0f4111|223344556677885f5f5f5f5f5f 64 plan9 CMOVNO 0(CX), DX -0f4211|223344556677885f5f5f5f5f5f 32 intel cmovb edx, dword ptr [ecx] -0f4211|223344556677885f5f5f5f5f5f 32 plan9 CMOVB 0(CX), DX -0f4211|223344556677885f5f5f5f5f5f 64 gnu cmovb (%rcx),%edx -0f4211|223344556677885f5f5f5f5f5f 64 intel cmovb edx, dword ptr [rcx] -0f4211|223344556677885f5f5f5f5f5f 64 plan9 CMOVB 0(CX), DX -0f4311|223344556677885f5f5f5f5f5f 32 intel cmovnb edx, dword ptr [ecx] -0f4311|223344556677885f5f5f5f5f5f 32 plan9 CMOVAE 0(CX), DX -0f4311|223344556677885f5f5f5f5f5f 64 gnu cmovae (%rcx),%edx -0f4311|223344556677885f5f5f5f5f5f 64 intel cmovnb edx, dword ptr [rcx] -0f4311|223344556677885f5f5f5f5f5f 64 plan9 CMOVAE 0(CX), DX -0f4411|223344556677885f5f5f5f5f5f 32 intel cmovz edx, dword ptr [ecx] -0f4411|223344556677885f5f5f5f5f5f 32 plan9 CMOVE 0(CX), DX -0f4411|223344556677885f5f5f5f5f5f 64 gnu cmove (%rcx),%edx -0f4411|223344556677885f5f5f5f5f5f 64 intel cmovz edx, dword ptr [rcx] -0f4411|223344556677885f5f5f5f5f5f 64 plan9 CMOVE 0(CX), DX -0f4511|223344556677885f5f5f5f5f5f 32 intel cmovnz edx, dword ptr [ecx] -0f4511|223344556677885f5f5f5f5f5f 32 plan9 CMOVNE 0(CX), DX -0f4511|223344556677885f5f5f5f5f5f 64 gnu cmovne (%rcx),%edx -0f4511|223344556677885f5f5f5f5f5f 64 intel cmovnz edx, dword ptr [rcx] -0f4511|223344556677885f5f5f5f5f5f 64 plan9 CMOVNE 0(CX), DX -0f4611|223344556677885f5f5f5f5f5f 32 intel cmovbe edx, dword ptr [ecx] -0f4611|223344556677885f5f5f5f5f5f 32 plan9 CMOVBE 0(CX), DX -0f4611|223344556677885f5f5f5f5f5f 64 gnu cmovbe (%rcx),%edx -0f4611|223344556677885f5f5f5f5f5f 64 intel cmovbe edx, dword ptr [rcx] -0f4611|223344556677885f5f5f5f5f5f 64 plan9 CMOVBE 0(CX), DX -0f4711|223344556677885f5f5f5f5f5f 32 intel cmovnbe edx, dword ptr [ecx] -0f4711|223344556677885f5f5f5f5f5f 32 plan9 CMOVA 0(CX), DX -0f4711|223344556677885f5f5f5f5f5f 64 gnu cmova (%rcx),%edx -0f4711|223344556677885f5f5f5f5f5f 64 intel cmovnbe edx, dword ptr [rcx] -0f4711|223344556677885f5f5f5f5f5f 64 plan9 CMOVA 0(CX), DX -0f4811|223344556677885f5f5f5f5f5f 32 intel cmovs edx, dword ptr [ecx] -0f4811|223344556677885f5f5f5f5f5f 32 plan9 CMOVS 0(CX), DX -0f4811|223344556677885f5f5f5f5f5f 64 gnu cmovs (%rcx),%edx -0f4811|223344556677885f5f5f5f5f5f 64 intel cmovs edx, dword ptr [rcx] -0f4811|223344556677885f5f5f5f5f5f 64 plan9 CMOVS 0(CX), DX -0f4911|223344556677885f5f5f5f5f5f 32 intel cmovns edx, dword ptr [ecx] -0f4911|223344556677885f5f5f5f5f5f 32 plan9 CMOVNS 0(CX), DX -0f4911|223344556677885f5f5f5f5f5f 64 gnu cmovns (%rcx),%edx -0f4911|223344556677885f5f5f5f5f5f 64 intel cmovns edx, dword ptr [rcx] -0f4911|223344556677885f5f5f5f5f5f 64 plan9 CMOVNS 0(CX), DX -0f4a11|223344556677885f5f5f5f5f5f 32 intel cmovp edx, dword ptr [ecx] -0f4a11|223344556677885f5f5f5f5f5f 32 plan9 CMOVP 0(CX), DX -0f4a11|223344556677885f5f5f5f5f5f 64 gnu cmovp (%rcx),%edx -0f4a11|223344556677885f5f5f5f5f5f 64 intel cmovp edx, dword ptr [rcx] -0f4a11|223344556677885f5f5f5f5f5f 64 plan9 CMOVP 0(CX), DX -0f4b11|223344556677885f5f5f5f5f5f 32 intel cmovnp edx, dword ptr [ecx] -0f4b11|223344556677885f5f5f5f5f5f 32 plan9 CMOVNP 0(CX), DX -0f4b11|223344556677885f5f5f5f5f5f 64 gnu cmovnp (%rcx),%edx -0f4b11|223344556677885f5f5f5f5f5f 64 intel cmovnp edx, dword ptr [rcx] -0f4b11|223344556677885f5f5f5f5f5f 64 plan9 CMOVNP 0(CX), DX -0f4c11|223344556677885f5f5f5f5f5f 32 intel cmovl edx, dword ptr [ecx] -0f4c11|223344556677885f5f5f5f5f5f 32 plan9 CMOVL 0(CX), DX -0f4c11|223344556677885f5f5f5f5f5f 64 gnu cmovl (%rcx),%edx -0f4c11|223344556677885f5f5f5f5f5f 64 intel cmovl edx, dword ptr [rcx] -0f4c11|223344556677885f5f5f5f5f5f 64 plan9 CMOVL 0(CX), DX -0f4d11|223344556677885f5f5f5f5f5f 32 intel cmovnl edx, dword ptr [ecx] -0f4d11|223344556677885f5f5f5f5f5f 32 plan9 CMOVGE 0(CX), DX -0f4d11|223344556677885f5f5f5f5f5f 64 gnu cmovge (%rcx),%edx -0f4d11|223344556677885f5f5f5f5f5f 64 intel cmovnl edx, dword ptr [rcx] -0f4d11|223344556677885f5f5f5f5f5f 64 plan9 CMOVGE 0(CX), DX -0f4e11|223344556677885f5f5f5f5f5f 32 intel cmovle edx, dword ptr [ecx] -0f4e11|223344556677885f5f5f5f5f5f 32 plan9 CMOVLE 0(CX), DX -0f4e11|223344556677885f5f5f5f5f5f 64 gnu cmovle (%rcx),%edx -0f4e11|223344556677885f5f5f5f5f5f 64 intel cmovle edx, dword ptr [rcx] -0f4e11|223344556677885f5f5f5f5f5f 64 plan9 CMOVLE 0(CX), DX -0f4f11|223344556677885f5f5f5f5f5f 32 intel cmovnle edx, dword ptr [ecx] -0f4f11|223344556677885f5f5f5f5f5f 32 plan9 CMOVG 0(CX), DX -0f4f11|223344556677885f5f5f5f5f5f 64 gnu cmovg (%rcx),%edx -0f4f11|223344556677885f5f5f5f5f5f 64 intel cmovnle edx, dword ptr [rcx] -0f4f11|223344556677885f5f5f5f5f5f 64 plan9 CMOVG 0(CX), DX -0f5011|223344556677885f5f5f5f5f5f 32 intel error: unrecognized instruction -0f5011|223344556677885f5f5f5f5f5f 32 plan9 error: unrecognized instruction -0f5011|223344556677885f5f5f5f5f5f 64 gnu error: unrecognized instruction -0f5011|223344556677885f5f5f5f5f5f 64 intel error: unrecognized instruction -0f5011|223344556677885f5f5f5f5f5f 64 plan9 error: unrecognized instruction -0f50c0|11223344556677885f5f5f5f5f 32 intel movmskps eax, xmm0 -0f50c0|11223344556677885f5f5f5f5f 32 plan9 MOVMSKPS X0, AX -0f50c0|11223344556677885f5f5f5f5f 64 gnu movmskps %xmm0,%eax -0f50c0|11223344556677885f5f5f5f5f 64 intel movmskps eax, xmm0 -0f50c0|11223344556677885f5f5f5f5f 64 plan9 MOVMSKPS X0, AX -0f5111|223344556677885f5f5f5f5f5f 32 intel sqrtps xmm2, xmmword ptr [ecx] -0f5111|223344556677885f5f5f5f5f5f 32 plan9 SQRTPS 0(CX), X2 -0f5111|223344556677885f5f5f5f5f5f 64 gnu sqrtps (%rcx),%xmm2 -0f5111|223344556677885f5f5f5f5f5f 64 intel sqrtps xmm2, xmmword ptr [rcx] -0f5111|223344556677885f5f5f5f5f5f 64 plan9 SQRTPS 0(CX), X2 -0f5211|223344556677885f5f5f5f5f5f 32 intel rsqrtps xmm2, xmmword ptr [ecx] -0f5211|223344556677885f5f5f5f5f5f 32 plan9 RSQRTPS 0(CX), X2 -0f5211|223344556677885f5f5f5f5f5f 64 gnu rsqrtps (%rcx),%xmm2 -0f5211|223344556677885f5f5f5f5f5f 64 intel rsqrtps xmm2, xmmword ptr [rcx] -0f5211|223344556677885f5f5f5f5f5f 64 plan9 RSQRTPS 0(CX), X2 -0f5311|223344556677885f5f5f5f5f5f 32 intel rcpps xmm2, xmmword ptr [ecx] -0f5311|223344556677885f5f5f5f5f5f 32 plan9 RCPPS 0(CX), X2 -0f5311|223344556677885f5f5f5f5f5f 64 gnu rcpps (%rcx),%xmm2 -0f5311|223344556677885f5f5f5f5f5f 64 intel rcpps xmm2, xmmword ptr [rcx] -0f5311|223344556677885f5f5f5f5f5f 64 plan9 RCPPS 0(CX), X2 -0f5411|223344556677885f5f5f5f5f5f 32 intel andps xmm2, xmmword ptr [ecx] -0f5411|223344556677885f5f5f5f5f5f 32 plan9 ANDPS 0(CX), X2 -0f5411|223344556677885f5f5f5f5f5f 64 gnu andps (%rcx),%xmm2 -0f5411|223344556677885f5f5f5f5f5f 64 intel andps xmm2, xmmword ptr [rcx] -0f5411|223344556677885f5f5f5f5f5f 64 plan9 ANDPS 0(CX), X2 -0f5511|223344556677885f5f5f5f5f5f 32 intel andnps xmm2, xmmword ptr [ecx] -0f5511|223344556677885f5f5f5f5f5f 32 plan9 ANDNPS 0(CX), X2 -0f5511|223344556677885f5f5f5f5f5f 64 gnu andnps (%rcx),%xmm2 -0f5511|223344556677885f5f5f5f5f5f 64 intel andnps xmm2, xmmword ptr [rcx] -0f5511|223344556677885f5f5f5f5f5f 64 plan9 ANDNPS 0(CX), X2 -0f5611|223344556677885f5f5f5f5f5f 32 intel orps xmm2, xmmword ptr [ecx] -0f5611|223344556677885f5f5f5f5f5f 32 plan9 ORPS 0(CX), X2 -0f5611|223344556677885f5f5f5f5f5f 64 gnu orps (%rcx),%xmm2 -0f5611|223344556677885f5f5f5f5f5f 64 intel orps xmm2, xmmword ptr [rcx] -0f5611|223344556677885f5f5f5f5f5f 64 plan9 ORPS 0(CX), X2 -0f5711|223344556677885f5f5f5f5f5f 32 intel xorps xmm2, xmmword ptr [ecx] -0f5711|223344556677885f5f5f5f5f5f 32 plan9 XORPS 0(CX), X2 -0f5711|223344556677885f5f5f5f5f5f 64 gnu xorps (%rcx),%xmm2 -0f5711|223344556677885f5f5f5f5f5f 64 intel xorps xmm2, xmmword ptr [rcx] -0f5711|223344556677885f5f5f5f5f5f 64 plan9 XORPS 0(CX), X2 -0f5811|223344556677885f5f5f5f5f5f 32 intel addps xmm2, xmmword ptr [ecx] -0f5811|223344556677885f5f5f5f5f5f 32 plan9 ADDPS 0(CX), X2 -0f5811|223344556677885f5f5f5f5f5f 64 gnu addps (%rcx),%xmm2 -0f5811|223344556677885f5f5f5f5f5f 64 intel addps xmm2, xmmword ptr [rcx] -0f5811|223344556677885f5f5f5f5f5f 64 plan9 ADDPS 0(CX), X2 -0f5911|223344556677885f5f5f5f5f5f 32 intel mulps xmm2, xmmword ptr [ecx] -0f5911|223344556677885f5f5f5f5f5f 32 plan9 MULPS 0(CX), X2 -0f5911|223344556677885f5f5f5f5f5f 64 gnu mulps (%rcx),%xmm2 -0f5911|223344556677885f5f5f5f5f5f 64 intel mulps xmm2, xmmword ptr [rcx] -0f5911|223344556677885f5f5f5f5f5f 64 plan9 MULPS 0(CX), X2 -0f5a11|223344556677885f5f5f5f5f5f 32 intel cvtps2pd xmm2, qword ptr [ecx] -0f5a11|223344556677885f5f5f5f5f5f 32 plan9 CVTPS2PD 0(CX), X2 -0f5a11|223344556677885f5f5f5f5f5f 64 gnu cvtps2pd (%rcx),%xmm2 -0f5a11|223344556677885f5f5f5f5f5f 64 intel cvtps2pd xmm2, qword ptr [rcx] -0f5a11|223344556677885f5f5f5f5f5f 64 plan9 CVTPS2PD 0(CX), X2 -0f5b11|223344556677885f5f5f5f5f5f 32 intel cvtdq2ps xmm2, xmmword ptr [ecx] -0f5b11|223344556677885f5f5f5f5f5f 32 plan9 CVTDQ2PS 0(CX), X2 -0f5b11|223344556677885f5f5f5f5f5f 64 gnu cvtdq2ps (%rcx),%xmm2 -0f5b11|223344556677885f5f5f5f5f5f 64 intel cvtdq2ps xmm2, xmmword ptr [rcx] -0f5b11|223344556677885f5f5f5f5f5f 64 plan9 CVTDQ2PS 0(CX), X2 -0f5c11|223344556677885f5f5f5f5f5f 32 intel subps xmm2, xmmword ptr [ecx] -0f5c11|223344556677885f5f5f5f5f5f 32 plan9 SUBPS 0(CX), X2 -0f5c11|223344556677885f5f5f5f5f5f 64 gnu subps (%rcx),%xmm2 -0f5c11|223344556677885f5f5f5f5f5f 64 intel subps xmm2, xmmword ptr [rcx] -0f5c11|223344556677885f5f5f5f5f5f 64 plan9 SUBPS 0(CX), X2 -0f5d11|223344556677885f5f5f5f5f5f 32 intel minps xmm2, xmmword ptr [ecx] -0f5d11|223344556677885f5f5f5f5f5f 32 plan9 MINPS 0(CX), X2 -0f5d11|223344556677885f5f5f5f5f5f 64 gnu minps (%rcx),%xmm2 -0f5d11|223344556677885f5f5f5f5f5f 64 intel minps xmm2, xmmword ptr [rcx] -0f5d11|223344556677885f5f5f5f5f5f 64 plan9 MINPS 0(CX), X2 -0f5e11|223344556677885f5f5f5f5f5f 32 intel divps xmm2, xmmword ptr [ecx] -0f5e11|223344556677885f5f5f5f5f5f 32 plan9 DIVPS 0(CX), X2 -0f5e11|223344556677885f5f5f5f5f5f 64 gnu divps (%rcx),%xmm2 -0f5e11|223344556677885f5f5f5f5f5f 64 intel divps xmm2, xmmword ptr [rcx] -0f5e11|223344556677885f5f5f5f5f5f 64 plan9 DIVPS 0(CX), X2 -0f5f11|223344556677885f5f5f5f5f5f 32 intel maxps xmm2, xmmword ptr [ecx] -0f5f11|223344556677885f5f5f5f5f5f 32 plan9 MAXPS 0(CX), X2 -0f5f11|223344556677885f5f5f5f5f5f 64 gnu maxps (%rcx),%xmm2 -0f5f11|223344556677885f5f5f5f5f5f 64 intel maxps xmm2, xmmword ptr [rcx] -0f5f11|223344556677885f5f5f5f5f5f 64 plan9 MAXPS 0(CX), X2 -0f6011|223344556677885f5f5f5f5f5f 32 intel punpcklbw mmx2, dword ptr [ecx] -0f6011|223344556677885f5f5f5f5f5f 32 plan9 PUNPCKLBW 0(CX), M2 -0f6011|223344556677885f5f5f5f5f5f 64 gnu punpcklbw (%rcx),%mm2 -0f6011|223344556677885f5f5f5f5f5f 64 intel punpcklbw mmx2, dword ptr [rcx] -0f6011|223344556677885f5f5f5f5f5f 64 plan9 PUNPCKLBW 0(CX), M2 -0f6111|223344556677885f5f5f5f5f5f 32 intel punpcklwd mmx2, dword ptr [ecx] -0f6111|223344556677885f5f5f5f5f5f 32 plan9 PUNPCKLWD 0(CX), M2 -0f6111|223344556677885f5f5f5f5f5f 64 gnu punpcklwd (%rcx),%mm2 -0f6111|223344556677885f5f5f5f5f5f 64 intel punpcklwd mmx2, dword ptr [rcx] -0f6111|223344556677885f5f5f5f5f5f 64 plan9 PUNPCKLWD 0(CX), M2 -0f6211|223344556677885f5f5f5f5f5f 32 intel punpckldq mmx2, dword ptr [ecx] -0f6211|223344556677885f5f5f5f5f5f 32 plan9 PUNPCKLDQ 0(CX), M2 -0f6211|223344556677885f5f5f5f5f5f 64 gnu punpckldq (%rcx),%mm2 -0f6211|223344556677885f5f5f5f5f5f 64 intel punpckldq mmx2, dword ptr [rcx] -0f6211|223344556677885f5f5f5f5f5f 64 plan9 PUNPCKLDQ 0(CX), M2 -0f6311|223344556677885f5f5f5f5f5f 32 intel packsswb mmx2, qword ptr [ecx] -0f6311|223344556677885f5f5f5f5f5f 32 plan9 PACKSSWB 0(CX), M2 -0f6311|223344556677885f5f5f5f5f5f 64 gnu packsswb (%rcx),%mm2 -0f6311|223344556677885f5f5f5f5f5f 64 intel packsswb mmx2, qword ptr [rcx] -0f6311|223344556677885f5f5f5f5f5f 64 plan9 PACKSSWB 0(CX), M2 -0f6411|223344556677885f5f5f5f5f5f 32 intel pcmpgtb mmx2, qword ptr [ecx] -0f6411|223344556677885f5f5f5f5f5f 32 plan9 PCMPGTB 0(CX), M2 -0f6411|223344556677885f5f5f5f5f5f 64 gnu pcmpgtb (%rcx),%mm2 -0f6411|223344556677885f5f5f5f5f5f 64 intel pcmpgtb mmx2, qword ptr [rcx] -0f6411|223344556677885f5f5f5f5f5f 64 plan9 PCMPGTB 0(CX), M2 -0f6511|223344556677885f5f5f5f5f5f 32 intel pcmpgtw mmx2, qword ptr [ecx] -0f6511|223344556677885f5f5f5f5f5f 32 plan9 PCMPGTW 0(CX), M2 -0f6511|223344556677885f5f5f5f5f5f 64 gnu pcmpgtw (%rcx),%mm2 -0f6511|223344556677885f5f5f5f5f5f 64 intel pcmpgtw mmx2, qword ptr [rcx] -0f6511|223344556677885f5f5f5f5f5f 64 plan9 PCMPGTW 0(CX), M2 -0f6611|223344556677885f5f5f5f5f5f 32 intel pcmpgtd mmx2, qword ptr [ecx] -0f6611|223344556677885f5f5f5f5f5f 32 plan9 PCMPGTD 0(CX), M2 -0f6611|223344556677885f5f5f5f5f5f 64 gnu pcmpgtd (%rcx),%mm2 -0f6611|223344556677885f5f5f5f5f5f 64 intel pcmpgtd mmx2, qword ptr [rcx] -0f6611|223344556677885f5f5f5f5f5f 64 plan9 PCMPGTD 0(CX), M2 -0f6711|223344556677885f5f5f5f5f5f 32 intel packuswb mmx2, qword ptr [ecx] -0f6711|223344556677885f5f5f5f5f5f 32 plan9 PACKUSWB 0(CX), M2 -0f6711|223344556677885f5f5f5f5f5f 64 gnu packuswb (%rcx),%mm2 -0f6711|223344556677885f5f5f5f5f5f 64 intel packuswb mmx2, qword ptr [rcx] -0f6711|223344556677885f5f5f5f5f5f 64 plan9 PACKUSWB 0(CX), M2 -0f6811|223344556677885f5f5f5f5f5f 32 intel punpckhbw mmx2, qword ptr [ecx] -0f6811|223344556677885f5f5f5f5f5f 32 plan9 PUNPCKHBW 0(CX), M2 -0f6811|223344556677885f5f5f5f5f5f 64 gnu punpckhbw (%rcx),%mm2 -0f6811|223344556677885f5f5f5f5f5f 64 intel punpckhbw mmx2, qword ptr [rcx] -0f6811|223344556677885f5f5f5f5f5f 64 plan9 PUNPCKHBW 0(CX), M2 -0f6911|223344556677885f5f5f5f5f5f 32 intel punpckhwd mmx2, qword ptr [ecx] -0f6911|223344556677885f5f5f5f5f5f 32 plan9 PUNPCKHWD 0(CX), M2 -0f6911|223344556677885f5f5f5f5f5f 64 gnu punpckhwd (%rcx),%mm2 -0f6911|223344556677885f5f5f5f5f5f 64 intel punpckhwd mmx2, qword ptr [rcx] -0f6911|223344556677885f5f5f5f5f5f 64 plan9 PUNPCKHWD 0(CX), M2 -0f6a11|223344556677885f5f5f5f5f5f 32 intel punpckhdq mmx2, qword ptr [ecx] -0f6a11|223344556677885f5f5f5f5f5f 32 plan9 PUNPCKHDQ 0(CX), M2 -0f6a11|223344556677885f5f5f5f5f5f 64 gnu punpckhdq (%rcx),%mm2 -0f6a11|223344556677885f5f5f5f5f5f 64 intel punpckhdq mmx2, qword ptr [rcx] -0f6a11|223344556677885f5f5f5f5f5f 64 plan9 PUNPCKHDQ 0(CX), M2 -0f6b11|223344556677885f5f5f5f5f5f 32 intel packssdw mmx2, qword ptr [ecx] -0f6b11|223344556677885f5f5f5f5f5f 32 plan9 PACKSSDW 0(CX), M2 -0f6b11|223344556677885f5f5f5f5f5f 64 gnu packssdw (%rcx),%mm2 -0f6b11|223344556677885f5f5f5f5f5f 64 intel packssdw mmx2, qword ptr [rcx] -0f6b11|223344556677885f5f5f5f5f5f 64 plan9 PACKSSDW 0(CX), M2 -0f6c|11223344556677885f5f5f5f5f5f 32 intel error: unrecognized instruction -0f6c|11223344556677885f5f5f5f5f5f 32 plan9 error: unrecognized instruction -0f6c|11223344556677885f5f5f5f5f5f 64 gnu error: unrecognized instruction -0f6c|11223344556677885f5f5f5f5f5f 64 intel error: unrecognized instruction -0f6c|11223344556677885f5f5f5f5f5f 64 plan9 error: unrecognized instruction -0f6d|11223344556677885f5f5f5f5f5f 32 intel error: unrecognized instruction -0f6d|11223344556677885f5f5f5f5f5f 32 plan9 error: unrecognized instruction -0f6d|11223344556677885f5f5f5f5f5f 64 gnu error: unrecognized instruction -0f6d|11223344556677885f5f5f5f5f5f 64 intel error: unrecognized instruction -0f6d|11223344556677885f5f5f5f5f5f 64 plan9 error: unrecognized instruction -0f6e11|223344556677885f5f5f5f5f5f 32 intel movd mmx2, dword ptr [ecx] -0f6e11|223344556677885f5f5f5f5f5f 32 plan9 MOVD 0(CX), M2 -0f6e11|223344556677885f5f5f5f5f5f 64 gnu movd (%rcx),%mm2 -0f6e11|223344556677885f5f5f5f5f5f 64 intel movd mmx2, dword ptr [rcx] -0f6e11|223344556677885f5f5f5f5f5f 64 plan9 MOVD 0(CX), M2 -0f6f11|223344556677885f5f5f5f5f5f 32 intel movq mmx2, qword ptr [ecx] -0f6f11|223344556677885f5f5f5f5f5f 32 plan9 MOVQ 0(CX), M2 -0f6f11|223344556677885f5f5f5f5f5f 64 gnu movq (%rcx),%mm2 -0f6f11|223344556677885f5f5f5f5f5f 64 intel movq mmx2, qword ptr [rcx] -0f6f11|223344556677885f5f5f5f5f5f 64 plan9 MOVQ 0(CX), M2 -0f701122|3344556677885f5f5f5f5f5f 32 intel pshufw mmx2, qword ptr [ecx], 0x22 -0f701122|3344556677885f5f5f5f5f5f 32 plan9 PSHUFW $0x22, 0(CX), M2 -0f701122|3344556677885f5f5f5f5f5f 64 gnu pshufw $0x22,(%rcx),%mm2 -0f701122|3344556677885f5f5f5f5f5f 64 intel pshufw mmx2, qword ptr [rcx], 0x22 -0f701122|3344556677885f5f5f5f5f5f 64 plan9 PSHUFW $0x22, 0(CX), M2 -0f7100|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f7100|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f7100|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f7100|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f7100|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f711122|3344556677885f5f5f5f5f5f 32 intel error: unrecognized instruction -0f711122|3344556677885f5f5f5f5f5f 32 plan9 error: unrecognized instruction -0f711122|3344556677885f5f5f5f5f5f 64 gnu error: unrecognized instruction -0f711122|3344556677885f5f5f5f5f5f 64 intel error: unrecognized instruction -0f711122|3344556677885f5f5f5f5f5f 64 plan9 error: unrecognized instruction -0f712011|223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f712011|223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f712011|223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f712011|223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f712011|223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f713011|223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f713011|223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f713011|223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f713011|223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f713011|223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f71d011|223344556677885f5f5f5f5f 32 intel psrlw mmx0, 0x11 -0f71d011|223344556677885f5f5f5f5f 32 plan9 PSRLW $0x11, M0 -0f71d011|223344556677885f5f5f5f5f 64 gnu psrlw $0x11,%mm0 -0f71d011|223344556677885f5f5f5f5f 64 intel psrlw mmx0, 0x11 -0f71d011|223344556677885f5f5f5f5f 64 plan9 PSRLW $0x11, M0 -0f71e011|223344556677885f5f5f5f5f 32 intel psraw mmx0, 0x11 -0f71e011|223344556677885f5f5f5f5f 32 plan9 PSRAW $0x11, M0 -0f71e011|223344556677885f5f5f5f5f 64 gnu psraw $0x11,%mm0 -0f71e011|223344556677885f5f5f5f5f 64 intel psraw mmx0, 0x11 -0f71e011|223344556677885f5f5f5f5f 64 plan9 PSRAW $0x11, M0 -0f71f011|223344556677885f5f5f5f5f 32 intel psllw mmx0, 0x11 -0f71f011|223344556677885f5f5f5f5f 32 plan9 PSLLW $0x11, M0 -0f71f011|223344556677885f5f5f5f5f 64 gnu psllw $0x11,%mm0 -0f71f011|223344556677885f5f5f5f5f 64 intel psllw mmx0, 0x11 -0f71f011|223344556677885f5f5f5f5f 64 plan9 PSLLW $0x11, M0 -0f7200|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f7200|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f7200|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f7200|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f7200|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f721122|3344556677885f5f5f5f5f5f 32 intel error: unrecognized instruction -0f721122|3344556677885f5f5f5f5f5f 32 plan9 error: unrecognized instruction -0f721122|3344556677885f5f5f5f5f5f 64 gnu error: unrecognized instruction -0f721122|3344556677885f5f5f5f5f5f 64 intel error: unrecognized instruction -0f721122|3344556677885f5f5f5f5f5f 64 plan9 error: unrecognized instruction -0f722011|223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f722011|223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f722011|223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f722011|223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f722011|223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f723011|223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f723011|223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f723011|223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f723011|223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f723011|223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f72d011|223344556677885f5f5f5f5f 32 intel psrld mmx0, 0x11 -0f72d011|223344556677885f5f5f5f5f 32 plan9 PSRLD $0x11, M0 -0f72d011|223344556677885f5f5f5f5f 64 gnu psrld $0x11,%mm0 -0f72d011|223344556677885f5f5f5f5f 64 intel psrld mmx0, 0x11 -0f72d011|223344556677885f5f5f5f5f 64 plan9 PSRLD $0x11, M0 -0f72e011|223344556677885f5f5f5f5f 32 intel psrad mmx0, 0x11 -0f72e011|223344556677885f5f5f5f5f 32 plan9 PSRAD $0x11, M0 -0f72e011|223344556677885f5f5f5f5f 64 gnu psrad $0x11,%mm0 -0f72e011|223344556677885f5f5f5f5f 64 intel psrad mmx0, 0x11 -0f72e011|223344556677885f5f5f5f5f 64 plan9 PSRAD $0x11, M0 -0f72f011|223344556677885f5f5f5f5f 32 intel pslld mmx0, 0x11 -0f72f011|223344556677885f5f5f5f5f 32 plan9 PSLLD $0x11, M0 -0f72f011|223344556677885f5f5f5f5f 64 gnu pslld $0x11,%mm0 -0f72f011|223344556677885f5f5f5f5f 64 intel pslld mmx0, 0x11 -0f72f011|223344556677885f5f5f5f5f 64 plan9 PSLLD $0x11, M0 -0f7300|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f7300|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f7300|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f7300|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f7300|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f731122|3344556677885f5f5f5f5f5f 32 intel error: unrecognized instruction -0f731122|3344556677885f5f5f5f5f5f 32 plan9 error: unrecognized instruction -0f731122|3344556677885f5f5f5f5f5f 64 gnu error: unrecognized instruction -0f731122|3344556677885f5f5f5f5f5f 64 intel error: unrecognized instruction -0f731122|3344556677885f5f5f5f5f5f 64 plan9 error: unrecognized instruction -0f7318|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f7318|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f7318|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f7318|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f7318|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f733011|223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f733011|223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f733011|223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f733011|223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f733011|223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f7338|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0f7338|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0f7338|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0f7338|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0f7338|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0f73d011|223344556677885f5f5f5f5f 32 intel psrlq mmx0, 0x11 -0f73d011|223344556677885f5f5f5f5f 32 plan9 PSRLQ $0x11, M0 -0f73d011|223344556677885f5f5f5f5f 64 gnu psrlq $0x11,%mm0 -0f73d011|223344556677885f5f5f5f5f 64 intel psrlq mmx0, 0x11 -0f73d011|223344556677885f5f5f5f5f 64 plan9 PSRLQ $0x11, M0 -0f73f011|223344556677885f5f5f5f5f 32 intel psllq mmx0, 0x11 -0f73f011|223344556677885f5f5f5f5f 32 plan9 PSLLQ $0x11, M0 -0f73f011|223344556677885f5f5f5f5f 64 gnu psllq $0x11,%mm0 -0f73f011|223344556677885f5f5f5f5f 64 intel psllq mmx0, 0x11 -0f73f011|223344556677885f5f5f5f5f 64 plan9 PSLLQ $0x11, M0 -0f7411|223344556677885f5f5f5f5f5f 32 intel pcmpeqb mmx2, qword ptr [ecx] -0f7411|223344556677885f5f5f5f5f5f 32 plan9 PCMPEQB 0(CX), M2 -0f7411|223344556677885f5f5f5f5f5f 64 gnu pcmpeqb (%rcx),%mm2 -0f7411|223344556677885f5f5f5f5f5f 64 intel pcmpeqb mmx2, qword ptr [rcx] -0f7411|223344556677885f5f5f5f5f5f 64 plan9 PCMPEQB 0(CX), M2 -0f7511|223344556677885f5f5f5f5f5f 32 intel pcmpeqw mmx2, qword ptr [ecx] -0f7511|223344556677885f5f5f5f5f5f 32 plan9 PCMPEQW 0(CX), M2 -0f7511|223344556677885f5f5f5f5f5f 64 gnu pcmpeqw (%rcx),%mm2 -0f7511|223344556677885f5f5f5f5f5f 64 intel pcmpeqw mmx2, qword ptr [rcx] -0f7511|223344556677885f5f5f5f5f5f 64 plan9 PCMPEQW 0(CX), M2 -0f7611|223344556677885f5f5f5f5f5f 32 intel pcmpeqd mmx2, qword ptr [ecx] -0f7611|223344556677885f5f5f5f5f5f 32 plan9 PCMPEQD 0(CX), M2 -0f7611|223344556677885f5f5f5f5f5f 64 gnu pcmpeqd (%rcx),%mm2 -0f7611|223344556677885f5f5f5f5f5f 64 intel pcmpeqd mmx2, qword ptr [rcx] -0f7611|223344556677885f5f5f5f5f5f 64 plan9 PCMPEQD 0(CX), M2 -0f77|11223344556677885f5f5f5f5f5f 32 intel emms -0f77|11223344556677885f5f5f5f5f5f 32 plan9 EMMS -0f77|11223344556677885f5f5f5f5f5f 64 gnu emms -0f77|11223344556677885f5f5f5f5f5f 64 intel emms -0f77|11223344556677885f5f5f5f5f5f 64 plan9 EMMS -0f7c|11223344556677885f5f5f5f5f5f 32 intel error: unrecognized instruction -0f7c|11223344556677885f5f5f5f5f5f 32 plan9 error: unrecognized instruction -0f7c|11223344556677885f5f5f5f5f5f 64 gnu error: unrecognized instruction -0f7c|11223344556677885f5f5f5f5f5f 64 intel error: unrecognized instruction -0f7c|11223344556677885f5f5f5f5f5f 64 plan9 error: unrecognized instruction -0f7d|11223344556677885f5f5f5f5f5f 32 intel error: unrecognized instruction -0f7d|11223344556677885f5f5f5f5f5f 32 plan9 error: unrecognized instruction -0f7d|11223344556677885f5f5f5f5f5f 64 gnu error: unrecognized instruction -0f7d|11223344556677885f5f5f5f5f5f 64 intel error: unrecognized instruction -0f7d|11223344556677885f5f5f5f5f5f 64 plan9 error: unrecognized instruction -0f7e11|223344556677885f5f5f5f5f5f 32 intel movd dword ptr [ecx], mmx2 -0f7e11|223344556677885f5f5f5f5f5f 32 plan9 MOVD M2, 0(CX) -0f7e11|223344556677885f5f5f5f5f5f 64 gnu movd %mm2,(%rcx) -0f7e11|223344556677885f5f5f5f5f5f 64 intel movd dword ptr [rcx], mmx2 -0f7e11|223344556677885f5f5f5f5f5f 64 plan9 MOVD M2, 0(CX) -0f7f11|223344556677885f5f5f5f5f5f 32 intel movq qword ptr [ecx], mmx2 -0f7f11|223344556677885f5f5f5f5f5f 32 plan9 MOVQ M2, 0(CX) -0f7f11|223344556677885f5f5f5f5f5f 64 gnu movq %mm2,(%rcx) -0f7f11|223344556677885f5f5f5f5f5f 64 intel movq qword ptr [rcx], mmx2 -0f7f11|223344556677885f5f5f5f5f5f 64 plan9 MOVQ M2, 0(CX) -0f8011223344|556677885f5f5f5f5f5f 32 intel jo .+0x44332211 -0f8011223344|556677885f5f5f5f5f5f 32 plan9 JO .+1144201745 -0f8011223344|556677885f5f5f5f5f5f 64 gnu jo .+0x44332211 -0f8011223344|556677885f5f5f5f5f5f 64 intel jo .+0x44332211 -0f8011223344|556677885f5f5f5f5f5f 64 plan9 JO .+1144201745 -0f8111223344|556677885f5f5f5f5f5f 32 intel jno .+0x44332211 -0f8111223344|556677885f5f5f5f5f5f 32 plan9 JNO .+1144201745 -0f8111223344|556677885f5f5f5f5f5f 64 gnu jno .+0x44332211 -0f8111223344|556677885f5f5f5f5f5f 64 intel jno .+0x44332211 -0f8111223344|556677885f5f5f5f5f5f 64 plan9 JNO .+1144201745 -0f8211223344|556677885f5f5f5f5f5f 32 intel jb .+0x44332211 -0f8211223344|556677885f5f5f5f5f5f 32 plan9 JB .+1144201745 -0f8211223344|556677885f5f5f5f5f5f 64 gnu jb .+0x44332211 -0f8211223344|556677885f5f5f5f5f5f 64 intel jb .+0x44332211 -0f8211223344|556677885f5f5f5f5f5f 64 plan9 JB .+1144201745 -0f8311223344|556677885f5f5f5f5f5f 32 intel jnb .+0x44332211 -0f8311223344|556677885f5f5f5f5f5f 32 plan9 JAE .+1144201745 -0f8311223344|556677885f5f5f5f5f5f 64 gnu jae .+0x44332211 -0f8311223344|556677885f5f5f5f5f5f 64 intel jnb .+0x44332211 -0f8311223344|556677885f5f5f5f5f5f 64 plan9 JAE .+1144201745 -0f8411223344|556677885f5f5f5f5f5f 32 intel jz .+0x44332211 -0f8411223344|556677885f5f5f5f5f5f 32 plan9 JE .+1144201745 -0f8411223344|556677885f5f5f5f5f5f 64 gnu je .+0x44332211 -0f8411223344|556677885f5f5f5f5f5f 64 intel jz .+0x44332211 -0f8411223344|556677885f5f5f5f5f5f 64 plan9 JE .+1144201745 -0f8511223344|556677885f5f5f5f5f5f 32 intel jnz .+0x44332211 -0f8511223344|556677885f5f5f5f5f5f 32 plan9 JNE .+1144201745 -0f8511223344|556677885f5f5f5f5f5f 64 gnu jne .+0x44332211 -0f8511223344|556677885f5f5f5f5f5f 64 intel jnz .+0x44332211 -0f8511223344|556677885f5f5f5f5f5f 64 plan9 JNE .+1144201745 -0f8611223344|556677885f5f5f5f5f5f 32 intel jbe .+0x44332211 -0f8611223344|556677885f5f5f5f5f5f 32 plan9 JBE .+1144201745 -0f8611223344|556677885f5f5f5f5f5f 64 gnu jbe .+0x44332211 -0f8611223344|556677885f5f5f5f5f5f 64 intel jbe .+0x44332211 -0f8611223344|556677885f5f5f5f5f5f 64 plan9 JBE .+1144201745 -0f8711223344|556677885f5f5f5f5f5f 32 intel jnbe .+0x44332211 -0f8711223344|556677885f5f5f5f5f5f 32 plan9 JA .+1144201745 -0f8711223344|556677885f5f5f5f5f5f 64 gnu ja .+0x44332211 -0f8711223344|556677885f5f5f5f5f5f 64 intel jnbe .+0x44332211 -0f8711223344|556677885f5f5f5f5f5f 64 plan9 JA .+1144201745 -0f8811223344|556677885f5f5f5f5f5f 32 intel js .+0x44332211 -0f8811223344|556677885f5f5f5f5f5f 32 plan9 JS .+1144201745 -0f8811223344|556677885f5f5f5f5f5f 64 gnu js .+0x44332211 -0f8811223344|556677885f5f5f5f5f5f 64 intel js .+0x44332211 -0f8811223344|556677885f5f5f5f5f5f 64 plan9 JS .+1144201745 -0f8911223344|556677885f5f5f5f5f5f 32 intel jns .+0x44332211 -0f8911223344|556677885f5f5f5f5f5f 32 plan9 JNS .+1144201745 -0f8911223344|556677885f5f5f5f5f5f 64 gnu jns .+0x44332211 -0f8911223344|556677885f5f5f5f5f5f 64 intel jns .+0x44332211 -0f8911223344|556677885f5f5f5f5f5f 64 plan9 JNS .+1144201745 -0f8a11223344|556677885f5f5f5f5f5f 32 intel jp .+0x44332211 -0f8a11223344|556677885f5f5f5f5f5f 32 plan9 JP .+1144201745 -0f8a11223344|556677885f5f5f5f5f5f 64 gnu jp .+0x44332211 -0f8a11223344|556677885f5f5f5f5f5f 64 intel jp .+0x44332211 -0f8a11223344|556677885f5f5f5f5f5f 64 plan9 JP .+1144201745 -0f8b11223344|556677885f5f5f5f5f5f 32 intel jnp .+0x44332211 -0f8b11223344|556677885f5f5f5f5f5f 32 plan9 JNP .+1144201745 -0f8b11223344|556677885f5f5f5f5f5f 64 gnu jnp .+0x44332211 -0f8b11223344|556677885f5f5f5f5f5f 64 intel jnp .+0x44332211 -0f8b11223344|556677885f5f5f5f5f5f 64 plan9 JNP .+1144201745 -0f8c11223344|556677885f5f5f5f5f5f 32 intel jl .+0x44332211 -0f8c11223344|556677885f5f5f5f5f5f 32 plan9 JL .+1144201745 -0f8c11223344|556677885f5f5f5f5f5f 64 gnu jl .+0x44332211 -0f8c11223344|556677885f5f5f5f5f5f 64 intel jl .+0x44332211 -0f8c11223344|556677885f5f5f5f5f5f 64 plan9 JL .+1144201745 -0f8d11223344|556677885f5f5f5f5f5f 32 intel jnl .+0x44332211 -0f8d11223344|556677885f5f5f5f5f5f 32 plan9 JGE .+1144201745 -0f8d11223344|556677885f5f5f5f5f5f 64 gnu jge .+0x44332211 -0f8d11223344|556677885f5f5f5f5f5f 64 intel jnl .+0x44332211 -0f8d11223344|556677885f5f5f5f5f5f 64 plan9 JGE .+1144201745 -0f8e11223344|556677885f5f5f5f5f5f 32 intel jle .+0x44332211 -0f8e11223344|556677885f5f5f5f5f5f 32 plan9 JLE .+1144201745 -0f8e11223344|556677885f5f5f5f5f5f 64 gnu jle .+0x44332211 -0f8e11223344|556677885f5f5f5f5f5f 64 intel jle .+0x44332211 -0f8e11223344|556677885f5f5f5f5f5f 64 plan9 JLE .+1144201745 -0f8f11223344|556677885f5f5f5f5f5f 32 intel jnle .+0x44332211 -0f8f11223344|556677885f5f5f5f5f5f 32 plan9 JG .+1144201745 -0f8f11223344|556677885f5f5f5f5f5f 64 gnu jg .+0x44332211 -0f8f11223344|556677885f5f5f5f5f5f 64 intel jnle .+0x44332211 -0f8f11223344|556677885f5f5f5f5f5f 64 plan9 JG .+1144201745 -0f9011|223344556677885f5f5f5f5f5f 32 intel seto byte ptr [ecx] -0f9011|223344556677885f5f5f5f5f5f 32 plan9 SETO 0(CX) -0f9011|223344556677885f5f5f5f5f5f 64 gnu seto (%rcx) -0f9011|223344556677885f5f5f5f5f5f 64 intel seto byte ptr [rcx] -0f9011|223344556677885f5f5f5f5f5f 64 plan9 SETO 0(CX) -0f9111|223344556677885f5f5f5f5f5f 32 intel setno byte ptr [ecx] -0f9111|223344556677885f5f5f5f5f5f 32 plan9 SETNO 0(CX) -0f9111|223344556677885f5f5f5f5f5f 64 gnu setno (%rcx) -0f9111|223344556677885f5f5f5f5f5f 64 intel setno byte ptr [rcx] -0f9111|223344556677885f5f5f5f5f5f 64 plan9 SETNO 0(CX) -0f9211|223344556677885f5f5f5f5f5f 32 intel setb byte ptr [ecx] -0f9211|223344556677885f5f5f5f5f5f 32 plan9 SETB 0(CX) -0f9211|223344556677885f5f5f5f5f5f 64 gnu setb (%rcx) -0f9211|223344556677885f5f5f5f5f5f 64 intel setb byte ptr [rcx] -0f9211|223344556677885f5f5f5f5f5f 64 plan9 SETB 0(CX) -0f9311|223344556677885f5f5f5f5f5f 32 intel setnb byte ptr [ecx] -0f9311|223344556677885f5f5f5f5f5f 32 plan9 SETAE 0(CX) -0f9311|223344556677885f5f5f5f5f5f 64 gnu setae (%rcx) -0f9311|223344556677885f5f5f5f5f5f 64 intel setnb byte ptr [rcx] -0f9311|223344556677885f5f5f5f5f5f 64 plan9 SETAE 0(CX) -0f9411|223344556677885f5f5f5f5f5f 32 intel setz byte ptr [ecx] -0f9411|223344556677885f5f5f5f5f5f 32 plan9 SETE 0(CX) -0f9411|223344556677885f5f5f5f5f5f 64 gnu sete (%rcx) -0f9411|223344556677885f5f5f5f5f5f 64 intel setz byte ptr [rcx] -0f9411|223344556677885f5f5f5f5f5f 64 plan9 SETE 0(CX) -0f9511|223344556677885f5f5f5f5f5f 32 intel setnz byte ptr [ecx] -0f9511|223344556677885f5f5f5f5f5f 32 plan9 SETNE 0(CX) -0f9511|223344556677885f5f5f5f5f5f 64 gnu setne (%rcx) -0f9511|223344556677885f5f5f5f5f5f 64 intel setnz byte ptr [rcx] -0f9511|223344556677885f5f5f5f5f5f 64 plan9 SETNE 0(CX) -0f9611|223344556677885f5f5f5f5f5f 32 intel setbe byte ptr [ecx] -0f9611|223344556677885f5f5f5f5f5f 32 plan9 SETBE 0(CX) -0f9611|223344556677885f5f5f5f5f5f 64 gnu setbe (%rcx) -0f9611|223344556677885f5f5f5f5f5f 64 intel setbe byte ptr [rcx] -0f9611|223344556677885f5f5f5f5f5f 64 plan9 SETBE 0(CX) -0f9711|223344556677885f5f5f5f5f5f 32 intel setnbe byte ptr [ecx] -0f9711|223344556677885f5f5f5f5f5f 32 plan9 SETA 0(CX) -0f9711|223344556677885f5f5f5f5f5f 64 gnu seta (%rcx) -0f9711|223344556677885f5f5f5f5f5f 64 intel setnbe byte ptr [rcx] -0f9711|223344556677885f5f5f5f5f5f 64 plan9 SETA 0(CX) -0f9811|223344556677885f5f5f5f5f5f 32 intel sets byte ptr [ecx] -0f9811|223344556677885f5f5f5f5f5f 32 plan9 SETS 0(CX) -0f9811|223344556677885f5f5f5f5f5f 64 gnu sets (%rcx) -0f9811|223344556677885f5f5f5f5f5f 64 intel sets byte ptr [rcx] -0f9811|223344556677885f5f5f5f5f5f 64 plan9 SETS 0(CX) -0f9911|223344556677885f5f5f5f5f5f 32 intel setns byte ptr [ecx] -0f9911|223344556677885f5f5f5f5f5f 32 plan9 SETNS 0(CX) -0f9911|223344556677885f5f5f5f5f5f 64 gnu setns (%rcx) -0f9911|223344556677885f5f5f5f5f5f 64 intel setns byte ptr [rcx] -0f9911|223344556677885f5f5f5f5f5f 64 plan9 SETNS 0(CX) -0f9a11|223344556677885f5f5f5f5f5f 32 intel setp byte ptr [ecx] -0f9a11|223344556677885f5f5f5f5f5f 32 plan9 SETP 0(CX) -0f9a11|223344556677885f5f5f5f5f5f 64 gnu setp (%rcx) -0f9a11|223344556677885f5f5f5f5f5f 64 intel setp byte ptr [rcx] -0f9a11|223344556677885f5f5f5f5f5f 64 plan9 SETP 0(CX) -0f9b11|223344556677885f5f5f5f5f5f 32 intel setnp byte ptr [ecx] -0f9b11|223344556677885f5f5f5f5f5f 32 plan9 SETNP 0(CX) -0f9b11|223344556677885f5f5f5f5f5f 64 gnu setnp (%rcx) -0f9b11|223344556677885f5f5f5f5f5f 64 intel setnp byte ptr [rcx] -0f9b11|223344556677885f5f5f5f5f5f 64 plan9 SETNP 0(CX) -0f9c11|223344556677885f5f5f5f5f5f 32 intel setl byte ptr [ecx] -0f9c11|223344556677885f5f5f5f5f5f 32 plan9 SETL 0(CX) -0f9c11|223344556677885f5f5f5f5f5f 64 gnu setl (%rcx) -0f9c11|223344556677885f5f5f5f5f5f 64 intel setl byte ptr [rcx] -0f9c11|223344556677885f5f5f5f5f5f 64 plan9 SETL 0(CX) -0f9d11|223344556677885f5f5f5f5f5f 32 intel setnl byte ptr [ecx] -0f9d11|223344556677885f5f5f5f5f5f 32 plan9 SETGE 0(CX) -0f9d11|223344556677885f5f5f5f5f5f 64 gnu setge (%rcx) -0f9d11|223344556677885f5f5f5f5f5f 64 intel setnl byte ptr [rcx] -0f9d11|223344556677885f5f5f5f5f5f 64 plan9 SETGE 0(CX) -0f9e11|223344556677885f5f5f5f5f5f 32 intel setle byte ptr [ecx] -0f9e11|223344556677885f5f5f5f5f5f 32 plan9 SETLE 0(CX) -0f9e11|223344556677885f5f5f5f5f5f 64 gnu setle (%rcx) -0f9e11|223344556677885f5f5f5f5f5f 64 intel setle byte ptr [rcx] -0f9e11|223344556677885f5f5f5f5f5f 64 plan9 SETLE 0(CX) -0f9f11|223344556677885f5f5f5f5f5f 32 intel setnle byte ptr [ecx] -0f9f11|223344556677885f5f5f5f5f5f 32 plan9 SETG 0(CX) -0f9f11|223344556677885f5f5f5f5f5f 64 gnu setg (%rcx) -0f9f11|223344556677885f5f5f5f5f5f 64 intel setnle byte ptr [rcx] -0f9f11|223344556677885f5f5f5f5f5f 64 plan9 SETG 0(CX) -0fa0|11223344556677885f5f5f5f5f5f 32 intel push fs -0fa0|11223344556677885f5f5f5f5f5f 32 plan9 PUSHL FS -0fa0|11223344556677885f5f5f5f5f5f 64 gnu pushq %fs -0fa0|11223344556677885f5f5f5f5f5f 64 intel push fs -0fa0|11223344556677885f5f5f5f5f5f 64 plan9 PUSHL FS -0fa1|11223344556677885f5f5f5f5f5f 32 intel pop fs -0fa1|11223344556677885f5f5f5f5f5f 32 plan9 POPL FS -0fa1|11223344556677885f5f5f5f5f5f 64 gnu popq %fs -0fa1|11223344556677885f5f5f5f5f5f 64 intel pop fs -0fa1|11223344556677885f5f5f5f5f5f 64 plan9 POPL FS -0fa2|11223344556677885f5f5f5f5f5f 32 intel cpuid -0fa2|11223344556677885f5f5f5f5f5f 32 plan9 CPUID -0fa2|11223344556677885f5f5f5f5f5f 64 gnu cpuid -0fa2|11223344556677885f5f5f5f5f5f 64 intel cpuid -0fa2|11223344556677885f5f5f5f5f5f 64 plan9 CPUID -0fa311|223344556677885f5f5f5f5f5f 32 intel bt dword ptr [ecx], edx -0fa311|223344556677885f5f5f5f5f5f 32 plan9 BTL DX, 0(CX) -0fa311|223344556677885f5f5f5f5f5f 64 gnu bt %edx,(%rcx) -0fa311|223344556677885f5f5f5f5f5f 64 intel bt dword ptr [rcx], edx -0fa311|223344556677885f5f5f5f5f5f 64 plan9 BTL DX, 0(CX) -0fa41122|3344556677885f5f5f5f5f5f 32 intel shld dword ptr [ecx], edx, 0x22 -0fa41122|3344556677885f5f5f5f5f5f 32 plan9 SHLDL $0x22, DX, 0(CX) -0fa41122|3344556677885f5f5f5f5f5f 64 gnu shld $0x22,%edx,(%rcx) -0fa41122|3344556677885f5f5f5f5f5f 64 intel shld dword ptr [rcx], edx, 0x22 -0fa41122|3344556677885f5f5f5f5f5f 64 plan9 SHLDL $0x22, DX, 0(CX) -0fa511|223344556677885f5f5f5f5f5f 32 intel shld dword ptr [ecx], edx, cl -0fa511|223344556677885f5f5f5f5f5f 32 plan9 SHLDL CL, DX, 0(CX) -0fa511|223344556677885f5f5f5f5f5f 64 gnu shld %cl,%edx,(%rcx) -0fa511|223344556677885f5f5f5f5f5f 64 intel shld dword ptr [rcx], edx, cl -0fa511|223344556677885f5f5f5f5f5f 64 plan9 SHLDL CL, DX, 0(CX) -0fa8|11223344556677885f5f5f5f5f5f 32 intel push gs -0fa8|11223344556677885f5f5f5f5f5f 32 plan9 PUSHL GS -0fa8|11223344556677885f5f5f5f5f5f 64 gnu pushq %gs -0fa8|11223344556677885f5f5f5f5f5f 64 intel push gs -0fa8|11223344556677885f5f5f5f5f5f 64 plan9 PUSHL GS -0fa9|11223344556677885f5f5f5f5f5f 32 intel pop gs -0fa9|11223344556677885f5f5f5f5f5f 32 plan9 POPL GS -0fa9|11223344556677885f5f5f5f5f5f 64 gnu popq %gs -0fa9|11223344556677885f5f5f5f5f5f 64 intel pop gs -0fa9|11223344556677885f5f5f5f5f5f 64 plan9 POPL GS -0faa|11223344556677885f5f5f5f5f5f 32 intel rsm -0faa|11223344556677885f5f5f5f5f5f 32 plan9 RSM -0faa|11223344556677885f5f5f5f5f5f 64 gnu rsm -0faa|11223344556677885f5f5f5f5f5f 64 intel rsm -0faa|11223344556677885f5f5f5f5f5f 64 plan9 RSM -0fab11|223344556677885f5f5f5f5f5f 32 intel bts dword ptr [ecx], edx -0fab11|223344556677885f5f5f5f5f5f 32 plan9 BTSL DX, 0(CX) -0fab11|223344556677885f5f5f5f5f5f 64 gnu bts %edx,(%rcx) -0fab11|223344556677885f5f5f5f5f5f 64 intel bts dword ptr [rcx], edx -0fab11|223344556677885f5f5f5f5f5f 64 plan9 BTSL DX, 0(CX) -0fac1122|3344556677885f5f5f5f5f5f 32 intel shrd dword ptr [ecx], edx, 0x22 -0fac1122|3344556677885f5f5f5f5f5f 32 plan9 SHRDL $0x22, DX, 0(CX) -0fac1122|3344556677885f5f5f5f5f5f 64 gnu shrd $0x22,%edx,(%rcx) -0fac1122|3344556677885f5f5f5f5f5f 64 intel shrd dword ptr [rcx], edx, 0x22 -0fac1122|3344556677885f5f5f5f5f5f 64 plan9 SHRDL $0x22, DX, 0(CX) -0fad11|223344556677885f5f5f5f5f5f 32 intel shrd dword ptr [ecx], edx, cl -0fad11|223344556677885f5f5f5f5f5f 32 plan9 SHRDL CL, DX, 0(CX) -0fad11|223344556677885f5f5f5f5f5f 64 gnu shrd %cl,%edx,(%rcx) -0fad11|223344556677885f5f5f5f5f5f 64 intel shrd dword ptr [rcx], edx, cl -0fad11|223344556677885f5f5f5f5f5f 64 plan9 SHRDL CL, DX, 0(CX) -0fae00|11223344556677885f5f5f5f5f 32 intel fxsave ptr [eax] -0fae00|11223344556677885f5f5f5f5f 32 plan9 FXSAVE 0(AX) -0fae00|11223344556677885f5f5f5f5f 64 gnu fxsave (%rax) -0fae00|11223344556677885f5f5f5f5f 64 intel fxsave ptr [rax] -0fae00|11223344556677885f5f5f5f5f 64 plan9 FXSAVE 0(AX) -0fae08|11223344556677885f5f5f5f5f 32 intel fxrstor ptr [eax] -0fae08|11223344556677885f5f5f5f5f 32 plan9 FXRSTOR 0(AX) -0fae08|11223344556677885f5f5f5f5f 64 gnu fxrstor (%rax) -0fae08|11223344556677885f5f5f5f5f 64 intel fxrstor ptr [rax] -0fae08|11223344556677885f5f5f5f5f 64 plan9 FXRSTOR 0(AX) -0fae11|223344556677885f5f5f5f5f5f 32 intel ldmxcsr dword ptr [ecx] -0fae11|223344556677885f5f5f5f5f5f 32 plan9 LDMXCSR 0(CX) -0fae11|223344556677885f5f5f5f5f5f 64 gnu ldmxcsr (%rcx) -0fae11|223344556677885f5f5f5f5f5f 64 intel ldmxcsr dword ptr [rcx] -0fae11|223344556677885f5f5f5f5f5f 64 plan9 LDMXCSR 0(CX) -0fae18|11223344556677885f5f5f5f5f 32 intel stmxcsr dword ptr [eax] -0fae18|11223344556677885f5f5f5f5f 32 plan9 STMXCSR 0(AX) -0fae18|11223344556677885f5f5f5f5f 64 gnu stmxcsr (%rax) -0fae18|11223344556677885f5f5f5f5f 64 intel stmxcsr dword ptr [rax] -0fae18|11223344556677885f5f5f5f5f 64 plan9 STMXCSR 0(AX) -0fae20|11223344556677885f5f5f5f5f 32 intel xsave ptr [eax] -0fae20|11223344556677885f5f5f5f5f 32 plan9 XSAVE 0(AX) -0fae20|11223344556677885f5f5f5f5f 64 gnu xsave (%rax) -0fae20|11223344556677885f5f5f5f5f 64 intel xsave ptr [rax] -0fae20|11223344556677885f5f5f5f5f 64 plan9 XSAVE 0(AX) -0fae28|11223344556677885f5f5f5f5f 32 intel xrstor ptr [eax] -0fae28|11223344556677885f5f5f5f5f 32 plan9 XRSTOR 0(AX) -0fae28|11223344556677885f5f5f5f5f 64 gnu xrstor (%rax) -0fae28|11223344556677885f5f5f5f5f 64 intel xrstor ptr [rax] -0fae28|11223344556677885f5f5f5f5f 64 plan9 XRSTOR 0(AX) -0fae30|11223344556677885f5f5f5f5f 32 intel xsaveopt ptr [eax] -0fae30|11223344556677885f5f5f5f5f 32 plan9 XSAVEOPT 0(AX) -0fae30|11223344556677885f5f5f5f5f 64 gnu xsaveopt (%rax) -0fae30|11223344556677885f5f5f5f5f 64 intel xsaveopt ptr [rax] -0fae30|11223344556677885f5f5f5f5f 64 plan9 XSAVEOPT 0(AX) -0fae38|11223344556677885f5f5f5f5f 32 intel clflush zmmword ptr [eax] -0fae38|11223344556677885f5f5f5f5f 32 plan9 CLFLUSH 0(AX) -0fae38|11223344556677885f5f5f5f5f 64 gnu clflush (%rax) -0fae38|11223344556677885f5f5f5f5f 64 intel clflush zmmword ptr [rax] -0fae38|11223344556677885f5f5f5f5f 64 plan9 CLFLUSH 0(AX) -0faee8|11223344556677885f5f5f5f5f 32 intel lfence -0faee8|11223344556677885f5f5f5f5f 32 plan9 LFENCE -0faee8|11223344556677885f5f5f5f5f 64 gnu lfence -0faee8|11223344556677885f5f5f5f5f 64 intel lfence -0faee8|11223344556677885f5f5f5f5f 64 plan9 LFENCE -0faef0|11223344556677885f5f5f5f5f 32 intel mfence -0faef0|11223344556677885f5f5f5f5f 32 plan9 MFENCE -0faef0|11223344556677885f5f5f5f5f 64 gnu mfence -0faef0|11223344556677885f5f5f5f5f 64 intel mfence -0faef0|11223344556677885f5f5f5f5f 64 plan9 MFENCE -0faef8|11223344556677885f5f5f5f5f 32 intel sfence -0faef8|11223344556677885f5f5f5f5f 32 plan9 SFENCE -0faef8|11223344556677885f5f5f5f5f 64 gnu sfence -0faef8|11223344556677885f5f5f5f5f 64 intel sfence -0faef8|11223344556677885f5f5f5f5f 64 plan9 SFENCE -0faf11|223344556677885f5f5f5f5f5f 32 intel imul edx, dword ptr [ecx] -0faf11|223344556677885f5f5f5f5f5f 32 plan9 IMULL 0(CX), DX -0faf11|223344556677885f5f5f5f5f5f 64 gnu imul (%rcx),%edx -0faf11|223344556677885f5f5f5f5f5f 64 intel imul edx, dword ptr [rcx] -0faf11|223344556677885f5f5f5f5f5f 64 plan9 IMULL 0(CX), DX -0fb011|223344556677885f5f5f5f5f5f 32 intel cmpxchg byte ptr [ecx], dl -0fb011|223344556677885f5f5f5f5f5f 32 plan9 CMPXCHGB DL, 0(CX) -0fb011|223344556677885f5f5f5f5f5f 64 gnu cmpxchg %dl,(%rcx) -0fb011|223344556677885f5f5f5f5f5f 64 intel cmpxchg byte ptr [rcx], dl -0fb011|223344556677885f5f5f5f5f5f 64 plan9 CMPXCHGB DL, 0(CX) -0fb111|223344556677885f5f5f5f5f5f 32 intel cmpxchg dword ptr [ecx], edx -0fb111|223344556677885f5f5f5f5f5f 32 plan9 CMPXCHGL DX, 0(CX) -0fb111|223344556677885f5f5f5f5f5f 64 gnu cmpxchg %edx,(%rcx) -0fb111|223344556677885f5f5f5f5f5f 64 intel cmpxchg dword ptr [rcx], edx -0fb111|223344556677885f5f5f5f5f5f 64 plan9 CMPXCHGL DX, 0(CX) -0fb211|223344556677885f5f5f5f5f5f 32 intel lss edx, ptr [ecx] -0fb211|223344556677885f5f5f5f5f5f 32 plan9 LSS 0(CX), DX -0fb211|223344556677885f5f5f5f5f5f 64 gnu lss (%rcx),%edx -0fb211|223344556677885f5f5f5f5f5f 64 intel lss edx, ptr [rcx] -0fb211|223344556677885f5f5f5f5f5f 64 plan9 LSS 0(CX), DX -0fb311|223344556677885f5f5f5f5f5f 32 intel btr dword ptr [ecx], edx -0fb311|223344556677885f5f5f5f5f5f 32 plan9 BTRL DX, 0(CX) -0fb311|223344556677885f5f5f5f5f5f 64 gnu btr %edx,(%rcx) -0fb311|223344556677885f5f5f5f5f5f 64 intel btr dword ptr [rcx], edx -0fb311|223344556677885f5f5f5f5f5f 64 plan9 BTRL DX, 0(CX) -0fb411|223344556677885f5f5f5f5f5f 32 intel lfs edx, ptr [ecx] -0fb411|223344556677885f5f5f5f5f5f 32 plan9 LFS 0(CX), DX -0fb411|223344556677885f5f5f5f5f5f 64 gnu lfs (%rcx),%edx -0fb411|223344556677885f5f5f5f5f5f 64 intel lfs edx, ptr [rcx] -0fb411|223344556677885f5f5f5f5f5f 64 plan9 LFS 0(CX), DX -0fb511|223344556677885f5f5f5f5f5f 32 intel lgs edx, ptr [ecx] -0fb511|223344556677885f5f5f5f5f5f 32 plan9 LGS 0(CX), DX -0fb511|223344556677885f5f5f5f5f5f 64 gnu lgs (%rcx),%edx -0fb511|223344556677885f5f5f5f5f5f 64 intel lgs edx, ptr [rcx] -0fb511|223344556677885f5f5f5f5f5f 64 plan9 LGS 0(CX), DX -0fb611|223344556677885f5f5f5f5f5f 32 intel movzx edx, byte ptr [ecx] -0fb611|223344556677885f5f5f5f5f5f 32 plan9 MOVZX 0(CX), DX -0fb611|223344556677885f5f5f5f5f5f 64 gnu movzbl (%rcx),%edx -0fb611|223344556677885f5f5f5f5f5f 64 intel movzx edx, byte ptr [rcx] -0fb611|223344556677885f5f5f5f5f5f 64 plan9 MOVZX 0(CX), DX -0fb711|223344556677885f5f5f5f5f5f 32 intel movzx edx, word ptr [ecx] -0fb711|223344556677885f5f5f5f5f5f 32 plan9 MOVZX 0(CX), DX -0fb711|223344556677885f5f5f5f5f5f 64 gnu movzwl (%rcx),%edx -0fb711|223344556677885f5f5f5f5f5f 64 intel movzx edx, word ptr [rcx] -0fb711|223344556677885f5f5f5f5f5f 64 plan9 MOVZX 0(CX), DX -0fb8|11223344556677885f5f5f5f5f5f 32 intel error: unrecognized instruction -0fb8|11223344556677885f5f5f5f5f5f 32 plan9 error: unrecognized instruction -0fb8|11223344556677885f5f5f5f5f5f 64 gnu error: unrecognized instruction -0fb8|11223344556677885f5f5f5f5f5f 64 intel error: unrecognized instruction -0fb8|11223344556677885f5f5f5f5f5f 64 plan9 error: unrecognized instruction -0fb9|11223344556677885f5f5f5f5f5f 32 intel ud1 -0fb9|11223344556677885f5f5f5f5f5f 32 plan9 UD1 -0fb9|11223344556677885f5f5f5f5f5f 64 gnu ud1 -0fb9|11223344556677885f5f5f5f5f5f 64 intel ud1 -0fb9|11223344556677885f5f5f5f5f5f 64 plan9 UD1 -0fba11|223344556677885f5f5f5f5f5f 32 intel error: unrecognized instruction -0fba11|223344556677885f5f5f5f5f5f 32 plan9 error: unrecognized instruction -0fba11|223344556677885f5f5f5f5f5f 64 gnu error: unrecognized instruction -0fba11|223344556677885f5f5f5f5f5f 64 intel error: unrecognized instruction -0fba11|223344556677885f5f5f5f5f5f 64 plan9 error: unrecognized instruction -0fba2011|223344556677885f5f5f5f5f 32 intel bt dword ptr [eax], 0x11 -0fba2011|223344556677885f5f5f5f5f 32 plan9 BTL $0x11, 0(AX) -0fba2011|223344556677885f5f5f5f5f 64 gnu btl $0x11,(%rax) -0fba2011|223344556677885f5f5f5f5f 64 intel bt dword ptr [rax], 0x11 -0fba2011|223344556677885f5f5f5f5f 64 plan9 BTL $0x11, 0(AX) -0fba2811|223344556677885f5f5f5f5f 32 intel bts dword ptr [eax], 0x11 -0fba2811|223344556677885f5f5f5f5f 32 plan9 BTSL $0x11, 0(AX) -0fba2811|223344556677885f5f5f5f5f 64 gnu btsl $0x11,(%rax) -0fba2811|223344556677885f5f5f5f5f 64 intel bts dword ptr [rax], 0x11 -0fba2811|223344556677885f5f5f5f5f 64 plan9 BTSL $0x11, 0(AX) -0fba3011|223344556677885f5f5f5f5f 32 intel btr dword ptr [eax], 0x11 -0fba3011|223344556677885f5f5f5f5f 32 plan9 BTRL $0x11, 0(AX) -0fba3011|223344556677885f5f5f5f5f 64 gnu btrl $0x11,(%rax) -0fba3011|223344556677885f5f5f5f5f 64 intel btr dword ptr [rax], 0x11 -0fba3011|223344556677885f5f5f5f5f 64 plan9 BTRL $0x11, 0(AX) -0fba3811|223344556677885f5f5f5f5f 32 intel btc dword ptr [eax], 0x11 -0fba3811|223344556677885f5f5f5f5f 32 plan9 BTCL $0x11, 0(AX) -0fba3811|223344556677885f5f5f5f5f 64 gnu btcl $0x11,(%rax) -0fba3811|223344556677885f5f5f5f5f 64 intel btc dword ptr [rax], 0x11 -0fba3811|223344556677885f5f5f5f5f 64 plan9 BTCL $0x11, 0(AX) -0fbb11|223344556677885f5f5f5f5f5f 32 intel btc dword ptr [ecx], edx -0fbb11|223344556677885f5f5f5f5f5f 32 plan9 BTCL DX, 0(CX) -0fbb11|223344556677885f5f5f5f5f5f 64 gnu btc %edx,(%rcx) -0fbb11|223344556677885f5f5f5f5f5f 64 intel btc dword ptr [rcx], edx -0fbb11|223344556677885f5f5f5f5f5f 64 plan9 BTCL DX, 0(CX) -0fbc11|223344556677885f5f5f5f5f5f 32 intel bsf edx, dword ptr [ecx] -0fbc11|223344556677885f5f5f5f5f5f 32 plan9 BSFL 0(CX), DX -0fbc11|223344556677885f5f5f5f5f5f 64 gnu bsf (%rcx),%edx -0fbc11|223344556677885f5f5f5f5f5f 64 intel bsf edx, dword ptr [rcx] -0fbc11|223344556677885f5f5f5f5f5f 64 plan9 BSFL 0(CX), DX -0fbd11|223344556677885f5f5f5f5f5f 32 intel bsr edx, dword ptr [ecx] -0fbd11|223344556677885f5f5f5f5f5f 32 plan9 BSRL 0(CX), DX -0fbd11|223344556677885f5f5f5f5f5f 64 gnu bsr (%rcx),%edx -0fbd11|223344556677885f5f5f5f5f5f 64 intel bsr edx, dword ptr [rcx] -0fbd11|223344556677885f5f5f5f5f5f 64 plan9 BSRL 0(CX), DX -0fbe11|223344556677885f5f5f5f5f5f 32 intel movsx edx, byte ptr [ecx] -0fbe11|223344556677885f5f5f5f5f5f 32 plan9 MOVSX 0(CX), DX -0fbe11|223344556677885f5f5f5f5f5f 64 gnu movsbl (%rcx),%edx -0fbe11|223344556677885f5f5f5f5f5f 64 intel movsx edx, byte ptr [rcx] -0fbe11|223344556677885f5f5f5f5f5f 64 plan9 MOVSX 0(CX), DX -0fbf11|223344556677885f5f5f5f5f5f 32 intel movsx edx, word ptr [ecx] -0fbf11|223344556677885f5f5f5f5f5f 32 plan9 MOVSX 0(CX), DX -0fbf11|223344556677885f5f5f5f5f5f 64 gnu movswl (%rcx),%edx -0fbf11|223344556677885f5f5f5f5f5f 64 intel movsx edx, word ptr [rcx] -0fbf11|223344556677885f5f5f5f5f5f 64 plan9 MOVSX 0(CX), DX -0fc011|223344556677885f5f5f5f5f5f 32 intel xadd byte ptr [ecx], dl -0fc011|223344556677885f5f5f5f5f5f 32 plan9 XADDB DL, 0(CX) -0fc011|223344556677885f5f5f5f5f5f 64 gnu xadd %dl,(%rcx) -0fc011|223344556677885f5f5f5f5f5f 64 intel xadd byte ptr [rcx], dl -0fc011|223344556677885f5f5f5f5f5f 64 plan9 XADDB DL, 0(CX) -0fc111|223344556677885f5f5f5f5f5f 32 intel xadd dword ptr [ecx], edx -0fc111|223344556677885f5f5f5f5f5f 32 plan9 XADDL DX, 0(CX) -0fc111|223344556677885f5f5f5f5f5f 64 gnu xadd %edx,(%rcx) -0fc111|223344556677885f5f5f5f5f5f 64 intel xadd dword ptr [rcx], edx -0fc111|223344556677885f5f5f5f5f5f 64 plan9 XADDL DX, 0(CX) -0fc20000|11223344556677885f5f5f5f 32 intel cmpps xmm0, xmmword ptr [eax], 0x0 -0fc20000|11223344556677885f5f5f5f 32 plan9 CMPPS $0x0, 0(AX), X0 -0fc20000|11223344556677885f5f5f5f 64 gnu cmpeqps (%rax),%xmm0 -0fc20000|11223344556677885f5f5f5f 64 intel cmpps xmm0, xmmword ptr [rax], 0x0 -0fc20000|11223344556677885f5f5f5f 64 plan9 CMPPS $0x0, 0(AX), X0 -0fc311|223344556677885f5f5f5f5f5f 32 intel movnti dword ptr [ecx], edx -0fc311|223344556677885f5f5f5f5f5f 32 plan9 MOVNTIL DX, 0(CX) -0fc311|223344556677885f5f5f5f5f5f 64 gnu movnti %edx,(%rcx) -0fc311|223344556677885f5f5f5f5f5f 64 intel movnti dword ptr [rcx], edx -0fc311|223344556677885f5f5f5f5f5f 64 plan9 MOVNTIL DX, 0(CX) -0fc41122|3344556677885f5f5f5f5f5f 32 intel pinsrw mmx2, word ptr [ecx], 0x22 -0fc41122|3344556677885f5f5f5f5f5f 32 plan9 PINSRW $0x22, 0(CX), M2 -0fc41122|3344556677885f5f5f5f5f5f 64 gnu pinsrw $0x22,(%rcx),%mm2 -0fc41122|3344556677885f5f5f5f5f5f 64 intel pinsrw mmx2, word ptr [rcx], 0x22 -0fc41122|3344556677885f5f5f5f5f5f 64 plan9 PINSRW $0x22, 0(CX), M2 -0fc51122|3344556677885f5f5f5f5f5f 32 intel error: unrecognized instruction -0fc51122|3344556677885f5f5f5f5f5f 32 plan9 error: unrecognized instruction -0fc51122|3344556677885f5f5f5f5f5f 64 gnu error: unrecognized instruction -0fc51122|3344556677885f5f5f5f5f5f 64 intel error: unrecognized instruction -0fc51122|3344556677885f5f5f5f5f5f 64 plan9 error: unrecognized instruction -0fc5c011|223344556677885f5f5f5f5f 32 intel pextrw eax, mmx0, 0x11 -0fc5c011|223344556677885f5f5f5f5f 32 plan9 PEXTRW $0x11, M0, AX -0fc5c011|223344556677885f5f5f5f5f 64 gnu pextrw $0x11,%mm0,%eax -0fc5c011|223344556677885f5f5f5f5f 64 intel pextrw eax, mmx0, 0x11 -0fc5c011|223344556677885f5f5f5f5f 64 plan9 PEXTRW $0x11, M0, AX -0fc61122|3344556677885f5f5f5f5f5f 32 intel shufps xmm2, xmmword ptr [ecx], 0x22 -0fc61122|3344556677885f5f5f5f5f5f 32 plan9 SHUFPS $0x22, 0(CX), X2 -0fc61122|3344556677885f5f5f5f5f5f 64 gnu shufps $0x22,(%rcx),%xmm2 -0fc61122|3344556677885f5f5f5f5f5f 64 intel shufps xmm2, xmmword ptr [rcx], 0x22 -0fc61122|3344556677885f5f5f5f5f5f 64 plan9 SHUFPS $0x22, 0(CX), X2 -0fc708|11223344556677885f5f5f5f5f 32 intel cmpxchg8b qword ptr [eax] -0fc708|11223344556677885f5f5f5f5f 32 plan9 CMPXCHG8B 0(AX) -0fc708|11223344556677885f5f5f5f5f 64 gnu cmpxchg8b (%rax) -0fc708|11223344556677885f5f5f5f5f 64 intel cmpxchg8b qword ptr [rax] -0fc708|11223344556677885f5f5f5f5f 64 plan9 CMPXCHG8B 0(AX) -0fc718|11223344556677885f5f5f5f5f 32 intel xrstors ptr [eax] -0fc718|11223344556677885f5f5f5f5f 32 plan9 XRSTORS 0(AX) -0fc718|11223344556677885f5f5f5f5f 64 gnu xrstors (%rax) -0fc718|11223344556677885f5f5f5f5f 64 intel xrstors ptr [rax] -0fc718|11223344556677885f5f5f5f5f 64 plan9 XRSTORS 0(AX) -0fc720|11223344556677885f5f5f5f5f 32 intel xsavec ptr [eax] -0fc720|11223344556677885f5f5f5f5f 32 plan9 XSAVEC 0(AX) -0fc720|11223344556677885f5f5f5f5f 64 gnu xsavec (%rax) -0fc720|11223344556677885f5f5f5f5f 64 intel xsavec ptr [rax] -0fc720|11223344556677885f5f5f5f5f 64 plan9 XSAVEC 0(AX) -0fc728|11223344556677885f5f5f5f5f 32 intel xsaves ptr [eax] -0fc728|11223344556677885f5f5f5f5f 32 plan9 XSAVES 0(AX) -0fc728|11223344556677885f5f5f5f5f 64 gnu xsaves (%rax) -0fc728|11223344556677885f5f5f5f5f 64 intel xsaves ptr [rax] -0fc728|11223344556677885f5f5f5f5f 64 plan9 XSAVES 0(AX) -0fc730|11223344556677885f5f5f5f5f 32 intel error: unrecognized instruction -0fc730|11223344556677885f5f5f5f5f 32 plan9 error: unrecognized instruction -0fc730|11223344556677885f5f5f5f5f 64 gnu error: unrecognized instruction -0fc730|11223344556677885f5f5f5f5f 64 intel error: unrecognized instruction -0fc730|11223344556677885f5f5f5f5f 64 plan9 error: unrecognized instruction -0fc7f0|11223344556677885f5f5f5f5f 32 intel rdrand eax -0fc7f0|11223344556677885f5f5f5f5f 32 plan9 RDRAND AX -0fc7f0|11223344556677885f5f5f5f5f 64 gnu rdrand %eax -0fc7f0|11223344556677885f5f5f5f5f 64 intel rdrand eax -0fc7f0|11223344556677885f5f5f5f5f 64 plan9 RDRAND AX -0fc8|11223344556677885f5f5f5f5f5f 32 intel bswap eax -0fc8|11223344556677885f5f5f5f5f5f 32 plan9 BSWAP AX -0fc8|11223344556677885f5f5f5f5f5f 64 gnu bswap %eax -0fc8|11223344556677885f5f5f5f5f5f 64 intel bswap eax -0fc8|11223344556677885f5f5f5f5f5f 64 plan9 BSWAP AX -0fd0|11223344556677885f5f5f5f5f5f 32 intel error: unrecognized instruction -0fd0|11223344556677885f5f5f5f5f5f 32 plan9 error: unrecognized instruction -0fd0|11223344556677885f5f5f5f5f5f 64 gnu error: unrecognized instruction -0fd0|11223344556677885f5f5f5f5f5f 64 intel error: unrecognized instruction -0fd0|11223344556677885f5f5f5f5f5f 64 plan9 error: unrecognized instruction -0fd111|223344556677885f5f5f5f5f5f 32 intel psrlw mmx2, qword ptr [ecx] -0fd111|223344556677885f5f5f5f5f5f 32 plan9 PSRLW 0(CX), M2 -0fd111|223344556677885f5f5f5f5f5f 64 gnu psrlw (%rcx),%mm2 -0fd111|223344556677885f5f5f5f5f5f 64 intel psrlw mmx2, qword ptr [rcx] -0fd111|223344556677885f5f5f5f5f5f 64 plan9 PSRLW 0(CX), M2 -0fd211|223344556677885f5f5f5f5f5f 32 intel psrld mmx2, qword ptr [ecx] -0fd211|223344556677885f5f5f5f5f5f 32 plan9 PSRLD 0(CX), M2 -0fd211|223344556677885f5f5f5f5f5f 64 gnu psrld (%rcx),%mm2 -0fd211|223344556677885f5f5f5f5f5f 64 intel psrld mmx2, qword ptr [rcx] -0fd211|223344556677885f5f5f5f5f5f 64 plan9 PSRLD 0(CX), M2 -0fd311|223344556677885f5f5f5f5f5f 32 intel psrlq mmx2, qword ptr [ecx] -0fd311|223344556677885f5f5f5f5f5f 32 plan9 PSRLQ 0(CX), M2 -0fd311|223344556677885f5f5f5f5f5f 64 gnu psrlq (%rcx),%mm2 -0fd311|223344556677885f5f5f5f5f5f 64 intel psrlq mmx2, qword ptr [rcx] -0fd311|223344556677885f5f5f5f5f5f 64 plan9 PSRLQ 0(CX), M2 -0fd411|223344556677885f5f5f5f5f5f 32 intel paddq mmx2, qword ptr [ecx] -0fd411|223344556677885f5f5f5f5f5f 32 plan9 PADDQ 0(CX), M2 -0fd411|223344556677885f5f5f5f5f5f 64 gnu paddq (%rcx),%mm2 -0fd411|223344556677885f5f5f5f5f5f 64 intel paddq mmx2, qword ptr [rcx] -0fd411|223344556677885f5f5f5f5f5f 64 plan9 PADDQ 0(CX), M2 -0fd511|223344556677885f5f5f5f5f5f 32 intel pmullw mmx2, qword ptr [ecx] -0fd511|223344556677885f5f5f5f5f5f 32 plan9 PMULLW 0(CX), M2 -0fd511|223344556677885f5f5f5f5f5f 64 gnu pmullw (%rcx),%mm2 -0fd511|223344556677885f5f5f5f5f5f 64 intel pmullw mmx2, qword ptr [rcx] -0fd511|223344556677885f5f5f5f5f5f 64 plan9 PMULLW 0(CX), M2 -0fd6|11223344556677885f5f5f5f5f5f 32 intel error: unrecognized instruction -0fd6|11223344556677885f5f5f5f5f5f 32 plan9 error: unrecognized instruction -0fd6|11223344556677885f5f5f5f5f5f 64 gnu error: unrecognized instruction -0fd6|11223344556677885f5f5f5f5f5f 64 intel error: unrecognized instruction -0fd6|11223344556677885f5f5f5f5f5f 64 plan9 error: unrecognized instruction -0fd711|223344556677885f5f5f5f5f5f 32 intel error: unrecognized instruction -0fd711|223344556677885f5f5f5f5f5f 32 plan9 error: unrecognized instruction -0fd711|223344556677885f5f5f5f5f5f 64 gnu error: unrecognized instruction -0fd711|223344556677885f5f5f5f5f5f 64 intel error: unrecognized instruction -0fd711|223344556677885f5f5f5f5f5f 64 plan9 error: unrecognized instruction -0fd7c0|11223344556677885f5f5f5f5f 32 intel pmovmskb eax, mmx0 -0fd7c0|11223344556677885f5f5f5f5f 32 plan9 PMOVMSKB M0, AX -0fd7c0|11223344556677885f5f5f5f5f 64 gnu pmovmskb %mm0,%eax -0fd7c0|11223344556677885f5f5f5f5f 64 intel pmovmskb eax, mmx0 -0fd7c0|11223344556677885f5f5f5f5f 64 plan9 PMOVMSKB M0, AX -0fd811|223344556677885f5f5f5f5f5f 32 intel psubusb mmx2, qword ptr [ecx] -0fd811|223344556677885f5f5f5f5f5f 32 plan9 PSUBUSB 0(CX), M2 -0fd811|223344556677885f5f5f5f5f5f 64 gnu psubusb (%rcx),%mm2 -0fd811|223344556677885f5f5f5f5f5f 64 intel psubusb mmx2, qword ptr [rcx] -0fd811|223344556677885f5f5f5f5f5f 64 plan9 PSUBUSB 0(CX), M2 -0fd911|223344556677885f5f5f5f5f5f 32 intel psubusw mmx2, qword ptr [ecx] -0fd911|223344556677885f5f5f5f5f5f 32 plan9 PSUBUSW 0(CX), M2 -0fd911|223344556677885f5f5f5f5f5f 64 gnu psubusw (%rcx),%mm2 -0fd911|223344556677885f5f5f5f5f5f 64 intel psubusw mmx2, qword ptr [rcx] -0fd911|223344556677885f5f5f5f5f5f 64 plan9 PSUBUSW 0(CX), M2 -0fda11|223344556677885f5f5f5f5f5f 32 intel pminub mmx2, qword ptr [ecx] -0fda11|223344556677885f5f5f5f5f5f 32 plan9 PMINUB 0(CX), M2 -0fda11|223344556677885f5f5f5f5f5f 64 gnu pminub (%rcx),%mm2 -0fda11|223344556677885f5f5f5f5f5f 64 intel pminub mmx2, qword ptr [rcx] -0fda11|223344556677885f5f5f5f5f5f 64 plan9 PMINUB 0(CX), M2 -0fdb11|223344556677885f5f5f5f5f5f 32 intel pand mmx2, qword ptr [ecx] -0fdb11|223344556677885f5f5f5f5f5f 32 plan9 PAND 0(CX), M2 -0fdb11|223344556677885f5f5f5f5f5f 64 gnu pand (%rcx),%mm2 -0fdb11|223344556677885f5f5f5f5f5f 64 intel pand mmx2, qword ptr [rcx] -0fdb11|223344556677885f5f5f5f5f5f 64 plan9 PAND 0(CX), M2 -0fdc11|223344556677885f5f5f5f5f5f 32 intel paddusb mmx2, qword ptr [ecx] -0fdc11|223344556677885f5f5f5f5f5f 32 plan9 PADDUSB 0(CX), M2 -0fdc11|223344556677885f5f5f5f5f5f 64 gnu paddusb (%rcx),%mm2 -0fdc11|223344556677885f5f5f5f5f5f 64 intel paddusb mmx2, qword ptr [rcx] -0fdc11|223344556677885f5f5f5f5f5f 64 plan9 PADDUSB 0(CX), M2 -0fdd11|223344556677885f5f5f5f5f5f 32 intel paddusw mmx2, qword ptr [ecx] -0fdd11|223344556677885f5f5f5f5f5f 32 plan9 PADDUSW 0(CX), M2 -0fdd11|223344556677885f5f5f5f5f5f 64 gnu paddusw (%rcx),%mm2 -0fdd11|223344556677885f5f5f5f5f5f 64 intel paddusw mmx2, qword ptr [rcx] -0fdd11|223344556677885f5f5f5f5f5f 64 plan9 PADDUSW 0(CX), M2 -0fde11|223344556677885f5f5f5f5f5f 32 intel pmaxub mmx2, qword ptr [ecx] -0fde11|223344556677885f5f5f5f5f5f 32 plan9 PMAXUB 0(CX), M2 -0fde11|223344556677885f5f5f5f5f5f 64 gnu pmaxub (%rcx),%mm2 -0fde11|223344556677885f5f5f5f5f5f 64 intel pmaxub mmx2, qword ptr [rcx] -0fde11|223344556677885f5f5f5f5f5f 64 plan9 PMAXUB 0(CX), M2 -0fdf11|223344556677885f5f5f5f5f5f 32 intel pandn mmx2, qword ptr [ecx] -0fdf11|223344556677885f5f5f5f5f5f 32 plan9 PANDN 0(CX), M2 -0fdf11|223344556677885f5f5f5f5f5f 64 gnu pandn (%rcx),%mm2 -0fdf11|223344556677885f5f5f5f5f5f 64 intel pandn mmx2, qword ptr [rcx] -0fdf11|223344556677885f5f5f5f5f5f 64 plan9 PANDN 0(CX), M2 -0fe011|223344556677885f5f5f5f5f5f 32 intel pavgb mmx2, qword ptr [ecx] -0fe011|223344556677885f5f5f5f5f5f 32 plan9 PAVGB 0(CX), M2 -0fe011|223344556677885f5f5f5f5f5f 64 gnu pavgb (%rcx),%mm2 -0fe011|223344556677885f5f5f5f5f5f 64 intel pavgb mmx2, qword ptr [rcx] -0fe011|223344556677885f5f5f5f5f5f 64 plan9 PAVGB 0(CX), M2 -0fe111|223344556677885f5f5f5f5f5f 32 intel psraw mmx2, qword ptr [ecx] -0fe111|223344556677885f5f5f5f5f5f 32 plan9 PSRAW 0(CX), M2 -0fe111|223344556677885f5f5f5f5f5f 64 gnu psraw (%rcx),%mm2 -0fe111|223344556677885f5f5f5f5f5f 64 intel psraw mmx2, qword ptr [rcx] -0fe111|223344556677885f5f5f5f5f5f 64 plan9 PSRAW 0(CX), M2 -0fe211|223344556677885f5f5f5f5f5f 32 intel psrad mmx2, qword ptr [ecx] -0fe211|223344556677885f5f5f5f5f5f 32 plan9 PSRAD 0(CX), M2 -0fe211|223344556677885f5f5f5f5f5f 64 gnu psrad (%rcx),%mm2 -0fe211|223344556677885f5f5f5f5f5f 64 intel psrad mmx2, qword ptr [rcx] -0fe211|223344556677885f5f5f5f5f5f 64 plan9 PSRAD 0(CX), M2 -0fe311|223344556677885f5f5f5f5f5f 32 intel pavgw mmx2, qword ptr [ecx] -0fe311|223344556677885f5f5f5f5f5f 32 plan9 PAVGW 0(CX), M2 -0fe311|223344556677885f5f5f5f5f5f 64 gnu pavgw (%rcx),%mm2 -0fe311|223344556677885f5f5f5f5f5f 64 intel pavgw mmx2, qword ptr [rcx] -0fe311|223344556677885f5f5f5f5f5f 64 plan9 PAVGW 0(CX), M2 -0fe411|223344556677885f5f5f5f5f5f 32 intel pmulhuw mmx2, qword ptr [ecx] -0fe411|223344556677885f5f5f5f5f5f 32 plan9 PMULHUW 0(CX), M2 -0fe411|223344556677885f5f5f5f5f5f 64 gnu pmulhuw (%rcx),%mm2 -0fe411|223344556677885f5f5f5f5f5f 64 intel pmulhuw mmx2, qword ptr [rcx] -0fe411|223344556677885f5f5f5f5f5f 64 plan9 PMULHUW 0(CX), M2 -0fe511|223344556677885f5f5f5f5f5f 32 intel pmulhw mmx2, qword ptr [ecx] -0fe511|223344556677885f5f5f5f5f5f 32 plan9 PMULHW 0(CX), M2 -0fe511|223344556677885f5f5f5f5f5f 64 gnu pmulhw (%rcx),%mm2 -0fe511|223344556677885f5f5f5f5f5f 64 intel pmulhw mmx2, qword ptr [rcx] -0fe511|223344556677885f5f5f5f5f5f 64 plan9 PMULHW 0(CX), M2 -0fe6|11223344556677885f5f5f5f5f5f 32 intel error: unrecognized instruction -0fe6|11223344556677885f5f5f5f5f5f 32 plan9 error: unrecognized instruction -0fe6|11223344556677885f5f5f5f5f5f 64 gnu error: unrecognized instruction -0fe6|11223344556677885f5f5f5f5f5f 64 intel error: unrecognized instruction -0fe6|11223344556677885f5f5f5f5f5f 64 plan9 error: unrecognized instruction -0fe711|223344556677885f5f5f5f5f5f 32 intel movntq qword ptr [ecx], mmx2 -0fe711|223344556677885f5f5f5f5f5f 32 plan9 MOVNTQ M2, 0(CX) -0fe711|223344556677885f5f5f5f5f5f 64 gnu movntq %mm2,(%rcx) -0fe711|223344556677885f5f5f5f5f5f 64 intel movntq qword ptr [rcx], mmx2 -0fe711|223344556677885f5f5f5f5f5f 64 plan9 MOVNTQ M2, 0(CX) -0fe811|223344556677885f5f5f5f5f5f 32 intel psubsb mmx2, qword ptr [ecx] -0fe811|223344556677885f5f5f5f5f5f 32 plan9 PSUBSB 0(CX), M2 -0fe811|223344556677885f5f5f5f5f5f 64 gnu psubsb (%rcx),%mm2 -0fe811|223344556677885f5f5f5f5f5f 64 intel psubsb mmx2, qword ptr [rcx] -0fe811|223344556677885f5f5f5f5f5f 64 plan9 PSUBSB 0(CX), M2 -0fe911|223344556677885f5f5f5f5f5f 32 intel psubsw mmx2, qword ptr [ecx] -0fe911|223344556677885f5f5f5f5f5f 32 plan9 PSUBSW 0(CX), M2 -0fe911|223344556677885f5f5f5f5f5f 64 gnu psubsw (%rcx),%mm2 -0fe911|223344556677885f5f5f5f5f5f 64 intel psubsw mmx2, qword ptr [rcx] -0fe911|223344556677885f5f5f5f5f5f 64 plan9 PSUBSW 0(CX), M2 -0fea11|223344556677885f5f5f5f5f5f 32 intel pminsw mmx2, qword ptr [ecx] -0fea11|223344556677885f5f5f5f5f5f 32 plan9 PMINSW 0(CX), M2 -0fea11|223344556677885f5f5f5f5f5f 64 gnu pminsw (%rcx),%mm2 -0fea11|223344556677885f5f5f5f5f5f 64 intel pminsw mmx2, qword ptr [rcx] -0fea11|223344556677885f5f5f5f5f5f 64 plan9 PMINSW 0(CX), M2 -0feb11|223344556677885f5f5f5f5f5f 32 intel por mmx2, qword ptr [ecx] -0feb11|223344556677885f5f5f5f5f5f 32 plan9 POR 0(CX), M2 -0feb11|223344556677885f5f5f5f5f5f 64 gnu por (%rcx),%mm2 -0feb11|223344556677885f5f5f5f5f5f 64 intel por mmx2, qword ptr [rcx] -0feb11|223344556677885f5f5f5f5f5f 64 plan9 POR 0(CX), M2 -0fec11|223344556677885f5f5f5f5f5f 32 intel paddsb mmx2, qword ptr [ecx] -0fec11|223344556677885f5f5f5f5f5f 32 plan9 PADDSB 0(CX), M2 -0fec11|223344556677885f5f5f5f5f5f 64 gnu paddsb (%rcx),%mm2 -0fec11|223344556677885f5f5f5f5f5f 64 intel paddsb mmx2, qword ptr [rcx] -0fec11|223344556677885f5f5f5f5f5f 64 plan9 PADDSB 0(CX), M2 -0fed11|223344556677885f5f5f5f5f5f 32 intel paddsw mmx2, qword ptr [ecx] -0fed11|223344556677885f5f5f5f5f5f 32 plan9 PADDSW 0(CX), M2 -0fed11|223344556677885f5f5f5f5f5f 64 gnu paddsw (%rcx),%mm2 -0fed11|223344556677885f5f5f5f5f5f 64 intel paddsw mmx2, qword ptr [rcx] -0fed11|223344556677885f5f5f5f5f5f 64 plan9 PADDSW 0(CX), M2 -0fee11|223344556677885f5f5f5f5f5f 32 intel pmaxsw mmx2, qword ptr [ecx] -0fee11|223344556677885f5f5f5f5f5f 32 plan9 PMAXSW 0(CX), M2 -0fee11|223344556677885f5f5f5f5f5f 64 gnu pmaxsw (%rcx),%mm2 -0fee11|223344556677885f5f5f5f5f5f 64 intel pmaxsw mmx2, qword ptr [rcx] -0fee11|223344556677885f5f5f5f5f5f 64 plan9 PMAXSW 0(CX), M2 -0fef11|223344556677885f5f5f5f5f5f 32 intel pxor mmx2, qword ptr [ecx] -0fef11|223344556677885f5f5f5f5f5f 32 plan9 PXOR 0(CX), M2 -0fef11|223344556677885f5f5f5f5f5f 64 gnu pxor (%rcx),%mm2 -0fef11|223344556677885f5f5f5f5f5f 64 intel pxor mmx2, qword ptr [rcx] -0fef11|223344556677885f5f5f5f5f5f 64 plan9 PXOR 0(CX), M2 -0ff0|11223344556677885f5f5f5f5f5f 32 intel error: unrecognized instruction -0ff0|11223344556677885f5f5f5f5f5f 32 plan9 error: unrecognized instruction -0ff0|11223344556677885f5f5f5f5f5f 64 gnu error: unrecognized instruction -0ff0|11223344556677885f5f5f5f5f5f 64 intel error: unrecognized instruction -0ff0|11223344556677885f5f5f5f5f5f 64 plan9 error: unrecognized instruction -0ff111|223344556677885f5f5f5f5f5f 32 intel psllw mmx2, qword ptr [ecx] -0ff111|223344556677885f5f5f5f5f5f 32 plan9 PSLLW 0(CX), M2 -0ff111|223344556677885f5f5f5f5f5f 64 gnu psllw (%rcx),%mm2 -0ff111|223344556677885f5f5f5f5f5f 64 intel psllw mmx2, qword ptr [rcx] -0ff111|223344556677885f5f5f5f5f5f 64 plan9 PSLLW 0(CX), M2 -0ff211|223344556677885f5f5f5f5f5f 32 intel pslld mmx2, qword ptr [ecx] -0ff211|223344556677885f5f5f5f5f5f 32 plan9 PSLLD 0(CX), M2 -0ff211|223344556677885f5f5f5f5f5f 64 gnu pslld (%rcx),%mm2 -0ff211|223344556677885f5f5f5f5f5f 64 intel pslld mmx2, qword ptr [rcx] -0ff211|223344556677885f5f5f5f5f5f 64 plan9 PSLLD 0(CX), M2 -0ff311|223344556677885f5f5f5f5f5f 32 intel psllq mmx2, qword ptr [ecx] -0ff311|223344556677885f5f5f5f5f5f 32 plan9 PSLLQ 0(CX), M2 -0ff311|223344556677885f5f5f5f5f5f 64 gnu psllq (%rcx),%mm2 -0ff311|223344556677885f5f5f5f5f5f 64 intel psllq mmx2, qword ptr [rcx] -0ff311|223344556677885f5f5f5f5f5f 64 plan9 PSLLQ 0(CX), M2 -0ff411|223344556677885f5f5f5f5f5f 32 intel pmuludq mmx2, qword ptr [ecx] -0ff411|223344556677885f5f5f5f5f5f 32 plan9 PMULUDQ 0(CX), M2 -0ff411|223344556677885f5f5f5f5f5f 64 gnu pmuludq (%rcx),%mm2 -0ff411|223344556677885f5f5f5f5f5f 64 intel pmuludq mmx2, qword ptr [rcx] -0ff411|223344556677885f5f5f5f5f5f 64 plan9 PMULUDQ 0(CX), M2 -0ff511|223344556677885f5f5f5f5f5f 32 intel pmaddwd mmx2, qword ptr [ecx] -0ff511|223344556677885f5f5f5f5f5f 32 plan9 PMADDWD 0(CX), M2 -0ff511|223344556677885f5f5f5f5f5f 64 gnu pmaddwd (%rcx),%mm2 -0ff511|223344556677885f5f5f5f5f5f 64 intel pmaddwd mmx2, qword ptr [rcx] -0ff511|223344556677885f5f5f5f5f5f 64 plan9 PMADDWD 0(CX), M2 -0ff611|223344556677885f5f5f5f5f5f 32 intel psadbw mmx2, qword ptr [ecx] -0ff611|223344556677885f5f5f5f5f5f 32 plan9 PSADBW 0(CX), M2 -0ff611|223344556677885f5f5f5f5f5f 64 gnu psadbw (%rcx),%mm2 -0ff611|223344556677885f5f5f5f5f5f 64 intel psadbw mmx2, qword ptr [rcx] -0ff611|223344556677885f5f5f5f5f5f 64 plan9 PSADBW 0(CX), M2 -0ff711|223344556677885f5f5f5f5f5f 32 intel error: unrecognized instruction -0ff711|223344556677885f5f5f5f5f5f 32 plan9 error: unrecognized instruction -0ff711|223344556677885f5f5f5f5f5f 64 gnu error: unrecognized instruction -0ff711|223344556677885f5f5f5f5f5f 64 intel error: unrecognized instruction -0ff711|223344556677885f5f5f5f5f5f 64 plan9 error: unrecognized instruction -0ff7c0|11223344556677885f5f5f5f5f 32 intel maskmovq mmx0, mmx0 -0ff7c0|11223344556677885f5f5f5f5f 32 plan9 MASKMOVQ M0, M0 -0ff7c0|11223344556677885f5f5f5f5f 64 gnu maskmovq %mm0,%mm0 -0ff7c0|11223344556677885f5f5f5f5f 64 intel maskmovq mmx0, mmx0 -0ff7c0|11223344556677885f5f5f5f5f 64 plan9 MASKMOVQ M0, M0 -0ff811|223344556677885f5f5f5f5f5f 32 intel psubb mmx2, qword ptr [ecx] -0ff811|223344556677885f5f5f5f5f5f 32 plan9 PSUBB 0(CX), M2 -0ff811|223344556677885f5f5f5f5f5f 64 gnu psubb (%rcx),%mm2 -0ff811|223344556677885f5f5f5f5f5f 64 intel psubb mmx2, qword ptr [rcx] -0ff811|223344556677885f5f5f5f5f5f 64 plan9 PSUBB 0(CX), M2 -0ff911|223344556677885f5f5f5f5f5f 32 intel psubw mmx2, qword ptr [ecx] -0ff911|223344556677885f5f5f5f5f5f 32 plan9 PSUBW 0(CX), M2 -0ff911|223344556677885f5f5f5f5f5f 64 gnu psubw (%rcx),%mm2 -0ff911|223344556677885f5f5f5f5f5f 64 intel psubw mmx2, qword ptr [rcx] -0ff911|223344556677885f5f5f5f5f5f 64 plan9 PSUBW 0(CX), M2 -0ffa11|223344556677885f5f5f5f5f5f 32 intel psubd mmx2, qword ptr [ecx] -0ffa11|223344556677885f5f5f5f5f5f 32 plan9 PSUBD 0(CX), M2 -0ffa11|223344556677885f5f5f5f5f5f 64 gnu psubd (%rcx),%mm2 -0ffa11|223344556677885f5f5f5f5f5f 64 intel psubd mmx2, qword ptr [rcx] -0ffa11|223344556677885f5f5f5f5f5f 64 plan9 PSUBD 0(CX), M2 -0ffb11|223344556677885f5f5f5f5f5f 32 intel psubq mmx2, qword ptr [ecx] -0ffb11|223344556677885f5f5f5f5f5f 32 plan9 PSUBQ 0(CX), M2 -0ffb11|223344556677885f5f5f5f5f5f 64 gnu psubq (%rcx),%mm2 -0ffb11|223344556677885f5f5f5f5f5f 64 intel psubq mmx2, qword ptr [rcx] -0ffb11|223344556677885f5f5f5f5f5f 64 plan9 PSUBQ 0(CX), M2 -0ffc11|223344556677885f5f5f5f5f5f 32 intel paddb mmx2, qword ptr [ecx] -0ffc11|223344556677885f5f5f5f5f5f 32 plan9 PADDB 0(CX), M2 -0ffc11|223344556677885f5f5f5f5f5f 64 gnu paddb (%rcx),%mm2 -0ffc11|223344556677885f5f5f5f5f5f 64 intel paddb mmx2, qword ptr [rcx] -0ffc11|223344556677885f5f5f5f5f5f 64 plan9 PADDB 0(CX), M2 -0ffd11|223344556677885f5f5f5f5f5f 32 intel paddw mmx2, qword ptr [ecx] -0ffd11|223344556677885f5f5f5f5f5f 32 plan9 PADDW 0(CX), M2 -0ffd11|223344556677885f5f5f5f5f5f 64 gnu paddw (%rcx),%mm2 -0ffd11|223344556677885f5f5f5f5f5f 64 intel paddw mmx2, qword ptr [rcx] -0ffd11|223344556677885f5f5f5f5f5f 64 plan9 PADDW 0(CX), M2 -0ffe11|223344556677885f5f5f5f5f5f 32 intel paddd mmx2, qword ptr [ecx] -0ffe11|223344556677885f5f5f5f5f5f 32 plan9 PADDD 0(CX), M2 -0ffe11|223344556677885f5f5f5f5f5f 64 gnu paddd (%rcx),%mm2 -0ffe11|223344556677885f5f5f5f5f5f 64 intel paddd mmx2, qword ptr [rcx] -0ffe11|223344556677885f5f5f5f5f5f 64 plan9 PADDD 0(CX), M2 -1011|223344556677885f5f5f5f5f5f5f 32 intel adc byte ptr [ecx], dl -1011|223344556677885f5f5f5f5f5f5f 32 plan9 ADCB DL, 0(CX) -1011|223344556677885f5f5f5f5f5f5f 64 gnu adc %dl,(%rcx) -1011|223344556677885f5f5f5f5f5f5f 64 intel adc byte ptr [rcx], dl -1011|223344556677885f5f5f5f5f5f5f 64 plan9 ADCB DL, 0(CX) -1111|223344556677885f5f5f5f5f5f5f 32 intel adc dword ptr [ecx], edx -1111|223344556677885f5f5f5f5f5f5f 32 plan9 ADCL DX, 0(CX) -1111|223344556677885f5f5f5f5f5f5f 64 gnu adc %edx,(%rcx) -1111|223344556677885f5f5f5f5f5f5f 64 intel adc dword ptr [rcx], edx -1111|223344556677885f5f5f5f5f5f5f 64 plan9 ADCL DX, 0(CX) -1211|223344556677885f5f5f5f5f5f5f 32 intel adc dl, byte ptr [ecx] -1211|223344556677885f5f5f5f5f5f5f 32 plan9 ADCB 0(CX), DL -1211|223344556677885f5f5f5f5f5f5f 64 gnu adc (%rcx),%dl -1211|223344556677885f5f5f5f5f5f5f 64 intel adc dl, byte ptr [rcx] -1211|223344556677885f5f5f5f5f5f5f 64 plan9 ADCB 0(CX), DL -1311|223344556677885f5f5f5f5f5f5f 32 intel adc edx, dword ptr [ecx] -1311|223344556677885f5f5f5f5f5f5f 32 plan9 ADCL 0(CX), DX -1311|223344556677885f5f5f5f5f5f5f 64 gnu adc (%rcx),%edx -1311|223344556677885f5f5f5f5f5f5f 64 intel adc edx, dword ptr [rcx] -1311|223344556677885f5f5f5f5f5f5f 64 plan9 ADCL 0(CX), DX -1411|223344556677885f5f5f5f5f5f5f 32 intel adc al, 0x11 -1411|223344556677885f5f5f5f5f5f5f 32 plan9 ADCL $0x11, AL -1411|223344556677885f5f5f5f5f5f5f 64 gnu adc $0x11,%al -1411|223344556677885f5f5f5f5f5f5f 64 intel adc al, 0x11 -1411|223344556677885f5f5f5f5f5f5f 64 plan9 ADCL $0x11, AL -1511223344|556677885f5f5f5f5f5f5f 32 intel adc eax, 0x44332211 -1511223344|556677885f5f5f5f5f5f5f 32 plan9 ADCL $0x44332211, AX -1511223344|556677885f5f5f5f5f5f5f 64 gnu adc $0x44332211,%eax -1511223344|556677885f5f5f5f5f5f5f 64 intel adc eax, 0x44332211 -1511223344|556677885f5f5f5f5f5f5f 64 plan9 ADCL $0x44332211, AX -16|11223344556677885f5f5f5f5f5f5f 32 intel push ss -16|11223344556677885f5f5f5f5f5f5f 32 plan9 PUSHL SS -16|11223344556677885f5f5f5f5f5f5f 64 gnu error: unrecognized instruction -16|11223344556677885f5f5f5f5f5f5f 64 intel error: unrecognized instruction -16|11223344556677885f5f5f5f5f5f5f 64 plan9 error: unrecognized instruction -17|11223344556677885f5f5f5f5f5f5f 32 intel pop ss -17|11223344556677885f5f5f5f5f5f5f 32 plan9 POPL SS -17|11223344556677885f5f5f5f5f5f5f 64 gnu error: unrecognized instruction -17|11223344556677885f5f5f5f5f5f5f 64 intel error: unrecognized instruction -17|11223344556677885f5f5f5f5f5f5f 64 plan9 error: unrecognized instruction -1811|223344556677885f5f5f5f5f5f5f 32 intel sbb byte ptr [ecx], dl -1811|223344556677885f5f5f5f5f5f5f 32 plan9 SBBB DL, 0(CX) -1811|223344556677885f5f5f5f5f5f5f 64 gnu sbb %dl,(%rcx) -1811|223344556677885f5f5f5f5f5f5f 64 intel sbb byte ptr [rcx], dl -1811|223344556677885f5f5f5f5f5f5f 64 plan9 SBBB DL, 0(CX) -1911|223344556677885f5f5f5f5f5f5f 32 intel sbb dword ptr [ecx], edx -1911|223344556677885f5f5f5f5f5f5f 32 plan9 SBBL DX, 0(CX) -1911|223344556677885f5f5f5f5f5f5f 64 gnu sbb %edx,(%rcx) -1911|223344556677885f5f5f5f5f5f5f 64 intel sbb dword ptr [rcx], edx -1911|223344556677885f5f5f5f5f5f5f 64 plan9 SBBL DX, 0(CX) -1a11|223344556677885f5f5f5f5f5f5f 32 intel sbb dl, byte ptr [ecx] -1a11|223344556677885f5f5f5f5f5f5f 32 plan9 SBBB 0(CX), DL -1a11|223344556677885f5f5f5f5f5f5f 64 gnu sbb (%rcx),%dl -1a11|223344556677885f5f5f5f5f5f5f 64 intel sbb dl, byte ptr [rcx] -1a11|223344556677885f5f5f5f5f5f5f 64 plan9 SBBB 0(CX), DL -1b11|223344556677885f5f5f5f5f5f5f 32 intel sbb edx, dword ptr [ecx] -1b11|223344556677885f5f5f5f5f5f5f 32 plan9 SBBL 0(CX), DX -1b11|223344556677885f5f5f5f5f5f5f 64 gnu sbb (%rcx),%edx -1b11|223344556677885f5f5f5f5f5f5f 64 intel sbb edx, dword ptr [rcx] -1b11|223344556677885f5f5f5f5f5f5f 64 plan9 SBBL 0(CX), DX -1c11|223344556677885f5f5f5f5f5f5f 32 intel sbb al, 0x11 -1c11|223344556677885f5f5f5f5f5f5f 32 plan9 SBBL $0x11, AL -1c11|223344556677885f5f5f5f5f5f5f 64 gnu sbb $0x11,%al -1c11|223344556677885f5f5f5f5f5f5f 64 intel sbb al, 0x11 -1c11|223344556677885f5f5f5f5f5f5f 64 plan9 SBBL $0x11, AL -1d11223344|556677885f5f5f5f5f5f5f 32 intel sbb eax, 0x44332211 -1d11223344|556677885f5f5f5f5f5f5f 32 plan9 SBBL $0x44332211, AX -1d11223344|556677885f5f5f5f5f5f5f 64 gnu sbb $0x44332211,%eax -1d11223344|556677885f5f5f5f5f5f5f 64 intel sbb eax, 0x44332211 -1d11223344|556677885f5f5f5f5f5f5f 64 plan9 SBBL $0x44332211, AX -1e|11223344556677885f5f5f5f5f5f5f 32 intel push ds -1e|11223344556677885f5f5f5f5f5f5f 32 plan9 PUSHL DS -1e|11223344556677885f5f5f5f5f5f5f 64 gnu error: unrecognized instruction -1e|11223344556677885f5f5f5f5f5f5f 64 intel error: unrecognized instruction -1e|11223344556677885f5f5f5f5f5f5f 64 plan9 error: unrecognized instruction -1f|11223344556677885f5f5f5f5f5f5f 32 intel pop ds -1f|11223344556677885f5f5f5f5f5f5f 32 plan9 POPL DS -1f|11223344556677885f5f5f5f5f5f5f 64 gnu error: unrecognized instruction -1f|11223344556677885f5f5f5f5f5f5f 64 intel error: unrecognized instruction -1f|11223344556677885f5f5f5f5f5f5f 64 plan9 error: unrecognized instruction -2011|223344556677885f5f5f5f5f5f5f 32 intel and byte ptr [ecx], dl -2011|223344556677885f5f5f5f5f5f5f 32 plan9 ANDB DL, 0(CX) -2011|223344556677885f5f5f5f5f5f5f 64 gnu and %dl,(%rcx) -2011|223344556677885f5f5f5f5f5f5f 64 intel and byte ptr [rcx], dl -2011|223344556677885f5f5f5f5f5f5f 64 plan9 ANDB DL, 0(CX) -2111|223344556677885f5f5f5f5f5f5f 32 intel and dword ptr [ecx], edx -2111|223344556677885f5f5f5f5f5f5f 32 plan9 ANDL DX, 0(CX) -2111|223344556677885f5f5f5f5f5f5f 64 gnu and %edx,(%rcx) -2111|223344556677885f5f5f5f5f5f5f 64 intel and dword ptr [rcx], edx -2111|223344556677885f5f5f5f5f5f5f 64 plan9 ANDL DX, 0(CX) -2211|223344556677885f5f5f5f5f5f5f 32 intel and dl, byte ptr [ecx] -2211|223344556677885f5f5f5f5f5f5f 32 plan9 ANDB 0(CX), DL -2211|223344556677885f5f5f5f5f5f5f 64 gnu and (%rcx),%dl -2211|223344556677885f5f5f5f5f5f5f 64 intel and dl, byte ptr [rcx] -2211|223344556677885f5f5f5f5f5f5f 64 plan9 ANDB 0(CX), DL -2311|223344556677885f5f5f5f5f5f5f 32 intel and edx, dword ptr [ecx] -2311|223344556677885f5f5f5f5f5f5f 32 plan9 ANDL 0(CX), DX -2311|223344556677885f5f5f5f5f5f5f 64 gnu and (%rcx),%edx -2311|223344556677885f5f5f5f5f5f5f 64 intel and edx, dword ptr [rcx] -2311|223344556677885f5f5f5f5f5f5f 64 plan9 ANDL 0(CX), DX -2411|223344556677885f5f5f5f5f5f5f 32 intel and al, 0x11 -2411|223344556677885f5f5f5f5f5f5f 32 plan9 ANDL $0x11, AL -2411|223344556677885f5f5f5f5f5f5f 64 gnu and $0x11,%al -2411|223344556677885f5f5f5f5f5f5f 64 intel and al, 0x11 -2411|223344556677885f5f5f5f5f5f5f 64 plan9 ANDL $0x11, AL -2511223344|556677885f5f5f5f5f5f5f 32 intel and eax, 0x44332211 -2511223344|556677885f5f5f5f5f5f5f 32 plan9 ANDL $0x44332211, AX -2511223344|556677885f5f5f5f5f5f5f 64 gnu and $0x44332211,%eax -2511223344|556677885f5f5f5f5f5f5f 64 intel and eax, 0x44332211 -2511223344|556677885f5f5f5f5f5f5f 64 plan9 ANDL $0x44332211, AX -266e|11223344556677885f5f5f5f5f5f 32 intel outsb es -266e|11223344556677885f5f5f5f5f5f 32 plan9 OUTSB ES:0(SI), DX -266e|11223344556677885f5f5f5f5f5f 64 gnu outsb %ds:%es:(%rsi),(%dx) -266e|11223344556677885f5f5f5f5f5f 64 intel outsb -266e|11223344556677885f5f5f5f5f5f 64 plan9 ES OUTSB DS:0(SI), DX -267011|223344556677885f5f5f5f5f5f 32 intel jo .+0x11 -267011|223344556677885f5f5f5f5f5f 32 plan9 ES JO .+17 -267011|223344556677885f5f5f5f5f5f 64 gnu es jo .+0x11 -267011|223344556677885f5f5f5f5f5f 64 intel jo .+0x11 -267011|223344556677885f5f5f5f5f5f 64 plan9 ES JO .+17 -26a01122334455667788|5f5f5f5f5f5f 64 gnu mov %es:-0x778899aabbccddef,%al -26a01122334455667788|5f5f5f5f5f5f 64 intel mov al, byte ptr [0x8877665544332211] -26a01122334455667788|5f5f5f5f5f5f 64 plan9 ES MOVB -0x778899aabbccddef, AL -26a011223344|556677885f5f5f5f5f5f 32 intel mov al, byte ptr es:[0x44332211] -26a011223344|556677885f5f5f5f5f5f 32 plan9 MOVB ES:0x44332211, AL -26|8211223344556677885f5f5f5f5f5f 32 intel es -26|8211223344556677885f5f5f5f5f5f 32 plan9 ES Op(0) -26|8211223344556677885f5f5f5f5f5f 64 gnu es -26|8211223344556677885f5f5f5f5f5f 64 intel es -26|8211223344556677885f5f5f5f5f5f 64 plan9 ES Op(0) -27|11223344556677885f5f5f5f5f5f5f 32 intel daa -27|11223344556677885f5f5f5f5f5f5f 32 plan9 DAA -27|11223344556677885f5f5f5f5f5f5f 64 gnu error: unrecognized instruction -27|11223344556677885f5f5f5f5f5f5f 64 intel error: unrecognized instruction -27|11223344556677885f5f5f5f5f5f5f 64 plan9 error: unrecognized instruction -2811|223344556677885f5f5f5f5f5f5f 32 intel sub byte ptr [ecx], dl -2811|223344556677885f5f5f5f5f5f5f 32 plan9 SUBB DL, 0(CX) -2811|223344556677885f5f5f5f5f5f5f 64 gnu sub %dl,(%rcx) -2811|223344556677885f5f5f5f5f5f5f 64 intel sub byte ptr [rcx], dl -2811|223344556677885f5f5f5f5f5f5f 64 plan9 SUBB DL, 0(CX) -2911|223344556677885f5f5f5f5f5f5f 32 intel sub dword ptr [ecx], edx -2911|223344556677885f5f5f5f5f5f5f 32 plan9 SUBL DX, 0(CX) -2911|223344556677885f5f5f5f5f5f5f 64 gnu sub %edx,(%rcx) -2911|223344556677885f5f5f5f5f5f5f 64 intel sub dword ptr [rcx], edx -2911|223344556677885f5f5f5f5f5f5f 64 plan9 SUBL DX, 0(CX) -2a11|223344556677885f5f5f5f5f5f5f 32 intel sub dl, byte ptr [ecx] -2a11|223344556677885f5f5f5f5f5f5f 32 plan9 SUBB 0(CX), DL -2a11|223344556677885f5f5f5f5f5f5f 64 gnu sub (%rcx),%dl -2a11|223344556677885f5f5f5f5f5f5f 64 intel sub dl, byte ptr [rcx] -2a11|223344556677885f5f5f5f5f5f5f 64 plan9 SUBB 0(CX), DL -2b11|223344556677885f5f5f5f5f5f5f 32 intel sub edx, dword ptr [ecx] -2b11|223344556677885f5f5f5f5f5f5f 32 plan9 SUBL 0(CX), DX -2b11|223344556677885f5f5f5f5f5f5f 64 gnu sub (%rcx),%edx -2b11|223344556677885f5f5f5f5f5f5f 64 intel sub edx, dword ptr [rcx] -2b11|223344556677885f5f5f5f5f5f5f 64 plan9 SUBL 0(CX), DX -2c11|223344556677885f5f5f5f5f5f5f 32 intel sub al, 0x11 -2c11|223344556677885f5f5f5f5f5f5f 32 plan9 SUBL $0x11, AL -2c11|223344556677885f5f5f5f5f5f5f 64 gnu sub $0x11,%al -2c11|223344556677885f5f5f5f5f5f5f 64 intel sub al, 0x11 -2c11|223344556677885f5f5f5f5f5f5f 64 plan9 SUBL $0x11, AL -2d11223344|556677885f5f5f5f5f5f5f 32 intel sub eax, 0x44332211 -2d11223344|556677885f5f5f5f5f5f5f 32 plan9 SUBL $0x44332211, AX -2d11223344|556677885f5f5f5f5f5f5f 64 gnu sub $0x44332211,%eax -2d11223344|556677885f5f5f5f5f5f5f 64 intel sub eax, 0x44332211 -2d11223344|556677885f5f5f5f5f5f5f 64 plan9 SUBL $0x44332211, AX -2f|11223344556677885f5f5f5f5f5f5f 32 intel das -2f|11223344556677885f5f5f5f5f5f5f 32 plan9 DAS -2f|11223344556677885f5f5f5f5f5f5f 64 gnu error: unrecognized instruction -2f|11223344556677885f5f5f5f5f5f5f 64 intel error: unrecognized instruction -2f|11223344556677885f5f5f5f5f5f5f 64 plan9 error: unrecognized instruction -3011|223344556677885f5f5f5f5f5f5f 32 intel xor byte ptr [ecx], dl -3011|223344556677885f5f5f5f5f5f5f 32 plan9 XORB DL, 0(CX) -3011|223344556677885f5f5f5f5f5f5f 64 gnu xor %dl,(%rcx) -3011|223344556677885f5f5f5f5f5f5f 64 intel xor byte ptr [rcx], dl -3011|223344556677885f5f5f5f5f5f5f 64 plan9 XORB DL, 0(CX) -3111|223344556677885f5f5f5f5f5f5f 32 intel xor dword ptr [ecx], edx -3111|223344556677885f5f5f5f5f5f5f 32 plan9 XORL DX, 0(CX) -3111|223344556677885f5f5f5f5f5f5f 64 gnu xor %edx,(%rcx) -3111|223344556677885f5f5f5f5f5f5f 64 intel xor dword ptr [rcx], edx -3111|223344556677885f5f5f5f5f5f5f 64 plan9 XORL DX, 0(CX) -3211|223344556677885f5f5f5f5f5f5f 32 intel xor dl, byte ptr [ecx] -3211|223344556677885f5f5f5f5f5f5f 32 plan9 XORB 0(CX), DL -3211|223344556677885f5f5f5f5f5f5f 64 gnu xor (%rcx),%dl -3211|223344556677885f5f5f5f5f5f5f 64 intel xor dl, byte ptr [rcx] -3211|223344556677885f5f5f5f5f5f5f 64 plan9 XORB 0(CX), DL -3311|223344556677885f5f5f5f5f5f5f 32 intel xor edx, dword ptr [ecx] -3311|223344556677885f5f5f5f5f5f5f 32 plan9 XORL 0(CX), DX -3311|223344556677885f5f5f5f5f5f5f 64 gnu xor (%rcx),%edx -3311|223344556677885f5f5f5f5f5f5f 64 intel xor edx, dword ptr [rcx] -3311|223344556677885f5f5f5f5f5f5f 64 plan9 XORL 0(CX), DX -3411|223344556677885f5f5f5f5f5f5f 32 intel xor al, 0x11 -3411|223344556677885f5f5f5f5f5f5f 32 plan9 XORL $0x11, AL -3411|223344556677885f5f5f5f5f5f5f 64 gnu xor $0x11,%al -3411|223344556677885f5f5f5f5f5f5f 64 intel xor al, 0x11 -3411|223344556677885f5f5f5f5f5f5f 64 plan9 XORL $0x11, AL -3511223344|556677885f5f5f5f5f5f5f 32 intel xor eax, 0x44332211 -3511223344|556677885f5f5f5f5f5f5f 32 plan9 XORL $0x44332211, AX -3511223344|556677885f5f5f5f5f5f5f 64 gnu xor $0x44332211,%eax -3511223344|556677885f5f5f5f5f5f5f 64 intel xor eax, 0x44332211 -3511223344|556677885f5f5f5f5f5f5f 64 plan9 XORL $0x44332211, AX -3667f3660f2ac0|11223344556677885f 32 intel addr16 cvtsi2ss xmm0, eax -3667f3660f2ac0|11223344556677885f 32 plan9 CVTSI2SSW AX, X0 -3667f3660f2ac0|11223344556677885f 64 gnu ss addr32 cvtsi2ss %ax,%xmm0 -3667f3660f2ac0|11223344556677885f 64 intel addr32 cvtsi2ss xmm0, eax -3667f3660f2ac0|11223344556677885f 64 plan9 CVTSI2SSW AX, X0 -36|67f3660ff7c011223344556677885f 64 gnu ss -36|f0f2f33e66f066f2f33e3666818411 32 intel ss -36|f0f2f33e66f066f2f33e3666818411 32 plan9 SS Op(0) -36|f0f2f33e66f066f2f33e3666818411 64 gnu ss -36|f0f2f33e66f066f2f33e3666818411 64 intel ss -36|f0f2f33e66f066f2f33e3666818411 64 plan9 SS Op(0) -36|f2f33ef0f78411223344556677885f 32 intel ss -36|f2f33ef0f78411223344556677885f 32 plan9 SS Op(0) -36|f2f33ef0f78411223344556677885f 64 gnu ss -36|f2f33ef0f78411223344556677885f 64 intel ss -36|f2f33ef0f78411223344556677885f 64 plan9 SS Op(0) -37|11223344556677885f5f5f5f5f5f5f 32 intel aaa -37|11223344556677885f5f5f5f5f5f5f 32 plan9 AAA -37|11223344556677885f5f5f5f5f5f5f 64 gnu error: unrecognized instruction -37|11223344556677885f5f5f5f5f5f5f 64 intel error: unrecognized instruction -37|11223344556677885f5f5f5f5f5f5f 64 plan9 error: unrecognized instruction -3811|223344556677885f5f5f5f5f5f5f 32 intel cmp byte ptr [ecx], dl -3811|223344556677885f5f5f5f5f5f5f 32 plan9 CMPB DL, 0(CX) -3811|223344556677885f5f5f5f5f5f5f 64 gnu cmp %dl,(%rcx) -3811|223344556677885f5f5f5f5f5f5f 64 intel cmp byte ptr [rcx], dl -3811|223344556677885f5f5f5f5f5f5f 64 plan9 CMPB DL, 0(CX) -3911|223344556677885f5f5f5f5f5f5f 32 intel cmp dword ptr [ecx], edx -3911|223344556677885f5f5f5f5f5f5f 32 plan9 CMPL DX, 0(CX) -3911|223344556677885f5f5f5f5f5f5f 64 gnu cmp %edx,(%rcx) -3911|223344556677885f5f5f5f5f5f5f 64 intel cmp dword ptr [rcx], edx -3911|223344556677885f5f5f5f5f5f5f 64 plan9 CMPL DX, 0(CX) -3a11|223344556677885f5f5f5f5f5f5f 32 intel cmp dl, byte ptr [ecx] -3a11|223344556677885f5f5f5f5f5f5f 32 plan9 CMPB 0(CX), DL -3a11|223344556677885f5f5f5f5f5f5f 64 gnu cmp (%rcx),%dl -3a11|223344556677885f5f5f5f5f5f5f 64 intel cmp dl, byte ptr [rcx] -3a11|223344556677885f5f5f5f5f5f5f 64 plan9 CMPB 0(CX), DL -3b11|223344556677885f5f5f5f5f5f5f 32 intel cmp edx, dword ptr [ecx] -3b11|223344556677885f5f5f5f5f5f5f 32 plan9 CMPL 0(CX), DX -3b11|223344556677885f5f5f5f5f5f5f 64 gnu cmp (%rcx),%edx -3b11|223344556677885f5f5f5f5f5f5f 64 intel cmp edx, dword ptr [rcx] -3b11|223344556677885f5f5f5f5f5f5f 64 plan9 CMPL 0(CX), DX -3c11|223344556677885f5f5f5f5f5f5f 32 intel cmp al, 0x11 -3c11|223344556677885f5f5f5f5f5f5f 32 plan9 CMPL $0x11, AL -3c11|223344556677885f5f5f5f5f5f5f 64 gnu cmp $0x11,%al -3c11|223344556677885f5f5f5f5f5f5f 64 intel cmp al, 0x11 -3c11|223344556677885f5f5f5f5f5f5f 64 plan9 CMPL $0x11, AL -3d11223344|556677885f5f5f5f5f5f5f 32 intel cmp eax, 0x44332211 -3d11223344|556677885f5f5f5f5f5f5f 32 plan9 CMPL $0x44332211, AX -3d11223344|556677885f5f5f5f5f5f5f 64 gnu cmp $0x44332211,%eax -3d11223344|556677885f5f5f5f5f5f5f 64 intel cmp eax, 0x44332211 -3d11223344|556677885f5f5f5f5f5f5f 64 plan9 CMPL $0x44332211, AX -3e67e011|223344556677885f5f5f5f5f 32 intel addr16 loopne .+0x11 -3e67e011|223344556677885f5f5f5f5f 32 plan9 LOOPNE .+17 -3e67e011|223344556677885f5f5f5f5f 64 gnu loopne,pt .+0x11 -3e67e011|223344556677885f5f5f5f5f 64 intel addr32 loopne .+0x11 -3e67e011|223344556677885f5f5f5f5f 64 plan9 LOOPNE .+17 -3ef367660f38f011|223344556677885f 32 intel movbe dx, word ptr [bx+di*1] -3ef367660f38f011|223344556677885f 32 plan9 REP; MOVBE DS:0(BX)(DI*1), DX -3ef367660f38f011|223344556677885f 64 gnu rep movbe %ds:(%ecx),%dx -3ef367660f38f011|223344556677885f 64 intel movbe dx, word ptr [ecx] -3ef367660f38f011|223344556677885f 64 plan9 REP; MOVBE 0(CX), DX -3f|11223344556677885f5f5f5f5f5f5f 32 intel aas -3f|11223344556677885f5f5f5f5f5f5f 32 plan9 AAS -3f|11223344556677885f5f5f5f5f5f5f 64 gnu error: unrecognized instruction -3f|11223344556677885f5f5f5f5f5f5f 64 intel error: unrecognized instruction -3f|11223344556677885f5f5f5f5f5f5f 64 plan9 error: unrecognized instruction -4040|11223344556677885f5f5f5f5f5f 64 gnu error: unrecognized instruction -4040|11223344556677885f5f5f5f5f5f 64 intel error: unrecognized instruction -4040|11223344556677885f5f5f5f5f5f 64 plan9 error: unrecognized instruction -4048|11223344556677885f5f5f5f5f5f 64 gnu error: unrecognized instruction -4048|11223344556677885f5f5f5f5f5f 64 intel error: unrecognized instruction -4048|11223344556677885f5f5f5f5f5f 64 plan9 error: unrecognized instruction -40|11223344556677885f5f5f5f5f5f5f 32 intel inc eax -40|11223344556677885f5f5f5f5f5f5f 32 plan9 INCL AX -480100|11223344556677885f5f5f5f5f 64 gnu add %rax,(%rax) -480100|11223344556677885f5f5f5f5f 64 intel add qword ptr [rax], rax -480100|11223344556677885f5f5f5f5f 64 plan9 ADDQ AX, 0(AX) -480311|223344556677885f5f5f5f5f5f 64 gnu add (%rcx),%rdx -480311|223344556677885f5f5f5f5f5f 64 intel add rdx, qword ptr [rcx] -480311|223344556677885f5f5f5f5f5f 64 plan9 ADDQ 0(CX), DX -480511223344|556677885f5f5f5f5f5f 64 gnu add $0x44332211,%rax -480511223344|556677885f5f5f5f5f5f 64 intel add rax, 0x44332211 -480511223344|556677885f5f5f5f5f5f 64 plan9 ADDQ $0x44332211, AX -480911|223344556677885f5f5f5f5f5f 64 gnu or %rdx,(%rcx) -480911|223344556677885f5f5f5f5f5f 64 intel or qword ptr [rcx], rdx -480911|223344556677885f5f5f5f5f5f 64 plan9 ORQ DX, 0(CX) -480b11|223344556677885f5f5f5f5f5f 64 gnu or (%rcx),%rdx -480b11|223344556677885f5f5f5f5f5f 64 intel or rdx, qword ptr [rcx] -480b11|223344556677885f5f5f5f5f5f 64 plan9 ORQ 0(CX), DX -480d11223344|556677885f5f5f5f5f5f 64 gnu or $0x44332211,%rax -480d11223344|556677885f5f5f5f5f5f 64 intel or rax, 0x44332211 -480d11223344|556677885f5f5f5f5f5f 64 plan9 ORQ $0x44332211, AX -480f0000|11223344556677885f5f5f5f 64 gnu sldt (%rax) -480f0000|11223344556677885f5f5f5f 64 intel sldt word ptr [rax] -480f0000|11223344556677885f5f5f5f 64 plan9 SLDT 0(AX) -480f0008|11223344556677885f5f5f5f 64 gnu str (%rax) -480f0008|11223344556677885f5f5f5f 64 intel str word ptr [rax] -480f0008|11223344556677885f5f5f5f 64 plan9 STR 0(AX) -480f0120|11223344556677885f5f5f5f 64 gnu smsw (%rax) -480f0120|11223344556677885f5f5f5f 64 intel smsw word ptr [rax] -480f0120|11223344556677885f5f5f5f 64 plan9 SMSW 0(AX) -480f0211|223344556677885f5f5f5f5f 64 gnu lar (%rcx),%rdx -480f0211|223344556677885f5f5f5f5f 64 intel lar rdx, word ptr [rcx] -480f0211|223344556677885f5f5f5f5f 64 plan9 LAR 0(CX), DX -480f0311|223344556677885f5f5f5f5f 64 gnu lsl (%rcx),%rdx -480f0311|223344556677885f5f5f5f5f 64 intel lsl rdx, word ptr [rcx] -480f0311|223344556677885f5f5f5f5f 64 plan9 LSL 0(CX), DX -480f35|11223344556677885f5f5f5f5f 64 gnu sysexit -480f35|11223344556677885f5f5f5f5f 64 intel sysexit -480f35|11223344556677885f5f5f5f5f 64 plan9 SYSEXIT -480f38f011|223344556677885f5f5f5f 64 gnu movbe (%rcx),%rdx -480f38f011|223344556677885f5f5f5f 64 intel movbe rdx, qword ptr [rcx] -480f38f011|223344556677885f5f5f5f 64 plan9 MOVBE 0(CX), DX -480f38f111|223344556677885f5f5f5f 64 gnu movbe %rdx,(%rcx) -480f38f111|223344556677885f5f5f5f 64 intel movbe qword ptr [rcx], rdx -480f38f111|223344556677885f5f5f5f 64 plan9 MOVBE DX, 0(CX) -480f4011|223344556677885f5f5f5f5f 64 gnu cmovo (%rcx),%rdx -480f4011|223344556677885f5f5f5f5f 64 intel cmovo rdx, qword ptr [rcx] -480f4011|223344556677885f5f5f5f5f 64 plan9 CMOVO 0(CX), DX -480f4111|223344556677885f5f5f5f5f 64 gnu cmovno (%rcx),%rdx -480f4111|223344556677885f5f5f5f5f 64 intel cmovno rdx, qword ptr [rcx] -480f4111|223344556677885f5f5f5f5f 64 plan9 CMOVNO 0(CX), DX -480f4211|223344556677885f5f5f5f5f 64 gnu cmovb (%rcx),%rdx -480f4211|223344556677885f5f5f5f5f 64 intel cmovb rdx, qword ptr [rcx] -480f4211|223344556677885f5f5f5f5f 64 plan9 CMOVB 0(CX), DX -480f4311|223344556677885f5f5f5f5f 64 gnu cmovae (%rcx),%rdx -480f4311|223344556677885f5f5f5f5f 64 intel cmovnb rdx, qword ptr [rcx] -480f4311|223344556677885f5f5f5f5f 64 plan9 CMOVAE 0(CX), DX -480f4411|223344556677885f5f5f5f5f 64 gnu cmove (%rcx),%rdx -480f4411|223344556677885f5f5f5f5f 64 intel cmovz rdx, qword ptr [rcx] -480f4411|223344556677885f5f5f5f5f 64 plan9 CMOVE 0(CX), DX -480f4511|223344556677885f5f5f5f5f 64 gnu cmovne (%rcx),%rdx -480f4511|223344556677885f5f5f5f5f 64 intel cmovnz rdx, qword ptr [rcx] -480f4511|223344556677885f5f5f5f5f 64 plan9 CMOVNE 0(CX), DX -480f4611|223344556677885f5f5f5f5f 64 gnu cmovbe (%rcx),%rdx -480f4611|223344556677885f5f5f5f5f 64 intel cmovbe rdx, qword ptr [rcx] -480f4611|223344556677885f5f5f5f5f 64 plan9 CMOVBE 0(CX), DX -480f4711|223344556677885f5f5f5f5f 64 gnu cmova (%rcx),%rdx -480f4711|223344556677885f5f5f5f5f 64 intel cmovnbe rdx, qword ptr [rcx] -480f4711|223344556677885f5f5f5f5f 64 plan9 CMOVA 0(CX), DX -480f4811|223344556677885f5f5f5f5f 64 gnu cmovs (%rcx),%rdx -480f4811|223344556677885f5f5f5f5f 64 intel cmovs rdx, qword ptr [rcx] -480f4811|223344556677885f5f5f5f5f 64 plan9 CMOVS 0(CX), DX -480f4911|223344556677885f5f5f5f5f 64 gnu cmovns (%rcx),%rdx -480f4911|223344556677885f5f5f5f5f 64 intel cmovns rdx, qword ptr [rcx] -480f4911|223344556677885f5f5f5f5f 64 plan9 CMOVNS 0(CX), DX -480f4a11|223344556677885f5f5f5f5f 64 gnu cmovp (%rcx),%rdx -480f4a11|223344556677885f5f5f5f5f 64 intel cmovp rdx, qword ptr [rcx] -480f4a11|223344556677885f5f5f5f5f 64 plan9 CMOVP 0(CX), DX -480f4b11|223344556677885f5f5f5f5f 64 gnu cmovnp (%rcx),%rdx -480f4b11|223344556677885f5f5f5f5f 64 intel cmovnp rdx, qword ptr [rcx] -480f4b11|223344556677885f5f5f5f5f 64 plan9 CMOVNP 0(CX), DX -480f4c11|223344556677885f5f5f5f5f 64 gnu cmovl (%rcx),%rdx -480f4c11|223344556677885f5f5f5f5f 64 intel cmovl rdx, qword ptr [rcx] -480f4c11|223344556677885f5f5f5f5f 64 plan9 CMOVL 0(CX), DX -480f4d11|223344556677885f5f5f5f5f 64 gnu cmovge (%rcx),%rdx -480f4d11|223344556677885f5f5f5f5f 64 intel cmovnl rdx, qword ptr [rcx] -480f4d11|223344556677885f5f5f5f5f 64 plan9 CMOVGE 0(CX), DX -480f4e11|223344556677885f5f5f5f5f 64 gnu cmovle (%rcx),%rdx -480f4e11|223344556677885f5f5f5f5f 64 intel cmovle rdx, qword ptr [rcx] -480f4e11|223344556677885f5f5f5f5f 64 plan9 CMOVLE 0(CX), DX -480f4f11|223344556677885f5f5f5f5f 64 gnu cmovg (%rcx),%rdx -480f4f11|223344556677885f5f5f5f5f 64 intel cmovnle rdx, qword ptr [rcx] -480f4f11|223344556677885f5f5f5f5f 64 plan9 CMOVG 0(CX), DX -480f6e11|223344556677885f5f5f5f5f 64 gnu movq (%rcx),%mm2 -480f6e11|223344556677885f5f5f5f5f 64 intel movq mmx2, qword ptr [rcx] -480f6e11|223344556677885f5f5f5f5f 64 plan9 MOVQ 0(CX), M2 -480f7e11|223344556677885f5f5f5f5f 64 gnu movq %mm2,(%rcx) -480f7e11|223344556677885f5f5f5f5f 64 intel movq qword ptr [rcx], mmx2 -480f7e11|223344556677885f5f5f5f5f 64 plan9 MOVQ M2, 0(CX) -480f8011223344|556677885f5f5f5f5f 64 gnu jo .+0x44332211 -480f8011223344|556677885f5f5f5f5f 64 intel jo .+0x44332211 -480f8011223344|556677885f5f5f5f5f 64 plan9 JO .+1144201745 -480f8111223344|556677885f5f5f5f5f 64 gnu jno .+0x44332211 -480f8111223344|556677885f5f5f5f5f 64 intel jno .+0x44332211 -480f8111223344|556677885f5f5f5f5f 64 plan9 JNO .+1144201745 -480f8211223344|556677885f5f5f5f5f 64 gnu jb .+0x44332211 -480f8211223344|556677885f5f5f5f5f 64 intel jb .+0x44332211 -480f8211223344|556677885f5f5f5f5f 64 plan9 JB .+1144201745 -480f8311223344|556677885f5f5f5f5f 64 gnu jae .+0x44332211 -480f8311223344|556677885f5f5f5f5f 64 intel jnb .+0x44332211 -480f8311223344|556677885f5f5f5f5f 64 plan9 JAE .+1144201745 -480f8411223344|556677885f5f5f5f5f 64 gnu je .+0x44332211 -480f8411223344|556677885f5f5f5f5f 64 intel jz .+0x44332211 -480f8411223344|556677885f5f5f5f5f 64 plan9 JE .+1144201745 -480f8511223344|556677885f5f5f5f5f 64 gnu jne .+0x44332211 -480f8511223344|556677885f5f5f5f5f 64 intel jnz .+0x44332211 -480f8511223344|556677885f5f5f5f5f 64 plan9 JNE .+1144201745 -480f8611223344|556677885f5f5f5f5f 64 gnu jbe .+0x44332211 -480f8611223344|556677885f5f5f5f5f 64 intel jbe .+0x44332211 -480f8611223344|556677885f5f5f5f5f 64 plan9 JBE .+1144201745 -480f8711223344|556677885f5f5f5f5f 64 gnu ja .+0x44332211 -480f8711223344|556677885f5f5f5f5f 64 intel jnbe .+0x44332211 -480f8711223344|556677885f5f5f5f5f 64 plan9 JA .+1144201745 -480f8811223344|556677885f5f5f5f5f 64 gnu js .+0x44332211 -480f8811223344|556677885f5f5f5f5f 64 intel js .+0x44332211 -480f8811223344|556677885f5f5f5f5f 64 plan9 JS .+1144201745 -480f8911223344|556677885f5f5f5f5f 64 gnu jns .+0x44332211 -480f8911223344|556677885f5f5f5f5f 64 intel jns .+0x44332211 -480f8911223344|556677885f5f5f5f5f 64 plan9 JNS .+1144201745 -480f8a11223344|556677885f5f5f5f5f 64 gnu jp .+0x44332211 -480f8a11223344|556677885f5f5f5f5f 64 intel jp .+0x44332211 -480f8a11223344|556677885f5f5f5f5f 64 plan9 JP .+1144201745 -480f8b11223344|556677885f5f5f5f5f 64 gnu jnp .+0x44332211 -480f8b11223344|556677885f5f5f5f5f 64 intel jnp .+0x44332211 -480f8b11223344|556677885f5f5f5f5f 64 plan9 JNP .+1144201745 -480f8c11223344|556677885f5f5f5f5f 64 gnu jl .+0x44332211 -480f8c11223344|556677885f5f5f5f5f 64 intel jl .+0x44332211 -480f8c11223344|556677885f5f5f5f5f 64 plan9 JL .+1144201745 -480f8d11223344|556677885f5f5f5f5f 64 gnu jge .+0x44332211 -480f8d11223344|556677885f5f5f5f5f 64 intel jnl .+0x44332211 -480f8d11223344|556677885f5f5f5f5f 64 plan9 JGE .+1144201745 -480f8e11223344|556677885f5f5f5f5f 64 gnu jle .+0x44332211 -480f8e11223344|556677885f5f5f5f5f 64 intel jle .+0x44332211 -480f8e11223344|556677885f5f5f5f5f 64 plan9 JLE .+1144201745 -480f8f11223344|556677885f5f5f5f5f 64 gnu jg .+0x44332211 -480f8f11223344|556677885f5f5f5f5f 64 intel jnle .+0x44332211 -480f8f11223344|556677885f5f5f5f5f 64 plan9 JG .+1144201745 -480fa1|11223344556677885f5f5f5f5f 64 gnu popq %fs -480fa1|11223344556677885f5f5f5f5f 64 intel pop fs -480fa1|11223344556677885f5f5f5f5f 64 plan9 POPQ FS -480fa311|223344556677885f5f5f5f5f 64 gnu bt %rdx,(%rcx) -480fa311|223344556677885f5f5f5f5f 64 intel bt qword ptr [rcx], rdx -480fa311|223344556677885f5f5f5f5f 64 plan9 BTQ DX, 0(CX) -480fa41122|3344556677885f5f5f5f5f 64 gnu shld $0x22,%rdx,(%rcx) -480fa41122|3344556677885f5f5f5f5f 64 intel shld qword ptr [rcx], rdx, 0x22 -480fa41122|3344556677885f5f5f5f5f 64 plan9 SHLDQ $0x22, DX, 0(CX) -480fa511|223344556677885f5f5f5f5f 64 gnu shld %cl,%rdx,(%rcx) -480fa511|223344556677885f5f5f5f5f 64 intel shld qword ptr [rcx], rdx, cl -480fa511|223344556677885f5f5f5f5f 64 plan9 SHLDQ CL, DX, 0(CX) -480fa9|11223344556677885f5f5f5f5f 64 gnu popq %gs -480fa9|11223344556677885f5f5f5f5f 64 intel pop gs -480fa9|11223344556677885f5f5f5f5f 64 plan9 POPQ GS -480fab11|223344556677885f5f5f5f5f 64 gnu bts %rdx,(%rcx) -480fab11|223344556677885f5f5f5f5f 64 intel bts qword ptr [rcx], rdx -480fab11|223344556677885f5f5f5f5f 64 plan9 BTSQ DX, 0(CX) -480fac1122|3344556677885f5f5f5f5f 64 gnu shrd $0x22,%rdx,(%rcx) -480fac1122|3344556677885f5f5f5f5f 64 intel shrd qword ptr [rcx], rdx, 0x22 -480fac1122|3344556677885f5f5f5f5f 64 plan9 SHRDQ $0x22, DX, 0(CX) -480fad11|223344556677885f5f5f5f5f 64 gnu shrd %cl,%rdx,(%rcx) -480fad11|223344556677885f5f5f5f5f 64 intel shrd qword ptr [rcx], rdx, cl -480fad11|223344556677885f5f5f5f5f 64 plan9 SHRDQ CL, DX, 0(CX) -480fae00|11223344556677885f5f5f5f 64 gnu fxsave64 (%rax) -480fae00|11223344556677885f5f5f5f 64 intel fxsave64 ptr [rax] -480fae00|11223344556677885f5f5f5f 64 plan9 FXSAVE64 0(AX) -480fae08|11223344556677885f5f5f5f 64 gnu fxrstor64 (%rax) -480fae08|11223344556677885f5f5f5f 64 intel fxrstor64 ptr [rax] -480fae08|11223344556677885f5f5f5f 64 plan9 FXRSTOR64 0(AX) -480fae20|11223344556677885f5f5f5f 64 gnu xsave64 (%rax) -480fae20|11223344556677885f5f5f5f 64 intel xsave64 ptr [rax] -480fae20|11223344556677885f5f5f5f 64 plan9 XSAVE64 0(AX) -480fae28|11223344556677885f5f5f5f 64 gnu xrstor64 (%rax) -480fae28|11223344556677885f5f5f5f 64 intel xrstor64 ptr [rax] -480fae28|11223344556677885f5f5f5f 64 plan9 XRSTOR64 0(AX) -480fae30|11223344556677885f5f5f5f 64 gnu xsaveopt64 (%rax) -480fae30|11223344556677885f5f5f5f 64 intel xsaveopt64 ptr [rax] -480fae30|11223344556677885f5f5f5f 64 plan9 XSAVEOPT64 0(AX) -480faf11|223344556677885f5f5f5f5f 64 gnu imul (%rcx),%rdx -480faf11|223344556677885f5f5f5f5f 64 intel imul rdx, qword ptr [rcx] -480faf11|223344556677885f5f5f5f5f 64 plan9 IMULQ 0(CX), DX -480fb111|223344556677885f5f5f5f5f 64 gnu cmpxchg %rdx,(%rcx) -480fb111|223344556677885f5f5f5f5f 64 intel cmpxchg qword ptr [rcx], rdx -480fb111|223344556677885f5f5f5f5f 64 plan9 CMPXCHGQ DX, 0(CX) -480fb211|223344556677885f5f5f5f5f 64 gnu lss (%rcx),%rdx -480fb211|223344556677885f5f5f5f5f 64 intel lss rdx, ptr [rcx] -480fb211|223344556677885f5f5f5f5f 64 plan9 LSS 0(CX), DX -480fb311|223344556677885f5f5f5f5f 64 gnu btr %rdx,(%rcx) -480fb311|223344556677885f5f5f5f5f 64 intel btr qword ptr [rcx], rdx -480fb311|223344556677885f5f5f5f5f 64 plan9 BTRQ DX, 0(CX) -480fb411|223344556677885f5f5f5f5f 64 gnu lfs (%rcx),%rdx -480fb411|223344556677885f5f5f5f5f 64 intel lfs rdx, ptr [rcx] -480fb411|223344556677885f5f5f5f5f 64 plan9 LFS 0(CX), DX -480fb511|223344556677885f5f5f5f5f 64 gnu lgs (%rcx),%rdx -480fb511|223344556677885f5f5f5f5f 64 intel lgs rdx, ptr [rcx] -480fb511|223344556677885f5f5f5f5f 64 plan9 LGS 0(CX), DX -480fb611|223344556677885f5f5f5f5f 64 gnu movzbq (%rcx),%rdx -480fb611|223344556677885f5f5f5f5f 64 intel movzx rdx, byte ptr [rcx] -480fb611|223344556677885f5f5f5f5f 64 plan9 MOVZX 0(CX), DX -480fb711|223344556677885f5f5f5f5f 64 gnu movzwq (%rcx),%rdx -480fb711|223344556677885f5f5f5f5f 64 intel movzx rdx, word ptr [rcx] -480fb711|223344556677885f5f5f5f5f 64 plan9 MOVZX 0(CX), DX -480fba2011|223344556677885f5f5f5f 64 gnu btq $0x11,(%rax) -480fba2011|223344556677885f5f5f5f 64 intel bt qword ptr [rax], 0x11 -480fba2011|223344556677885f5f5f5f 64 plan9 BTQ $0x11, 0(AX) -480fba2811|223344556677885f5f5f5f 64 gnu btsq $0x11,(%rax) -480fba2811|223344556677885f5f5f5f 64 intel bts qword ptr [rax], 0x11 -480fba2811|223344556677885f5f5f5f 64 plan9 BTSQ $0x11, 0(AX) -480fba3011|223344556677885f5f5f5f 64 gnu btrq $0x11,(%rax) -480fba3011|223344556677885f5f5f5f 64 intel btr qword ptr [rax], 0x11 -480fba3011|223344556677885f5f5f5f 64 plan9 BTRQ $0x11, 0(AX) -480fba3811|223344556677885f5f5f5f 64 gnu btcq $0x11,(%rax) -480fba3811|223344556677885f5f5f5f 64 intel btc qword ptr [rax], 0x11 -480fba3811|223344556677885f5f5f5f 64 plan9 BTCQ $0x11, 0(AX) -480fbb11|223344556677885f5f5f5f5f 64 gnu btc %rdx,(%rcx) -480fbb11|223344556677885f5f5f5f5f 64 intel btc qword ptr [rcx], rdx -480fbb11|223344556677885f5f5f5f5f 64 plan9 BTCQ DX, 0(CX) -480fbc11|223344556677885f5f5f5f5f 64 gnu bsf (%rcx),%rdx -480fbc11|223344556677885f5f5f5f5f 64 intel bsf rdx, qword ptr [rcx] -480fbc11|223344556677885f5f5f5f5f 64 plan9 BSFQ 0(CX), DX -480fbd11|223344556677885f5f5f5f5f 64 gnu bsr (%rcx),%rdx -480fbd11|223344556677885f5f5f5f5f 64 intel bsr rdx, qword ptr [rcx] -480fbd11|223344556677885f5f5f5f5f 64 plan9 BSRQ 0(CX), DX -480fbe11|223344556677885f5f5f5f5f 64 gnu movsbq (%rcx),%rdx -480fbe11|223344556677885f5f5f5f5f 64 intel movsx rdx, byte ptr [rcx] -480fbe11|223344556677885f5f5f5f5f 64 plan9 MOVSX 0(CX), DX -480fbf11|223344556677885f5f5f5f5f 64 gnu movswq (%rcx),%rdx -480fbf11|223344556677885f5f5f5f5f 64 intel movsx rdx, word ptr [rcx] -480fbf11|223344556677885f5f5f5f5f 64 plan9 MOVSX 0(CX), DX -480fc111|223344556677885f5f5f5f5f 64 gnu xadd %rdx,(%rcx) -480fc111|223344556677885f5f5f5f5f 64 intel xadd qword ptr [rcx], rdx -480fc111|223344556677885f5f5f5f5f 64 plan9 XADDQ DX, 0(CX) -480fc311|223344556677885f5f5f5f5f 64 gnu movnti %rdx,(%rcx) -480fc311|223344556677885f5f5f5f5f 64 intel movnti qword ptr [rcx], rdx -480fc311|223344556677885f5f5f5f5f 64 plan9 MOVNTIQ DX, 0(CX) -480fc708|11223344556677885f5f5f5f 64 gnu cmpxchg16b (%rax) -480fc708|11223344556677885f5f5f5f 64 intel cmpxchg16b xmmword ptr [rax] -480fc708|11223344556677885f5f5f5f 64 plan9 CMPXCHG16B 0(AX) -480fc718|11223344556677885f5f5f5f 64 gnu xrstors64 (%rax) -480fc718|11223344556677885f5f5f5f 64 intel xrstors64 ptr [rax] -480fc718|11223344556677885f5f5f5f 64 plan9 XRSTORS64 0(AX) -480fc720|11223344556677885f5f5f5f 64 gnu xsavec64 (%rax) -480fc720|11223344556677885f5f5f5f 64 intel xsavec64 ptr [rax] -480fc720|11223344556677885f5f5f5f 64 plan9 XSAVEC64 0(AX) -480fc728|11223344556677885f5f5f5f 64 gnu xsaves64 (%rax) -480fc728|11223344556677885f5f5f5f 64 intel xsaves64 ptr [rax] -480fc728|11223344556677885f5f5f5f 64 plan9 XSAVES64 0(AX) -480fc730|11223344556677885f5f5f5f 64 gnu rdrand -480fc730|11223344556677885f5f5f5f 64 intel rdrand -480fc730|11223344556677885f5f5f5f 64 plan9 RDRAND -480fc8|11223344556677885f5f5f5f5f 64 gnu bswap %rax -480fc8|11223344556677885f5f5f5f5f 64 intel bswap rax -480fc8|11223344556677885f5f5f5f5f 64 plan9 BSWAP AX -481122|3344556677885f5f5f5f5f5f5f 64 gnu adc %rsp,(%rdx) -481122|3344556677885f5f5f5f5f5f5f 64 intel adc qword ptr [rdx], rsp -481122|3344556677885f5f5f5f5f5f5f 64 plan9 ADCQ SP, 0(DX) -481311|223344556677885f5f5f5f5f5f 64 gnu adc (%rcx),%rdx -481311|223344556677885f5f5f5f5f5f 64 intel adc rdx, qword ptr [rcx] -481311|223344556677885f5f5f5f5f5f 64 plan9 ADCQ 0(CX), DX -481511223344|556677885f5f5f5f5f5f 64 gnu adc $0x44332211,%rax -481511223344|556677885f5f5f5f5f5f 64 intel adc rax, 0x44332211 -481511223344|556677885f5f5f5f5f5f 64 plan9 ADCQ $0x44332211, AX -481911|223344556677885f5f5f5f5f5f 64 gnu sbb %rdx,(%rcx) -481911|223344556677885f5f5f5f5f5f 64 intel sbb qword ptr [rcx], rdx -481911|223344556677885f5f5f5f5f5f 64 plan9 SBBQ DX, 0(CX) -481b11|223344556677885f5f5f5f5f5f 64 gnu sbb (%rcx),%rdx -481b11|223344556677885f5f5f5f5f5f 64 intel sbb rdx, qword ptr [rcx] -481b11|223344556677885f5f5f5f5f5f 64 plan9 SBBQ 0(CX), DX -481d11223344|556677885f5f5f5f5f5f 64 gnu sbb $0x44332211,%rax -481d11223344|556677885f5f5f5f5f5f 64 intel sbb rax, 0x44332211 -481d11223344|556677885f5f5f5f5f5f 64 plan9 SBBQ $0x44332211, AX -482111|223344556677885f5f5f5f5f5f 64 gnu and %rdx,(%rcx) -482111|223344556677885f5f5f5f5f5f 64 intel and qword ptr [rcx], rdx -482111|223344556677885f5f5f5f5f5f 64 plan9 ANDQ DX, 0(CX) -482311|223344556677885f5f5f5f5f5f 64 gnu and (%rcx),%rdx -482311|223344556677885f5f5f5f5f5f 64 intel and rdx, qword ptr [rcx] -482311|223344556677885f5f5f5f5f5f 64 plan9 ANDQ 0(CX), DX -482511223344|556677885f5f5f5f5f5f 64 gnu and $0x44332211,%rax -482511223344|556677885f5f5f5f5f5f 64 intel and rax, 0x44332211 -482511223344|556677885f5f5f5f5f5f 64 plan9 ANDQ $0x44332211, AX -482911|223344556677885f5f5f5f5f5f 64 gnu sub %rdx,(%rcx) -482911|223344556677885f5f5f5f5f5f 64 intel sub qword ptr [rcx], rdx -482911|223344556677885f5f5f5f5f5f 64 plan9 SUBQ DX, 0(CX) -482b11|223344556677885f5f5f5f5f5f 64 gnu sub (%rcx),%rdx -482b11|223344556677885f5f5f5f5f5f 64 intel sub rdx, qword ptr [rcx] -482b11|223344556677885f5f5f5f5f5f 64 plan9 SUBQ 0(CX), DX -482d11223344|556677885f5f5f5f5f5f 64 gnu sub $0x44332211,%rax -482d11223344|556677885f5f5f5f5f5f 64 intel sub rax, 0x44332211 -482d11223344|556677885f5f5f5f5f5f 64 plan9 SUBQ $0x44332211, AX -483111|223344556677885f5f5f5f5f5f 64 gnu xor %rdx,(%rcx) -483111|223344556677885f5f5f5f5f5f 64 intel xor qword ptr [rcx], rdx -483111|223344556677885f5f5f5f5f5f 64 plan9 XORQ DX, 0(CX) -483311|223344556677885f5f5f5f5f5f 64 gnu xor (%rcx),%rdx -483311|223344556677885f5f5f5f5f5f 64 intel xor rdx, qword ptr [rcx] -483311|223344556677885f5f5f5f5f5f 64 plan9 XORQ 0(CX), DX -483511223344|556677885f5f5f5f5f5f 64 gnu xor $0x44332211,%rax -483511223344|556677885f5f5f5f5f5f 64 intel xor rax, 0x44332211 -483511223344|556677885f5f5f5f5f5f 64 plan9 XORQ $0x44332211, AX -483911|223344556677885f5f5f5f5f5f 64 gnu cmp %rdx,(%rcx) -483911|223344556677885f5f5f5f5f5f 64 intel cmp qword ptr [rcx], rdx -483911|223344556677885f5f5f5f5f5f 64 plan9 CMPQ DX, 0(CX) -483b11|223344556677885f5f5f5f5f5f 64 gnu cmp (%rcx),%rdx -483b11|223344556677885f5f5f5f5f5f 64 intel cmp rdx, qword ptr [rcx] -483b11|223344556677885f5f5f5f5f5f 64 plan9 CMPQ 0(CX), DX -483d11223344|556677885f5f5f5f5f5f 64 gnu cmp $0x44332211,%rax -483d11223344|556677885f5f5f5f5f5f 64 intel cmp rax, 0x44332211 -483d11223344|556677885f5f5f5f5f5f 64 plan9 CMPQ $0x44332211, AX -4850|11223344556677885f5f5f5f5f5f 64 gnu push %rax -4850|11223344556677885f5f5f5f5f5f 64 intel push rax -4850|11223344556677885f5f5f5f5f5f 64 plan9 PUSHQ AX -4858|11223344556677885f5f5f5f5f5f 64 gnu pop %rax -4858|11223344556677885f5f5f5f5f5f 64 intel pop rax -4858|11223344556677885f5f5f5f5f5f 64 plan9 POPQ AX -486311|223344556677885f5f5f5f5f5f 64 gnu movsxd (%rcx),%rdx -486311|223344556677885f5f5f5f5f5f 64 intel movsxd rdx, dword ptr [rcx] -486311|223344556677885f5f5f5f5f5f 64 plan9 MOVSXD 0(CX), DX -486811223344|556677885f5f5f5f5f5f 64 gnu pushq $0x44332211 -486811223344|556677885f5f5f5f5f5f 64 intel push 0x44332211 -486811223344|556677885f5f5f5f5f5f 64 plan9 PUSHQ $0x44332211 -48691122334455|6677885f5f5f5f5f5f 64 gnu imul $0x55443322,(%rcx),%rdx -48691122334455|6677885f5f5f5f5f5f 64 intel imul rdx, qword ptr [rcx], 0x55443322 -48691122334455|6677885f5f5f5f5f5f 64 plan9 IMULQ $0x55443322, 0(CX), DX -486b1122|3344556677885f5f5f5f5f5f 64 gnu imul $0x22,(%rcx),%rdx -486b1122|3344556677885f5f5f5f5f5f 64 intel imul rdx, qword ptr [rcx], 0x22 -486b1122|3344556677885f5f5f5f5f5f 64 plan9 IMULQ $0x22, 0(CX), DX -486d|11223344556677885f5f5f5f5f5f 64 gnu insl (%dx),%es:(%rdi) -486d|11223344556677885f5f5f5f5f5f 64 intel insd -486d|11223344556677885f5f5f5f5f5f 64 plan9 INSD DX, ES:0(DI) -486f|11223344556677885f5f5f5f5f5f 64 gnu outsl %ds:(%rsi),(%dx) -486f|11223344556677885f5f5f5f5f5f 64 intel outsd -486f|11223344556677885f5f5f5f5f5f 64 plan9 OUTSD DS:0(SI), DX -48810011223344|556677885f5f5f5f5f 64 gnu addq $0x44332211,(%rax) -48810011223344|556677885f5f5f5f5f 64 intel add qword ptr [rax], 0x44332211 -48810011223344|556677885f5f5f5f5f 64 plan9 ADDQ $0x44332211, 0(AX) -48810811223344|556677885f5f5f5f5f 64 gnu orq $0x44332211,(%rax) -48810811223344|556677885f5f5f5f5f 64 intel or qword ptr [rax], 0x44332211 -48810811223344|556677885f5f5f5f5f 64 plan9 ORQ $0x44332211, 0(AX) -48811122334455|6677885f5f5f5f5f5f 64 gnu adcq $0x55443322,(%rcx) -48811122334455|6677885f5f5f5f5f5f 64 intel adc qword ptr [rcx], 0x55443322 -48811122334455|6677885f5f5f5f5f5f 64 plan9 ADCQ $0x55443322, 0(CX) -48811811223344|556677885f5f5f5f5f 64 gnu sbbq $0x44332211,(%rax) -48811811223344|556677885f5f5f5f5f 64 intel sbb qword ptr [rax], 0x44332211 -48811811223344|556677885f5f5f5f5f 64 plan9 SBBQ $0x44332211, 0(AX) -48812011223344|556677885f5f5f5f5f 64 gnu andq $0x44332211,(%rax) -48812011223344|556677885f5f5f5f5f 64 intel and qword ptr [rax], 0x44332211 -48812011223344|556677885f5f5f5f5f 64 plan9 ANDQ $0x44332211, 0(AX) -48812811223344|556677885f5f5f5f5f 64 gnu subq $0x44332211,(%rax) -48812811223344|556677885f5f5f5f5f 64 intel sub qword ptr [rax], 0x44332211 -48812811223344|556677885f5f5f5f5f 64 plan9 SUBQ $0x44332211, 0(AX) -48813011223344|556677885f5f5f5f5f 64 gnu xorq $0x44332211,(%rax) -48813011223344|556677885f5f5f5f5f 64 intel xor qword ptr [rax], 0x44332211 -48813011223344|556677885f5f5f5f5f 64 plan9 XORQ $0x44332211, 0(AX) -48813811223344|556677885f5f5f5f5f 64 gnu cmpq $0x44332211,(%rax) -48813811223344|556677885f5f5f5f5f 64 intel cmp qword ptr [rax], 0x44332211 -48813811223344|556677885f5f5f5f5f 64 plan9 CMPQ $0x44332211, 0(AX) -48830011|223344556677885f5f5f5f5f 64 gnu addq $0x11,(%rax) -48830011|223344556677885f5f5f5f5f 64 intel add qword ptr [rax], 0x11 -48830011|223344556677885f5f5f5f5f 64 plan9 ADDQ $0x11, 0(AX) -48830811|223344556677885f5f5f5f5f 64 gnu orq $0x11,(%rax) -48830811|223344556677885f5f5f5f5f 64 intel or qword ptr [rax], 0x11 -48830811|223344556677885f5f5f5f5f 64 plan9 ORQ $0x11, 0(AX) -48831122|3344556677885f5f5f5f5f5f 64 gnu adcq $0x22,(%rcx) -48831122|3344556677885f5f5f5f5f5f 64 intel adc qword ptr [rcx], 0x22 -48831122|3344556677885f5f5f5f5f5f 64 plan9 ADCQ $0x22, 0(CX) -48831811|223344556677885f5f5f5f5f 64 gnu sbbq $0x11,(%rax) -48831811|223344556677885f5f5f5f5f 64 intel sbb qword ptr [rax], 0x11 -48831811|223344556677885f5f5f5f5f 64 plan9 SBBQ $0x11, 0(AX) -48832011|223344556677885f5f5f5f5f 64 gnu andq $0x11,(%rax) -48832011|223344556677885f5f5f5f5f 64 intel and qword ptr [rax], 0x11 -48832011|223344556677885f5f5f5f5f 64 plan9 ANDQ $0x11, 0(AX) -48832811|223344556677885f5f5f5f5f 64 gnu subq $0x11,(%rax) -48832811|223344556677885f5f5f5f5f 64 intel sub qword ptr [rax], 0x11 -48832811|223344556677885f5f5f5f5f 64 plan9 SUBQ $0x11, 0(AX) -48833011|223344556677885f5f5f5f5f 64 gnu xorq $0x11,(%rax) -48833011|223344556677885f5f5f5f5f 64 intel xor qword ptr [rax], 0x11 -48833011|223344556677885f5f5f5f5f 64 plan9 XORQ $0x11, 0(AX) -48833811|223344556677885f5f5f5f5f 64 gnu cmpq $0x11,(%rax) -48833811|223344556677885f5f5f5f5f 64 intel cmp qword ptr [rax], 0x11 -48833811|223344556677885f5f5f5f5f 64 plan9 CMPQ $0x11, 0(AX) -488511|223344556677885f5f5f5f5f5f 64 gnu test %rdx,(%rcx) -488511|223344556677885f5f5f5f5f5f 64 intel test qword ptr [rcx], rdx -488511|223344556677885f5f5f5f5f5f 64 plan9 TESTQ DX, 0(CX) -488711|223344556677885f5f5f5f5f5f 64 gnu xchg %rdx,(%rcx) -488711|223344556677885f5f5f5f5f5f 64 intel xchg qword ptr [rcx], rdx -488711|223344556677885f5f5f5f5f5f 64 plan9 XCHGQ DX, 0(CX) -488911|223344556677885f5f5f5f5f5f 64 gnu mov %rdx,(%rcx) -488911|223344556677885f5f5f5f5f5f 64 intel mov qword ptr [rcx], rdx -488911|223344556677885f5f5f5f5f5f 64 plan9 MOVQ DX, 0(CX) -488b11|223344556677885f5f5f5f5f5f 64 gnu mov (%rcx),%rdx -488b11|223344556677885f5f5f5f5f5f 64 intel mov rdx, qword ptr [rcx] -488b11|223344556677885f5f5f5f5f5f 64 plan9 MOVQ 0(CX), DX -488c11|223344556677885f5f5f5f5f5f 64 gnu mov %ss,(%rcx) -488c11|223344556677885f5f5f5f5f5f 64 intel mov word ptr [rcx], ss -# MOVQ is probably more correct here (reads 16 bits of segment register, zero extends, writes 64 bits at CX) -488c11|223344556677885f5f5f5f5f5f 64 plan9 MOVW SS, 0(CX) -488d11|223344556677885f5f5f5f5f5f 64 gnu lea (%rcx),%rdx -488d11|223344556677885f5f5f5f5f5f 64 intel lea rdx, ptr [rcx] -488d11|223344556677885f5f5f5f5f5f 64 plan9 LEAQ 0(CX), DX -488e11|223344556677885f5f5f5f5f5f 64 gnu mov (%rcx),%ss -488e11|223344556677885f5f5f5f5f5f 64 intel mov ss, word ptr [rcx] -488e11|223344556677885f5f5f5f5f5f 64 plan9 MOVW 0(CX), SS -488f00|11223344556677885f5f5f5f5f 64 gnu popq (%rax) -488f00|11223344556677885f5f5f5f5f 64 intel pop qword ptr [rax] -488f00|11223344556677885f5f5f5f5f 64 plan9 POPQ 0(AX) -4891|11223344556677885f5f5f5f5f5f 64 gnu xchg %rax,%rcx -4891|11223344556677885f5f5f5f5f5f 64 intel xchg rcx, rax -4891|11223344556677885f5f5f5f5f5f 64 plan9 XCHGQ AX, CX -4898|11223344556677885f5f5f5f5f5f 64 gnu cdqe -4898|11223344556677885f5f5f5f5f5f 64 intel cdqe -4898|11223344556677885f5f5f5f5f5f 64 plan9 CDQE -4899|11223344556677885f5f5f5f5f5f 64 gnu cqto -4899|11223344556677885f5f5f5f5f5f 64 intel cqo -4899|11223344556677885f5f5f5f5f5f 64 plan9 CQO -489c|11223344556677885f5f5f5f5f5f 64 gnu pushfq -489c|11223344556677885f5f5f5f5f5f 64 intel pushfq -489c|11223344556677885f5f5f5f5f5f 64 plan9 PUSHFQ -489d|11223344556677885f5f5f5f5f5f 64 gnu popfq -489d|11223344556677885f5f5f5f5f5f 64 intel popfq -489d|11223344556677885f5f5f5f5f5f 64 plan9 POPFQ -48a01122334455667788|5f5f5f5f5f5f 64 gnu mov -0x778899aabbccddef,%al -48a01122334455667788|5f5f5f5f5f5f 64 intel mov al, byte ptr [0x8877665544332211] -48a01122334455667788|5f5f5f5f5f5f 64 plan9 MOVB -0x778899aabbccddef, AL -48a11122334455667788|5f5f5f5f5f5f 64 gnu mov -0x778899aabbccddef,%rax -48a11122334455667788|5f5f5f5f5f5f 64 intel mov rax, qword ptr [0x8877665544332211] -48a11122334455667788|5f5f5f5f5f5f 64 plan9 MOVQ -0x778899aabbccddef, AX -48a21122334455667788|5f5f5f5f5f5f 64 gnu mov %al,-0x778899aabbccddef -48a21122334455667788|5f5f5f5f5f5f 64 intel mov byte ptr [0x8877665544332211], al -48a21122334455667788|5f5f5f5f5f5f 64 plan9 MOVB AL, -0x778899aabbccddef -48a31122334455667788|5f5f5f5f5f5f 64 gnu mov %rax,-0x778899aabbccddef -48a31122334455667788|5f5f5f5f5f5f 64 intel mov qword ptr [0x8877665544332211], rax -48a31122334455667788|5f5f5f5f5f5f 64 plan9 MOVQ AX, -0x778899aabbccddef -48a5|11223344556677885f5f5f5f5f5f 64 gnu movsq %ds:(%rsi),%es:(%rdi) -48a5|11223344556677885f5f5f5f5f5f 64 intel movsq qword ptr [rdi], qword ptr [rsi] -48a5|11223344556677885f5f5f5f5f5f 64 plan9 MOVSQ DS:0(SI), ES:0(DI) -48a7|11223344556677885f5f5f5f5f5f 64 gnu cmpsq %es:(%rdi),%ds:(%rsi) -48a7|11223344556677885f5f5f5f5f5f 64 intel cmpsq qword ptr [rsi], qword ptr [rdi] -48a7|11223344556677885f5f5f5f5f5f 64 plan9 CMPSQ ES:0(DI), DS:0(SI) -48a911223344|556677885f5f5f5f5f5f 64 gnu test $0x44332211,%rax -48a911223344|556677885f5f5f5f5f5f 64 intel test rax, 0x44332211 -48a911223344|556677885f5f5f5f5f5f 64 plan9 TESTQ $0x44332211, AX -48ab|11223344556677885f5f5f5f5f5f 64 gnu stos %rax,%es:(%rdi) -48ab|11223344556677885f5f5f5f5f5f 64 intel stosq qword ptr [rdi] -48ab|11223344556677885f5f5f5f5f5f 64 plan9 STOSQ AX, ES:0(DI) -48ad|11223344556677885f5f5f5f5f5f 64 gnu lods %ds:(%rsi),%rax -48ad|11223344556677885f5f5f5f5f5f 64 intel lodsq qword ptr [rsi] -48ad|11223344556677885f5f5f5f5f5f 64 plan9 LODSQ DS:0(SI), AX -48af|11223344556677885f5f5f5f5f5f 64 gnu scas %es:(%rdi),%rax -48af|11223344556677885f5f5f5f5f5f 64 intel scasq qword ptr [rdi] -48af|11223344556677885f5f5f5f5f5f 64 plan9 SCASQ ES:0(DI), AX -48b81122334455667788|5f5f5f5f5f5f 64 gnu mov $-0x778899aabbccddef,%rax -48b81122334455667788|5f5f5f5f5f5f 64 intel mov rax, 0x8877665544332211 -48b81122334455667788|5f5f5f5f5f5f 64 plan9 MOVQ $0x8877665544332211, AX -48c10011|223344556677885f5f5f5f5f 64 gnu rolq $0x11,(%rax) -48c10011|223344556677885f5f5f5f5f 64 intel rol qword ptr [rax], 0x11 -48c10011|223344556677885f5f5f5f5f 64 plan9 ROLQ $0x11, 0(AX) -48c10811|223344556677885f5f5f5f5f 64 gnu rorq $0x11,(%rax) -48c10811|223344556677885f5f5f5f5f 64 intel ror qword ptr [rax], 0x11 -48c10811|223344556677885f5f5f5f5f 64 plan9 RORQ $0x11, 0(AX) -48c11122|3344556677885f5f5f5f5f5f 64 gnu rclq $0x22,(%rcx) -48c11122|3344556677885f5f5f5f5f5f 64 intel rcl qword ptr [rcx], 0x22 -48c11122|3344556677885f5f5f5f5f5f 64 plan9 RCLQ $0x22, 0(CX) -48c11811|223344556677885f5f5f5f5f 64 gnu rcrq $0x11,(%rax) -48c11811|223344556677885f5f5f5f5f 64 intel rcr qword ptr [rax], 0x11 -48c11811|223344556677885f5f5f5f5f 64 plan9 RCRQ $0x11, 0(AX) -48c12011|223344556677885f5f5f5f5f 64 gnu shlq $0x11,(%rax) -48c12011|223344556677885f5f5f5f5f 64 intel shl qword ptr [rax], 0x11 -48c12011|223344556677885f5f5f5f5f 64 plan9 SHLQ $0x11, 0(AX) -48c12811|223344556677885f5f5f5f5f 64 gnu shrq $0x11,(%rax) -48c12811|223344556677885f5f5f5f5f 64 intel shr qword ptr [rax], 0x11 -48c12811|223344556677885f5f5f5f5f 64 plan9 SHRQ $0x11, 0(AX) -48c13811|223344556677885f5f5f5f5f 64 gnu sarq $0x11,(%rax) -48c13811|223344556677885f5f5f5f5f 64 intel sar qword ptr [rax], 0x11 -48c13811|223344556677885f5f5f5f5f 64 plan9 SARQ $0x11, 0(AX) -48c70011223344|556677885f5f5f5f5f 64 gnu movq $0x44332211,(%rax) -48c70011223344|556677885f5f5f5f5f 64 intel mov qword ptr [rax], 0x44332211 -48c70011223344|556677885f5f5f5f5f 64 plan9 MOVQ $0x44332211, 0(AX) -48c7f811223344|556677885f5f5f5f5f 64 gnu xbeginq .+0x44332211 -48c7f811223344|556677885f5f5f5f5f 64 intel xbegin .+0x44332211 -48c7f811223344|556677885f5f5f5f5f 64 plan9 XBEGIN .+1144201745 -48c9|11223344556677885f5f5f5f5f5f 64 gnu leaveq -48c9|11223344556677885f5f5f5f5f5f 64 intel leave -48c9|11223344556677885f5f5f5f5f5f 64 plan9 LEAVE -48cf|11223344556677885f5f5f5f5f5f 64 gnu iretq -48cf|11223344556677885f5f5f5f5f5f 64 intel iretq -48cf|11223344556677885f5f5f5f5f5f 64 plan9 IRETQ -48d100|11223344556677885f5f5f5f5f 64 gnu rolq (%rax) -48d100|11223344556677885f5f5f5f5f 64 intel rol qword ptr [rax], 0x1 -48d100|11223344556677885f5f5f5f5f 64 plan9 ROLQ $0x1, 0(AX) -48d108|11223344556677885f5f5f5f5f 64 gnu rorq (%rax) -48d108|11223344556677885f5f5f5f5f 64 intel ror qword ptr [rax], 0x1 -48d108|11223344556677885f5f5f5f5f 64 plan9 RORQ $0x1, 0(AX) -48d111|223344556677885f5f5f5f5f5f 64 gnu rclq (%rcx) -48d111|223344556677885f5f5f5f5f5f 64 intel rcl qword ptr [rcx], 0x1 -48d111|223344556677885f5f5f5f5f5f 64 plan9 RCLQ $0x1, 0(CX) -48d118|11223344556677885f5f5f5f5f 64 gnu rcrq (%rax) -48d118|11223344556677885f5f5f5f5f 64 intel rcr qword ptr [rax], 0x1 -48d118|11223344556677885f5f5f5f5f 64 plan9 RCRQ $0x1, 0(AX) -48d120|11223344556677885f5f5f5f5f 64 gnu shlq (%rax) -48d120|11223344556677885f5f5f5f5f 64 intel shl qword ptr [rax], 0x1 -48d120|11223344556677885f5f5f5f5f 64 plan9 SHLQ $0x1, 0(AX) -48d128|11223344556677885f5f5f5f5f 64 gnu shrq (%rax) -48d128|11223344556677885f5f5f5f5f 64 intel shr qword ptr [rax], 0x1 -48d128|11223344556677885f5f5f5f5f 64 plan9 SHRQ $0x1, 0(AX) -48d138|11223344556677885f5f5f5f5f 64 gnu sarq (%rax) -48d138|11223344556677885f5f5f5f5f 64 intel sar qword ptr [rax], 0x1 -48d138|11223344556677885f5f5f5f5f 64 plan9 SARQ $0x1, 0(AX) -48d300|11223344556677885f5f5f5f5f 64 gnu rolq %cl,(%rax) -48d300|11223344556677885f5f5f5f5f 64 intel rol qword ptr [rax], cl -48d300|11223344556677885f5f5f5f5f 64 plan9 ROLQ CL, 0(AX) -48d308|11223344556677885f5f5f5f5f 64 gnu rorq %cl,(%rax) -48d308|11223344556677885f5f5f5f5f 64 intel ror qword ptr [rax], cl -48d308|11223344556677885f5f5f5f5f 64 plan9 RORQ CL, 0(AX) -48d311|223344556677885f5f5f5f5f5f 64 gnu rclq %cl,(%rcx) -48d311|223344556677885f5f5f5f5f5f 64 intel rcl qword ptr [rcx], cl -48d311|223344556677885f5f5f5f5f5f 64 plan9 RCLQ CL, 0(CX) -48d318|11223344556677885f5f5f5f5f 64 gnu rcrq %cl,(%rax) -48d318|11223344556677885f5f5f5f5f 64 intel rcr qword ptr [rax], cl -48d318|11223344556677885f5f5f5f5f 64 plan9 RCRQ CL, 0(AX) -48d320|11223344556677885f5f5f5f5f 64 gnu shlq %cl,(%rax) -48d320|11223344556677885f5f5f5f5f 64 intel shl qword ptr [rax], cl -48d320|11223344556677885f5f5f5f5f 64 plan9 SHLQ CL, 0(AX) -48d328|11223344556677885f5f5f5f5f 64 gnu shrq %cl,(%rax) -48d328|11223344556677885f5f5f5f5f 64 intel shr qword ptr [rax], cl -48d328|11223344556677885f5f5f5f5f 64 plan9 SHRQ CL, 0(AX) -48d338|11223344556677885f5f5f5f5f 64 gnu sarq %cl,(%rax) -48d338|11223344556677885f5f5f5f5f 64 intel sar qword ptr [rax], cl -48d338|11223344556677885f5f5f5f5f 64 plan9 SARQ CL, 0(AX) -48d7|11223344556677885f5f5f5f5f5f 64 gnu xlat %ds:(%rbx) -48d7|11223344556677885f5f5f5f5f5f 64 intel xlat -48d7|11223344556677885f5f5f5f5f5f 64 plan9 XLATB DS:0(BX) -48e511|223344556677885f5f5f5f5f5f 64 gnu in $0x11,%eax -48e511|223344556677885f5f5f5f5f5f 64 intel in eax, 0x11 -48e511|223344556677885f5f5f5f5f5f 64 plan9 INQ $0x11, AX -48e711|223344556677885f5f5f5f5f5f 64 gnu out %eax,$0x11 -48e711|223344556677885f5f5f5f5f5f 64 intel out 0x11, eax -48e711|223344556677885f5f5f5f5f5f 64 plan9 OUTQ AX, $0x11 -48e811223344|556677885f5f5f5f5f5f 64 gnu callq .+0x44332211 -48e811223344|556677885f5f5f5f5f5f 64 intel call .+0x44332211 -48e811223344|556677885f5f5f5f5f5f 64 plan9 CALL .+1144201745 -48e911223344|556677885f5f5f5f5f5f 64 gnu jmpq .+0x44332211 -48e911223344|556677885f5f5f5f5f5f 64 intel jmp .+0x44332211 -48e911223344|556677885f5f5f5f5f5f 64 plan9 JMP .+1144201745 -48ed|11223344556677885f5f5f5f5f5f 64 gnu in (%dx),%eax -48ed|11223344556677885f5f5f5f5f5f 64 intel in eax, dx -48ed|11223344556677885f5f5f5f5f5f 64 plan9 INQ DX, AX -48ef|11223344556677885f5f5f5f5f5f 64 gnu out %eax,(%dx) -48ef|11223344556677885f5f5f5f5f5f 64 intel out dx, eax -48ef|11223344556677885f5f5f5f5f5f 64 plan9 OUTQ AX, DX -48f70011223344|556677885f5f5f5f5f 64 gnu testq $0x44332211,(%rax) -48f70011223344|556677885f5f5f5f5f 64 intel test qword ptr [rax], 0x44332211 -48f70011223344|556677885f5f5f5f5f 64 plan9 TESTQ $0x44332211, 0(AX) -48f711|223344556677885f5f5f5f5f5f 64 gnu notq (%rcx) -48f711|223344556677885f5f5f5f5f5f 64 intel not qword ptr [rcx] -48f711|223344556677885f5f5f5f5f5f 64 plan9 NOTQ 0(CX) -48f718|11223344556677885f5f5f5f5f 64 gnu negq (%rax) -48f718|11223344556677885f5f5f5f5f 64 intel neg qword ptr [rax] -48f718|11223344556677885f5f5f5f5f 64 plan9 NEGQ 0(AX) -48f720|11223344556677885f5f5f5f5f 64 gnu mulq (%rax) -48f720|11223344556677885f5f5f5f5f 64 intel mul qword ptr [rax] -48f720|11223344556677885f5f5f5f5f 64 plan9 MULQ 0(AX) -48f728|11223344556677885f5f5f5f5f 64 gnu imulq (%rax) -48f728|11223344556677885f5f5f5f5f 64 intel imul qword ptr [rax] -48f728|11223344556677885f5f5f5f5f 64 plan9 IMULQ 0(AX) -48f730|11223344556677885f5f5f5f5f 64 gnu divq (%rax) -48f730|11223344556677885f5f5f5f5f 64 intel div qword ptr [rax] -48f730|11223344556677885f5f5f5f5f 64 plan9 DIVQ 0(AX) -48f738|11223344556677885f5f5f5f5f 64 gnu idivq (%rax) -48f738|11223344556677885f5f5f5f5f 64 intel idiv qword ptr [rax] -48f738|11223344556677885f5f5f5f5f 64 plan9 IDIVQ 0(AX) -48ff00|11223344556677885f5f5f5f5f 64 gnu incq (%rax) -48ff00|11223344556677885f5f5f5f5f 64 intel inc qword ptr [rax] -48ff00|11223344556677885f5f5f5f5f 64 plan9 INCQ 0(AX) -48ff08|11223344556677885f5f5f5f5f 64 gnu decq (%rax) -48ff08|11223344556677885f5f5f5f5f 64 intel dec qword ptr [rax] -48ff08|11223344556677885f5f5f5f5f 64 plan9 DECQ 0(AX) -48ff18|11223344556677885f5f5f5f5f 64 gnu lcallq *(%rax) -48ff18|11223344556677885f5f5f5f5f 64 intel call far ptr [rax] -48ff18|11223344556677885f5f5f5f5f 64 plan9 LCALL 0(AX) -48ff28|11223344556677885f5f5f5f5f 64 gnu ljmpq *(%rax) -48ff28|11223344556677885f5f5f5f5f 64 intel jmp far ptr [rax] -48ff28|11223344556677885f5f5f5f5f 64 plan9 LJMP 0(AX) -48ff30|11223344556677885f5f5f5f5f 64 gnu pushq (%rax) -48ff30|11223344556677885f5f5f5f5f 64 intel push qword ptr [rax] -48ff30|11223344556677885f5f5f5f5f 64 plan9 PUSHQ 0(AX) -48|010011223344556677885f5f5f5f5f 32 intel dec eax -48|010011223344556677885f5f5f5f5f 32 plan9 DECL AX -50|11223344556677885f5f5f5f5f5f5f 32 intel push eax -50|11223344556677885f5f5f5f5f5f5f 32 plan9 PUSHL AX -50|11223344556677885f5f5f5f5f5f5f 64 gnu push %rax -50|11223344556677885f5f5f5f5f5f5f 64 intel push rax -50|11223344556677885f5f5f5f5f5f5f 64 plan9 PUSHL AX -58|11223344556677885f5f5f5f5f5f5f 32 intel pop eax -58|11223344556677885f5f5f5f5f5f5f 32 plan9 POPL AX -58|11223344556677885f5f5f5f5f5f5f 64 gnu pop %rax -58|11223344556677885f5f5f5f5f5f5f 64 intel pop rax -58|11223344556677885f5f5f5f5f5f5f 64 plan9 POPL AX -60|11223344556677885f5f5f5f5f5f5f 32 intel pushad -60|11223344556677885f5f5f5f5f5f5f 32 plan9 PUSHAD -60|11223344556677885f5f5f5f5f5f5f 64 gnu error: unrecognized instruction -60|11223344556677885f5f5f5f5f5f5f 64 intel error: unrecognized instruction -60|11223344556677885f5f5f5f5f5f5f 64 plan9 error: unrecognized instruction -61|11223344556677885f5f5f5f5f5f5f 32 intel popad -61|11223344556677885f5f5f5f5f5f5f 32 plan9 POPAD -61|11223344556677885f5f5f5f5f5f5f 64 gnu error: unrecognized instruction -61|11223344556677885f5f5f5f5f5f5f 64 intel error: unrecognized instruction -61|11223344556677885f5f5f5f5f5f5f 64 plan9 error: unrecognized instruction -6211|223344556677885f5f5f5f5f5f5f 32 intel bound edx, qword ptr [ecx] -6211|223344556677885f5f5f5f5f5f5f 32 plan9 BOUND 0(CX), DX -62|11223344556677885f5f5f5f5f5f5f 64 gnu error: unrecognized instruction -62|11223344556677885f5f5f5f5f5f5f 64 intel error: unrecognized instruction -62|11223344556677885f5f5f5f5f5f5f 64 plan9 error: unrecognized instruction -6311|223344556677885f5f5f5f5f5f5f 32 intel arpl word ptr [ecx], dx -6311|223344556677885f5f5f5f5f5f5f 32 plan9 ARPL DX, 0(CX) -6311|223344556677885f5f5f5f5f5f5f 64 gnu movsxd (%rcx),%edx -6311|223344556677885f5f5f5f5f5f5f 64 intel movsxd edx, dword ptr [rcx] -6311|223344556677885f5f5f5f5f5f5f 64 plan9 MOVSXD 0(CX), DX -660111|223344556677885f5f5f5f5f5f 32 intel add word ptr [ecx], dx -660111|223344556677885f5f5f5f5f5f 32 plan9 ADDW DX, 0(CX) -660111|223344556677885f5f5f5f5f5f 64 gnu add %dx,(%rcx) -660111|223344556677885f5f5f5f5f5f 64 intel add word ptr [rcx], dx -660111|223344556677885f5f5f5f5f5f 64 plan9 ADDW DX, 0(CX) -660311|223344556677885f5f5f5f5f5f 32 intel add dx, word ptr [ecx] -660311|223344556677885f5f5f5f5f5f 32 plan9 ADDW 0(CX), DX -660311|223344556677885f5f5f5f5f5f 64 gnu add (%rcx),%dx -660311|223344556677885f5f5f5f5f5f 64 intel add dx, word ptr [rcx] -660311|223344556677885f5f5f5f5f5f 64 plan9 ADDW 0(CX), DX -66051122|3344556677885f5f5f5f5f5f 32 intel add ax, 0x2211 -66051122|3344556677885f5f5f5f5f5f 32 plan9 ADDW $0x2211, AX -66051122|3344556677885f5f5f5f5f5f 64 gnu add $0x2211,%ax -66051122|3344556677885f5f5f5f5f5f 64 intel add ax, 0x2211 -66051122|3344556677885f5f5f5f5f5f 64 plan9 ADDW $0x2211, AX -660911|223344556677885f5f5f5f5f5f 32 intel or word ptr [ecx], dx -660911|223344556677885f5f5f5f5f5f 32 plan9 ORW DX, 0(CX) -660911|223344556677885f5f5f5f5f5f 64 gnu or %dx,(%rcx) -660911|223344556677885f5f5f5f5f5f 64 intel or word ptr [rcx], dx -660911|223344556677885f5f5f5f5f5f 64 plan9 ORW DX, 0(CX) -660b11|223344556677885f5f5f5f5f5f 32 intel or dx, word ptr [ecx] -660b11|223344556677885f5f5f5f5f5f 32 plan9 ORW 0(CX), DX -660b11|223344556677885f5f5f5f5f5f 64 gnu or (%rcx),%dx -660b11|223344556677885f5f5f5f5f5f 64 intel or dx, word ptr [rcx] -660b11|223344556677885f5f5f5f5f5f 64 plan9 ORW 0(CX), DX -660d1122|3344556677885f5f5f5f5f5f 32 intel or ax, 0x2211 -660d1122|3344556677885f5f5f5f5f5f 32 plan9 ORW $0x2211, AX -660d1122|3344556677885f5f5f5f5f5f 64 gnu or $0x2211,%ax -660d1122|3344556677885f5f5f5f5f5f 64 intel or ax, 0x2211 -660d1122|3344556677885f5f5f5f5f5f 64 plan9 ORW $0x2211, AX -660f0000|11223344556677885f5f5f5f 32 intel sldt word ptr [eax] -660f0000|11223344556677885f5f5f5f 32 plan9 SLDT 0(AX) -660f0000|11223344556677885f5f5f5f 64 gnu data16 sldt (%rax) -660f0000|11223344556677885f5f5f5f 64 intel sldt word ptr [rax] -660f0000|11223344556677885f5f5f5f 64 plan9 SLDT 0(AX) -660f0008|11223344556677885f5f5f5f 32 intel str word ptr [eax] -660f0008|11223344556677885f5f5f5f 32 plan9 STR 0(AX) -660f0008|11223344556677885f5f5f5f 64 gnu data16 str (%rax) -660f0008|11223344556677885f5f5f5f 64 intel str word ptr [rax] -660f0008|11223344556677885f5f5f5f 64 plan9 STR 0(AX) -660f01a611223344|556677885f5f5f5f 32 intel smsw word ptr [esi+0x44332211] -660f01a611223344|556677885f5f5f5f 32 plan9 SMSW 0x44332211(SI) -660f01a611223344|556677885f5f5f5f 64 gnu data16 smsw 0x44332211(%rsi) -660f01a611223344|556677885f5f5f5f 64 intel smsw word ptr [rsi+0x44332211] -660f01a611223344|556677885f5f5f5f 64 plan9 SMSW 0x44332211(SI) -660f0211|223344556677885f5f5f5f5f 32 intel lar dx, word ptr [ecx] -660f0211|223344556677885f5f5f5f5f 32 plan9 LAR 0(CX), DX -660f0211|223344556677885f5f5f5f5f 64 gnu lar (%rcx),%dx -660f0211|223344556677885f5f5f5f5f 64 intel lar dx, word ptr [rcx] -660f0211|223344556677885f5f5f5f5f 64 plan9 LAR 0(CX), DX -660f0311|223344556677885f5f5f5f5f 32 intel lsl dx, word ptr [ecx] -660f0311|223344556677885f5f5f5f5f 32 plan9 LSL 0(CX), DX -660f0311|223344556677885f5f5f5f5f 64 gnu lsl (%rcx),%dx -660f0311|223344556677885f5f5f5f5f 64 intel lsl dx, word ptr [rcx] -660f0311|223344556677885f5f5f5f5f 64 plan9 LSL 0(CX), DX -660f1011|223344556677885f5f5f5f5f 32 intel movupd xmm2, xmmword ptr [ecx] -660f1011|223344556677885f5f5f5f5f 32 plan9 MOVUPD 0(CX), X2 -660f1011|223344556677885f5f5f5f5f 64 gnu movupd (%rcx),%xmm2 -660f1011|223344556677885f5f5f5f5f 64 intel movupd xmm2, xmmword ptr [rcx] -660f1011|223344556677885f5f5f5f5f 64 plan9 MOVUPD 0(CX), X2 -660f1122|3344556677885f5f5f5f5f5f 32 intel movupd xmmword ptr [edx], xmm4 -660f1122|3344556677885f5f5f5f5f5f 32 plan9 MOVUPD X4, 0(DX) -660f1122|3344556677885f5f5f5f5f5f 64 gnu movupd %xmm4,(%rdx) -660f1122|3344556677885f5f5f5f5f5f 64 intel movupd xmmword ptr [rdx], xmm4 -660f1122|3344556677885f5f5f5f5f5f 64 plan9 MOVUPD X4, 0(DX) -660f1211|223344556677885f5f5f5f5f 32 intel movlpd xmm2, qword ptr [ecx] -660f1211|223344556677885f5f5f5f5f 32 plan9 MOVLPD 0(CX), X2 -660f1211|223344556677885f5f5f5f5f 64 gnu movlpd (%rcx),%xmm2 -660f1211|223344556677885f5f5f5f5f 64 intel movlpd xmm2, qword ptr [rcx] -660f1211|223344556677885f5f5f5f5f 64 plan9 MOVLPD 0(CX), X2 -660f1311|223344556677885f5f5f5f5f 32 intel movlpd qword ptr [ecx], xmm2 -660f1311|223344556677885f5f5f5f5f 32 plan9 MOVLPD X2, 0(CX) -660f1311|223344556677885f5f5f5f5f 64 gnu movlpd %xmm2,(%rcx) -660f1311|223344556677885f5f5f5f5f 64 intel movlpd qword ptr [rcx], xmm2 -660f1311|223344556677885f5f5f5f5f 64 plan9 MOVLPD X2, 0(CX) -660f1411|223344556677885f5f5f5f5f 32 intel unpcklpd xmm2, xmmword ptr [ecx] -660f1411|223344556677885f5f5f5f5f 32 plan9 UNPCKLPD 0(CX), X2 -660f1411|223344556677885f5f5f5f5f 64 gnu unpcklpd (%rcx),%xmm2 -660f1411|223344556677885f5f5f5f5f 64 intel unpcklpd xmm2, xmmword ptr [rcx] -660f1411|223344556677885f5f5f5f5f 64 plan9 UNPCKLPD 0(CX), X2 -660f1511|223344556677885f5f5f5f5f 32 intel unpckhpd xmm2, xmmword ptr [ecx] -660f1511|223344556677885f5f5f5f5f 32 plan9 UNPCKHPD 0(CX), X2 -660f1511|223344556677885f5f5f5f5f 64 gnu unpckhpd (%rcx),%xmm2 -660f1511|223344556677885f5f5f5f5f 64 intel unpckhpd xmm2, xmmword ptr [rcx] -660f1511|223344556677885f5f5f5f5f 64 plan9 UNPCKHPD 0(CX), X2 -660f1611|223344556677885f5f5f5f5f 32 intel movhpd xmm2, qword ptr [ecx] -660f1611|223344556677885f5f5f5f5f 32 plan9 MOVHPD 0(CX), X2 -660f1611|223344556677885f5f5f5f5f 64 gnu movhpd (%rcx),%xmm2 -660f1611|223344556677885f5f5f5f5f 64 intel movhpd xmm2, qword ptr [rcx] -660f1611|223344556677885f5f5f5f5f 64 plan9 MOVHPD 0(CX), X2 -660f1711|223344556677885f5f5f5f5f 32 intel movhpd qword ptr [ecx], xmm2 -660f1711|223344556677885f5f5f5f5f 32 plan9 MOVHPD X2, 0(CX) -660f1711|223344556677885f5f5f5f5f 64 gnu movhpd %xmm2,(%rcx) -660f1711|223344556677885f5f5f5f5f 64 intel movhpd qword ptr [rcx], xmm2 -660f1711|223344556677885f5f5f5f5f 64 plan9 MOVHPD X2, 0(CX) -660f1f00|11223344556677885f5f5f5f 32 intel nop word ptr [eax], ax -660f1f00|11223344556677885f5f5f5f 32 plan9 NOPW 0(AX) -660f1f00|11223344556677885f5f5f5f 64 gnu nopw (%rax) -660f1f00|11223344556677885f5f5f5f 64 intel nop word ptr [rax], ax -660f1f00|11223344556677885f5f5f5f 64 plan9 NOPW 0(AX) -660f2811|223344556677885f5f5f5f5f 32 intel movapd xmm2, xmmword ptr [ecx] -660f2811|223344556677885f5f5f5f5f 32 plan9 MOVAPD 0(CX), X2 -660f2811|223344556677885f5f5f5f5f 64 gnu movapd (%rcx),%xmm2 -660f2811|223344556677885f5f5f5f5f 64 intel movapd xmm2, xmmword ptr [rcx] -660f2811|223344556677885f5f5f5f5f 64 plan9 MOVAPD 0(CX), X2 -660f2911|223344556677885f5f5f5f5f 32 intel movapd xmmword ptr [ecx], xmm2 -660f2911|223344556677885f5f5f5f5f 32 plan9 MOVAPD X2, 0(CX) -660f2911|223344556677885f5f5f5f5f 64 gnu movapd %xmm2,(%rcx) -660f2911|223344556677885f5f5f5f5f 64 intel movapd xmmword ptr [rcx], xmm2 -660f2911|223344556677885f5f5f5f5f 64 plan9 MOVAPD X2, 0(CX) -660f2a11|223344556677885f5f5f5f5f 32 intel cvtpi2pd xmm2, qword ptr [ecx] -660f2a11|223344556677885f5f5f5f5f 32 plan9 CVTPI2PD 0(CX), X2 -660f2a11|223344556677885f5f5f5f5f 64 gnu cvtpi2pd (%rcx),%xmm2 -660f2a11|223344556677885f5f5f5f5f 64 intel cvtpi2pd xmm2, qword ptr [rcx] -660f2a11|223344556677885f5f5f5f5f 64 plan9 CVTPI2PD 0(CX), X2 -660f2b11|223344556677885f5f5f5f5f 32 intel movntpd xmmword ptr [ecx], xmm2 -660f2b11|223344556677885f5f5f5f5f 32 plan9 MOVNTPD X2, 0(CX) -660f2b11|223344556677885f5f5f5f5f 64 gnu movntpd %xmm2,(%rcx) -660f2b11|223344556677885f5f5f5f5f 64 intel movntpd xmmword ptr [rcx], xmm2 -660f2b11|223344556677885f5f5f5f5f 64 plan9 MOVNTPD X2, 0(CX) -660f2c11|223344556677885f5f5f5f5f 32 intel cvttpd2pi mmx2, xmmword ptr [ecx] -660f2c11|223344556677885f5f5f5f5f 32 plan9 CVTTPD2PI 0(CX), M2 -660f2c11|223344556677885f5f5f5f5f 64 gnu cvttpd2pi (%rcx),%mm2 -660f2c11|223344556677885f5f5f5f5f 64 intel cvttpd2pi mmx2, xmmword ptr [rcx] -660f2c11|223344556677885f5f5f5f5f 64 plan9 CVTTPD2PI 0(CX), M2 -660f2d11|223344556677885f5f5f5f5f 32 intel cvtpd2pi mmx2, xmmword ptr [ecx] -660f2d11|223344556677885f5f5f5f5f 32 plan9 CVTPD2PI 0(CX), M2 -660f2d11|223344556677885f5f5f5f5f 64 gnu cvtpd2pi (%rcx),%mm2 -660f2d11|223344556677885f5f5f5f5f 64 intel cvtpd2pi mmx2, xmmword ptr [rcx] -660f2d11|223344556677885f5f5f5f5f 64 plan9 CVTPD2PI 0(CX), M2 -660f2e11|223344556677885f5f5f5f5f 32 intel ucomisd xmm2, qword ptr [ecx] -660f2e11|223344556677885f5f5f5f5f 32 plan9 UCOMISD 0(CX), X2 -660f2e11|223344556677885f5f5f5f5f 64 gnu ucomisd (%rcx),%xmm2 -660f2e11|223344556677885f5f5f5f5f 64 intel ucomisd xmm2, qword ptr [rcx] -660f2e11|223344556677885f5f5f5f5f 64 plan9 UCOMISD 0(CX), X2 -660f2f11|223344556677885f5f5f5f5f 32 intel comisd xmm2, qword ptr [ecx] -660f2f11|223344556677885f5f5f5f5f 32 plan9 COMISD 0(CX), X2 -660f2f11|223344556677885f5f5f5f5f 64 gnu comisd (%rcx),%xmm2 -660f2f11|223344556677885f5f5f5f5f 64 intel comisd xmm2, qword ptr [rcx] -660f2f11|223344556677885f5f5f5f5f 64 plan9 COMISD 0(CX), X2 -660f380011|223344556677885f5f5f5f 32 intel pshufb xmm2, xmmword ptr [ecx] -660f380011|223344556677885f5f5f5f 32 plan9 PSHUFB 0(CX), X2 -660f380011|223344556677885f5f5f5f 64 gnu pshufb (%rcx),%xmm2 -660f380011|223344556677885f5f5f5f 64 intel pshufb xmm2, xmmword ptr [rcx] -660f380011|223344556677885f5f5f5f 64 plan9 PSHUFB 0(CX), X2 -660f380111|223344556677885f5f5f5f 32 intel phaddw xmm2, xmmword ptr [ecx] -660f380111|223344556677885f5f5f5f 32 plan9 PHADDW 0(CX), X2 -660f380111|223344556677885f5f5f5f 64 gnu phaddw (%rcx),%xmm2 -660f380111|223344556677885f5f5f5f 64 intel phaddw xmm2, xmmword ptr [rcx] -660f380111|223344556677885f5f5f5f 64 plan9 PHADDW 0(CX), X2 -660f380211|223344556677885f5f5f5f 32 intel phaddd xmm2, xmmword ptr [ecx] -660f380211|223344556677885f5f5f5f 32 plan9 PHADDD 0(CX), X2 -660f380211|223344556677885f5f5f5f 64 gnu phaddd (%rcx),%xmm2 -660f380211|223344556677885f5f5f5f 64 intel phaddd xmm2, xmmword ptr [rcx] -660f380211|223344556677885f5f5f5f 64 plan9 PHADDD 0(CX), X2 -660f380311|223344556677885f5f5f5f 32 intel phaddsw xmm2, xmmword ptr [ecx] -660f380311|223344556677885f5f5f5f 32 plan9 PHADDSW 0(CX), X2 -660f380311|223344556677885f5f5f5f 64 gnu phaddsw (%rcx),%xmm2 -660f380311|223344556677885f5f5f5f 64 intel phaddsw xmm2, xmmword ptr [rcx] -660f380311|223344556677885f5f5f5f 64 plan9 PHADDSW 0(CX), X2 -660f380411|223344556677885f5f5f5f 32 intel pmaddubsw xmm2, xmmword ptr [ecx] -660f380411|223344556677885f5f5f5f 32 plan9 PMADDUBSW 0(CX), X2 -660f380411|223344556677885f5f5f5f 64 gnu pmaddubsw (%rcx),%xmm2 -660f380411|223344556677885f5f5f5f 64 intel pmaddubsw xmm2, xmmword ptr [rcx] -660f380411|223344556677885f5f5f5f 64 plan9 PMADDUBSW 0(CX), X2 -660f380511|223344556677885f5f5f5f 32 intel phsubw xmm2, xmmword ptr [ecx] -660f380511|223344556677885f5f5f5f 32 plan9 PHSUBW 0(CX), X2 -660f380511|223344556677885f5f5f5f 64 gnu phsubw (%rcx),%xmm2 -660f380511|223344556677885f5f5f5f 64 intel phsubw xmm2, xmmword ptr [rcx] -660f380511|223344556677885f5f5f5f 64 plan9 PHSUBW 0(CX), X2 -660f380611|223344556677885f5f5f5f 32 intel phsubd xmm2, xmmword ptr [ecx] -660f380611|223344556677885f5f5f5f 32 plan9 PHSUBD 0(CX), X2 -660f380611|223344556677885f5f5f5f 64 gnu phsubd (%rcx),%xmm2 -660f380611|223344556677885f5f5f5f 64 intel phsubd xmm2, xmmword ptr [rcx] -660f380611|223344556677885f5f5f5f 64 plan9 PHSUBD 0(CX), X2 -660f380711|223344556677885f5f5f5f 32 intel phsubsw xmm2, xmmword ptr [ecx] -660f380711|223344556677885f5f5f5f 32 plan9 PHSUBSW 0(CX), X2 -660f380711|223344556677885f5f5f5f 64 gnu phsubsw (%rcx),%xmm2 -660f380711|223344556677885f5f5f5f 64 intel phsubsw xmm2, xmmword ptr [rcx] -660f380711|223344556677885f5f5f5f 64 plan9 PHSUBSW 0(CX), X2 -660f380811|223344556677885f5f5f5f 32 intel psignb xmm2, xmmword ptr [ecx] -660f380811|223344556677885f5f5f5f 32 plan9 PSIGNB 0(CX), X2 -660f380811|223344556677885f5f5f5f 64 gnu psignb (%rcx),%xmm2 -660f380811|223344556677885f5f5f5f 64 intel psignb xmm2, xmmword ptr [rcx] -660f380811|223344556677885f5f5f5f 64 plan9 PSIGNB 0(CX), X2 -660f380911|223344556677885f5f5f5f 32 intel psignw xmm2, xmmword ptr [ecx] -660f380911|223344556677885f5f5f5f 32 plan9 PSIGNW 0(CX), X2 -660f380911|223344556677885f5f5f5f 64 gnu psignw (%rcx),%xmm2 -660f380911|223344556677885f5f5f5f 64 intel psignw xmm2, xmmword ptr [rcx] -660f380911|223344556677885f5f5f5f 64 plan9 PSIGNW 0(CX), X2 -660f380a11|223344556677885f5f5f5f 32 intel psignd xmm2, xmmword ptr [ecx] -660f380a11|223344556677885f5f5f5f 32 plan9 PSIGND 0(CX), X2 -660f380a11|223344556677885f5f5f5f 64 gnu psignd (%rcx),%xmm2 -660f380a11|223344556677885f5f5f5f 64 intel psignd xmm2, xmmword ptr [rcx] -660f380a11|223344556677885f5f5f5f 64 plan9 PSIGND 0(CX), X2 -660f380b11|223344556677885f5f5f5f 32 intel pmulhrsw xmm2, xmmword ptr [ecx] -660f380b11|223344556677885f5f5f5f 32 plan9 PMULHRSW 0(CX), X2 -660f380b11|223344556677885f5f5f5f 64 gnu pmulhrsw (%rcx),%xmm2 -660f380b11|223344556677885f5f5f5f 64 intel pmulhrsw xmm2, xmmword ptr [rcx] -660f380b11|223344556677885f5f5f5f 64 plan9 PMULHRSW 0(CX), X2 -660f381011|223344556677885f5f5f5f 32 intel pblendvb xmm2, xmmword ptr [ecx] -660f381011|223344556677885f5f5f5f 32 plan9 PBLENDVB X0, 0(CX), X2 -660f381011|223344556677885f5f5f5f 64 gnu pblendvb %xmm0,(%rcx),%xmm2 -660f381011|223344556677885f5f5f5f 64 intel pblendvb xmm2, xmmword ptr [rcx] -660f381011|223344556677885f5f5f5f 64 plan9 PBLENDVB X0, 0(CX), X2 -660f381411|223344556677885f5f5f5f 32 intel blendvps xmm2, xmmword ptr [ecx] -660f381411|223344556677885f5f5f5f 32 plan9 BLENDVPS X0, 0(CX), X2 -660f381411|223344556677885f5f5f5f 64 gnu blendvps %xmm0,(%rcx),%xmm2 -660f381411|223344556677885f5f5f5f 64 intel blendvps xmm2, xmmword ptr [rcx] -660f381411|223344556677885f5f5f5f 64 plan9 BLENDVPS X0, 0(CX), X2 -660f381511|223344556677885f5f5f5f 32 intel blendvpd xmm2, xmmword ptr [ecx] -660f381511|223344556677885f5f5f5f 32 plan9 BLENDVPD X0, 0(CX), X2 -660f381511|223344556677885f5f5f5f 64 gnu blendvpd %xmm0,(%rcx),%xmm2 -660f381511|223344556677885f5f5f5f 64 intel blendvpd xmm2, xmmword ptr [rcx] -660f381511|223344556677885f5f5f5f 64 plan9 BLENDVPD X0, 0(CX), X2 -660f381711|223344556677885f5f5f5f 32 intel ptest xmm2, xmmword ptr [ecx] -660f381711|223344556677885f5f5f5f 32 plan9 PTEST 0(CX), X2 -660f381711|223344556677885f5f5f5f 64 gnu ptest (%rcx),%xmm2 -660f381711|223344556677885f5f5f5f 64 intel ptest xmm2, xmmword ptr [rcx] -660f381711|223344556677885f5f5f5f 64 plan9 PTEST 0(CX), X2 -660f381c11|223344556677885f5f5f5f 32 intel pabsb xmm2, xmmword ptr [ecx] -660f381c11|223344556677885f5f5f5f 32 plan9 PABSB 0(CX), X2 -660f381c11|223344556677885f5f5f5f 64 gnu pabsb (%rcx),%xmm2 -660f381c11|223344556677885f5f5f5f 64 intel pabsb xmm2, xmmword ptr [rcx] -660f381c11|223344556677885f5f5f5f 64 plan9 PABSB 0(CX), X2 -660f381d11|223344556677885f5f5f5f 32 intel pabsw xmm2, xmmword ptr [ecx] -660f381d11|223344556677885f5f5f5f 32 plan9 PABSW 0(CX), X2 -660f381d11|223344556677885f5f5f5f 64 gnu pabsw (%rcx),%xmm2 -660f381d11|223344556677885f5f5f5f 64 intel pabsw xmm2, xmmword ptr [rcx] -660f381d11|223344556677885f5f5f5f 64 plan9 PABSW 0(CX), X2 -660f381e11|223344556677885f5f5f5f 32 intel pabsd xmm2, xmmword ptr [ecx] -660f381e11|223344556677885f5f5f5f 32 plan9 PABSD 0(CX), X2 -660f381e11|223344556677885f5f5f5f 64 gnu pabsd (%rcx),%xmm2 -660f381e11|223344556677885f5f5f5f 64 intel pabsd xmm2, xmmword ptr [rcx] -660f381e11|223344556677885f5f5f5f 64 plan9 PABSD 0(CX), X2 -660f382011|223344556677885f5f5f5f 32 intel pmovsxbw xmm2, qword ptr [ecx] -660f382011|223344556677885f5f5f5f 32 plan9 PMOVSXBW 0(CX), X2 -660f382011|223344556677885f5f5f5f 64 gnu pmovsxbw (%rcx),%xmm2 -660f382011|223344556677885f5f5f5f 64 intel pmovsxbw xmm2, qword ptr [rcx] -660f382011|223344556677885f5f5f5f 64 plan9 PMOVSXBW 0(CX), X2 -660f382111|223344556677885f5f5f5f 32 intel pmovsxbd xmm2, dword ptr [ecx] -660f382111|223344556677885f5f5f5f 32 plan9 PMOVSXBD 0(CX), X2 -660f382111|223344556677885f5f5f5f 64 gnu pmovsxbd (%rcx),%xmm2 -660f382111|223344556677885f5f5f5f 64 intel pmovsxbd xmm2, dword ptr [rcx] -660f382111|223344556677885f5f5f5f 64 plan9 PMOVSXBD 0(CX), X2 -660f382211|223344556677885f5f5f5f 32 intel pmovsxbq xmm2, word ptr [ecx] -660f382211|223344556677885f5f5f5f 32 plan9 PMOVSXBQ 0(CX), X2 -660f382211|223344556677885f5f5f5f 64 gnu pmovsxbq (%rcx),%xmm2 -660f382211|223344556677885f5f5f5f 64 intel pmovsxbq xmm2, word ptr [rcx] -660f382211|223344556677885f5f5f5f 64 plan9 PMOVSXBQ 0(CX), X2 -660f382311|223344556677885f5f5f5f 32 intel pmovsxwd xmm2, qword ptr [ecx] -660f382311|223344556677885f5f5f5f 32 plan9 PMOVSXWD 0(CX), X2 -660f382311|223344556677885f5f5f5f 64 gnu pmovsxwd (%rcx),%xmm2 -660f382311|223344556677885f5f5f5f 64 intel pmovsxwd xmm2, qword ptr [rcx] -660f382311|223344556677885f5f5f5f 64 plan9 PMOVSXWD 0(CX), X2 -660f382411|223344556677885f5f5f5f 32 intel pmovsxwq xmm2, dword ptr [ecx] -660f382411|223344556677885f5f5f5f 32 plan9 PMOVSXWQ 0(CX), X2 -660f382411|223344556677885f5f5f5f 64 gnu pmovsxwq (%rcx),%xmm2 -660f382411|223344556677885f5f5f5f 64 intel pmovsxwq xmm2, dword ptr [rcx] -660f382411|223344556677885f5f5f5f 64 plan9 PMOVSXWQ 0(CX), X2 -660f382511|223344556677885f5f5f5f 32 intel pmovsxdq xmm2, qword ptr [ecx] -660f382511|223344556677885f5f5f5f 32 plan9 PMOVSXDQ 0(CX), X2 -660f382511|223344556677885f5f5f5f 64 gnu pmovsxdq (%rcx),%xmm2 -660f382511|223344556677885f5f5f5f 64 intel pmovsxdq xmm2, qword ptr [rcx] -660f382511|223344556677885f5f5f5f 64 plan9 PMOVSXDQ 0(CX), X2 -660f382811|223344556677885f5f5f5f 32 intel pmuldq xmm2, xmmword ptr [ecx] -660f382811|223344556677885f5f5f5f 32 plan9 PMULDQ 0(CX), X2 -660f382811|223344556677885f5f5f5f 64 gnu pmuldq (%rcx),%xmm2 -660f382811|223344556677885f5f5f5f 64 intel pmuldq xmm2, xmmword ptr [rcx] -660f382811|223344556677885f5f5f5f 64 plan9 PMULDQ 0(CX), X2 -660f382911|223344556677885f5f5f5f 32 intel pcmpeqq xmm2, xmmword ptr [ecx] -660f382911|223344556677885f5f5f5f 32 plan9 PCMPEQQ 0(CX), X2 -660f382911|223344556677885f5f5f5f 64 gnu pcmpeqq (%rcx),%xmm2 -660f382911|223344556677885f5f5f5f 64 intel pcmpeqq xmm2, xmmword ptr [rcx] -660f382911|223344556677885f5f5f5f 64 plan9 PCMPEQQ 0(CX), X2 -660f382a11|223344556677885f5f5f5f 32 intel movntdqa xmm2, xmmword ptr [ecx] -660f382a11|223344556677885f5f5f5f 32 plan9 MOVNTDQA 0(CX), X2 -660f382a11|223344556677885f5f5f5f 64 gnu movntdqa (%rcx),%xmm2 -660f382a11|223344556677885f5f5f5f 64 intel movntdqa xmm2, xmmword ptr [rcx] -660f382a11|223344556677885f5f5f5f 64 plan9 MOVNTDQA 0(CX), X2 -660f382b11|223344556677885f5f5f5f 32 intel packusdw xmm2, xmmword ptr [ecx] -660f382b11|223344556677885f5f5f5f 32 plan9 PACKUSDW 0(CX), X2 -660f382b11|223344556677885f5f5f5f 64 gnu packusdw (%rcx),%xmm2 -660f382b11|223344556677885f5f5f5f 64 intel packusdw xmm2, xmmword ptr [rcx] -660f382b11|223344556677885f5f5f5f 64 plan9 PACKUSDW 0(CX), X2 -660f383011|223344556677885f5f5f5f 32 intel pmovzxbw xmm2, qword ptr [ecx] -660f383011|223344556677885f5f5f5f 32 plan9 PMOVZXBW 0(CX), X2 -660f383011|223344556677885f5f5f5f 64 gnu pmovzxbw (%rcx),%xmm2 -660f383011|223344556677885f5f5f5f 64 intel pmovzxbw xmm2, qword ptr [rcx] -660f383011|223344556677885f5f5f5f 64 plan9 PMOVZXBW 0(CX), X2 -660f383111|223344556677885f5f5f5f 32 intel pmovzxbd xmm2, dword ptr [ecx] -660f383111|223344556677885f5f5f5f 32 plan9 PMOVZXBD 0(CX), X2 -660f383111|223344556677885f5f5f5f 64 gnu pmovzxbd (%rcx),%xmm2 -660f383111|223344556677885f5f5f5f 64 intel pmovzxbd xmm2, dword ptr [rcx] -660f383111|223344556677885f5f5f5f 64 plan9 PMOVZXBD 0(CX), X2 -660f383211|223344556677885f5f5f5f 32 intel pmovzxbq xmm2, word ptr [ecx] -660f383211|223344556677885f5f5f5f 32 plan9 PMOVZXBQ 0(CX), X2 -660f383211|223344556677885f5f5f5f 64 gnu pmovzxbq (%rcx),%xmm2 -660f383211|223344556677885f5f5f5f 64 intel pmovzxbq xmm2, word ptr [rcx] -660f383211|223344556677885f5f5f5f 64 plan9 PMOVZXBQ 0(CX), X2 -660f383311|223344556677885f5f5f5f 32 intel pmovzxwd xmm2, qword ptr [ecx] -660f383311|223344556677885f5f5f5f 32 plan9 PMOVZXWD 0(CX), X2 -660f383311|223344556677885f5f5f5f 64 gnu pmovzxwd (%rcx),%xmm2 -660f383311|223344556677885f5f5f5f 64 intel pmovzxwd xmm2, qword ptr [rcx] -660f383311|223344556677885f5f5f5f 64 plan9 PMOVZXWD 0(CX), X2 -660f383411|223344556677885f5f5f5f 32 intel pmovzxwq xmm2, dword ptr [ecx] -660f383411|223344556677885f5f5f5f 32 plan9 PMOVZXWQ 0(CX), X2 -660f383411|223344556677885f5f5f5f 64 gnu pmovzxwq (%rcx),%xmm2 -660f383411|223344556677885f5f5f5f 64 intel pmovzxwq xmm2, dword ptr [rcx] -660f383411|223344556677885f5f5f5f 64 plan9 PMOVZXWQ 0(CX), X2 -660f383511|223344556677885f5f5f5f 32 intel pmovzxdq xmm2, qword ptr [ecx] -660f383511|223344556677885f5f5f5f 32 plan9 PMOVZXDQ 0(CX), X2 -660f383511|223344556677885f5f5f5f 64 gnu pmovzxdq (%rcx),%xmm2 -660f383511|223344556677885f5f5f5f 64 intel pmovzxdq xmm2, qword ptr [rcx] -660f383511|223344556677885f5f5f5f 64 plan9 PMOVZXDQ 0(CX), X2 -660f383711|223344556677885f5f5f5f 32 intel pcmpgtq xmm2, xmmword ptr [ecx] -660f383711|223344556677885f5f5f5f 32 plan9 PCMPGTQ 0(CX), X2 -660f383711|223344556677885f5f5f5f 64 gnu pcmpgtq (%rcx),%xmm2 -660f383711|223344556677885f5f5f5f 64 intel pcmpgtq xmm2, xmmword ptr [rcx] -660f383711|223344556677885f5f5f5f 64 plan9 PCMPGTQ 0(CX), X2 -660f383811|223344556677885f5f5f5f 32 intel pminsb xmm2, xmmword ptr [ecx] -660f383811|223344556677885f5f5f5f 32 plan9 PMINSB 0(CX), X2 -660f383811|223344556677885f5f5f5f 64 gnu pminsb (%rcx),%xmm2 -660f383811|223344556677885f5f5f5f 64 intel pminsb xmm2, xmmword ptr [rcx] -660f383811|223344556677885f5f5f5f 64 plan9 PMINSB 0(CX), X2 -660f383911|223344556677885f5f5f5f 32 intel pminsd xmm2, xmmword ptr [ecx] -660f383911|223344556677885f5f5f5f 32 plan9 PMINSD 0(CX), X2 -660f383911|223344556677885f5f5f5f 64 gnu pminsd (%rcx),%xmm2 -660f383911|223344556677885f5f5f5f 64 intel pminsd xmm2, xmmword ptr [rcx] -660f383911|223344556677885f5f5f5f 64 plan9 PMINSD 0(CX), X2 -660f383a11|223344556677885f5f5f5f 32 intel pminuw xmm2, xmmword ptr [ecx] -660f383a11|223344556677885f5f5f5f 32 plan9 PMINUW 0(CX), X2 -660f383a11|223344556677885f5f5f5f 64 gnu pminuw (%rcx),%xmm2 -660f383a11|223344556677885f5f5f5f 64 intel pminuw xmm2, xmmword ptr [rcx] -660f383a11|223344556677885f5f5f5f 64 plan9 PMINUW 0(CX), X2 -660f383b11|223344556677885f5f5f5f 32 intel pminud xmm2, xmmword ptr [ecx] -660f383b11|223344556677885f5f5f5f 32 plan9 PMINUD 0(CX), X2 -660f383b11|223344556677885f5f5f5f 64 gnu pminud (%rcx),%xmm2 -660f383b11|223344556677885f5f5f5f 64 intel pminud xmm2, xmmword ptr [rcx] -660f383b11|223344556677885f5f5f5f 64 plan9 PMINUD 0(CX), X2 -660f383c11|223344556677885f5f5f5f 32 intel pmaxsb xmm2, xmmword ptr [ecx] -660f383c11|223344556677885f5f5f5f 32 plan9 PMAXSB 0(CX), X2 -660f383c11|223344556677885f5f5f5f 64 gnu pmaxsb (%rcx),%xmm2 -660f383c11|223344556677885f5f5f5f 64 intel pmaxsb xmm2, xmmword ptr [rcx] -660f383c11|223344556677885f5f5f5f 64 plan9 PMAXSB 0(CX), X2 -660f383d11|223344556677885f5f5f5f 32 intel pmaxsd xmm2, xmmword ptr [ecx] -660f383d11|223344556677885f5f5f5f 32 plan9 PMAXSD 0(CX), X2 -660f383d11|223344556677885f5f5f5f 64 gnu pmaxsd (%rcx),%xmm2 -660f383d11|223344556677885f5f5f5f 64 intel pmaxsd xmm2, xmmword ptr [rcx] -660f383d11|223344556677885f5f5f5f 64 plan9 PMAXSD 0(CX), X2 -660f383e11|223344556677885f5f5f5f 32 intel pmaxuw xmm2, xmmword ptr [ecx] -660f383e11|223344556677885f5f5f5f 32 plan9 PMAXUW 0(CX), X2 -660f383e11|223344556677885f5f5f5f 64 gnu pmaxuw (%rcx),%xmm2 -660f383e11|223344556677885f5f5f5f 64 intel pmaxuw xmm2, xmmword ptr [rcx] -660f383e11|223344556677885f5f5f5f 64 plan9 PMAXUW 0(CX), X2 -660f383f11|223344556677885f5f5f5f 32 intel pmaxud xmm2, xmmword ptr [ecx] -660f383f11|223344556677885f5f5f5f 32 plan9 PMAXUD 0(CX), X2 -660f383f11|223344556677885f5f5f5f 64 gnu pmaxud (%rcx),%xmm2 -660f383f11|223344556677885f5f5f5f 64 intel pmaxud xmm2, xmmword ptr [rcx] -660f383f11|223344556677885f5f5f5f 64 plan9 PMAXUD 0(CX), X2 -660f384011|223344556677885f5f5f5f 32 intel pmulld xmm2, xmmword ptr [ecx] -660f384011|223344556677885f5f5f5f 32 plan9 PMULLD 0(CX), X2 -660f384011|223344556677885f5f5f5f 64 gnu pmulld (%rcx),%xmm2 -660f384011|223344556677885f5f5f5f 64 intel pmulld xmm2, xmmword ptr [rcx] -660f384011|223344556677885f5f5f5f 64 plan9 PMULLD 0(CX), X2 -660f384111|223344556677885f5f5f5f 32 intel phminposuw xmm2, xmmword ptr [ecx] -660f384111|223344556677885f5f5f5f 32 plan9 PHMINPOSUW 0(CX), X2 -660f384111|223344556677885f5f5f5f 64 gnu phminposuw (%rcx),%xmm2 -660f384111|223344556677885f5f5f5f 64 intel phminposuw xmm2, xmmword ptr [rcx] -660f384111|223344556677885f5f5f5f 64 plan9 PHMINPOSUW 0(CX), X2 -660f388211|223344556677885f5f5f5f 32 intel invpcid edx, xmmword ptr [ecx] -660f388211|223344556677885f5f5f5f 32 plan9 INVPCID 0(CX), DX -660f388211|223344556677885f5f5f5f 64 gnu invpcid (%rcx),%rdx -660f388211|223344556677885f5f5f5f 64 intel invpcid rdx, xmmword ptr [rcx] -660f388211|223344556677885f5f5f5f 64 plan9 INVPCID 0(CX), DX -660f38db11|223344556677885f5f5f5f 32 intel aesimc xmm2, xmmword ptr [ecx] -660f38db11|223344556677885f5f5f5f 32 plan9 AESIMC 0(CX), X2 -660f38db11|223344556677885f5f5f5f 64 gnu aesimc (%rcx),%xmm2 -660f38db11|223344556677885f5f5f5f 64 intel aesimc xmm2, xmmword ptr [rcx] -660f38db11|223344556677885f5f5f5f 64 plan9 AESIMC 0(CX), X2 -660f38dc11|223344556677885f5f5f5f 32 intel aesenc xmm2, xmmword ptr [ecx] -660f38dc11|223344556677885f5f5f5f 32 plan9 AESENC 0(CX), X2 -660f38dc11|223344556677885f5f5f5f 64 gnu aesenc (%rcx),%xmm2 -660f38dc11|223344556677885f5f5f5f 64 intel aesenc xmm2, xmmword ptr [rcx] -660f38dc11|223344556677885f5f5f5f 64 plan9 AESENC 0(CX), X2 -660f38dd11|223344556677885f5f5f5f 32 intel aesenclast xmm2, xmmword ptr [ecx] -660f38dd11|223344556677885f5f5f5f 32 plan9 AESENCLAST 0(CX), X2 -660f38dd11|223344556677885f5f5f5f 64 gnu aesenclast (%rcx),%xmm2 -660f38dd11|223344556677885f5f5f5f 64 intel aesenclast xmm2, xmmword ptr [rcx] -660f38dd11|223344556677885f5f5f5f 64 plan9 AESENCLAST 0(CX), X2 -660f38de11|223344556677885f5f5f5f 32 intel aesdec xmm2, xmmword ptr [ecx] -660f38de11|223344556677885f5f5f5f 32 plan9 AESDEC 0(CX), X2 -660f38de11|223344556677885f5f5f5f 64 gnu aesdec (%rcx),%xmm2 -660f38de11|223344556677885f5f5f5f 64 intel aesdec xmm2, xmmword ptr [rcx] -660f38de11|223344556677885f5f5f5f 64 plan9 AESDEC 0(CX), X2 -660f38df11|223344556677885f5f5f5f 32 intel aesdeclast xmm2, xmmword ptr [ecx] -660f38df11|223344556677885f5f5f5f 32 plan9 AESDECLAST 0(CX), X2 -660f38df11|223344556677885f5f5f5f 64 gnu aesdeclast (%rcx),%xmm2 -660f38df11|223344556677885f5f5f5f 64 intel aesdeclast xmm2, xmmword ptr [rcx] -660f38df11|223344556677885f5f5f5f 64 plan9 AESDECLAST 0(CX), X2 -660f3a081122|3344556677885f5f5f5f 32 intel roundps xmm2, xmmword ptr [ecx], 0x22 -660f3a081122|3344556677885f5f5f5f 32 plan9 ROUNDPS $0x22, 0(CX), X2 -660f3a081122|3344556677885f5f5f5f 64 gnu roundps $0x22,(%rcx),%xmm2 -660f3a081122|3344556677885f5f5f5f 64 intel roundps xmm2, xmmword ptr [rcx], 0x22 -660f3a081122|3344556677885f5f5f5f 64 plan9 ROUNDPS $0x22, 0(CX), X2 -660f3a091122|3344556677885f5f5f5f 32 intel roundpd xmm2, xmmword ptr [ecx], 0x22 -660f3a091122|3344556677885f5f5f5f 32 plan9 ROUNDPD $0x22, 0(CX), X2 -660f3a091122|3344556677885f5f5f5f 64 gnu roundpd $0x22,(%rcx),%xmm2 -660f3a091122|3344556677885f5f5f5f 64 intel roundpd xmm2, xmmword ptr [rcx], 0x22 -660f3a091122|3344556677885f5f5f5f 64 plan9 ROUNDPD $0x22, 0(CX), X2 -660f3a0a1122|3344556677885f5f5f5f 32 intel roundss xmm2, dword ptr [ecx], 0x22 -660f3a0a1122|3344556677885f5f5f5f 32 plan9 ROUNDSS $0x22, 0(CX), X2 -660f3a0a1122|3344556677885f5f5f5f 64 gnu roundss $0x22,(%rcx),%xmm2 -660f3a0a1122|3344556677885f5f5f5f 64 intel roundss xmm2, dword ptr [rcx], 0x22 -660f3a0a1122|3344556677885f5f5f5f 64 plan9 ROUNDSS $0x22, 0(CX), X2 -660f3a0b1122|3344556677885f5f5f5f 32 intel roundsd xmm2, qword ptr [ecx], 0x22 -660f3a0b1122|3344556677885f5f5f5f 32 plan9 ROUNDSD $0x22, 0(CX), X2 -660f3a0b1122|3344556677885f5f5f5f 64 gnu roundsd $0x22,(%rcx),%xmm2 -660f3a0b1122|3344556677885f5f5f5f 64 intel roundsd xmm2, qword ptr [rcx], 0x22 -660f3a0b1122|3344556677885f5f5f5f 64 plan9 ROUNDSD $0x22, 0(CX), X2 -660f3a0c1122|3344556677885f5f5f5f 32 intel blendps xmm2, xmmword ptr [ecx], 0x22 -660f3a0c1122|3344556677885f5f5f5f 32 plan9 BLENDPS $0x22, 0(CX), X2 -660f3a0c1122|3344556677885f5f5f5f 64 gnu blendps $0x22,(%rcx),%xmm2 -660f3a0c1122|3344556677885f5f5f5f 64 intel blendps xmm2, xmmword ptr [rcx], 0x22 -660f3a0c1122|3344556677885f5f5f5f 64 plan9 BLENDPS $0x22, 0(CX), X2 -660f3a0d1122|3344556677885f5f5f5f 32 intel blendpd xmm2, xmmword ptr [ecx], 0x22 -660f3a0d1122|3344556677885f5f5f5f 32 plan9 BLENDPD $0x22, 0(CX), X2 -660f3a0d1122|3344556677885f5f5f5f 64 gnu blendpd $0x22,(%rcx),%xmm2 -660f3a0d1122|3344556677885f5f5f5f 64 intel blendpd xmm2, xmmword ptr [rcx], 0x22 -660f3a0d1122|3344556677885f5f5f5f 64 plan9 BLENDPD $0x22, 0(CX), X2 -660f3a0e1122|3344556677885f5f5f5f 32 intel pblendw xmm2, xmmword ptr [ecx], 0x22 -660f3a0e1122|3344556677885f5f5f5f 32 plan9 PBLENDW $0x22, 0(CX), X2 -660f3a0e1122|3344556677885f5f5f5f 64 gnu pblendw $0x22,(%rcx),%xmm2 -660f3a0e1122|3344556677885f5f5f5f 64 intel pblendw xmm2, xmmword ptr [rcx], 0x22 -660f3a0e1122|3344556677885f5f5f5f 64 plan9 PBLENDW $0x22, 0(CX), X2 -660f3a0f1122|3344556677885f5f5f5f 32 intel palignr xmm2, xmmword ptr [ecx], 0x22 -660f3a0f1122|3344556677885f5f5f5f 32 plan9 PALIGNR $0x22, 0(CX), X2 -660f3a0f1122|3344556677885f5f5f5f 64 gnu palignr $0x22,(%rcx),%xmm2 -660f3a0f1122|3344556677885f5f5f5f 64 intel palignr xmm2, xmmword ptr [rcx], 0x22 -660f3a0f1122|3344556677885f5f5f5f 64 plan9 PALIGNR $0x22, 0(CX), X2 -660f3a141122|3344556677885f5f5f5f 32 intel pextrb byte ptr [ecx], xmm2, 0x22 -660f3a141122|3344556677885f5f5f5f 32 plan9 PEXTRB $0x22, X2, 0(CX) -660f3a141122|3344556677885f5f5f5f 64 gnu pextrb $0x22,%xmm2,(%rcx) -660f3a141122|3344556677885f5f5f5f 64 intel pextrb byte ptr [rcx], xmm2, 0x22 -660f3a141122|3344556677885f5f5f5f 64 plan9 PEXTRB $0x22, X2, 0(CX) -660f3a151122|3344556677885f5f5f5f 32 intel pextrw word ptr [ecx], xmm2, 0x22 -660f3a151122|3344556677885f5f5f5f 32 plan9 PEXTRW $0x22, X2, 0(CX) -660f3a151122|3344556677885f5f5f5f 64 gnu pextrw $0x22,%xmm2,(%rcx) -660f3a151122|3344556677885f5f5f5f 64 intel pextrw word ptr [rcx], xmm2, 0x22 -660f3a151122|3344556677885f5f5f5f 64 plan9 PEXTRW $0x22, X2, 0(CX) -660f3a161122|3344556677885f5f5f5f 32 intel pextrd dword ptr [ecx], xmm2, 0x22 -660f3a161122|3344556677885f5f5f5f 32 plan9 PEXTRD $0x22, X2, 0(CX) -660f3a161122|3344556677885f5f5f5f 64 gnu pextrd $0x22,%xmm2,(%rcx) -660f3a161122|3344556677885f5f5f5f 64 intel pextrd dword ptr [rcx], xmm2, 0x22 -660f3a161122|3344556677885f5f5f5f 64 plan9 PEXTRD $0x22, X2, 0(CX) -660f3a171122|3344556677885f5f5f5f 32 intel extractps dword ptr [ecx], xmm2, 0x22 -660f3a171122|3344556677885f5f5f5f 32 plan9 EXTRACTPS $0x22, X2, 0(CX) -660f3a171122|3344556677885f5f5f5f 64 gnu extractps $0x22,%xmm2,(%rcx) -660f3a171122|3344556677885f5f5f5f 64 intel extractps dword ptr [rcx], xmm2, 0x22 -660f3a171122|3344556677885f5f5f5f 64 plan9 EXTRACTPS $0x22, X2, 0(CX) -660f3a201122|3344556677885f5f5f5f 32 intel pinsrb xmm2, byte ptr [ecx], 0x22 -660f3a201122|3344556677885f5f5f5f 32 plan9 PINSRB $0x22, 0(CX), X2 -660f3a201122|3344556677885f5f5f5f 64 gnu pinsrb $0x22,(%rcx),%xmm2 -660f3a201122|3344556677885f5f5f5f 64 intel pinsrb xmm2, byte ptr [rcx], 0x22 -660f3a201122|3344556677885f5f5f5f 64 plan9 PINSRB $0x22, 0(CX), X2 -660f3a211122|3344556677885f5f5f5f 32 intel insertps xmm2, dword ptr [ecx], 0x22 -660f3a211122|3344556677885f5f5f5f 32 plan9 INSERTPS $0x22, 0(CX), X2 -660f3a211122|3344556677885f5f5f5f 64 gnu insertps $0x22,(%rcx),%xmm2 -660f3a211122|3344556677885f5f5f5f 64 intel insertps xmm2, dword ptr [rcx], 0x22 -660f3a211122|3344556677885f5f5f5f 64 plan9 INSERTPS $0x22, 0(CX), X2 -660f3a221122|3344556677885f5f5f5f 32 intel pinsrd xmm2, dword ptr [ecx], 0x22 -660f3a221122|3344556677885f5f5f5f 32 plan9 PINSRD $0x22, 0(CX), X2 -660f3a221122|3344556677885f5f5f5f 64 gnu pinsrd $0x22,(%rcx),%xmm2 -660f3a221122|3344556677885f5f5f5f 64 intel pinsrd xmm2, dword ptr [rcx], 0x22 -660f3a221122|3344556677885f5f5f5f 64 plan9 PINSRD $0x22, 0(CX), X2 -660f3a401122|3344556677885f5f5f5f 32 intel dpps xmm2, xmmword ptr [ecx], 0x22 -660f3a401122|3344556677885f5f5f5f 32 plan9 DPPS $0x22, 0(CX), X2 -660f3a401122|3344556677885f5f5f5f 64 gnu dpps $0x22,(%rcx),%xmm2 -660f3a401122|3344556677885f5f5f5f 64 intel dpps xmm2, xmmword ptr [rcx], 0x22 -660f3a401122|3344556677885f5f5f5f 64 plan9 DPPS $0x22, 0(CX), X2 -660f3a411122|3344556677885f5f5f5f 32 intel dppd xmm2, xmmword ptr [ecx], 0x22 -660f3a411122|3344556677885f5f5f5f 32 plan9 DPPD $0x22, 0(CX), X2 -660f3a411122|3344556677885f5f5f5f 64 gnu dppd $0x22,(%rcx),%xmm2 -660f3a411122|3344556677885f5f5f5f 64 intel dppd xmm2, xmmword ptr [rcx], 0x22 -660f3a411122|3344556677885f5f5f5f 64 plan9 DPPD $0x22, 0(CX), X2 -660f3a421122|3344556677885f5f5f5f 32 intel mpsadbw xmm2, xmmword ptr [ecx], 0x22 -660f3a421122|3344556677885f5f5f5f 32 plan9 MPSADBW $0x22, 0(CX), X2 -660f3a421122|3344556677885f5f5f5f 64 gnu mpsadbw $0x22,(%rcx),%xmm2 -660f3a421122|3344556677885f5f5f5f 64 intel mpsadbw xmm2, xmmword ptr [rcx], 0x22 -660f3a421122|3344556677885f5f5f5f 64 plan9 MPSADBW $0x22, 0(CX), X2 -660f3a441122|3344556677885f5f5f5f 32 intel pclmulqdq xmm2, xmmword ptr [ecx], 0x22 -660f3a441122|3344556677885f5f5f5f 32 plan9 PCLMULQDQ $0x22, 0(CX), X2 -660f3a441122|3344556677885f5f5f5f 64 gnu pclmulqdq $0x22,(%rcx),%xmm2 -660f3a441122|3344556677885f5f5f5f 64 intel pclmulqdq xmm2, xmmword ptr [rcx], 0x22 -660f3a441122|3344556677885f5f5f5f 64 plan9 PCLMULQDQ $0x22, 0(CX), X2 -660f3a601122|3344556677885f5f5f5f 32 intel pcmpestrm xmm2, xmmword ptr [ecx], 0x22 -660f3a601122|3344556677885f5f5f5f 32 plan9 PCMPESTRM $0x22, 0(CX), X2 -660f3a601122|3344556677885f5f5f5f 64 gnu pcmpestrm $0x22,(%rcx),%xmm2 -660f3a601122|3344556677885f5f5f5f 64 intel pcmpestrm xmm2, xmmword ptr [rcx], 0x22 -660f3a601122|3344556677885f5f5f5f 64 plan9 PCMPESTRM $0x22, 0(CX), X2 -660f3a611122|3344556677885f5f5f5f 32 intel pcmpestri xmm2, xmmword ptr [ecx], 0x22 -660f3a611122|3344556677885f5f5f5f 32 plan9 PCMPESTRI $0x22, 0(CX), X2 -660f3a611122|3344556677885f5f5f5f 64 gnu pcmpestri $0x22,(%rcx),%xmm2 -660f3a611122|3344556677885f5f5f5f 64 intel pcmpestri xmm2, xmmword ptr [rcx], 0x22 -660f3a611122|3344556677885f5f5f5f 64 plan9 PCMPESTRI $0x22, 0(CX), X2 -660f3a621122|3344556677885f5f5f5f 32 intel pcmpistrm xmm2, xmmword ptr [ecx], 0x22 -660f3a621122|3344556677885f5f5f5f 32 plan9 PCMPISTRM $0x22, 0(CX), X2 -660f3a621122|3344556677885f5f5f5f 64 gnu pcmpistrm $0x22,(%rcx),%xmm2 -660f3a621122|3344556677885f5f5f5f 64 intel pcmpistrm xmm2, xmmword ptr [rcx], 0x22 -660f3a621122|3344556677885f5f5f5f 64 plan9 PCMPISTRM $0x22, 0(CX), X2 -660f3a631122|3344556677885f5f5f5f 32 intel pcmpistri xmm2, xmmword ptr [ecx], 0x22 -660f3a631122|3344556677885f5f5f5f 32 plan9 PCMPISTRI $0x22, 0(CX), X2 -660f3a631122|3344556677885f5f5f5f 64 gnu pcmpistri $0x22,(%rcx),%xmm2 -660f3a631122|3344556677885f5f5f5f 64 intel pcmpistri xmm2, xmmword ptr [rcx], 0x22 -660f3a631122|3344556677885f5f5f5f 64 plan9 PCMPISTRI $0x22, 0(CX), X2 -660f3adf1122|3344556677885f5f5f5f 32 intel aeskeygenassist xmm2, xmmword ptr [ecx], 0x22 -660f3adf1122|3344556677885f5f5f5f 32 plan9 AESKEYGENASSIST $0x22, 0(CX), X2 -660f3adf1122|3344556677885f5f5f5f 64 gnu aeskeygenassist $0x22,(%rcx),%xmm2 -660f3adf1122|3344556677885f5f5f5f 64 intel aeskeygenassist xmm2, xmmword ptr [rcx], 0x22 -660f3adf1122|3344556677885f5f5f5f 64 plan9 AESKEYGENASSIST $0x22, 0(CX), X2 -660f4011|223344556677885f5f5f5f5f 32 intel cmovo dx, word ptr [ecx] -660f4011|223344556677885f5f5f5f5f 32 plan9 CMOVO 0(CX), DX -660f4011|223344556677885f5f5f5f5f 64 gnu cmovo (%rcx),%dx -660f4011|223344556677885f5f5f5f5f 64 intel cmovo dx, word ptr [rcx] -660f4011|223344556677885f5f5f5f5f 64 plan9 CMOVO 0(CX), DX -660f4111|223344556677885f5f5f5f5f 32 intel cmovno dx, word ptr [ecx] -660f4111|223344556677885f5f5f5f5f 32 plan9 CMOVNO 0(CX), DX -660f4111|223344556677885f5f5f5f5f 64 gnu cmovno (%rcx),%dx -660f4111|223344556677885f5f5f5f5f 64 intel cmovno dx, word ptr [rcx] -660f4111|223344556677885f5f5f5f5f 64 plan9 CMOVNO 0(CX), DX -660f4211|223344556677885f5f5f5f5f 32 intel cmovb dx, word ptr [ecx] -660f4211|223344556677885f5f5f5f5f 32 plan9 CMOVB 0(CX), DX -660f4211|223344556677885f5f5f5f5f 64 gnu cmovb (%rcx),%dx -660f4211|223344556677885f5f5f5f5f 64 intel cmovb dx, word ptr [rcx] -660f4211|223344556677885f5f5f5f5f 64 plan9 CMOVB 0(CX), DX -660f4311|223344556677885f5f5f5f5f 32 intel cmovnb dx, word ptr [ecx] -660f4311|223344556677885f5f5f5f5f 32 plan9 CMOVAE 0(CX), DX -660f4311|223344556677885f5f5f5f5f 64 gnu cmovae (%rcx),%dx -660f4311|223344556677885f5f5f5f5f 64 intel cmovnb dx, word ptr [rcx] -660f4311|223344556677885f5f5f5f5f 64 plan9 CMOVAE 0(CX), DX -660f4411|223344556677885f5f5f5f5f 32 intel cmovz dx, word ptr [ecx] -660f4411|223344556677885f5f5f5f5f 32 plan9 CMOVE 0(CX), DX -660f4411|223344556677885f5f5f5f5f 64 gnu cmove (%rcx),%dx -660f4411|223344556677885f5f5f5f5f 64 intel cmovz dx, word ptr [rcx] -660f4411|223344556677885f5f5f5f5f 64 plan9 CMOVE 0(CX), DX -660f4511|223344556677885f5f5f5f5f 32 intel cmovnz dx, word ptr [ecx] -660f4511|223344556677885f5f5f5f5f 32 plan9 CMOVNE 0(CX), DX -660f4511|223344556677885f5f5f5f5f 64 gnu cmovne (%rcx),%dx -660f4511|223344556677885f5f5f5f5f 64 intel cmovnz dx, word ptr [rcx] -660f4511|223344556677885f5f5f5f5f 64 plan9 CMOVNE 0(CX), DX -660f4611|223344556677885f5f5f5f5f 32 intel cmovbe dx, word ptr [ecx] -660f4611|223344556677885f5f5f5f5f 32 plan9 CMOVBE 0(CX), DX -660f4611|223344556677885f5f5f5f5f 64 gnu cmovbe (%rcx),%dx -660f4611|223344556677885f5f5f5f5f 64 intel cmovbe dx, word ptr [rcx] -660f4611|223344556677885f5f5f5f5f 64 plan9 CMOVBE 0(CX), DX -660f4711|223344556677885f5f5f5f5f 32 intel cmovnbe dx, word ptr [ecx] -660f4711|223344556677885f5f5f5f5f 32 plan9 CMOVA 0(CX), DX -660f4711|223344556677885f5f5f5f5f 64 gnu cmova (%rcx),%dx -660f4711|223344556677885f5f5f5f5f 64 intel cmovnbe dx, word ptr [rcx] -660f4711|223344556677885f5f5f5f5f 64 plan9 CMOVA 0(CX), DX -660f4811|223344556677885f5f5f5f5f 32 intel cmovs dx, word ptr [ecx] -660f4811|223344556677885f5f5f5f5f 32 plan9 CMOVS 0(CX), DX -660f4811|223344556677885f5f5f5f5f 64 gnu cmovs (%rcx),%dx -660f4811|223344556677885f5f5f5f5f 64 intel cmovs dx, word ptr [rcx] -660f4811|223344556677885f5f5f5f5f 64 plan9 CMOVS 0(CX), DX -660f4911|223344556677885f5f5f5f5f 32 intel cmovns dx, word ptr [ecx] -660f4911|223344556677885f5f5f5f5f 32 plan9 CMOVNS 0(CX), DX -660f4911|223344556677885f5f5f5f5f 64 gnu cmovns (%rcx),%dx -660f4911|223344556677885f5f5f5f5f 64 intel cmovns dx, word ptr [rcx] -660f4911|223344556677885f5f5f5f5f 64 plan9 CMOVNS 0(CX), DX -660f4a11|223344556677885f5f5f5f5f 32 intel cmovp dx, word ptr [ecx] -660f4a11|223344556677885f5f5f5f5f 32 plan9 CMOVP 0(CX), DX -660f4a11|223344556677885f5f5f5f5f 64 gnu cmovp (%rcx),%dx -660f4a11|223344556677885f5f5f5f5f 64 intel cmovp dx, word ptr [rcx] -660f4a11|223344556677885f5f5f5f5f 64 plan9 CMOVP 0(CX), DX -660f4b11|223344556677885f5f5f5f5f 32 intel cmovnp dx, word ptr [ecx] -660f4b11|223344556677885f5f5f5f5f 32 plan9 CMOVNP 0(CX), DX -660f4b11|223344556677885f5f5f5f5f 64 gnu cmovnp (%rcx),%dx -660f4b11|223344556677885f5f5f5f5f 64 intel cmovnp dx, word ptr [rcx] -660f4b11|223344556677885f5f5f5f5f 64 plan9 CMOVNP 0(CX), DX -660f4c11|223344556677885f5f5f5f5f 32 intel cmovl dx, word ptr [ecx] -660f4c11|223344556677885f5f5f5f5f 32 plan9 CMOVL 0(CX), DX -660f4c11|223344556677885f5f5f5f5f 64 gnu cmovl (%rcx),%dx -660f4c11|223344556677885f5f5f5f5f 64 intel cmovl dx, word ptr [rcx] -660f4c11|223344556677885f5f5f5f5f 64 plan9 CMOVL 0(CX), DX -660f4d11|223344556677885f5f5f5f5f 32 intel cmovnl dx, word ptr [ecx] -660f4d11|223344556677885f5f5f5f5f 32 plan9 CMOVGE 0(CX), DX -660f4d11|223344556677885f5f5f5f5f 64 gnu cmovge (%rcx),%dx -660f4d11|223344556677885f5f5f5f5f 64 intel cmovnl dx, word ptr [rcx] -660f4d11|223344556677885f5f5f5f5f 64 plan9 CMOVGE 0(CX), DX -660f4e11|223344556677885f5f5f5f5f 32 intel cmovle dx, word ptr [ecx] -660f4e11|223344556677885f5f5f5f5f 32 plan9 CMOVLE 0(CX), DX -660f4e11|223344556677885f5f5f5f5f 64 gnu cmovle (%rcx),%dx -660f4e11|223344556677885f5f5f5f5f 64 intel cmovle dx, word ptr [rcx] -660f4e11|223344556677885f5f5f5f5f 64 plan9 CMOVLE 0(CX), DX -660f4f11|223344556677885f5f5f5f5f 32 intel cmovnle dx, word ptr [ecx] -660f4f11|223344556677885f5f5f5f5f 32 plan9 CMOVG 0(CX), DX -660f4f11|223344556677885f5f5f5f5f 64 gnu cmovg (%rcx),%dx -660f4f11|223344556677885f5f5f5f5f 64 intel cmovnle dx, word ptr [rcx] -660f4f11|223344556677885f5f5f5f5f 64 plan9 CMOVG 0(CX), DX -660f50c0|11223344556677885f5f5f5f 32 intel movmskpd eax, xmm0 -660f50c0|11223344556677885f5f5f5f 32 plan9 MOVMSKPD X0, AX -660f50c0|11223344556677885f5f5f5f 64 gnu movmskpd %xmm0,%eax -660f50c0|11223344556677885f5f5f5f 64 intel movmskpd eax, xmm0 -660f50c0|11223344556677885f5f5f5f 64 plan9 MOVMSKPD X0, AX -660f5111|223344556677885f5f5f5f5f 32 intel sqrtpd xmm2, xmmword ptr [ecx] -660f5111|223344556677885f5f5f5f5f 32 plan9 SQRTPD 0(CX), X2 -660f5111|223344556677885f5f5f5f5f 64 gnu sqrtpd (%rcx),%xmm2 -660f5111|223344556677885f5f5f5f5f 64 intel sqrtpd xmm2, xmmword ptr [rcx] -660f5111|223344556677885f5f5f5f5f 64 plan9 SQRTPD 0(CX), X2 -660f5411|223344556677885f5f5f5f5f 32 intel andpd xmm2, xmmword ptr [ecx] -660f5411|223344556677885f5f5f5f5f 32 plan9 ANDPD 0(CX), X2 -660f5411|223344556677885f5f5f5f5f 64 gnu andpd (%rcx),%xmm2 -660f5411|223344556677885f5f5f5f5f 64 intel andpd xmm2, xmmword ptr [rcx] -660f5411|223344556677885f5f5f5f5f 64 plan9 ANDPD 0(CX), X2 -660f5511|223344556677885f5f5f5f5f 32 intel andnpd xmm2, xmmword ptr [ecx] -660f5511|223344556677885f5f5f5f5f 32 plan9 ANDNPD 0(CX), X2 -660f5511|223344556677885f5f5f5f5f 64 gnu andnpd (%rcx),%xmm2 -660f5511|223344556677885f5f5f5f5f 64 intel andnpd xmm2, xmmword ptr [rcx] -660f5511|223344556677885f5f5f5f5f 64 plan9 ANDNPD 0(CX), X2 -660f5611|223344556677885f5f5f5f5f 32 intel orpd xmm2, xmmword ptr [ecx] -660f5611|223344556677885f5f5f5f5f 32 plan9 ORPD 0(CX), X2 -660f5611|223344556677885f5f5f5f5f 64 gnu orpd (%rcx),%xmm2 -660f5611|223344556677885f5f5f5f5f 64 intel orpd xmm2, xmmword ptr [rcx] -660f5611|223344556677885f5f5f5f5f 64 plan9 ORPD 0(CX), X2 -660f5711|223344556677885f5f5f5f5f 32 intel xorpd xmm2, xmmword ptr [ecx] -660f5711|223344556677885f5f5f5f5f 32 plan9 XORPD 0(CX), X2 -660f5711|223344556677885f5f5f5f5f 64 gnu xorpd (%rcx),%xmm2 -660f5711|223344556677885f5f5f5f5f 64 intel xorpd xmm2, xmmword ptr [rcx] -660f5711|223344556677885f5f5f5f5f 64 plan9 XORPD 0(CX), X2 -660f5811|223344556677885f5f5f5f5f 32 intel addpd xmm2, xmmword ptr [ecx] -660f5811|223344556677885f5f5f5f5f 32 plan9 ADDPD 0(CX), X2 -660f5811|223344556677885f5f5f5f5f 64 gnu addpd (%rcx),%xmm2 -660f5811|223344556677885f5f5f5f5f 64 intel addpd xmm2, xmmword ptr [rcx] -660f5811|223344556677885f5f5f5f5f 64 plan9 ADDPD 0(CX), X2 -660f5911|223344556677885f5f5f5f5f 32 intel mulpd xmm2, xmmword ptr [ecx] -660f5911|223344556677885f5f5f5f5f 32 plan9 MULPD 0(CX), X2 -660f5911|223344556677885f5f5f5f5f 64 gnu mulpd (%rcx),%xmm2 -660f5911|223344556677885f5f5f5f5f 64 intel mulpd xmm2, xmmword ptr [rcx] -660f5911|223344556677885f5f5f5f5f 64 plan9 MULPD 0(CX), X2 -660f5a11|223344556677885f5f5f5f5f 32 intel cvtpd2ps xmm2, xmmword ptr [ecx] -660f5a11|223344556677885f5f5f5f5f 32 plan9 CVTPD2PS 0(CX), X2 -660f5a11|223344556677885f5f5f5f5f 64 gnu cvtpd2ps (%rcx),%xmm2 -660f5a11|223344556677885f5f5f5f5f 64 intel cvtpd2ps xmm2, xmmword ptr [rcx] -660f5a11|223344556677885f5f5f5f5f 64 plan9 CVTPD2PS 0(CX), X2 -660f5b11|223344556677885f5f5f5f5f 32 intel cvtps2dq xmm2, xmmword ptr [ecx] -660f5b11|223344556677885f5f5f5f5f 32 plan9 CVTPS2DQ 0(CX), X2 -660f5b11|223344556677885f5f5f5f5f 64 gnu cvtps2dq (%rcx),%xmm2 -660f5b11|223344556677885f5f5f5f5f 64 intel cvtps2dq xmm2, xmmword ptr [rcx] -660f5b11|223344556677885f5f5f5f5f 64 plan9 CVTPS2DQ 0(CX), X2 -660f5c11|223344556677885f5f5f5f5f 32 intel subpd xmm2, xmmword ptr [ecx] -660f5c11|223344556677885f5f5f5f5f 32 plan9 SUBPD 0(CX), X2 -660f5c11|223344556677885f5f5f5f5f 64 gnu subpd (%rcx),%xmm2 -660f5c11|223344556677885f5f5f5f5f 64 intel subpd xmm2, xmmword ptr [rcx] -660f5c11|223344556677885f5f5f5f5f 64 plan9 SUBPD 0(CX), X2 -660f5d11|223344556677885f5f5f5f5f 32 intel minpd xmm2, xmmword ptr [ecx] -660f5d11|223344556677885f5f5f5f5f 32 plan9 MINPD 0(CX), X2 -660f5d11|223344556677885f5f5f5f5f 64 gnu minpd (%rcx),%xmm2 -660f5d11|223344556677885f5f5f5f5f 64 intel minpd xmm2, xmmword ptr [rcx] -660f5d11|223344556677885f5f5f5f5f 64 plan9 MINPD 0(CX), X2 -660f5e11|223344556677885f5f5f5f5f 32 intel divpd xmm2, xmmword ptr [ecx] -660f5e11|223344556677885f5f5f5f5f 32 plan9 DIVPD 0(CX), X2 -660f5e11|223344556677885f5f5f5f5f 64 gnu divpd (%rcx),%xmm2 -660f5e11|223344556677885f5f5f5f5f 64 intel divpd xmm2, xmmword ptr [rcx] -660f5e11|223344556677885f5f5f5f5f 64 plan9 DIVPD 0(CX), X2 -660f5f11|223344556677885f5f5f5f5f 32 intel maxpd xmm2, xmmword ptr [ecx] -660f5f11|223344556677885f5f5f5f5f 32 plan9 MAXPD 0(CX), X2 -660f5f11|223344556677885f5f5f5f5f 64 gnu maxpd (%rcx),%xmm2 -660f5f11|223344556677885f5f5f5f5f 64 intel maxpd xmm2, xmmword ptr [rcx] -660f5f11|223344556677885f5f5f5f5f 64 plan9 MAXPD 0(CX), X2 -660f6011|223344556677885f5f5f5f5f 32 intel punpcklbw xmm2, xmmword ptr [ecx] -660f6011|223344556677885f5f5f5f5f 32 plan9 PUNPCKLBW 0(CX), X2 -660f6011|223344556677885f5f5f5f5f 64 gnu punpcklbw (%rcx),%xmm2 -660f6011|223344556677885f5f5f5f5f 64 intel punpcklbw xmm2, xmmword ptr [rcx] -660f6011|223344556677885f5f5f5f5f 64 plan9 PUNPCKLBW 0(CX), X2 -660f6111|223344556677885f5f5f5f5f 32 intel punpcklwd xmm2, xmmword ptr [ecx] -660f6111|223344556677885f5f5f5f5f 32 plan9 PUNPCKLWD 0(CX), X2 -660f6111|223344556677885f5f5f5f5f 64 gnu punpcklwd (%rcx),%xmm2 -660f6111|223344556677885f5f5f5f5f 64 intel punpcklwd xmm2, xmmword ptr [rcx] -660f6111|223344556677885f5f5f5f5f 64 plan9 PUNPCKLWD 0(CX), X2 -660f6211|223344556677885f5f5f5f5f 32 intel punpckldq xmm2, xmmword ptr [ecx] -660f6211|223344556677885f5f5f5f5f 32 plan9 PUNPCKLDQ 0(CX), X2 -660f6211|223344556677885f5f5f5f5f 64 gnu punpckldq (%rcx),%xmm2 -660f6211|223344556677885f5f5f5f5f 64 intel punpckldq xmm2, xmmword ptr [rcx] -660f6211|223344556677885f5f5f5f5f 64 plan9 PUNPCKLDQ 0(CX), X2 -660f6311|223344556677885f5f5f5f5f 32 intel packsswb xmm2, xmmword ptr [ecx] -660f6311|223344556677885f5f5f5f5f 32 plan9 PACKSSWB 0(CX), X2 -660f6311|223344556677885f5f5f5f5f 64 gnu packsswb (%rcx),%xmm2 -660f6311|223344556677885f5f5f5f5f 64 intel packsswb xmm2, xmmword ptr [rcx] -660f6311|223344556677885f5f5f5f5f 64 plan9 PACKSSWB 0(CX), X2 -660f6411|223344556677885f5f5f5f5f 32 intel pcmpgtb xmm2, xmmword ptr [ecx] -660f6411|223344556677885f5f5f5f5f 32 plan9 PCMPGTB 0(CX), X2 -660f6411|223344556677885f5f5f5f5f 64 gnu pcmpgtb (%rcx),%xmm2 -660f6411|223344556677885f5f5f5f5f 64 intel pcmpgtb xmm2, xmmword ptr [rcx] -660f6411|223344556677885f5f5f5f5f 64 plan9 PCMPGTB 0(CX), X2 -660f6511|223344556677885f5f5f5f5f 32 intel pcmpgtw xmm2, xmmword ptr [ecx] -660f6511|223344556677885f5f5f5f5f 32 plan9 PCMPGTW 0(CX), X2 -660f6511|223344556677885f5f5f5f5f 64 gnu pcmpgtw (%rcx),%xmm2 -660f6511|223344556677885f5f5f5f5f 64 intel pcmpgtw xmm2, xmmword ptr [rcx] -660f6511|223344556677885f5f5f5f5f 64 plan9 PCMPGTW 0(CX), X2 -660f6611|223344556677885f5f5f5f5f 32 intel pcmpgtd xmm2, xmmword ptr [ecx] -660f6611|223344556677885f5f5f5f5f 32 plan9 PCMPGTD 0(CX), X2 -660f6611|223344556677885f5f5f5f5f 64 gnu pcmpgtd (%rcx),%xmm2 -660f6611|223344556677885f5f5f5f5f 64 intel pcmpgtd xmm2, xmmword ptr [rcx] -660f6611|223344556677885f5f5f5f5f 64 plan9 PCMPGTD 0(CX), X2 -660f6711|223344556677885f5f5f5f5f 32 intel packuswb xmm2, xmmword ptr [ecx] -660f6711|223344556677885f5f5f5f5f 32 plan9 PACKUSWB 0(CX), X2 -660f6711|223344556677885f5f5f5f5f 64 gnu packuswb (%rcx),%xmm2 -660f6711|223344556677885f5f5f5f5f 64 intel packuswb xmm2, xmmword ptr [rcx] -660f6711|223344556677885f5f5f5f5f 64 plan9 PACKUSWB 0(CX), X2 -660f6811|223344556677885f5f5f5f5f 32 intel punpckhbw xmm2, xmmword ptr [ecx] -660f6811|223344556677885f5f5f5f5f 32 plan9 PUNPCKHBW 0(CX), X2 -660f6811|223344556677885f5f5f5f5f 64 gnu punpckhbw (%rcx),%xmm2 -660f6811|223344556677885f5f5f5f5f 64 intel punpckhbw xmm2, xmmword ptr [rcx] -660f6811|223344556677885f5f5f5f5f 64 plan9 PUNPCKHBW 0(CX), X2 -660f6911|223344556677885f5f5f5f5f 32 intel punpckhwd xmm2, xmmword ptr [ecx] -660f6911|223344556677885f5f5f5f5f 32 plan9 PUNPCKHWD 0(CX), X2 -660f6911|223344556677885f5f5f5f5f 64 gnu punpckhwd (%rcx),%xmm2 -660f6911|223344556677885f5f5f5f5f 64 intel punpckhwd xmm2, xmmword ptr [rcx] -660f6911|223344556677885f5f5f5f5f 64 plan9 PUNPCKHWD 0(CX), X2 -660f6a11|223344556677885f5f5f5f5f 32 intel punpckhdq xmm2, xmmword ptr [ecx] -660f6a11|223344556677885f5f5f5f5f 32 plan9 PUNPCKHDQ 0(CX), X2 -660f6a11|223344556677885f5f5f5f5f 64 gnu punpckhdq (%rcx),%xmm2 -660f6a11|223344556677885f5f5f5f5f 64 intel punpckhdq xmm2, xmmword ptr [rcx] -660f6a11|223344556677885f5f5f5f5f 64 plan9 PUNPCKHDQ 0(CX), X2 -660f6b11|223344556677885f5f5f5f5f 32 intel packssdw xmm2, xmmword ptr [ecx] -660f6b11|223344556677885f5f5f5f5f 32 plan9 PACKSSDW 0(CX), X2 -660f6b11|223344556677885f5f5f5f5f 64 gnu packssdw (%rcx),%xmm2 -660f6b11|223344556677885f5f5f5f5f 64 intel packssdw xmm2, xmmword ptr [rcx] -660f6b11|223344556677885f5f5f5f5f 64 plan9 PACKSSDW 0(CX), X2 -660f6c11|223344556677885f5f5f5f5f 32 intel punpcklqdq xmm2, xmmword ptr [ecx] -660f6c11|223344556677885f5f5f5f5f 32 plan9 PUNPCKLQDQ 0(CX), X2 -660f6c11|223344556677885f5f5f5f5f 64 gnu punpcklqdq (%rcx),%xmm2 -660f6c11|223344556677885f5f5f5f5f 64 intel punpcklqdq xmm2, xmmword ptr [rcx] -660f6c11|223344556677885f5f5f5f5f 64 plan9 PUNPCKLQDQ 0(CX), X2 -660f6d11|223344556677885f5f5f5f5f 32 intel punpckhqdq xmm2, xmmword ptr [ecx] -660f6d11|223344556677885f5f5f5f5f 32 plan9 PUNPCKHQDQ 0(CX), X2 -660f6d11|223344556677885f5f5f5f5f 64 gnu punpckhqdq (%rcx),%xmm2 -660f6d11|223344556677885f5f5f5f5f 64 intel punpckhqdq xmm2, xmmword ptr [rcx] -660f6d11|223344556677885f5f5f5f5f 64 plan9 PUNPCKHQDQ 0(CX), X2 -660f6e11|223344556677885f5f5f5f5f 32 intel movd xmm2, dword ptr [ecx] -660f6e11|223344556677885f5f5f5f5f 32 plan9 MOVD 0(CX), X2 -660f6e11|223344556677885f5f5f5f5f 64 gnu movd (%rcx),%xmm2 -660f6e11|223344556677885f5f5f5f5f 64 intel movd xmm2, dword ptr [rcx] -660f6e11|223344556677885f5f5f5f5f 64 plan9 MOVD 0(CX), X2 -660f6f11|223344556677885f5f5f5f5f 32 intel movdqa xmm2, xmmword ptr [ecx] -660f6f11|223344556677885f5f5f5f5f 32 plan9 MOVDQA 0(CX), X2 -660f6f11|223344556677885f5f5f5f5f 64 gnu movdqa (%rcx),%xmm2 -660f6f11|223344556677885f5f5f5f5f 64 intel movdqa xmm2, xmmword ptr [rcx] -660f6f11|223344556677885f5f5f5f5f 64 plan9 MOVDQA 0(CX), X2 -660f701122|3344556677885f5f5f5f5f 32 intel pshufd xmm2, xmmword ptr [ecx], 0x22 -660f701122|3344556677885f5f5f5f5f 32 plan9 PSHUFD $0x22, 0(CX), X2 -660f701122|3344556677885f5f5f5f5f 64 gnu pshufd $0x22,(%rcx),%xmm2 -660f701122|3344556677885f5f5f5f5f 64 intel pshufd xmm2, xmmword ptr [rcx], 0x22 -660f701122|3344556677885f5f5f5f5f 64 plan9 PSHUFD $0x22, 0(CX), X2 -660f71d011|223344556677885f5f5f5f 32 intel psrlw xmm0, 0x11 -660f71d011|223344556677885f5f5f5f 32 plan9 PSRLW $0x11, X0 -660f71d011|223344556677885f5f5f5f 64 gnu psrlw $0x11,%xmm0 -660f71d011|223344556677885f5f5f5f 64 intel psrlw xmm0, 0x11 -660f71d011|223344556677885f5f5f5f 64 plan9 PSRLW $0x11, X0 -660f71e011|223344556677885f5f5f5f 32 intel psraw xmm0, 0x11 -660f71e011|223344556677885f5f5f5f 32 plan9 PSRAW $0x11, X0 -660f71e011|223344556677885f5f5f5f 64 gnu psraw $0x11,%xmm0 -660f71e011|223344556677885f5f5f5f 64 intel psraw xmm0, 0x11 -660f71e011|223344556677885f5f5f5f 64 plan9 PSRAW $0x11, X0 -660f71f011|223344556677885f5f5f5f 32 intel psllw xmm0, 0x11 -660f71f011|223344556677885f5f5f5f 32 plan9 PSLLW $0x11, X0 -660f71f011|223344556677885f5f5f5f 64 gnu psllw $0x11,%xmm0 -660f71f011|223344556677885f5f5f5f 64 intel psllw xmm0, 0x11 -660f71f011|223344556677885f5f5f5f 64 plan9 PSLLW $0x11, X0 -660f72d011|223344556677885f5f5f5f 32 intel psrld xmm0, 0x11 -660f72d011|223344556677885f5f5f5f 32 plan9 PSRLD $0x11, X0 -660f72d011|223344556677885f5f5f5f 64 gnu psrld $0x11,%xmm0 -660f72d011|223344556677885f5f5f5f 64 intel psrld xmm0, 0x11 -660f72d011|223344556677885f5f5f5f 64 plan9 PSRLD $0x11, X0 -660f72e011|223344556677885f5f5f5f 32 intel psrad xmm0, 0x11 -660f72e011|223344556677885f5f5f5f 32 plan9 PSRAD $0x11, X0 -660f72e011|223344556677885f5f5f5f 64 gnu psrad $0x11,%xmm0 -660f72e011|223344556677885f5f5f5f 64 intel psrad xmm0, 0x11 -660f72e011|223344556677885f5f5f5f 64 plan9 PSRAD $0x11, X0 -660f72f011|223344556677885f5f5f5f 32 intel pslld xmm0, 0x11 -660f72f011|223344556677885f5f5f5f 32 plan9 PSLLD $0x11, X0 -660f72f011|223344556677885f5f5f5f 64 gnu pslld $0x11,%xmm0 -660f72f011|223344556677885f5f5f5f 64 intel pslld xmm0, 0x11 -660f72f011|223344556677885f5f5f5f 64 plan9 PSLLD $0x11, X0 -660f73d011|223344556677885f5f5f5f 32 intel psrlq xmm0, 0x11 -660f73d011|223344556677885f5f5f5f 32 plan9 PSRLQ $0x11, X0 -660f73d011|223344556677885f5f5f5f 64 gnu psrlq $0x11,%xmm0 -660f73d011|223344556677885f5f5f5f 64 intel psrlq xmm0, 0x11 -660f73d011|223344556677885f5f5f5f 64 plan9 PSRLQ $0x11, X0 -660f73d811|223344556677885f5f5f5f 32 intel psrldq xmm0, 0x11 -660f73d811|223344556677885f5f5f5f 32 plan9 PSRLDQ $0x11, X0 -660f73d811|223344556677885f5f5f5f 64 gnu psrldq $0x11,%xmm0 -660f73d811|223344556677885f5f5f5f 64 intel psrldq xmm0, 0x11 -660f73d811|223344556677885f5f5f5f 64 plan9 PSRLDQ $0x11, X0 -660f73f011|223344556677885f5f5f5f 32 intel psllq xmm0, 0x11 -660f73f011|223344556677885f5f5f5f 32 plan9 PSLLQ $0x11, X0 -660f73f011|223344556677885f5f5f5f 64 gnu psllq $0x11,%xmm0 -660f73f011|223344556677885f5f5f5f 64 intel psllq xmm0, 0x11 -660f73f011|223344556677885f5f5f5f 64 plan9 PSLLQ $0x11, X0 -660f73f811|223344556677885f5f5f5f 32 intel pslldq xmm0, 0x11 -660f73f811|223344556677885f5f5f5f 32 plan9 PSLLDQ $0x11, X0 -660f73f811|223344556677885f5f5f5f 64 gnu pslldq $0x11,%xmm0 -660f73f811|223344556677885f5f5f5f 64 intel pslldq xmm0, 0x11 -660f73f811|223344556677885f5f5f5f 64 plan9 PSLLDQ $0x11, X0 -660f7411|223344556677885f5f5f5f5f 32 intel pcmpeqb xmm2, xmmword ptr [ecx] -660f7411|223344556677885f5f5f5f5f 32 plan9 PCMPEQB 0(CX), X2 -660f7411|223344556677885f5f5f5f5f 64 gnu pcmpeqb (%rcx),%xmm2 -660f7411|223344556677885f5f5f5f5f 64 intel pcmpeqb xmm2, xmmword ptr [rcx] -660f7411|223344556677885f5f5f5f5f 64 plan9 PCMPEQB 0(CX), X2 -660f7511|223344556677885f5f5f5f5f 32 intel pcmpeqw xmm2, xmmword ptr [ecx] -660f7511|223344556677885f5f5f5f5f 32 plan9 PCMPEQW 0(CX), X2 -660f7511|223344556677885f5f5f5f5f 64 gnu pcmpeqw (%rcx),%xmm2 -660f7511|223344556677885f5f5f5f5f 64 intel pcmpeqw xmm2, xmmword ptr [rcx] -660f7511|223344556677885f5f5f5f5f 64 plan9 PCMPEQW 0(CX), X2 -660f7611|223344556677885f5f5f5f5f 32 intel pcmpeqd xmm2, xmmword ptr [ecx] -660f7611|223344556677885f5f5f5f5f 32 plan9 PCMPEQD 0(CX), X2 -660f7611|223344556677885f5f5f5f5f 64 gnu pcmpeqd (%rcx),%xmm2 -660f7611|223344556677885f5f5f5f5f 64 intel pcmpeqd xmm2, xmmword ptr [rcx] -660f7611|223344556677885f5f5f5f5f 64 plan9 PCMPEQD 0(CX), X2 -660f7c11|223344556677885f5f5f5f5f 32 intel haddpd xmm2, xmmword ptr [ecx] -660f7c11|223344556677885f5f5f5f5f 32 plan9 HADDPD 0(CX), X2 -660f7c11|223344556677885f5f5f5f5f 64 gnu haddpd (%rcx),%xmm2 -660f7c11|223344556677885f5f5f5f5f 64 intel haddpd xmm2, xmmword ptr [rcx] -660f7c11|223344556677885f5f5f5f5f 64 plan9 HADDPD 0(CX), X2 -660f7d11|223344556677885f5f5f5f5f 32 intel hsubpd xmm2, xmmword ptr [ecx] -660f7d11|223344556677885f5f5f5f5f 32 plan9 HSUBPD 0(CX), X2 -660f7d11|223344556677885f5f5f5f5f 64 gnu hsubpd (%rcx),%xmm2 -660f7d11|223344556677885f5f5f5f5f 64 intel hsubpd xmm2, xmmword ptr [rcx] -660f7d11|223344556677885f5f5f5f5f 64 plan9 HSUBPD 0(CX), X2 -660f7e11|223344556677885f5f5f5f5f 32 intel movd dword ptr [ecx], xmm2 -660f7e11|223344556677885f5f5f5f5f 32 plan9 MOVD X2, 0(CX) -660f7e11|223344556677885f5f5f5f5f 64 gnu movd %xmm2,(%rcx) -660f7e11|223344556677885f5f5f5f5f 64 intel movd dword ptr [rcx], xmm2 -660f7e11|223344556677885f5f5f5f5f 64 plan9 MOVD X2, 0(CX) -660f7f11|223344556677885f5f5f5f5f 32 intel movdqa xmmword ptr [ecx], xmm2 -660f7f11|223344556677885f5f5f5f5f 32 plan9 MOVDQA X2, 0(CX) -660f7f11|223344556677885f5f5f5f5f 64 gnu movdqa %xmm2,(%rcx) -660f7f11|223344556677885f5f5f5f5f 64 intel movdqa xmmword ptr [rcx], xmm2 -660f7f11|223344556677885f5f5f5f5f 64 plan9 MOVDQA X2, 0(CX) -660f8011223344|556677885f5f5f5f5f 64 gnu jo .+0x44332211 -660f8011223344|556677885f5f5f5f5f 64 intel jo .+0x44332211 -660f8011223344|556677885f5f5f5f5f 64 plan9 JO .+1144201745 -660f801122|3344556677885f5f5f5f5f 32 intel jo .+0x2211 -660f801122|3344556677885f5f5f5f5f 32 plan9 JO .+8721 -660f8111223344|556677885f5f5f5f5f 64 gnu jno .+0x44332211 -660f8111223344|556677885f5f5f5f5f 64 intel jno .+0x44332211 -660f8111223344|556677885f5f5f5f5f 64 plan9 JNO .+1144201745 -660f811122|3344556677885f5f5f5f5f 32 intel jno .+0x2211 -660f811122|3344556677885f5f5f5f5f 32 plan9 JNO .+8721 -660f8211223344|556677885f5f5f5f5f 64 gnu jb .+0x44332211 -660f8211223344|556677885f5f5f5f5f 64 intel jb .+0x44332211 -660f8211223344|556677885f5f5f5f5f 64 plan9 JB .+1144201745 -660f821122|3344556677885f5f5f5f5f 32 intel jb .+0x2211 -660f821122|3344556677885f5f5f5f5f 32 plan9 JB .+8721 -660f8311223344|556677885f5f5f5f5f 64 gnu jae .+0x44332211 -660f8311223344|556677885f5f5f5f5f 64 intel jnb .+0x44332211 -660f8311223344|556677885f5f5f5f5f 64 plan9 JAE .+1144201745 -660f831122|3344556677885f5f5f5f5f 32 intel jnb .+0x2211 -660f831122|3344556677885f5f5f5f5f 32 plan9 JAE .+8721 -660f8411223344|556677885f5f5f5f5f 64 gnu je .+0x44332211 -660f8411223344|556677885f5f5f5f5f 64 intel jz .+0x44332211 -660f8411223344|556677885f5f5f5f5f 64 plan9 JE .+1144201745 -660f841122|3344556677885f5f5f5f5f 32 intel jz .+0x2211 -660f841122|3344556677885f5f5f5f5f 32 plan9 JE .+8721 -660f8511223344|556677885f5f5f5f5f 64 gnu jne .+0x44332211 -660f8511223344|556677885f5f5f5f5f 64 intel jnz .+0x44332211 -660f8511223344|556677885f5f5f5f5f 64 plan9 JNE .+1144201745 -660f851122|3344556677885f5f5f5f5f 32 intel jnz .+0x2211 -660f851122|3344556677885f5f5f5f5f 32 plan9 JNE .+8721 -660f8611223344|556677885f5f5f5f5f 64 gnu jbe .+0x44332211 -660f8611223344|556677885f5f5f5f5f 64 intel jbe .+0x44332211 -660f8611223344|556677885f5f5f5f5f 64 plan9 JBE .+1144201745 -660f861122|3344556677885f5f5f5f5f 32 intel jbe .+0x2211 -660f861122|3344556677885f5f5f5f5f 32 plan9 JBE .+8721 -660f8711223344|556677885f5f5f5f5f 64 gnu ja .+0x44332211 -660f8711223344|556677885f5f5f5f5f 64 intel jnbe .+0x44332211 -660f8711223344|556677885f5f5f5f5f 64 plan9 JA .+1144201745 -660f871122|3344556677885f5f5f5f5f 32 intel jnbe .+0x2211 -660f871122|3344556677885f5f5f5f5f 32 plan9 JA .+8721 -660f8811223344|556677885f5f5f5f5f 64 gnu js .+0x44332211 -660f8811223344|556677885f5f5f5f5f 64 intel js .+0x44332211 -660f8811223344|556677885f5f5f5f5f 64 plan9 JS .+1144201745 -660f881122|3344556677885f5f5f5f5f 32 intel js .+0x2211 -660f881122|3344556677885f5f5f5f5f 32 plan9 JS .+8721 -660f8911223344|556677885f5f5f5f5f 64 gnu jns .+0x44332211 -660f8911223344|556677885f5f5f5f5f 64 intel jns .+0x44332211 -660f8911223344|556677885f5f5f5f5f 64 plan9 JNS .+1144201745 -660f891122|3344556677885f5f5f5f5f 32 intel jns .+0x2211 -660f891122|3344556677885f5f5f5f5f 32 plan9 JNS .+8721 -660f8a11223344|556677885f5f5f5f5f 64 gnu jp .+0x44332211 -660f8a11223344|556677885f5f5f5f5f 64 intel jp .+0x44332211 -660f8a11223344|556677885f5f5f5f5f 64 plan9 JP .+1144201745 -660f8a1122|3344556677885f5f5f5f5f 32 intel jp .+0x2211 -660f8a1122|3344556677885f5f5f5f5f 32 plan9 JP .+8721 -660f8b11223344|556677885f5f5f5f5f 64 gnu jnp .+0x44332211 -660f8b11223344|556677885f5f5f5f5f 64 intel jnp .+0x44332211 -660f8b11223344|556677885f5f5f5f5f 64 plan9 JNP .+1144201745 -660f8b1122|3344556677885f5f5f5f5f 32 intel jnp .+0x2211 -660f8b1122|3344556677885f5f5f5f5f 32 plan9 JNP .+8721 -660f8c11223344|556677885f5f5f5f5f 64 gnu jl .+0x44332211 -660f8c11223344|556677885f5f5f5f5f 64 intel jl .+0x44332211 -660f8c11223344|556677885f5f5f5f5f 64 plan9 JL .+1144201745 -660f8c1122|3344556677885f5f5f5f5f 32 intel jl .+0x2211 -660f8c1122|3344556677885f5f5f5f5f 32 plan9 JL .+8721 -660f8d11223344|556677885f5f5f5f5f 64 gnu jge .+0x44332211 -660f8d11223344|556677885f5f5f5f5f 64 intel jnl .+0x44332211 -660f8d11223344|556677885f5f5f5f5f 64 plan9 JGE .+1144201745 -660f8d1122|3344556677885f5f5f5f5f 32 intel jnl .+0x2211 -660f8d1122|3344556677885f5f5f5f5f 32 plan9 JGE .+8721 -660f8e11223344|556677885f5f5f5f5f 64 gnu jle .+0x44332211 -660f8e11223344|556677885f5f5f5f5f 64 intel jle .+0x44332211 -660f8e11223344|556677885f5f5f5f5f 64 plan9 JLE .+1144201745 -660f8e1122|3344556677885f5f5f5f5f 32 intel jle .+0x2211 -660f8e1122|3344556677885f5f5f5f5f 32 plan9 JLE .+8721 -660f8f11223344|556677885f5f5f5f5f 64 gnu jg .+0x44332211 -660f8f11223344|556677885f5f5f5f5f 64 intel jnle .+0x44332211 -660f8f11223344|556677885f5f5f5f5f 64 plan9 JG .+1144201745 -660f8f1122|3344556677885f5f5f5f5f 32 intel jnle .+0x2211 -660f8f1122|3344556677885f5f5f5f5f 32 plan9 JG .+8721 -660fa1|11223344556677885f5f5f5f5f 32 intel pop fs -660fa1|11223344556677885f5f5f5f5f 32 plan9 POPW FS -660fa1|11223344556677885f5f5f5f5f 64 gnu popw %fs -660fa1|11223344556677885f5f5f5f5f 64 intel pop fs -660fa1|11223344556677885f5f5f5f5f 64 plan9 POPW FS -660fa311|223344556677885f5f5f5f5f 32 intel bt word ptr [ecx], dx -660fa311|223344556677885f5f5f5f5f 32 plan9 BTW DX, 0(CX) -660fa311|223344556677885f5f5f5f5f 64 gnu bt %dx,(%rcx) -660fa311|223344556677885f5f5f5f5f 64 intel bt word ptr [rcx], dx -660fa311|223344556677885f5f5f5f5f 64 plan9 BTW DX, 0(CX) -660fa41122|3344556677885f5f5f5f5f 32 intel shld word ptr [ecx], dx, 0x22 -660fa41122|3344556677885f5f5f5f5f 32 plan9 SHLDW $0x22, DX, 0(CX) -660fa41122|3344556677885f5f5f5f5f 64 gnu shld $0x22,%dx,(%rcx) -660fa41122|3344556677885f5f5f5f5f 64 intel shld word ptr [rcx], dx, 0x22 -660fa41122|3344556677885f5f5f5f5f 64 plan9 SHLDW $0x22, DX, 0(CX) -660fa511|223344556677885f5f5f5f5f 32 intel shld word ptr [ecx], dx, cl -660fa511|223344556677885f5f5f5f5f 32 plan9 SHLDW CL, DX, 0(CX) -660fa511|223344556677885f5f5f5f5f 64 gnu shld %cl,%dx,(%rcx) -660fa511|223344556677885f5f5f5f5f 64 intel shld word ptr [rcx], dx, cl -660fa511|223344556677885f5f5f5f5f 64 plan9 SHLDW CL, DX, 0(CX) -660fa9|11223344556677885f5f5f5f5f 32 intel pop gs -660fa9|11223344556677885f5f5f5f5f 32 plan9 POPW GS -660fa9|11223344556677885f5f5f5f5f 64 gnu popw %gs -660fa9|11223344556677885f5f5f5f5f 64 intel pop gs -660fa9|11223344556677885f5f5f5f5f 64 plan9 POPW GS -660fab11|223344556677885f5f5f5f5f 32 intel bts word ptr [ecx], dx -660fab11|223344556677885f5f5f5f5f 32 plan9 BTSW DX, 0(CX) -660fab11|223344556677885f5f5f5f5f 64 gnu bts %dx,(%rcx) -660fab11|223344556677885f5f5f5f5f 64 intel bts word ptr [rcx], dx -660fab11|223344556677885f5f5f5f5f 64 plan9 BTSW DX, 0(CX) -660fac1122|3344556677885f5f5f5f5f 32 intel shrd word ptr [ecx], dx, 0x22 -660fac1122|3344556677885f5f5f5f5f 32 plan9 SHRDW $0x22, DX, 0(CX) -660fac1122|3344556677885f5f5f5f5f 64 gnu shrd $0x22,%dx,(%rcx) -660fac1122|3344556677885f5f5f5f5f 64 intel shrd word ptr [rcx], dx, 0x22 -660fac1122|3344556677885f5f5f5f5f 64 plan9 SHRDW $0x22, DX, 0(CX) -660fad11|223344556677885f5f5f5f5f 32 intel shrd word ptr [ecx], dx, cl -660fad11|223344556677885f5f5f5f5f 32 plan9 SHRDW CL, DX, 0(CX) -660fad11|223344556677885f5f5f5f5f 64 gnu shrd %cl,%dx,(%rcx) -660fad11|223344556677885f5f5f5f5f 64 intel shrd word ptr [rcx], dx, cl -660fad11|223344556677885f5f5f5f5f 64 plan9 SHRDW CL, DX, 0(CX) -660fae00|11223344556677885f5f5f5f 32 intel fxsave ptr [eax] -660fae00|11223344556677885f5f5f5f 32 plan9 FXSAVE 0(AX) -660fae00|11223344556677885f5f5f5f 64 gnu fxsave (%rax) -660fae00|11223344556677885f5f5f5f 64 intel fxsave ptr [rax] -660fae00|11223344556677885f5f5f5f 64 plan9 FXSAVE 0(AX) -660fae08|11223344556677885f5f5f5f 32 intel fxrstor ptr [eax] -660fae08|11223344556677885f5f5f5f 32 plan9 FXRSTOR 0(AX) -660fae08|11223344556677885f5f5f5f 64 gnu data16 fxrstor (%rax) -660fae08|11223344556677885f5f5f5f 64 intel fxrstor ptr [rax] -660fae08|11223344556677885f5f5f5f 64 plan9 FXRSTOR 0(AX) -660fae20|11223344556677885f5f5f5f 32 intel xsave ptr [eax] -660fae20|11223344556677885f5f5f5f 32 plan9 XSAVE 0(AX) -660fae20|11223344556677885f5f5f5f 64 gnu data16 xsave (%rax) -660fae20|11223344556677885f5f5f5f 64 intel xsave ptr [rax] -660fae20|11223344556677885f5f5f5f 64 plan9 XSAVE 0(AX) -660fae28|11223344556677885f5f5f5f 32 intel xrstor ptr [eax] -660fae28|11223344556677885f5f5f5f 32 plan9 XRSTOR 0(AX) -660fae28|11223344556677885f5f5f5f 64 gnu data16 xrstor (%rax) -660fae28|11223344556677885f5f5f5f 64 intel xrstor ptr [rax] -660fae28|11223344556677885f5f5f5f 64 plan9 XRSTOR 0(AX) -660fae30|11223344556677885f5f5f5f 32 intel xsaveopt ptr [eax] -660fae30|11223344556677885f5f5f5f 32 plan9 XSAVEOPT 0(AX) -660fae30|11223344556677885f5f5f5f 64 gnu data16 xsaveopt (%rax) -660fae30|11223344556677885f5f5f5f 64 intel xsaveopt ptr [rax] -660fae30|11223344556677885f5f5f5f 64 plan9 XSAVEOPT 0(AX) -660faf11|223344556677885f5f5f5f5f 32 intel imul dx, word ptr [ecx] -660faf11|223344556677885f5f5f5f5f 32 plan9 IMULW 0(CX), DX -660faf11|223344556677885f5f5f5f5f 64 gnu imul (%rcx),%dx -660faf11|223344556677885f5f5f5f5f 64 intel imul dx, word ptr [rcx] -660faf11|223344556677885f5f5f5f5f 64 plan9 IMULW 0(CX), DX -660fb111|223344556677885f5f5f5f5f 32 intel cmpxchg word ptr [ecx], dx -660fb111|223344556677885f5f5f5f5f 32 plan9 CMPXCHGW DX, 0(CX) -660fb111|223344556677885f5f5f5f5f 64 gnu cmpxchg %dx,(%rcx) -660fb111|223344556677885f5f5f5f5f 64 intel cmpxchg word ptr [rcx], dx -660fb111|223344556677885f5f5f5f5f 64 plan9 CMPXCHGW DX, 0(CX) -660fb211|223344556677885f5f5f5f5f 32 intel lss dx, dword ptr [ecx] -660fb211|223344556677885f5f5f5f5f 32 plan9 LSS 0(CX), DX -660fb211|223344556677885f5f5f5f5f 64 gnu lss (%rcx),%dx -660fb211|223344556677885f5f5f5f5f 64 intel lss dx, dword ptr [rcx] -660fb211|223344556677885f5f5f5f5f 64 plan9 LSS 0(CX), DX -660fb311|223344556677885f5f5f5f5f 32 intel btr word ptr [ecx], dx -660fb311|223344556677885f5f5f5f5f 32 plan9 BTRW DX, 0(CX) -660fb311|223344556677885f5f5f5f5f 64 gnu btr %dx,(%rcx) -660fb311|223344556677885f5f5f5f5f 64 intel btr word ptr [rcx], dx -660fb311|223344556677885f5f5f5f5f 64 plan9 BTRW DX, 0(CX) -660fb411|223344556677885f5f5f5f5f 32 intel lfs dx, dword ptr [ecx] -660fb411|223344556677885f5f5f5f5f 32 plan9 LFS 0(CX), DX -660fb411|223344556677885f5f5f5f5f 64 gnu lfs (%rcx),%dx -660fb411|223344556677885f5f5f5f5f 64 intel lfs dx, dword ptr [rcx] -660fb411|223344556677885f5f5f5f5f 64 plan9 LFS 0(CX), DX -660fb511|223344556677885f5f5f5f5f 32 intel lgs dx, dword ptr [ecx] -660fb511|223344556677885f5f5f5f5f 32 plan9 LGS 0(CX), DX -660fb511|223344556677885f5f5f5f5f 64 gnu lgs (%rcx),%dx -660fb511|223344556677885f5f5f5f5f 64 intel lgs dx, dword ptr [rcx] -660fb511|223344556677885f5f5f5f5f 64 plan9 LGS 0(CX), DX -660fb611|223344556677885f5f5f5f5f 32 intel movzx dx, byte ptr [ecx] -660fb611|223344556677885f5f5f5f5f 32 plan9 MOVZX 0(CX), DX -660fb611|223344556677885f5f5f5f5f 64 gnu movzbw (%rcx),%dx -660fb611|223344556677885f5f5f5f5f 64 intel movzx dx, byte ptr [rcx] -660fb611|223344556677885f5f5f5f5f 64 plan9 MOVZX 0(CX), DX -660fb711|223344556677885f5f5f5f5f 32 intel movzx dx, word ptr [ecx] -660fb711|223344556677885f5f5f5f5f 32 plan9 MOVZX 0(CX), DX -660fb711|223344556677885f5f5f5f5f 64 gnu movzww (%rcx),%dx -660fb711|223344556677885f5f5f5f5f 64 intel movzx dx, word ptr [rcx] -660fb711|223344556677885f5f5f5f5f 64 plan9 MOVZX 0(CX), DX -660fba2011|223344556677885f5f5f5f 32 intel bt word ptr [eax], 0x11 -660fba2011|223344556677885f5f5f5f 32 plan9 BTW $0x11, 0(AX) -660fba2011|223344556677885f5f5f5f 64 gnu btw $0x11,(%rax) -660fba2011|223344556677885f5f5f5f 64 intel bt word ptr [rax], 0x11 -660fba2011|223344556677885f5f5f5f 64 plan9 BTW $0x11, 0(AX) -660fba2811|223344556677885f5f5f5f 32 intel bts word ptr [eax], 0x11 -660fba2811|223344556677885f5f5f5f 32 plan9 BTSW $0x11, 0(AX) -660fba2811|223344556677885f5f5f5f 64 gnu btsw $0x11,(%rax) -660fba2811|223344556677885f5f5f5f 64 intel bts word ptr [rax], 0x11 -660fba2811|223344556677885f5f5f5f 64 plan9 BTSW $0x11, 0(AX) -660fba3011|223344556677885f5f5f5f 32 intel btr word ptr [eax], 0x11 -660fba3011|223344556677885f5f5f5f 32 plan9 BTRW $0x11, 0(AX) -660fba3011|223344556677885f5f5f5f 64 gnu btrw $0x11,(%rax) -660fba3011|223344556677885f5f5f5f 64 intel btr word ptr [rax], 0x11 -660fba3011|223344556677885f5f5f5f 64 plan9 BTRW $0x11, 0(AX) -660fba3811|223344556677885f5f5f5f 32 intel btc word ptr [eax], 0x11 -660fba3811|223344556677885f5f5f5f 32 plan9 BTCW $0x11, 0(AX) -660fba3811|223344556677885f5f5f5f 64 gnu btcw $0x11,(%rax) -660fba3811|223344556677885f5f5f5f 64 intel btc word ptr [rax], 0x11 -660fba3811|223344556677885f5f5f5f 64 plan9 BTCW $0x11, 0(AX) -660fbb11|223344556677885f5f5f5f5f 32 intel btc word ptr [ecx], dx -660fbb11|223344556677885f5f5f5f5f 32 plan9 BTCW DX, 0(CX) -660fbb11|223344556677885f5f5f5f5f 64 gnu btc %dx,(%rcx) -660fbb11|223344556677885f5f5f5f5f 64 intel btc word ptr [rcx], dx -660fbb11|223344556677885f5f5f5f5f 64 plan9 BTCW DX, 0(CX) -660fbc11|223344556677885f5f5f5f5f 32 intel bsf dx, word ptr [ecx] -660fbc11|223344556677885f5f5f5f5f 32 plan9 BSFW 0(CX), DX -660fbc11|223344556677885f5f5f5f5f 64 gnu bsf (%rcx),%dx -660fbc11|223344556677885f5f5f5f5f 64 intel bsf dx, word ptr [rcx] -660fbc11|223344556677885f5f5f5f5f 64 plan9 BSFW 0(CX), DX -660fbd11|223344556677885f5f5f5f5f 32 intel bsr dx, word ptr [ecx] -660fbd11|223344556677885f5f5f5f5f 32 plan9 BSRW 0(CX), DX -660fbd11|223344556677885f5f5f5f5f 64 gnu bsr (%rcx),%dx -660fbd11|223344556677885f5f5f5f5f 64 intel bsr dx, word ptr [rcx] -660fbd11|223344556677885f5f5f5f5f 64 plan9 BSRW 0(CX), DX -660fbe11|223344556677885f5f5f5f5f 32 intel movsx dx, byte ptr [ecx] -660fbe11|223344556677885f5f5f5f5f 32 plan9 MOVSX 0(CX), DX -660fbe11|223344556677885f5f5f5f5f 64 gnu movsbw (%rcx),%dx -660fbe11|223344556677885f5f5f5f5f 64 intel movsx dx, byte ptr [rcx] -660fbe11|223344556677885f5f5f5f5f 64 plan9 MOVSX 0(CX), DX -660fbf11|223344556677885f5f5f5f5f 32 intel movsx dx, word ptr [ecx] -660fbf11|223344556677885f5f5f5f5f 32 plan9 MOVSX 0(CX), DX -660fbf11|223344556677885f5f5f5f5f 64 gnu movsww (%rcx),%dx -660fbf11|223344556677885f5f5f5f5f 64 intel movsx dx, word ptr [rcx] -660fbf11|223344556677885f5f5f5f5f 64 plan9 MOVSX 0(CX), DX -660fc111|223344556677885f5f5f5f5f 32 intel xadd word ptr [ecx], dx -660fc111|223344556677885f5f5f5f5f 32 plan9 XADDW DX, 0(CX) -660fc111|223344556677885f5f5f5f5f 64 gnu xadd %dx,(%rcx) -660fc111|223344556677885f5f5f5f5f 64 intel xadd word ptr [rcx], dx -660fc111|223344556677885f5f5f5f5f 64 plan9 XADDW DX, 0(CX) -660fc21122|3344556677885f5f5f5f5f 32 intel cmppd xmm2, xmmword ptr [ecx], 0x22 -660fc21122|3344556677885f5f5f5f5f 32 plan9 CMPPD $0x22, 0(CX), X2 -660fc21122|3344556677885f5f5f5f5f 64 gnu cmppd $0x22,(%rcx),%xmm2 -660fc21122|3344556677885f5f5f5f5f 64 intel cmppd xmm2, xmmword ptr [rcx], 0x22 -660fc21122|3344556677885f5f5f5f5f 64 plan9 CMPPD $0x22, 0(CX), X2 -660fc311|223344556677885f5f5f5f5f 32 intel movnti dword ptr [ecx], edx -660fc311|223344556677885f5f5f5f5f 32 plan9 MOVNTIL DX, 0(CX) -660fc311|223344556677885f5f5f5f5f 64 gnu movnti %edx,(%rcx) -660fc311|223344556677885f5f5f5f5f 64 intel movnti dword ptr [rcx], edx -660fc311|223344556677885f5f5f5f5f 64 plan9 MOVNTIL DX, 0(CX) -660fc41122|3344556677885f5f5f5f5f 32 intel pinsrw xmm2, word ptr [ecx], 0x22 -660fc41122|3344556677885f5f5f5f5f 32 plan9 PINSRW $0x22, 0(CX), X2 -660fc41122|3344556677885f5f5f5f5f 64 gnu pinsrw $0x22,(%rcx),%xmm2 -660fc41122|3344556677885f5f5f5f5f 64 intel pinsrw xmm2, word ptr [rcx], 0x22 -660fc41122|3344556677885f5f5f5f5f 64 plan9 PINSRW $0x22, 0(CX), X2 -660fc5c011|223344556677885f5f5f5f 32 intel pextrw eax, xmm0, 0x11 -660fc5c011|223344556677885f5f5f5f 32 plan9 PEXTRW $0x11, X0, AX -660fc5c011|223344556677885f5f5f5f 64 gnu pextrw $0x11,%xmm0,%eax -660fc5c011|223344556677885f5f5f5f 64 intel pextrw eax, xmm0, 0x11 -660fc5c011|223344556677885f5f5f5f 64 plan9 PEXTRW $0x11, X0, AX -660fc61122|3344556677885f5f5f5f5f 32 intel shufpd xmm2, xmmword ptr [ecx], 0x22 -660fc61122|3344556677885f5f5f5f5f 32 plan9 SHUFPD $0x22, 0(CX), X2 -660fc61122|3344556677885f5f5f5f5f 64 gnu shufpd $0x22,(%rcx),%xmm2 -660fc61122|3344556677885f5f5f5f5f 64 intel shufpd xmm2, xmmword ptr [rcx], 0x22 -660fc61122|3344556677885f5f5f5f5f 64 plan9 SHUFPD $0x22, 0(CX), X2 -660fc708|11223344556677885f5f5f5f 32 intel cmpxchg8b qword ptr [eax] -660fc708|11223344556677885f5f5f5f 32 plan9 CMPXCHG8B 0(AX) -660fc708|11223344556677885f5f5f5f 64 gnu data16 cmpxchg8b (%rax) -660fc708|11223344556677885f5f5f5f 64 intel cmpxchg8b qword ptr [rax] -660fc708|11223344556677885f5f5f5f 64 plan9 CMPXCHG8B 0(AX) -660fc718|11223344556677885f5f5f5f 32 intel xrstors ptr [eax] -660fc718|11223344556677885f5f5f5f 32 plan9 XRSTORS 0(AX) -660fc718|11223344556677885f5f5f5f 64 gnu xrstors (%rax) -660fc718|11223344556677885f5f5f5f 64 intel xrstors ptr [rax] -660fc718|11223344556677885f5f5f5f 64 plan9 XRSTORS 0(AX) -660fc720|11223344556677885f5f5f5f 32 intel xsavec ptr [eax] -660fc720|11223344556677885f5f5f5f 32 plan9 XSAVEC 0(AX) -660fc720|11223344556677885f5f5f5f 64 gnu xsavec (%rax) -660fc720|11223344556677885f5f5f5f 64 intel xsavec ptr [rax] -660fc720|11223344556677885f5f5f5f 64 plan9 XSAVEC 0(AX) -660fc728|11223344556677885f5f5f5f 32 intel xsaves ptr [eax] -660fc728|11223344556677885f5f5f5f 32 plan9 XSAVES 0(AX) -660fc728|11223344556677885f5f5f5f 64 gnu xsaves (%rax) -660fc728|11223344556677885f5f5f5f 64 intel xsaves ptr [rax] -660fc728|11223344556677885f5f5f5f 64 plan9 XSAVES 0(AX) -660fc7f2|11223344556677885f5f5f5f 32 intel rdrand dx -660fc7f2|11223344556677885f5f5f5f 32 plan9 RDRAND DX -660fc7f2|11223344556677885f5f5f5f 64 gnu rdrand %dx -660fc7f2|11223344556677885f5f5f5f 64 intel rdrand dx -660fc7f2|11223344556677885f5f5f5f 64 plan9 RDRAND DX -660fc8|11223344556677885f5f5f5f5f 32 intel bswap ax -660fc8|11223344556677885f5f5f5f5f 32 plan9 BSWAP AX -660fc8|11223344556677885f5f5f5f5f 64 gnu bswap %ax -660fc8|11223344556677885f5f5f5f5f 64 intel bswap ax -660fc8|11223344556677885f5f5f5f5f 64 plan9 BSWAP AX -660fd011|223344556677885f5f5f5f5f 32 intel addsubpd xmm2, xmmword ptr [ecx] -660fd011|223344556677885f5f5f5f5f 32 plan9 ADDSUBPD 0(CX), X2 -660fd011|223344556677885f5f5f5f5f 64 gnu addsubpd (%rcx),%xmm2 -660fd011|223344556677885f5f5f5f5f 64 intel addsubpd xmm2, xmmword ptr [rcx] -660fd011|223344556677885f5f5f5f5f 64 plan9 ADDSUBPD 0(CX), X2 -660fd111|223344556677885f5f5f5f5f 32 intel psrlw xmm2, xmmword ptr [ecx] -660fd111|223344556677885f5f5f5f5f 32 plan9 PSRLW 0(CX), X2 -660fd111|223344556677885f5f5f5f5f 64 gnu psrlw (%rcx),%xmm2 -660fd111|223344556677885f5f5f5f5f 64 intel psrlw xmm2, xmmword ptr [rcx] -660fd111|223344556677885f5f5f5f5f 64 plan9 PSRLW 0(CX), X2 -660fd211|223344556677885f5f5f5f5f 32 intel psrld xmm2, xmmword ptr [ecx] -660fd211|223344556677885f5f5f5f5f 32 plan9 PSRLD 0(CX), X2 -660fd211|223344556677885f5f5f5f5f 64 gnu psrld (%rcx),%xmm2 -660fd211|223344556677885f5f5f5f5f 64 intel psrld xmm2, xmmword ptr [rcx] -660fd211|223344556677885f5f5f5f5f 64 plan9 PSRLD 0(CX), X2 -660fd311|223344556677885f5f5f5f5f 32 intel psrlq xmm2, xmmword ptr [ecx] -660fd311|223344556677885f5f5f5f5f 32 plan9 PSRLQ 0(CX), X2 -660fd311|223344556677885f5f5f5f5f 64 gnu psrlq (%rcx),%xmm2 -660fd311|223344556677885f5f5f5f5f 64 intel psrlq xmm2, xmmword ptr [rcx] -660fd311|223344556677885f5f5f5f5f 64 plan9 PSRLQ 0(CX), X2 -660fd411|223344556677885f5f5f5f5f 32 intel paddq xmm2, xmmword ptr [ecx] -660fd411|223344556677885f5f5f5f5f 32 plan9 PADDQ 0(CX), X2 -660fd411|223344556677885f5f5f5f5f 64 gnu paddq (%rcx),%xmm2 -660fd411|223344556677885f5f5f5f5f 64 intel paddq xmm2, xmmword ptr [rcx] -660fd411|223344556677885f5f5f5f5f 64 plan9 PADDQ 0(CX), X2 -660fd511|223344556677885f5f5f5f5f 32 intel pmullw xmm2, xmmword ptr [ecx] -660fd511|223344556677885f5f5f5f5f 32 plan9 PMULLW 0(CX), X2 -660fd511|223344556677885f5f5f5f5f 64 gnu pmullw (%rcx),%xmm2 -660fd511|223344556677885f5f5f5f5f 64 intel pmullw xmm2, xmmword ptr [rcx] -660fd511|223344556677885f5f5f5f5f 64 plan9 PMULLW 0(CX), X2 -660fd611|223344556677885f5f5f5f5f 32 intel movq qword ptr [ecx], xmm2 -660fd611|223344556677885f5f5f5f5f 32 plan9 MOVQ X2, 0(CX) -660fd611|223344556677885f5f5f5f5f 64 gnu movq %xmm2,(%rcx) -660fd611|223344556677885f5f5f5f5f 64 intel movq qword ptr [rcx], xmm2 -660fd611|223344556677885f5f5f5f5f 64 plan9 MOVQ X2, 0(CX) -660fd7c0|11223344556677885f5f5f5f 32 intel pmovmskb eax, xmm0 -660fd7c0|11223344556677885f5f5f5f 32 plan9 PMOVMSKB X0, AX -660fd7c0|11223344556677885f5f5f5f 64 gnu pmovmskb %xmm0,%eax -660fd7c0|11223344556677885f5f5f5f 64 intel pmovmskb eax, xmm0 -660fd7c0|11223344556677885f5f5f5f 64 plan9 PMOVMSKB X0, AX -660fd811|223344556677885f5f5f5f5f 32 intel psubusb xmm2, xmmword ptr [ecx] -660fd811|223344556677885f5f5f5f5f 32 plan9 PSUBUSB 0(CX), X2 -660fd811|223344556677885f5f5f5f5f 64 gnu psubusb (%rcx),%xmm2 -660fd811|223344556677885f5f5f5f5f 64 intel psubusb xmm2, xmmword ptr [rcx] -660fd811|223344556677885f5f5f5f5f 64 plan9 PSUBUSB 0(CX), X2 -660fd911|223344556677885f5f5f5f5f 32 intel psubusw xmm2, xmmword ptr [ecx] -660fd911|223344556677885f5f5f5f5f 32 plan9 PSUBUSW 0(CX), X2 -660fd911|223344556677885f5f5f5f5f 64 gnu psubusw (%rcx),%xmm2 -660fd911|223344556677885f5f5f5f5f 64 intel psubusw xmm2, xmmword ptr [rcx] -660fd911|223344556677885f5f5f5f5f 64 plan9 PSUBUSW 0(CX), X2 -660fda11|223344556677885f5f5f5f5f 32 intel pminub xmm2, xmmword ptr [ecx] -660fda11|223344556677885f5f5f5f5f 32 plan9 PMINUB 0(CX), X2 -660fda11|223344556677885f5f5f5f5f 64 gnu pminub (%rcx),%xmm2 -660fda11|223344556677885f5f5f5f5f 64 intel pminub xmm2, xmmword ptr [rcx] -660fda11|223344556677885f5f5f5f5f 64 plan9 PMINUB 0(CX), X2 -660fdb11|223344556677885f5f5f5f5f 32 intel pand xmm2, xmmword ptr [ecx] -660fdb11|223344556677885f5f5f5f5f 32 plan9 PAND 0(CX), X2 -660fdb11|223344556677885f5f5f5f5f 64 gnu pand (%rcx),%xmm2 -660fdb11|223344556677885f5f5f5f5f 64 intel pand xmm2, xmmword ptr [rcx] -660fdb11|223344556677885f5f5f5f5f 64 plan9 PAND 0(CX), X2 -660fdc11|223344556677885f5f5f5f5f 32 intel paddusb xmm2, xmmword ptr [ecx] -660fdc11|223344556677885f5f5f5f5f 32 plan9 PADDUSB 0(CX), X2 -660fdc11|223344556677885f5f5f5f5f 64 gnu paddusb (%rcx),%xmm2 -660fdc11|223344556677885f5f5f5f5f 64 intel paddusb xmm2, xmmword ptr [rcx] -660fdc11|223344556677885f5f5f5f5f 64 plan9 PADDUSB 0(CX), X2 -660fdd11|223344556677885f5f5f5f5f 32 intel paddusw xmm2, xmmword ptr [ecx] -660fdd11|223344556677885f5f5f5f5f 32 plan9 PADDUSW 0(CX), X2 -660fdd11|223344556677885f5f5f5f5f 64 gnu paddusw (%rcx),%xmm2 -660fdd11|223344556677885f5f5f5f5f 64 intel paddusw xmm2, xmmword ptr [rcx] -660fdd11|223344556677885f5f5f5f5f 64 plan9 PADDUSW 0(CX), X2 -660fde11|223344556677885f5f5f5f5f 32 intel pmaxub xmm2, xmmword ptr [ecx] -660fde11|223344556677885f5f5f5f5f 32 plan9 PMAXUB 0(CX), X2 -660fde11|223344556677885f5f5f5f5f 64 gnu pmaxub (%rcx),%xmm2 -660fde11|223344556677885f5f5f5f5f 64 intel pmaxub xmm2, xmmword ptr [rcx] -660fde11|223344556677885f5f5f5f5f 64 plan9 PMAXUB 0(CX), X2 -660fdf11|223344556677885f5f5f5f5f 32 intel pandn xmm2, xmmword ptr [ecx] -660fdf11|223344556677885f5f5f5f5f 32 plan9 PANDN 0(CX), X2 -660fdf11|223344556677885f5f5f5f5f 64 gnu pandn (%rcx),%xmm2 -660fdf11|223344556677885f5f5f5f5f 64 intel pandn xmm2, xmmword ptr [rcx] -660fdf11|223344556677885f5f5f5f5f 64 plan9 PANDN 0(CX), X2 -660fe011|223344556677885f5f5f5f5f 32 intel pavgb xmm2, xmmword ptr [ecx] -660fe011|223344556677885f5f5f5f5f 32 plan9 PAVGB 0(CX), X2 -660fe011|223344556677885f5f5f5f5f 64 gnu pavgb (%rcx),%xmm2 -660fe011|223344556677885f5f5f5f5f 64 intel pavgb xmm2, xmmword ptr [rcx] -660fe011|223344556677885f5f5f5f5f 64 plan9 PAVGB 0(CX), X2 -660fe111|223344556677885f5f5f5f5f 32 intel psraw xmm2, xmmword ptr [ecx] -660fe111|223344556677885f5f5f5f5f 32 plan9 PSRAW 0(CX), X2 -660fe111|223344556677885f5f5f5f5f 64 gnu psraw (%rcx),%xmm2 -660fe111|223344556677885f5f5f5f5f 64 intel psraw xmm2, xmmword ptr [rcx] -660fe111|223344556677885f5f5f5f5f 64 plan9 PSRAW 0(CX), X2 -660fe211|223344556677885f5f5f5f5f 32 intel psrad xmm2, xmmword ptr [ecx] -660fe211|223344556677885f5f5f5f5f 32 plan9 PSRAD 0(CX), X2 -660fe211|223344556677885f5f5f5f5f 64 gnu psrad (%rcx),%xmm2 -660fe211|223344556677885f5f5f5f5f 64 intel psrad xmm2, xmmword ptr [rcx] -660fe211|223344556677885f5f5f5f5f 64 plan9 PSRAD 0(CX), X2 -660fe311|223344556677885f5f5f5f5f 32 intel pavgw xmm2, xmmword ptr [ecx] -660fe311|223344556677885f5f5f5f5f 32 plan9 PAVGW 0(CX), X2 -660fe311|223344556677885f5f5f5f5f 64 gnu pavgw (%rcx),%xmm2 -660fe311|223344556677885f5f5f5f5f 64 intel pavgw xmm2, xmmword ptr [rcx] -660fe311|223344556677885f5f5f5f5f 64 plan9 PAVGW 0(CX), X2 -660fe411|223344556677885f5f5f5f5f 32 intel pmulhuw xmm2, xmmword ptr [ecx] -660fe411|223344556677885f5f5f5f5f 32 plan9 PMULHUW 0(CX), X2 -660fe411|223344556677885f5f5f5f5f 64 gnu pmulhuw (%rcx),%xmm2 -660fe411|223344556677885f5f5f5f5f 64 intel pmulhuw xmm2, xmmword ptr [rcx] -660fe411|223344556677885f5f5f5f5f 64 plan9 PMULHUW 0(CX), X2 -660fe511|223344556677885f5f5f5f5f 32 intel pmulhw xmm2, xmmword ptr [ecx] -660fe511|223344556677885f5f5f5f5f 32 plan9 PMULHW 0(CX), X2 -660fe511|223344556677885f5f5f5f5f 64 gnu pmulhw (%rcx),%xmm2 -660fe511|223344556677885f5f5f5f5f 64 intel pmulhw xmm2, xmmword ptr [rcx] -660fe511|223344556677885f5f5f5f5f 64 plan9 PMULHW 0(CX), X2 -660fe611|223344556677885f5f5f5f5f 32 intel cvttpd2dq xmm2, xmmword ptr [ecx] -660fe611|223344556677885f5f5f5f5f 32 plan9 CVTTPD2DQ 0(CX), X2 -660fe611|223344556677885f5f5f5f5f 64 gnu cvttpd2dq (%rcx),%xmm2 -660fe611|223344556677885f5f5f5f5f 64 intel cvttpd2dq xmm2, xmmword ptr [rcx] -660fe611|223344556677885f5f5f5f5f 64 plan9 CVTTPD2DQ 0(CX), X2 -660fe711|223344556677885f5f5f5f5f 32 intel movntdq xmmword ptr [ecx], xmm2 -660fe711|223344556677885f5f5f5f5f 32 plan9 MOVNTDQ X2, 0(CX) -660fe711|223344556677885f5f5f5f5f 64 gnu movntdq %xmm2,(%rcx) -660fe711|223344556677885f5f5f5f5f 64 intel movntdq xmmword ptr [rcx], xmm2 -660fe711|223344556677885f5f5f5f5f 64 plan9 MOVNTDQ X2, 0(CX) -660fe811|223344556677885f5f5f5f5f 32 intel psubsb xmm2, xmmword ptr [ecx] -660fe811|223344556677885f5f5f5f5f 32 plan9 PSUBSB 0(CX), X2 -660fe811|223344556677885f5f5f5f5f 64 gnu psubsb (%rcx),%xmm2 -660fe811|223344556677885f5f5f5f5f 64 intel psubsb xmm2, xmmword ptr [rcx] -660fe811|223344556677885f5f5f5f5f 64 plan9 PSUBSB 0(CX), X2 -660fe911|223344556677885f5f5f5f5f 32 intel psubsw xmm2, xmmword ptr [ecx] -660fe911|223344556677885f5f5f5f5f 32 plan9 PSUBSW 0(CX), X2 -660fe911|223344556677885f5f5f5f5f 64 gnu psubsw (%rcx),%xmm2 -660fe911|223344556677885f5f5f5f5f 64 intel psubsw xmm2, xmmword ptr [rcx] -660fe911|223344556677885f5f5f5f5f 64 plan9 PSUBSW 0(CX), X2 -660fea11|223344556677885f5f5f5f5f 32 intel pminsw xmm2, xmmword ptr [ecx] -660fea11|223344556677885f5f5f5f5f 32 plan9 PMINSW 0(CX), X2 -660fea11|223344556677885f5f5f5f5f 64 gnu pminsw (%rcx),%xmm2 -660fea11|223344556677885f5f5f5f5f 64 intel pminsw xmm2, xmmword ptr [rcx] -660fea11|223344556677885f5f5f5f5f 64 plan9 PMINSW 0(CX), X2 -660feb11|223344556677885f5f5f5f5f 32 intel por xmm2, xmmword ptr [ecx] -660feb11|223344556677885f5f5f5f5f 32 plan9 POR 0(CX), X2 -660feb11|223344556677885f5f5f5f5f 64 gnu por (%rcx),%xmm2 -660feb11|223344556677885f5f5f5f5f 64 intel por xmm2, xmmword ptr [rcx] -660feb11|223344556677885f5f5f5f5f 64 plan9 POR 0(CX), X2 -660fec11|223344556677885f5f5f5f5f 32 intel paddsb xmm2, xmmword ptr [ecx] -660fec11|223344556677885f5f5f5f5f 32 plan9 PADDSB 0(CX), X2 -660fec11|223344556677885f5f5f5f5f 64 gnu paddsb (%rcx),%xmm2 -660fec11|223344556677885f5f5f5f5f 64 intel paddsb xmm2, xmmword ptr [rcx] -660fec11|223344556677885f5f5f5f5f 64 plan9 PADDSB 0(CX), X2 -660fed11|223344556677885f5f5f5f5f 32 intel paddsw xmm2, xmmword ptr [ecx] -660fed11|223344556677885f5f5f5f5f 32 plan9 PADDSW 0(CX), X2 -660fed11|223344556677885f5f5f5f5f 64 gnu paddsw (%rcx),%xmm2 -660fed11|223344556677885f5f5f5f5f 64 intel paddsw xmm2, xmmword ptr [rcx] -660fed11|223344556677885f5f5f5f5f 64 plan9 PADDSW 0(CX), X2 -660fee11|223344556677885f5f5f5f5f 32 intel pmaxsw xmm2, xmmword ptr [ecx] -660fee11|223344556677885f5f5f5f5f 32 plan9 PMAXSW 0(CX), X2 -660fee11|223344556677885f5f5f5f5f 64 gnu pmaxsw (%rcx),%xmm2 -660fee11|223344556677885f5f5f5f5f 64 intel pmaxsw xmm2, xmmword ptr [rcx] -660fee11|223344556677885f5f5f5f5f 64 plan9 PMAXSW 0(CX), X2 -660fef11|223344556677885f5f5f5f5f 32 intel pxor xmm2, xmmword ptr [ecx] -660fef11|223344556677885f5f5f5f5f 32 plan9 PXOR 0(CX), X2 -660fef11|223344556677885f5f5f5f5f 64 gnu pxor (%rcx),%xmm2 -660fef11|223344556677885f5f5f5f5f 64 intel pxor xmm2, xmmword ptr [rcx] -660fef11|223344556677885f5f5f5f5f 64 plan9 PXOR 0(CX), X2 -660ff111|223344556677885f5f5f5f5f 32 intel psllw xmm2, xmmword ptr [ecx] -660ff111|223344556677885f5f5f5f5f 32 plan9 PSLLW 0(CX), X2 -660ff111|223344556677885f5f5f5f5f 64 gnu psllw (%rcx),%xmm2 -660ff111|223344556677885f5f5f5f5f 64 intel psllw xmm2, xmmword ptr [rcx] -660ff111|223344556677885f5f5f5f5f 64 plan9 PSLLW 0(CX), X2 -660ff211|223344556677885f5f5f5f5f 32 intel pslld xmm2, xmmword ptr [ecx] -660ff211|223344556677885f5f5f5f5f 32 plan9 PSLLD 0(CX), X2 -660ff211|223344556677885f5f5f5f5f 64 gnu pslld (%rcx),%xmm2 -660ff211|223344556677885f5f5f5f5f 64 intel pslld xmm2, xmmword ptr [rcx] -660ff211|223344556677885f5f5f5f5f 64 plan9 PSLLD 0(CX), X2 -660ff311|223344556677885f5f5f5f5f 32 intel psllq xmm2, xmmword ptr [ecx] -660ff311|223344556677885f5f5f5f5f 32 plan9 PSLLQ 0(CX), X2 -660ff311|223344556677885f5f5f5f5f 64 gnu psllq (%rcx),%xmm2 -660ff311|223344556677885f5f5f5f5f 64 intel psllq xmm2, xmmword ptr [rcx] -660ff311|223344556677885f5f5f5f5f 64 plan9 PSLLQ 0(CX), X2 -660ff411|223344556677885f5f5f5f5f 32 intel pmuludq xmm2, xmmword ptr [ecx] -660ff411|223344556677885f5f5f5f5f 32 plan9 PMULUDQ 0(CX), X2 -660ff411|223344556677885f5f5f5f5f 64 gnu pmuludq (%rcx),%xmm2 -660ff411|223344556677885f5f5f5f5f 64 intel pmuludq xmm2, xmmword ptr [rcx] -660ff411|223344556677885f5f5f5f5f 64 plan9 PMULUDQ 0(CX), X2 -660ff511|223344556677885f5f5f5f5f 32 intel pmaddwd xmm2, xmmword ptr [ecx] -660ff511|223344556677885f5f5f5f5f 32 plan9 PMADDWD 0(CX), X2 -660ff511|223344556677885f5f5f5f5f 64 gnu pmaddwd (%rcx),%xmm2 -660ff511|223344556677885f5f5f5f5f 64 intel pmaddwd xmm2, xmmword ptr [rcx] -660ff511|223344556677885f5f5f5f5f 64 plan9 PMADDWD 0(CX), X2 -660ff611|223344556677885f5f5f5f5f 32 intel psadbw xmm2, xmmword ptr [ecx] -660ff611|223344556677885f5f5f5f5f 32 plan9 PSADBW 0(CX), X2 -660ff611|223344556677885f5f5f5f5f 64 gnu psadbw (%rcx),%xmm2 -660ff611|223344556677885f5f5f5f5f 64 intel psadbw xmm2, xmmword ptr [rcx] -660ff611|223344556677885f5f5f5f5f 64 plan9 PSADBW 0(CX), X2 -660ff7c0|11223344556677885f5f5f5f 32 intel maskmovdqu xmm0, xmm0 -660ff7c0|11223344556677885f5f5f5f 32 plan9 MASKMOVDQU X0, X0 -660ff7c0|11223344556677885f5f5f5f 64 intel maskmovdqu xmm0, xmm0 -660ff7c0|11223344556677885f5f5f5f 64 plan9 MASKMOVDQU X0, X0 -660ff811|223344556677885f5f5f5f5f 32 intel psubb xmm2, xmmword ptr [ecx] -660ff811|223344556677885f5f5f5f5f 32 plan9 PSUBB 0(CX), X2 -660ff811|223344556677885f5f5f5f5f 64 gnu psubb (%rcx),%xmm2 -660ff811|223344556677885f5f5f5f5f 64 intel psubb xmm2, xmmword ptr [rcx] -660ff811|223344556677885f5f5f5f5f 64 plan9 PSUBB 0(CX), X2 -660ff911|223344556677885f5f5f5f5f 32 intel psubw xmm2, xmmword ptr [ecx] -660ff911|223344556677885f5f5f5f5f 32 plan9 PSUBW 0(CX), X2 -660ff911|223344556677885f5f5f5f5f 64 gnu psubw (%rcx),%xmm2 -660ff911|223344556677885f5f5f5f5f 64 intel psubw xmm2, xmmword ptr [rcx] -660ff911|223344556677885f5f5f5f5f 64 plan9 PSUBW 0(CX), X2 -660ffa11|223344556677885f5f5f5f5f 32 intel psubd xmm2, xmmword ptr [ecx] -660ffa11|223344556677885f5f5f5f5f 32 plan9 PSUBD 0(CX), X2 -660ffa11|223344556677885f5f5f5f5f 64 gnu psubd (%rcx),%xmm2 -660ffa11|223344556677885f5f5f5f5f 64 intel psubd xmm2, xmmword ptr [rcx] -660ffa11|223344556677885f5f5f5f5f 64 plan9 PSUBD 0(CX), X2 -660ffb11|223344556677885f5f5f5f5f 32 intel psubq xmm2, xmmword ptr [ecx] -660ffb11|223344556677885f5f5f5f5f 32 plan9 PSUBQ 0(CX), X2 -660ffb11|223344556677885f5f5f5f5f 64 gnu psubq (%rcx),%xmm2 -660ffb11|223344556677885f5f5f5f5f 64 intel psubq xmm2, xmmword ptr [rcx] -660ffb11|223344556677885f5f5f5f5f 64 plan9 PSUBQ 0(CX), X2 -660ffc11|223344556677885f5f5f5f5f 32 intel paddb xmm2, xmmword ptr [ecx] -660ffc11|223344556677885f5f5f5f5f 32 plan9 PADDB 0(CX), X2 -660ffc11|223344556677885f5f5f5f5f 64 gnu paddb (%rcx),%xmm2 -660ffc11|223344556677885f5f5f5f5f 64 intel paddb xmm2, xmmword ptr [rcx] -660ffc11|223344556677885f5f5f5f5f 64 plan9 PADDB 0(CX), X2 -660ffd11|223344556677885f5f5f5f5f 32 intel paddw xmm2, xmmword ptr [ecx] -660ffd11|223344556677885f5f5f5f5f 32 plan9 PADDW 0(CX), X2 -660ffd11|223344556677885f5f5f5f5f 64 gnu paddw (%rcx),%xmm2 -660ffd11|223344556677885f5f5f5f5f 64 intel paddw xmm2, xmmword ptr [rcx] -660ffd11|223344556677885f5f5f5f5f 64 plan9 PADDW 0(CX), X2 -660ffe11|223344556677885f5f5f5f5f 32 intel paddd xmm2, xmmword ptr [ecx] -660ffe11|223344556677885f5f5f5f5f 32 plan9 PADDD 0(CX), X2 -660ffe11|223344556677885f5f5f5f5f 64 gnu paddd (%rcx),%xmm2 -660ffe11|223344556677885f5f5f5f5f 64 intel paddd xmm2, xmmword ptr [rcx] -660ffe11|223344556677885f5f5f5f5f 64 plan9 PADDD 0(CX), X2 -661122|3344556677885f5f5f5f5f5f5f 32 intel adc word ptr [edx], sp -661122|3344556677885f5f5f5f5f5f5f 32 plan9 ADCW SP, 0(DX) -661122|3344556677885f5f5f5f5f5f5f 64 gnu adc %sp,(%rdx) -661122|3344556677885f5f5f5f5f5f5f 64 intel adc word ptr [rdx], sp -661122|3344556677885f5f5f5f5f5f5f 64 plan9 ADCW SP, 0(DX) -661311|223344556677885f5f5f5f5f5f 32 intel adc dx, word ptr [ecx] -661311|223344556677885f5f5f5f5f5f 32 plan9 ADCW 0(CX), DX -661311|223344556677885f5f5f5f5f5f 64 gnu adc (%rcx),%dx -661311|223344556677885f5f5f5f5f5f 64 intel adc dx, word ptr [rcx] -661311|223344556677885f5f5f5f5f5f 64 plan9 ADCW 0(CX), DX -66151122|3344556677885f5f5f5f5f5f 32 intel adc ax, 0x2211 -66151122|3344556677885f5f5f5f5f5f 32 plan9 ADCW $0x2211, AX -66151122|3344556677885f5f5f5f5f5f 64 gnu adc $0x2211,%ax -66151122|3344556677885f5f5f5f5f5f 64 intel adc ax, 0x2211 -66151122|3344556677885f5f5f5f5f5f 64 plan9 ADCW $0x2211, AX -661911|223344556677885f5f5f5f5f5f 32 intel sbb word ptr [ecx], dx -661911|223344556677885f5f5f5f5f5f 32 plan9 SBBW DX, 0(CX) -661911|223344556677885f5f5f5f5f5f 64 gnu sbb %dx,(%rcx) -661911|223344556677885f5f5f5f5f5f 64 intel sbb word ptr [rcx], dx -661911|223344556677885f5f5f5f5f5f 64 plan9 SBBW DX, 0(CX) -661b11|223344556677885f5f5f5f5f5f 32 intel sbb dx, word ptr [ecx] -661b11|223344556677885f5f5f5f5f5f 32 plan9 SBBW 0(CX), DX -661b11|223344556677885f5f5f5f5f5f 64 gnu sbb (%rcx),%dx -661b11|223344556677885f5f5f5f5f5f 64 intel sbb dx, word ptr [rcx] -661b11|223344556677885f5f5f5f5f5f 64 plan9 SBBW 0(CX), DX -661d1122|3344556677885f5f5f5f5f5f 32 intel sbb ax, 0x2211 -661d1122|3344556677885f5f5f5f5f5f 32 plan9 SBBW $0x2211, AX -661d1122|3344556677885f5f5f5f5f5f 64 gnu sbb $0x2211,%ax -661d1122|3344556677885f5f5f5f5f5f 64 intel sbb ax, 0x2211 -661d1122|3344556677885f5f5f5f5f5f 64 plan9 SBBW $0x2211, AX -662111|223344556677885f5f5f5f5f5f 32 intel and word ptr [ecx], dx -662111|223344556677885f5f5f5f5f5f 32 plan9 ANDW DX, 0(CX) -662111|223344556677885f5f5f5f5f5f 64 gnu and %dx,(%rcx) -662111|223344556677885f5f5f5f5f5f 64 intel and word ptr [rcx], dx -662111|223344556677885f5f5f5f5f5f 64 plan9 ANDW DX, 0(CX) -662311|223344556677885f5f5f5f5f5f 32 intel and dx, word ptr [ecx] -662311|223344556677885f5f5f5f5f5f 32 plan9 ANDW 0(CX), DX -662311|223344556677885f5f5f5f5f5f 64 gnu and (%rcx),%dx -662311|223344556677885f5f5f5f5f5f 64 intel and dx, word ptr [rcx] -662311|223344556677885f5f5f5f5f5f 64 plan9 ANDW 0(CX), DX -66251122|3344556677885f5f5f5f5f5f 32 intel and ax, 0x2211 -66251122|3344556677885f5f5f5f5f5f 32 plan9 ANDW $0x2211, AX -66251122|3344556677885f5f5f5f5f5f 64 gnu and $0x2211,%ax -66251122|3344556677885f5f5f5f5f5f 64 intel and ax, 0x2211 -66251122|3344556677885f5f5f5f5f5f 64 plan9 ANDW $0x2211, AX -662911|223344556677885f5f5f5f5f5f 32 intel sub word ptr [ecx], dx -662911|223344556677885f5f5f5f5f5f 32 plan9 SUBW DX, 0(CX) -662911|223344556677885f5f5f5f5f5f 64 gnu sub %dx,(%rcx) -662911|223344556677885f5f5f5f5f5f 64 intel sub word ptr [rcx], dx -662911|223344556677885f5f5f5f5f5f 64 plan9 SUBW DX, 0(CX) -662b11|223344556677885f5f5f5f5f5f 32 intel sub dx, word ptr [ecx] -662b11|223344556677885f5f5f5f5f5f 32 plan9 SUBW 0(CX), DX -662b11|223344556677885f5f5f5f5f5f 64 gnu sub (%rcx),%dx -662b11|223344556677885f5f5f5f5f5f 64 intel sub dx, word ptr [rcx] -662b11|223344556677885f5f5f5f5f5f 64 plan9 SUBW 0(CX), DX -662d1122|3344556677885f5f5f5f5f5f 32 intel sub ax, 0x2211 -662d1122|3344556677885f5f5f5f5f5f 32 plan9 SUBW $0x2211, AX -662d1122|3344556677885f5f5f5f5f5f 64 gnu sub $0x2211,%ax -662d1122|3344556677885f5f5f5f5f5f 64 intel sub ax, 0x2211 -662d1122|3344556677885f5f5f5f5f5f 64 plan9 SUBW $0x2211, AX -663111|223344556677885f5f5f5f5f5f 32 intel xor word ptr [ecx], dx -663111|223344556677885f5f5f5f5f5f 32 plan9 XORW DX, 0(CX) -663111|223344556677885f5f5f5f5f5f 64 gnu xor %dx,(%rcx) -663111|223344556677885f5f5f5f5f5f 64 intel xor word ptr [rcx], dx -663111|223344556677885f5f5f5f5f5f 64 plan9 XORW DX, 0(CX) -663311|223344556677885f5f5f5f5f5f 32 intel xor dx, word ptr [ecx] -663311|223344556677885f5f5f5f5f5f 32 plan9 XORW 0(CX), DX -663311|223344556677885f5f5f5f5f5f 64 gnu xor (%rcx),%dx -663311|223344556677885f5f5f5f5f5f 64 intel xor dx, word ptr [rcx] -663311|223344556677885f5f5f5f5f5f 64 plan9 XORW 0(CX), DX -66351122|3344556677885f5f5f5f5f5f 32 intel xor ax, 0x2211 -66351122|3344556677885f5f5f5f5f5f 32 plan9 XORW $0x2211, AX -66351122|3344556677885f5f5f5f5f5f 64 gnu xor $0x2211,%ax -66351122|3344556677885f5f5f5f5f5f 64 intel xor ax, 0x2211 -66351122|3344556677885f5f5f5f5f5f 64 plan9 XORW $0x2211, AX -663911|223344556677885f5f5f5f5f5f 32 intel cmp word ptr [ecx], dx -663911|223344556677885f5f5f5f5f5f 32 plan9 CMPW DX, 0(CX) -663911|223344556677885f5f5f5f5f5f 64 gnu cmp %dx,(%rcx) -663911|223344556677885f5f5f5f5f5f 64 intel cmp word ptr [rcx], dx -663911|223344556677885f5f5f5f5f5f 64 plan9 CMPW DX, 0(CX) -663b11|223344556677885f5f5f5f5f5f 32 intel cmp dx, word ptr [ecx] -663b11|223344556677885f5f5f5f5f5f 32 plan9 CMPW 0(CX), DX -663b11|223344556677885f5f5f5f5f5f 64 gnu cmp (%rcx),%dx -663b11|223344556677885f5f5f5f5f5f 64 intel cmp dx, word ptr [rcx] -663b11|223344556677885f5f5f5f5f5f 64 plan9 CMPW 0(CX), DX -663d1122|3344556677885f5f5f5f5f5f 32 intel cmp ax, 0x2211 -663d1122|3344556677885f5f5f5f5f5f 32 plan9 CMPW $0x2211, AX -663d1122|3344556677885f5f5f5f5f5f 64 gnu cmp $0x2211,%ax -663d1122|3344556677885f5f5f5f5f5f 64 intel cmp ax, 0x2211 -663d1122|3344556677885f5f5f5f5f5f 64 plan9 CMPW $0x2211, AX -6640|11223344556677885f5f5f5f5f5f 32 intel inc ax -6640|11223344556677885f5f5f5f5f5f 32 plan9 INCW AX -66480f3a161122|3344556677885f5f5f 64 gnu pextrq $0x22,%xmm2,(%rcx) -66480f3a161122|3344556677885f5f5f 64 intel pextrq qword ptr [rcx], xmm2, 0x22 -66480f3a161122|3344556677885f5f5f 64 plan9 PEXTRQ $0x22, X2, 0(CX) -66480f3a221122|3344556677885f5f5f 64 gnu pinsrq $0x22,(%rcx),%xmm2 -66480f3a221122|3344556677885f5f5f 64 intel pinsrq xmm2, qword ptr [rcx], 0x22 -66480f3a221122|3344556677885f5f5f 64 plan9 PINSRQ $0x22, 0(CX), X2 -66480f6e11|223344556677885f5f5f5f 64 gnu movq (%rcx),%xmm2 -66480f6e11|223344556677885f5f5f5f 64 intel movq xmm2, qword ptr [rcx] -66480f6e11|223344556677885f5f5f5f 64 plan9 MOVQ 0(CX), X2 -66480f7e11|223344556677885f5f5f5f 64 gnu movq %xmm2,(%rcx) -66480f7e11|223344556677885f5f5f5f 64 intel movq qword ptr [rcx], xmm2 -66480f7e11|223344556677885f5f5f5f 64 plan9 MOVQ X2, 0(CX) -6648|0f3a1611223344556677885f5f5f 32 intel dec ax -6648|0f3a1611223344556677885f5f5f 32 plan9 DECW AX -6650|11223344556677885f5f5f5f5f5f 32 intel push ax -6650|11223344556677885f5f5f5f5f5f 32 plan9 PUSHW AX -6650|11223344556677885f5f5f5f5f5f 64 gnu push %ax -6650|11223344556677885f5f5f5f5f5f 64 intel push ax -6650|11223344556677885f5f5f5f5f5f 64 plan9 PUSHW AX -6658|11223344556677885f5f5f5f5f5f 32 intel pop ax -6658|11223344556677885f5f5f5f5f5f 32 plan9 POPW AX -6658|11223344556677885f5f5f5f5f5f 64 gnu pop %ax -6658|11223344556677885f5f5f5f5f5f 64 intel pop ax -6658|11223344556677885f5f5f5f5f5f 64 plan9 POPW AX -6660|11223344556677885f5f5f5f5f5f 32 intel data16 pusha -6660|11223344556677885f5f5f5f5f5f 32 plan9 PUSHAW -6661|11223344556677885f5f5f5f5f5f 32 intel data16 popa -6661|11223344556677885f5f5f5f5f5f 32 plan9 POPAW -666211|223344556677885f5f5f5f5f5f 32 intel bound dx, qword ptr [ecx] -666211|223344556677885f5f5f5f5f5f 32 plan9 BOUND 0(CX), DX -666311|223344556677885f5f5f5f5f5f 64 gnu movsxd (%rcx),%dx -666311|223344556677885f5f5f5f5f5f 64 intel movsxd dx, dword ptr [rcx] -666311|223344556677885f5f5f5f5f5f 64 plan9 MOVSXD 0(CX), DX -66681122|3344556677885f5f5f5f5f5f 32 intel push 0x2211 -66681122|3344556677885f5f5f5f5f5f 32 plan9 PUSHW $0x2211 -66681122|3344556677885f5f5f5f5f5f 64 gnu pushw $0x2211 -66681122|3344556677885f5f5f5f5f5f 64 intel push 0x2211 -66681122|3344556677885f5f5f5f5f5f 64 plan9 PUSHW $0x2211 -6669112233|44556677885f5f5f5f5f5f 32 intel imul dx, word ptr [ecx], 0x3322 -6669112233|44556677885f5f5f5f5f5f 32 plan9 IMULW $0x3322, 0(CX), DX -6669112233|44556677885f5f5f5f5f5f 64 gnu imul $0x3322,(%rcx),%dx -6669112233|44556677885f5f5f5f5f5f 64 intel imul dx, word ptr [rcx], 0x3322 -6669112233|44556677885f5f5f5f5f5f 64 plan9 IMULW $0x3322, 0(CX), DX -666b1122|3344556677885f5f5f5f5f5f 32 intel imul dx, word ptr [ecx], 0x22 -666b1122|3344556677885f5f5f5f5f5f 32 plan9 IMULW $0x22, 0(CX), DX -666b1122|3344556677885f5f5f5f5f5f 64 gnu imul $0x22,(%rcx),%dx -666b1122|3344556677885f5f5f5f5f5f 64 intel imul dx, word ptr [rcx], 0x22 -666b1122|3344556677885f5f5f5f5f5f 64 plan9 IMULW $0x22, 0(CX), DX -666d|11223344556677885f5f5f5f5f5f 32 intel data16 insw -666d|11223344556677885f5f5f5f5f5f 32 plan9 INSW DX, ES:0(DI) -666d|11223344556677885f5f5f5f5f5f 64 gnu insw (%dx),%es:(%rdi) -666d|11223344556677885f5f5f5f5f5f 64 intel data16 insw -666d|11223344556677885f5f5f5f5f5f 64 plan9 INSW DX, ES:0(DI) -666f|11223344556677885f5f5f5f5f5f 32 intel data16 outsw -666f|11223344556677885f5f5f5f5f5f 32 plan9 OUTSW DS:0(SI), DX -666f|11223344556677885f5f5f5f5f5f 64 gnu outsw %ds:(%rsi),(%dx) -666f|11223344556677885f5f5f5f5f5f 64 intel data16 outsw -666f|11223344556677885f5f5f5f5f5f 64 plan9 OUTSW DS:0(SI), DX -6681001122|3344556677885f5f5f5f5f 32 intel add word ptr [eax], 0x2211 -6681001122|3344556677885f5f5f5f5f 32 plan9 ADDW $0x2211, 0(AX) -6681001122|3344556677885f5f5f5f5f 64 gnu addw $0x2211,(%rax) -6681001122|3344556677885f5f5f5f5f 64 intel add word ptr [rax], 0x2211 -6681001122|3344556677885f5f5f5f5f 64 plan9 ADDW $0x2211, 0(AX) -6681081122|3344556677885f5f5f5f5f 32 intel or word ptr [eax], 0x2211 -6681081122|3344556677885f5f5f5f5f 32 plan9 ORW $0x2211, 0(AX) -6681081122|3344556677885f5f5f5f5f 64 gnu orw $0x2211,(%rax) -6681081122|3344556677885f5f5f5f5f 64 intel or word ptr [rax], 0x2211 -6681081122|3344556677885f5f5f5f5f 64 plan9 ORW $0x2211, 0(AX) -6681112233|44556677885f5f5f5f5f5f 32 intel adc word ptr [ecx], 0x3322 -6681112233|44556677885f5f5f5f5f5f 32 plan9 ADCW $0x3322, 0(CX) -6681112233|44556677885f5f5f5f5f5f 64 gnu adcw $0x3322,(%rcx) -6681112233|44556677885f5f5f5f5f5f 64 intel adc word ptr [rcx], 0x3322 -6681112233|44556677885f5f5f5f5f5f 64 plan9 ADCW $0x3322, 0(CX) -6681181122|3344556677885f5f5f5f5f 32 intel sbb word ptr [eax], 0x2211 -6681181122|3344556677885f5f5f5f5f 32 plan9 SBBW $0x2211, 0(AX) -6681181122|3344556677885f5f5f5f5f 64 gnu sbbw $0x2211,(%rax) -6681181122|3344556677885f5f5f5f5f 64 intel sbb word ptr [rax], 0x2211 -6681181122|3344556677885f5f5f5f5f 64 plan9 SBBW $0x2211, 0(AX) -6681201122|3344556677885f5f5f5f5f 32 intel and word ptr [eax], 0x2211 -6681201122|3344556677885f5f5f5f5f 32 plan9 ANDW $0x2211, 0(AX) -6681201122|3344556677885f5f5f5f5f 64 gnu andw $0x2211,(%rax) -6681201122|3344556677885f5f5f5f5f 64 intel and word ptr [rax], 0x2211 -6681201122|3344556677885f5f5f5f5f 64 plan9 ANDW $0x2211, 0(AX) -6681281122|3344556677885f5f5f5f5f 32 intel sub word ptr [eax], 0x2211 -6681281122|3344556677885f5f5f5f5f 32 plan9 SUBW $0x2211, 0(AX) -6681281122|3344556677885f5f5f5f5f 64 gnu subw $0x2211,(%rax) -6681281122|3344556677885f5f5f5f5f 64 intel sub word ptr [rax], 0x2211 -6681281122|3344556677885f5f5f5f5f 64 plan9 SUBW $0x2211, 0(AX) -6681301122|3344556677885f5f5f5f5f 32 intel xor word ptr [eax], 0x2211 -6681301122|3344556677885f5f5f5f5f 32 plan9 XORW $0x2211, 0(AX) -6681301122|3344556677885f5f5f5f5f 64 gnu xorw $0x2211,(%rax) -6681301122|3344556677885f5f5f5f5f 64 intel xor word ptr [rax], 0x2211 -6681301122|3344556677885f5f5f5f5f 64 plan9 XORW $0x2211, 0(AX) -6681381122|3344556677885f5f5f5f5f 32 intel cmp word ptr [eax], 0x2211 -6681381122|3344556677885f5f5f5f5f 32 plan9 CMPW $0x2211, 0(AX) -6681381122|3344556677885f5f5f5f5f 64 gnu cmpw $0x2211,(%rax) -6681381122|3344556677885f5f5f5f5f 64 intel cmp word ptr [rax], 0x2211 -6681381122|3344556677885f5f5f5f5f 64 plan9 CMPW $0x2211, 0(AX) -66830011|223344556677885f5f5f5f5f 32 intel add word ptr [eax], 0x11 -66830011|223344556677885f5f5f5f5f 32 plan9 ADDW $0x11, 0(AX) -66830011|223344556677885f5f5f5f5f 64 gnu addw $0x11,(%rax) -66830011|223344556677885f5f5f5f5f 64 intel add word ptr [rax], 0x11 -66830011|223344556677885f5f5f5f5f 64 plan9 ADDW $0x11, 0(AX) -66830811|223344556677885f5f5f5f5f 32 intel or word ptr [eax], 0x11 -66830811|223344556677885f5f5f5f5f 32 plan9 ORW $0x11, 0(AX) -66830811|223344556677885f5f5f5f5f 64 gnu orw $0x11,(%rax) -66830811|223344556677885f5f5f5f5f 64 intel or word ptr [rax], 0x11 -66830811|223344556677885f5f5f5f5f 64 plan9 ORW $0x11, 0(AX) -66831122|3344556677885f5f5f5f5f5f 32 intel adc word ptr [ecx], 0x22 -66831122|3344556677885f5f5f5f5f5f 32 plan9 ADCW $0x22, 0(CX) -66831122|3344556677885f5f5f5f5f5f 64 gnu adcw $0x22,(%rcx) -66831122|3344556677885f5f5f5f5f5f 64 intel adc word ptr [rcx], 0x22 -66831122|3344556677885f5f5f5f5f5f 64 plan9 ADCW $0x22, 0(CX) -66831811|223344556677885f5f5f5f5f 32 intel sbb word ptr [eax], 0x11 -66831811|223344556677885f5f5f5f5f 32 plan9 SBBW $0x11, 0(AX) -66831811|223344556677885f5f5f5f5f 64 gnu sbbw $0x11,(%rax) -66831811|223344556677885f5f5f5f5f 64 intel sbb word ptr [rax], 0x11 -66831811|223344556677885f5f5f5f5f 64 plan9 SBBW $0x11, 0(AX) -66832011|223344556677885f5f5f5f5f 32 intel and word ptr [eax], 0x11 -66832011|223344556677885f5f5f5f5f 32 plan9 ANDW $0x11, 0(AX) -66832011|223344556677885f5f5f5f5f 64 gnu andw $0x11,(%rax) -66832011|223344556677885f5f5f5f5f 64 intel and word ptr [rax], 0x11 -66832011|223344556677885f5f5f5f5f 64 plan9 ANDW $0x11, 0(AX) -66832811|223344556677885f5f5f5f5f 32 intel sub word ptr [eax], 0x11 -66832811|223344556677885f5f5f5f5f 32 plan9 SUBW $0x11, 0(AX) -66832811|223344556677885f5f5f5f5f 64 gnu subw $0x11,(%rax) -66832811|223344556677885f5f5f5f5f 64 intel sub word ptr [rax], 0x11 -66832811|223344556677885f5f5f5f5f 64 plan9 SUBW $0x11, 0(AX) -66833011|223344556677885f5f5f5f5f 32 intel xor word ptr [eax], 0x11 -66833011|223344556677885f5f5f5f5f 32 plan9 XORW $0x11, 0(AX) -66833011|223344556677885f5f5f5f5f 64 gnu xorw $0x11,(%rax) -66833011|223344556677885f5f5f5f5f 64 intel xor word ptr [rax], 0x11 -66833011|223344556677885f5f5f5f5f 64 plan9 XORW $0x11, 0(AX) -66833811|223344556677885f5f5f5f5f 32 intel cmp word ptr [eax], 0x11 -66833811|223344556677885f5f5f5f5f 32 plan9 CMPW $0x11, 0(AX) -66833811|223344556677885f5f5f5f5f 64 gnu cmpw $0x11,(%rax) -66833811|223344556677885f5f5f5f5f 64 intel cmp word ptr [rax], 0x11 -66833811|223344556677885f5f5f5f5f 64 plan9 CMPW $0x11, 0(AX) -668511|223344556677885f5f5f5f5f5f 32 intel test word ptr [ecx], dx -668511|223344556677885f5f5f5f5f5f 32 plan9 TESTW DX, 0(CX) -668511|223344556677885f5f5f5f5f5f 64 gnu test %dx,(%rcx) -668511|223344556677885f5f5f5f5f5f 64 intel test word ptr [rcx], dx -668511|223344556677885f5f5f5f5f5f 64 plan9 TESTW DX, 0(CX) -668711|223344556677885f5f5f5f5f5f 32 intel xchg word ptr [ecx], dx -668711|223344556677885f5f5f5f5f5f 32 plan9 XCHGW DX, 0(CX) -668711|223344556677885f5f5f5f5f5f 64 gnu xchg %dx,(%rcx) -668711|223344556677885f5f5f5f5f5f 64 intel xchg word ptr [rcx], dx -668711|223344556677885f5f5f5f5f5f 64 plan9 XCHGW DX, 0(CX) -668911|223344556677885f5f5f5f5f5f 32 intel mov word ptr [ecx], dx -668911|223344556677885f5f5f5f5f5f 32 plan9 MOVW DX, 0(CX) -668911|223344556677885f5f5f5f5f5f 64 gnu mov %dx,(%rcx) -668911|223344556677885f5f5f5f5f5f 64 intel mov word ptr [rcx], dx -668911|223344556677885f5f5f5f5f5f 64 plan9 MOVW DX, 0(CX) -668b11|223344556677885f5f5f5f5f5f 32 intel mov dx, word ptr [ecx] -668b11|223344556677885f5f5f5f5f5f 32 plan9 MOVW 0(CX), DX -668b11|223344556677885f5f5f5f5f5f 64 gnu mov (%rcx),%dx -668b11|223344556677885f5f5f5f5f5f 64 intel mov dx, word ptr [rcx] -668b11|223344556677885f5f5f5f5f5f 64 plan9 MOVW 0(CX), DX -668c11|223344556677885f5f5f5f5f5f 32 intel mov word ptr [ecx], ss -668c11|223344556677885f5f5f5f5f5f 32 plan9 MOVW SS, 0(CX) -668c11|223344556677885f5f5f5f5f5f 64 gnu data16 mov %ss,(%rcx) -668c11|223344556677885f5f5f5f5f5f 64 intel mov word ptr [rcx], ss -668c11|223344556677885f5f5f5f5f5f 64 plan9 MOVW SS, 0(CX) -668d11|223344556677885f5f5f5f5f5f 32 intel lea dx, ptr [ecx] -668d11|223344556677885f5f5f5f5f5f 32 plan9 LEAW 0(CX), DX -668d11|223344556677885f5f5f5f5f5f 64 gnu lea (%rcx),%dx -668d11|223344556677885f5f5f5f5f5f 64 intel lea dx, ptr [rcx] -668d11|223344556677885f5f5f5f5f5f 64 plan9 LEAW 0(CX), DX -668ec0|11223344556677885f5f5f5f5f 32 intel mov es, ax -668ec0|11223344556677885f5f5f5f5f 32 plan9 MOVW AX, ES -668ec0|11223344556677885f5f5f5f5f 64 gnu mov %ax,%es -668ec0|11223344556677885f5f5f5f5f 64 intel mov es, ax -668ec0|11223344556677885f5f5f5f5f 64 plan9 MOVW AX, ES -668f00|11223344556677885f5f5f5f5f 32 intel pop word ptr [eax] -668f00|11223344556677885f5f5f5f5f 32 plan9 POPW 0(AX) -668f00|11223344556677885f5f5f5f5f 64 gnu popw (%rax) -668f00|11223344556677885f5f5f5f5f 64 intel pop word ptr [rax] -668f00|11223344556677885f5f5f5f5f 64 plan9 POPW 0(AX) -6690|11223344556677885f5f5f5f5f5f 32 plan9 NOPW -6690|11223344556677885f5f5f5f5f5f 64 gnu data16 nop -6690|11223344556677885f5f5f5f5f5f 64 plan9 NOPW -6698|11223344556677885f5f5f5f5f5f 32 intel data16 cbw -6698|11223344556677885f5f5f5f5f5f 32 plan9 CBW -6698|11223344556677885f5f5f5f5f5f 64 gnu cbtw -6698|11223344556677885f5f5f5f5f5f 64 intel data16 cbw -6698|11223344556677885f5f5f5f5f5f 64 plan9 CBW -6699|11223344556677885f5f5f5f5f5f 32 intel data16 cwd -6699|11223344556677885f5f5f5f5f5f 32 plan9 CWD -6699|11223344556677885f5f5f5f5f5f 64 gnu cwtd -6699|11223344556677885f5f5f5f5f5f 64 intel data16 cwd -6699|11223344556677885f5f5f5f5f5f 64 plan9 CWD -669a11223344|556677885f5f5f5f5f5f 32 intel call far 0x2211, 0x4433 -669a11223344|556677885f5f5f5f5f5f 32 plan9 LCALL $0x2211, $0x4433 -669c|11223344556677885f5f5f5f5f5f 32 intel data16 pushf -669c|11223344556677885f5f5f5f5f5f 32 plan9 PUSHF -669c|11223344556677885f5f5f5f5f5f 64 gnu pushfw -669c|11223344556677885f5f5f5f5f5f 64 intel data16 pushf -669c|11223344556677885f5f5f5f5f5f 64 plan9 PUSHF -669d|11223344556677885f5f5f5f5f5f 32 intel data16 popf -669d|11223344556677885f5f5f5f5f5f 32 plan9 POPF -669d|11223344556677885f5f5f5f5f5f 64 gnu popfw -669d|11223344556677885f5f5f5f5f5f 64 intel data16 popf -669d|11223344556677885f5f5f5f5f5f 64 plan9 POPF -66a11122334455667788|5f5f5f5f5f5f 64 gnu mov -0x778899aabbccddef,%ax -66a11122334455667788|5f5f5f5f5f5f 64 intel mov ax, word ptr [0x8877665544332211] -66a11122334455667788|5f5f5f5f5f5f 64 plan9 MOVW -0x778899aabbccddef, AX -66a111223344|556677885f5f5f5f5f5f 32 intel mov ax, word ptr [0x44332211] -66a111223344|556677885f5f5f5f5f5f 32 plan9 MOVW 0x44332211, AX -66a31122334455667788|5f5f5f5f5f5f 64 gnu mov %ax,-0x778899aabbccddef -66a31122334455667788|5f5f5f5f5f5f 64 intel mov word ptr [0x8877665544332211], ax -66a31122334455667788|5f5f5f5f5f5f 64 plan9 MOVW AX, -0x778899aabbccddef -66a311223344|556677885f5f5f5f5f5f 32 intel mov word ptr [0x44332211], ax -66a311223344|556677885f5f5f5f5f5f 32 plan9 MOVW AX, 0x44332211 -66a5|11223344556677885f5f5f5f5f5f 32 intel movsw word ptr [edi], word ptr [esi] -66a5|11223344556677885f5f5f5f5f5f 32 plan9 MOVSW DS:0(SI), ES:0(DI) -66a5|11223344556677885f5f5f5f5f5f 64 gnu movsw %ds:(%rsi),%es:(%rdi) -66a5|11223344556677885f5f5f5f5f5f 64 intel movsw word ptr [rdi], word ptr [rsi] -66a5|11223344556677885f5f5f5f5f5f 64 plan9 MOVSW DS:0(SI), ES:0(DI) -66a7|11223344556677885f5f5f5f5f5f 32 intel cmpsw word ptr [esi], word ptr [edi] -66a7|11223344556677885f5f5f5f5f5f 32 plan9 CMPSW ES:0(DI), DS:0(SI) -66a7|11223344556677885f5f5f5f5f5f 64 gnu cmpsw %es:(%rdi),%ds:(%rsi) -66a7|11223344556677885f5f5f5f5f5f 64 intel cmpsw word ptr [rsi], word ptr [rdi] -66a7|11223344556677885f5f5f5f5f5f 64 plan9 CMPSW ES:0(DI), DS:0(SI) -66a91122|3344556677885f5f5f5f5f5f 32 intel test ax, 0x2211 -66a91122|3344556677885f5f5f5f5f5f 32 plan9 TESTW $0x2211, AX -66a91122|3344556677885f5f5f5f5f5f 64 gnu test $0x2211,%ax -66a91122|3344556677885f5f5f5f5f5f 64 intel test ax, 0x2211 -66a91122|3344556677885f5f5f5f5f5f 64 plan9 TESTW $0x2211, AX -66ab|11223344556677885f5f5f5f5f5f 32 intel stosw word ptr [edi] -66ab|11223344556677885f5f5f5f5f5f 32 plan9 STOSW AX, ES:0(DI) -66ab|11223344556677885f5f5f5f5f5f 64 gnu stos %ax,%es:(%rdi) -66ab|11223344556677885f5f5f5f5f5f 64 intel stosw word ptr [rdi] -66ab|11223344556677885f5f5f5f5f5f 64 plan9 STOSW AX, ES:0(DI) -66ad|11223344556677885f5f5f5f5f5f 32 intel lodsw word ptr [esi] -66ad|11223344556677885f5f5f5f5f5f 32 plan9 LODSW DS:0(SI), AX -66ad|11223344556677885f5f5f5f5f5f 64 gnu lods %ds:(%rsi),%ax -66ad|11223344556677885f5f5f5f5f5f 64 intel lodsw word ptr [rsi] -66ad|11223344556677885f5f5f5f5f5f 64 plan9 LODSW DS:0(SI), AX -66af|11223344556677885f5f5f5f5f5f 32 intel scasw word ptr [edi] -66af|11223344556677885f5f5f5f5f5f 32 plan9 SCASW ES:0(DI), AX -66af|11223344556677885f5f5f5f5f5f 64 gnu scas %es:(%rdi),%ax -66af|11223344556677885f5f5f5f5f5f 64 intel scasw word ptr [rdi] -66af|11223344556677885f5f5f5f5f5f 64 plan9 SCASW ES:0(DI), AX -66b81122|3344556677885f5f5f5f5f5f 32 intel mov ax, 0x2211 -66b81122|3344556677885f5f5f5f5f5f 32 plan9 MOVW $0x2211, AX -66b81122|3344556677885f5f5f5f5f5f 64 gnu mov $0x2211,%ax -66b81122|3344556677885f5f5f5f5f5f 64 intel mov ax, 0x2211 -66b81122|3344556677885f5f5f5f5f5f 64 plan9 MOVW $0x2211, AX -66c10011|223344556677885f5f5f5f5f 32 intel rol word ptr [eax], 0x11 -66c10011|223344556677885f5f5f5f5f 32 plan9 ROLW $0x11, 0(AX) -66c10011|223344556677885f5f5f5f5f 64 gnu rolw $0x11,(%rax) -66c10011|223344556677885f5f5f5f5f 64 intel rol word ptr [rax], 0x11 -66c10011|223344556677885f5f5f5f5f 64 plan9 ROLW $0x11, 0(AX) -66c10811|223344556677885f5f5f5f5f 32 intel ror word ptr [eax], 0x11 -66c10811|223344556677885f5f5f5f5f 32 plan9 RORW $0x11, 0(AX) -66c10811|223344556677885f5f5f5f5f 64 gnu rorw $0x11,(%rax) -66c10811|223344556677885f5f5f5f5f 64 intel ror word ptr [rax], 0x11 -66c10811|223344556677885f5f5f5f5f 64 plan9 RORW $0x11, 0(AX) -66c11122|3344556677885f5f5f5f5f5f 32 intel rcl word ptr [ecx], 0x22 -66c11122|3344556677885f5f5f5f5f5f 32 plan9 RCLW $0x22, 0(CX) -66c11122|3344556677885f5f5f5f5f5f 64 gnu rclw $0x22,(%rcx) -66c11122|3344556677885f5f5f5f5f5f 64 intel rcl word ptr [rcx], 0x22 -66c11122|3344556677885f5f5f5f5f5f 64 plan9 RCLW $0x22, 0(CX) -66c11811|223344556677885f5f5f5f5f 32 intel rcr word ptr [eax], 0x11 -66c11811|223344556677885f5f5f5f5f 32 plan9 RCRW $0x11, 0(AX) -66c11811|223344556677885f5f5f5f5f 64 gnu rcrw $0x11,(%rax) -66c11811|223344556677885f5f5f5f5f 64 intel rcr word ptr [rax], 0x11 -66c11811|223344556677885f5f5f5f5f 64 plan9 RCRW $0x11, 0(AX) -66c12011|223344556677885f5f5f5f5f 32 intel shl word ptr [eax], 0x11 -66c12011|223344556677885f5f5f5f5f 32 plan9 SHLW $0x11, 0(AX) -66c12011|223344556677885f5f5f5f5f 64 gnu shlw $0x11,(%rax) -66c12011|223344556677885f5f5f5f5f 64 intel shl word ptr [rax], 0x11 -66c12011|223344556677885f5f5f5f5f 64 plan9 SHLW $0x11, 0(AX) -66c12811|223344556677885f5f5f5f5f 32 intel shr word ptr [eax], 0x11 -66c12811|223344556677885f5f5f5f5f 32 plan9 SHRW $0x11, 0(AX) -66c12811|223344556677885f5f5f5f5f 64 gnu shrw $0x11,(%rax) -66c12811|223344556677885f5f5f5f5f 64 intel shr word ptr [rax], 0x11 -66c12811|223344556677885f5f5f5f5f 64 plan9 SHRW $0x11, 0(AX) -66c13811|223344556677885f5f5f5f5f 32 intel sar word ptr [eax], 0x11 -66c13811|223344556677885f5f5f5f5f 32 plan9 SARW $0x11, 0(AX) -66c13811|223344556677885f5f5f5f5f 64 gnu sarw $0x11,(%rax) -66c13811|223344556677885f5f5f5f5f 64 intel sar word ptr [rax], 0x11 -66c13811|223344556677885f5f5f5f5f 64 plan9 SARW $0x11, 0(AX) -66c21122|3344556677885f5f5f5f5f5f 32 intel ret 0x2211 -66c21122|3344556677885f5f5f5f5f5f 32 plan9 RET $0x2211 -66c21122|3344556677885f5f5f5f5f5f 64 gnu retw $0x2211 -66c21122|3344556677885f5f5f5f5f5f 64 intel ret 0x2211 -66c21122|3344556677885f5f5f5f5f5f 64 plan9 RET $0x2211 -66c411|223344556677885f5f5f5f5f5f 32 intel les dx, dword ptr [ecx] -66c411|223344556677885f5f5f5f5f5f 32 plan9 LES 0(CX), DX -66c511|223344556677885f5f5f5f5f5f 32 intel lds dx, dword ptr [ecx] -66c511|223344556677885f5f5f5f5f5f 32 plan9 LDS 0(CX), DX -66c7001122|3344556677885f5f5f5f5f 32 intel mov word ptr [eax], 0x2211 -66c7001122|3344556677885f5f5f5f5f 32 plan9 MOVW $0x2211, 0(AX) -66c7001122|3344556677885f5f5f5f5f 64 gnu movw $0x2211,(%rax) -66c7001122|3344556677885f5f5f5f5f 64 intel mov word ptr [rax], 0x2211 -66c7001122|3344556677885f5f5f5f5f 64 plan9 MOVW $0x2211, 0(AX) -66c7f81122|3344556677885f5f5f5f5f 32 intel xbegin .+0x2211 -66c7f81122|3344556677885f5f5f5f5f 32 plan9 XBEGIN .+8721 -66c7f81122|3344556677885f5f5f5f5f 64 gnu xbeginw .+0x2211 -66c7f81122|3344556677885f5f5f5f5f 64 intel xbegin .+0x2211 -66c7f81122|3344556677885f5f5f5f5f 64 plan9 XBEGIN .+8721 -66c9|11223344556677885f5f5f5f5f5f 32 intel data16 leave -66c9|11223344556677885f5f5f5f5f5f 32 plan9 LEAVE -66c9|11223344556677885f5f5f5f5f5f 64 gnu leavew -66c9|11223344556677885f5f5f5f5f5f 64 intel data16 leave -66c9|11223344556677885f5f5f5f5f5f 64 plan9 LEAVE -66cf|11223344556677885f5f5f5f5f5f 32 intel data16 iret -66cf|11223344556677885f5f5f5f5f5f 32 plan9 IRET -66cf|11223344556677885f5f5f5f5f5f 64 gnu iretw -66cf|11223344556677885f5f5f5f5f5f 64 intel data16 iret -66cf|11223344556677885f5f5f5f5f5f 64 plan9 IRET -66d100|11223344556677885f5f5f5f5f 32 intel rol word ptr [eax], 0x1 -66d100|11223344556677885f5f5f5f5f 32 plan9 ROLW $0x1, 0(AX) -66d100|11223344556677885f5f5f5f5f 64 gnu rolw (%rax) -66d100|11223344556677885f5f5f5f5f 64 intel rol word ptr [rax], 0x1 -66d100|11223344556677885f5f5f5f5f 64 plan9 ROLW $0x1, 0(AX) -66d108|11223344556677885f5f5f5f5f 32 intel ror word ptr [eax], 0x1 -66d108|11223344556677885f5f5f5f5f 32 plan9 RORW $0x1, 0(AX) -66d108|11223344556677885f5f5f5f5f 64 gnu rorw (%rax) -66d108|11223344556677885f5f5f5f5f 64 intel ror word ptr [rax], 0x1 -66d108|11223344556677885f5f5f5f5f 64 plan9 RORW $0x1, 0(AX) -66d111|223344556677885f5f5f5f5f5f 32 intel rcl word ptr [ecx], 0x1 -66d111|223344556677885f5f5f5f5f5f 32 plan9 RCLW $0x1, 0(CX) -66d111|223344556677885f5f5f5f5f5f 64 gnu rclw (%rcx) -66d111|223344556677885f5f5f5f5f5f 64 intel rcl word ptr [rcx], 0x1 -66d111|223344556677885f5f5f5f5f5f 64 plan9 RCLW $0x1, 0(CX) -66d118|11223344556677885f5f5f5f5f 32 intel rcr word ptr [eax], 0x1 -66d118|11223344556677885f5f5f5f5f 32 plan9 RCRW $0x1, 0(AX) -66d118|11223344556677885f5f5f5f5f 64 gnu rcrw (%rax) -66d118|11223344556677885f5f5f5f5f 64 intel rcr word ptr [rax], 0x1 -66d118|11223344556677885f5f5f5f5f 64 plan9 RCRW $0x1, 0(AX) -66d120|11223344556677885f5f5f5f5f 32 intel shl word ptr [eax], 0x1 -66d120|11223344556677885f5f5f5f5f 32 plan9 SHLW $0x1, 0(AX) -66d120|11223344556677885f5f5f5f5f 64 gnu shlw (%rax) -66d120|11223344556677885f5f5f5f5f 64 intel shl word ptr [rax], 0x1 -66d120|11223344556677885f5f5f5f5f 64 plan9 SHLW $0x1, 0(AX) -66d128|11223344556677885f5f5f5f5f 32 intel shr word ptr [eax], 0x1 -66d128|11223344556677885f5f5f5f5f 32 plan9 SHRW $0x1, 0(AX) -66d128|11223344556677885f5f5f5f5f 64 gnu shrw (%rax) -66d128|11223344556677885f5f5f5f5f 64 intel shr word ptr [rax], 0x1 -66d128|11223344556677885f5f5f5f5f 64 plan9 SHRW $0x1, 0(AX) -66d138|11223344556677885f5f5f5f5f 32 intel sar word ptr [eax], 0x1 -66d138|11223344556677885f5f5f5f5f 32 plan9 SARW $0x1, 0(AX) -66d138|11223344556677885f5f5f5f5f 64 gnu sarw (%rax) -66d138|11223344556677885f5f5f5f5f 64 intel sar word ptr [rax], 0x1 -66d138|11223344556677885f5f5f5f5f 64 plan9 SARW $0x1, 0(AX) -66d300|11223344556677885f5f5f5f5f 32 intel rol word ptr [eax], cl -66d300|11223344556677885f5f5f5f5f 32 plan9 ROLW CL, 0(AX) -66d300|11223344556677885f5f5f5f5f 64 gnu rolw %cl,(%rax) -66d300|11223344556677885f5f5f5f5f 64 intel rol word ptr [rax], cl -66d300|11223344556677885f5f5f5f5f 64 plan9 ROLW CL, 0(AX) -66d308|11223344556677885f5f5f5f5f 32 intel ror word ptr [eax], cl -66d308|11223344556677885f5f5f5f5f 32 plan9 RORW CL, 0(AX) -66d308|11223344556677885f5f5f5f5f 64 gnu rorw %cl,(%rax) -66d308|11223344556677885f5f5f5f5f 64 intel ror word ptr [rax], cl -66d308|11223344556677885f5f5f5f5f 64 plan9 RORW CL, 0(AX) -66d311|223344556677885f5f5f5f5f5f 32 intel rcl word ptr [ecx], cl -66d311|223344556677885f5f5f5f5f5f 32 plan9 RCLW CL, 0(CX) -66d311|223344556677885f5f5f5f5f5f 64 gnu rclw %cl,(%rcx) -66d311|223344556677885f5f5f5f5f5f 64 intel rcl word ptr [rcx], cl -66d311|223344556677885f5f5f5f5f5f 64 plan9 RCLW CL, 0(CX) -66d318|11223344556677885f5f5f5f5f 32 intel rcr word ptr [eax], cl -66d318|11223344556677885f5f5f5f5f 32 plan9 RCRW CL, 0(AX) -66d318|11223344556677885f5f5f5f5f 64 gnu rcrw %cl,(%rax) -66d318|11223344556677885f5f5f5f5f 64 intel rcr word ptr [rax], cl -66d318|11223344556677885f5f5f5f5f 64 plan9 RCRW CL, 0(AX) -66d320|11223344556677885f5f5f5f5f 32 intel shl word ptr [eax], cl -66d320|11223344556677885f5f5f5f5f 32 plan9 SHLW CL, 0(AX) -66d320|11223344556677885f5f5f5f5f 64 gnu shlw %cl,(%rax) -66d320|11223344556677885f5f5f5f5f 64 intel shl word ptr [rax], cl -66d320|11223344556677885f5f5f5f5f 64 plan9 SHLW CL, 0(AX) -66d328|11223344556677885f5f5f5f5f 32 intel shr word ptr [eax], cl -66d328|11223344556677885f5f5f5f5f 32 plan9 SHRW CL, 0(AX) -66d328|11223344556677885f5f5f5f5f 64 gnu shrw %cl,(%rax) -66d328|11223344556677885f5f5f5f5f 64 intel shr word ptr [rax], cl -66d328|11223344556677885f5f5f5f5f 64 plan9 SHRW CL, 0(AX) -66d338|11223344556677885f5f5f5f5f 32 intel sar word ptr [eax], cl -66d338|11223344556677885f5f5f5f5f 32 plan9 SARW CL, 0(AX) -66d338|11223344556677885f5f5f5f5f 64 gnu sarw %cl,(%rax) -66d338|11223344556677885f5f5f5f5f 64 intel sar word ptr [rax], cl -66d338|11223344556677885f5f5f5f5f 64 plan9 SARW CL, 0(AX) -66d411|223344556677885f5f5f5f5f5f 32 intel aam 0x11 -66d411|223344556677885f5f5f5f5f5f 32 plan9 AAM $0x11 -66d920|11223344556677885f5f5f5f5f 32 intel fldenv ptr [eax] -66d920|11223344556677885f5f5f5f5f 32 plan9 FLDENVW 0(AX) -66d920|11223344556677885f5f5f5f5f 64 gnu fldenvs (%rax) -66d920|11223344556677885f5f5f5f5f 64 intel fldenv ptr [rax] -66d920|11223344556677885f5f5f5f5f 64 plan9 FLDENVW 0(AX) -66e511|223344556677885f5f5f5f5f5f 32 intel in ax, 0x11 -66e511|223344556677885f5f5f5f5f5f 32 plan9 INW $0x11, AX -66e511|223344556677885f5f5f5f5f5f 64 gnu in $0x11,%ax -66e511|223344556677885f5f5f5f5f5f 64 intel in ax, 0x11 -66e511|223344556677885f5f5f5f5f5f 64 plan9 INW $0x11, AX -66e711|223344556677885f5f5f5f5f5f 32 intel out 0x11, ax -66e711|223344556677885f5f5f5f5f5f 32 plan9 OUTW AX, $0x11 -66e711|223344556677885f5f5f5f5f5f 64 gnu out %ax,$0x11 -66e711|223344556677885f5f5f5f5f5f 64 intel out 0x11, ax -66e711|223344556677885f5f5f5f5f5f 64 plan9 OUTW AX, $0x11 -66e811223344|556677885f5f5f5f5f5f 64 gnu callw .+0x44332211 -66e811223344|556677885f5f5f5f5f5f 64 intel call .+0x44332211 -66e811223344|556677885f5f5f5f5f5f 64 plan9 CALL .+1144201745 -66e81122|3344556677885f5f5f5f5f5f 32 intel call .+0x2211 -66e81122|3344556677885f5f5f5f5f5f 32 plan9 CALL .+8721 -66e911223344|556677885f5f5f5f5f5f 64 gnu jmpw .+0x44332211 -66e911223344|556677885f5f5f5f5f5f 64 intel jmp .+0x44332211 -66e911223344|556677885f5f5f5f5f5f 64 plan9 JMP .+1144201745 -66e91122|3344556677885f5f5f5f5f5f 32 intel jmp .+0x2211 -66e91122|3344556677885f5f5f5f5f5f 32 plan9 JMP .+8721 -66ea11223344|556677885f5f5f5f5f5f 32 intel jmp far 0x2211, 0x4433 -66ea11223344|556677885f5f5f5f5f5f 32 plan9 LJMP $0x2211, $0x4433 -66ed|11223344556677885f5f5f5f5f5f 32 intel in ax, dx -66ed|11223344556677885f5f5f5f5f5f 32 plan9 INW DX, AX -66ed|11223344556677885f5f5f5f5f5f 64 gnu in (%dx),%ax -66ed|11223344556677885f5f5f5f5f5f 64 intel in ax, dx -66ed|11223344556677885f5f5f5f5f5f 64 plan9 INW DX, AX -66ef|11223344556677885f5f5f5f5f5f 32 intel out dx, ax -66ef|11223344556677885f5f5f5f5f5f 32 plan9 OUTW AX, DX -66ef|11223344556677885f5f5f5f5f5f 64 gnu out %ax,(%dx) -66ef|11223344556677885f5f5f5f5f5f 64 intel out dx, ax -66ef|11223344556677885f5f5f5f5f5f 64 plan9 OUTW AX, DX -66f20f2a11|223344556677885f5f5f5f 32 intel cvtsi2sd xmm2, dword ptr [ecx] -66f20f2a11|223344556677885f5f5f5f 32 plan9 CVTSI2SDL 0(CX), X2 -66f20f2a11|223344556677885f5f5f5f 64 gnu cvtsi2sdl (%rcx),%xmm2 -66f20f2a11|223344556677885f5f5f5f 64 intel cvtsi2sd xmm2, dword ptr [rcx] -66f20f2a11|223344556677885f5f5f5f 64 plan9 CVTSI2SDL 0(CX), X2 -# the Q extension is the size of the source float64 in memory. The destination is L. -66f20f2c11|223344556677885f5f5f5f 32 intel cvttsd2si edx, qword ptr [ecx] -66f20f2c11|223344556677885f5f5f5f 32 plan9 CVTTSD2SIQ 0(CX), DX -66f20f2c11|223344556677885f5f5f5f 64 gnu cvttsd2si (%rcx),%dx -66f20f2c11|223344556677885f5f5f5f 64 intel cvttsd2si edx, qword ptr [rcx] -66f20f2c11|223344556677885f5f5f5f 64 plan9 CVTTSD2SIQ 0(CX), DX -66f20f2d11|223344556677885f5f5f5f 32 intel cvtsd2si edx, qword ptr [ecx] -66f20f2d11|223344556677885f5f5f5f 32 plan9 CVTSD2SIQ 0(CX), DX -66f20f2d11|223344556677885f5f5f5f 64 gnu cvtsd2si (%rcx),%dx -66f20f2d11|223344556677885f5f5f5f 64 intel cvtsd2si edx, qword ptr [rcx] -66f20f2d11|223344556677885f5f5f5f 64 plan9 CVTSD2SIQ 0(CX), DX -66f20f38f011|223344556677885f5f5f 32 intel crc32 edx, byte ptr [ecx] -66f20f38f011|223344556677885f5f5f 32 plan9 CRC32 0(CX), DX -66f20f38f011|223344556677885f5f5f 64 gnu crc32b (%rcx),%edx -66f20f38f011|223344556677885f5f5f 64 intel crc32 edx, byte ptr [rcx] -66f20f38f011|223344556677885f5f5f 64 plan9 CRC32 0(CX), DX -66f30f2c11|223344556677885f5f5f5f 32 intel cvttss2si edx, dword ptr [ecx] -66f30f2c11|223344556677885f5f5f5f 32 plan9 CVTTSS2SIL 0(CX), DX -66f30f2c11|223344556677885f5f5f5f 64 gnu cvttss2si (%rcx),%dx -66f30f2c11|223344556677885f5f5f5f 64 intel cvttss2si edx, dword ptr [rcx] -66f30f2c11|223344556677885f5f5f5f 64 plan9 CVTTSS2SIL 0(CX), DX -66f30f2d11|223344556677885f5f5f5f 32 intel cvtss2si edx, dword ptr [ecx] -66f30f2d11|223344556677885f5f5f5f 32 plan9 CVTSS2SIL 0(CX), DX -66f30f2d11|223344556677885f5f5f5f 64 gnu cvtss2si (%rcx),%dx -66f30f2d11|223344556677885f5f5f5f 64 intel cvtss2si edx, dword ptr [rcx] -66f30f2d11|223344556677885f5f5f5f 64 plan9 CVTSS2SIL 0(CX), DX -66f30fae11|223344556677885f5f5f5f 64 gnu wrfsbasel (%rcx) -66f30fae11|223344556677885f5f5f5f 64 intel wrfsbase dword ptr [rcx] -66f30fae11|223344556677885f5f5f5f 64 plan9 WRFSBASE 0(CX) -66f30fae18|11223344556677885f5f5f 64 gnu wrgsbasel (%rax) -66f30fae18|11223344556677885f5f5f 64 intel wrgsbase dword ptr [rax] -66f30fae18|11223344556677885f5f5f 64 plan9 WRGSBASE 0(AX) -66f30faec0|11223344556677885f5f5f 64 gnu rdfsbase %eax -66f30faec0|11223344556677885f5f5f 64 intel rdfsbase eax -66f30faec0|11223344556677885f5f5f 64 plan9 RDFSBASE AX -66f30faec8|11223344556677885f5f5f 64 gnu rdgsbase %eax -66f30faec8|11223344556677885f5f5f 64 intel rdgsbase eax -66f30faec8|11223344556677885f5f5f 64 plan9 RDGSBASE AX -66f30fd6c5|11223344556677885f5f5f 32 intel movq2dq xmm0, mmx5 -66f30fd6c5|11223344556677885f5f5f 32 plan9 MOVQ2DQ M5, X0 -66f30fd6c5|11223344556677885f5f5f 64 gnu movq2dq %mm5,%xmm0 -66f30fd6c5|11223344556677885f5f5f 64 intel movq2dq xmm0, mmx5 -66f30fd6c5|11223344556677885f5f5f 64 plan9 MOVQ2DQ M5, X0 -66f7001122|3344556677885f5f5f5f5f 32 intel test word ptr [eax], 0x2211 -66f7001122|3344556677885f5f5f5f5f 32 plan9 TESTW $0x2211, 0(AX) -66f7001122|3344556677885f5f5f5f5f 64 gnu testw $0x2211,(%rax) -66f7001122|3344556677885f5f5f5f5f 64 intel test word ptr [rax], 0x2211 -66f7001122|3344556677885f5f5f5f5f 64 plan9 TESTW $0x2211, 0(AX) -66f711|223344556677885f5f5f5f5f5f 32 intel not word ptr [ecx] -66f711|223344556677885f5f5f5f5f5f 32 plan9 NOTW 0(CX) -66f711|223344556677885f5f5f5f5f5f 64 gnu notw (%rcx) -66f711|223344556677885f5f5f5f5f5f 64 intel not word ptr [rcx] -66f711|223344556677885f5f5f5f5f5f 64 plan9 NOTW 0(CX) -66f718|11223344556677885f5f5f5f5f 32 intel neg word ptr [eax] -66f718|11223344556677885f5f5f5f5f 32 plan9 NEGW 0(AX) -66f718|11223344556677885f5f5f5f5f 64 gnu negw (%rax) -66f718|11223344556677885f5f5f5f5f 64 intel neg word ptr [rax] -66f718|11223344556677885f5f5f5f5f 64 plan9 NEGW 0(AX) -66f720|11223344556677885f5f5f5f5f 32 intel mul word ptr [eax] -66f720|11223344556677885f5f5f5f5f 32 plan9 MULW 0(AX) -66f720|11223344556677885f5f5f5f5f 64 gnu mulw (%rax) -66f720|11223344556677885f5f5f5f5f 64 intel mul word ptr [rax] -66f720|11223344556677885f5f5f5f5f 64 plan9 MULW 0(AX) -66f728|11223344556677885f5f5f5f5f 32 intel imul word ptr [eax] -66f728|11223344556677885f5f5f5f5f 32 plan9 IMULW 0(AX) -66f728|11223344556677885f5f5f5f5f 64 gnu imulw (%rax) -66f728|11223344556677885f5f5f5f5f 64 intel imul word ptr [rax] -66f728|11223344556677885f5f5f5f5f 64 plan9 IMULW 0(AX) -66f730|11223344556677885f5f5f5f5f 32 intel div word ptr [eax] -66f730|11223344556677885f5f5f5f5f 32 plan9 DIVW 0(AX) -66f730|11223344556677885f5f5f5f5f 64 gnu divw (%rax) -66f730|11223344556677885f5f5f5f5f 64 intel div word ptr [rax] -66f730|11223344556677885f5f5f5f5f 64 plan9 DIVW 0(AX) -66f738|11223344556677885f5f5f5f5f 32 intel idiv word ptr [eax] -66f738|11223344556677885f5f5f5f5f 32 plan9 IDIVW 0(AX) -66f738|11223344556677885f5f5f5f5f 64 gnu idivw (%rax) -66f738|11223344556677885f5f5f5f5f 64 intel idiv word ptr [rax] -66f738|11223344556677885f5f5f5f5f 64 plan9 IDIVW 0(AX) -66ff00|11223344556677885f5f5f5f5f 32 intel inc word ptr [eax] -66ff00|11223344556677885f5f5f5f5f 32 plan9 INCW 0(AX) -66ff00|11223344556677885f5f5f5f5f 64 gnu incw (%rax) -66ff00|11223344556677885f5f5f5f5f 64 intel inc word ptr [rax] -66ff00|11223344556677885f5f5f5f5f 64 plan9 INCW 0(AX) -66ff08|11223344556677885f5f5f5f5f 32 intel dec word ptr [eax] -66ff08|11223344556677885f5f5f5f5f 32 plan9 DECW 0(AX) -66ff08|11223344556677885f5f5f5f5f 64 gnu decw (%rax) -66ff08|11223344556677885f5f5f5f5f 64 intel dec word ptr [rax] -66ff08|11223344556677885f5f5f5f5f 64 plan9 DECW 0(AX) -66ff11|223344556677885f5f5f5f5f5f 32 intel call word ptr [ecx] -66ff11|223344556677885f5f5f5f5f5f 32 plan9 CALL 0(CX) -66ff11|223344556677885f5f5f5f5f5f 64 gnu callw *(%rcx) -66ff11|223344556677885f5f5f5f5f5f 64 intel call qword ptr [rcx] -66ff11|223344556677885f5f5f5f5f5f 64 plan9 CALL 0(CX) -66ff18|11223344556677885f5f5f5f5f 32 intel call far dword ptr [eax] -66ff18|11223344556677885f5f5f5f5f 32 plan9 LCALL 0(AX) -66ff18|11223344556677885f5f5f5f5f 64 gnu lcallw *(%rax) -66ff18|11223344556677885f5f5f5f5f 64 intel call far dword ptr [rax] -66ff18|11223344556677885f5f5f5f5f 64 plan9 LCALL 0(AX) -66ff20|11223344556677885f5f5f5f5f 32 intel jmp word ptr [eax] -66ff20|11223344556677885f5f5f5f5f 32 plan9 JMP 0(AX) -66ff20|11223344556677885f5f5f5f5f 64 gnu jmpw *(%rax) -66ff20|11223344556677885f5f5f5f5f 64 intel jmp qword ptr [rax] -66ff20|11223344556677885f5f5f5f5f 64 plan9 JMP 0(AX) -66ff28|11223344556677885f5f5f5f5f 32 intel jmp far dword ptr [eax] -66ff28|11223344556677885f5f5f5f5f 32 plan9 LJMP 0(AX) -66ff28|11223344556677885f5f5f5f5f 64 gnu ljmpw *(%rax) -66ff28|11223344556677885f5f5f5f5f 64 intel jmp far dword ptr [rax] -66ff28|11223344556677885f5f5f5f5f 64 plan9 LJMP 0(AX) -66ff30|11223344556677885f5f5f5f5f 32 intel push word ptr [eax] -66ff30|11223344556677885f5f5f5f5f 32 plan9 PUSHW 0(AX) -66ff30|11223344556677885f5f5f5f5f 64 gnu pushw (%rax) -66ff30|11223344556677885f5f5f5f5f 64 intel push word ptr [rax] -66ff30|11223344556677885f5f5f5f5f 64 plan9 PUSHW 0(AX) -66|9a11223344556677885f5f5f5f5f5f 64 gnu data16 -66|9a11223344556677885f5f5f5f5f5f 64 intel data16 -66|9a11223344556677885f5f5f5f5f5f 64 plan9 Op(0) -66|c411223344556677885f5f5f5f5f5f 64 gnu data16 -66|c411223344556677885f5f5f5f5f5f 64 intel data16 -66|c411223344556677885f5f5f5f5f5f 64 plan9 Op(0) -66|c511223344556677885f5f5f5f5f5f 64 gnu data16 -66|c511223344556677885f5f5f5f5f5f 64 intel data16 -66|c511223344556677885f5f5f5f5f5f 64 plan9 Op(0) -66|d411223344556677885f5f5f5f5f5f 64 gnu data16 -66|d411223344556677885f5f5f5f5f5f 64 intel data16 -66|d411223344556677885f5f5f5f5f5f 64 plan9 Op(0) -66|ea11223344556677885f5f5f5f5f5f 64 gnu data16 -66|ea11223344556677885f5f5f5f5f5f 64 intel data16 -66|ea11223344556677885f5f5f5f5f5f 64 plan9 Op(0) -676c|11223344556677885f5f5f5f5f5f 32 intel addr16 insb -676c|11223344556677885f5f5f5f5f5f 32 plan9 INSB DX, ES:0(DI) -676c|11223344556677885f5f5f5f5f5f 64 gnu insb (%dx),%es:(%edi) -676c|11223344556677885f5f5f5f5f5f 64 intel addr32 insb -676c|11223344556677885f5f5f5f5f5f 64 plan9 INSB DX, ES:0(DI) -67d7|11223344556677885f5f5f5f5f5f 32 intel addr16 xlat -67d7|11223344556677885f5f5f5f5f5f 32 plan9 XLATB DS:0(BX) -67d7|11223344556677885f5f5f5f5f5f 64 gnu xlat %ds:(%ebx) -67d7|11223344556677885f5f5f5f5f5f 64 intel addr32 xlat -67d7|11223344556677885f5f5f5f5f5f 64 plan9 XLATB DS:0(BX) -67e311|223344556677885f5f5f5f5f5f 32 intel addr16 jcxz .+0x11 -67e311|223344556677885f5f5f5f5f5f 32 plan9 JCXZ .+17 -67e311|223344556677885f5f5f5f5f5f 64 gnu jecxz .+0x11 -67e311|223344556677885f5f5f5f5f5f 64 intel addr32 jecxz .+0x11 -67e311|223344556677885f5f5f5f5f5f 64 plan9 JECXZ .+17 -6811223344|556677885f5f5f5f5f5f5f 32 intel push 0x44332211 -6811223344|556677885f5f5f5f5f5f5f 32 plan9 PUSHL $0x44332211 -6811223344|556677885f5f5f5f5f5f5f 64 gnu pushq $0x44332211 -6811223344|556677885f5f5f5f5f5f5f 64 intel push 0x44332211 -6811223344|556677885f5f5f5f5f5f5f 64 plan9 PUSHL $0x44332211 -691122334455|6677885f5f5f5f5f5f5f 32 intel imul edx, dword ptr [ecx], 0x55443322 -691122334455|6677885f5f5f5f5f5f5f 32 plan9 IMULL $0x55443322, 0(CX), DX -691122334455|6677885f5f5f5f5f5f5f 64 gnu imul $0x55443322,(%rcx),%edx -691122334455|6677885f5f5f5f5f5f5f 64 intel imul edx, dword ptr [rcx], 0x55443322 -691122334455|6677885f5f5f5f5f5f5f 64 plan9 IMULL $0x55443322, 0(CX), DX -6a11|223344556677885f5f5f5f5f5f5f 32 intel push 0x11 -6a11|223344556677885f5f5f5f5f5f5f 32 plan9 PUSHL $0x11 -6a11|223344556677885f5f5f5f5f5f5f 64 gnu pushq $0x11 -6a11|223344556677885f5f5f5f5f5f5f 64 intel push 0x11 -6a11|223344556677885f5f5f5f5f5f5f 64 plan9 PUSHL $0x11 -6b1122|3344556677885f5f5f5f5f5f5f 32 intel imul edx, dword ptr [ecx], 0x22 -6b1122|3344556677885f5f5f5f5f5f5f 32 plan9 IMULL $0x22, 0(CX), DX -6b1122|3344556677885f5f5f5f5f5f5f 64 gnu imul $0x22,(%rcx),%edx -6b1122|3344556677885f5f5f5f5f5f5f 64 intel imul edx, dword ptr [rcx], 0x22 -6b1122|3344556677885f5f5f5f5f5f5f 64 plan9 IMULL $0x22, 0(CX), DX -6d|11223344556677885f5f5f5f5f5f5f 32 intel insd -6d|11223344556677885f5f5f5f5f5f5f 32 plan9 INSD DX, ES:0(DI) -6d|11223344556677885f5f5f5f5f5f5f 64 gnu insl (%dx),%es:(%rdi) -6d|11223344556677885f5f5f5f5f5f5f 64 intel insd -6d|11223344556677885f5f5f5f5f5f5f 64 plan9 INSD DX, ES:0(DI) -6f|11223344556677885f5f5f5f5f5f5f 32 intel outsd -6f|11223344556677885f5f5f5f5f5f5f 32 plan9 OUTSD DS:0(SI), DX -6f|11223344556677885f5f5f5f5f5f5f 64 gnu outsl %ds:(%rsi),(%dx) -6f|11223344556677885f5f5f5f5f5f5f 64 intel outsd -6f|11223344556677885f5f5f5f5f5f5f 64 plan9 OUTSD DS:0(SI), DX -7111|223344556677885f5f5f5f5f5f5f 32 intel jno .+0x11 -7111|223344556677885f5f5f5f5f5f5f 32 plan9 JNO .+17 -7111|223344556677885f5f5f5f5f5f5f 64 gnu jno .+0x11 -7111|223344556677885f5f5f5f5f5f5f 64 intel jno .+0x11 -7111|223344556677885f5f5f5f5f5f5f 64 plan9 JNO .+17 -7211|223344556677885f5f5f5f5f5f5f 32 intel jb .+0x11 -7211|223344556677885f5f5f5f5f5f5f 32 plan9 JB .+17 -7211|223344556677885f5f5f5f5f5f5f 64 gnu jb .+0x11 -7211|223344556677885f5f5f5f5f5f5f 64 intel jb .+0x11 -7211|223344556677885f5f5f5f5f5f5f 64 plan9 JB .+17 -7311|223344556677885f5f5f5f5f5f5f 32 intel jnb .+0x11 -7311|223344556677885f5f5f5f5f5f5f 32 plan9 JAE .+17 -7311|223344556677885f5f5f5f5f5f5f 64 gnu jae .+0x11 -7311|223344556677885f5f5f5f5f5f5f 64 intel jnb .+0x11 -7311|223344556677885f5f5f5f5f5f5f 64 plan9 JAE .+17 -7411|223344556677885f5f5f5f5f5f5f 32 intel jz .+0x11 -7411|223344556677885f5f5f5f5f5f5f 32 plan9 JE .+17 -7411|223344556677885f5f5f5f5f5f5f 64 gnu je .+0x11 -7411|223344556677885f5f5f5f5f5f5f 64 intel jz .+0x11 -7411|223344556677885f5f5f5f5f5f5f 64 plan9 JE .+17 -7511|223344556677885f5f5f5f5f5f5f 32 intel jnz .+0x11 -7511|223344556677885f5f5f5f5f5f5f 32 plan9 JNE .+17 -7511|223344556677885f5f5f5f5f5f5f 64 gnu jne .+0x11 -7511|223344556677885f5f5f5f5f5f5f 64 intel jnz .+0x11 -7511|223344556677885f5f5f5f5f5f5f 64 plan9 JNE .+17 -7611|223344556677885f5f5f5f5f5f5f 32 intel jbe .+0x11 -7611|223344556677885f5f5f5f5f5f5f 32 plan9 JBE .+17 -7611|223344556677885f5f5f5f5f5f5f 64 gnu jbe .+0x11 -7611|223344556677885f5f5f5f5f5f5f 64 intel jbe .+0x11 -7611|223344556677885f5f5f5f5f5f5f 64 plan9 JBE .+17 -7711|223344556677885f5f5f5f5f5f5f 32 intel jnbe .+0x11 -7711|223344556677885f5f5f5f5f5f5f 32 plan9 JA .+17 -7711|223344556677885f5f5f5f5f5f5f 64 gnu ja .+0x11 -7711|223344556677885f5f5f5f5f5f5f 64 intel jnbe .+0x11 -7711|223344556677885f5f5f5f5f5f5f 64 plan9 JA .+17 -7811|223344556677885f5f5f5f5f5f5f 32 intel js .+0x11 -7811|223344556677885f5f5f5f5f5f5f 32 plan9 JS .+17 -7811|223344556677885f5f5f5f5f5f5f 64 gnu js .+0x11 -7811|223344556677885f5f5f5f5f5f5f 64 intel js .+0x11 -7811|223344556677885f5f5f5f5f5f5f 64 plan9 JS .+17 -7911|223344556677885f5f5f5f5f5f5f 32 intel jns .+0x11 -7911|223344556677885f5f5f5f5f5f5f 32 plan9 JNS .+17 -7911|223344556677885f5f5f5f5f5f5f 64 gnu jns .+0x11 -7911|223344556677885f5f5f5f5f5f5f 64 intel jns .+0x11 -7911|223344556677885f5f5f5f5f5f5f 64 plan9 JNS .+17 -7a11|223344556677885f5f5f5f5f5f5f 32 intel jp .+0x11 -7a11|223344556677885f5f5f5f5f5f5f 32 plan9 JP .+17 -7a11|223344556677885f5f5f5f5f5f5f 64 gnu jp .+0x11 -7a11|223344556677885f5f5f5f5f5f5f 64 intel jp .+0x11 -7a11|223344556677885f5f5f5f5f5f5f 64 plan9 JP .+17 -7b11|223344556677885f5f5f5f5f5f5f 32 intel jnp .+0x11 -7b11|223344556677885f5f5f5f5f5f5f 32 plan9 JNP .+17 -7b11|223344556677885f5f5f5f5f5f5f 64 gnu jnp .+0x11 -7b11|223344556677885f5f5f5f5f5f5f 64 intel jnp .+0x11 -7b11|223344556677885f5f5f5f5f5f5f 64 plan9 JNP .+17 -7c11|223344556677885f5f5f5f5f5f5f 32 intel jl .+0x11 -7c11|223344556677885f5f5f5f5f5f5f 32 plan9 JL .+17 -7c11|223344556677885f5f5f5f5f5f5f 64 gnu jl .+0x11 -7c11|223344556677885f5f5f5f5f5f5f 64 intel jl .+0x11 -7c11|223344556677885f5f5f5f5f5f5f 64 plan9 JL .+17 -7d11|223344556677885f5f5f5f5f5f5f 32 intel jnl .+0x11 -7d11|223344556677885f5f5f5f5f5f5f 32 plan9 JGE .+17 -7d11|223344556677885f5f5f5f5f5f5f 64 gnu jge .+0x11 -7d11|223344556677885f5f5f5f5f5f5f 64 intel jnl .+0x11 -7d11|223344556677885f5f5f5f5f5f5f 64 plan9 JGE .+17 -7e11|223344556677885f5f5f5f5f5f5f 32 intel jle .+0x11 -7e11|223344556677885f5f5f5f5f5f5f 32 plan9 JLE .+17 -7e11|223344556677885f5f5f5f5f5f5f 64 gnu jle .+0x11 -7e11|223344556677885f5f5f5f5f5f5f 64 intel jle .+0x11 -7e11|223344556677885f5f5f5f5f5f5f 64 plan9 JLE .+17 -7f11|223344556677885f5f5f5f5f5f5f 32 intel jnle .+0x11 -7f11|223344556677885f5f5f5f5f5f5f 32 plan9 JG .+17 -7f11|223344556677885f5f5f5f5f5f5f 64 gnu jg .+0x11 -7f11|223344556677885f5f5f5f5f5f5f 64 intel jnle .+0x11 -7f11|223344556677885f5f5f5f5f5f5f 64 plan9 JG .+17 -800011|223344556677885f5f5f5f5f5f 32 intel add byte ptr [eax], 0x11 -800011|223344556677885f5f5f5f5f5f 32 plan9 ADDB $0x11, 0(AX) -800011|223344556677885f5f5f5f5f5f 64 gnu addb $0x11,(%rax) -800011|223344556677885f5f5f5f5f5f 64 intel add byte ptr [rax], 0x11 -800011|223344556677885f5f5f5f5f5f 64 plan9 ADDB $0x11, 0(AX) -800811|223344556677885f5f5f5f5f5f 32 intel or byte ptr [eax], 0x11 -800811|223344556677885f5f5f5f5f5f 32 plan9 ORB $0x11, 0(AX) -800811|223344556677885f5f5f5f5f5f 64 gnu orb $0x11,(%rax) -800811|223344556677885f5f5f5f5f5f 64 intel or byte ptr [rax], 0x11 -800811|223344556677885f5f5f5f5f5f 64 plan9 ORB $0x11, 0(AX) -801122|3344556677885f5f5f5f5f5f5f 32 intel adc byte ptr [ecx], 0x22 -801122|3344556677885f5f5f5f5f5f5f 32 plan9 ADCB $0x22, 0(CX) -801122|3344556677885f5f5f5f5f5f5f 64 gnu adcb $0x22,(%rcx) -801122|3344556677885f5f5f5f5f5f5f 64 intel adc byte ptr [rcx], 0x22 -801122|3344556677885f5f5f5f5f5f5f 64 plan9 ADCB $0x22, 0(CX) -801811|223344556677885f5f5f5f5f5f 32 intel sbb byte ptr [eax], 0x11 -801811|223344556677885f5f5f5f5f5f 32 plan9 SBBB $0x11, 0(AX) -801811|223344556677885f5f5f5f5f5f 64 gnu sbbb $0x11,(%rax) -801811|223344556677885f5f5f5f5f5f 64 intel sbb byte ptr [rax], 0x11 -801811|223344556677885f5f5f5f5f5f 64 plan9 SBBB $0x11, 0(AX) -802011|223344556677885f5f5f5f5f5f 32 intel and byte ptr [eax], 0x11 -802011|223344556677885f5f5f5f5f5f 32 plan9 ANDB $0x11, 0(AX) -802011|223344556677885f5f5f5f5f5f 64 gnu andb $0x11,(%rax) -802011|223344556677885f5f5f5f5f5f 64 intel and byte ptr [rax], 0x11 -802011|223344556677885f5f5f5f5f5f 64 plan9 ANDB $0x11, 0(AX) -802811|223344556677885f5f5f5f5f5f 32 intel sub byte ptr [eax], 0x11 -802811|223344556677885f5f5f5f5f5f 32 plan9 SUBB $0x11, 0(AX) -802811|223344556677885f5f5f5f5f5f 64 gnu subb $0x11,(%rax) -802811|223344556677885f5f5f5f5f5f 64 intel sub byte ptr [rax], 0x11 -802811|223344556677885f5f5f5f5f5f 64 plan9 SUBB $0x11, 0(AX) -803011|223344556677885f5f5f5f5f5f 32 intel xor byte ptr [eax], 0x11 -803011|223344556677885f5f5f5f5f5f 32 plan9 XORB $0x11, 0(AX) -803011|223344556677885f5f5f5f5f5f 64 gnu xorb $0x11,(%rax) -803011|223344556677885f5f5f5f5f5f 64 intel xor byte ptr [rax], 0x11 -803011|223344556677885f5f5f5f5f5f 64 plan9 XORB $0x11, 0(AX) -803811|223344556677885f5f5f5f5f5f 32 intel cmp byte ptr [eax], 0x11 -803811|223344556677885f5f5f5f5f5f 32 plan9 CMPB $0x11, 0(AX) -803811|223344556677885f5f5f5f5f5f 64 gnu cmpb $0x11,(%rax) -803811|223344556677885f5f5f5f5f5f 64 intel cmp byte ptr [rax], 0x11 -803811|223344556677885f5f5f5f5f5f 64 plan9 CMPB $0x11, 0(AX) -810011223344|556677885f5f5f5f5f5f 32 intel add dword ptr [eax], 0x44332211 -810011223344|556677885f5f5f5f5f5f 32 plan9 ADDL $0x44332211, 0(AX) -810011223344|556677885f5f5f5f5f5f 64 gnu addl $0x44332211,(%rax) -810011223344|556677885f5f5f5f5f5f 64 intel add dword ptr [rax], 0x44332211 -810011223344|556677885f5f5f5f5f5f 64 plan9 ADDL $0x44332211, 0(AX) -810811223344|556677885f5f5f5f5f5f 32 intel or dword ptr [eax], 0x44332211 -810811223344|556677885f5f5f5f5f5f 32 plan9 ORL $0x44332211, 0(AX) -810811223344|556677885f5f5f5f5f5f 64 gnu orl $0x44332211,(%rax) -810811223344|556677885f5f5f5f5f5f 64 intel or dword ptr [rax], 0x44332211 -810811223344|556677885f5f5f5f5f5f 64 plan9 ORL $0x44332211, 0(AX) -811122334455|6677885f5f5f5f5f5f5f 32 intel adc dword ptr [ecx], 0x55443322 -811122334455|6677885f5f5f5f5f5f5f 32 plan9 ADCL $0x55443322, 0(CX) -811122334455|6677885f5f5f5f5f5f5f 64 gnu adcl $0x55443322,(%rcx) -811122334455|6677885f5f5f5f5f5f5f 64 intel adc dword ptr [rcx], 0x55443322 -811122334455|6677885f5f5f5f5f5f5f 64 plan9 ADCL $0x55443322, 0(CX) -811811223344|556677885f5f5f5f5f5f 32 intel sbb dword ptr [eax], 0x44332211 -811811223344|556677885f5f5f5f5f5f 32 plan9 SBBL $0x44332211, 0(AX) -811811223344|556677885f5f5f5f5f5f 64 gnu sbbl $0x44332211,(%rax) -811811223344|556677885f5f5f5f5f5f 64 intel sbb dword ptr [rax], 0x44332211 -811811223344|556677885f5f5f5f5f5f 64 plan9 SBBL $0x44332211, 0(AX) -812011223344|556677885f5f5f5f5f5f 32 intel and dword ptr [eax], 0x44332211 -812011223344|556677885f5f5f5f5f5f 32 plan9 ANDL $0x44332211, 0(AX) -812011223344|556677885f5f5f5f5f5f 64 gnu andl $0x44332211,(%rax) -812011223344|556677885f5f5f5f5f5f 64 intel and dword ptr [rax], 0x44332211 -812011223344|556677885f5f5f5f5f5f 64 plan9 ANDL $0x44332211, 0(AX) -812811223344|556677885f5f5f5f5f5f 32 intel sub dword ptr [eax], 0x44332211 -812811223344|556677885f5f5f5f5f5f 32 plan9 SUBL $0x44332211, 0(AX) -812811223344|556677885f5f5f5f5f5f 64 gnu subl $0x44332211,(%rax) -812811223344|556677885f5f5f5f5f5f 64 intel sub dword ptr [rax], 0x44332211 -812811223344|556677885f5f5f5f5f5f 64 plan9 SUBL $0x44332211, 0(AX) -813011223344|556677885f5f5f5f5f5f 32 intel xor dword ptr [eax], 0x44332211 -813011223344|556677885f5f5f5f5f5f 32 plan9 XORL $0x44332211, 0(AX) -813011223344|556677885f5f5f5f5f5f 64 gnu xorl $0x44332211,(%rax) -813011223344|556677885f5f5f5f5f5f 64 intel xor dword ptr [rax], 0x44332211 -813011223344|556677885f5f5f5f5f5f 64 plan9 XORL $0x44332211, 0(AX) -813811223344|556677885f5f5f5f5f5f 32 intel cmp dword ptr [eax], 0x44332211 -813811223344|556677885f5f5f5f5f5f 32 plan9 CMPL $0x44332211, 0(AX) -813811223344|556677885f5f5f5f5f5f 64 gnu cmpl $0x44332211,(%rax) -813811223344|556677885f5f5f5f5f5f 64 intel cmp dword ptr [rax], 0x44332211 -813811223344|556677885f5f5f5f5f5f 64 plan9 CMPL $0x44332211, 0(AX) -830011|223344556677885f5f5f5f5f5f 32 intel add dword ptr [eax], 0x11 -830011|223344556677885f5f5f5f5f5f 32 plan9 ADDL $0x11, 0(AX) -830011|223344556677885f5f5f5f5f5f 64 gnu addl $0x11,(%rax) -830011|223344556677885f5f5f5f5f5f 64 intel add dword ptr [rax], 0x11 -830011|223344556677885f5f5f5f5f5f 64 plan9 ADDL $0x11, 0(AX) -830811|223344556677885f5f5f5f5f5f 32 intel or dword ptr [eax], 0x11 -830811|223344556677885f5f5f5f5f5f 32 plan9 ORL $0x11, 0(AX) -830811|223344556677885f5f5f5f5f5f 64 gnu orl $0x11,(%rax) -830811|223344556677885f5f5f5f5f5f 64 intel or dword ptr [rax], 0x11 -830811|223344556677885f5f5f5f5f5f 64 plan9 ORL $0x11, 0(AX) -831122|3344556677885f5f5f5f5f5f5f 32 intel adc dword ptr [ecx], 0x22 -831122|3344556677885f5f5f5f5f5f5f 32 plan9 ADCL $0x22, 0(CX) -831122|3344556677885f5f5f5f5f5f5f 64 gnu adcl $0x22,(%rcx) -831122|3344556677885f5f5f5f5f5f5f 64 intel adc dword ptr [rcx], 0x22 -831122|3344556677885f5f5f5f5f5f5f 64 plan9 ADCL $0x22, 0(CX) -831811|223344556677885f5f5f5f5f5f 32 intel sbb dword ptr [eax], 0x11 -831811|223344556677885f5f5f5f5f5f 32 plan9 SBBL $0x11, 0(AX) -831811|223344556677885f5f5f5f5f5f 64 gnu sbbl $0x11,(%rax) -831811|223344556677885f5f5f5f5f5f 64 intel sbb dword ptr [rax], 0x11 -831811|223344556677885f5f5f5f5f5f 64 plan9 SBBL $0x11, 0(AX) -832011|223344556677885f5f5f5f5f5f 32 intel and dword ptr [eax], 0x11 -832011|223344556677885f5f5f5f5f5f 32 plan9 ANDL $0x11, 0(AX) -832011|223344556677885f5f5f5f5f5f 64 gnu andl $0x11,(%rax) -832011|223344556677885f5f5f5f5f5f 64 intel and dword ptr [rax], 0x11 -832011|223344556677885f5f5f5f5f5f 64 plan9 ANDL $0x11, 0(AX) -832811|223344556677885f5f5f5f5f5f 32 intel sub dword ptr [eax], 0x11 -832811|223344556677885f5f5f5f5f5f 32 plan9 SUBL $0x11, 0(AX) -832811|223344556677885f5f5f5f5f5f 64 gnu subl $0x11,(%rax) -832811|223344556677885f5f5f5f5f5f 64 intel sub dword ptr [rax], 0x11 -832811|223344556677885f5f5f5f5f5f 64 plan9 SUBL $0x11, 0(AX) -833011|223344556677885f5f5f5f5f5f 32 intel xor dword ptr [eax], 0x11 -833011|223344556677885f5f5f5f5f5f 32 plan9 XORL $0x11, 0(AX) -833011|223344556677885f5f5f5f5f5f 64 gnu xorl $0x11,(%rax) -833011|223344556677885f5f5f5f5f5f 64 intel xor dword ptr [rax], 0x11 -833011|223344556677885f5f5f5f5f5f 64 plan9 XORL $0x11, 0(AX) -833811|223344556677885f5f5f5f5f5f 32 intel cmp dword ptr [eax], 0x11 -833811|223344556677885f5f5f5f5f5f 32 plan9 CMPL $0x11, 0(AX) -833811|223344556677885f5f5f5f5f5f 64 gnu cmpl $0x11,(%rax) -833811|223344556677885f5f5f5f5f5f 64 intel cmp dword ptr [rax], 0x11 -833811|223344556677885f5f5f5f5f5f 64 plan9 CMPL $0x11, 0(AX) -8411|223344556677885f5f5f5f5f5f5f 32 intel test byte ptr [ecx], dl -8411|223344556677885f5f5f5f5f5f5f 32 plan9 TESTB DL, 0(CX) -8411|223344556677885f5f5f5f5f5f5f 64 gnu test %dl,(%rcx) -8411|223344556677885f5f5f5f5f5f5f 64 intel test byte ptr [rcx], dl -8411|223344556677885f5f5f5f5f5f5f 64 plan9 TESTB DL, 0(CX) -8511|223344556677885f5f5f5f5f5f5f 32 intel test dword ptr [ecx], edx -8511|223344556677885f5f5f5f5f5f5f 32 plan9 TESTL DX, 0(CX) -8511|223344556677885f5f5f5f5f5f5f 64 gnu test %edx,(%rcx) -8511|223344556677885f5f5f5f5f5f5f 64 intel test dword ptr [rcx], edx -8511|223344556677885f5f5f5f5f5f5f 64 plan9 TESTL DX, 0(CX) -8611|223344556677885f5f5f5f5f5f5f 32 intel xchg byte ptr [ecx], dl -8611|223344556677885f5f5f5f5f5f5f 32 plan9 XCHGB DL, 0(CX) -8611|223344556677885f5f5f5f5f5f5f 64 gnu xchg %dl,(%rcx) -8611|223344556677885f5f5f5f5f5f5f 64 intel xchg byte ptr [rcx], dl -8611|223344556677885f5f5f5f5f5f5f 64 plan9 XCHGB DL, 0(CX) -8711|223344556677885f5f5f5f5f5f5f 32 intel xchg dword ptr [ecx], edx -8711|223344556677885f5f5f5f5f5f5f 32 plan9 XCHGL DX, 0(CX) -8711|223344556677885f5f5f5f5f5f5f 64 gnu xchg %edx,(%rcx) -8711|223344556677885f5f5f5f5f5f5f 64 intel xchg dword ptr [rcx], edx -8711|223344556677885f5f5f5f5f5f5f 64 plan9 XCHGL DX, 0(CX) -8811|223344556677885f5f5f5f5f5f5f 32 intel mov byte ptr [ecx], dl -8811|223344556677885f5f5f5f5f5f5f 32 plan9 MOVB DL, 0(CX) -8811|223344556677885f5f5f5f5f5f5f 64 gnu mov %dl,(%rcx) -8811|223344556677885f5f5f5f5f5f5f 64 intel mov byte ptr [rcx], dl -8811|223344556677885f5f5f5f5f5f5f 64 plan9 MOVB DL, 0(CX) -8911|223344556677885f5f5f5f5f5f5f 32 intel mov dword ptr [ecx], edx -8911|223344556677885f5f5f5f5f5f5f 32 plan9 MOVL DX, 0(CX) -8911|223344556677885f5f5f5f5f5f5f 64 gnu mov %edx,(%rcx) -8911|223344556677885f5f5f5f5f5f5f 64 intel mov dword ptr [rcx], edx -8911|223344556677885f5f5f5f5f5f5f 64 plan9 MOVL DX, 0(CX) -8a11|223344556677885f5f5f5f5f5f5f 32 intel mov dl, byte ptr [ecx] -8a11|223344556677885f5f5f5f5f5f5f 32 plan9 MOVB 0(CX), DL -8a11|223344556677885f5f5f5f5f5f5f 64 gnu mov (%rcx),%dl -8a11|223344556677885f5f5f5f5f5f5f 64 intel mov dl, byte ptr [rcx] -8a11|223344556677885f5f5f5f5f5f5f 64 plan9 MOVB 0(CX), DL -8b11|223344556677885f5f5f5f5f5f5f 32 intel mov edx, dword ptr [ecx] -8b11|223344556677885f5f5f5f5f5f5f 32 plan9 MOVL 0(CX), DX -8b11|223344556677885f5f5f5f5f5f5f 64 gnu mov (%rcx),%edx -8b11|223344556677885f5f5f5f5f5f5f 64 intel mov edx, dword ptr [rcx] -8b11|223344556677885f5f5f5f5f5f5f 64 plan9 MOVL 0(CX), DX -8c11|223344556677885f5f5f5f5f5f5f 32 intel mov word ptr [ecx], ss -8c11|223344556677885f5f5f5f5f5f5f 32 plan9 MOVW SS, 0(CX) -8c11|223344556677885f5f5f5f5f5f5f 64 gnu mov %ss,(%rcx) -8c11|223344556677885f5f5f5f5f5f5f 64 intel mov word ptr [rcx], ss -8c11|223344556677885f5f5f5f5f5f5f 64 plan9 MOVW SS, 0(CX) -8d11|223344556677885f5f5f5f5f5f5f 32 intel lea edx, ptr [ecx] -8d11|223344556677885f5f5f5f5f5f5f 32 plan9 LEAL 0(CX), DX -8d11|223344556677885f5f5f5f5f5f5f 64 gnu lea (%rcx),%edx -8d11|223344556677885f5f5f5f5f5f5f 64 intel lea edx, ptr [rcx] -8d11|223344556677885f5f5f5f5f5f5f 64 plan9 LEAL 0(CX), DX -8e11|223344556677885f5f5f5f5f5f5f 32 intel mov ss, word ptr [ecx] -8e11|223344556677885f5f5f5f5f5f5f 32 plan9 MOVW 0(CX), SS -8e11|223344556677885f5f5f5f5f5f5f 64 gnu mov (%rcx),%ss -8e11|223344556677885f5f5f5f5f5f5f 64 intel mov ss, word ptr [rcx] -8e11|223344556677885f5f5f5f5f5f5f 64 plan9 MOVW 0(CX), SS -8f00|11223344556677885f5f5f5f5f5f 32 intel pop dword ptr [eax] -8f00|11223344556677885f5f5f5f5f5f 32 plan9 POPL 0(AX) -8f00|11223344556677885f5f5f5f5f5f 64 gnu popq (%rax) -8f00|11223344556677885f5f5f5f5f5f 64 intel pop qword ptr [rax] -8f00|11223344556677885f5f5f5f5f5f 64 plan9 POPQ 0(AX) -91|11223344556677885f5f5f5f5f5f5f 32 intel xchg ecx, eax -91|11223344556677885f5f5f5f5f5f5f 32 plan9 XCHGL AX, CX -91|11223344556677885f5f5f5f5f5f5f 64 intel xchg ecx, eax -91|11223344556677885f5f5f5f5f5f5f 64 plan9 XCHGL AX, CX -98|11223344556677885f5f5f5f5f5f5f 32 intel cwde -98|11223344556677885f5f5f5f5f5f5f 32 plan9 CWDE -98|11223344556677885f5f5f5f5f5f5f 64 gnu cwtl -98|11223344556677885f5f5f5f5f5f5f 64 intel cwde -98|11223344556677885f5f5f5f5f5f5f 64 plan9 CWDE -99|11223344556677885f5f5f5f5f5f5f 32 intel cdq -99|11223344556677885f5f5f5f5f5f5f 32 plan9 CDQ -99|11223344556677885f5f5f5f5f5f5f 64 gnu cltd -99|11223344556677885f5f5f5f5f5f5f 64 intel cdq -99|11223344556677885f5f5f5f5f5f5f 64 plan9 CDQ -9a112233445566|77885f5f5f5f5f5f5f 32 intel call far 0x44332211, 0x6655 -9a112233445566|77885f5f5f5f5f5f5f 32 plan9 LCALL $0x44332211, $0x6655 -9b|11223344556677885f5f5f5f5f5f5f 32 intel fwait -9b|11223344556677885f5f5f5f5f5f5f 32 plan9 FWAIT -9b|11223344556677885f5f5f5f5f5f5f 64 gnu fwait -9b|11223344556677885f5f5f5f5f5f5f 64 intel fwait -9b|11223344556677885f5f5f5f5f5f5f 64 plan9 FWAIT -9c|11223344556677885f5f5f5f5f5f5f 32 intel pushfd -9c|11223344556677885f5f5f5f5f5f5f 32 plan9 PUSHFD -9c|11223344556677885f5f5f5f5f5f5f 64 gnu pushfq -9c|11223344556677885f5f5f5f5f5f5f 64 intel pushfq -9c|11223344556677885f5f5f5f5f5f5f 64 plan9 PUSHFQ -9d|11223344556677885f5f5f5f5f5f5f 32 intel popfd -9d|11223344556677885f5f5f5f5f5f5f 32 plan9 POPFD -9d|11223344556677885f5f5f5f5f5f5f 64 gnu popfq -9d|11223344556677885f5f5f5f5f5f5f 64 intel popfq -9d|11223344556677885f5f5f5f5f5f5f 64 plan9 POPFQ -9e|11223344556677885f5f5f5f5f5f5f 32 intel sahf -9e|11223344556677885f5f5f5f5f5f5f 32 plan9 SAHF -9e|11223344556677885f5f5f5f5f5f5f 64 gnu sahf -9e|11223344556677885f5f5f5f5f5f5f 64 intel sahf -9e|11223344556677885f5f5f5f5f5f5f 64 plan9 SAHF -9f|11223344556677885f5f5f5f5f5f5f 32 intel lahf -9f|11223344556677885f5f5f5f5f5f5f 32 plan9 LAHF -9f|11223344556677885f5f5f5f5f5f5f 64 gnu lahf -9f|11223344556677885f5f5f5f5f5f5f 64 intel lahf -9f|11223344556677885f5f5f5f5f5f5f 64 plan9 LAHF -a11122334455667788|5f5f5f5f5f5f5f 64 gnu mov -0x778899aabbccddef,%eax -a11122334455667788|5f5f5f5f5f5f5f 64 intel mov eax, dword ptr [0x8877665544332211] -a11122334455667788|5f5f5f5f5f5f5f 64 plan9 MOVL -0x778899aabbccddef, AX -a111223344|556677885f5f5f5f5f5f5f 32 intel mov eax, dword ptr [0x44332211] -a111223344|556677885f5f5f5f5f5f5f 32 plan9 MOVL 0x44332211, AX -a21122334455667788|5f5f5f5f5f5f5f 64 gnu mov %al,-0x778899aabbccddef -a21122334455667788|5f5f5f5f5f5f5f 64 intel mov byte ptr [0x8877665544332211], al -a21122334455667788|5f5f5f5f5f5f5f 64 plan9 MOVB AL, -0x778899aabbccddef -a211223344|556677885f5f5f5f5f5f5f 32 intel mov byte ptr [0x44332211], al -a211223344|556677885f5f5f5f5f5f5f 32 plan9 MOVB AL, 0x44332211 -a31122334455667788|5f5f5f5f5f5f5f 64 gnu mov %eax,-0x778899aabbccddef -a31122334455667788|5f5f5f5f5f5f5f 64 intel mov dword ptr [0x8877665544332211], eax -a31122334455667788|5f5f5f5f5f5f5f 64 plan9 MOVL AX, -0x778899aabbccddef -a311223344|556677885f5f5f5f5f5f5f 32 intel mov dword ptr [0x44332211], eax -a311223344|556677885f5f5f5f5f5f5f 32 plan9 MOVL AX, 0x44332211 -a4|11223344556677885f5f5f5f5f5f5f 32 intel movsb byte ptr [edi], byte ptr [esi] -a4|11223344556677885f5f5f5f5f5f5f 32 plan9 MOVSB DS:0(SI), ES:0(DI) -a4|11223344556677885f5f5f5f5f5f5f 64 gnu movsb %ds:(%rsi),%es:(%rdi) -a4|11223344556677885f5f5f5f5f5f5f 64 intel movsb byte ptr [rdi], byte ptr [rsi] -a4|11223344556677885f5f5f5f5f5f5f 64 plan9 MOVSB DS:0(SI), ES:0(DI) -a5|11223344556677885f5f5f5f5f5f5f 32 intel movsd dword ptr [edi], dword ptr [esi] -a5|11223344556677885f5f5f5f5f5f5f 32 plan9 MOVSD DS:0(SI), ES:0(DI) -a5|11223344556677885f5f5f5f5f5f5f 64 gnu movsl %ds:(%rsi),%es:(%rdi) -a5|11223344556677885f5f5f5f5f5f5f 64 intel movsd dword ptr [rdi], dword ptr [rsi] -a5|11223344556677885f5f5f5f5f5f5f 64 plan9 MOVSD DS:0(SI), ES:0(DI) -a6|11223344556677885f5f5f5f5f5f5f 32 intel cmpsb byte ptr [esi], byte ptr [edi] -a6|11223344556677885f5f5f5f5f5f5f 32 plan9 CMPSB ES:0(DI), DS:0(SI) -a6|11223344556677885f5f5f5f5f5f5f 64 gnu cmpsb %es:(%rdi),%ds:(%rsi) -a6|11223344556677885f5f5f5f5f5f5f 64 intel cmpsb byte ptr [rsi], byte ptr [rdi] -a6|11223344556677885f5f5f5f5f5f5f 64 plan9 CMPSB ES:0(DI), DS:0(SI) -a7|11223344556677885f5f5f5f5f5f5f 32 intel cmpsd dword ptr [esi], dword ptr [edi] -a7|11223344556677885f5f5f5f5f5f5f 32 plan9 CMPSD ES:0(DI), DS:0(SI) -a7|11223344556677885f5f5f5f5f5f5f 64 gnu cmpsl %es:(%rdi),%ds:(%rsi) -a7|11223344556677885f5f5f5f5f5f5f 64 intel cmpsd dword ptr [rsi], dword ptr [rdi] -a7|11223344556677885f5f5f5f5f5f5f 64 plan9 CMPSD ES:0(DI), DS:0(SI) -a811|223344556677885f5f5f5f5f5f5f 32 intel test al, 0x11 -a811|223344556677885f5f5f5f5f5f5f 32 plan9 TESTL $0x11, AL -a811|223344556677885f5f5f5f5f5f5f 64 gnu test $0x11,%al -a811|223344556677885f5f5f5f5f5f5f 64 intel test al, 0x11 -a811|223344556677885f5f5f5f5f5f5f 64 plan9 TESTL $0x11, AL -a911223344|556677885f5f5f5f5f5f5f 32 intel test eax, 0x44332211 -a911223344|556677885f5f5f5f5f5f5f 32 plan9 TESTL $0x44332211, AX -a911223344|556677885f5f5f5f5f5f5f 64 gnu test $0x44332211,%eax -a911223344|556677885f5f5f5f5f5f5f 64 intel test eax, 0x44332211 -a911223344|556677885f5f5f5f5f5f5f 64 plan9 TESTL $0x44332211, AX -aa|11223344556677885f5f5f5f5f5f5f 32 intel stosb byte ptr [edi] -aa|11223344556677885f5f5f5f5f5f5f 32 plan9 STOSB AL, ES:0(DI) -aa|11223344556677885f5f5f5f5f5f5f 64 gnu stos %al,%es:(%rdi) -aa|11223344556677885f5f5f5f5f5f5f 64 intel stosb byte ptr [rdi] -aa|11223344556677885f5f5f5f5f5f5f 64 plan9 STOSB AL, ES:0(DI) -ab|11223344556677885f5f5f5f5f5f5f 32 intel stosd dword ptr [edi] -ab|11223344556677885f5f5f5f5f5f5f 32 plan9 STOSD AX, ES:0(DI) -ab|11223344556677885f5f5f5f5f5f5f 64 gnu stos %eax,%es:(%rdi) -ab|11223344556677885f5f5f5f5f5f5f 64 intel stosd dword ptr [rdi] -ab|11223344556677885f5f5f5f5f5f5f 64 plan9 STOSD AX, ES:0(DI) -ac|11223344556677885f5f5f5f5f5f5f 32 intel lodsb byte ptr [esi] -ac|11223344556677885f5f5f5f5f5f5f 32 plan9 LODSB DS:0(SI), AL -ac|11223344556677885f5f5f5f5f5f5f 64 gnu lods %ds:(%rsi),%al -ac|11223344556677885f5f5f5f5f5f5f 64 intel lodsb byte ptr [rsi] -ac|11223344556677885f5f5f5f5f5f5f 64 plan9 LODSB DS:0(SI), AL -ad|11223344556677885f5f5f5f5f5f5f 32 intel lodsd dword ptr [esi] -ad|11223344556677885f5f5f5f5f5f5f 32 plan9 LODSD DS:0(SI), AX -ad|11223344556677885f5f5f5f5f5f5f 64 gnu lods %ds:(%rsi),%eax -ad|11223344556677885f5f5f5f5f5f5f 64 intel lodsd dword ptr [rsi] -ad|11223344556677885f5f5f5f5f5f5f 64 plan9 LODSD DS:0(SI), AX -ae|11223344556677885f5f5f5f5f5f5f 32 intel scasb byte ptr [edi] -ae|11223344556677885f5f5f5f5f5f5f 32 plan9 SCASB ES:0(DI), AL -ae|11223344556677885f5f5f5f5f5f5f 64 gnu scas %es:(%rdi),%al -ae|11223344556677885f5f5f5f5f5f5f 64 intel scasb byte ptr [rdi] -ae|11223344556677885f5f5f5f5f5f5f 64 plan9 SCASB ES:0(DI), AL -af|11223344556677885f5f5f5f5f5f5f 32 intel scasd dword ptr [edi] -af|11223344556677885f5f5f5f5f5f5f 32 plan9 SCASD ES:0(DI), AX -af|11223344556677885f5f5f5f5f5f5f 64 gnu scas %es:(%rdi),%eax -af|11223344556677885f5f5f5f5f5f5f 64 intel scasd dword ptr [rdi] -af|11223344556677885f5f5f5f5f5f5f 64 plan9 SCASD ES:0(DI), AX -b011|223344556677885f5f5f5f5f5f5f 32 intel mov al, 0x11 -b011|223344556677885f5f5f5f5f5f5f 32 plan9 MOVL $0x11, AL -b011|223344556677885f5f5f5f5f5f5f 64 gnu mov $0x11,%al -b011|223344556677885f5f5f5f5f5f5f 64 intel mov al, 0x11 -b011|223344556677885f5f5f5f5f5f5f 64 plan9 MOVL $0x11, AL -b811223344|556677885f5f5f5f5f5f5f 32 intel mov eax, 0x44332211 -b811223344|556677885f5f5f5f5f5f5f 32 plan9 MOVL $0x44332211, AX -b811223344|556677885f5f5f5f5f5f5f 64 gnu mov $0x44332211,%eax -b811223344|556677885f5f5f5f5f5f5f 64 intel mov eax, 0x44332211 -b811223344|556677885f5f5f5f5f5f5f 64 plan9 MOVL $0x44332211, AX -c00011|223344556677885f5f5f5f5f5f 32 intel rol byte ptr [eax], 0x11 -c00011|223344556677885f5f5f5f5f5f 32 plan9 ROLB $0x11, 0(AX) -c00011|223344556677885f5f5f5f5f5f 64 gnu rolb $0x11,(%rax) -c00011|223344556677885f5f5f5f5f5f 64 intel rol byte ptr [rax], 0x11 -c00011|223344556677885f5f5f5f5f5f 64 plan9 ROLB $0x11, 0(AX) -c00811|223344556677885f5f5f5f5f5f 32 intel ror byte ptr [eax], 0x11 -c00811|223344556677885f5f5f5f5f5f 32 plan9 RORB $0x11, 0(AX) -c00811|223344556677885f5f5f5f5f5f 64 gnu rorb $0x11,(%rax) -c00811|223344556677885f5f5f5f5f5f 64 intel ror byte ptr [rax], 0x11 -c00811|223344556677885f5f5f5f5f5f 64 plan9 RORB $0x11, 0(AX) -c01122|3344556677885f5f5f5f5f5f5f 32 intel rcl byte ptr [ecx], 0x22 -c01122|3344556677885f5f5f5f5f5f5f 32 plan9 RCLB $0x22, 0(CX) -c01122|3344556677885f5f5f5f5f5f5f 64 gnu rclb $0x22,(%rcx) -c01122|3344556677885f5f5f5f5f5f5f 64 intel rcl byte ptr [rcx], 0x22 -c01122|3344556677885f5f5f5f5f5f5f 64 plan9 RCLB $0x22, 0(CX) -c01811|223344556677885f5f5f5f5f5f 32 intel rcr byte ptr [eax], 0x11 -c01811|223344556677885f5f5f5f5f5f 32 plan9 RCRB $0x11, 0(AX) -c01811|223344556677885f5f5f5f5f5f 64 gnu rcrb $0x11,(%rax) -c01811|223344556677885f5f5f5f5f5f 64 intel rcr byte ptr [rax], 0x11 -c01811|223344556677885f5f5f5f5f5f 64 plan9 RCRB $0x11, 0(AX) -c02011|223344556677885f5f5f5f5f5f 32 intel shl byte ptr [eax], 0x11 -c02011|223344556677885f5f5f5f5f5f 32 plan9 SHLB $0x11, 0(AX) -c02011|223344556677885f5f5f5f5f5f 64 gnu shlb $0x11,(%rax) -c02011|223344556677885f5f5f5f5f5f 64 intel shl byte ptr [rax], 0x11 -c02011|223344556677885f5f5f5f5f5f 64 plan9 SHLB $0x11, 0(AX) -c02811|223344556677885f5f5f5f5f5f 32 intel shr byte ptr [eax], 0x11 -c02811|223344556677885f5f5f5f5f5f 32 plan9 SHRB $0x11, 0(AX) -c02811|223344556677885f5f5f5f5f5f 64 gnu shrb $0x11,(%rax) -c02811|223344556677885f5f5f5f5f5f 64 intel shr byte ptr [rax], 0x11 -c02811|223344556677885f5f5f5f5f5f 64 plan9 SHRB $0x11, 0(AX) -c03811|223344556677885f5f5f5f5f5f 32 intel sar byte ptr [eax], 0x11 -c03811|223344556677885f5f5f5f5f5f 32 plan9 SARB $0x11, 0(AX) -c03811|223344556677885f5f5f5f5f5f 64 gnu sarb $0x11,(%rax) -c03811|223344556677885f5f5f5f5f5f 64 intel sar byte ptr [rax], 0x11 -c03811|223344556677885f5f5f5f5f5f 64 plan9 SARB $0x11, 0(AX) -c10011|223344556677885f5f5f5f5f5f 32 intel rol dword ptr [eax], 0x11 -c10011|223344556677885f5f5f5f5f5f 32 plan9 ROLL $0x11, 0(AX) -c10011|223344556677885f5f5f5f5f5f 64 gnu roll $0x11,(%rax) -c10011|223344556677885f5f5f5f5f5f 64 intel rol dword ptr [rax], 0x11 -c10011|223344556677885f5f5f5f5f5f 64 plan9 ROLL $0x11, 0(AX) -c10811|223344556677885f5f5f5f5f5f 32 intel ror dword ptr [eax], 0x11 -c10811|223344556677885f5f5f5f5f5f 32 plan9 RORL $0x11, 0(AX) -c10811|223344556677885f5f5f5f5f5f 64 gnu rorl $0x11,(%rax) -c10811|223344556677885f5f5f5f5f5f 64 intel ror dword ptr [rax], 0x11 -c10811|223344556677885f5f5f5f5f5f 64 plan9 RORL $0x11, 0(AX) -c11122|3344556677885f5f5f5f5f5f5f 32 intel rcl dword ptr [ecx], 0x22 -c11122|3344556677885f5f5f5f5f5f5f 32 plan9 RCLL $0x22, 0(CX) -c11122|3344556677885f5f5f5f5f5f5f 64 gnu rcll $0x22,(%rcx) -c11122|3344556677885f5f5f5f5f5f5f 64 intel rcl dword ptr [rcx], 0x22 -c11122|3344556677885f5f5f5f5f5f5f 64 plan9 RCLL $0x22, 0(CX) -c11811|223344556677885f5f5f5f5f5f 32 intel rcr dword ptr [eax], 0x11 -c11811|223344556677885f5f5f5f5f5f 32 plan9 RCRL $0x11, 0(AX) -c11811|223344556677885f5f5f5f5f5f 64 gnu rcrl $0x11,(%rax) -c11811|223344556677885f5f5f5f5f5f 64 intel rcr dword ptr [rax], 0x11 -c11811|223344556677885f5f5f5f5f5f 64 plan9 RCRL $0x11, 0(AX) -c12011|223344556677885f5f5f5f5f5f 32 intel shl dword ptr [eax], 0x11 -c12011|223344556677885f5f5f5f5f5f 32 plan9 SHLL $0x11, 0(AX) -c12011|223344556677885f5f5f5f5f5f 64 gnu shll $0x11,(%rax) -c12011|223344556677885f5f5f5f5f5f 64 intel shl dword ptr [rax], 0x11 -c12011|223344556677885f5f5f5f5f5f 64 plan9 SHLL $0x11, 0(AX) -c12811|223344556677885f5f5f5f5f5f 32 intel shr dword ptr [eax], 0x11 -c12811|223344556677885f5f5f5f5f5f 32 plan9 SHRL $0x11, 0(AX) -c12811|223344556677885f5f5f5f5f5f 64 gnu shrl $0x11,(%rax) -c12811|223344556677885f5f5f5f5f5f 64 intel shr dword ptr [rax], 0x11 -c12811|223344556677885f5f5f5f5f5f 64 plan9 SHRL $0x11, 0(AX) -c13811|223344556677885f5f5f5f5f5f 32 intel sar dword ptr [eax], 0x11 -c13811|223344556677885f5f5f5f5f5f 32 plan9 SARL $0x11, 0(AX) -c13811|223344556677885f5f5f5f5f5f 64 gnu sarl $0x11,(%rax) -c13811|223344556677885f5f5f5f5f5f 64 intel sar dword ptr [rax], 0x11 -c13811|223344556677885f5f5f5f5f5f 64 plan9 SARL $0x11, 0(AX) -c3|11223344556677885f5f5f5f5f5f5f 32 intel ret -c3|11223344556677885f5f5f5f5f5f5f 32 plan9 RET -c3|11223344556677885f5f5f5f5f5f5f 64 gnu retq -c3|11223344556677885f5f5f5f5f5f5f 64 intel ret -c3|11223344556677885f5f5f5f5f5f5f 64 plan9 RET -c411|223344556677885f5f5f5f5f5f5f 32 intel les edx, ptr [ecx] -c411|223344556677885f5f5f5f5f5f5f 32 plan9 LES 0(CX), DX -c511|223344556677885f5f5f5f5f5f5f 32 intel lds edx, ptr [ecx] -c511|223344556677885f5f5f5f5f5f5f 32 plan9 LDS 0(CX), DX -c60011|223344556677885f5f5f5f5f5f 32 intel mov byte ptr [eax], 0x11 -c60011|223344556677885f5f5f5f5f5f 32 plan9 MOVB $0x11, 0(AX) -c60011|223344556677885f5f5f5f5f5f 64 gnu movb $0x11,(%rax) -c60011|223344556677885f5f5f5f5f5f 64 intel mov byte ptr [rax], 0x11 -c60011|223344556677885f5f5f5f5f5f 64 plan9 MOVB $0x11, 0(AX) -c6f811|223344556677885f5f5f5f5f5f 32 intel xabort 0x11 -c6f811|223344556677885f5f5f5f5f5f 32 plan9 XABORT $0x11 -c6f811|223344556677885f5f5f5f5f5f 64 gnu xabort $0x11 -c6f811|223344556677885f5f5f5f5f5f 64 intel xabort 0x11 -c6f811|223344556677885f5f5f5f5f5f 64 plan9 XABORT $0x11 -c70011223344|556677885f5f5f5f5f5f 32 intel mov dword ptr [eax], 0x44332211 -c70011223344|556677885f5f5f5f5f5f 32 plan9 MOVL $0x44332211, 0(AX) -c70011223344|556677885f5f5f5f5f5f 64 gnu movl $0x44332211,(%rax) -c70011223344|556677885f5f5f5f5f5f 64 intel mov dword ptr [rax], 0x44332211 -c70011223344|556677885f5f5f5f5f5f 64 plan9 MOVL $0x44332211, 0(AX) -c7f811223344|556677885f5f5f5f5f5f 32 intel xbegin .+0x44332211 -c7f811223344|556677885f5f5f5f5f5f 32 plan9 XBEGIN .+1144201745 -c7f811223344|556677885f5f5f5f5f5f 64 gnu xbeginq .+0x44332211 -c7f811223344|556677885f5f5f5f5f5f 64 intel xbegin .+0x44332211 -c7f811223344|556677885f5f5f5f5f5f 64 plan9 XBEGIN .+1144201745 -c8112233|44556677885f5f5f5f5f5f5f 32 intel enter 0x2211, 0x33 -c8112233|44556677885f5f5f5f5f5f5f 32 plan9 ENTER $0x33, $0x2211 -c8112233|44556677885f5f5f5f5f5f5f 64 gnu enterq $0x2211,$0x33 -c8112233|44556677885f5f5f5f5f5f5f 64 intel enter 0x2211, 0x33 -c8112233|44556677885f5f5f5f5f5f5f 64 plan9 ENTER $0x33, $0x2211 -c9|11223344556677885f5f5f5f5f5f5f 32 intel leave -c9|11223344556677885f5f5f5f5f5f5f 32 plan9 LEAVE -c9|11223344556677885f5f5f5f5f5f5f 64 gnu leaveq -c9|11223344556677885f5f5f5f5f5f5f 64 intel leave -c9|11223344556677885f5f5f5f5f5f5f 64 plan9 LEAVE -ca1122|3344556677885f5f5f5f5f5f5f 32 intel ret far 0x2211 -ca1122|3344556677885f5f5f5f5f5f5f 32 plan9 LRET $0x2211 -ca1122|3344556677885f5f5f5f5f5f5f 64 gnu lretq $0x2211 -ca1122|3344556677885f5f5f5f5f5f5f 64 intel ret far 0x2211 -ca1122|3344556677885f5f5f5f5f5f5f 64 plan9 LRET $0x2211 -cb|11223344556677885f5f5f5f5f5f5f 32 intel ret far -cb|11223344556677885f5f5f5f5f5f5f 32 plan9 LRET -cb|11223344556677885f5f5f5f5f5f5f 64 gnu lretq -cb|11223344556677885f5f5f5f5f5f5f 64 intel ret far -cb|11223344556677885f5f5f5f5f5f5f 64 plan9 LRET -cc|11223344556677885f5f5f5f5f5f5f 32 intel int3 -cc|11223344556677885f5f5f5f5f5f5f 32 plan9 INT $0x3 -cc|11223344556677885f5f5f5f5f5f5f 64 gnu int3 -cc|11223344556677885f5f5f5f5f5f5f 64 intel int3 -cc|11223344556677885f5f5f5f5f5f5f 64 plan9 INT $0x3 -cd11|223344556677885f5f5f5f5f5f5f 32 intel int 0x11 -cd11|223344556677885f5f5f5f5f5f5f 32 plan9 INT $0x11 -cd11|223344556677885f5f5f5f5f5f5f 64 gnu int $0x11 -cd11|223344556677885f5f5f5f5f5f5f 64 intel int 0x11 -cd11|223344556677885f5f5f5f5f5f5f 64 plan9 INT $0x11 -ce|11223344556677885f5f5f5f5f5f5f 32 intel into -ce|11223344556677885f5f5f5f5f5f5f 32 plan9 INTO -ce|11223344556677885f5f5f5f5f5f5f 64 gnu error: unrecognized instruction -ce|11223344556677885f5f5f5f5f5f5f 64 intel error: unrecognized instruction -ce|11223344556677885f5f5f5f5f5f5f 64 plan9 error: unrecognized instruction -cf|11223344556677885f5f5f5f5f5f5f 32 intel iretd -cf|11223344556677885f5f5f5f5f5f5f 32 plan9 IRETD -cf|11223344556677885f5f5f5f5f5f5f 64 gnu iret -cf|11223344556677885f5f5f5f5f5f5f 64 intel iretd -cf|11223344556677885f5f5f5f5f5f5f 64 plan9 IRETD -d000|11223344556677885f5f5f5f5f5f 32 intel rol byte ptr [eax], 0x1 -d000|11223344556677885f5f5f5f5f5f 32 plan9 ROLB $0x1, 0(AX) -d000|11223344556677885f5f5f5f5f5f 64 gnu rolb (%rax) -d000|11223344556677885f5f5f5f5f5f 64 intel rol byte ptr [rax], 0x1 -d000|11223344556677885f5f5f5f5f5f 64 plan9 ROLB $0x1, 0(AX) -d008|11223344556677885f5f5f5f5f5f 32 intel ror byte ptr [eax], 0x1 -d008|11223344556677885f5f5f5f5f5f 32 plan9 RORB $0x1, 0(AX) -d008|11223344556677885f5f5f5f5f5f 64 gnu rorb (%rax) -d008|11223344556677885f5f5f5f5f5f 64 intel ror byte ptr [rax], 0x1 -d008|11223344556677885f5f5f5f5f5f 64 plan9 RORB $0x1, 0(AX) -d011|223344556677885f5f5f5f5f5f5f 32 intel rcl byte ptr [ecx], 0x1 -d011|223344556677885f5f5f5f5f5f5f 32 plan9 RCLB $0x1, 0(CX) -d011|223344556677885f5f5f5f5f5f5f 64 gnu rclb (%rcx) -d011|223344556677885f5f5f5f5f5f5f 64 intel rcl byte ptr [rcx], 0x1 -d011|223344556677885f5f5f5f5f5f5f 64 plan9 RCLB $0x1, 0(CX) -d018|11223344556677885f5f5f5f5f5f 32 intel rcr byte ptr [eax], 0x1 -d018|11223344556677885f5f5f5f5f5f 32 plan9 RCRB $0x1, 0(AX) -d018|11223344556677885f5f5f5f5f5f 64 gnu rcrb (%rax) -d018|11223344556677885f5f5f5f5f5f 64 intel rcr byte ptr [rax], 0x1 -d018|11223344556677885f5f5f5f5f5f 64 plan9 RCRB $0x1, 0(AX) -d020|11223344556677885f5f5f5f5f5f 32 intel shl byte ptr [eax], 0x1 -d020|11223344556677885f5f5f5f5f5f 32 plan9 SHLB $0x1, 0(AX) -d020|11223344556677885f5f5f5f5f5f 64 gnu shlb (%rax) -d020|11223344556677885f5f5f5f5f5f 64 intel shl byte ptr [rax], 0x1 -d020|11223344556677885f5f5f5f5f5f 64 plan9 SHLB $0x1, 0(AX) -d028|11223344556677885f5f5f5f5f5f 32 intel shr byte ptr [eax], 0x1 -d028|11223344556677885f5f5f5f5f5f 32 plan9 SHRB $0x1, 0(AX) -d028|11223344556677885f5f5f5f5f5f 64 gnu shrb (%rax) -d028|11223344556677885f5f5f5f5f5f 64 intel shr byte ptr [rax], 0x1 -d028|11223344556677885f5f5f5f5f5f 64 plan9 SHRB $0x1, 0(AX) -d038|11223344556677885f5f5f5f5f5f 32 intel sar byte ptr [eax], 0x1 -d038|11223344556677885f5f5f5f5f5f 32 plan9 SARB $0x1, 0(AX) -d038|11223344556677885f5f5f5f5f5f 64 gnu sarb (%rax) -d038|11223344556677885f5f5f5f5f5f 64 intel sar byte ptr [rax], 0x1 -d038|11223344556677885f5f5f5f5f5f 64 plan9 SARB $0x1, 0(AX) -d100|11223344556677885f5f5f5f5f5f 32 intel rol dword ptr [eax], 0x1 -d100|11223344556677885f5f5f5f5f5f 32 plan9 ROLL $0x1, 0(AX) -d100|11223344556677885f5f5f5f5f5f 64 gnu roll (%rax) -d100|11223344556677885f5f5f5f5f5f 64 intel rol dword ptr [rax], 0x1 -d100|11223344556677885f5f5f5f5f5f 64 plan9 ROLL $0x1, 0(AX) -d108|11223344556677885f5f5f5f5f5f 32 intel ror dword ptr [eax], 0x1 -d108|11223344556677885f5f5f5f5f5f 32 plan9 RORL $0x1, 0(AX) -d108|11223344556677885f5f5f5f5f5f 64 gnu rorl (%rax) -d108|11223344556677885f5f5f5f5f5f 64 intel ror dword ptr [rax], 0x1 -d108|11223344556677885f5f5f5f5f5f 64 plan9 RORL $0x1, 0(AX) -d111|223344556677885f5f5f5f5f5f5f 32 intel rcl dword ptr [ecx], 0x1 -d111|223344556677885f5f5f5f5f5f5f 32 plan9 RCLL $0x1, 0(CX) -d111|223344556677885f5f5f5f5f5f5f 64 gnu rcll (%rcx) -d111|223344556677885f5f5f5f5f5f5f 64 intel rcl dword ptr [rcx], 0x1 -d111|223344556677885f5f5f5f5f5f5f 64 plan9 RCLL $0x1, 0(CX) -d118|11223344556677885f5f5f5f5f5f 32 intel rcr dword ptr [eax], 0x1 -d118|11223344556677885f5f5f5f5f5f 32 plan9 RCRL $0x1, 0(AX) -d118|11223344556677885f5f5f5f5f5f 64 gnu rcrl (%rax) -d118|11223344556677885f5f5f5f5f5f 64 intel rcr dword ptr [rax], 0x1 -d118|11223344556677885f5f5f5f5f5f 64 plan9 RCRL $0x1, 0(AX) -d120|11223344556677885f5f5f5f5f5f 32 intel shl dword ptr [eax], 0x1 -d120|11223344556677885f5f5f5f5f5f 32 plan9 SHLL $0x1, 0(AX) -d120|11223344556677885f5f5f5f5f5f 64 gnu shll (%rax) -d120|11223344556677885f5f5f5f5f5f 64 intel shl dword ptr [rax], 0x1 -d120|11223344556677885f5f5f5f5f5f 64 plan9 SHLL $0x1, 0(AX) -d128|11223344556677885f5f5f5f5f5f 32 intel shr dword ptr [eax], 0x1 -d128|11223344556677885f5f5f5f5f5f 32 plan9 SHRL $0x1, 0(AX) -d128|11223344556677885f5f5f5f5f5f 64 gnu shrl (%rax) -d128|11223344556677885f5f5f5f5f5f 64 intel shr dword ptr [rax], 0x1 -d128|11223344556677885f5f5f5f5f5f 64 plan9 SHRL $0x1, 0(AX) -d138|11223344556677885f5f5f5f5f5f 32 intel sar dword ptr [eax], 0x1 -d138|11223344556677885f5f5f5f5f5f 32 plan9 SARL $0x1, 0(AX) -d138|11223344556677885f5f5f5f5f5f 64 gnu sarl (%rax) -d138|11223344556677885f5f5f5f5f5f 64 intel sar dword ptr [rax], 0x1 -d138|11223344556677885f5f5f5f5f5f 64 plan9 SARL $0x1, 0(AX) -d200|11223344556677885f5f5f5f5f5f 32 intel rol byte ptr [eax], cl -d200|11223344556677885f5f5f5f5f5f 32 plan9 ROLB CL, 0(AX) -d200|11223344556677885f5f5f5f5f5f 64 gnu rolb %cl,(%rax) -d200|11223344556677885f5f5f5f5f5f 64 intel rol byte ptr [rax], cl -d200|11223344556677885f5f5f5f5f5f 64 plan9 ROLB CL, 0(AX) -d208|11223344556677885f5f5f5f5f5f 32 intel ror byte ptr [eax], cl -d208|11223344556677885f5f5f5f5f5f 32 plan9 RORB CL, 0(AX) -d208|11223344556677885f5f5f5f5f5f 64 gnu rorb %cl,(%rax) -d208|11223344556677885f5f5f5f5f5f 64 intel ror byte ptr [rax], cl -d208|11223344556677885f5f5f5f5f5f 64 plan9 RORB CL, 0(AX) -d211|223344556677885f5f5f5f5f5f5f 32 intel rcl byte ptr [ecx], cl -d211|223344556677885f5f5f5f5f5f5f 32 plan9 RCLB CL, 0(CX) -d211|223344556677885f5f5f5f5f5f5f 64 gnu rclb %cl,(%rcx) -d211|223344556677885f5f5f5f5f5f5f 64 intel rcl byte ptr [rcx], cl -d211|223344556677885f5f5f5f5f5f5f 64 plan9 RCLB CL, 0(CX) -d218|11223344556677885f5f5f5f5f5f 32 intel rcr byte ptr [eax], cl -d218|11223344556677885f5f5f5f5f5f 32 plan9 RCRB CL, 0(AX) -d218|11223344556677885f5f5f5f5f5f 64 gnu rcrb %cl,(%rax) -d218|11223344556677885f5f5f5f5f5f 64 intel rcr byte ptr [rax], cl -d218|11223344556677885f5f5f5f5f5f 64 plan9 RCRB CL, 0(AX) -d220|11223344556677885f5f5f5f5f5f 32 intel shl byte ptr [eax], cl -d220|11223344556677885f5f5f5f5f5f 32 plan9 SHLB CL, 0(AX) -d220|11223344556677885f5f5f5f5f5f 64 gnu shlb %cl,(%rax) -d220|11223344556677885f5f5f5f5f5f 64 intel shl byte ptr [rax], cl -d220|11223344556677885f5f5f5f5f5f 64 plan9 SHLB CL, 0(AX) -d228|11223344556677885f5f5f5f5f5f 32 intel shr byte ptr [eax], cl -d228|11223344556677885f5f5f5f5f5f 32 plan9 SHRB CL, 0(AX) -d228|11223344556677885f5f5f5f5f5f 64 gnu shrb %cl,(%rax) -d228|11223344556677885f5f5f5f5f5f 64 intel shr byte ptr [rax], cl -d228|11223344556677885f5f5f5f5f5f 64 plan9 SHRB CL, 0(AX) -d238|11223344556677885f5f5f5f5f5f 32 intel sar byte ptr [eax], cl -d238|11223344556677885f5f5f5f5f5f 32 plan9 SARB CL, 0(AX) -d238|11223344556677885f5f5f5f5f5f 64 gnu sarb %cl,(%rax) -d238|11223344556677885f5f5f5f5f5f 64 intel sar byte ptr [rax], cl -d238|11223344556677885f5f5f5f5f5f 64 plan9 SARB CL, 0(AX) -d300|11223344556677885f5f5f5f5f5f 32 intel rol dword ptr [eax], cl -d300|11223344556677885f5f5f5f5f5f 32 plan9 ROLL CL, 0(AX) -d300|11223344556677885f5f5f5f5f5f 64 gnu roll %cl,(%rax) -d300|11223344556677885f5f5f5f5f5f 64 intel rol dword ptr [rax], cl -d300|11223344556677885f5f5f5f5f5f 64 plan9 ROLL CL, 0(AX) -d308|11223344556677885f5f5f5f5f5f 32 intel ror dword ptr [eax], cl -d308|11223344556677885f5f5f5f5f5f 32 plan9 RORL CL, 0(AX) -d308|11223344556677885f5f5f5f5f5f 64 gnu rorl %cl,(%rax) -d308|11223344556677885f5f5f5f5f5f 64 intel ror dword ptr [rax], cl -d308|11223344556677885f5f5f5f5f5f 64 plan9 RORL CL, 0(AX) -d311|223344556677885f5f5f5f5f5f5f 32 intel rcl dword ptr [ecx], cl -d311|223344556677885f5f5f5f5f5f5f 32 plan9 RCLL CL, 0(CX) -d311|223344556677885f5f5f5f5f5f5f 64 gnu rcll %cl,(%rcx) -d311|223344556677885f5f5f5f5f5f5f 64 intel rcl dword ptr [rcx], cl -d311|223344556677885f5f5f5f5f5f5f 64 plan9 RCLL CL, 0(CX) -d318|11223344556677885f5f5f5f5f5f 32 intel rcr dword ptr [eax], cl -d318|11223344556677885f5f5f5f5f5f 32 plan9 RCRL CL, 0(AX) -d318|11223344556677885f5f5f5f5f5f 64 gnu rcrl %cl,(%rax) -d318|11223344556677885f5f5f5f5f5f 64 intel rcr dword ptr [rax], cl -d318|11223344556677885f5f5f5f5f5f 64 plan9 RCRL CL, 0(AX) -d320|11223344556677885f5f5f5f5f5f 32 intel shl dword ptr [eax], cl -d320|11223344556677885f5f5f5f5f5f 32 plan9 SHLL CL, 0(AX) -d320|11223344556677885f5f5f5f5f5f 64 gnu shll %cl,(%rax) -d320|11223344556677885f5f5f5f5f5f 64 intel shl dword ptr [rax], cl -d320|11223344556677885f5f5f5f5f5f 64 plan9 SHLL CL, 0(AX) -d328|11223344556677885f5f5f5f5f5f 32 intel shr dword ptr [eax], cl -d328|11223344556677885f5f5f5f5f5f 32 plan9 SHRL CL, 0(AX) -d328|11223344556677885f5f5f5f5f5f 64 gnu shrl %cl,(%rax) -d328|11223344556677885f5f5f5f5f5f 64 intel shr dword ptr [rax], cl -d328|11223344556677885f5f5f5f5f5f 64 plan9 SHRL CL, 0(AX) -d338|11223344556677885f5f5f5f5f5f 32 intel sar dword ptr [eax], cl -d338|11223344556677885f5f5f5f5f5f 32 plan9 SARL CL, 0(AX) -d338|11223344556677885f5f5f5f5f5f 64 gnu sarl %cl,(%rax) -d338|11223344556677885f5f5f5f5f5f 64 intel sar dword ptr [rax], cl -d338|11223344556677885f5f5f5f5f5f 64 plan9 SARL CL, 0(AX) -d511|223344556677885f5f5f5f5f5f5f 32 intel aad 0x11 -d511|223344556677885f5f5f5f5f5f5f 32 plan9 AAD $0x11 -d5|11223344556677885f5f5f5f5f5f5f 64 gnu error: unrecognized instruction -d5|11223344556677885f5f5f5f5f5f5f 64 intel error: unrecognized instruction -d5|11223344556677885f5f5f5f5f5f5f 64 plan9 error: unrecognized instruction -d800|11223344556677885f5f5f5f5f5f 32 intel fadd st0, dword ptr [eax] -d800|11223344556677885f5f5f5f5f5f 32 plan9 FADD 0(AX) -d800|11223344556677885f5f5f5f5f5f 64 gnu fadds (%rax) -d800|11223344556677885f5f5f5f5f5f 64 intel fadd st0, dword ptr [rax] -d800|11223344556677885f5f5f5f5f5f 64 plan9 FADD 0(AX) -d808|11223344556677885f5f5f5f5f5f 32 intel fmul st0, dword ptr [eax] -d808|11223344556677885f5f5f5f5f5f 32 plan9 FMUL 0(AX) -d808|11223344556677885f5f5f5f5f5f 64 gnu fmuls (%rax) -d808|11223344556677885f5f5f5f5f5f 64 intel fmul st0, dword ptr [rax] -d808|11223344556677885f5f5f5f5f5f 64 plan9 FMUL 0(AX) -d811|223344556677885f5f5f5f5f5f5f 32 intel fcom st0, dword ptr [ecx] -d811|223344556677885f5f5f5f5f5f5f 32 plan9 FCOM 0(CX) -d811|223344556677885f5f5f5f5f5f5f 64 gnu fcoms (%rcx) -d811|223344556677885f5f5f5f5f5f5f 64 intel fcom st0, dword ptr [rcx] -d811|223344556677885f5f5f5f5f5f5f 64 plan9 FCOM 0(CX) -d818|11223344556677885f5f5f5f5f5f 32 intel fcomp st0, dword ptr [eax] -d818|11223344556677885f5f5f5f5f5f 32 plan9 FCOMP 0(AX) -d818|11223344556677885f5f5f5f5f5f 64 gnu fcomps (%rax) -d818|11223344556677885f5f5f5f5f5f 64 intel fcomp st0, dword ptr [rax] -d818|11223344556677885f5f5f5f5f5f 64 plan9 FCOMP 0(AX) -d820|11223344556677885f5f5f5f5f5f 32 intel fsub st0, dword ptr [eax] -d820|11223344556677885f5f5f5f5f5f 32 plan9 FSUB 0(AX) -d820|11223344556677885f5f5f5f5f5f 64 gnu fsubs (%rax) -d820|11223344556677885f5f5f5f5f5f 64 intel fsub st0, dword ptr [rax] -d820|11223344556677885f5f5f5f5f5f 64 plan9 FSUB 0(AX) -d828|11223344556677885f5f5f5f5f5f 32 intel fsubr st0, dword ptr [eax] -d828|11223344556677885f5f5f5f5f5f 32 plan9 FSUBR 0(AX) -d828|11223344556677885f5f5f5f5f5f 64 gnu fsubrs (%rax) -d828|11223344556677885f5f5f5f5f5f 64 intel fsubr st0, dword ptr [rax] -d828|11223344556677885f5f5f5f5f5f 64 plan9 FSUBR 0(AX) -d830|11223344556677885f5f5f5f5f5f 32 intel fdiv st0, dword ptr [eax] -d830|11223344556677885f5f5f5f5f5f 32 plan9 FDIV 0(AX) -d830|11223344556677885f5f5f5f5f5f 64 gnu fdivs (%rax) -d830|11223344556677885f5f5f5f5f5f 64 intel fdiv st0, dword ptr [rax] -d830|11223344556677885f5f5f5f5f5f 64 plan9 FDIV 0(AX) -d838|11223344556677885f5f5f5f5f5f 32 intel fdivr st0, dword ptr [eax] -d838|11223344556677885f5f5f5f5f5f 32 plan9 FDIVR 0(AX) -d838|11223344556677885f5f5f5f5f5f 64 gnu fdivrs (%rax) -d838|11223344556677885f5f5f5f5f5f 64 intel fdivr st0, dword ptr [rax] -d838|11223344556677885f5f5f5f5f5f 64 plan9 FDIVR 0(AX) -d8c0|11223344556677885f5f5f5f5f5f 32 intel fadd st0, st0 -d8c0|11223344556677885f5f5f5f5f5f 32 plan9 FADD F0, F0 -d8c0|11223344556677885f5f5f5f5f5f 64 gnu fadd %st,%st -d8c0|11223344556677885f5f5f5f5f5f 64 intel fadd st0, st0 -d8c0|11223344556677885f5f5f5f5f5f 64 plan9 FADD F0, F0 -d8c8|11223344556677885f5f5f5f5f5f 32 intel fmul st0, st0 -d8c8|11223344556677885f5f5f5f5f5f 32 plan9 FMUL F0, F0 -d8c8|11223344556677885f5f5f5f5f5f 64 gnu fmul %st,%st -d8c8|11223344556677885f5f5f5f5f5f 64 intel fmul st0, st0 -d8c8|11223344556677885f5f5f5f5f5f 64 plan9 FMUL F0, F0 -d8d0|11223344556677885f5f5f5f5f5f 32 intel fcom st0, st0 -d8d0|11223344556677885f5f5f5f5f5f 32 plan9 FCOM F0 -d8d0|11223344556677885f5f5f5f5f5f 64 gnu fcom %st -d8d0|11223344556677885f5f5f5f5f5f 64 intel fcom st0, st0 -d8d0|11223344556677885f5f5f5f5f5f 64 plan9 FCOM F0 -d8d8|11223344556677885f5f5f5f5f5f 32 intel fcomp st0, st0 -d8d8|11223344556677885f5f5f5f5f5f 32 plan9 FCOMP F0 -d8d8|11223344556677885f5f5f5f5f5f 64 gnu fcomp %st -d8d8|11223344556677885f5f5f5f5f5f 64 intel fcomp st0, st0 -d8d8|11223344556677885f5f5f5f5f5f 64 plan9 FCOMP F0 -d8e0|11223344556677885f5f5f5f5f5f 32 intel fsub st0, st0 -d8e0|11223344556677885f5f5f5f5f5f 32 plan9 FSUB F0, F0 -d8e0|11223344556677885f5f5f5f5f5f 64 gnu fsub %st,%st -d8e0|11223344556677885f5f5f5f5f5f 64 intel fsub st0, st0 -d8e0|11223344556677885f5f5f5f5f5f 64 plan9 FSUB F0, F0 -d8e8|11223344556677885f5f5f5f5f5f 32 intel fsubr st0, st0 -d8e8|11223344556677885f5f5f5f5f5f 32 plan9 FSUBR F0, F0 -d8e8|11223344556677885f5f5f5f5f5f 64 gnu fsubr %st,%st -d8e8|11223344556677885f5f5f5f5f5f 64 intel fsubr st0, st0 -d8e8|11223344556677885f5f5f5f5f5f 64 plan9 FSUBR F0, F0 -d8f0|11223344556677885f5f5f5f5f5f 32 intel fdiv st0, st0 -d8f0|11223344556677885f5f5f5f5f5f 32 plan9 FDIV F0, F0 -d8f0|11223344556677885f5f5f5f5f5f 64 gnu fdiv %st,%st -d8f0|11223344556677885f5f5f5f5f5f 64 intel fdiv st0, st0 -d8f0|11223344556677885f5f5f5f5f5f 64 plan9 FDIV F0, F0 -d8f8|11223344556677885f5f5f5f5f5f 32 intel fdivr st0, st0 -d8f8|11223344556677885f5f5f5f5f5f 32 plan9 FDIVR F0, F0 -d8f8|11223344556677885f5f5f5f5f5f 64 gnu fdivr %st,%st -d8f8|11223344556677885f5f5f5f5f5f 64 intel fdivr st0, st0 -d8f8|11223344556677885f5f5f5f5f5f 64 plan9 FDIVR F0, F0 -d900|11223344556677885f5f5f5f5f5f 32 intel fld st0, dword ptr [eax] -d900|11223344556677885f5f5f5f5f5f 32 plan9 FLD 0(AX) -d900|11223344556677885f5f5f5f5f5f 64 gnu flds (%rax) -d900|11223344556677885f5f5f5f5f5f 64 intel fld st0, dword ptr [rax] -d900|11223344556677885f5f5f5f5f5f 64 plan9 FLD 0(AX) -d911|223344556677885f5f5f5f5f5f5f 32 intel fst dword ptr [ecx], st0 -d911|223344556677885f5f5f5f5f5f5f 32 plan9 FST 0(CX) -d911|223344556677885f5f5f5f5f5f5f 64 gnu fsts (%rcx) -d911|223344556677885f5f5f5f5f5f5f 64 intel fst dword ptr [rcx], st0 -d911|223344556677885f5f5f5f5f5f5f 64 plan9 FST 0(CX) -d918|11223344556677885f5f5f5f5f5f 32 intel fstp dword ptr [eax], st0 -d918|11223344556677885f5f5f5f5f5f 32 plan9 FSTP 0(AX) -d918|11223344556677885f5f5f5f5f5f 64 gnu fstps (%rax) -d918|11223344556677885f5f5f5f5f5f 64 intel fstp dword ptr [rax], st0 -d918|11223344556677885f5f5f5f5f5f 64 plan9 FSTP 0(AX) -d928|11223344556677885f5f5f5f5f5f 32 intel fldcw word ptr [eax] -d928|11223344556677885f5f5f5f5f5f 32 plan9 FLDCW 0(AX) -d928|11223344556677885f5f5f5f5f5f 64 gnu fldcw (%rax) -d928|11223344556677885f5f5f5f5f5f 64 intel fldcw word ptr [rax] -d928|11223344556677885f5f5f5f5f5f 64 plan9 FLDCW 0(AX) -d930|11223344556677885f5f5f5f5f5f 32 intel fnstenv ptr [eax] -d930|11223344556677885f5f5f5f5f5f 32 plan9 FNSTENV 0(AX) -d930|11223344556677885f5f5f5f5f5f 64 gnu fnstenv (%rax) -d930|11223344556677885f5f5f5f5f5f 64 intel fnstenv ptr [rax] -d930|11223344556677885f5f5f5f5f5f 64 plan9 FNSTENV 0(AX) -d938|11223344556677885f5f5f5f5f5f 32 intel fnstcw word ptr [eax] -d938|11223344556677885f5f5f5f5f5f 32 plan9 FNSTCW 0(AX) -d938|11223344556677885f5f5f5f5f5f 64 gnu fnstcw (%rax) -d938|11223344556677885f5f5f5f5f5f 64 intel fnstcw word ptr [rax] -d938|11223344556677885f5f5f5f5f5f 64 plan9 FNSTCW 0(AX) -d9c0|11223344556677885f5f5f5f5f5f 32 intel fld st0, st0 -d9c0|11223344556677885f5f5f5f5f5f 32 plan9 FLD F0 -d9c0|11223344556677885f5f5f5f5f5f 64 gnu fld %st -d9c0|11223344556677885f5f5f5f5f5f 64 intel fld st0, st0 -d9c0|11223344556677885f5f5f5f5f5f 64 plan9 FLD F0 -d9c8|11223344556677885f5f5f5f5f5f 32 intel fxch st0, st0 -d9c8|11223344556677885f5f5f5f5f5f 32 plan9 FXCH F0 -d9c8|11223344556677885f5f5f5f5f5f 64 gnu fxch %st -d9c8|11223344556677885f5f5f5f5f5f 64 intel fxch st0, st0 -d9c8|11223344556677885f5f5f5f5f5f 64 plan9 FXCH F0 -d9d0|11223344556677885f5f5f5f5f5f 32 intel fnop -d9d0|11223344556677885f5f5f5f5f5f 32 plan9 FNOP -d9d0|11223344556677885f5f5f5f5f5f 64 gnu fnop -d9d0|11223344556677885f5f5f5f5f5f 64 intel fnop -d9d0|11223344556677885f5f5f5f5f5f 64 plan9 FNOP -d9e0|11223344556677885f5f5f5f5f5f 32 intel fchs st0 -d9e0|11223344556677885f5f5f5f5f5f 32 plan9 FCHS -d9e0|11223344556677885f5f5f5f5f5f 64 gnu fchs -d9e0|11223344556677885f5f5f5f5f5f 64 intel fchs st0 -d9e0|11223344556677885f5f5f5f5f5f 64 plan9 FCHS -d9e1|11223344556677885f5f5f5f5f5f 32 intel fabs st0 -d9e1|11223344556677885f5f5f5f5f5f 32 plan9 FABS -d9e1|11223344556677885f5f5f5f5f5f 64 gnu fabs -d9e1|11223344556677885f5f5f5f5f5f 64 intel fabs st0 -d9e1|11223344556677885f5f5f5f5f5f 64 plan9 FABS -d9e4|11223344556677885f5f5f5f5f5f 32 intel ftst st0 -d9e4|11223344556677885f5f5f5f5f5f 32 plan9 FTST -d9e4|11223344556677885f5f5f5f5f5f 64 gnu ftst -d9e4|11223344556677885f5f5f5f5f5f 64 intel ftst st0 -d9e4|11223344556677885f5f5f5f5f5f 64 plan9 FTST -d9e5|11223344556677885f5f5f5f5f5f 32 intel fxam st0 -d9e5|11223344556677885f5f5f5f5f5f 32 plan9 FXAM -d9e5|11223344556677885f5f5f5f5f5f 64 gnu fxam -d9e5|11223344556677885f5f5f5f5f5f 64 intel fxam st0 -d9e5|11223344556677885f5f5f5f5f5f 64 plan9 FXAM -d9e8|11223344556677885f5f5f5f5f5f 32 intel fld1 st0 -d9e8|11223344556677885f5f5f5f5f5f 32 plan9 FLD1 -d9e8|11223344556677885f5f5f5f5f5f 64 gnu fld1 -d9e8|11223344556677885f5f5f5f5f5f 64 intel fld1 st0 -d9e8|11223344556677885f5f5f5f5f5f 64 plan9 FLD1 -d9e9|11223344556677885f5f5f5f5f5f 32 intel fldl2t st0 -d9e9|11223344556677885f5f5f5f5f5f 32 plan9 FLDL2T -d9e9|11223344556677885f5f5f5f5f5f 64 gnu fldl2t -d9e9|11223344556677885f5f5f5f5f5f 64 intel fldl2t st0 -d9e9|11223344556677885f5f5f5f5f5f 64 plan9 FLDL2T -d9ea|11223344556677885f5f5f5f5f5f 32 intel fldl2e st0 -d9ea|11223344556677885f5f5f5f5f5f 32 plan9 FLDL2E -d9ea|11223344556677885f5f5f5f5f5f 64 gnu fldl2e -d9ea|11223344556677885f5f5f5f5f5f 64 intel fldl2e st0 -d9ea|11223344556677885f5f5f5f5f5f 64 plan9 FLDL2E -d9eb|11223344556677885f5f5f5f5f5f 32 intel fldpi st0 -d9eb|11223344556677885f5f5f5f5f5f 32 plan9 FLDPI -d9eb|11223344556677885f5f5f5f5f5f 64 gnu fldpi -d9eb|11223344556677885f5f5f5f5f5f 64 intel fldpi st0 -d9eb|11223344556677885f5f5f5f5f5f 64 plan9 FLDPI -d9ec|11223344556677885f5f5f5f5f5f 32 intel fldlg2 st0 -d9ec|11223344556677885f5f5f5f5f5f 32 plan9 FLDLG2 -d9ec|11223344556677885f5f5f5f5f5f 64 gnu fldlg2 -d9ec|11223344556677885f5f5f5f5f5f 64 intel fldlg2 st0 -d9ec|11223344556677885f5f5f5f5f5f 64 plan9 FLDLG2 -d9f0|11223344556677885f5f5f5f5f5f 32 intel f2xm1 st0 -d9f0|11223344556677885f5f5f5f5f5f 32 plan9 F2XM1 -d9f0|11223344556677885f5f5f5f5f5f 64 gnu f2xm1 -d9f0|11223344556677885f5f5f5f5f5f 64 intel f2xm1 st0 -d9f0|11223344556677885f5f5f5f5f5f 64 plan9 F2XM1 -d9f1|11223344556677885f5f5f5f5f5f 32 intel fyl2x st0, st1 -d9f1|11223344556677885f5f5f5f5f5f 32 plan9 FYL2X -d9f1|11223344556677885f5f5f5f5f5f 64 gnu fyl2x -d9f1|11223344556677885f5f5f5f5f5f 64 intel fyl2x st0, st1 -d9f1|11223344556677885f5f5f5f5f5f 64 plan9 FYL2X -d9f2|11223344556677885f5f5f5f5f5f 32 intel fptan st0, st1 -d9f2|11223344556677885f5f5f5f5f5f 32 plan9 FPTAN -d9f2|11223344556677885f5f5f5f5f5f 64 gnu fptan -d9f2|11223344556677885f5f5f5f5f5f 64 intel fptan st0, st1 -d9f2|11223344556677885f5f5f5f5f5f 64 plan9 FPTAN -d9f3|11223344556677885f5f5f5f5f5f 32 intel fpatan st0, st1 -d9f3|11223344556677885f5f5f5f5f5f 32 plan9 FPATAN -d9f3|11223344556677885f5f5f5f5f5f 64 gnu fpatan -d9f3|11223344556677885f5f5f5f5f5f 64 intel fpatan st0, st1 -d9f3|11223344556677885f5f5f5f5f5f 64 plan9 FPATAN -d9f4|11223344556677885f5f5f5f5f5f 32 intel fxtract st0, st1 -d9f4|11223344556677885f5f5f5f5f5f 32 plan9 FXTRACT -d9f4|11223344556677885f5f5f5f5f5f 64 gnu fxtract -d9f4|11223344556677885f5f5f5f5f5f 64 intel fxtract st0, st1 -d9f4|11223344556677885f5f5f5f5f5f 64 plan9 FXTRACT -d9f5|11223344556677885f5f5f5f5f5f 32 intel fprem1 st0, st1 -d9f5|11223344556677885f5f5f5f5f5f 32 plan9 FPREM1 -d9f5|11223344556677885f5f5f5f5f5f 64 gnu fprem1 -d9f5|11223344556677885f5f5f5f5f5f 64 intel fprem1 st0, st1 -d9f5|11223344556677885f5f5f5f5f5f 64 plan9 FPREM1 -d9f6|11223344556677885f5f5f5f5f5f 32 intel fdecstp -d9f6|11223344556677885f5f5f5f5f5f 32 plan9 FDECSTP -d9f6|11223344556677885f5f5f5f5f5f 64 gnu fdecstp -d9f6|11223344556677885f5f5f5f5f5f 64 intel fdecstp -d9f6|11223344556677885f5f5f5f5f5f 64 plan9 FDECSTP -d9f7|11223344556677885f5f5f5f5f5f 32 intel fincstp -d9f7|11223344556677885f5f5f5f5f5f 32 plan9 FINCSTP -d9f7|11223344556677885f5f5f5f5f5f 64 gnu fincstp -d9f7|11223344556677885f5f5f5f5f5f 64 intel fincstp -d9f7|11223344556677885f5f5f5f5f5f 64 plan9 FINCSTP -d9f8|11223344556677885f5f5f5f5f5f 32 intel fprem st0, st1 -d9f8|11223344556677885f5f5f5f5f5f 32 plan9 FPREM -d9f8|11223344556677885f5f5f5f5f5f 64 gnu fprem -d9f8|11223344556677885f5f5f5f5f5f 64 intel fprem st0, st1 -d9f8|11223344556677885f5f5f5f5f5f 64 plan9 FPREM -d9f9|11223344556677885f5f5f5f5f5f 32 intel fyl2xp1 st0, st1 -d9f9|11223344556677885f5f5f5f5f5f 32 plan9 FYL2XP1 -d9f9|11223344556677885f5f5f5f5f5f 64 gnu fyl2xp1 -d9f9|11223344556677885f5f5f5f5f5f 64 intel fyl2xp1 st0, st1 -d9f9|11223344556677885f5f5f5f5f5f 64 plan9 FYL2XP1 -d9fa|11223344556677885f5f5f5f5f5f 32 intel fsqrt st0 -d9fa|11223344556677885f5f5f5f5f5f 32 plan9 FSQRT -d9fa|11223344556677885f5f5f5f5f5f 64 gnu fsqrt -d9fa|11223344556677885f5f5f5f5f5f 64 intel fsqrt st0 -d9fa|11223344556677885f5f5f5f5f5f 64 plan9 FSQRT -d9fb|11223344556677885f5f5f5f5f5f 32 intel fsincos st0, st1 -d9fb|11223344556677885f5f5f5f5f5f 32 plan9 FSINCOS -d9fb|11223344556677885f5f5f5f5f5f 64 gnu fsincos -d9fb|11223344556677885f5f5f5f5f5f 64 intel fsincos st0, st1 -d9fb|11223344556677885f5f5f5f5f5f 64 plan9 FSINCOS -d9fc|11223344556677885f5f5f5f5f5f 32 intel frndint st0 -d9fc|11223344556677885f5f5f5f5f5f 32 plan9 FRNDINT -d9fc|11223344556677885f5f5f5f5f5f 64 gnu frndint -d9fc|11223344556677885f5f5f5f5f5f 64 intel frndint st0 -d9fc|11223344556677885f5f5f5f5f5f 64 plan9 FRNDINT -d9fd|11223344556677885f5f5f5f5f5f 32 intel fscale st0, st1 -d9fd|11223344556677885f5f5f5f5f5f 32 plan9 FSCALE -d9fd|11223344556677885f5f5f5f5f5f 64 gnu fscale -d9fd|11223344556677885f5f5f5f5f5f 64 intel fscale st0, st1 -d9fd|11223344556677885f5f5f5f5f5f 64 plan9 FSCALE -d9fe|11223344556677885f5f5f5f5f5f 32 intel fsin st0 -d9fe|11223344556677885f5f5f5f5f5f 32 plan9 FSIN -d9fe|11223344556677885f5f5f5f5f5f 64 gnu fsin -d9fe|11223344556677885f5f5f5f5f5f 64 intel fsin st0 -d9fe|11223344556677885f5f5f5f5f5f 64 plan9 FSIN -d9ff|11223344556677885f5f5f5f5f5f 32 intel fcos st0 -d9ff|11223344556677885f5f5f5f5f5f 32 plan9 FCOS -d9ff|11223344556677885f5f5f5f5f5f 64 gnu fcos -d9ff|11223344556677885f5f5f5f5f5f 64 intel fcos st0 -d9ff|11223344556677885f5f5f5f5f5f 64 plan9 FCOS -da00|11223344556677885f5f5f5f5f5f 32 intel fiadd st0, dword ptr [eax] -da00|11223344556677885f5f5f5f5f5f 32 plan9 FIADD 0(AX) -da00|11223344556677885f5f5f5f5f5f 64 gnu fiaddl (%rax) -da00|11223344556677885f5f5f5f5f5f 64 intel fiadd st0, dword ptr [rax] -da00|11223344556677885f5f5f5f5f5f 64 plan9 FIADD 0(AX) -da08|11223344556677885f5f5f5f5f5f 32 intel fimul st0, dword ptr [eax] -da08|11223344556677885f5f5f5f5f5f 32 plan9 FIMUL 0(AX) -da08|11223344556677885f5f5f5f5f5f 64 gnu fimull (%rax) -da08|11223344556677885f5f5f5f5f5f 64 intel fimul st0, dword ptr [rax] -da08|11223344556677885f5f5f5f5f5f 64 plan9 FIMUL 0(AX) -da11|223344556677885f5f5f5f5f5f5f 32 intel ficom st0, dword ptr [ecx] -da11|223344556677885f5f5f5f5f5f5f 32 plan9 FICOM 0(CX) -da11|223344556677885f5f5f5f5f5f5f 64 gnu ficoml (%rcx) -da11|223344556677885f5f5f5f5f5f5f 64 intel ficom st0, dword ptr [rcx] -da11|223344556677885f5f5f5f5f5f5f 64 plan9 FICOM 0(CX) -da18|11223344556677885f5f5f5f5f5f 32 intel ficomp st0, dword ptr [eax] -da18|11223344556677885f5f5f5f5f5f 32 plan9 FICOMP 0(AX) -da18|11223344556677885f5f5f5f5f5f 64 gnu ficompl (%rax) -da18|11223344556677885f5f5f5f5f5f 64 intel ficomp st0, dword ptr [rax] -da18|11223344556677885f5f5f5f5f5f 64 plan9 FICOMP 0(AX) -da20|11223344556677885f5f5f5f5f5f 32 intel fisub st0, dword ptr [eax] -da20|11223344556677885f5f5f5f5f5f 32 plan9 FISUB 0(AX) -da20|11223344556677885f5f5f5f5f5f 64 gnu fisubl (%rax) -da20|11223344556677885f5f5f5f5f5f 64 intel fisub st0, dword ptr [rax] -da20|11223344556677885f5f5f5f5f5f 64 plan9 FISUB 0(AX) -da28|11223344556677885f5f5f5f5f5f 32 intel fisubr st0, dword ptr [eax] -da28|11223344556677885f5f5f5f5f5f 32 plan9 FISUBR 0(AX) -da28|11223344556677885f5f5f5f5f5f 64 gnu fisubrl (%rax) -da28|11223344556677885f5f5f5f5f5f 64 intel fisubr st0, dword ptr [rax] -da28|11223344556677885f5f5f5f5f5f 64 plan9 FISUBR 0(AX) -da30|11223344556677885f5f5f5f5f5f 32 intel fidiv st0, dword ptr [eax] -da30|11223344556677885f5f5f5f5f5f 32 plan9 FIDIV 0(AX) -da30|11223344556677885f5f5f5f5f5f 64 gnu fidivl (%rax) -da30|11223344556677885f5f5f5f5f5f 64 intel fidiv st0, dword ptr [rax] -da30|11223344556677885f5f5f5f5f5f 64 plan9 FIDIV 0(AX) -da38|11223344556677885f5f5f5f5f5f 32 intel fidivr st0, dword ptr [eax] -da38|11223344556677885f5f5f5f5f5f 32 plan9 FIDIVR 0(AX) -da38|11223344556677885f5f5f5f5f5f 64 gnu fidivrl (%rax) -da38|11223344556677885f5f5f5f5f5f 64 intel fidivr st0, dword ptr [rax] -da38|11223344556677885f5f5f5f5f5f 64 plan9 FIDIVR 0(AX) -dac0|11223344556677885f5f5f5f5f5f 32 intel fcmovb st0, st0 -dac0|11223344556677885f5f5f5f5f5f 32 plan9 FCMOVB F0, F0 -dac0|11223344556677885f5f5f5f5f5f 64 gnu fcmovb %st,%st -dac0|11223344556677885f5f5f5f5f5f 64 intel fcmovb st0, st0 -dac0|11223344556677885f5f5f5f5f5f 64 plan9 FCMOVB F0, F0 -dac8|11223344556677885f5f5f5f5f5f 32 intel fcmove st0, st0 -dac8|11223344556677885f5f5f5f5f5f 32 plan9 FCMOVE F0, F0 -dac8|11223344556677885f5f5f5f5f5f 64 gnu fcmove %st,%st -dac8|11223344556677885f5f5f5f5f5f 64 intel fcmove st0, st0 -dac8|11223344556677885f5f5f5f5f5f 64 plan9 FCMOVE F0, F0 -dad0|11223344556677885f5f5f5f5f5f 32 intel fcmovbe st0, st0 -dad0|11223344556677885f5f5f5f5f5f 32 plan9 FCMOVBE F0, F0 -dad0|11223344556677885f5f5f5f5f5f 64 gnu fcmovbe %st,%st -dad0|11223344556677885f5f5f5f5f5f 64 intel fcmovbe st0, st0 -dad0|11223344556677885f5f5f5f5f5f 64 plan9 FCMOVBE F0, F0 -dad8|11223344556677885f5f5f5f5f5f 32 intel fcmovu st0, st0 -dad8|11223344556677885f5f5f5f5f5f 32 plan9 FCMOVU F0, F0 -dad8|11223344556677885f5f5f5f5f5f 64 gnu fcmovu %st,%st -dad8|11223344556677885f5f5f5f5f5f 64 intel fcmovu st0, st0 -dad8|11223344556677885f5f5f5f5f5f 64 plan9 FCMOVU F0, F0 -dae9|11223344556677885f5f5f5f5f5f 32 intel fucompp st0, st1 -dae9|11223344556677885f5f5f5f5f5f 32 plan9 FUCOMPP -dae9|11223344556677885f5f5f5f5f5f 64 gnu fucompp -dae9|11223344556677885f5f5f5f5f5f 64 intel fucompp st0, st1 -dae9|11223344556677885f5f5f5f5f5f 64 plan9 FUCOMPP -db00|11223344556677885f5f5f5f5f5f 32 intel fild st0, dword ptr [eax] -db00|11223344556677885f5f5f5f5f5f 32 plan9 FILD 0(AX) -db00|11223344556677885f5f5f5f5f5f 64 gnu fildl (%rax) -db00|11223344556677885f5f5f5f5f5f 64 intel fild st0, dword ptr [rax] -db00|11223344556677885f5f5f5f5f5f 64 plan9 FILD 0(AX) -db08|11223344556677885f5f5f5f5f5f 32 intel fisttp dword ptr [eax], st0 -db08|11223344556677885f5f5f5f5f5f 32 plan9 FISTTP 0(AX) -db08|11223344556677885f5f5f5f5f5f 64 gnu fisttpl (%rax) -db08|11223344556677885f5f5f5f5f5f 64 intel fisttp dword ptr [rax], st0 -db08|11223344556677885f5f5f5f5f5f 64 plan9 FISTTP 0(AX) -db11|223344556677885f5f5f5f5f5f5f 32 intel fist dword ptr [ecx], st0 -db11|223344556677885f5f5f5f5f5f5f 32 plan9 FIST 0(CX) -db11|223344556677885f5f5f5f5f5f5f 64 gnu fistl (%rcx) -db11|223344556677885f5f5f5f5f5f5f 64 intel fist dword ptr [rcx], st0 -db11|223344556677885f5f5f5f5f5f5f 64 plan9 FIST 0(CX) -db18|11223344556677885f5f5f5f5f5f 32 intel fistp dword ptr [eax], st0 -db18|11223344556677885f5f5f5f5f5f 32 plan9 FISTP 0(AX) -db18|11223344556677885f5f5f5f5f5f 64 gnu fistpl (%rax) -db18|11223344556677885f5f5f5f5f5f 64 intel fistp dword ptr [rax], st0 -db18|11223344556677885f5f5f5f5f5f 64 plan9 FISTP 0(AX) -db28|11223344556677885f5f5f5f5f5f 32 intel fld st0, ptr [eax] -db28|11223344556677885f5f5f5f5f5f 32 plan9 FLD 0(AX) -db28|11223344556677885f5f5f5f5f5f 64 gnu fldt (%rax) -db28|11223344556677885f5f5f5f5f5f 64 intel fld st0, ptr [rax] -db28|11223344556677885f5f5f5f5f5f 64 plan9 FLD 0(AX) -db38|11223344556677885f5f5f5f5f5f 32 intel fstp ptr [eax], st0 -db38|11223344556677885f5f5f5f5f5f 32 plan9 FSTP 0(AX) -db38|11223344556677885f5f5f5f5f5f 64 gnu fstpt (%rax) -db38|11223344556677885f5f5f5f5f5f 64 intel fstp ptr [rax], st0 -db38|11223344556677885f5f5f5f5f5f 64 plan9 FSTP 0(AX) -dbc0|11223344556677885f5f5f5f5f5f 32 intel fcmovnb st0, st0 -dbc0|11223344556677885f5f5f5f5f5f 32 plan9 FCMOVNB F0, F0 -dbc0|11223344556677885f5f5f5f5f5f 64 gnu fcmovnb %st,%st -dbc0|11223344556677885f5f5f5f5f5f 64 intel fcmovnb st0, st0 -dbc0|11223344556677885f5f5f5f5f5f 64 plan9 FCMOVNB F0, F0 -dbc8|11223344556677885f5f5f5f5f5f 32 intel fcmovne st0, st0 -dbc8|11223344556677885f5f5f5f5f5f 32 plan9 FCMOVNE F0, F0 -dbc8|11223344556677885f5f5f5f5f5f 64 gnu fcmovne %st,%st -dbc8|11223344556677885f5f5f5f5f5f 64 intel fcmovne st0, st0 -dbc8|11223344556677885f5f5f5f5f5f 64 plan9 FCMOVNE F0, F0 -dbd0|11223344556677885f5f5f5f5f5f 32 intel fcmovnbe st0, st0 -dbd0|11223344556677885f5f5f5f5f5f 32 plan9 FCMOVNBE F0, F0 -dbd0|11223344556677885f5f5f5f5f5f 64 gnu fcmovnbe %st,%st -dbd0|11223344556677885f5f5f5f5f5f 64 intel fcmovnbe st0, st0 -dbd0|11223344556677885f5f5f5f5f5f 64 plan9 FCMOVNBE F0, F0 -dbd8|11223344556677885f5f5f5f5f5f 32 intel fcmovnu st0, st0 -dbd8|11223344556677885f5f5f5f5f5f 32 plan9 FCMOVNU F0, F0 -dbd8|11223344556677885f5f5f5f5f5f 64 gnu fcmovnu %st,%st -dbd8|11223344556677885f5f5f5f5f5f 64 intel fcmovnu st0, st0 -dbd8|11223344556677885f5f5f5f5f5f 64 plan9 FCMOVNU F0, F0 -dbe2|11223344556677885f5f5f5f5f5f 32 intel fnclex -dbe2|11223344556677885f5f5f5f5f5f 32 plan9 FNCLEX -dbe2|11223344556677885f5f5f5f5f5f 64 gnu fnclex -dbe2|11223344556677885f5f5f5f5f5f 64 intel fnclex -dbe2|11223344556677885f5f5f5f5f5f 64 plan9 FNCLEX -dbe3|11223344556677885f5f5f5f5f5f 32 intel fninit -dbe3|11223344556677885f5f5f5f5f5f 32 plan9 FNINIT -dbe3|11223344556677885f5f5f5f5f5f 64 gnu fninit -dbe3|11223344556677885f5f5f5f5f5f 64 intel fninit -dbe3|11223344556677885f5f5f5f5f5f 64 plan9 FNINIT -dbe8|11223344556677885f5f5f5f5f5f 32 intel fucomi st0, st0 -dbe8|11223344556677885f5f5f5f5f5f 32 plan9 FUCOMI F0, F0 -dbe8|11223344556677885f5f5f5f5f5f 64 gnu fucomi %st,%st -dbe8|11223344556677885f5f5f5f5f5f 64 intel fucomi st0, st0 -dbe8|11223344556677885f5f5f5f5f5f 64 plan9 FUCOMI F0, F0 -dbf0|11223344556677885f5f5f5f5f5f 32 intel fcomi st0, st0 -dbf0|11223344556677885f5f5f5f5f5f 32 plan9 FCOMI F0, F0 -dbf0|11223344556677885f5f5f5f5f5f 64 gnu fcomi %st,%st -dbf0|11223344556677885f5f5f5f5f5f 64 intel fcomi st0, st0 -dbf0|11223344556677885f5f5f5f5f5f 64 plan9 FCOMI F0, F0 -dc00|11223344556677885f5f5f5f5f5f 32 intel fadd st0, qword ptr [eax] -dc00|11223344556677885f5f5f5f5f5f 32 plan9 FADD 0(AX) -dc00|11223344556677885f5f5f5f5f5f 64 gnu faddl (%rax) -dc00|11223344556677885f5f5f5f5f5f 64 intel fadd st0, qword ptr [rax] -dc00|11223344556677885f5f5f5f5f5f 64 plan9 FADD 0(AX) -dc08|11223344556677885f5f5f5f5f5f 32 intel fmul st0, qword ptr [eax] -dc08|11223344556677885f5f5f5f5f5f 32 plan9 FMUL 0(AX) -dc08|11223344556677885f5f5f5f5f5f 64 gnu fmull (%rax) -dc08|11223344556677885f5f5f5f5f5f 64 intel fmul st0, qword ptr [rax] -dc08|11223344556677885f5f5f5f5f5f 64 plan9 FMUL 0(AX) -dc11|223344556677885f5f5f5f5f5f5f 32 intel fcom st0, qword ptr [ecx] -dc11|223344556677885f5f5f5f5f5f5f 32 plan9 FCOM 0(CX) -dc11|223344556677885f5f5f5f5f5f5f 64 gnu fcoml (%rcx) -dc11|223344556677885f5f5f5f5f5f5f 64 intel fcom st0, qword ptr [rcx] -dc11|223344556677885f5f5f5f5f5f5f 64 plan9 FCOM 0(CX) -dc18|11223344556677885f5f5f5f5f5f 32 intel fcomp st0, qword ptr [eax] -dc18|11223344556677885f5f5f5f5f5f 32 plan9 FCOMP 0(AX) -dc18|11223344556677885f5f5f5f5f5f 64 gnu fcompl (%rax) -dc18|11223344556677885f5f5f5f5f5f 64 intel fcomp st0, qword ptr [rax] -dc18|11223344556677885f5f5f5f5f5f 64 plan9 FCOMP 0(AX) -dc20|11223344556677885f5f5f5f5f5f 32 intel fsub st0, qword ptr [eax] -dc20|11223344556677885f5f5f5f5f5f 32 plan9 FSUB 0(AX) -dc20|11223344556677885f5f5f5f5f5f 64 gnu fsubl (%rax) -dc20|11223344556677885f5f5f5f5f5f 64 intel fsub st0, qword ptr [rax] -dc20|11223344556677885f5f5f5f5f5f 64 plan9 FSUB 0(AX) -dc28|11223344556677885f5f5f5f5f5f 32 intel fsubr st0, qword ptr [eax] -dc28|11223344556677885f5f5f5f5f5f 32 plan9 FSUBR 0(AX) -dc28|11223344556677885f5f5f5f5f5f 64 gnu fsubrl (%rax) -dc28|11223344556677885f5f5f5f5f5f 64 intel fsubr st0, qword ptr [rax] -dc28|11223344556677885f5f5f5f5f5f 64 plan9 FSUBR 0(AX) -dc30|11223344556677885f5f5f5f5f5f 32 intel fdiv st0, qword ptr [eax] -dc30|11223344556677885f5f5f5f5f5f 32 plan9 FDIV 0(AX) -dc30|11223344556677885f5f5f5f5f5f 64 gnu fdivl (%rax) -dc30|11223344556677885f5f5f5f5f5f 64 intel fdiv st0, qword ptr [rax] -dc30|11223344556677885f5f5f5f5f5f 64 plan9 FDIV 0(AX) -dc38|11223344556677885f5f5f5f5f5f 32 intel fdivr st0, qword ptr [eax] -dc38|11223344556677885f5f5f5f5f5f 32 plan9 FDIVR 0(AX) -dc38|11223344556677885f5f5f5f5f5f 64 gnu fdivrl (%rax) -dc38|11223344556677885f5f5f5f5f5f 64 intel fdivr st0, qword ptr [rax] -dc38|11223344556677885f5f5f5f5f5f 64 plan9 FDIVR 0(AX) -dcc0|11223344556677885f5f5f5f5f5f 32 intel fadd st0, st0 -dcc0|11223344556677885f5f5f5f5f5f 32 plan9 FADD F0, F0 -dcc0|11223344556677885f5f5f5f5f5f 64 gnu fadd %st,%st -dcc0|11223344556677885f5f5f5f5f5f 64 intel fadd st0, st0 -dcc0|11223344556677885f5f5f5f5f5f 64 plan9 FADD F0, F0 -dcc8|11223344556677885f5f5f5f5f5f 32 intel fmul st0, st0 -dcc8|11223344556677885f5f5f5f5f5f 32 plan9 FMUL F0, F0 -dcc8|11223344556677885f5f5f5f5f5f 64 gnu fmul %st,%st -dcc8|11223344556677885f5f5f5f5f5f 64 intel fmul st0, st0 -dcc8|11223344556677885f5f5f5f5f5f 64 plan9 FMUL F0, F0 -dce0|11223344556677885f5f5f5f5f5f 32 intel fsubr st0, st0 -dce0|11223344556677885f5f5f5f5f5f 32 plan9 FSUBR F0, F0 -dce0|11223344556677885f5f5f5f5f5f 64 gnu fsub %st,%st -dce0|11223344556677885f5f5f5f5f5f 64 intel fsubr st0, st0 -dce0|11223344556677885f5f5f5f5f5f 64 plan9 FSUBR F0, F0 -dce8|11223344556677885f5f5f5f5f5f 32 intel fsub st0, st0 -dce8|11223344556677885f5f5f5f5f5f 32 plan9 FSUB F0, F0 -dce8|11223344556677885f5f5f5f5f5f 64 gnu fsubr %st,%st -dce8|11223344556677885f5f5f5f5f5f 64 intel fsub st0, st0 -dce8|11223344556677885f5f5f5f5f5f 64 plan9 FSUB F0, F0 -dcf0|11223344556677885f5f5f5f5f5f 32 intel fdivr st0, st0 -dcf0|11223344556677885f5f5f5f5f5f 32 plan9 FDIVR F0, F0 -dcf0|11223344556677885f5f5f5f5f5f 64 gnu fdiv %st,%st -dcf0|11223344556677885f5f5f5f5f5f 64 intel fdivr st0, st0 -dcf0|11223344556677885f5f5f5f5f5f 64 plan9 FDIVR F0, F0 -dcf8|11223344556677885f5f5f5f5f5f 32 intel fdiv st0, st0 -dcf8|11223344556677885f5f5f5f5f5f 32 plan9 FDIV F0, F0 -dcf8|11223344556677885f5f5f5f5f5f 64 gnu fdivr %st,%st -dcf8|11223344556677885f5f5f5f5f5f 64 intel fdiv st0, st0 -dcf8|11223344556677885f5f5f5f5f5f 64 plan9 FDIV F0, F0 -dd00|11223344556677885f5f5f5f5f5f 32 intel fld st0, qword ptr [eax] -dd00|11223344556677885f5f5f5f5f5f 32 plan9 FLD 0(AX) -dd00|11223344556677885f5f5f5f5f5f 64 gnu fldl (%rax) -dd00|11223344556677885f5f5f5f5f5f 64 intel fld st0, qword ptr [rax] -dd00|11223344556677885f5f5f5f5f5f 64 plan9 FLD 0(AX) -dd08|11223344556677885f5f5f5f5f5f 32 intel fisttp qword ptr [eax], st0 -dd08|11223344556677885f5f5f5f5f5f 32 plan9 FISTTP 0(AX) -dd08|11223344556677885f5f5f5f5f5f 64 gnu fisttpll (%rax) -dd08|11223344556677885f5f5f5f5f5f 64 intel fisttp qword ptr [rax], st0 -dd08|11223344556677885f5f5f5f5f5f 64 plan9 FISTTP 0(AX) -dd11|223344556677885f5f5f5f5f5f5f 32 intel fst qword ptr [ecx], st0 -dd11|223344556677885f5f5f5f5f5f5f 32 plan9 FST 0(CX) -dd11|223344556677885f5f5f5f5f5f5f 64 gnu fstl (%rcx) -dd11|223344556677885f5f5f5f5f5f5f 64 intel fst qword ptr [rcx], st0 -dd11|223344556677885f5f5f5f5f5f5f 64 plan9 FST 0(CX) -dd18|11223344556677885f5f5f5f5f5f 32 intel fstp qword ptr [eax], st0 -dd18|11223344556677885f5f5f5f5f5f 32 plan9 FSTP 0(AX) -dd18|11223344556677885f5f5f5f5f5f 64 gnu fstpl (%rax) -dd18|11223344556677885f5f5f5f5f5f 64 intel fstp qword ptr [rax], st0 -dd18|11223344556677885f5f5f5f5f5f 64 plan9 FSTP 0(AX) -dd20|11223344556677885f5f5f5f5f5f 32 intel frstor ptr [eax] -dd20|11223344556677885f5f5f5f5f5f 32 plan9 FRSTORL 0(AX) -dd20|11223344556677885f5f5f5f5f5f 64 gnu frstor (%rax) -dd20|11223344556677885f5f5f5f5f5f 64 intel frstor ptr [rax] -dd20|11223344556677885f5f5f5f5f5f 64 plan9 FRSTORL 0(AX) -dd30|11223344556677885f5f5f5f5f5f 32 intel fnsave ptr [eax] -dd30|11223344556677885f5f5f5f5f5f 32 plan9 FNSAVE 0(AX) -dd30|11223344556677885f5f5f5f5f5f 64 gnu fnsave (%rax) -dd30|11223344556677885f5f5f5f5f5f 64 intel fnsave ptr [rax] -dd30|11223344556677885f5f5f5f5f5f 64 plan9 FNSAVE 0(AX) -dd38|11223344556677885f5f5f5f5f5f 32 intel fnstsw word ptr [eax] -dd38|11223344556677885f5f5f5f5f5f 32 plan9 FNSTSW 0(AX) -dd38|11223344556677885f5f5f5f5f5f 64 gnu fnstsw (%rax) -dd38|11223344556677885f5f5f5f5f5f 64 intel fnstsw word ptr [rax] -dd38|11223344556677885f5f5f5f5f5f 64 plan9 FNSTSW 0(AX) -ddc0|11223344556677885f5f5f5f5f5f 32 intel ffree st0 -ddc0|11223344556677885f5f5f5f5f5f 32 plan9 FFREE F0 -ddc0|11223344556677885f5f5f5f5f5f 64 gnu ffree %st -ddc0|11223344556677885f5f5f5f5f5f 64 intel ffree st0 -ddc0|11223344556677885f5f5f5f5f5f 64 plan9 FFREE F0 -ddd0|11223344556677885f5f5f5f5f5f 32 intel fst st0, st0 -ddd0|11223344556677885f5f5f5f5f5f 32 plan9 FST F0 -ddd0|11223344556677885f5f5f5f5f5f 64 gnu fst %st -ddd0|11223344556677885f5f5f5f5f5f 64 intel fst st0, st0 -ddd0|11223344556677885f5f5f5f5f5f 64 plan9 FST F0 -ddd8|11223344556677885f5f5f5f5f5f 32 intel fstp st0, st0 -ddd8|11223344556677885f5f5f5f5f5f 32 plan9 FSTP F0 -ddd8|11223344556677885f5f5f5f5f5f 64 gnu fstp %st -ddd8|11223344556677885f5f5f5f5f5f 64 intel fstp st0, st0 -ddd8|11223344556677885f5f5f5f5f5f 64 plan9 FSTP F0 -dde0|11223344556677885f5f5f5f5f5f 32 intel fucom st0, st0 -dde0|11223344556677885f5f5f5f5f5f 32 plan9 FUCOM F0 -dde0|11223344556677885f5f5f5f5f5f 64 gnu fucom %st -dde0|11223344556677885f5f5f5f5f5f 64 intel fucom st0, st0 -dde0|11223344556677885f5f5f5f5f5f 64 plan9 FUCOM F0 -dde8|11223344556677885f5f5f5f5f5f 32 intel fucomp st0, st0 -dde8|11223344556677885f5f5f5f5f5f 32 plan9 FUCOMP F0 -dde8|11223344556677885f5f5f5f5f5f 64 gnu fucomp %st -dde8|11223344556677885f5f5f5f5f5f 64 intel fucomp st0, st0 -dde8|11223344556677885f5f5f5f5f5f 64 plan9 FUCOMP F0 -de00|11223344556677885f5f5f5f5f5f 32 intel fiadd st0, word ptr [eax] -de00|11223344556677885f5f5f5f5f5f 32 plan9 FIADD 0(AX) -de00|11223344556677885f5f5f5f5f5f 64 gnu fiadd (%rax) -de00|11223344556677885f5f5f5f5f5f 64 intel fiadd st0, word ptr [rax] -de00|11223344556677885f5f5f5f5f5f 64 plan9 FIADD 0(AX) -de08|11223344556677885f5f5f5f5f5f 32 intel fimul st0, word ptr [eax] -de08|11223344556677885f5f5f5f5f5f 32 plan9 FIMUL 0(AX) -de08|11223344556677885f5f5f5f5f5f 64 gnu fimul (%rax) -de08|11223344556677885f5f5f5f5f5f 64 intel fimul st0, word ptr [rax] -de08|11223344556677885f5f5f5f5f5f 64 plan9 FIMUL 0(AX) -de11|223344556677885f5f5f5f5f5f5f 32 intel ficom st0, word ptr [ecx] -de11|223344556677885f5f5f5f5f5f5f 32 plan9 FICOM 0(CX) -de11|223344556677885f5f5f5f5f5f5f 64 gnu ficom (%rcx) -de11|223344556677885f5f5f5f5f5f5f 64 intel ficom st0, word ptr [rcx] -de11|223344556677885f5f5f5f5f5f5f 64 plan9 FICOM 0(CX) -de18|11223344556677885f5f5f5f5f5f 32 intel ficomp st0, word ptr [eax] -de18|11223344556677885f5f5f5f5f5f 32 plan9 FICOMP 0(AX) -de18|11223344556677885f5f5f5f5f5f 64 gnu ficomp (%rax) -de18|11223344556677885f5f5f5f5f5f 64 intel ficomp st0, word ptr [rax] -de18|11223344556677885f5f5f5f5f5f 64 plan9 FICOMP 0(AX) -de20|11223344556677885f5f5f5f5f5f 32 intel fisub st0, word ptr [eax] -de20|11223344556677885f5f5f5f5f5f 32 plan9 FISUB 0(AX) -de20|11223344556677885f5f5f5f5f5f 64 gnu fisub (%rax) -de20|11223344556677885f5f5f5f5f5f 64 intel fisub st0, word ptr [rax] -de20|11223344556677885f5f5f5f5f5f 64 plan9 FISUB 0(AX) -de28|11223344556677885f5f5f5f5f5f 32 intel fisubr st0, word ptr [eax] -de28|11223344556677885f5f5f5f5f5f 32 plan9 FISUBR 0(AX) -de28|11223344556677885f5f5f5f5f5f 64 gnu fisubr (%rax) -de28|11223344556677885f5f5f5f5f5f 64 intel fisubr st0, word ptr [rax] -de28|11223344556677885f5f5f5f5f5f 64 plan9 FISUBR 0(AX) -de30|11223344556677885f5f5f5f5f5f 32 intel fidiv st0, word ptr [eax] -de30|11223344556677885f5f5f5f5f5f 32 plan9 FIDIV 0(AX) -de30|11223344556677885f5f5f5f5f5f 64 gnu fidiv (%rax) -de30|11223344556677885f5f5f5f5f5f 64 intel fidiv st0, word ptr [rax] -de30|11223344556677885f5f5f5f5f5f 64 plan9 FIDIV 0(AX) -de38|11223344556677885f5f5f5f5f5f 32 intel fidivr st0, word ptr [eax] -de38|11223344556677885f5f5f5f5f5f 32 plan9 FIDIVR 0(AX) -de38|11223344556677885f5f5f5f5f5f 64 gnu fidivr (%rax) -de38|11223344556677885f5f5f5f5f5f 64 intel fidivr st0, word ptr [rax] -de38|11223344556677885f5f5f5f5f5f 64 plan9 FIDIVR 0(AX) -dec0|11223344556677885f5f5f5f5f5f 32 intel faddp st0, st0 -dec0|11223344556677885f5f5f5f5f5f 32 plan9 FADDP F0, F0 -dec0|11223344556677885f5f5f5f5f5f 64 gnu faddp %st,%st -dec0|11223344556677885f5f5f5f5f5f 64 intel faddp st0, st0 -dec0|11223344556677885f5f5f5f5f5f 64 plan9 FADDP F0, F0 -dec8|11223344556677885f5f5f5f5f5f 32 intel fmulp st0, st0 -dec8|11223344556677885f5f5f5f5f5f 32 plan9 FMULP F0, F0 -dec8|11223344556677885f5f5f5f5f5f 64 gnu fmulp %st,%st -dec8|11223344556677885f5f5f5f5f5f 64 intel fmulp st0, st0 -dec8|11223344556677885f5f5f5f5f5f 64 plan9 FMULP F0, F0 -ded9|11223344556677885f5f5f5f5f5f 32 intel fcompp st0, st1 -ded9|11223344556677885f5f5f5f5f5f 32 plan9 FCOMPP -ded9|11223344556677885f5f5f5f5f5f 64 gnu fcompp -ded9|11223344556677885f5f5f5f5f5f 64 intel fcompp st0, st1 -ded9|11223344556677885f5f5f5f5f5f 64 plan9 FCOMPP -dee0|11223344556677885f5f5f5f5f5f 32 intel fsubrp st0, st0 -dee0|11223344556677885f5f5f5f5f5f 32 plan9 FSUBRP F0, F0 -dee0|11223344556677885f5f5f5f5f5f 64 gnu fsubp %st,%st -dee0|11223344556677885f5f5f5f5f5f 64 intel fsubrp st0, st0 -dee0|11223344556677885f5f5f5f5f5f 64 plan9 FSUBRP F0, F0 -dee8|11223344556677885f5f5f5f5f5f 32 intel fsubp st0, st0 -dee8|11223344556677885f5f5f5f5f5f 32 plan9 FSUBP F0, F0 -dee8|11223344556677885f5f5f5f5f5f 64 gnu fsubrp %st,%st -dee8|11223344556677885f5f5f5f5f5f 64 intel fsubp st0, st0 -dee8|11223344556677885f5f5f5f5f5f 64 plan9 FSUBP F0, F0 -def0|11223344556677885f5f5f5f5f5f 32 intel fdivrp st0, st0 -def0|11223344556677885f5f5f5f5f5f 32 plan9 FDIVRP F0, F0 -def0|11223344556677885f5f5f5f5f5f 64 gnu fdivp %st,%st -def0|11223344556677885f5f5f5f5f5f 64 intel fdivrp st0, st0 -def0|11223344556677885f5f5f5f5f5f 64 plan9 FDIVRP F0, F0 -def8|11223344556677885f5f5f5f5f5f 32 intel fdivp st0, st0 -def8|11223344556677885f5f5f5f5f5f 32 plan9 FDIVP F0, F0 -def8|11223344556677885f5f5f5f5f5f 64 gnu fdivrp %st,%st -def8|11223344556677885f5f5f5f5f5f 64 intel fdivp st0, st0 -def8|11223344556677885f5f5f5f5f5f 64 plan9 FDIVP F0, F0 -df00|11223344556677885f5f5f5f5f5f 32 intel fild st0, word ptr [eax] -df00|11223344556677885f5f5f5f5f5f 32 plan9 FILD 0(AX) -df00|11223344556677885f5f5f5f5f5f 64 gnu fild (%rax) -df00|11223344556677885f5f5f5f5f5f 64 intel fild st0, word ptr [rax] -df00|11223344556677885f5f5f5f5f5f 64 plan9 FILD 0(AX) -df08|11223344556677885f5f5f5f5f5f 32 intel fisttp word ptr [eax], st0 -df08|11223344556677885f5f5f5f5f5f 32 plan9 FISTTP 0(AX) -df08|11223344556677885f5f5f5f5f5f 64 gnu fisttp (%rax) -df08|11223344556677885f5f5f5f5f5f 64 intel fisttp word ptr [rax], st0 -df08|11223344556677885f5f5f5f5f5f 64 plan9 FISTTP 0(AX) -df11|223344556677885f5f5f5f5f5f5f 32 intel fist word ptr [ecx], st0 -df11|223344556677885f5f5f5f5f5f5f 32 plan9 FIST 0(CX) -df11|223344556677885f5f5f5f5f5f5f 64 gnu fist (%rcx) -df11|223344556677885f5f5f5f5f5f5f 64 intel fist word ptr [rcx], st0 -df11|223344556677885f5f5f5f5f5f5f 64 plan9 FIST 0(CX) -df18|11223344556677885f5f5f5f5f5f 32 intel fistp word ptr [eax], st0 -df18|11223344556677885f5f5f5f5f5f 32 plan9 FISTP 0(AX) -df18|11223344556677885f5f5f5f5f5f 64 gnu fistp (%rax) -df18|11223344556677885f5f5f5f5f5f 64 intel fistp word ptr [rax], st0 -df18|11223344556677885f5f5f5f5f5f 64 plan9 FISTP 0(AX) -df20|11223344556677885f5f5f5f5f5f 32 intel fbld st0, ptr [eax] -df20|11223344556677885f5f5f5f5f5f 32 plan9 FBLD 0(AX) -df20|11223344556677885f5f5f5f5f5f 64 gnu fbld (%rax) -df20|11223344556677885f5f5f5f5f5f 64 intel fbld st0, ptr [rax] -df20|11223344556677885f5f5f5f5f5f 64 plan9 FBLD 0(AX) -df28|11223344556677885f5f5f5f5f5f 32 intel fild st0, qword ptr [eax] -df28|11223344556677885f5f5f5f5f5f 32 plan9 FILD 0(AX) -df28|11223344556677885f5f5f5f5f5f 64 gnu fildll (%rax) -df28|11223344556677885f5f5f5f5f5f 64 intel fild st0, qword ptr [rax] -df28|11223344556677885f5f5f5f5f5f 64 plan9 FILD 0(AX) -df30|11223344556677885f5f5f5f5f5f 32 intel fbstp ptr [eax], st0 -df30|11223344556677885f5f5f5f5f5f 32 plan9 FBSTP 0(AX) -df30|11223344556677885f5f5f5f5f5f 64 gnu fbstp (%rax) -df30|11223344556677885f5f5f5f5f5f 64 intel fbstp ptr [rax], st0 -df30|11223344556677885f5f5f5f5f5f 64 plan9 FBSTP 0(AX) -df38|11223344556677885f5f5f5f5f5f 32 intel fistp qword ptr [eax], st0 -df38|11223344556677885f5f5f5f5f5f 32 plan9 FISTP 0(AX) -df38|11223344556677885f5f5f5f5f5f 64 gnu fistpll (%rax) -df38|11223344556677885f5f5f5f5f5f 64 intel fistp qword ptr [rax], st0 -df38|11223344556677885f5f5f5f5f5f 64 plan9 FISTP 0(AX) -dfc0|11223344556677885f5f5f5f5f5f 32 intel ffreep st0 -dfc0|11223344556677885f5f5f5f5f5f 32 plan9 FFREEP F0 -dfc0|11223344556677885f5f5f5f5f5f 64 gnu ffreep %st -dfc0|11223344556677885f5f5f5f5f5f 64 intel ffreep st0 -dfc0|11223344556677885f5f5f5f5f5f 64 plan9 FFREEP F0 -dfe0|11223344556677885f5f5f5f5f5f 32 intel fnstsw ax -dfe0|11223344556677885f5f5f5f5f5f 32 plan9 FNSTSW AX -dfe0|11223344556677885f5f5f5f5f5f 64 gnu fnstsw %ax -dfe0|11223344556677885f5f5f5f5f5f 64 intel fnstsw ax -dfe0|11223344556677885f5f5f5f5f5f 64 plan9 FNSTSW AX -dfe8|11223344556677885f5f5f5f5f5f 32 intel fucomip st0, st0 -dfe8|11223344556677885f5f5f5f5f5f 32 plan9 FUCOMIP F0, F0 -dfe8|11223344556677885f5f5f5f5f5f 64 gnu fucomip %st,%st -dfe8|11223344556677885f5f5f5f5f5f 64 intel fucomip st0, st0 -dfe8|11223344556677885f5f5f5f5f5f 64 plan9 FUCOMIP F0, F0 -dff0|11223344556677885f5f5f5f5f5f 32 intel fcomip st0, st0 -dff0|11223344556677885f5f5f5f5f5f 32 plan9 FCOMIP F0, F0 -dff0|11223344556677885f5f5f5f5f5f 64 gnu fcomip %st,%st -dff0|11223344556677885f5f5f5f5f5f 64 intel fcomip st0, st0 -dff0|11223344556677885f5f5f5f5f5f 64 plan9 FCOMIP F0, F0 -e111|223344556677885f5f5f5f5f5f5f 32 intel loope .+0x11 -e111|223344556677885f5f5f5f5f5f5f 32 plan9 LOOPE .+17 -e111|223344556677885f5f5f5f5f5f5f 64 gnu loope .+0x11 -e111|223344556677885f5f5f5f5f5f5f 64 intel loope .+0x11 -e111|223344556677885f5f5f5f5f5f5f 64 plan9 LOOPE .+17 -e211|223344556677885f5f5f5f5f5f5f 32 intel loop .+0x11 -e211|223344556677885f5f5f5f5f5f5f 32 plan9 LOOP .+17 -e211|223344556677885f5f5f5f5f5f5f 64 gnu loop .+0x11 -e211|223344556677885f5f5f5f5f5f5f 64 intel loop .+0x11 -e211|223344556677885f5f5f5f5f5f5f 64 plan9 LOOP .+17 -e311|223344556677885f5f5f5f5f5f5f 32 intel jecxz .+0x11 -e311|223344556677885f5f5f5f5f5f5f 32 plan9 JECXZ .+17 -e311|223344556677885f5f5f5f5f5f5f 64 gnu jrcxz .+0x11 -e311|223344556677885f5f5f5f5f5f5f 64 intel jrcxz .+0x11 -e311|223344556677885f5f5f5f5f5f5f 64 plan9 JRCXZ .+17 -e411|223344556677885f5f5f5f5f5f5f 32 intel in al, 0x11 -e411|223344556677885f5f5f5f5f5f5f 32 plan9 INL $0x11, AL -e411|223344556677885f5f5f5f5f5f5f 64 gnu in $0x11,%al -e411|223344556677885f5f5f5f5f5f5f 64 intel in al, 0x11 -e411|223344556677885f5f5f5f5f5f5f 64 plan9 INL $0x11, AL -e511|223344556677885f5f5f5f5f5f5f 32 intel in eax, 0x11 -e511|223344556677885f5f5f5f5f5f5f 32 plan9 INL $0x11, AX -e511|223344556677885f5f5f5f5f5f5f 64 gnu in $0x11,%eax -e511|223344556677885f5f5f5f5f5f5f 64 intel in eax, 0x11 -e511|223344556677885f5f5f5f5f5f5f 64 plan9 INL $0x11, AX -e611|223344556677885f5f5f5f5f5f5f 32 intel out 0x11, al -e611|223344556677885f5f5f5f5f5f5f 32 plan9 OUTL AL, $0x11 -e611|223344556677885f5f5f5f5f5f5f 64 gnu out %al,$0x11 -e611|223344556677885f5f5f5f5f5f5f 64 intel out 0x11, al -e611|223344556677885f5f5f5f5f5f5f 64 plan9 OUTL AL, $0x11 -e711|223344556677885f5f5f5f5f5f5f 32 intel out 0x11, eax -e711|223344556677885f5f5f5f5f5f5f 32 plan9 OUTL AX, $0x11 -e711|223344556677885f5f5f5f5f5f5f 64 gnu out %eax,$0x11 -e711|223344556677885f5f5f5f5f5f5f 64 intel out 0x11, eax -e711|223344556677885f5f5f5f5f5f5f 64 plan9 OUTL AX, $0x11 -e811223344|556677885f5f5f5f5f5f5f 32 intel call .+0x44332211 -e811223344|556677885f5f5f5f5f5f5f 32 plan9 CALL .+1144201745 -e811223344|556677885f5f5f5f5f5f5f 64 gnu callq .+0x44332211 -e811223344|556677885f5f5f5f5f5f5f 64 intel call .+0x44332211 -e811223344|556677885f5f5f5f5f5f5f 64 plan9 CALL .+1144201745 -e911223344|556677885f5f5f5f5f5f5f 32 intel jmp .+0x44332211 -e911223344|556677885f5f5f5f5f5f5f 32 plan9 JMP .+1144201745 -e911223344|556677885f5f5f5f5f5f5f 64 gnu jmpq .+0x44332211 -e911223344|556677885f5f5f5f5f5f5f 64 intel jmp .+0x44332211 -e911223344|556677885f5f5f5f5f5f5f 64 plan9 JMP .+1144201745 -ea112233445566|77885f5f5f5f5f5f5f 32 intel jmp far 0x44332211, 0x6655 -ea112233445566|77885f5f5f5f5f5f5f 32 plan9 LJMP $0x44332211, $0x6655 -eb11|223344556677885f5f5f5f5f5f5f 32 intel jmp .+0x11 -eb11|223344556677885f5f5f5f5f5f5f 32 plan9 JMP .+17 -eb11|223344556677885f5f5f5f5f5f5f 64 gnu jmp .+0x11 -eb11|223344556677885f5f5f5f5f5f5f 64 intel jmp .+0x11 -eb11|223344556677885f5f5f5f5f5f5f 64 plan9 JMP .+17 -ec|11223344556677885f5f5f5f5f5f5f 32 intel in al, dx -ec|11223344556677885f5f5f5f5f5f5f 32 plan9 INL DX, AL -ec|11223344556677885f5f5f5f5f5f5f 64 gnu in (%dx),%al -ec|11223344556677885f5f5f5f5f5f5f 64 intel in al, dx -ec|11223344556677885f5f5f5f5f5f5f 64 plan9 INL DX, AL -ed|11223344556677885f5f5f5f5f5f5f 32 intel in eax, dx -ed|11223344556677885f5f5f5f5f5f5f 32 plan9 INL DX, AX -ed|11223344556677885f5f5f5f5f5f5f 64 gnu in (%dx),%eax -ed|11223344556677885f5f5f5f5f5f5f 64 intel in eax, dx -ed|11223344556677885f5f5f5f5f5f5f 64 plan9 INL DX, AX -ee|11223344556677885f5f5f5f5f5f5f 32 intel out dx, al -ee|11223344556677885f5f5f5f5f5f5f 32 plan9 OUTL AL, DX -ee|11223344556677885f5f5f5f5f5f5f 64 gnu out %al,(%dx) -ee|11223344556677885f5f5f5f5f5f5f 64 intel out dx, al -ee|11223344556677885f5f5f5f5f5f5f 64 plan9 OUTL AL, DX -ef|11223344556677885f5f5f5f5f5f5f 32 intel out dx, eax -ef|11223344556677885f5f5f5f5f5f5f 32 plan9 OUTL AX, DX -ef|11223344556677885f5f5f5f5f5f5f 64 gnu out %eax,(%dx) -ef|11223344556677885f5f5f5f5f5f5f 64 intel out dx, eax -ef|11223344556677885f5f5f5f5f5f5f 64 plan9 OUTL AX, DX -f1|11223344556677885f5f5f5f5f5f5f 32 intel int1 -f1|11223344556677885f5f5f5f5f5f5f 32 plan9 ICEBP -f1|11223344556677885f5f5f5f5f5f5f 64 gnu icebp -f1|11223344556677885f5f5f5f5f5f5f 64 intel int1 -f1|11223344556677885f5f5f5f5f5f5f 64 plan9 ICEBP -f20f1011|223344556677885f5f5f5f5f 32 intel movsd xmm2, qword ptr [ecx] -f20f1011|223344556677885f5f5f5f5f 32 plan9 MOVSD_XMM 0(CX), X2 -f20f1011|223344556677885f5f5f5f5f 64 gnu movsd (%rcx),%xmm2 -f20f1011|223344556677885f5f5f5f5f 64 intel movsd xmm2, qword ptr [rcx] -f20f1011|223344556677885f5f5f5f5f 64 plan9 MOVSD_XMM 0(CX), X2 -f20f1122|3344556677885f5f5f5f5f5f 32 intel movsd qword ptr [edx], xmm4 -f20f1122|3344556677885f5f5f5f5f5f 32 plan9 MOVSD_XMM X4, 0(DX) -f20f1122|3344556677885f5f5f5f5f5f 64 gnu movsd %xmm4,(%rdx) -f20f1122|3344556677885f5f5f5f5f5f 64 intel movsd qword ptr [rdx], xmm4 -f20f1122|3344556677885f5f5f5f5f5f 64 plan9 MOVSD_XMM X4, 0(DX) -f20f1211|223344556677885f5f5f5f5f 32 intel movddup xmm2, qword ptr [ecx] -f20f1211|223344556677885f5f5f5f5f 32 plan9 MOVDDUP 0(CX), X2 -f20f1211|223344556677885f5f5f5f5f 64 gnu movddup (%rcx),%xmm2 -f20f1211|223344556677885f5f5f5f5f 64 intel movddup xmm2, qword ptr [rcx] -f20f1211|223344556677885f5f5f5f5f 64 plan9 MOVDDUP 0(CX), X2 -f20f2a11|223344556677885f5f5f5f5f 32 intel cvtsi2sd xmm2, dword ptr [ecx] -f20f2a11|223344556677885f5f5f5f5f 32 plan9 CVTSI2SDL 0(CX), X2 -f20f2a11|223344556677885f5f5f5f5f 64 gnu cvtsi2sdl (%rcx),%xmm2 -f20f2a11|223344556677885f5f5f5f5f 64 intel cvtsi2sd xmm2, dword ptr [rcx] -f20f2a11|223344556677885f5f5f5f5f 64 plan9 CVTSI2SDL 0(CX), X2 -f20f2c11|223344556677885f5f5f5f5f 32 intel cvttsd2si edx, qword ptr [ecx] -f20f2c11|223344556677885f5f5f5f5f 32 plan9 CVTTSD2SIQ 0(CX), DX -f20f2c11|223344556677885f5f5f5f5f 64 gnu cvttsd2si (%rcx),%edx -f20f2c11|223344556677885f5f5f5f5f 64 intel cvttsd2si edx, qword ptr [rcx] -f20f2c11|223344556677885f5f5f5f5f 64 plan9 CVTTSD2SIQ 0(CX), DX -f20f2d11|223344556677885f5f5f5f5f 32 intel cvtsd2si edx, qword ptr [ecx] -f20f2d11|223344556677885f5f5f5f5f 32 plan9 CVTSD2SIQ 0(CX), DX -f20f2d11|223344556677885f5f5f5f5f 64 gnu cvtsd2si (%rcx),%edx -f20f2d11|223344556677885f5f5f5f5f 64 intel cvtsd2si edx, qword ptr [rcx] -f20f2d11|223344556677885f5f5f5f5f 64 plan9 CVTSD2SIQ 0(CX), DX -f20f38f011|223344556677885f5f5f5f 32 intel crc32 edx, byte ptr [ecx] -f20f38f011|223344556677885f5f5f5f 32 plan9 CRC32 0(CX), DX -f20f38f011|223344556677885f5f5f5f 64 gnu crc32b (%rcx),%edx -f20f38f011|223344556677885f5f5f5f 64 intel crc32 edx, byte ptr [rcx] -f20f38f011|223344556677885f5f5f5f 64 plan9 CRC32 0(CX), DX -f20f38f111|223344556677885f5f5f5f 32 intel crc32 edx, dword ptr [ecx] -f20f38f111|223344556677885f5f5f5f 32 plan9 CRC32 0(CX), DX -f20f38f111|223344556677885f5f5f5f 64 gnu crc32l (%rcx),%edx -f20f38f111|223344556677885f5f5f5f 64 intel crc32 edx, dword ptr [rcx] -f20f38f111|223344556677885f5f5f5f 64 plan9 CRC32 0(CX), DX -f20f5111|223344556677885f5f5f5f5f 32 intel sqrtsd xmm2, qword ptr [ecx] -f20f5111|223344556677885f5f5f5f5f 32 plan9 SQRTSD 0(CX), X2 -f20f5111|223344556677885f5f5f5f5f 64 gnu sqrtsd (%rcx),%xmm2 -f20f5111|223344556677885f5f5f5f5f 64 intel sqrtsd xmm2, qword ptr [rcx] -f20f5111|223344556677885f5f5f5f5f 64 plan9 SQRTSD 0(CX), X2 -f20f5811|223344556677885f5f5f5f5f 32 intel addsd xmm2, qword ptr [ecx] -f20f5811|223344556677885f5f5f5f5f 32 plan9 ADDSD 0(CX), X2 -f20f5811|223344556677885f5f5f5f5f 64 gnu addsd (%rcx),%xmm2 -f20f5811|223344556677885f5f5f5f5f 64 intel addsd xmm2, qword ptr [rcx] -f20f5811|223344556677885f5f5f5f5f 64 plan9 ADDSD 0(CX), X2 -f20f5911|223344556677885f5f5f5f5f 32 intel mulsd xmm2, qword ptr [ecx] -f20f5911|223344556677885f5f5f5f5f 32 plan9 MULSD 0(CX), X2 -f20f5911|223344556677885f5f5f5f5f 64 gnu mulsd (%rcx),%xmm2 -f20f5911|223344556677885f5f5f5f5f 64 intel mulsd xmm2, qword ptr [rcx] -f20f5911|223344556677885f5f5f5f5f 64 plan9 MULSD 0(CX), X2 -f20f5a11|223344556677885f5f5f5f5f 32 intel cvtsd2ss xmm2, qword ptr [ecx] -f20f5a11|223344556677885f5f5f5f5f 32 plan9 CVTSD2SS 0(CX), X2 -f20f5a11|223344556677885f5f5f5f5f 64 gnu cvtsd2ss (%rcx),%xmm2 -f20f5a11|223344556677885f5f5f5f5f 64 intel cvtsd2ss xmm2, qword ptr [rcx] -f20f5a11|223344556677885f5f5f5f5f 64 plan9 CVTSD2SS 0(CX), X2 -f20f5c11|223344556677885f5f5f5f5f 32 intel subsd xmm2, qword ptr [ecx] -f20f5c11|223344556677885f5f5f5f5f 32 plan9 SUBSD 0(CX), X2 -f20f5c11|223344556677885f5f5f5f5f 64 gnu subsd (%rcx),%xmm2 -f20f5c11|223344556677885f5f5f5f5f 64 intel subsd xmm2, qword ptr [rcx] -f20f5c11|223344556677885f5f5f5f5f 64 plan9 SUBSD 0(CX), X2 -f20f5d11|223344556677885f5f5f5f5f 32 intel minsd xmm2, qword ptr [ecx] -f20f5d11|223344556677885f5f5f5f5f 32 plan9 MINSD 0(CX), X2 -f20f5d11|223344556677885f5f5f5f5f 64 gnu minsd (%rcx),%xmm2 -f20f5d11|223344556677885f5f5f5f5f 64 intel minsd xmm2, qword ptr [rcx] -f20f5d11|223344556677885f5f5f5f5f 64 plan9 MINSD 0(CX), X2 -f20f5e11|223344556677885f5f5f5f5f 32 intel divsd xmm2, qword ptr [ecx] -f20f5e11|223344556677885f5f5f5f5f 32 plan9 DIVSD 0(CX), X2 -f20f5e11|223344556677885f5f5f5f5f 64 gnu divsd (%rcx),%xmm2 -f20f5e11|223344556677885f5f5f5f5f 64 intel divsd xmm2, qword ptr [rcx] -f20f5e11|223344556677885f5f5f5f5f 64 plan9 DIVSD 0(CX), X2 -f20f5f11|223344556677885f5f5f5f5f 32 intel maxsd xmm2, qword ptr [ecx] -f20f5f11|223344556677885f5f5f5f5f 32 plan9 MAXSD 0(CX), X2 -f20f5f11|223344556677885f5f5f5f5f 64 gnu maxsd (%rcx),%xmm2 -f20f5f11|223344556677885f5f5f5f5f 64 intel maxsd xmm2, qword ptr [rcx] -f20f5f11|223344556677885f5f5f5f5f 64 plan9 MAXSD 0(CX), X2 -f20f701122|3344556677885f5f5f5f5f 32 intel pshuflw xmm2, xmmword ptr [ecx], 0x22 -f20f701122|3344556677885f5f5f5f5f 32 plan9 PSHUFLW $0x22, 0(CX), X2 -f20f701122|3344556677885f5f5f5f5f 64 gnu pshuflw $0x22,(%rcx),%xmm2 -f20f701122|3344556677885f5f5f5f5f 64 intel pshuflw xmm2, xmmword ptr [rcx], 0x22 -f20f701122|3344556677885f5f5f5f5f 64 plan9 PSHUFLW $0x22, 0(CX), X2 -f20f7c11|223344556677885f5f5f5f5f 32 intel haddps xmm2, xmmword ptr [ecx] -f20f7c11|223344556677885f5f5f5f5f 32 plan9 HADDPS 0(CX), X2 -f20f7c11|223344556677885f5f5f5f5f 64 gnu haddps (%rcx),%xmm2 -f20f7c11|223344556677885f5f5f5f5f 64 intel haddps xmm2, xmmword ptr [rcx] -f20f7c11|223344556677885f5f5f5f5f 64 plan9 HADDPS 0(CX), X2 -f20f7d11|223344556677885f5f5f5f5f 32 intel hsubps xmm2, xmmword ptr [ecx] -f20f7d11|223344556677885f5f5f5f5f 32 plan9 HSUBPS 0(CX), X2 -f20f7d11|223344556677885f5f5f5f5f 64 gnu hsubps (%rcx),%xmm2 -f20f7d11|223344556677885f5f5f5f5f 64 intel hsubps xmm2, xmmword ptr [rcx] -f20f7d11|223344556677885f5f5f5f5f 64 plan9 HSUBPS 0(CX), X2 -f20fc21122|3344556677885f5f5f5f5f 32 intel cmpsd_xmm xmm2, qword ptr [ecx], 0x22 -f20fc21122|3344556677885f5f5f5f5f 32 plan9 CMPSD_XMM $0x22, 0(CX), X2 -f20fc21122|3344556677885f5f5f5f5f 64 gnu cmpsd $0x22,(%rcx),%xmm2 -f20fc21122|3344556677885f5f5f5f5f 64 intel cmpsd_xmm xmm2, qword ptr [rcx], 0x22 -f20fc21122|3344556677885f5f5f5f5f 64 plan9 CMPSD_XMM $0x22, 0(CX), X2 -f20fd011|223344556677885f5f5f5f5f 32 intel addsubps xmm2, xmmword ptr [ecx] -f20fd011|223344556677885f5f5f5f5f 32 plan9 ADDSUBPS 0(CX), X2 -f20fd011|223344556677885f5f5f5f5f 64 gnu addsubps (%rcx),%xmm2 -f20fd011|223344556677885f5f5f5f5f 64 intel addsubps xmm2, xmmword ptr [rcx] -f20fd011|223344556677885f5f5f5f5f 64 plan9 ADDSUBPS 0(CX), X2 -f20fd6c0|11223344556677885f5f5f5f 32 intel movdq2q mmx0, xmm0 -f20fd6c0|11223344556677885f5f5f5f 32 plan9 MOVDQ2Q X0, M0 -f20fd6c0|11223344556677885f5f5f5f 64 gnu movdq2q %xmm0,%mm0 -f20fd6c0|11223344556677885f5f5f5f 64 intel movdq2q mmx0, xmm0 -f20fd6c0|11223344556677885f5f5f5f 64 plan9 MOVDQ2Q X0, M0 -f20fe611|223344556677885f5f5f5f5f 32 intel cvtpd2dq xmm2, xmmword ptr [ecx] -f20fe611|223344556677885f5f5f5f5f 32 plan9 CVTPD2DQ 0(CX), X2 -f20fe611|223344556677885f5f5f5f5f 64 gnu cvtpd2dq (%rcx),%xmm2 -f20fe611|223344556677885f5f5f5f5f 64 intel cvtpd2dq xmm2, xmmword ptr [rcx] -f20fe611|223344556677885f5f5f5f5f 64 plan9 CVTPD2DQ 0(CX), X2 -f20ff011|223344556677885f5f5f5f5f 32 intel lddqu xmm2, xmmword ptr [ecx] -f20ff011|223344556677885f5f5f5f5f 32 plan9 LDDQU 0(CX), X2 -f20ff011|223344556677885f5f5f5f5f 64 gnu lddqu (%rcx),%xmm2 -f20ff011|223344556677885f5f5f5f5f 64 intel lddqu xmm2, xmmword ptr [rcx] -f20ff011|223344556677885f5f5f5f5f 64 plan9 LDDQU 0(CX), X2 -f2480f2a11|223344556677885f5f5f5f 64 gnu cvtsi2sdq (%rcx),%xmm2 -f2480f2a11|223344556677885f5f5f5f 64 intel cvtsi2sd xmm2, qword ptr [rcx] -f2480f2a11|223344556677885f5f5f5f 64 plan9 CVTSI2SDQ 0(CX), X2 -f2480f2c11|223344556677885f5f5f5f 64 gnu cvttsd2si (%rcx),%rdx -f2480f2c11|223344556677885f5f5f5f 64 intel cvttsd2si rdx, qword ptr [rcx] -f2480f2c11|223344556677885f5f5f5f 64 plan9 CVTTSD2SIQ 0(CX), DX -f2480f2d11|223344556677885f5f5f5f 64 gnu cvtsd2si (%rcx),%rdx -f2480f2d11|223344556677885f5f5f5f 64 intel cvtsd2si rdx, qword ptr [rcx] -f2480f2d11|223344556677885f5f5f5f 64 plan9 CVTSD2SIQ 0(CX), DX -f2480f38f011|223344556677885f5f5f 64 gnu crc32b (%rcx),%rdx -f2480f38f011|223344556677885f5f5f 64 intel crc32 rdx, byte ptr [rcx] -f2480f38f011|223344556677885f5f5f 64 plan9 CRC32 0(CX), DX -f2480f38f111|223344556677885f5f5f 64 gnu crc32q (%rcx),%rdx -f2480f38f111|223344556677885f5f5f 64 intel crc32 rdx, qword ptr [rcx] -f2480f38f111|223344556677885f5f5f 64 plan9 CRC32 0(CX), DX -f267f0663e360f38f111|223344556677 32 intel lock crc32 edx, word ptr ss:[bx+di*1] -f267f0663e360f38f111|223344556677 32 plan9 DS CRC32 SS:0(BX)(DI*1), DX -f267f0663e360f38f111|223344556677 64 gnu lock crc32w %ds:%ss:(%ecx),%edx -f267f0663e360f38f111|223344556677 64 intel lock crc32 edx, word ptr [ecx] -f267f0663e360f38f111|223344556677 64 plan9 SS CRC32 0(CX), DX -f2f30f2b11|5f5f5f5f5f5f5f5f5f5f5f 32 intel movntss dword ptr [ecx], xmm2 -f2f30f2b11|5f5f5f5f5f5f5f5f5f5f5f 32 plan9 REPNE; MOVNTSS X2, 0(CX) -f2f30f2b11|5f5f5f5f5f5f5f5f5f5f5f 64 gnu repn movntss %xmm2,(%rcx) -f2f30f2b11|5f5f5f5f5f5f5f5f5f5f5f 64 intel movntss dword ptr [rcx], xmm2 -f2f30f2b11|5f5f5f5f5f5f5f5f5f5f5f 64 plan9 REPNE; MOVNTSS X2, 0(CX) -f30f1011|223344556677885f5f5f5f5f 32 intel movss xmm2, dword ptr [ecx] -f30f1011|223344556677885f5f5f5f5f 32 plan9 MOVSS 0(CX), X2 -f30f1011|223344556677885f5f5f5f5f 64 gnu movss (%rcx),%xmm2 -f30f1011|223344556677885f5f5f5f5f 64 intel movss xmm2, dword ptr [rcx] -f30f1011|223344556677885f5f5f5f5f 64 plan9 MOVSS 0(CX), X2 -f30f1122|3344556677885f5f5f5f5f5f 32 intel movss dword ptr [edx], xmm4 -f30f1122|3344556677885f5f5f5f5f5f 32 plan9 MOVSS X4, 0(DX) -f30f1122|3344556677885f5f5f5f5f5f 64 gnu movss %xmm4,(%rdx) -f30f1122|3344556677885f5f5f5f5f5f 64 intel movss dword ptr [rdx], xmm4 -f30f1122|3344556677885f5f5f5f5f5f 64 plan9 MOVSS X4, 0(DX) -f30f1211|223344556677885f5f5f5f5f 32 intel movsldup xmm2, xmmword ptr [ecx] -f30f1211|223344556677885f5f5f5f5f 32 plan9 MOVSLDUP 0(CX), X2 -f30f1211|223344556677885f5f5f5f5f 64 gnu movsldup (%rcx),%xmm2 -f30f1211|223344556677885f5f5f5f5f 64 intel movsldup xmm2, xmmword ptr [rcx] -f30f1211|223344556677885f5f5f5f5f 64 plan9 MOVSLDUP 0(CX), X2 -f30f1611|223344556677885f5f5f5f5f 32 intel movshdup xmm2, xmmword ptr [ecx] -f30f1611|223344556677885f5f5f5f5f 32 plan9 MOVSHDUP 0(CX), X2 -f30f1611|223344556677885f5f5f5f5f 64 gnu movshdup (%rcx),%xmm2 -f30f1611|223344556677885f5f5f5f5f 64 intel movshdup xmm2, xmmword ptr [rcx] -f30f1611|223344556677885f5f5f5f5f 64 plan9 MOVSHDUP 0(CX), X2 -f30f2a11|223344556677885f5f5f5f5f 32 intel cvtsi2ss xmm2, dword ptr [ecx] -f30f2a11|223344556677885f5f5f5f5f 32 plan9 CVTSI2SSL 0(CX), X2 -f30f2a11|223344556677885f5f5f5f5f 64 gnu cvtsi2ssl (%rcx),%xmm2 -f30f2a11|223344556677885f5f5f5f5f 64 intel cvtsi2ss xmm2, dword ptr [rcx] -f30f2a11|223344556677885f5f5f5f5f 64 plan9 CVTSI2SSL 0(CX), X2 -f30f2c11|223344556677885f5f5f5f5f 32 intel cvttss2si edx, dword ptr [ecx] -f30f2c11|223344556677885f5f5f5f5f 32 plan9 CVTTSS2SIL 0(CX), DX -f30f2c11|223344556677885f5f5f5f5f 64 gnu cvttss2si (%rcx),%edx -f30f2c11|223344556677885f5f5f5f5f 64 intel cvttss2si edx, dword ptr [rcx] -f30f2c11|223344556677885f5f5f5f5f 64 plan9 CVTTSS2SIL 0(CX), DX -f30f2d11|223344556677885f5f5f5f5f 32 intel cvtss2si edx, dword ptr [ecx] -f30f2d11|223344556677885f5f5f5f5f 32 plan9 CVTSS2SIL 0(CX), DX -f30f2d11|223344556677885f5f5f5f5f 64 gnu cvtss2si (%rcx),%edx -f30f2d11|223344556677885f5f5f5f5f 64 intel cvtss2si edx, dword ptr [rcx] -f30f2d11|223344556677885f5f5f5f5f 64 plan9 CVTSS2SIL 0(CX), DX -f30f5111|223344556677885f5f5f5f5f 32 intel sqrtss xmm2, dword ptr [ecx] -f30f5111|223344556677885f5f5f5f5f 32 plan9 SQRTSS 0(CX), X2 -f30f5111|223344556677885f5f5f5f5f 64 gnu sqrtss (%rcx),%xmm2 -f30f5111|223344556677885f5f5f5f5f 64 intel sqrtss xmm2, dword ptr [rcx] -f30f5111|223344556677885f5f5f5f5f 64 plan9 SQRTSS 0(CX), X2 -f30f5211|223344556677885f5f5f5f5f 32 intel rsqrtss xmm2, dword ptr [ecx] -f30f5211|223344556677885f5f5f5f5f 32 plan9 RSQRTSS 0(CX), X2 -f30f5211|223344556677885f5f5f5f5f 64 gnu rsqrtss (%rcx),%xmm2 -f30f5211|223344556677885f5f5f5f5f 64 intel rsqrtss xmm2, dword ptr [rcx] -f30f5211|223344556677885f5f5f5f5f 64 plan9 RSQRTSS 0(CX), X2 -f30f5311|223344556677885f5f5f5f5f 32 intel rcpss xmm2, dword ptr [ecx] -f30f5311|223344556677885f5f5f5f5f 32 plan9 RCPSS 0(CX), X2 -f30f5311|223344556677885f5f5f5f5f 64 gnu rcpss (%rcx),%xmm2 -f30f5311|223344556677885f5f5f5f5f 64 intel rcpss xmm2, dword ptr [rcx] -f30f5311|223344556677885f5f5f5f5f 64 plan9 RCPSS 0(CX), X2 -f30f5811|223344556677885f5f5f5f5f 32 intel addss xmm2, dword ptr [ecx] -f30f5811|223344556677885f5f5f5f5f 32 plan9 ADDSS 0(CX), X2 -f30f5811|223344556677885f5f5f5f5f 64 gnu addss (%rcx),%xmm2 -f30f5811|223344556677885f5f5f5f5f 64 intel addss xmm2, dword ptr [rcx] -f30f5811|223344556677885f5f5f5f5f 64 plan9 ADDSS 0(CX), X2 -f30f5911|223344556677885f5f5f5f5f 32 intel mulss xmm2, dword ptr [ecx] -f30f5911|223344556677885f5f5f5f5f 32 plan9 MULSS 0(CX), X2 -f30f5911|223344556677885f5f5f5f5f 64 gnu mulss (%rcx),%xmm2 -f30f5911|223344556677885f5f5f5f5f 64 intel mulss xmm2, dword ptr [rcx] -f30f5911|223344556677885f5f5f5f5f 64 plan9 MULSS 0(CX), X2 -f30f5a11|223344556677885f5f5f5f5f 32 intel cvtss2sd xmm2, dword ptr [ecx] -f30f5a11|223344556677885f5f5f5f5f 32 plan9 CVTSS2SD 0(CX), X2 -f30f5a11|223344556677885f5f5f5f5f 64 gnu cvtss2sd (%rcx),%xmm2 -f30f5a11|223344556677885f5f5f5f5f 64 intel cvtss2sd xmm2, dword ptr [rcx] -f30f5a11|223344556677885f5f5f5f5f 64 plan9 CVTSS2SD 0(CX), X2 -f30f5b11|223344556677885f5f5f5f5f 32 intel cvttps2dq xmm2, xmmword ptr [ecx] -f30f5b11|223344556677885f5f5f5f5f 32 plan9 CVTTPS2DQ 0(CX), X2 -f30f5b11|223344556677885f5f5f5f5f 64 gnu cvttps2dq (%rcx),%xmm2 -f30f5b11|223344556677885f5f5f5f5f 64 intel cvttps2dq xmm2, xmmword ptr [rcx] -f30f5b11|223344556677885f5f5f5f5f 64 plan9 CVTTPS2DQ 0(CX), X2 -f30f5c11|223344556677885f5f5f5f5f 32 intel subss xmm2, dword ptr [ecx] -f30f5c11|223344556677885f5f5f5f5f 32 plan9 SUBSS 0(CX), X2 -f30f5c11|223344556677885f5f5f5f5f 64 gnu subss (%rcx),%xmm2 -f30f5c11|223344556677885f5f5f5f5f 64 intel subss xmm2, dword ptr [rcx] -f30f5c11|223344556677885f5f5f5f5f 64 plan9 SUBSS 0(CX), X2 -f30f5d11|223344556677885f5f5f5f5f 32 intel minss xmm2, dword ptr [ecx] -f30f5d11|223344556677885f5f5f5f5f 32 plan9 MINSS 0(CX), X2 -f30f5d11|223344556677885f5f5f5f5f 64 gnu minss (%rcx),%xmm2 -f30f5d11|223344556677885f5f5f5f5f 64 intel minss xmm2, dword ptr [rcx] -f30f5d11|223344556677885f5f5f5f5f 64 plan9 MINSS 0(CX), X2 -f30f5e11|223344556677885f5f5f5f5f 32 intel divss xmm2, dword ptr [ecx] -f30f5e11|223344556677885f5f5f5f5f 32 plan9 DIVSS 0(CX), X2 -f30f5e11|223344556677885f5f5f5f5f 64 gnu divss (%rcx),%xmm2 -f30f5e11|223344556677885f5f5f5f5f 64 intel divss xmm2, dword ptr [rcx] -f30f5e11|223344556677885f5f5f5f5f 64 plan9 DIVSS 0(CX), X2 -f30f5f11|223344556677885f5f5f5f5f 32 intel maxss xmm2, dword ptr [ecx] -f30f5f11|223344556677885f5f5f5f5f 32 plan9 MAXSS 0(CX), X2 -f30f5f11|223344556677885f5f5f5f5f 64 gnu maxss (%rcx),%xmm2 -f30f5f11|223344556677885f5f5f5f5f 64 intel maxss xmm2, dword ptr [rcx] -f30f5f11|223344556677885f5f5f5f5f 64 plan9 MAXSS 0(CX), X2 -f30f6f11|223344556677885f5f5f5f5f 32 intel movdqu xmm2, xmmword ptr [ecx] -f30f6f11|223344556677885f5f5f5f5f 32 plan9 MOVDQU 0(CX), X2 -f30f6f11|223344556677885f5f5f5f5f 64 gnu movdqu (%rcx),%xmm2 -f30f6f11|223344556677885f5f5f5f5f 64 intel movdqu xmm2, xmmword ptr [rcx] -f30f6f11|223344556677885f5f5f5f5f 64 plan9 MOVDQU 0(CX), X2 -f30f701122|3344556677885f5f5f5f5f 32 intel pshufhw xmm2, xmmword ptr [ecx], 0x22 -f30f701122|3344556677885f5f5f5f5f 32 plan9 PSHUFHW $0x22, 0(CX), X2 -f30f701122|3344556677885f5f5f5f5f 64 gnu pshufhw $0x22,(%rcx),%xmm2 -f30f701122|3344556677885f5f5f5f5f 64 intel pshufhw xmm2, xmmword ptr [rcx], 0x22 -f30f701122|3344556677885f5f5f5f5f 64 plan9 PSHUFHW $0x22, 0(CX), X2 -f30f7e11|223344556677885f5f5f5f5f 32 intel movq xmm2, qword ptr [ecx] -f30f7e11|223344556677885f5f5f5f5f 32 plan9 MOVQ 0(CX), X2 -f30f7e11|223344556677885f5f5f5f5f 64 gnu movq (%rcx),%xmm2 -f30f7e11|223344556677885f5f5f5f5f 64 intel movq xmm2, qword ptr [rcx] -f30f7e11|223344556677885f5f5f5f5f 64 plan9 MOVQ 0(CX), X2 -f30f7f11|223344556677885f5f5f5f5f 32 intel movdqu xmmword ptr [ecx], xmm2 -f30f7f11|223344556677885f5f5f5f5f 32 plan9 MOVDQU X2, 0(CX) -f30f7f11|223344556677885f5f5f5f5f 64 gnu movdqu %xmm2,(%rcx) -f30f7f11|223344556677885f5f5f5f5f 64 intel movdqu xmmword ptr [rcx], xmm2 -f30f7f11|223344556677885f5f5f5f5f 64 plan9 MOVDQU X2, 0(CX) -f30fae11|223344556677885f5f5f5f5f 64 gnu wrfsbasel (%rcx) -f30fae11|223344556677885f5f5f5f5f 64 intel wrfsbase dword ptr [rcx] -f30fae11|223344556677885f5f5f5f5f 64 plan9 WRFSBASE 0(CX) -f30fae18|11223344556677885f5f5f5f 64 gnu wrgsbasel (%rax) -f30fae18|11223344556677885f5f5f5f 64 intel wrgsbase dword ptr [rax] -f30fae18|11223344556677885f5f5f5f 64 plan9 WRGSBASE 0(AX) -f30faec0|11223344556677885f5f5f5f 64 gnu rdfsbase %eax -f30faec0|11223344556677885f5f5f5f 64 intel rdfsbase eax -f30faec0|11223344556677885f5f5f5f 64 plan9 RDFSBASE AX -f30faec8|11223344556677885f5f5f5f 64 gnu rdgsbase %eax -f30faec8|11223344556677885f5f5f5f 64 intel rdgsbase eax -f30faec8|11223344556677885f5f5f5f 64 plan9 RDGSBASE AX -f30fb811|223344556677885f5f5f5f5f 32 intel popcnt edx, dword ptr [ecx] -f30fb811|223344556677885f5f5f5f5f 32 plan9 POPCNT 0(CX), DX -f30fb811|223344556677885f5f5f5f5f 64 gnu popcnt (%rcx),%edx -f30fb811|223344556677885f5f5f5f5f 64 intel popcnt edx, dword ptr [rcx] -f30fb811|223344556677885f5f5f5f5f 64 plan9 POPCNT 0(CX), DX -f30fbc11|223344556677885f5f5f5f5f 32 intel tzcnt edx, dword ptr [ecx] -f30fbc11|223344556677885f5f5f5f5f 32 plan9 TZCNT 0(CX), DX -f30fbc11|223344556677885f5f5f5f5f 64 gnu tzcnt (%rcx),%edx -f30fbc11|223344556677885f5f5f5f5f 64 intel tzcnt edx, dword ptr [rcx] -f30fbc11|223344556677885f5f5f5f5f 64 plan9 TZCNT 0(CX), DX -f30fbd11|223344556677885f5f5f5f5f 32 intel lzcnt edx, dword ptr [ecx] -f30fbd11|223344556677885f5f5f5f5f 32 plan9 LZCNT 0(CX), DX -f30fbd11|223344556677885f5f5f5f5f 64 gnu lzcnt (%rcx),%edx -f30fbd11|223344556677885f5f5f5f5f 64 intel lzcnt edx, dword ptr [rcx] -f30fbd11|223344556677885f5f5f5f5f 64 plan9 LZCNT 0(CX), DX -f30fc21122|3344556677885f5f5f5f5f 32 intel cmpss xmm2, dword ptr [ecx], 0x22 -f30fc21122|3344556677885f5f5f5f5f 32 plan9 CMPSS $0x22, 0(CX), X2 -f30fc21122|3344556677885f5f5f5f5f 64 gnu cmpss $0x22,(%rcx),%xmm2 -f30fc21122|3344556677885f5f5f5f5f 64 intel cmpss xmm2, dword ptr [rcx], 0x22 -f30fc21122|3344556677885f5f5f5f5f 64 plan9 CMPSS $0x22, 0(CX), X2 -f30fe611|223344556677885f5f5f5f5f 32 intel cvtdq2pd xmm2, qword ptr [ecx] -f30fe611|223344556677885f5f5f5f5f 32 plan9 CVTDQ2PD 0(CX), X2 -f30fe611|223344556677885f5f5f5f5f 64 gnu cvtdq2pd (%rcx),%xmm2 -f30fe611|223344556677885f5f5f5f5f 64 intel cvtdq2pd xmm2, qword ptr [rcx] -f30fe611|223344556677885f5f5f5f5f 64 plan9 CVTDQ2PD 0(CX), X2 -f3480f2a11|223344556677885f5f5f5f 64 gnu cvtsi2ssq (%rcx),%xmm2 -f3480f2a11|223344556677885f5f5f5f 64 intel cvtsi2ss xmm2, qword ptr [rcx] -f3480f2a11|223344556677885f5f5f5f 64 plan9 CVTSI2SSQ 0(CX), X2 -f3480f2c11|223344556677885f5f5f5f 64 gnu cvttss2si (%rcx),%rdx -f3480f2c11|223344556677885f5f5f5f 64 intel cvttss2si rdx, dword ptr [rcx] -f3480f2c11|223344556677885f5f5f5f 64 plan9 CVTTSS2SIL 0(CX), DX -f3480f2d11|223344556677885f5f5f5f 64 gnu cvtss2si (%rcx),%rdx -f3480f2d11|223344556677885f5f5f5f 64 intel cvtss2si rdx, dword ptr [rcx] -f3480f2d11|223344556677885f5f5f5f 64 plan9 CVTSS2SIL 0(CX), DX -f3480fae11|223344556677885f5f5f5f 64 gnu wrfsbaseq (%rcx) -f3480fae11|223344556677885f5f5f5f 64 intel wrfsbase qword ptr [rcx] -f3480fae11|223344556677885f5f5f5f 64 plan9 WRFSBASE 0(CX) -f3480fae18|11223344556677885f5f5f 64 gnu wrgsbaseq (%rax) -f3480fae18|11223344556677885f5f5f 64 intel wrgsbase qword ptr [rax] -f3480fae18|11223344556677885f5f5f 64 plan9 WRGSBASE 0(AX) -f3480faec0|11223344556677885f5f5f 64 gnu rdfsbase %rax -f3480faec0|11223344556677885f5f5f 64 intel rdfsbase rax -f3480faec0|11223344556677885f5f5f 64 plan9 RDFSBASE AX -f3480faec8|11223344556677885f5f5f 64 gnu rdgsbase %rax -f3480faec8|11223344556677885f5f5f 64 intel rdgsbase rax -f3480faec8|11223344556677885f5f5f 64 plan9 RDGSBASE AX -f3480fb811|223344556677885f5f5f5f 64 gnu popcnt (%rcx),%rdx -f3480fb811|223344556677885f5f5f5f 64 intel popcnt rdx, qword ptr [rcx] -f3480fb811|223344556677885f5f5f5f 64 plan9 POPCNT 0(CX), DX -f3480fbc11|223344556677885f5f5f5f 64 gnu tzcnt (%rcx),%rdx -f3480fbc11|223344556677885f5f5f5f 64 intel tzcnt rdx, qword ptr [rcx] -f3480fbc11|223344556677885f5f5f5f 64 plan9 TZCNT 0(CX), DX -f3480fbd11|223344556677885f5f5f5f 64 gnu lzcnt (%rcx),%rdx -f3480fbd11|223344556677885f5f5f5f 64 intel lzcnt rdx, qword ptr [rcx] -f3480fbd11|223344556677885f5f5f5f 64 plan9 LZCNT 0(CX), DX -f3660fb811|223344556677885f5f5f5f 32 intel popcnt dx, word ptr [ecx] -f3660fb811|223344556677885f5f5f5f 32 plan9 POPCNT 0(CX), DX -f3660fb811|223344556677885f5f5f5f 64 gnu popcnt (%rcx),%dx -f3660fb811|223344556677885f5f5f5f 64 intel popcnt dx, word ptr [rcx] -f3660fb811|223344556677885f5f5f5f 64 plan9 POPCNT 0(CX), DX -f3660fbc11|223344556677885f5f5f5f 32 intel tzcnt dx, word ptr [ecx] -f3660fbc11|223344556677885f5f5f5f 32 plan9 TZCNT 0(CX), DX -f3660fbc11|223344556677885f5f5f5f 64 gnu tzcnt (%rcx),%dx -f3660fbc11|223344556677885f5f5f5f 64 intel tzcnt dx, word ptr [rcx] -f3660fbc11|223344556677885f5f5f5f 64 plan9 TZCNT 0(CX), DX -f3660fbd11|223344556677885f5f5f5f 32 intel lzcnt dx, word ptr [ecx] -f3660fbd11|223344556677885f5f5f5f 32 plan9 LZCNT 0(CX), DX -f3660fbd11|223344556677885f5f5f5f 64 gnu lzcnt (%rcx),%dx -f3660fbd11|223344556677885f5f5f5f 64 intel lzcnt dx, word ptr [rcx] -f3660fbd11|223344556677885f5f5f5f 64 plan9 LZCNT 0(CX), DX -f3f0673e660f38f111|22334455667788 32 intel lock movbe word ptr [bx+di*1], dx -f3f0673e660f38f111|22334455667788 32 plan9 REP; MOVBE DX, DS:0(BX)(DI*1) -f3f0673e660f38f111|22334455667788 64 gnu rep lock movbe %dx,%ds:(%ecx) -f3f0673e660f38f111|22334455667788 64 intel lock movbe word ptr [ecx], dx -f3f0673e660f38f111|22334455667788 64 plan9 REP; MOVBE DX, 0(CX) -f3f20f2b11|5f5f5f5f5f5f5f5f5f5f5f 32 intel movntsd qword ptr [ecx], xmm2 -f3f20f2b11|5f5f5f5f5f5f5f5f5f5f5f 32 plan9 REP; MOVNTSD X2, 0(CX) -f3f20f2b11|5f5f5f5f5f5f5f5f5f5f5f 64 gnu repn movntss %xmm2,(%rcx) -f3f20f2b11|5f5f5f5f5f5f5f5f5f5f5f 64 intel movntsd qword ptr [rcx], xmm2 -f3f20f2b11|5f5f5f5f5f5f5f5f5f5f5f 64 plan9 REP; MOVNTSD X2, 0(CX) -f4|11223344556677885f5f5f5f5f5f5f 32 intel hlt -f4|11223344556677885f5f5f5f5f5f5f 32 plan9 HLT -f4|11223344556677885f5f5f5f5f5f5f 64 gnu hlt -f4|11223344556677885f5f5f5f5f5f5f 64 intel hlt -f4|11223344556677885f5f5f5f5f5f5f 64 plan9 HLT -f5|11223344556677885f5f5f5f5f5f5f 32 intel cmc -f5|11223344556677885f5f5f5f5f5f5f 32 plan9 CMC -f5|11223344556677885f5f5f5f5f5f5f 64 gnu cmc -f5|11223344556677885f5f5f5f5f5f5f 64 intel cmc -f5|11223344556677885f5f5f5f5f5f5f 64 plan9 CMC -f60011|223344556677885f5f5f5f5f5f 32 intel test byte ptr [eax], 0x11 -f60011|223344556677885f5f5f5f5f5f 32 plan9 TESTB $0x11, 0(AX) -f60011|223344556677885f5f5f5f5f5f 64 gnu testb $0x11,(%rax) -f60011|223344556677885f5f5f5f5f5f 64 intel test byte ptr [rax], 0x11 -f60011|223344556677885f5f5f5f5f5f 64 plan9 TESTB $0x11, 0(AX) -f611|223344556677885f5f5f5f5f5f5f 32 intel not byte ptr [ecx] -f611|223344556677885f5f5f5f5f5f5f 32 plan9 NOTB 0(CX) -f611|223344556677885f5f5f5f5f5f5f 64 gnu notb (%rcx) -f611|223344556677885f5f5f5f5f5f5f 64 intel not byte ptr [rcx] -f611|223344556677885f5f5f5f5f5f5f 64 plan9 NOTB 0(CX) -f618|11223344556677885f5f5f5f5f5f 32 intel neg byte ptr [eax] -f618|11223344556677885f5f5f5f5f5f 32 plan9 NEGB 0(AX) -f618|11223344556677885f5f5f5f5f5f 64 gnu negb (%rax) -f618|11223344556677885f5f5f5f5f5f 64 intel neg byte ptr [rax] -f618|11223344556677885f5f5f5f5f5f 64 plan9 NEGB 0(AX) -f620|11223344556677885f5f5f5f5f5f 32 intel mul byte ptr [eax] -f620|11223344556677885f5f5f5f5f5f 32 plan9 MULB 0(AX) -f620|11223344556677885f5f5f5f5f5f 64 gnu mulb (%rax) -f620|11223344556677885f5f5f5f5f5f 64 intel mul byte ptr [rax] -f620|11223344556677885f5f5f5f5f5f 64 plan9 MULB 0(AX) -f628|11223344556677885f5f5f5f5f5f 32 intel imul byte ptr [eax] -f628|11223344556677885f5f5f5f5f5f 32 plan9 IMULB 0(AX) -f628|11223344556677885f5f5f5f5f5f 64 gnu imulb (%rax) -f628|11223344556677885f5f5f5f5f5f 64 intel imul byte ptr [rax] -f628|11223344556677885f5f5f5f5f5f 64 plan9 IMULB 0(AX) -f630|11223344556677885f5f5f5f5f5f 32 intel div byte ptr [eax] -f630|11223344556677885f5f5f5f5f5f 32 plan9 DIVB 0(AX) -f630|11223344556677885f5f5f5f5f5f 64 gnu divb (%rax) -f630|11223344556677885f5f5f5f5f5f 64 intel div byte ptr [rax] -f630|11223344556677885f5f5f5f5f5f 64 plan9 DIVB 0(AX) -f638|11223344556677885f5f5f5f5f5f 32 intel idiv byte ptr [eax] -f638|11223344556677885f5f5f5f5f5f 32 plan9 IDIVB 0(AX) -f638|11223344556677885f5f5f5f5f5f 64 gnu idivb (%rax) -f638|11223344556677885f5f5f5f5f5f 64 intel idiv byte ptr [rax] -f638|11223344556677885f5f5f5f5f5f 64 plan9 IDIVB 0(AX) -f70011223344|556677885f5f5f5f5f5f 32 intel test dword ptr [eax], 0x44332211 -f70011223344|556677885f5f5f5f5f5f 32 plan9 TESTL $0x44332211, 0(AX) -f70011223344|556677885f5f5f5f5f5f 64 gnu testl $0x44332211,(%rax) -f70011223344|556677885f5f5f5f5f5f 64 intel test dword ptr [rax], 0x44332211 -f70011223344|556677885f5f5f5f5f5f 64 plan9 TESTL $0x44332211, 0(AX) -f711|223344556677885f5f5f5f5f5f5f 32 intel not dword ptr [ecx] -f711|223344556677885f5f5f5f5f5f5f 32 plan9 NOTL 0(CX) -f711|223344556677885f5f5f5f5f5f5f 64 gnu notl (%rcx) -f711|223344556677885f5f5f5f5f5f5f 64 intel not dword ptr [rcx] -f711|223344556677885f5f5f5f5f5f5f 64 plan9 NOTL 0(CX) -f718|11223344556677885f5f5f5f5f5f 32 intel neg dword ptr [eax] -f718|11223344556677885f5f5f5f5f5f 32 plan9 NEGL 0(AX) -f718|11223344556677885f5f5f5f5f5f 64 gnu negl (%rax) -f718|11223344556677885f5f5f5f5f5f 64 intel neg dword ptr [rax] -f718|11223344556677885f5f5f5f5f5f 64 plan9 NEGL 0(AX) -f720|11223344556677885f5f5f5f5f5f 32 intel mul dword ptr [eax] -f720|11223344556677885f5f5f5f5f5f 32 plan9 MULL 0(AX) -f720|11223344556677885f5f5f5f5f5f 64 gnu mull (%rax) -f720|11223344556677885f5f5f5f5f5f 64 intel mul dword ptr [rax] -f720|11223344556677885f5f5f5f5f5f 64 plan9 MULL 0(AX) -f728|11223344556677885f5f5f5f5f5f 32 intel imul dword ptr [eax] -f728|11223344556677885f5f5f5f5f5f 32 plan9 IMULL 0(AX) -f728|11223344556677885f5f5f5f5f5f 64 gnu imull (%rax) -f728|11223344556677885f5f5f5f5f5f 64 intel imul dword ptr [rax] -f728|11223344556677885f5f5f5f5f5f 64 plan9 IMULL 0(AX) -f730|11223344556677885f5f5f5f5f5f 32 intel div dword ptr [eax] -f730|11223344556677885f5f5f5f5f5f 32 plan9 DIVL 0(AX) -f730|11223344556677885f5f5f5f5f5f 64 gnu divl (%rax) -f730|11223344556677885f5f5f5f5f5f 64 intel div dword ptr [rax] -f730|11223344556677885f5f5f5f5f5f 64 plan9 DIVL 0(AX) -f738|11223344556677885f5f5f5f5f5f 32 intel idiv dword ptr [eax] -f738|11223344556677885f5f5f5f5f5f 32 plan9 IDIVL 0(AX) -f738|11223344556677885f5f5f5f5f5f 64 gnu idivl (%rax) -f738|11223344556677885f5f5f5f5f5f 64 intel idiv dword ptr [rax] -f738|11223344556677885f5f5f5f5f5f 64 plan9 IDIVL 0(AX) -f8|11223344556677885f5f5f5f5f5f5f 32 intel clc -f8|11223344556677885f5f5f5f5f5f5f 32 plan9 CLC -f8|11223344556677885f5f5f5f5f5f5f 64 gnu clc -f8|11223344556677885f5f5f5f5f5f5f 64 intel clc -f8|11223344556677885f5f5f5f5f5f5f 64 plan9 CLC -f9|11223344556677885f5f5f5f5f5f5f 32 intel stc -f9|11223344556677885f5f5f5f5f5f5f 32 plan9 STC -f9|11223344556677885f5f5f5f5f5f5f 64 gnu stc -f9|11223344556677885f5f5f5f5f5f5f 64 intel stc -f9|11223344556677885f5f5f5f5f5f5f 64 plan9 STC -fa|11223344556677885f5f5f5f5f5f5f 32 intel cli -fa|11223344556677885f5f5f5f5f5f5f 32 plan9 CLI -fa|11223344556677885f5f5f5f5f5f5f 64 gnu cli -fa|11223344556677885f5f5f5f5f5f5f 64 intel cli -fa|11223344556677885f5f5f5f5f5f5f 64 plan9 CLI -fb|11223344556677885f5f5f5f5f5f5f 32 intel sti -fb|11223344556677885f5f5f5f5f5f5f 32 plan9 STI -fb|11223344556677885f5f5f5f5f5f5f 64 gnu sti -fb|11223344556677885f5f5f5f5f5f5f 64 intel sti -fb|11223344556677885f5f5f5f5f5f5f 64 plan9 STI -fc|11223344556677885f5f5f5f5f5f5f 32 intel cld -fc|11223344556677885f5f5f5f5f5f5f 32 plan9 CLD -fc|11223344556677885f5f5f5f5f5f5f 64 gnu cld -fc|11223344556677885f5f5f5f5f5f5f 64 intel cld -fc|11223344556677885f5f5f5f5f5f5f 64 plan9 CLD -fd|11223344556677885f5f5f5f5f5f5f 32 intel std -fd|11223344556677885f5f5f5f5f5f5f 32 plan9 STD -fd|11223344556677885f5f5f5f5f5f5f 64 gnu std -fd|11223344556677885f5f5f5f5f5f5f 64 intel std -fd|11223344556677885f5f5f5f5f5f5f 64 plan9 STD -fe00|11223344556677885f5f5f5f5f5f 32 intel inc byte ptr [eax] -fe00|11223344556677885f5f5f5f5f5f 32 plan9 INCB 0(AX) -fe00|11223344556677885f5f5f5f5f5f 64 gnu incb (%rax) -fe00|11223344556677885f5f5f5f5f5f 64 intel inc byte ptr [rax] -fe00|11223344556677885f5f5f5f5f5f 64 plan9 INCB 0(AX) -fe08|11223344556677885f5f5f5f5f5f 32 intel dec byte ptr [eax] -fe08|11223344556677885f5f5f5f5f5f 32 plan9 DECB 0(AX) -fe08|11223344556677885f5f5f5f5f5f 64 gnu decb (%rax) -fe08|11223344556677885f5f5f5f5f5f 64 intel dec byte ptr [rax] -fe08|11223344556677885f5f5f5f5f5f 64 plan9 DECB 0(AX) -ff00|11223344556677885f5f5f5f5f5f 32 intel inc dword ptr [eax] -ff00|11223344556677885f5f5f5f5f5f 32 plan9 INCL 0(AX) -ff00|11223344556677885f5f5f5f5f5f 64 gnu incl (%rax) -ff00|11223344556677885f5f5f5f5f5f 64 intel inc dword ptr [rax] -ff00|11223344556677885f5f5f5f5f5f 64 plan9 INCL 0(AX) -ff08|11223344556677885f5f5f5f5f5f 32 intel dec dword ptr [eax] -ff08|11223344556677885f5f5f5f5f5f 32 plan9 DECL 0(AX) -ff08|11223344556677885f5f5f5f5f5f 64 gnu decl (%rax) -ff08|11223344556677885f5f5f5f5f5f 64 intel dec dword ptr [rax] -ff08|11223344556677885f5f5f5f5f5f 64 plan9 DECL 0(AX) -ff11|223344556677885f5f5f5f5f5f5f 32 intel call dword ptr [ecx] -ff11|223344556677885f5f5f5f5f5f5f 32 plan9 CALL 0(CX) -ff18|11223344556677885f5f5f5f5f5f 32 intel call far ptr [eax] -ff18|11223344556677885f5f5f5f5f5f 32 plan9 LCALL 0(AX) -ff18|11223344556677885f5f5f5f5f5f 64 gnu lcallq *(%rax) -ff18|11223344556677885f5f5f5f5f5f 64 intel call far ptr [rax] -ff18|11223344556677885f5f5f5f5f5f 64 plan9 LCALL 0(AX) -ff20|11223344556677885f5f5f5f5f5f 32 intel jmp dword ptr [eax] -ff20|11223344556677885f5f5f5f5f5f 32 plan9 JMP 0(AX) -ff28|11223344556677885f5f5f5f5f5f 32 intel jmp far ptr [eax] -ff28|11223344556677885f5f5f5f5f5f 32 plan9 LJMP 0(AX) -ff28|11223344556677885f5f5f5f5f5f 64 gnu ljmpq *(%rax) -ff28|11223344556677885f5f5f5f5f5f 64 intel jmp far ptr [rax] -ff28|11223344556677885f5f5f5f5f5f 64 plan9 LJMP 0(AX) -ff30|11223344556677885f5f5f5f5f5f 32 intel push dword ptr [eax] -ff30|11223344556677885f5f5f5f5f5f 32 plan9 PUSHL 0(AX) -ff30|11223344556677885f5f5f5f5f5f 64 gnu pushq (%rax) -ff30|11223344556677885f5f5f5f5f5f 64 intel push qword ptr [rax] -ff30|11223344556677885f5f5f5f5f5f 64 plan9 PUSHQ 0(AX) -c5fe6f06|44556677885f5f5f5f5f5f5f 32 intel vmovdqu ymm0, ymmword ptr [esi] -c5fe6f06|44556677885f5f5f5f5f5f5f 32 plan9 VMOVDQU 0(SI), X0 -c5fe6f06|44556677885f5f5f5f5f5f5f 32 gnu vmovdqu (%esi),%ymm0 -c4227d2a0c36|6677885f5f5f5f5f5f5f 64 intel vmovntdqa ymm9, ymmword ptr [rsi+r14*1] -c4227d2a0c36|6677885f5f5f5f5f5f5f 64 plan9 VMOVNTDQA 0(SI)(R14*1), X9 -c4227d2a0c36|6677885f5f5f5f5f5f5f 64 gnu vmovntdqa (%rsi,%r14,1),%ymm9 -c57d7ff7|44556677885f5f5f5f5f5f5f 64 intel vmovdqa ymm7, ymm14 -c57d7ff7|44556677885f5f5f5f5f5f5f 64 plan9 VMOVDQA X14, X7 -c57d7ff7|44556677885f5f5f5f5f5f5f 64 gnu vmovdqa %ymm14,%ymm7 -66f3ab|223344556677885f5f5f5f5f5f 64 gnu rep stos %ax,%es:(%rdi) -66f3ab|223344556677885f5f5f5f5f5f 64 intel rep stosw word ptr [rdi] -66f3ab|223344556677885f5f5f5f5f5f 64 plan9 REP; STOSW AX, ES:0(DI) -f348a5|223344556677885f5f5f5f5f5f 64 gnu rep movsq %ds:(%rsi),%es:(%rdi) -f348a5|223344556677885f5f5f5f5f5f 64 intel rep movsq qword ptr [rdi], qword ptr [rsi] -f348a5|223344556677885f5f5f5f5f5f 64 plan9 REP; MOVSQ DS:0(SI), ES:0(DI) -f348ab|223344556677885f5f5f5f5f5f 64 gnu rep stos %rax,%es:(%rdi) -f348ab|223344556677885f5f5f5f5f5f 64 intel rep stosq qword ptr [rdi] -f348ab|223344556677885f5f5f5f5f5f 64 plan9 REP; STOSQ AX, ES:0(DI) -f3a4|11223344556677885f5f5f5f5f5f 32 gnu rep movsb %ds:(%esi),%es:(%edi) -f3a4|11223344556677885f5f5f5f5f5f 32 gnu rep movsb %ds:(%esi),%es:(%edi) -f3a4|11223344556677885f5f5f5f5f5f 32 intel rep movsb byte ptr [edi], byte ptr [esi] -f3a4|11223344556677885f5f5f5f5f5f 32 plan9 REP; MOVSB DS:0(SI), ES:0(DI) -f3a4|11223344556677885f5f5f5f5f5f 64 gnu rep movsb %ds:(%rsi),%es:(%rdi) -f3a4|11223344556677885f5f5f5f5f5f 64 intel rep movsb byte ptr [rdi], byte ptr [rsi] -f3a4|11223344556677885f5f5f5f5f5f 64 plan9 REP; MOVSB DS:0(SI), ES:0(DI) -f3a5|11223344556677885f5f5f5f5f5f 32 gnu rep movsl %ds:(%esi),%es:(%edi) -f3a5|11223344556677885f5f5f5f5f5f 32 intel rep movsd dword ptr [edi], dword ptr [esi] -f3a5|11223344556677885f5f5f5f5f5f 32 plan9 REP; MOVSD DS:0(SI), ES:0(DI) -f3a5|11223344556677885f5f5f5f5f5f 64 gnu rep movsl %ds:(%rsi),%es:(%rdi) -f3a5|11223344556677885f5f5f5f5f5f 64 intel rep movsd dword ptr [rdi], dword ptr [rsi] -f3a5|11223344556677885f5f5f5f5f5f 64 plan9 REP; MOVSD DS:0(SI), ES:0(DI) -f3a6|11223344556677885f5f5f5f5f5f 64 gnu rep cmpsb %es:(%rdi),%ds:(%rsi) -f3a6|11223344556677885f5f5f5f5f5f 64 intel rep cmpsb byte ptr [rsi], byte ptr [rdi] -f3a6|11223344556677885f5f5f5f5f5f 64 plan9 REP; CMPSB ES:0(DI), DS:0(SI) -f3ab|11223344556677885f5f5f5f5f5f 32 gnu rep stos %eax,%es:(%edi) -f3ab|11223344556677885f5f5f5f5f5f 32 intel rep stosd dword ptr [edi] -f3ab|11223344556677885f5f5f5f5f5f 32 plan9 REP; STOSD AX, ES:0(DI) -f201c1|223344556677885f5f5f5f5f5f 64 plan9 REPNE; ADDL AX, CX diff --git a/src/cmd/vendor/golang.org/x/arch/x86/x86asm/testdata/libmach8db.c b/src/cmd/vendor/golang.org/x/arch/x86/x86asm/testdata/libmach8db.c deleted file mode 100644 index 90ace5241d27d7..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/x86/x86asm/testdata/libmach8db.c +++ /dev/null @@ -1,2075 +0,0 @@ -// 9c libmach8db.c && 9l -o libmach8db libmach8db.o; rm libmach8db.o - -// Libmach-based disassembler for use in reference tests. - -// Inferno libmach/8db.c -// http://code.google.com/p/inferno-os/source/browse/utils/libmach/8db.c -// -// Copyright © 1994-1999 Lucent Technologies Inc. -// Power PC support Copyright © 1995-2004 C H Forsyth (forsyth@terzarima.net). -// Portions Copyright © 1997-1999 Vita Nuova Limited. -// Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com). -// Revisions Copyright © 2000-2004 Lucent Technologies Inc. and others. -// Portions Copyright © 2009 The Go Authors. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#include -#include -#include - -typedef struct Map Map; -struct Map -{ - int (*get1)(Map*, uvlong, uchar*, int); - uchar *p; - uchar *ep; - uchar *startp; - uvlong startpc; -}; - -static int -get1(Map *m, uvlong addr, uchar *p, int n) -{ - return m->get1(m, addr, p, n); -} - -/* - * i386-specific debugger interface - * also amd64 extensions - */ - -static int i386inst(Map*, uvlong, int, char, char*, int); -//static int i386das(Map*, uvlong, char*, int); -//static int i386instlen(Map*, uvlong); - - /* I386/486 - Disassembler and related functions */ - -/* - * an instruction - */ -typedef struct Instr Instr; -struct Instr -{ - uchar mem[1+1+1+1+2+1+1+4+4]; /* raw instruction */ - uvlong addr; /* address of start of instruction */ - int n; /* number of bytes in instruction */ - char *prefix; /* instr prefix */ - char *segment; /* segment override */ - uchar jumptype; /* set to the operand type for jump/ret/call */ - uchar amd64; - uchar rex; /* REX prefix (or zero) */ - uchar op; - char osize; /* 'W' or 'L' (or 'Q' on amd64) */ - char asize; /* address size 'W' or 'L' (or 'Q' or amd64) */ - uchar mod; /* bits 6-7 of mod r/m field */ - uchar reg; /* bits 3-5 of mod r/m field */ - char ss; /* bits 6-7 of SIB */ - schar index; /* bits 3-5 of SIB */ - schar base; /* bits 0-2 of SIB */ - char rip; /* RIP-relative in amd64 mode */ - uchar opre; /* f2/f3 could introduce media */ - short seg; /* segment of far address */ - uint32 disp; /* displacement */ - uint32 imm; /* immediate */ - uint32 imm2; /* second immediate operand */ - uvlong imm64; /* big immediate */ - char *curr; /* fill level in output buffer */ - char *end; /* end of output buffer */ - char *err; /* error message */ -}; - - /* 386 register (ha!) set */ -enum{ - AX=0, - CX, - DX, - BX, - SP, - BP, - SI, - DI, - - /* amd64 */ - /* be careful: some unix system headers #define R8, R9, etc */ - AMD64_R8, - AMD64_R9, - AMD64_R10, - AMD64_R11, - AMD64_R12, - AMD64_R13, - AMD64_R14, - AMD64_R15 -}; - - /* amd64 rex extension byte */ -enum{ - REXW = 1<<3, /* =1, 64-bit operand size */ - REXR = 1<<2, /* extend modrm reg */ - REXX = 1<<1, /* extend sib index */ - REXB = 1<<0 /* extend modrm r/m, sib base, or opcode reg */ -}; - - /* Operand Format codes */ -/* -%A - address size register modifier (!asize -> 'E') -%C - Control register CR0/CR1/CR2 -%D - Debug register DR0/DR1/DR2/DR3/DR6/DR7 -%I - second immediate operand -%O - Operand size register modifier (!osize -> 'E') -%T - Test register TR6/TR7 -%S - size code ('W' or 'L') -%W - Weird opcode: OSIZE == 'W' => "CBW"; else => "CWDE" -%d - displacement 16-32 bits -%e - effective address - Mod R/M value -%f - floating point register F0-F7 - from Mod R/M register -%g - segment register -%i - immediate operand 8-32 bits -%o - register from opcode and REX.B -%p - PC-relative - signed displacement in immediate field -%r - Reg from Mod R/M -%w - Weird opcode: OSIZE == 'W' => "CWD"; else => "CDQ" -*/ - -typedef struct Optable Optable; -struct Optable -{ - char operand[2]; - void *proto; /* actually either (char*) or (Optable*) */ -}; - /* Operand decoding codes */ -enum { - Ib = 1, /* 8-bit immediate - (no sign extension)*/ - Ibs, /* 8-bit immediate (sign extended) */ - Jbs, /* 8-bit sign-extended immediate in jump or call */ - Iw, /* 16-bit immediate -> imm */ - Iw2, /* 16-bit immediate -> imm2 */ - Iwd, /* Operand-sized immediate (no sign extension)*/ - Iwdq, /* Operand-sized immediate, possibly 64 bits */ - Awd, /* Address offset */ - Iwds, /* Operand-sized immediate (sign extended) */ - RM, /* Word or int32 R/M field with register (/r) */ - RMB, /* Byte R/M field with register (/r) */ - RMOP, /* Word or int32 R/M field with op code (/digit) */ - RMOPB, /* Byte R/M field with op code (/digit) */ - RMR, /* R/M register only (mod = 11) */ - RMM, /* R/M memory only (mod = 0/1/2) */ - Op_R0, /* Base reg of Mod R/M is literal 0x00 */ - Op_R1, /* Base reg of Mod R/M is literal 0x01 */ - FRMOP, /* Floating point R/M field with opcode */ - FRMEX, /* Extended floating point R/M field with opcode */ - JUMP, /* Jump or Call flag - no operand */ - RET, /* Return flag - no operand */ - OA, /* literal 0x0a byte */ - PTR, /* Seg:Displacement addr (ptr16:16 or ptr16:32) */ - AUX, /* Multi-byte op code - Auxiliary table */ - AUXMM, /* multi-byte op code - auxiliary table chosen by prefix */ - PRE, /* Instr Prefix */ - OPRE, /* Instr Prefix or media op extension */ - SEG, /* Segment Prefix */ - OPOVER, /* Operand size override */ - ADDOVER, /* Address size override */ -}; - -static Optable optab0F00[8]= -{ -[0x00] = { 0,0, "MOVW LDT,%e" }, -[0x01] = { 0,0, "MOVW TR,%e" }, -[0x02] = { 0,0, "MOVW %e,LDT" }, -[0x03] = { 0,0, "MOVW %e,TR" }, -[0x04] = { 0,0, "VERR %e" }, -[0x05] = { 0,0, "VERW %e" }, -}; - -static Optable optab0F01[8]= -{ -[0x00] = { 0,0, "MOVL GDTR,%e" }, -[0x01] = { 0,0, "MOVL IDTR,%e" }, -[0x02] = { 0,0, "MOVL %e,GDTR" }, -[0x03] = { 0,0, "MOVL %e,IDTR" }, -[0x04] = { 0,0, "MOVW MSW,%e" }, /* word */ -[0x06] = { 0,0, "MOVW %e,MSW" }, /* word */ -[0x07] = { 0,0, "INVLPG %e" }, /* or SWAPGS */ -}; - -static Optable optab0F01F8[1]= -{ -[0x00] = { 0,0, "SWAPGS" }, -}; - -/* 0F71 */ -/* 0F72 */ -/* 0F73 */ - -static Optable optab0FAE[8]= -{ -[0x00] = { 0,0, "FXSAVE %e" }, -[0x01] = { 0,0, "FXRSTOR %e" }, -[0x02] = { 0,0, "LDMXCSR %e" }, -[0x03] = { 0,0, "STMXCSR %e" }, -[0x05] = { 0,0, "LFENCE" }, -[0x06] = { 0,0, "MFENCE" }, -[0x07] = { 0,0, "SFENCE" }, -}; - -/* 0F18 */ -/* 0F0D */ - -static Optable optab0FBA[8]= -{ -[0x04] = { Ib,0, "BT%S %i,%e" }, -[0x05] = { Ib,0, "BTS%S %i,%e" }, -[0x06] = { Ib,0, "BTR%S %i,%e" }, -[0x07] = { Ib,0, "BTC%S %i,%e" }, -}; - -static Optable optab0F0F[256]= -{ -[0x0c] = { 0,0, "PI2FW %m,%M" }, -[0x0d] = { 0,0, "PI2L %m,%M" }, -[0x1c] = { 0,0, "PF2IW %m,%M" }, -[0x1d] = { 0,0, "PF2IL %m,%M" }, -[0x8a] = { 0,0, "PFNACC %m,%M" }, -[0x8e] = { 0,0, "PFPNACC %m,%M" }, -[0x90] = { 0,0, "PFCMPGE %m,%M" }, -[0x94] = { 0,0, "PFMIN %m,%M" }, -[0x96] = { 0,0, "PFRCP %m,%M" }, -[0x97] = { 0,0, "PFRSQRT %m,%M" }, -[0x9a] = { 0,0, "PFSUB %m,%M" }, -[0x9e] = { 0,0, "PFADD %m,%M" }, -[0xa0] = { 0,0, "PFCMPGT %m,%M" }, -[0xa4] = { 0,0, "PFMAX %m,%M" }, -[0xa6] = { 0,0, "PFRCPIT1 %m,%M" }, -[0xa7] = { 0,0, "PFRSQIT1 %m,%M" }, -[0xaa] = { 0,0, "PFSUBR %m,%M" }, -[0xae] = { 0,0, "PFACC %m,%M" }, -[0xb0] = { 0,0, "PFCMPEQ %m,%M" }, -[0xb4] = { 0,0, "PFMUL %m,%M" }, -[0xb6] = { 0,0, "PFRCPI2T %m,%M" }, -[0xb7] = { 0,0, "PMULHRW %m,%M" }, -[0xbb] = { 0,0, "PSWAPL %m,%M" }, -}; - -static Optable optab0FC7[8]= -{ -[0x01] = { 0,0, "CMPXCHG8B %e" }, -}; - -static Optable optab660F71[8]= -{ -[0x02] = { Ib,0, "PSRLW %i,%X" }, -[0x04] = { Ib,0, "PSRAW %i,%X" }, -[0x06] = { Ib,0, "PSLLW %i,%X" }, -}; - -static Optable optab660F72[8]= -{ -[0x02] = { Ib,0, "PSRLL %i,%X" }, -[0x04] = { Ib,0, "PSRAL %i,%X" }, -[0x06] = { Ib,0, "PSLLL %i,%X" }, -}; - -static Optable optab660F73[8]= -{ -[0x02] = { Ib,0, "PSRLQ %i,%X" }, -[0x03] = { Ib,0, "PSRLO %i,%X" }, -[0x06] = { Ib,0, "PSLLQ %i,%X" }, -[0x07] = { Ib,0, "PSLLO %i,%X" }, -}; - -static Optable optab660F[256]= -{ -[0x2B] = { RM,0, "MOVNTPD %x,%e" }, -[0x2E] = { RM,0, "UCOMISD %x,%X" }, -[0x2F] = { RM,0, "COMISD %x,%X" }, -[0x5A] = { RM,0, "CVTPD2PS %x,%X" }, -[0x5B] = { RM,0, "CVTPS2PL %x,%X" }, -[0x6A] = { RM,0, "PUNPCKHLQ %x,%X" }, -[0x6B] = { RM,0, "PACKSSLW %x,%X" }, -[0x6C] = { RM,0, "PUNPCKLQDQ %x,%X" }, -[0x6D] = { RM,0, "PUNPCKHQDQ %x,%X" }, -[0x6E] = { RM,0, "MOV%S %e,%X" }, -[0x6F] = { RM,0, "MOVO %x,%X" }, /* MOVDQA */ -[0x70] = { RM,Ib, "PSHUFL %i,%x,%X" }, -[0x71] = { RMOP,0, optab660F71 }, -[0x72] = { RMOP,0, optab660F72 }, -[0x73] = { RMOP,0, optab660F73 }, -[0x7E] = { RM,0, "MOV%S %X,%e" }, -[0x7F] = { RM,0, "MOVO %X,%x" }, -[0xC4] = { RM,Ib, "PINSRW %i,%e,%X" }, -[0xC5] = { RMR,Ib, "PEXTRW %i,%X,%e" }, -[0xD4] = { RM,0, "PADDQ %x,%X" }, -[0xD5] = { RM,0, "PMULLW %x,%X" }, -[0xD6] = { RM,0, "MOVQ %X,%x" }, -[0xE6] = { RM,0, "CVTTPD2PL %x,%X" }, -[0xE7] = { RM,0, "MOVNTO %X,%e" }, -[0xF7] = { RM,0, "MASKMOVOU %x,%X" }, -}; - -static Optable optabF20F[256]= -{ -[0x10] = { RM,0, "MOVSD %x,%X" }, -[0x11] = { RM,0, "MOVSD %X,%x" }, -[0x2A] = { RM,0, "CVTS%S2SD %e,%X" }, -[0x2C] = { RM,0, "CVTTSD2S%S %x,%r" }, -[0x2D] = { RM,0, "CVTSD2S%S %x,%r" }, -[0x5A] = { RM,0, "CVTSD2SS %x,%X" }, -[0x6F] = { RM,0, "MOVOU %x,%X" }, -[0x70] = { RM,Ib, "PSHUFLW %i,%x,%X" }, -[0x7F] = { RM,0, "MOVOU %X,%x" }, -[0xD6] = { RM,0, "MOVQOZX %M,%X" }, -[0xE6] = { RM,0, "CVTPD2PL %x,%X" }, -}; - -static Optable optabF30F[256]= -{ -[0x10] = { RM,0, "MOVSS %x,%X" }, -[0x11] = { RM,0, "MOVSS %X,%x" }, -[0x2A] = { RM,0, "CVTS%S2SS %e,%X" }, -[0x2C] = { RM,0, "CVTTSS2S%S %x,%r" }, -[0x2D] = { RM,0, "CVTSS2S%S %x,%r" }, -[0x5A] = { RM,0, "CVTSS2SD %x,%X" }, -[0x5B] = { RM,0, "CVTTPS2PL %x,%X" }, -[0x6F] = { RM,0, "MOVOU %x,%X" }, -[0x70] = { RM,Ib, "PSHUFHW %i,%x,%X" }, -[0x7E] = { RM,0, "MOVQOZX %x,%X" }, -[0x7F] = { RM,0, "MOVOU %X,%x" }, -[0xD6] = { RM,0, "MOVQOZX %m*,%X" }, -[0xE6] = { RM,0, "CVTPL2PD %x,%X" }, -}; - -static Optable optab0F[256]= -{ -[0x00] = { RMOP,0, optab0F00 }, -[0x01] = { RMOP,0, optab0F01 }, -[0x02] = { RM,0, "LAR %e,%r" }, -[0x03] = { RM,0, "LSL %e,%r" }, -[0x05] = { 0,0, "SYSCALL" }, -[0x06] = { 0,0, "CLTS" }, -[0x07] = { 0,0, "SYSRET" }, -[0x08] = { 0,0, "INVD" }, -[0x09] = { 0,0, "WBINVD" }, -[0x0B] = { 0,0, "UD2" }, -[0x0F] = { RM,AUX, optab0F0F }, /* 3DNow! */ -[0x10] = { RM,0, "MOVU%s %x,%X" }, -[0x11] = { RM,0, "MOVU%s %X,%x" }, -[0x12] = { RM,0, "MOV[H]L%s %x,%X" }, /* TO DO: H if source is XMM */ -[0x13] = { RM,0, "MOVL%s %X,%e" }, -[0x14] = { RM,0, "UNPCKL%s %x,%X" }, -[0x15] = { RM,0, "UNPCKH%s %x,%X" }, -[0x16] = { RM,0, "MOV[L]H%s %x,%X" }, /* TO DO: L if source is XMM */ -[0x17] = { RM,0, "MOVH%s %X,%x" }, -[0x1F] = { RM,0, "NOP%S %e" }, -[0x20] = { RMR,0, "MOVL %C,%e" }, -[0x21] = { RMR,0, "MOVL %D,%e" }, -[0x22] = { RMR,0, "MOVL %e,%C" }, -[0x23] = { RMR,0, "MOVL %e,%D" }, -[0x24] = { RMR,0, "MOVL %T,%e" }, -[0x26] = { RMR,0, "MOVL %e,%T" }, -[0x28] = { RM,0, "MOVA%s %x,%X" }, -[0x29] = { RM,0, "MOVA%s %X,%x" }, -[0x2A] = { RM,0, "CVTPL2%s %m*,%X" }, -[0x2B] = { RM,0, "MOVNT%s %X,%e" }, -[0x2C] = { RM,0, "CVTT%s2PL %x,%M" }, -[0x2D] = { RM,0, "CVT%s2PL %x,%M" }, -[0x2E] = { RM,0, "UCOMISS %x,%X" }, -[0x2F] = { RM,0, "COMISS %x,%X" }, -[0x30] = { 0,0, "WRMSR" }, -[0x31] = { 0,0, "RDTSC" }, -[0x32] = { 0,0, "RDMSR" }, -[0x33] = { 0,0, "RDPMC" }, -[0x42] = { RM,0, "CMOVC %e,%r" }, /* CF */ -[0x43] = { RM,0, "CMOVNC %e,%r" }, /* ¬ CF */ -[0x44] = { RM,0, "CMOVZ %e,%r" }, /* ZF */ -[0x45] = { RM,0, "CMOVNZ %e,%r" }, /* ¬ ZF */ -[0x46] = { RM,0, "CMOVBE %e,%r" }, /* CF ∨ ZF */ -[0x47] = { RM,0, "CMOVA %e,%r" }, /* ¬CF ∧ ¬ZF */ -[0x48] = { RM,0, "CMOVS %e,%r" }, /* SF */ -[0x49] = { RM,0, "CMOVNS %e,%r" }, /* ¬ SF */ -[0x4A] = { RM,0, "CMOVP %e,%r" }, /* PF */ -[0x4B] = { RM,0, "CMOVNP %e,%r" }, /* ¬ PF */ -[0x4C] = { RM,0, "CMOVLT %e,%r" }, /* LT ≡ OF ≠ SF */ -[0x4D] = { RM,0, "CMOVGE %e,%r" }, /* GE ≡ ZF ∨ SF */ -[0x4E] = { RM,0, "CMOVLE %e,%r" }, /* LE ≡ ZF ∨ LT */ -[0x4F] = { RM,0, "CMOVGT %e,%r" }, /* GT ≡ ¬ZF ∧ GE */ -[0x50] = { RM,0, "MOVMSK%s %X,%r" }, /* TO DO: check */ -[0x51] = { RM,0, "SQRT%s %x,%X" }, -[0x52] = { RM,0, "RSQRT%s %x,%X" }, -[0x53] = { RM,0, "RCP%s %x,%X" }, -[0x54] = { RM,0, "AND%s %x,%X" }, -[0x55] = { RM,0, "ANDN%s %x,%X" }, -[0x56] = { RM,0, "OR%s %x,%X" }, /* TO DO: S/D */ -[0x57] = { RM,0, "XOR%s %x,%X" }, /* S/D */ -[0x58] = { RM,0, "ADD%s %x,%X" }, /* S/P S/D */ -[0x59] = { RM,0, "MUL%s %x,%X" }, -[0x5A] = { RM,0, "CVTPS2PD %x,%X" }, -[0x5B] = { RM,0, "CVTPL2PS %x,%X" }, -[0x5C] = { RM,0, "SUB%s %x,%X" }, -[0x5D] = { RM,0, "MIN%s %x,%X" }, -[0x5E] = { RM,0, "DIV%s %x,%X" }, /* TO DO: S/P S/D */ -[0x5F] = { RM,0, "MAX%s %x,%X" }, -[0x60] = { RM,0, "PUNPCKLBW %m,%M" }, -[0x61] = { RM,0, "PUNPCKLWL %m,%M" }, -[0x62] = { RM,0, "PUNPCKLLQ %m,%M" }, -[0x63] = { RM,0, "PACKSSWB %m,%M" }, -[0x64] = { RM,0, "PCMPGTB %m,%M" }, -[0x65] = { RM,0, "PCMPGTW %m,%M" }, -[0x66] = { RM,0, "PCMPGTL %m,%M" }, -[0x67] = { RM,0, "PACKUSWB %m,%M" }, -[0x68] = { RM,0, "PUNPCKHBW %m,%M" }, -[0x69] = { RM,0, "PUNPCKHWL %m,%M" }, -[0x6A] = { RM,0, "PUNPCKHLQ %m,%M" }, -[0x6B] = { RM,0, "PACKSSLW %m,%M" }, -[0x6E] = { RM,0, "MOV%S %e,%M" }, -[0x6F] = { RM,0, "MOVQ %m,%M" }, -[0x70] = { RM,Ib, "PSHUFW %i,%m,%M" }, -[0x74] = { RM,0, "PCMPEQB %m,%M" }, -[0x75] = { RM,0, "PCMPEQW %m,%M" }, -[0x76] = { RM,0, "PCMPEQL %m,%M" }, -[0x77] = { 0,0, "EMMS" }, -[0x7E] = { RM,0, "MOV%S %M,%e" }, -[0x7F] = { RM,0, "MOVQ %M,%m" }, -[0xAE] = { RMOP,0, optab0FAE }, -[0xAA] = { 0,0, "RSM" }, -[0xB0] = { RM,0, "CMPXCHGB %r,%e" }, -[0xB1] = { RM,0, "CMPXCHG%S %r,%e" }, -[0xC0] = { RMB,0, "XADDB %r,%e" }, -[0xC1] = { RM,0, "XADD%S %r,%e" }, -[0xC2] = { RM,Ib, "CMP%s %x,%X,%#i" }, -[0xC3] = { RM,0, "MOVNTI%S %r,%e" }, -[0xC6] = { RM,Ib, "SHUF%s %i,%x,%X" }, -[0xC8] = { 0,0, "BSWAP AX" }, -[0xC9] = { 0,0, "BSWAP CX" }, -[0xCA] = { 0,0, "BSWAP DX" }, -[0xCB] = { 0,0, "BSWAP BX" }, -[0xCC] = { 0,0, "BSWAP SP" }, -[0xCD] = { 0,0, "BSWAP BP" }, -[0xCE] = { 0,0, "BSWAP SI" }, -[0xCF] = { 0,0, "BSWAP DI" }, -[0xD1] = { RM,0, "PSRLW %m,%M" }, -[0xD2] = { RM,0, "PSRLL %m,%M" }, -[0xD3] = { RM,0, "PSRLQ %m,%M" }, -[0xD5] = { RM,0, "PMULLW %m,%M" }, -[0xD6] = { RM,0, "MOVQOZX %m*,%X" }, -[0xD7] = { RM,0, "PMOVMSKB %m,%r" }, -[0xD8] = { RM,0, "PSUBUSB %m,%M" }, -[0xD9] = { RM,0, "PSUBUSW %m,%M" }, -[0xDA] = { RM,0, "PMINUB %m,%M" }, -[0xDB] = { RM,0, "PAND %m,%M" }, -[0xDC] = { RM,0, "PADDUSB %m,%M" }, -[0xDD] = { RM,0, "PADDUSW %m,%M" }, -[0xDE] = { RM,0, "PMAXUB %m,%M" }, -[0xDF] = { RM,0, "PANDN %m,%M" }, -[0xE0] = { RM,0, "PAVGB %m,%M" }, -[0xE1] = { RM,0, "PSRAW %m,%M" }, -[0xE2] = { RM,0, "PSRAL %m,%M" }, -[0xE3] = { RM,0, "PAVGW %m,%M" }, -[0xE4] = { RM,0, "PMULHUW %m,%M" }, -[0xE5] = { RM,0, "PMULHW %m,%M" }, -[0xE7] = { RM,0, "MOVNTQ %M,%e" }, -[0xE8] = { RM,0, "PSUBSB %m,%M" }, -[0xE9] = { RM,0, "PSUBSW %m,%M" }, -[0xEA] = { RM,0, "PMINSW %m,%M" }, -[0xEB] = { RM,0, "POR %m,%M" }, -[0xEC] = { RM,0, "PADDSB %m,%M" }, -[0xED] = { RM,0, "PADDSW %m,%M" }, -[0xEE] = { RM,0, "PMAXSW %m,%M" }, -[0xEF] = { RM,0, "PXOR %m,%M" }, -[0xF1] = { RM,0, "PSLLW %m,%M" }, -[0xF2] = { RM,0, "PSLLL %m,%M" }, -[0xF3] = { RM,0, "PSLLQ %m,%M" }, -[0xF4] = { RM,0, "PMULULQ %m,%M" }, -[0xF5] = { RM,0, "PMADDWL %m,%M" }, -[0xF6] = { RM,0, "PSADBW %m,%M" }, -[0xF7] = { RMR,0, "MASKMOVQ %m,%M" }, -[0xF8] = { RM,0, "PSUBB %m,%M" }, -[0xF9] = { RM,0, "PSUBW %m,%M" }, -[0xFA] = { RM,0, "PSUBL %m,%M" }, -[0xFC] = { RM,0, "PADDB %m,%M" }, -[0xFD] = { RM,0, "PADDW %m,%M" }, -[0xFE] = { RM,0, "PADDL %m,%M" }, - -[0x80] = { Iwds,0, "JOS %p" }, -[0x81] = { Iwds,0, "JOC %p" }, -[0x82] = { Iwds,0, "JCS %p" }, -[0x83] = { Iwds,0, "JCC %p" }, -[0x84] = { Iwds,0, "JEQ %p" }, -[0x85] = { Iwds,0, "JNE %p" }, -[0x86] = { Iwds,0, "JLS %p" }, -[0x87] = { Iwds,0, "JHI %p" }, -[0x88] = { Iwds,0, "JMI %p" }, -[0x89] = { Iwds,0, "JPL %p" }, -[0x8a] = { Iwds,0, "JPS %p" }, -[0x8b] = { Iwds,0, "JPC %p" }, -[0x8c] = { Iwds,0, "JLT %p" }, -[0x8d] = { Iwds,0, "JGE %p" }, -[0x8e] = { Iwds,0, "JLE %p" }, -[0x8f] = { Iwds,0, "JGT %p" }, -[0x90] = { RMB,0, "SETOS %e" }, -[0x91] = { RMB,0, "SETOC %e" }, -[0x92] = { RMB,0, "SETCS %e" }, -[0x93] = { RMB,0, "SETCC %e" }, -[0x94] = { RMB,0, "SETEQ %e" }, -[0x95] = { RMB,0, "SETNE %e" }, -[0x96] = { RMB,0, "SETLS %e" }, -[0x97] = { RMB,0, "SETHI %e" }, -[0x98] = { RMB,0, "SETMI %e" }, -[0x99] = { RMB,0, "SETPL %e" }, -[0x9a] = { RMB,0, "SETPS %e" }, -[0x9b] = { RMB,0, "SETPC %e" }, -[0x9c] = { RMB,0, "SETLT %e" }, -[0x9d] = { RMB,0, "SETGE %e" }, -[0x9e] = { RMB,0, "SETLE %e" }, -[0x9f] = { RMB,0, "SETGT %e" }, -[0xa0] = { 0,0, "PUSHL FS" }, -[0xa1] = { 0,0, "POPL FS" }, -[0xa2] = { 0,0, "CPUID" }, -[0xa3] = { RM,0, "BT%S %r,%e" }, -[0xa4] = { RM,Ib, "SHLD%S %r,%i,%e" }, -[0xa5] = { RM,0, "SHLD%S %r,CL,%e" }, -[0xa8] = { 0,0, "PUSHL GS" }, -[0xa9] = { 0,0, "POPL GS" }, -[0xab] = { RM,0, "BTS%S %r,%e" }, -[0xac] = { RM,Ib, "SHRD%S %r,%i,%e" }, -[0xad] = { RM,0, "SHRD%S %r,CL,%e" }, -[0xaf] = { RM,0, "IMUL%S %e,%r" }, -[0xb2] = { RMM,0, "LSS %e,%r" }, -[0xb3] = { RM,0, "BTR%S %r,%e" }, -[0xb4] = { RMM,0, "LFS %e,%r" }, -[0xb5] = { RMM,0, "LGS %e,%r" }, -[0xb6] = { RMB,0, "MOVBZX %e,%R" }, -[0xb7] = { RM,0, "MOVWZX %e,%R" }, -[0xba] = { RMOP,0, optab0FBA }, -[0xbb] = { RM,0, "BTC%S %e,%r" }, -[0xbc] = { RM,0, "BSF%S %e,%r" }, -[0xbd] = { RM,0, "BSR%S %e,%r" }, -[0xbe] = { RMB,0, "MOVBSX %e,%R" }, -[0xbf] = { RM,0, "MOVWSX %e,%R" }, -[0xc7] = { RMOP,0, optab0FC7 }, -}; - -static Optable optab80[8]= -{ -[0x00] = { Ib,0, "ADDB %i,%e" }, -[0x01] = { Ib,0, "ORB %i,%e" }, -[0x02] = { Ib,0, "ADCB %i,%e" }, -[0x03] = { Ib,0, "SBBB %i,%e" }, -[0x04] = { Ib,0, "ANDB %i,%e" }, -[0x05] = { Ib,0, "SUBB %i,%e" }, -[0x06] = { Ib,0, "XORB %i,%e" }, -[0x07] = { Ib,0, "CMPB %e,%i" }, -}; - -static Optable optab81[8]= -{ -[0x00] = { Iwd,0, "ADD%S %i,%e" }, -[0x01] = { Iwd,0, "OR%S %i,%e" }, -[0x02] = { Iwd,0, "ADC%S %i,%e" }, -[0x03] = { Iwd,0, "SBB%S %i,%e" }, -[0x04] = { Iwd,0, "AND%S %i,%e" }, -[0x05] = { Iwd,0, "SUB%S %i,%e" }, -[0x06] = { Iwd,0, "XOR%S %i,%e" }, -[0x07] = { Iwd,0, "CMP%S %e,%i" }, -}; - -static Optable optab83[8]= -{ -[0x00] = { Ibs,0, "ADD%S %i,%e" }, -[0x01] = { Ibs,0, "OR%S %i,%e" }, -[0x02] = { Ibs,0, "ADC%S %i,%e" }, -[0x03] = { Ibs,0, "SBB%S %i,%e" }, -[0x04] = { Ibs,0, "AND%S %i,%e" }, -[0x05] = { Ibs,0, "SUB%S %i,%e" }, -[0x06] = { Ibs,0, "XOR%S %i,%e" }, -[0x07] = { Ibs,0, "CMP%S %e,%i" }, -}; - -static Optable optabC0[8] = -{ -[0x00] = { Ib,0, "ROLB %i,%e" }, -[0x01] = { Ib,0, "RORB %i,%e" }, -[0x02] = { Ib,0, "RCLB %i,%e" }, -[0x03] = { Ib,0, "RCRB %i,%e" }, -[0x04] = { Ib,0, "SHLB %i,%e" }, -[0x05] = { Ib,0, "SHRB %i,%e" }, -[0x07] = { Ib,0, "SARB %i,%e" }, -}; - -static Optable optabC1[8] = -{ -[0x00] = { Ib,0, "ROL%S %i,%e" }, -[0x01] = { Ib,0, "ROR%S %i,%e" }, -[0x02] = { Ib,0, "RCL%S %i,%e" }, -[0x03] = { Ib,0, "RCR%S %i,%e" }, -[0x04] = { Ib,0, "SHL%S %i,%e" }, -[0x05] = { Ib,0, "SHR%S %i,%e" }, -[0x07] = { Ib,0, "SAR%S %i,%e" }, -}; - -static Optable optabD0[8] = -{ -[0x00] = { 0,0, "ROLB %e" }, -[0x01] = { 0,0, "RORB %e" }, -[0x02] = { 0,0, "RCLB %e" }, -[0x03] = { 0,0, "RCRB %e" }, -[0x04] = { 0,0, "SHLB %e" }, -[0x05] = { 0,0, "SHRB %e" }, -[0x07] = { 0,0, "SARB %e" }, -}; - -static Optable optabD1[8] = -{ -[0x00] = { 0,0, "ROL%S %e" }, -[0x01] = { 0,0, "ROR%S %e" }, -[0x02] = { 0,0, "RCL%S %e" }, -[0x03] = { 0,0, "RCR%S %e" }, -[0x04] = { 0,0, "SHL%S %e" }, -[0x05] = { 0,0, "SHR%S %e" }, -[0x07] = { 0,0, "SAR%S %e" }, -}; - -static Optable optabD2[8] = -{ -[0x00] = { 0,0, "ROLB CL,%e" }, -[0x01] = { 0,0, "RORB CL,%e" }, -[0x02] = { 0,0, "RCLB CL,%e" }, -[0x03] = { 0,0, "RCRB CL,%e" }, -[0x04] = { 0,0, "SHLB CL,%e" }, -[0x05] = { 0,0, "SHRB CL,%e" }, -[0x07] = { 0,0, "SARB CL,%e" }, -}; - -static Optable optabD3[8] = -{ -[0x00] = { 0,0, "ROL%S CL,%e" }, -[0x01] = { 0,0, "ROR%S CL,%e" }, -[0x02] = { 0,0, "RCL%S CL,%e" }, -[0x03] = { 0,0, "RCR%S CL,%e" }, -[0x04] = { 0,0, "SHL%S CL,%e" }, -[0x05] = { 0,0, "SHR%S CL,%e" }, -[0x07] = { 0,0, "SAR%S CL,%e" }, -}; - -static Optable optabD8[8+8] = -{ -[0x00] = { 0,0, "FADDF %e,F0" }, -[0x01] = { 0,0, "FMULF %e,F0" }, -[0x02] = { 0,0, "FCOMF %e,F0" }, -[0x03] = { 0,0, "FCOMFP %e,F0" }, -[0x04] = { 0,0, "FSUBF %e,F0" }, -[0x05] = { 0,0, "FSUBRF %e,F0" }, -[0x06] = { 0,0, "FDIVF %e,F0" }, -[0x07] = { 0,0, "FDIVRF %e,F0" }, -[0x08] = { 0,0, "FADDD %f,F0" }, -[0x09] = { 0,0, "FMULD %f,F0" }, -[0x0a] = { 0,0, "FCOMD %f,F0" }, -[0x0b] = { 0,0, "FCOMPD %f,F0" }, -[0x0c] = { 0,0, "FSUBD %f,F0" }, -[0x0d] = { 0,0, "FSUBRD %f,F0" }, -[0x0e] = { 0,0, "FDIVD %f,F0" }, -[0x0f] = { 0,0, "FDIVRD %f,F0" }, -}; -/* - * optabD9 and optabDB use the following encoding: - * if (0 <= modrm <= 2) instruction = optabDx[modrm&0x07]; - * else instruction = optabDx[(modrm&0x3f)+8]; - * - * the instructions for MOD == 3, follow the 8 instructions - * for the other MOD values stored at the front of the table. - */ -static Optable optabD9[64+8] = -{ -[0x00] = { 0,0, "FMOVF %e,F0" }, -[0x02] = { 0,0, "FMOVF F0,%e" }, -[0x03] = { 0,0, "FMOVFP F0,%e" }, -[0x04] = { 0,0, "FLDENV%S %e" }, -[0x05] = { 0,0, "FLDCW %e" }, -[0x06] = { 0,0, "FSTENV%S %e" }, -[0x07] = { 0,0, "FSTCW %e" }, -[0x08] = { 0,0, "FMOVD F0,F0" }, /* Mod R/M = 11xx xxxx*/ -[0x09] = { 0,0, "FMOVD F1,F0" }, -[0x0a] = { 0,0, "FMOVD F2,F0" }, -[0x0b] = { 0,0, "FMOVD F3,F0" }, -[0x0c] = { 0,0, "FMOVD F4,F0" }, -[0x0d] = { 0,0, "FMOVD F5,F0" }, -[0x0e] = { 0,0, "FMOVD F6,F0" }, -[0x0f] = { 0,0, "FMOVD F7,F0" }, -[0x10] = { 0,0, "FXCHD F0,F0" }, -[0x11] = { 0,0, "FXCHD F1,F0" }, -[0x12] = { 0,0, "FXCHD F2,F0" }, -[0x13] = { 0,0, "FXCHD F3,F0" }, -[0x14] = { 0,0, "FXCHD F4,F0" }, -[0x15] = { 0,0, "FXCHD F5,F0" }, -[0x16] = { 0,0, "FXCHD F6,F0" }, -[0x17] = { 0,0, "FXCHD F7,F0" }, -[0x18] = { 0,0, "FNOP" }, -[0x28] = { 0,0, "FCHS" }, -[0x29] = { 0,0, "FABS" }, -[0x2c] = { 0,0, "FTST" }, -[0x2d] = { 0,0, "FXAM" }, -[0x30] = { 0,0, "FLD1" }, -[0x31] = { 0,0, "FLDL2T" }, -[0x32] = { 0,0, "FLDL2E" }, -[0x33] = { 0,0, "FLDPI" }, -[0x34] = { 0,0, "FLDLG2" }, -[0x35] = { 0,0, "FLDLN2" }, -[0x36] = { 0,0, "FLDZ" }, -[0x38] = { 0,0, "F2XM1" }, -[0x39] = { 0,0, "FYL2X" }, -[0x3a] = { 0,0, "FPTAN" }, -[0x3b] = { 0,0, "FPATAN" }, -[0x3c] = { 0,0, "FXTRACT" }, -[0x3d] = { 0,0, "FPREM1" }, -[0x3e] = { 0,0, "FDECSTP" }, -[0x3f] = { 0,0, "FNCSTP" }, -[0x40] = { 0,0, "FPREM" }, -[0x41] = { 0,0, "FYL2XP1" }, -[0x42] = { 0,0, "FSQRT" }, -[0x43] = { 0,0, "FSINCOS" }, -[0x44] = { 0,0, "FRNDINT" }, -[0x45] = { 0,0, "FSCALE" }, -[0x46] = { 0,0, "FSIN" }, -[0x47] = { 0,0, "FCOS" }, -}; - -static Optable optabDA[8+8] = -{ -[0x00] = { 0,0, "FADDL %e,F0" }, -[0x01] = { 0,0, "FMULL %e,F0" }, -[0x02] = { 0,0, "FCOML %e,F0" }, -[0x03] = { 0,0, "FCOMLP %e,F0" }, -[0x04] = { 0,0, "FSUBL %e,F0" }, -[0x05] = { 0,0, "FSUBRL %e,F0" }, -[0x06] = { 0,0, "FDIVL %e,F0" }, -[0x07] = { 0,0, "FDIVRL %e,F0" }, -[0x08] = { 0,0, "FCMOVCS %f,F0" }, -[0x09] = { 0,0, "FCMOVEQ %f,F0" }, -[0x0a] = { 0,0, "FCMOVLS %f,F0" }, -[0x0b] = { 0,0, "FCMOVUN %f,F0" }, -[0x0d] = { Op_R1,0, "FUCOMPP" }, -}; - -static Optable optabDB[8+64] = -{ -[0x00] = { 0,0, "FMOVL %e,F0" }, -[0x02] = { 0,0, "FMOVL F0,%e" }, -[0x03] = { 0,0, "FMOVLP F0,%e" }, -[0x05] = { 0,0, "FMOVX %e,F0" }, -[0x07] = { 0,0, "FMOVXP F0,%e" }, -[0x08] = { 0,0, "FCMOVCC F0,F0" }, /* Mod R/M = 11xx xxxx*/ -[0x09] = { 0,0, "FCMOVCC F1,F0" }, -[0x0a] = { 0,0, "FCMOVCC F2,F0" }, -[0x0b] = { 0,0, "FCMOVCC F3,F0" }, -[0x0c] = { 0,0, "FCMOVCC F4,F0" }, -[0x0d] = { 0,0, "FCMOVCC F5,F0" }, -[0x0e] = { 0,0, "FCMOVCC F6,F0" }, -[0x0f] = { 0,0, "FCMOVCC F7,F0" }, -[0x10] = { 0,0, "FCMOVNE F0,F0" }, -[0x11] = { 0,0, "FCMOVNE F1,F0" }, -[0x12] = { 0,0, "FCMOVNE F2,F0" }, -[0x13] = { 0,0, "FCMOVNE F3,F0" }, -[0x14] = { 0,0, "FCMOVNE F4,F0" }, -[0x15] = { 0,0, "FCMOVNE F5,F0" }, -[0x16] = { 0,0, "FCMOVNE F6,F0" }, -[0x17] = { 0,0, "FCMOVNE F7,F0" }, -[0x18] = { 0,0, "FCMOVHI F0,F0" }, -[0x19] = { 0,0, "FCMOVHI F1,F0" }, -[0x1a] = { 0,0, "FCMOVHI F2,F0" }, -[0x1b] = { 0,0, "FCMOVHI F3,F0" }, -[0x1c] = { 0,0, "FCMOVHI F4,F0" }, -[0x1d] = { 0,0, "FCMOVHI F5,F0" }, -[0x1e] = { 0,0, "FCMOVHI F6,F0" }, -[0x1f] = { 0,0, "FCMOVHI F7,F0" }, -[0x20] = { 0,0, "FCMOVNU F0,F0" }, -[0x21] = { 0,0, "FCMOVNU F1,F0" }, -[0x22] = { 0,0, "FCMOVNU F2,F0" }, -[0x23] = { 0,0, "FCMOVNU F3,F0" }, -[0x24] = { 0,0, "FCMOVNU F4,F0" }, -[0x25] = { 0,0, "FCMOVNU F5,F0" }, -[0x26] = { 0,0, "FCMOVNU F6,F0" }, -[0x27] = { 0,0, "FCMOVNU F7,F0" }, -[0x2a] = { 0,0, "FCLEX" }, -[0x2b] = { 0,0, "FINIT" }, -[0x30] = { 0,0, "FUCOMI F0,F0" }, -[0x31] = { 0,0, "FUCOMI F1,F0" }, -[0x32] = { 0,0, "FUCOMI F2,F0" }, -[0x33] = { 0,0, "FUCOMI F3,F0" }, -[0x34] = { 0,0, "FUCOMI F4,F0" }, -[0x35] = { 0,0, "FUCOMI F5,F0" }, -[0x36] = { 0,0, "FUCOMI F6,F0" }, -[0x37] = { 0,0, "FUCOMI F7,F0" }, -[0x38] = { 0,0, "FCOMI F0,F0" }, -[0x39] = { 0,0, "FCOMI F1,F0" }, -[0x3a] = { 0,0, "FCOMI F2,F0" }, -[0x3b] = { 0,0, "FCOMI F3,F0" }, -[0x3c] = { 0,0, "FCOMI F4,F0" }, -[0x3d] = { 0,0, "FCOMI F5,F0" }, -[0x3e] = { 0,0, "FCOMI F6,F0" }, -[0x3f] = { 0,0, "FCOMI F7,F0" }, -}; - -static Optable optabDC[8+8] = -{ -[0x00] = { 0,0, "FADDD %e,F0" }, -[0x01] = { 0,0, "FMULD %e,F0" }, -[0x02] = { 0,0, "FCOMD %e,F0" }, -[0x03] = { 0,0, "FCOMDP %e,F0" }, -[0x04] = { 0,0, "FSUBD %e,F0" }, -[0x05] = { 0,0, "FSUBRD %e,F0" }, -[0x06] = { 0,0, "FDIVD %e,F0" }, -[0x07] = { 0,0, "FDIVRD %e,F0" }, -[0x08] = { 0,0, "FADDD F0,%f" }, -[0x09] = { 0,0, "FMULD F0,%f" }, -[0x0c] = { 0,0, "FSUBRD F0,%f" }, -[0x0d] = { 0,0, "FSUBD F0,%f" }, -[0x0e] = { 0,0, "FDIVRD F0,%f" }, -[0x0f] = { 0,0, "FDIVD F0,%f" }, -}; - -static Optable optabDD[8+8] = -{ -[0x00] = { 0,0, "FMOVD %e,F0" }, -[0x02] = { 0,0, "FMOVD F0,%e" }, -[0x03] = { 0,0, "FMOVDP F0,%e" }, -[0x04] = { 0,0, "FRSTOR%S %e" }, -[0x06] = { 0,0, "FSAVE%S %e" }, -[0x07] = { 0,0, "FSTSW %e" }, -[0x08] = { 0,0, "FFREED %f" }, -[0x0a] = { 0,0, "FMOVD %f,F0" }, -[0x0b] = { 0,0, "FMOVDP %f,F0" }, -[0x0c] = { 0,0, "FUCOMD %f,F0" }, -[0x0d] = { 0,0, "FUCOMDP %f,F0" }, -}; - -static Optable optabDE[8+8] = -{ -[0x00] = { 0,0, "FADDW %e,F0" }, -[0x01] = { 0,0, "FMULW %e,F0" }, -[0x02] = { 0,0, "FCOMW %e,F0" }, -[0x03] = { 0,0, "FCOMWP %e,F0" }, -[0x04] = { 0,0, "FSUBW %e,F0" }, -[0x05] = { 0,0, "FSUBRW %e,F0" }, -[0x06] = { 0,0, "FDIVW %e,F0" }, -[0x07] = { 0,0, "FDIVRW %e,F0" }, -[0x08] = { 0,0, "FADDDP F0,%f" }, -[0x09] = { 0,0, "FMULDP F0,%f" }, -[0x0b] = { Op_R1,0, "FCOMPDP" }, -[0x0c] = { 0,0, "FSUBRDP F0,%f" }, -[0x0d] = { 0,0, "FSUBDP F0,%f" }, -[0x0e] = { 0,0, "FDIVRDP F0,%f" }, -[0x0f] = { 0,0, "FDIVDP F0,%f" }, -}; - -static Optable optabDF[8+8] = -{ -[0x00] = { 0,0, "FMOVW %e,F0" }, -[0x02] = { 0,0, "FMOVW F0,%e" }, -[0x03] = { 0,0, "FMOVWP F0,%e" }, -[0x04] = { 0,0, "FBLD %e" }, -[0x05] = { 0,0, "FMOVL %e,F0" }, -[0x06] = { 0,0, "FBSTP %e" }, -[0x07] = { 0,0, "FMOVLP F0,%e" }, -[0x0c] = { Op_R0,0, "FSTSW %OAX" }, -[0x0d] = { 0,0, "FUCOMIP F0,%f" }, -[0x0e] = { 0,0, "FCOMIP F0,%f" }, -}; - -static Optable optabF6[8] = -{ -[0x00] = { Ib,0, "TESTB %i,%e" }, -[0x02] = { 0,0, "NOTB %e" }, -[0x03] = { 0,0, "NEGB %e" }, -[0x04] = { 0,0, "MULB AL,%e" }, -[0x05] = { 0,0, "IMULB AL,%e" }, -[0x06] = { 0,0, "DIVB AL,%e" }, -[0x07] = { 0,0, "IDIVB AL,%e" }, -}; - -static Optable optabF7[8] = -{ -[0x00] = { Iwd,0, "TEST%S %i,%e" }, -[0x02] = { 0,0, "NOT%S %e" }, -[0x03] = { 0,0, "NEG%S %e" }, -[0x04] = { 0,0, "MUL%S %OAX,%e" }, -[0x05] = { 0,0, "IMUL%S %OAX,%e" }, -[0x06] = { 0,0, "DIV%S %OAX,%e" }, -[0x07] = { 0,0, "IDIV%S %OAX,%e" }, -}; - -static Optable optabFE[8] = -{ -[0x00] = { 0,0, "INCB %e" }, -[0x01] = { 0,0, "DECB %e" }, -}; - -static Optable optabFF[8] = -{ -[0x00] = { 0,0, "INC%S %e" }, -[0x01] = { 0,0, "DEC%S %e" }, -[0x02] = { JUMP,0, "CALL* %e" }, -[0x03] = { JUMP,0, "CALLF* %e" }, -[0x04] = { JUMP,0, "JMP* %e" }, -[0x05] = { JUMP,0, "JMPF* %e" }, -[0x06] = { 0,0, "PUSHL %e" }, -}; - -static Optable optable[256+2] = -{ -[0x00] = { RMB,0, "ADDB %r,%e" }, -[0x01] = { RM,0, "ADD%S %r,%e" }, -[0x02] = { RMB,0, "ADDB %e,%r" }, -[0x03] = { RM,0, "ADD%S %e,%r" }, -[0x04] = { Ib,0, "ADDB %i,AL" }, -[0x05] = { Iwd,0, "ADD%S %i,%OAX" }, -[0x06] = { 0,0, "PUSHL ES" }, -[0x07] = { 0,0, "POPL ES" }, -[0x08] = { RMB,0, "ORB %r,%e" }, -[0x09] = { RM,0, "OR%S %r,%e" }, -[0x0a] = { RMB,0, "ORB %e,%r" }, -[0x0b] = { RM,0, "OR%S %e,%r" }, -[0x0c] = { Ib,0, "ORB %i,AL" }, -[0x0d] = { Iwd,0, "OR%S %i,%OAX" }, -[0x0e] = { 0,0, "PUSHL CS" }, -[0x0f] = { AUXMM,0, optab0F }, -[0x10] = { RMB,0, "ADCB %r,%e" }, -[0x11] = { RM,0, "ADC%S %r,%e" }, -[0x12] = { RMB,0, "ADCB %e,%r" }, -[0x13] = { RM,0, "ADC%S %e,%r" }, -[0x14] = { Ib,0, "ADCB %i,AL" }, -[0x15] = { Iwd,0, "ADC%S %i,%OAX" }, -[0x16] = { 0,0, "PUSHL SS" }, -[0x17] = { 0,0, "POPL SS" }, -[0x18] = { RMB,0, "SBBB %r,%e" }, -[0x19] = { RM,0, "SBB%S %r,%e" }, -[0x1a] = { RMB,0, "SBBB %e,%r" }, -[0x1b] = { RM,0, "SBB%S %e,%r" }, -[0x1c] = { Ib,0, "SBBB %i,AL" }, -[0x1d] = { Iwd,0, "SBB%S %i,%OAX" }, -[0x1e] = { 0,0, "PUSHL DS" }, -[0x1f] = { 0,0, "POPL DS" }, -[0x20] = { RMB,0, "ANDB %r,%e" }, -[0x21] = { RM,0, "AND%S %r,%e" }, -[0x22] = { RMB,0, "ANDB %e,%r" }, -[0x23] = { RM,0, "AND%S %e,%r" }, -[0x24] = { Ib,0, "ANDB %i,AL" }, -[0x25] = { Iwd,0, "AND%S %i,%OAX" }, -[0x26] = { SEG,0, "ES:" }, -[0x27] = { 0,0, "DAA" }, -[0x28] = { RMB,0, "SUBB %r,%e" }, -[0x29] = { RM,0, "SUB%S %r,%e" }, -[0x2a] = { RMB,0, "SUBB %e,%r" }, -[0x2b] = { RM,0, "SUB%S %e,%r" }, -[0x2c] = { Ib,0, "SUBB %i,AL" }, -[0x2d] = { Iwd,0, "SUB%S %i,%OAX" }, -[0x2e] = { SEG,0, "CS:" }, -[0x2f] = { 0,0, "DAS" }, -[0x30] = { RMB,0, "XORB %r,%e" }, -[0x31] = { RM,0, "XOR%S %r,%e" }, -[0x32] = { RMB,0, "XORB %e,%r" }, -[0x33] = { RM,0, "XOR%S %e,%r" }, -[0x34] = { Ib,0, "XORB %i,AL" }, -[0x35] = { Iwd,0, "XOR%S %i,%OAX" }, -[0x36] = { SEG,0, "SS:" }, -[0x37] = { 0,0, "AAA" }, -[0x38] = { RMB,0, "CMPB %r,%e" }, -[0x39] = { RM,0, "CMP%S %r,%e" }, -[0x3a] = { RMB,0, "CMPB %e,%r" }, -[0x3b] = { RM,0, "CMP%S %e,%r" }, -[0x3c] = { Ib,0, "CMPB %i,AL" }, -[0x3d] = { Iwd,0, "CMP%S %i,%OAX" }, -[0x3e] = { SEG,0, "DS:" }, -[0x3f] = { 0,0, "AAS" }, -[0x40] = { 0,0, "INC%S %OAX" }, -[0x41] = { 0,0, "INC%S %OCX" }, -[0x42] = { 0,0, "INC%S %ODX" }, -[0x43] = { 0,0, "INC%S %OBX" }, -[0x44] = { 0,0, "INC%S %OSP" }, -[0x45] = { 0,0, "INC%S %OBP" }, -[0x46] = { 0,0, "INC%S %OSI" }, -[0x47] = { 0,0, "INC%S %ODI" }, -[0x48] = { 0,0, "DEC%S %OAX" }, -[0x49] = { 0,0, "DEC%S %OCX" }, -[0x4a] = { 0,0, "DEC%S %ODX" }, -[0x4b] = { 0,0, "DEC%S %OBX" }, -[0x4c] = { 0,0, "DEC%S %OSP" }, -[0x4d] = { 0,0, "DEC%S %OBP" }, -[0x4e] = { 0,0, "DEC%S %OSI" }, -[0x4f] = { 0,0, "DEC%S %ODI" }, -[0x50] = { 0,0, "PUSH%S %OAX" }, -[0x51] = { 0,0, "PUSH%S %OCX" }, -[0x52] = { 0,0, "PUSH%S %ODX" }, -[0x53] = { 0,0, "PUSH%S %OBX" }, -[0x54] = { 0,0, "PUSH%S %OSP" }, -[0x55] = { 0,0, "PUSH%S %OBP" }, -[0x56] = { 0,0, "PUSH%S %OSI" }, -[0x57] = { 0,0, "PUSH%S %ODI" }, -[0x58] = { 0,0, "POP%S %OAX" }, -[0x59] = { 0,0, "POP%S %OCX" }, -[0x5a] = { 0,0, "POP%S %ODX" }, -[0x5b] = { 0,0, "POP%S %OBX" }, -[0x5c] = { 0,0, "POP%S %OSP" }, -[0x5d] = { 0,0, "POP%S %OBP" }, -[0x5e] = { 0,0, "POP%S %OSI" }, -[0x5f] = { 0,0, "POP%S %ODI" }, -[0x60] = { 0,0, "PUSHA%S" }, -[0x61] = { 0,0, "POPA%S" }, -[0x62] = { RMM,0, "BOUND %e,%r" }, -[0x63] = { RM,0, "ARPL %r,%e" }, -[0x64] = { SEG,0, "FS:" }, -[0x65] = { SEG,0, "GS:" }, -[0x66] = { OPOVER,0, "" }, -[0x67] = { ADDOVER,0, "" }, -[0x68] = { Iwd,0, "PUSH%S %i" }, -[0x69] = { RM,Iwd, "IMUL%S %e,%i,%r" }, -[0x6a] = { Ib,0, "PUSH%S %i" }, -[0x6b] = { RM,Ibs, "IMUL%S %e,%i,%r" }, -[0x6c] = { 0,0, "INSB DX,(%ODI)" }, -[0x6d] = { 0,0, "INS%S DX,(%ODI)" }, -[0x6e] = { 0,0, "OUTSB (%ASI),DX" }, -[0x6f] = { 0,0, "OUTS%S (%ASI),DX" }, -[0x70] = { Jbs,0, "JOS %p" }, -[0x71] = { Jbs,0, "JOC %p" }, -[0x72] = { Jbs,0, "JCS %p" }, -[0x73] = { Jbs,0, "JCC %p" }, -[0x74] = { Jbs,0, "JEQ %p" }, -[0x75] = { Jbs,0, "JNE %p" }, -[0x76] = { Jbs,0, "JLS %p" }, -[0x77] = { Jbs,0, "JHI %p" }, -[0x78] = { Jbs,0, "JMI %p" }, -[0x79] = { Jbs,0, "JPL %p" }, -[0x7a] = { Jbs,0, "JPS %p" }, -[0x7b] = { Jbs,0, "JPC %p" }, -[0x7c] = { Jbs,0, "JLT %p" }, -[0x7d] = { Jbs,0, "JGE %p" }, -[0x7e] = { Jbs,0, "JLE %p" }, -[0x7f] = { Jbs,0, "JGT %p" }, -[0x80] = { RMOPB,0, optab80 }, -[0x81] = { RMOP,0, optab81 }, -[0x83] = { RMOP,0, optab83 }, -[0x84] = { RMB,0, "TESTB %r,%e" }, -[0x85] = { RM,0, "TEST%S %r,%e" }, -[0x86] = { RMB,0, "XCHGB %r,%e" }, -[0x87] = { RM,0, "XCHG%S %r,%e" }, -[0x88] = { RMB,0, "MOVB %r,%e" }, -[0x89] = { RM,0, "MOV%S %r,%e" }, -[0x8a] = { RMB,0, "MOVB %e,%r" }, -[0x8b] = { RM,0, "MOV%S %e,%r" }, -[0x8c] = { RM,0, "MOVW %g,%e" }, -[0x8d] = { RM,0, "LEA%S %e,%r" }, -[0x8e] = { RM,0, "MOVW %e,%g" }, -[0x8f] = { RM,0, "POP%S %e" }, -[0x90] = { 0,0, "NOP" }, -[0x91] = { 0,0, "XCHG %OCX,%OAX" }, -[0x92] = { 0,0, "XCHG %ODX,%OAX" }, -[0x93] = { 0,0, "XCHG %OBX,%OAX" }, -[0x94] = { 0,0, "XCHG %OSP,%OAX" }, -[0x95] = { 0,0, "XCHG %OBP,%OAX" }, -[0x96] = { 0,0, "XCHG %OSI,%OAX" }, -[0x97] = { 0,0, "XCHG %ODI,%OAX" }, -[0x98] = { 0,0, "%W" }, /* miserable CBW or CWDE */ -[0x99] = { 0,0, "%w" }, /* idiotic CWD or CDQ */ -[0x9a] = { PTR,0, "CALL%S %d" }, -[0x9b] = { 0,0, "WAIT" }, -[0x9c] = { 0,0, "PUSHF" }, -[0x9d] = { 0,0, "POPF" }, -[0x9e] = { 0,0, "SAHF" }, -[0x9f] = { 0,0, "LAHF" }, -[0xa0] = { Awd,0, "MOVB %i,AL" }, -[0xa1] = { Awd,0, "MOV%S %i,%OAX" }, -[0xa2] = { Awd,0, "MOVB AL,%i" }, -[0xa3] = { Awd,0, "MOV%S %OAX,%i" }, -[0xa4] = { 0,0, "MOVSB (%ASI),(%ADI)" }, -[0xa5] = { 0,0, "MOVS%S (%ASI),(%ADI)" }, -[0xa6] = { 0,0, "CMPSB (%ASI),(%ADI)" }, -[0xa7] = { 0,0, "CMPS%S (%ASI),(%ADI)" }, -[0xa8] = { Ib,0, "TESTB %i,AL" }, -[0xa9] = { Iwd,0, "TEST%S %i,%OAX" }, -[0xaa] = { 0,0, "STOSB AL,(%ADI)" }, -[0xab] = { 0,0, "STOS%S %OAX,(%ADI)" }, -[0xac] = { 0,0, "LODSB (%ASI),AL" }, -[0xad] = { 0,0, "LODS%S (%ASI),%OAX" }, -[0xae] = { 0,0, "SCASB (%ADI),AL" }, -[0xaf] = { 0,0, "SCAS%S (%ADI),%OAX" }, -[0xb0] = { Ib,0, "MOVB %i,AL" }, -[0xb1] = { Ib,0, "MOVB %i,CL" }, -[0xb2] = { Ib,0, "MOVB %i,DL" }, -[0xb3] = { Ib,0, "MOVB %i,BL" }, -[0xb4] = { Ib,0, "MOVB %i,AH" }, -[0xb5] = { Ib,0, "MOVB %i,CH" }, -[0xb6] = { Ib,0, "MOVB %i,DH" }, -[0xb7] = { Ib,0, "MOVB %i,BH" }, -[0xb8] = { Iwdq,0, "MOV%S %i,%o" }, -[0xb9] = { Iwdq,0, "MOV%S %i,%o" }, -[0xba] = { Iwdq,0, "MOV%S %i,%o" }, -[0xbb] = { Iwdq,0, "MOV%S %i,%o" }, -[0xbc] = { Iwdq,0, "MOV%S %i,%o" }, -[0xbd] = { Iwdq,0, "MOV%S %i,%o" }, -[0xbe] = { Iwdq,0, "MOV%S %i,%o" }, -[0xbf] = { Iwdq,0, "MOV%S %i,%o" }, -[0xc0] = { RMOPB,0, optabC0 }, -[0xc1] = { RMOP,0, optabC1 }, -[0xc2] = { Iw,0, "RET %i" }, -[0xc3] = { RET,0, "RET" }, -[0xc4] = { RM,0, "LES %e,%r" }, -[0xc5] = { RM,0, "LDS %e,%r" }, -[0xc6] = { RMB,Ib, "MOVB %i,%e" }, -[0xc7] = { RM,Iwd, "MOV%S %i,%e" }, -[0xc8] = { Iw2,Ib, "ENTER %i,%I" }, /* loony ENTER */ -[0xc9] = { RET,0, "LEAVE" }, /* bizarre LEAVE */ -[0xca] = { Iw,0, "RETF %i" }, -[0xcb] = { RET,0, "RETF" }, -[0xcc] = { 0,0, "INT 3" }, -[0xcd] = { Ib,0, "INTB %i" }, -[0xce] = { 0,0, "INTO" }, -[0xcf] = { 0,0, "IRET" }, -[0xd0] = { RMOPB,0, optabD0 }, -[0xd1] = { RMOP,0, optabD1 }, -[0xd2] = { RMOPB,0, optabD2 }, -[0xd3] = { RMOP,0, optabD3 }, -[0xd4] = { OA,0, "AAM" }, -[0xd5] = { OA,0, "AAD" }, -[0xd7] = { 0,0, "XLAT" }, -[0xd8] = { FRMOP,0, optabD8 }, -[0xd9] = { FRMEX,0, optabD9 }, -[0xda] = { FRMOP,0, optabDA }, -[0xdb] = { FRMEX,0, optabDB }, -[0xdc] = { FRMOP,0, optabDC }, -[0xdd] = { FRMOP,0, optabDD }, -[0xde] = { FRMOP,0, optabDE }, -[0xdf] = { FRMOP,0, optabDF }, -[0xe0] = { Jbs,0, "LOOPNE %p" }, -[0xe1] = { Jbs,0, "LOOPE %p" }, -[0xe2] = { Jbs,0, "LOOP %p" }, -[0xe3] = { Jbs,0, "JCXZ %p" }, -[0xe4] = { Ib,0, "INB %i,AL" }, -[0xe5] = { Ib,0, "IN%S %i,%OAX" }, -[0xe6] = { Ib,0, "OUTB AL,%i" }, -[0xe7] = { Ib,0, "OUT%S %OAX,%i" }, -[0xe8] = { Iwds,0, "CALL %p" }, -[0xe9] = { Iwds,0, "JMP %p" }, -[0xea] = { PTR,0, "JMP %d" }, -[0xeb] = { Jbs,0, "JMP %p" }, -[0xec] = { 0,0, "INB DX,AL" }, -[0xed] = { 0,0, "IN%S DX,%OAX" }, -[0xee] = { 0,0, "OUTB AL,DX" }, -[0xef] = { 0,0, "OUT%S %OAX,DX" }, -[0xf0] = { PRE,0, "LOCK" }, -[0xf2] = { OPRE,0, "REPNE" }, -[0xf3] = { OPRE,0, "REP" }, -[0xf4] = { 0,0, "HLT" }, -[0xf5] = { 0,0, "CMC" }, -[0xf6] = { RMOPB,0, optabF6 }, -[0xf7] = { RMOP,0, optabF7 }, -[0xf8] = { 0,0, "CLC" }, -[0xf9] = { 0,0, "STC" }, -[0xfa] = { 0,0, "CLI" }, -[0xfb] = { 0,0, "STI" }, -[0xfc] = { 0,0, "CLD" }, -[0xfd] = { 0,0, "STD" }, -[0xfe] = { RMOPB,0, optabFE }, -[0xff] = { RMOP,0, optabFF }, -[0x100] = { RM,0, "MOVLQSX %e,%r" }, -[0x101] = { RM,0, "MOVLQZX %e,%r" }, -}; - -/* - * get a byte of the instruction - */ -static int -igetc(Map *map, Instr *ip, uchar *c) -{ - if(ip->n+1 > sizeof(ip->mem)){ - werrstr("instruction too long"); - return -1; - } - if (get1(map, ip->addr+ip->n, c, 1) < 0) { - werrstr("can't read instruction: %r"); - return -1; - } - ip->mem[ip->n++] = *c; - return 1; -} - -/* - * get two bytes of the instruction - */ -static int -igets(Map *map, Instr *ip, ushort *sp) -{ - uchar c; - ushort s; - - if (igetc(map, ip, &c) < 0) - return -1; - s = c; - if (igetc(map, ip, &c) < 0) - return -1; - s |= (c<<8); - *sp = s; - return 1; -} - -/* - * get 4 bytes of the instruction - */ -static int -igetl(Map *map, Instr *ip, uint32 *lp) -{ - ushort s; - int32 l; - - if (igets(map, ip, &s) < 0) - return -1; - l = s; - if (igets(map, ip, &s) < 0) - return -1; - l |= (s<<16); - *lp = l; - return 1; -} - -/* - * get 8 bytes of the instruction - * -static int -igetq(Map *map, Instr *ip, vlong *qp) -{ - uint32 l; - uvlong q; - - if (igetl(map, ip, &l) < 0) - return -1; - q = l; - if (igetl(map, ip, &l) < 0) - return -1; - q |= ((uvlong)l<<32); - *qp = q; - return 1; -} - */ - -static int -getdisp(Map *map, Instr *ip, int mod, int rm, int code, int pcrel) -{ - uchar c; - ushort s; - - if (mod > 2) - return 1; - if (mod == 1) { - if (igetc(map, ip, &c) < 0) - return -1; - if (c&0x80) - ip->disp = c|0xffffff00; - else - ip->disp = c&0xff; - } else if (mod == 2 || rm == code) { - if (ip->asize == 'E') { - if (igetl(map, ip, &ip->disp) < 0) - return -1; - if (mod == 0) - ip->rip = pcrel; - } else { - if (igets(map, ip, &s) < 0) - return -1; - if (s&0x8000) - ip->disp = s|0xffff0000; - else - ip->disp = s; - } - if (mod == 0) - ip->base = -1; - } - return 1; -} - -static int -modrm(Map *map, Instr *ip, uchar c) -{ - uchar rm, mod; - - mod = (c>>6)&3; - rm = c&7; - ip->mod = mod; - ip->base = rm; - ip->reg = (c>>3)&7; - ip->rip = 0; - if (mod == 3) /* register */ - return 1; - if (ip->asize == 0) { /* 16-bit mode */ - switch(rm) { - case 0: - ip->base = BX; ip->index = SI; - break; - case 1: - ip->base = BX; ip->index = DI; - break; - case 2: - ip->base = BP; ip->index = SI; - break; - case 3: - ip->base = BP; ip->index = DI; - break; - case 4: - ip->base = SI; - break; - case 5: - ip->base = DI; - break; - case 6: - ip->base = BP; - break; - case 7: - ip->base = BX; - break; - default: - break; - } - return getdisp(map, ip, mod, rm, 6, 0); - } - if (rm == 4) { /* scummy sib byte */ - if (igetc(map, ip, &c) < 0) - return -1; - ip->ss = (c>>6)&0x03; - ip->index = (c>>3)&0x07; - if (ip->index == 4) - ip->index = -1; - ip->base = c&0x07; - return getdisp(map, ip, mod, ip->base, 5, 0); - } - return getdisp(map, ip, mod, rm, 5, ip->amd64); -} - -static char * -_hexify(char *buf, uint32 p, int zeros) -{ - uint32 d; - - d = p/16; - if(d) - buf = _hexify(buf, d, zeros-1); - else - while(zeros--) - *buf++ = '0'; - *buf++ = "0123456789abcdef"[p&0x0f]; - return buf; -} - -static Optable * -mkinstr(Map *map, Instr *ip, uvlong pc, int is64) -{ - int i, n, norex; - uchar c; - ushort s; - Optable *op, *obase; - char buf[128]; - - memset(ip, 0, sizeof(*ip)); - norex = 1; - ip->base = -1; - ip->index = -1; - ip->osize = 'L'; - ip->asize = 'E'; - ip->amd64 = is64; - norex = 0; - ip->addr = pc; - if (igetc(map, ip, &c) < 0) - return 0; - obase = optable; -newop: - if(ip->amd64 && !norex){ - if(c >= 0x40 && c <= 0x4f) { - ip->rex = c; - if(igetc(map, ip, &c) < 0) - return 0; - } - if(c == 0x63){ - if(ip->rex&REXW) - op = &obase[0x100]; /* MOVLQSX */ - else - op = &obase[0x101]; /* MOVLQZX */ - goto hack; - } - } - if(obase == optable) - ip->op = c; - op = &obase[c]; -hack: - if (op->proto == 0) { -badop: - n = snprint(buf, sizeof(buf), "opcode: ??"); - for (i = 0; i < ip->n && n < sizeof(buf)-3; i++, n+=2) - _hexify(buf+n, ip->mem[i], 1); - strcpy(buf+n, "??"); - werrstr(buf); - return 0; - } - for(i = 0; i < 2 && op->operand[i]; i++) { - switch(op->operand[i]) { - case Ib: /* 8-bit immediate - (no sign extension)*/ - if (igetc(map, ip, &c) < 0) - return 0; - ip->imm = c&0xff; - ip->imm64 = ip->imm; - break; - case Jbs: /* 8-bit jump immediate (sign extended) */ - if (igetc(map, ip, &c) < 0) - return 0; - if (c&0x80) - ip->imm = c|0xffffff00; - else - ip->imm = c&0xff; - ip->imm64 = (int32)ip->imm; - ip->jumptype = Jbs; - break; - case Ibs: /* 8-bit immediate (sign extended) */ - if (igetc(map, ip, &c) < 0) - return 0; - if (c&0x80) - if (ip->osize == 'L') - ip->imm = c|0xffffff00; - else - ip->imm = c|0xff00; - else - ip->imm = c&0xff; - ip->imm64 = (int32)ip->imm; - break; - case Iw: /* 16-bit immediate -> imm */ - if (igets(map, ip, &s) < 0) - return 0; - ip->imm = s&0xffff; - ip->imm64 = ip->imm; - ip->jumptype = Iw; - break; - case Iw2: /* 16-bit immediate -> in imm2*/ - if (igets(map, ip, &s) < 0) - return 0; - ip->imm2 = s&0xffff; - break; - case Iwd: /* Operand-sized immediate (no sign extension unless 64 bits)*/ - if (ip->osize == 'L') { - if (igetl(map, ip, &ip->imm) < 0) - return 0; - ip->imm64 = ip->imm; - if(ip->rex&REXW && (ip->imm & (1<<31)) != 0) - ip->imm64 |= (vlong)~0 << 32; - } else { - if (igets(map, ip, &s)< 0) - return 0; - ip->imm = s&0xffff; - ip->imm64 = ip->imm; - } - break; - case Iwdq: /* Operand-sized immediate, possibly big */ - if (ip->osize == 'L') { - if (igetl(map, ip, &ip->imm) < 0) - return 0; - ip->imm64 = ip->imm; - if (ip->rex & REXW) { - uint32 l; - if (igetl(map, ip, &l) < 0) - return 0; - ip->imm64 |= (uvlong)l << 32; - } - } else { - if (igets(map, ip, &s)< 0) - return 0; - ip->imm = s&0xffff; - } - break; - case Awd: /* Address-sized immediate (no sign extension)*/ - if (ip->asize == 'E') { - if (igetl(map, ip, &ip->imm) < 0) - return 0; - /* TO DO: REX */ - } else { - if (igets(map, ip, &s)< 0) - return 0; - ip->imm = s&0xffff; - } - break; - case Iwds: /* Operand-sized immediate (sign extended) */ - if (ip->osize == 'L') { - if (igetl(map, ip, &ip->imm) < 0) - return 0; - } else { - if (igets(map, ip, &s)< 0) - return 0; - if (s&0x8000) - ip->imm = s|0xffff0000; - else - ip->imm = s&0xffff; - } - ip->jumptype = Iwds; - break; - case OA: /* literal 0x0a byte */ - if (igetc(map, ip, &c) < 0) - return 0; - if (c != 0x0a) - goto badop; - break; - case Op_R0: /* base register must be R0 */ - if (ip->base != 0) - goto badop; - break; - case Op_R1: /* base register must be R1 */ - if (ip->base != 1) - goto badop; - break; - case RMB: /* R/M field with byte register (/r)*/ - if (igetc(map, ip, &c) < 0) - return 0; - if (modrm(map, ip, c) < 0) - return 0; - ip->osize = 'B'; - break; - case RM: /* R/M field with register (/r) */ - if (igetc(map, ip, &c) < 0) - return 0; - if (modrm(map, ip, c) < 0) - return 0; - break; - case RMOPB: /* R/M field with op code (/digit) */ - if (igetc(map, ip, &c) < 0) - return 0; - if (modrm(map, ip, c) < 0) - return 0; - c = ip->reg; /* secondary op code */ - obase = (Optable*)op->proto; - ip->osize = 'B'; - goto newop; - case RMOP: /* R/M field with op code (/digit) */ - if (igetc(map, ip, &c) < 0) - return 0; - if (modrm(map, ip, c) < 0) - return 0; - obase = (Optable*)op->proto; - if(ip->amd64 && obase == optab0F01 && c == 0xF8) - return optab0F01F8; - c = ip->reg; - goto newop; - case FRMOP: /* FP R/M field with op code (/digit) */ - if (igetc(map, ip, &c) < 0) - return 0; - if (modrm(map, ip, c) < 0) - return 0; - if ((c&0xc0) == 0xc0) - c = ip->reg+8; /* 16 entry table */ - else - c = ip->reg; - obase = (Optable*)op->proto; - goto newop; - case FRMEX: /* Extended FP R/M field with op code (/digit) */ - if (igetc(map, ip, &c) < 0) - return 0; - if (modrm(map, ip, c) < 0) - return 0; - if ((c&0xc0) == 0xc0) - c = (c&0x3f)+8; /* 64-entry table */ - else - c = ip->reg; - obase = (Optable*)op->proto; - goto newop; - case RMR: /* R/M register only (mod = 11) */ - if (igetc(map, ip, &c) < 0) - return 0; - if ((c&0xc0) != 0xc0) { - werrstr("invalid R/M register: %#x", c); - return 0; - } - if (modrm(map, ip, c) < 0) - return 0; - break; - case RMM: /* R/M register only (mod = 11) */ - if (igetc(map, ip, &c) < 0) - return 0; - if ((c&0xc0) == 0xc0) { - werrstr("invalid R/M memory mode: %#x", c); - return 0; - } - if (modrm(map, ip, c) < 0) - return 0; - break; - case PTR: /* Seg:Displacement addr (ptr16:16 or ptr16:32) */ - if (ip->osize == 'L') { - if (igetl(map, ip, &ip->disp) < 0) - return 0; - } else { - if (igets(map, ip, &s)< 0) - return 0; - ip->disp = s&0xffff; - } - if (igets(map, ip, (ushort*)&ip->seg) < 0) - return 0; - ip->jumptype = PTR; - break; - case AUXMM: /* Multi-byte op code; prefix determines table selection */ - if (igetc(map, ip, &c) < 0) - return 0; - obase = (Optable*)op->proto; - switch (ip->opre) { - case 0x66: op = optab660F; break; - case 0xF2: op = optabF20F; break; - case 0xF3: op = optabF30F; break; - default: op = nil; break; - } - if(op != nil && op[c].proto != nil) - obase = op; - norex = 1; /* no more rex prefixes */ - /* otherwise the optab entry captures it */ - goto newop; - case AUX: /* Multi-byte op code - Auxiliary table */ - obase = (Optable*)op->proto; - if (igetc(map, ip, &c) < 0) - return 0; - goto newop; - case OPRE: /* Instr Prefix or media op */ - ip->opre = c; - /* fall through */ - case PRE: /* Instr Prefix */ - ip->prefix = (char*)op->proto; - if (igetc(map, ip, &c) < 0) - return 0; - if (ip->opre && c == 0x0F) - ip->prefix = 0; - goto newop; - case SEG: /* Segment Prefix */ - ip->segment = (char*)op->proto; - if (igetc(map, ip, &c) < 0) - return 0; - goto newop; - case OPOVER: /* Operand size override */ - ip->opre = c; - ip->osize = 'W'; - if (igetc(map, ip, &c) < 0) - return 0; - if (c == 0x0F) - ip->osize = 'L'; - else if (ip->amd64 && (c&0xF0) == 0x40) - ip->osize = 'Q'; - goto newop; - case ADDOVER: /* Address size override */ - ip->asize = 0; - if (igetc(map, ip, &c) < 0) - return 0; - goto newop; - case JUMP: /* mark instruction as JUMP or RET */ - case RET: - ip->jumptype = op->operand[i]; - break; - default: - werrstr("bad operand type %d", op->operand[i]); - return 0; - } - } - return op; -} - -static void -bprint(Instr *ip, char *fmt, ...) -{ - va_list arg; - - va_start(arg, fmt); - ip->curr = vseprint(ip->curr, ip->end, fmt, arg); - va_end(arg); -} - -/* - * if we want to call 16 bit regs AX,BX,CX,... - * and 32 bit regs EAX,EBX,ECX,... then - * change the defs of ANAME and ONAME to: - * #define ANAME(ip) ((ip->asize == 'E' ? "E" : "") - * #define ONAME(ip) ((ip)->osize == 'L' ? "E" : "") - */ -#define ANAME(ip) "" -#define ONAME(ip) "" - -static char *reg[] = { -[AX] = "AX", -[CX] = "CX", -[DX] = "DX", -[BX] = "BX", -[SP] = "SP", -[BP] = "BP", -[SI] = "SI", -[DI] = "DI", - - /* amd64 */ -[AMD64_R8] = "R8", -[AMD64_R9] = "R9", -[AMD64_R10] = "R10", -[AMD64_R11] = "R11", -[AMD64_R12] = "R12", -[AMD64_R13] = "R13", -[AMD64_R14] = "R14", -[AMD64_R15] = "R15", -}; - -static char *breg[] = { "AL", "CL", "DL", "BL", "AH", "CH", "DH", "BH" }; -static char *breg64[] = { "AL", "CL", "DL", "BL", "SPB", "BPB", "SIB", "DIB", - "R8B", "R9B", "R10B", "R11B", "R12B", "R13B", "R14B", "R15B" }; -static char *sreg[] = { "ES", "CS", "SS", "DS", "FS", "GS" }; - -static void -immediate(Instr *ip, vlong val) -{ - // TODO: Translate known names. - if((ip->rex & REXW) == 0) - bprint(ip, "%#lux", (long)val); - else - bprint(ip, "%#llux", val); -} - -static void -pea(Instr *ip) -{ - int base; - - base = ip->base; - if(base >= 0 && (ip->rex & REXB)) - base += 8; - - if (ip->mod == 3) { - if (ip->osize == 'B') - bprint(ip, (ip->rex & REXB? breg64: breg)[(uchar)ip->base]); - else - bprint(ip, "%s%s", ANAME(ip), reg[base]); - return; - } - - if (ip->segment) - bprint(ip, ip->segment); - if (1) { - if (ip->base < 0) - immediate(ip, ip->disp); - else { - bprint(ip, "%#ux", ip->disp); - if(ip->rip) - bprint(ip, "(RIP)"); - bprint(ip,"(%s%s)", ANAME(ip), reg[ip->rex&REXB? ip->base+8: ip->base]); - } - } - if (ip->index >= 0) - bprint(ip,"(%s%s*%d)", ANAME(ip), reg[ip->rex&REXX? ip->index+8: ip->index], 1<ss); -} - -static void -prinstr(Instr *ip, char *fmt) -{ - int sharp, i; - vlong v; - - if (ip->prefix) - bprint(ip, "%s ", ip->prefix); - for (; *fmt && ip->curr < ip->end; fmt++) { - if (*fmt != '%'){ - *ip->curr++ = *fmt; - continue; - } - sharp = 0; - if(*++fmt == '#') { - sharp = 1; - ++fmt; - } - switch(*fmt){ - case '%': - *ip->curr++ = '%'; - break; - case 'A': - bprint(ip, "%s", ANAME(ip)); - break; - case 'C': - bprint(ip, "CR%d", ip->reg); - break; - case 'D': - if (ip->reg < 4 || ip->reg == 6 || ip->reg == 7) - bprint(ip, "DR%d",ip->reg); - else - bprint(ip, "???"); - break; - case 'I': - bprint(ip, "$"); - immediate(ip, ip->imm2); - break; - case 'O': - bprint(ip,"%s", ONAME(ip)); - break; - case 'o': - i = ip->op & 7; - if(ip->rex & REXB) - i += 8; - bprint(ip, "%s", reg[i]); - break; - case 'i': - if(!sharp) - bprint(ip, "$"); - v = ip->imm; - if(ip->rex & REXW) - v = ip->imm64; - immediate(ip, v); - break; - case 'R': - bprint(ip, "%s%s", ONAME(ip), reg[ip->rex&REXR? ip->reg+8: ip->reg]); - break; - case 'S': - if(ip->osize == 'Q' || (ip->osize == 'L' && ip->rex & REXW)) - bprint(ip, "Q"); - else - bprint(ip, "%c", ip->osize); - break; - case 's': - if(ip->opre == 0 || ip->opre == 0x66) - bprint(ip, "P"); - else - bprint(ip, "S"); - if(ip->opre == 0xf2 || ip->opre == 0x66) - bprint(ip, "D"); - else - bprint(ip, "S"); - break; - case 'T': - if (ip->reg == 6 || ip->reg == 7) - bprint(ip, "TR%d",ip->reg); - else - bprint(ip, "???"); - break; - case 'W': - if (ip->osize == 'Q' || (ip->osize == 'L' && ip->rex & REXW)) - bprint(ip, "CDQE"); - else if (ip->osize == 'L') - bprint(ip,"CWDE"); - else - bprint(ip, "CBW"); - break; - case 'd': - bprint(ip,"%#ux:%#ux", ip->seg, ip->disp); - break; - case 'm': - if (ip->mod == 3 && ip->osize != 'B') { - if(fmt[1] != '*'){ - if(ip->opre != 0) { - bprint(ip, "X%d", ip->rex&REXB? ip->base+8: ip->base); - break; - } - } else - fmt++; - bprint(ip, "M%d", ip->base); - break; - } - pea(ip); - break; - case 'e': - pea(ip); - break; - case 'f': - bprint(ip, "F%d", ip->base); - break; - case 'g': - if (ip->reg < 6) - bprint(ip,"%s",sreg[ip->reg]); - else - bprint(ip,"???"); - break; - case 'p': - /* - * signed immediate in the uint32 ip->imm. - */ - v = (int32)ip->imm; - immediate(ip, v+ip->addr+ip->n); - break; - case 'r': - if (ip->osize == 'B') - bprint(ip,"%s", (ip->rex? breg64: breg)[ip->rex&REXR? ip->reg+8: ip->reg]); - else - bprint(ip, reg[ip->rex&REXR? ip->reg+8: ip->reg]); - break; - case 'w': - if (ip->osize == 'Q' || ip->rex & REXW) - bprint(ip, "CQO"); - else if (ip->osize == 'L') - bprint(ip,"CDQ"); - else - bprint(ip, "CWD"); - break; - case 'M': - if(ip->opre != 0) - bprint(ip, "X%d", ip->rex&REXR? ip->reg+8: ip->reg); - else - bprint(ip, "M%d", ip->reg); - break; - case 'x': - if (ip->mod == 3 && ip->osize != 'B') { - bprint(ip, "X%d", ip->rex&REXB? ip->base+8: ip->base); - break; - } - pea(ip); - break; - case 'X': - bprint(ip, "X%d", ip->rex&REXR? ip->reg+8: ip->reg); - break; - default: - bprint(ip, "%%%c", *fmt); - break; - } - } - *ip->curr = 0; /* there's always room for 1 byte */ -} - -static int -i386inst(Map *map, uvlong pc, int is64, char modifier, char *buf, int n) -{ - Instr instr; - Optable *op; - - USED(modifier); - op = mkinstr(map, &instr, pc, is64); - if (op == 0) - return -1; - instr.curr = buf; - instr.end = buf+n-1; - prinstr(&instr, op->proto); - return instr.n; -} - -/* -static int -i386das(Map *map, uvlong pc, char *buf, int n) -{ - Instr instr; - int i; - - if (mkinstr(map, &instr, pc) == 0) { - errstr(buf, n); - return -1; - } - for(i = 0; i < instr.n && n > 2; i++) { - _hexify(buf, instr.mem[i], 1); - buf += 2; - n -= 2; - } - *buf = 0; - return instr.n; -} - -static int -i386instlen(Map *map, uvlong pc) -{ - Instr i; - - if (mkinstr(map, &i, pc)) - return i.n; - return -1; -} -*/ - -static int -getmem(Map *m, uvlong addr, uchar *dst, int ndst) -{ - uchar *p; - - p = m->startp + (addr - m->startpc); - if(p < m->p || p >= m->ep || m->ep - p < ndst) { - werrstr("out of bounds"); - return -1; - } - memmove(dst, p, ndst); - return ndst; -} - -int -x86disasm(uchar *p, uchar *end, uvlong pc, int is64, char *buf, int n) -{ - Map m; - - m.p = p; - m.ep = end; - m.startp = p; - m.startpc = pc; - m.get1 = getmem; - return i386inst(&m, pc, is64, 0, buf, n); -} - -void -usage(void) -{ - fprint(2, "usage: libmach8db file\n"); - exits("usage"); -} - -void -main(int argc, char **argv) -{ - uchar data[10000], *p, *ep; - int fd, n, eof, addr, is64; - Biobuf bstdout; - char buf[1000]; - - fmtinstall('H', encodefmt); - - is64 = 0; - ARGBEGIN{ - case '8': - is64 = 0; - break; - case '6': - is64 = 1; - break; - default: - usage(); - }ARGEND - - if(argc != 1) - usage(); - - fd = open(argv[0], OREAD); - if(fd < 0) - sysfatal("open %s: %r", argv[0]); - - Binit(&bstdout, 1, OWRITE); - p = data; - ep = data; - eof = 0; - addr = 0; - for(;;) { - if(!eof && ep-p < 64) { - memmove(data, p, ep-p); - ep = data + (ep-p); - p = data; - n = readn(fd, ep, data+sizeof data-ep); - if(n <= 0) - eof = 1; - else - ep += n; - } - if(p == ep) - break; - n = x86disasm(p, ep, addr, is64, buf, sizeof buf); - if(n < 0) { - Bprint(&bstdout, "0x%x %.*H error: %r\n", addr, 1, p); - n = 1; - } else { - Bprint(&bstdout, "0x%x %.*H %s\n", addr, n, p, buf); - } - addr += n; - p += n; - } - Bflush(&bstdout); - exits(0); -} diff --git a/src/cmd/vendor/golang.org/x/arch/x86/x86asm/xed_test.go b/src/cmd/vendor/golang.org/x/arch/x86/x86asm/xed_test.go deleted file mode 100644 index 91cf8227273cbd..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/x86/x86asm/xed_test.go +++ /dev/null @@ -1,211 +0,0 @@ -// Copyright 2014 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. - -package x86asm - -import ( - "bytes" - "strings" - "testing" -) - -func TestXed32Manual(t *testing.T) { testXed32(t, hexCases(t, xedManualTests)) } -func TestXed32Testdata(t *testing.T) { testXed32(t, concat(basicPrefixes, testdataCases(t))) } -func TestXed32ModRM(t *testing.T) { testXed32(t, concat(basicPrefixes, enumModRM)) } -func TestXed32OneByte(t *testing.T) { testBasic(t, testXed32) } -func TestXed320F(t *testing.T) { testBasic(t, testXed32, 0x0F) } -func TestXed320F38(t *testing.T) { testBasic(t, testXed32, 0x0F, 0x38) } -func TestXed320F3A(t *testing.T) { testBasic(t, testXed32, 0x0F, 0x3A) } -func TestXed32Prefix(t *testing.T) { testPrefix(t, testXed32) } - -func TestXed64Manual(t *testing.T) { testXed64(t, hexCases(t, xedManualTests)) } -func TestXed64Testdata(t *testing.T) { testXed64(t, concat(basicPrefixes, testdataCases(t))) } -func TestXed64ModRM(t *testing.T) { testXed64(t, concat(basicPrefixes, enumModRM)) } -func TestXed64OneByte(t *testing.T) { testBasic(t, testXed64) } -func TestXed640F(t *testing.T) { testBasic(t, testXed64, 0x0F) } -func TestXed640F38(t *testing.T) { testBasic(t, testXed64, 0x0F, 0x38) } -func TestXed640F3A(t *testing.T) { testBasic(t, testXed64, 0x0F, 0x3A) } -func TestXed64Prefix(t *testing.T) { testPrefix(t, testXed64) } - -func TestXed64REXTestdata(t *testing.T) { - testXed64(t, filter(concat3(basicPrefixes, rexPrefixes, testdataCases(t)), isValidREX)) -} -func TestXed64REXModRM(t *testing.T) { testXed64(t, concat3(basicPrefixes, rexPrefixes, enumModRM)) } -func TestXed64REXOneByte(t *testing.T) { testBasicREX(t, testXed64) } -func TestXed64REX0F(t *testing.T) { testBasicREX(t, testXed64, 0x0F) } -func TestXed64REX0F38(t *testing.T) { testBasicREX(t, testXed64, 0x0F, 0x38) } -func TestXed64REX0F3A(t *testing.T) { testBasicREX(t, testXed64, 0x0F, 0x3A) } -func TestXed64REXPrefix(t *testing.T) { testPrefixREX(t, testXed64) } - -// xedManualTests holds test cases that will be run by TestXedManual32 and TestXedManual64. -// If you are debugging a few cases that turned up in a longer run, it can be useful -// to list them here and then use -run=XedManual, particularly with tracing enabled. -var xedManualTests = ` -6690 -` - -// allowedMismatchXed reports whether the mismatch between text and dec -// should be allowed by the test. -func allowedMismatchXed(text string, size int, inst *Inst, dec ExtInst) bool { - if (contains(text, "error:") || isPrefix(text) && size == 1) && contains(dec.text, "GENERAL_ERROR", "INSTR_TOO_LONG", "BAD_LOCK_PREFIX") { - return true - } - - if contains(dec.text, "BAD_LOCK_PREFIX") && countExactPrefix(inst, PrefixLOCK|PrefixInvalid) > 0 { - return true - } - - if contains(dec.text, "BAD_LOCK_PREFIX", "GENERAL_ERROR") && countExactPrefix(inst, PrefixLOCK|PrefixImplicit) > 0 { - return true - } - - if text == "lock" && size == 1 && contains(dec.text, "BAD_LOCK_PREFIX") { - return true - } - - // Instructions not known to us. - if (contains(text, "error:") || isPrefix(text) && size == 1) && contains(dec.text, unsupported...) { - return true - } - - // Instructions not known to xed. - if contains(text, xedUnsupported...) && contains(dec.text, "ERROR") { - return true - } - - if (contains(text, "error:") || isPrefix(text) && size == 1) && contains(dec.text, "shl ") && (inst.Opcode>>16)&0xEC38 == 0xC030 { - return true - } - - // 82 11 22: xed says 'adc byte ptr [ecx], 0x22' but there is no justification in the manuals for that. - // C0 30 11: xed says 'shl byte ptr [eax], 0x11' but there is no justification in the manuals for that. - // F6 08 11: xed says 'test byte ptr [eax], 0x11' but there is no justification in the manuals for that. - if (contains(text, "error:") || isPrefix(text) && size == 1) && hasByte(dec.enc[:dec.nenc], 0x82, 0xC0, 0xC1, 0xD0, 0xD1, 0xD2, 0xD3, 0xF6, 0xF7) { - return true - } - - // F3 11 22 and many others: xed allows and drops misused rep/repn prefix. - if (text == "rep" && dec.enc[0] == 0xF3 || (text == "repn" || text == "repne") && dec.enc[0] == 0xF2) && (!contains(dec.text, "ins", "outs", "movs", "lods", "cmps", "scas") || contains(dec.text, "xmm")) { - return true - } - - // 0F C7 30: xed says vmptrld qword ptr [eax]; we say rdrand eax. - // TODO(rsc): Fix, since we are probably wrong, but we don't have vmptrld in the manual. - if contains(text, "rdrand") && contains(dec.text, "vmptrld", "vmxon", "vmclear") { - return true - } - - // F3 0F AE 00: we say 'rdfsbase dword ptr [eax]' but RDFSBASE needs a register. - // Also, this is a 64-bit only instruction. - // TODO(rsc): Fix to reject this encoding. - if contains(text, "rdfsbase", "rdgsbase", "wrfsbase", "wrgsbase") && contains(dec.text, "ERROR") { - return true - } - - // 0F 01 F8: we say swapgs but that's only valid in 64-bit mode. - // TODO(rsc): Fix. - if contains(text, "swapgs") { - return true - } - - // 0F 24 11: 'mov ecx, tr2' except there is no TR2. - // Or maybe the MOV to TR registers doesn't use RMF. - if contains(text, "cr1", "cr5", "cr6", "cr7", "tr0", "tr1", "tr2", "tr3", "tr4", "tr5", "tr6", "tr7") && contains(dec.text, "ERROR") { - return true - } - - // 0F 19 11, 0F 1C 11, 0F 1D 11, 0F 1E 11, 0F 1F 11: xed says nop, - // but the Intel manuals say that the only NOP there is 0F 1F /0. - // Perhaps xed is reporting an older encoding. - if (contains(text, "error:") || isPrefix(text) && size == 1) && contains(dec.text, "nop ") && (inst.Opcode>>8)&0xFFFF38 != 0x0F1F00 { - return true - } - - // 66 0F AE 38: clflushopt but we only know clflush - if contains(text, "clflush") && contains(dec.text, "clflushopt") { - return true - } - - // 0F 20 04 11: MOV SP, CR0 but has mod!=3 despite register argument. - // (This encoding ignores the mod bits.) The decoder sees the non-register - // mod and reads farther ahead to decode the memory reference that - // isn't really there, causing the size to be too large. - // TODO(rsc): Fix. - if text == dec.text && size > dec.nenc && contains(text, " cr", " dr", " tr") { - return true - } - - // 0F AE E9: xed says lfence, which is wrong (only 0F AE E8 is lfence). And so on. - if contains(dec.text, "fence") && hasByte(dec.enc[:dec.nenc], 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF) { - return true - } - - // DD C9, DF C9: xed says 'fxch st0, st1' but that instruction is D9 C9. - if (contains(text, "error:") || isPrefix(text) && size == 1) && contains(dec.text, "fxch ") && hasByte(dec.enc[:dec.nenc], 0xDD, 0xDF) { - return true - } - - // DC D4: xed says 'fcom st0, st4' but that instruction is D8 D4. - if (contains(text, "error:") || isPrefix(text) && size == 1) && contains(dec.text, "fcom ") && hasByte(dec.enc[:dec.nenc], 0xD8, 0xDC) { - return true - } - - // DE D4: xed says 'fcomp st0, st4' but that instruction is D8 D4. - if (contains(text, "error:") || isPrefix(text) && size == 1) && contains(dec.text, "fcomp ") && hasByte(dec.enc[:dec.nenc], 0xDC, 0xDE) { - return true - } - - // DF D4: xed says 'fstp st4, st0' but that instruction is DD D4. - if (contains(text, "error:") || isPrefix(text) && size == 1) && contains(dec.text, "fstp ") && hasByte(dec.enc[:dec.nenc], 0xDF) { - return true - } - - return false -} - -func countExactPrefix(inst *Inst, target Prefix) int { - n := 0 - for _, p := range inst.Prefix { - if p == target { - n++ - } - } - return n -} - -func hasByte(src []byte, target ...byte) bool { - for _, b := range target { - if bytes.IndexByte(src, b) >= 0 { - return true - } - } - return false -} - -// Instructions known to us but not to xed. -var xedUnsupported = strings.Fields(` - xrstor - xsave - xsave - ud1 - xgetbv - xsetbv - fxsave - fxrstor - clflush - lfence - mfence - sfence - rsqrtps - rcpps - emms - ldmxcsr - stmxcsr - movhpd - movnti - rdrand - movbe - movlpd - sysret -`) diff --git a/src/cmd/vendor/golang.org/x/arch/x86/x86asm/xedext_test.go b/src/cmd/vendor/golang.org/x/arch/x86/x86asm/xedext_test.go deleted file mode 100644 index e27cdc07c4b638..00000000000000 --- a/src/cmd/vendor/golang.org/x/arch/x86/x86asm/xedext_test.go +++ /dev/null @@ -1,205 +0,0 @@ -package x86asm - -import ( - "bytes" - "fmt" - "io" - "log" - "os" - "strconv" - "strings" - "testing" -) - -// xed binary from Intel sde-external-6.22.0-2014-03-06. -const xedPath = "/Users/rsc/bin/xed" - -func testXedArch(t *testing.T, arch int, generate func(func([]byte))) { - if testing.Short() { - t.Skip("skipping xed test in short mode") - } - if _, err := os.Stat(xedPath); err != nil { - t.Skip(err) - } - - testExtDis(t, "intel", arch, xed, generate, allowedMismatchXed) -} - -func testXed32(t *testing.T, generate func(func([]byte))) { - testXedArch(t, 32, generate) -} - -func testXed64(t *testing.T, generate func(func([]byte))) { - testXedArch(t, 64, generate) -} - -func xed(ext *ExtDis) error { - b, err := ext.Run(xedPath, fmt.Sprintf("-%d", ext.Arch), "-n", "1G", "-ir", ext.File.Name()) - if err != nil { - return err - } - - nmatch := 0 - next := uint32(start) - var ( - addr uint32 - encbuf [32]byte - enc []byte - text string - ) - - var xedEnd = []byte("# end of text section") - var xedEnd1 = []byte("# Errors") - - eof := false - for { - line, err := b.ReadSlice('\n') - if err != nil { - if err == io.EOF { - break - } - return fmt.Errorf("reading objdump output: %v", err) - } - if debug { - os.Stdout.Write(line) - } - if bytes.HasPrefix(line, xedEnd) || bytes.HasPrefix(line, xedEnd1) { - eof = true - } - if eof { - continue - } - nmatch++ - addr, enc, text = parseLineXed(line, encbuf[:0]) - if addr > next { - return fmt.Errorf("address out of sync expected <= %#x at %q in:\n%s", next, line, line) - } - if addr < next { - continue - } - switch text { - case "repz": - text = "rep" - case "repnz": - text = "repn" - default: - text = strings.Replace(text, "repz ", "rep ", -1) - text = strings.Replace(text, "repnz ", "repn ", -1) - } - if m := pcrelw.FindStringSubmatch(text); m != nil { - targ, _ := strconv.ParseUint(m[2], 16, 64) - text = fmt.Sprintf("%s .%+#x", m[1], int16(uint32(targ)-uint32(uint16(addr))-uint32(len(enc)))) - } - if m := pcrel.FindStringSubmatch(text); m != nil { - targ, _ := strconv.ParseUint(m[2], 16, 64) - text = fmt.Sprintf("%s .%+#x", m[1], int32(uint32(targ)-addr-uint32(len(enc)))) - } - ext.Dec <- ExtInst{addr, encbuf, len(enc), text} - encbuf = [32]byte{} - enc = nil - next += 32 - } - if next != start+uint32(ext.Size) { - return fmt.Errorf("not enough results found [%d %d]", next, start+ext.Size) - } - if err := ext.Wait(); err != nil { - return fmt.Errorf("exec: %v", err) - } - - return nil -} - -var ( - xedInRaw = []byte("In raw...") - xedDots = []byte("...") - xdis = []byte("XDIS ") - xedError = []byte("ERROR: ") - xedNoDecode = []byte("Could not decode at offset: 0x") -) - -func parseLineXed(line []byte, encstart []byte) (addr uint32, enc []byte, text string) { - oline := line - if bytes.HasPrefix(line, xedInRaw) || bytes.HasPrefix(line, xedDots) { - return 0, nil, "" - } - if bytes.HasPrefix(line, xedError) { - i := bytes.IndexByte(line[len(xedError):], ' ') - if i < 0 { - log.Fatalf("cannot parse error: %q", oline) - } - errstr := string(line[len(xedError):]) - i = bytes.Index(line, xedNoDecode) - if i < 0 { - log.Fatalf("cannot parse error: %q", oline) - } - i += len(xedNoDecode) - j := bytes.IndexByte(line[i:], ' ') - if j < 0 { - log.Fatalf("cannot parse error: %q", oline) - } - x, err := strconv.ParseUint(string(trimSpace(line[i:i+j])), 16, 32) - if err != nil { - log.Fatalf("cannot parse disassembly: %q", oline) - } - addr = uint32(x) - return addr, nil, errstr - } - - if !bytes.HasPrefix(line, xdis) { - log.Fatalf("cannot parse disassembly: %q", oline) - } - - i := bytes.IndexByte(line, ':') - if i < 0 { - log.Fatalf("cannot parse disassembly: %q", oline) - } - x, err := strconv.ParseUint(string(trimSpace(line[len(xdis):i])), 16, 32) - if err != nil { - log.Fatalf("cannot parse disassembly: %q", oline) - } - addr = uint32(x) - - // spaces - i++ - for i < len(line) && line[i] == ' ' { - i++ - } - // instruction class, spaces - for i < len(line) && line[i] != ' ' { - i++ - } - for i < len(line) && line[i] == ' ' { - i++ - } - // instruction set, spaces - for i < len(line) && line[i] != ' ' { - i++ - } - for i < len(line) && line[i] == ' ' { - i++ - } - - // hex - hexStart := i - for i < len(line) && line[i] != ' ' { - i++ - } - hexEnd := i - for i < len(line) && line[i] == ' ' { - i++ - } - - // text - textStart := i - for i < len(line) && line[i] != '\n' { - i++ - } - textEnd := i - - enc, ok := parseHex(line[hexStart:hexEnd], encstart) - if !ok { - log.Fatalf("cannot parse disassembly: %q", oline) - } - - return addr, enc, string(fixSpace(line[textStart:textEnd])) -} diff --git a/src/cmd/vendor/golang.org/x/crypto/ssh/terminal/terminal_test.go b/src/cmd/vendor/golang.org/x/crypto/ssh/terminal/terminal_test.go deleted file mode 100644 index d9b77c1c5efda6..00000000000000 --- a/src/cmd/vendor/golang.org/x/crypto/ssh/terminal/terminal_test.go +++ /dev/null @@ -1,358 +0,0 @@ -// Copyright 2011 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. - -// +build darwin dragonfly freebsd linux,!appengine netbsd openbsd windows plan9 solaris - -package terminal - -import ( - "bytes" - "io" - "os" - "runtime" - "testing" -) - -type MockTerminal struct { - toSend []byte - bytesPerRead int - received []byte -} - -func (c *MockTerminal) Read(data []byte) (n int, err error) { - n = len(data) - if n == 0 { - return - } - if n > len(c.toSend) { - n = len(c.toSend) - } - if n == 0 { - return 0, io.EOF - } - if c.bytesPerRead > 0 && n > c.bytesPerRead { - n = c.bytesPerRead - } - copy(data, c.toSend[:n]) - c.toSend = c.toSend[n:] - return -} - -func (c *MockTerminal) Write(data []byte) (n int, err error) { - c.received = append(c.received, data...) - return len(data), nil -} - -func TestClose(t *testing.T) { - c := &MockTerminal{} - ss := NewTerminal(c, "> ") - line, err := ss.ReadLine() - if line != "" { - t.Errorf("Expected empty line but got: %s", line) - } - if err != io.EOF { - t.Errorf("Error should have been EOF but got: %s", err) - } -} - -var keyPressTests = []struct { - in string - line string - err error - throwAwayLines int -}{ - { - err: io.EOF, - }, - { - in: "\r", - line: "", - }, - { - in: "foo\r", - line: "foo", - }, - { - in: "a\x1b[Cb\r", // right - line: "ab", - }, - { - in: "a\x1b[Db\r", // left - line: "ba", - }, - { - in: "a\177b\r", // backspace - line: "b", - }, - { - in: "\x1b[A\r", // up - }, - { - in: "\x1b[B\r", // down - }, - { - in: "line\x1b[A\x1b[B\r", // up then down - line: "line", - }, - { - in: "line1\rline2\x1b[A\r", // recall previous line. - line: "line1", - throwAwayLines: 1, - }, - { - // recall two previous lines and append. - in: "line1\rline2\rline3\x1b[A\x1b[Axxx\r", - line: "line1xxx", - throwAwayLines: 2, - }, - { - // Ctrl-A to move to beginning of line followed by ^K to kill - // line. - in: "a b \001\013\r", - line: "", - }, - { - // Ctrl-A to move to beginning of line, Ctrl-E to move to end, - // finally ^K to kill nothing. - in: "a b \001\005\013\r", - line: "a b ", - }, - { - in: "\027\r", - line: "", - }, - { - in: "a\027\r", - line: "", - }, - { - in: "a \027\r", - line: "", - }, - { - in: "a b\027\r", - line: "a ", - }, - { - in: "a b \027\r", - line: "a ", - }, - { - in: "one two thr\x1b[D\027\r", - line: "one two r", - }, - { - in: "\013\r", - line: "", - }, - { - in: "a\013\r", - line: "a", - }, - { - in: "ab\x1b[D\013\r", - line: "a", - }, - { - in: "Ξεσκεπάζω\r", - line: "Ξεσκεπάζω", - }, - { - in: "£\r\x1b[A\177\r", // non-ASCII char, enter, up, backspace. - line: "", - throwAwayLines: 1, - }, - { - in: "£\r££\x1b[A\x1b[B\177\r", // non-ASCII char, enter, 2x non-ASCII, up, down, backspace, enter. - line: "£", - throwAwayLines: 1, - }, - { - // Ctrl-D at the end of the line should be ignored. - in: "a\004\r", - line: "a", - }, - { - // a, b, left, Ctrl-D should erase the b. - in: "ab\x1b[D\004\r", - line: "a", - }, - { - // a, b, c, d, left, left, ^U should erase to the beginning of - // the line. - in: "abcd\x1b[D\x1b[D\025\r", - line: "cd", - }, - { - // Bracketed paste mode: control sequences should be returned - // verbatim in paste mode. - in: "abc\x1b[200~de\177f\x1b[201~\177\r", - line: "abcde\177", - }, - { - // Enter in bracketed paste mode should still work. - in: "abc\x1b[200~d\refg\x1b[201~h\r", - line: "efgh", - throwAwayLines: 1, - }, - { - // Lines consisting entirely of pasted data should be indicated as such. - in: "\x1b[200~a\r", - line: "a", - err: ErrPasteIndicator, - }, -} - -func TestKeyPresses(t *testing.T) { - for i, test := range keyPressTests { - for j := 1; j < len(test.in); j++ { - c := &MockTerminal{ - toSend: []byte(test.in), - bytesPerRead: j, - } - ss := NewTerminal(c, "> ") - for k := 0; k < test.throwAwayLines; k++ { - _, err := ss.ReadLine() - if err != nil { - t.Errorf("Throwaway line %d from test %d resulted in error: %s", k, i, err) - } - } - line, err := ss.ReadLine() - if line != test.line { - t.Errorf("Line resulting from test %d (%d bytes per read) was '%s', expected '%s'", i, j, line, test.line) - break - } - if err != test.err { - t.Errorf("Error resulting from test %d (%d bytes per read) was '%v', expected '%v'", i, j, err, test.err) - break - } - } - } -} - -func TestPasswordNotSaved(t *testing.T) { - c := &MockTerminal{ - toSend: []byte("password\r\x1b[A\r"), - bytesPerRead: 1, - } - ss := NewTerminal(c, "> ") - pw, _ := ss.ReadPassword("> ") - if pw != "password" { - t.Fatalf("failed to read password, got %s", pw) - } - line, _ := ss.ReadLine() - if len(line) > 0 { - t.Fatalf("password was saved in history") - } -} - -var setSizeTests = []struct { - width, height int -}{ - {40, 13}, - {80, 24}, - {132, 43}, -} - -func TestTerminalSetSize(t *testing.T) { - for _, setSize := range setSizeTests { - c := &MockTerminal{ - toSend: []byte("password\r\x1b[A\r"), - bytesPerRead: 1, - } - ss := NewTerminal(c, "> ") - ss.SetSize(setSize.width, setSize.height) - pw, _ := ss.ReadPassword("Password: ") - if pw != "password" { - t.Fatalf("failed to read password, got %s", pw) - } - if string(c.received) != "Password: \r\n" { - t.Errorf("failed to set the temporary prompt expected %q, got %q", "Password: ", c.received) - } - } -} - -func TestReadPasswordLineEnd(t *testing.T) { - var tests = []struct { - input string - want string - }{ - {"\n", ""}, - {"\r\n", ""}, - {"test\r\n", "test"}, - {"testtesttesttes\n", "testtesttesttes"}, - {"testtesttesttes\r\n", "testtesttesttes"}, - {"testtesttesttesttest\n", "testtesttesttesttest"}, - {"testtesttesttesttest\r\n", "testtesttesttesttest"}, - } - for _, test := range tests { - buf := new(bytes.Buffer) - if _, err := buf.WriteString(test.input); err != nil { - t.Fatal(err) - } - - have, err := readPasswordLine(buf) - if err != nil { - t.Errorf("readPasswordLine(%q) failed: %v", test.input, err) - continue - } - if string(have) != test.want { - t.Errorf("readPasswordLine(%q) returns %q, but %q is expected", test.input, string(have), test.want) - continue - } - - if _, err = buf.WriteString(test.input); err != nil { - t.Fatal(err) - } - have, err = readPasswordLine(buf) - if err != nil { - t.Errorf("readPasswordLine(%q) failed: %v", test.input, err) - continue - } - if string(have) != test.want { - t.Errorf("readPasswordLine(%q) returns %q, but %q is expected", test.input, string(have), test.want) - continue - } - } -} - -func TestMakeRawState(t *testing.T) { - fd := int(os.Stdout.Fd()) - if !IsTerminal(fd) { - t.Skip("stdout is not a terminal; skipping test") - } - - st, err := GetState(fd) - if err != nil { - t.Fatalf("failed to get terminal state from GetState: %s", err) - } - - if runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64") { - t.Skip("MakeRaw not allowed on iOS; skipping test") - } - - defer Restore(fd, st) - raw, err := MakeRaw(fd) - if err != nil { - t.Fatalf("failed to get terminal state from MakeRaw: %s", err) - } - - if *st != *raw { - t.Errorf("states do not match; was %v, expected %v", raw, st) - } -} - -func TestOutputNewlines(t *testing.T) { - // \n should be changed to \r\n in terminal output. - buf := new(bytes.Buffer) - term := NewTerminal(buf, ">") - - term.Write([]byte("1\n2\n")) - output := string(buf.Bytes()) - const expected = "1\r\n2\r\n" - - if output != expected { - t.Errorf("incorrect output: was %q, expected %q", output, expected) - } -} diff --git a/src/cmd/vendor/golang.org/x/sys/unix/creds_test.go b/src/cmd/vendor/golang.org/x/sys/unix/creds_test.go deleted file mode 100644 index 1b5083196a40cf..00000000000000 --- a/src/cmd/vendor/golang.org/x/sys/unix/creds_test.go +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright 2012 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. - -// +build linux - -package unix_test - -import ( - "bytes" - "go/build" - "net" - "os" - "testing" - - "golang.org/x/sys/unix" -) - -// TestSCMCredentials tests the sending and receiving of credentials -// (PID, UID, GID) in an ancillary message between two UNIX -// sockets. The SO_PASSCRED socket option is enabled on the sending -// socket for this to work. -func TestSCMCredentials(t *testing.T) { - socketTypeTests := []struct { - socketType int - dataLen int - }{ - { - unix.SOCK_STREAM, - 1, - }, { - unix.SOCK_DGRAM, - 0, - }, - } - - for _, tt := range socketTypeTests { - if tt.socketType == unix.SOCK_DGRAM && !atLeast1p10() { - t.Log("skipping DGRAM test on pre-1.10") - continue - } - - fds, err := unix.Socketpair(unix.AF_LOCAL, tt.socketType, 0) - if err != nil { - t.Fatalf("Socketpair: %v", err) - } - defer unix.Close(fds[0]) - defer unix.Close(fds[1]) - - err = unix.SetsockoptInt(fds[0], unix.SOL_SOCKET, unix.SO_PASSCRED, 1) - if err != nil { - t.Fatalf("SetsockoptInt: %v", err) - } - - srvFile := os.NewFile(uintptr(fds[0]), "server") - defer srvFile.Close() - srv, err := net.FileConn(srvFile) - if err != nil { - t.Errorf("FileConn: %v", err) - return - } - defer srv.Close() - - cliFile := os.NewFile(uintptr(fds[1]), "client") - defer cliFile.Close() - cli, err := net.FileConn(cliFile) - if err != nil { - t.Errorf("FileConn: %v", err) - return - } - defer cli.Close() - - var ucred unix.Ucred - ucred.Pid = int32(os.Getpid()) - ucred.Uid = uint32(os.Getuid()) - ucred.Gid = uint32(os.Getgid()) - oob := unix.UnixCredentials(&ucred) - - // On SOCK_STREAM, this is internally going to send a dummy byte - n, oobn, err := cli.(*net.UnixConn).WriteMsgUnix(nil, oob, nil) - if err != nil { - t.Fatalf("WriteMsgUnix: %v", err) - } - if n != 0 { - t.Fatalf("WriteMsgUnix n = %d, want 0", n) - } - if oobn != len(oob) { - t.Fatalf("WriteMsgUnix oobn = %d, want %d", oobn, len(oob)) - } - - oob2 := make([]byte, 10*len(oob)) - n, oobn2, flags, _, err := srv.(*net.UnixConn).ReadMsgUnix(nil, oob2) - if err != nil { - t.Fatalf("ReadMsgUnix: %v", err) - } - if flags != 0 { - t.Fatalf("ReadMsgUnix flags = 0x%x, want 0", flags) - } - if n != tt.dataLen { - t.Fatalf("ReadMsgUnix n = %d, want %d", n, tt.dataLen) - } - if oobn2 != oobn { - // without SO_PASSCRED set on the socket, ReadMsgUnix will - // return zero oob bytes - t.Fatalf("ReadMsgUnix oobn = %d, want %d", oobn2, oobn) - } - oob2 = oob2[:oobn2] - if !bytes.Equal(oob, oob2) { - t.Fatal("ReadMsgUnix oob bytes don't match") - } - - scm, err := unix.ParseSocketControlMessage(oob2) - if err != nil { - t.Fatalf("ParseSocketControlMessage: %v", err) - } - newUcred, err := unix.ParseUnixCredentials(&scm[0]) - if err != nil { - t.Fatalf("ParseUnixCredentials: %v", err) - } - if *newUcred != ucred { - t.Fatalf("ParseUnixCredentials = %+v, want %+v", newUcred, ucred) - } - } -} - -// atLeast1p10 reports whether we are running on Go 1.10 or later. -func atLeast1p10() bool { - for _, ver := range build.Default.ReleaseTags { - if ver == "go1.10" { - return true - } - } - return false -} diff --git a/src/cmd/vendor/golang.org/x/sys/unix/darwin_test.go b/src/cmd/vendor/golang.org/x/sys/unix/darwin_test.go deleted file mode 100644 index 29af36f102ee26..00000000000000 --- a/src/cmd/vendor/golang.org/x/sys/unix/darwin_test.go +++ /dev/null @@ -1,210 +0,0 @@ -// Copyright 2018 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. - -// +build darwin,go1.12,amd64 darwin,go1.12,386 - -package unix - -import ( - "os" - "os/exec" - "strings" - "testing" -) - -type darwinTest struct { - name string - f func() -} - -// TODO(khr): decide whether to keep this test enabled permanently or -// only temporarily. -func TestDarwinLoader(t *testing.T) { - // Make sure the Darwin dynamic loader can actually resolve - // all the system calls into libSystem.dylib. Unfortunately - // there is no easy way to test this at compile time. So we - // implement a crazy hack here, calling into the syscall - // function with all its arguments set to junk, and see what - // error we get. We are happy with any error (or none) except - // an error from the dynamic loader. - // - // We have to run each test in a separate subprocess for fault isolation. - // - // Hopefully the junk args won't accidentally ask the system to do "rm -fr /". - // - // In an ideal world each syscall would have its own test, so this test - // would be unnecessary. Unfortunately, we do not live in that world. - for _, test := range darwinTests { - // Call the test binary recursively, giving it a magic argument - // (see init below) and the name of the test to run. - cmd := exec.Command(os.Args[0], "testDarwinLoader", test.name) - - // Run subprocess, collect results. Note that we expect the subprocess - // to fail somehow, so the error is irrelevant. - out, _ := cmd.CombinedOutput() - - if strings.Contains(string(out), "dyld: Symbol not found:") { - t.Errorf("can't resolve %s in libSystem.dylib", test.name) - } - if !strings.Contains(string(out), "success") { - // Not really an error. Might be a syscall that never returns, - // like exit, or one that segfaults, like gettimeofday. - t.Logf("test never finished: %s: %s", test.name, string(out)) - } - } -} - -func init() { - // The test binary execs itself with the "testDarwinLoader" argument. - // Run the test specified by os.Args[2], then panic. - if len(os.Args) >= 3 && os.Args[1] == "testDarwinLoader" { - for _, test := range darwinTests { - if test.name == os.Args[2] { - test.f() - } - } - // Panic with a "success" label, so the parent process can check it. - panic("success") - } -} - -// All the _trampoline functions in zsyscall_darwin_$ARCH.s -var darwinTests = [...]darwinTest{ - {"getgroups", libc_getgroups_trampoline}, - {"setgroups", libc_setgroups_trampoline}, - {"wait4", libc_wait4_trampoline}, - {"accept", libc_accept_trampoline}, - {"bind", libc_bind_trampoline}, - {"connect", libc_connect_trampoline}, - {"socket", libc_socket_trampoline}, - {"getsockopt", libc_getsockopt_trampoline}, - {"setsockopt", libc_setsockopt_trampoline}, - {"getpeername", libc_getpeername_trampoline}, - {"getsockname", libc_getsockname_trampoline}, - {"shutdown", libc_shutdown_trampoline}, - {"socketpair", libc_socketpair_trampoline}, - {"recvfrom", libc_recvfrom_trampoline}, - {"sendto", libc_sendto_trampoline}, - {"recvmsg", libc_recvmsg_trampoline}, - {"sendmsg", libc_sendmsg_trampoline}, - {"kevent", libc_kevent_trampoline}, - {"__sysctl", libc___sysctl_trampoline}, - {"utimes", libc_utimes_trampoline}, - {"futimes", libc_futimes_trampoline}, - {"fcntl", libc_fcntl_trampoline}, - {"poll", libc_poll_trampoline}, - {"madvise", libc_madvise_trampoline}, - {"mlock", libc_mlock_trampoline}, - {"mlockall", libc_mlockall_trampoline}, - {"mprotect", libc_mprotect_trampoline}, - {"msync", libc_msync_trampoline}, - {"munlock", libc_munlock_trampoline}, - {"munlockall", libc_munlockall_trampoline}, - {"ptrace", libc_ptrace_trampoline}, - {"pipe", libc_pipe_trampoline}, - {"getxattr", libc_getxattr_trampoline}, - {"fgetxattr", libc_fgetxattr_trampoline}, - {"setxattr", libc_setxattr_trampoline}, - {"fsetxattr", libc_fsetxattr_trampoline}, - {"removexattr", libc_removexattr_trampoline}, - {"fremovexattr", libc_fremovexattr_trampoline}, - {"listxattr", libc_listxattr_trampoline}, - {"flistxattr", libc_flistxattr_trampoline}, - {"kill", libc_kill_trampoline}, - {"ioctl", libc_ioctl_trampoline}, - {"access", libc_access_trampoline}, - {"adjtime", libc_adjtime_trampoline}, - {"chdir", libc_chdir_trampoline}, - {"chflags", libc_chflags_trampoline}, - {"chmod", libc_chmod_trampoline}, - {"chown", libc_chown_trampoline}, - {"chroot", libc_chroot_trampoline}, - {"close", libc_close_trampoline}, - {"dup", libc_dup_trampoline}, - {"dup2", libc_dup2_trampoline}, - {"exchangedata", libc_exchangedata_trampoline}, - {"exit", libc_exit_trampoline}, - {"faccessat", libc_faccessat_trampoline}, - {"fchdir", libc_fchdir_trampoline}, - {"fchflags", libc_fchflags_trampoline}, - {"fchmod", libc_fchmod_trampoline}, - {"fchmodat", libc_fchmodat_trampoline}, - {"fchown", libc_fchown_trampoline}, - {"fchownat", libc_fchownat_trampoline}, - {"flock", libc_flock_trampoline}, - {"fpathconf", libc_fpathconf_trampoline}, - {"fstat64", libc_fstat64_trampoline}, - {"fstatat64", libc_fstatat64_trampoline}, - {"fstatfs64", libc_fstatfs64_trampoline}, - {"fsync", libc_fsync_trampoline}, - {"ftruncate", libc_ftruncate_trampoline}, - {"__getdirentries64", libc___getdirentries64_trampoline}, - {"getdtablesize", libc_getdtablesize_trampoline}, - {"getegid", libc_getegid_trampoline}, - {"geteuid", libc_geteuid_trampoline}, - {"getgid", libc_getgid_trampoline}, - {"getpgid", libc_getpgid_trampoline}, - {"getpgrp", libc_getpgrp_trampoline}, - {"getpid", libc_getpid_trampoline}, - {"getppid", libc_getppid_trampoline}, - {"getpriority", libc_getpriority_trampoline}, - {"getrlimit", libc_getrlimit_trampoline}, - {"getrusage", libc_getrusage_trampoline}, - {"getsid", libc_getsid_trampoline}, - {"getuid", libc_getuid_trampoline}, - {"issetugid", libc_issetugid_trampoline}, - {"kqueue", libc_kqueue_trampoline}, - {"lchown", libc_lchown_trampoline}, - {"link", libc_link_trampoline}, - {"linkat", libc_linkat_trampoline}, - {"listen", libc_listen_trampoline}, - {"lstat64", libc_lstat64_trampoline}, - {"mkdir", libc_mkdir_trampoline}, - {"mkdirat", libc_mkdirat_trampoline}, - {"mkfifo", libc_mkfifo_trampoline}, - {"mknod", libc_mknod_trampoline}, - {"open", libc_open_trampoline}, - {"openat", libc_openat_trampoline}, - {"pathconf", libc_pathconf_trampoline}, - {"pread", libc_pread_trampoline}, - {"pwrite", libc_pwrite_trampoline}, - {"read", libc_read_trampoline}, - {"readlink", libc_readlink_trampoline}, - {"readlinkat", libc_readlinkat_trampoline}, - {"rename", libc_rename_trampoline}, - {"renameat", libc_renameat_trampoline}, - {"revoke", libc_revoke_trampoline}, - {"rmdir", libc_rmdir_trampoline}, - {"lseek", libc_lseek_trampoline}, - {"select", libc_select_trampoline}, - {"setegid", libc_setegid_trampoline}, - {"seteuid", libc_seteuid_trampoline}, - {"setgid", libc_setgid_trampoline}, - {"setlogin", libc_setlogin_trampoline}, - {"setpgid", libc_setpgid_trampoline}, - {"setpriority", libc_setpriority_trampoline}, - {"setprivexec", libc_setprivexec_trampoline}, - {"setregid", libc_setregid_trampoline}, - {"setreuid", libc_setreuid_trampoline}, - {"setrlimit", libc_setrlimit_trampoline}, - {"setsid", libc_setsid_trampoline}, - {"settimeofday", libc_settimeofday_trampoline}, - {"setuid", libc_setuid_trampoline}, - {"stat64", libc_stat64_trampoline}, - {"statfs64", libc_statfs64_trampoline}, - {"symlink", libc_symlink_trampoline}, - {"symlinkat", libc_symlinkat_trampoline}, - {"sync", libc_sync_trampoline}, - {"truncate", libc_truncate_trampoline}, - {"umask", libc_umask_trampoline}, - {"undelete", libc_undelete_trampoline}, - {"unlink", libc_unlink_trampoline}, - {"unlinkat", libc_unlinkat_trampoline}, - {"unmount", libc_unmount_trampoline}, - {"write", libc_write_trampoline}, - {"mmap", libc_mmap_trampoline}, - {"munmap", libc_munmap_trampoline}, - {"gettimeofday", libc_gettimeofday_trampoline}, - {"getfsstat64", libc_getfsstat64_trampoline}, -} diff --git a/src/cmd/vendor/golang.org/x/sys/unix/dev_linux_test.go b/src/cmd/vendor/golang.org/x/sys/unix/dev_linux_test.go deleted file mode 100644 index 51645289ca212d..00000000000000 --- a/src/cmd/vendor/golang.org/x/sys/unix/dev_linux_test.go +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2017 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. - -// +build go1.7 - -package unix_test - -import ( - "fmt" - "testing" - - "golang.org/x/sys/unix" -) - -func TestDevices(t *testing.T) { - testCases := []struct { - path string - major uint32 - minor uint32 - }{ - // well known major/minor numbers according to - // https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/admin-guide/devices.txt - {"/dev/null", 1, 3}, - {"/dev/zero", 1, 5}, - {"/dev/random", 1, 8}, - {"/dev/full", 1, 7}, - {"/dev/urandom", 1, 9}, - {"/dev/tty", 5, 0}, - } - for _, tc := range testCases { - t.Run(fmt.Sprintf("%s %v:%v", tc.path, tc.major, tc.minor), func(t *testing.T) { - var stat unix.Stat_t - err := unix.Stat(tc.path, &stat) - if err != nil { - if err == unix.EACCES { - t.Skip("no permission to stat device, skipping test") - } - t.Errorf("failed to stat device: %v", err) - return - } - - dev := uint64(stat.Rdev) - if unix.Major(dev) != tc.major { - t.Errorf("for %s Major(%#x) == %d, want %d", tc.path, dev, unix.Major(dev), tc.major) - } - if unix.Minor(dev) != tc.minor { - t.Errorf("for %s Minor(%#x) == %d, want %d", tc.path, dev, unix.Minor(dev), tc.minor) - } - if unix.Mkdev(tc.major, tc.minor) != dev { - t.Errorf("for %s Mkdev(%d, %d) == %#x, want %#x", tc.path, tc.major, tc.minor, unix.Mkdev(tc.major, tc.minor), dev) - } - }) - - } -} diff --git a/src/cmd/vendor/golang.org/x/sys/unix/example_exec_test.go b/src/cmd/vendor/golang.org/x/sys/unix/example_exec_test.go deleted file mode 100644 index bb4d3bf5da9ad5..00000000000000 --- a/src/cmd/vendor/golang.org/x/sys/unix/example_exec_test.go +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2018 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. - -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris - -package unix_test - -import ( - "log" - "os" - - "golang.org/x/sys/unix" -) - -func ExampleExec() { - err := unix.Exec("/bin/ls", []string{"ls", "-al"}, os.Environ()) - log.Fatal(err) -} diff --git a/src/cmd/vendor/golang.org/x/sys/unix/example_flock_test.go b/src/cmd/vendor/golang.org/x/sys/unix/example_flock_test.go deleted file mode 100644 index 6c9174859e80bb..00000000000000 --- a/src/cmd/vendor/golang.org/x/sys/unix/example_flock_test.go +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2018 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. - -// +build darwin dragonfly freebsd linux netbsd openbsd solaris - -package unix_test - -import ( - "log" - "os" - - "golang.org/x/sys/unix" -) - -func ExampleFlock() { - f, _ := os.Create("example.lock") - if err := unix.Flock(int(f.Fd()), unix.LOCK_EX); err != nil { - log.Fatal(err) - } - // Do work here that requires the lock. When finished, release the lock: - if err := unix.Flock(int(f.Fd()), unix.LOCK_UN); err != nil { - log.Fatal(err) - } -} diff --git a/src/cmd/vendor/golang.org/x/sys/unix/export_test.go b/src/cmd/vendor/golang.org/x/sys/unix/export_test.go deleted file mode 100644 index f8ae0e0e371720..00000000000000 --- a/src/cmd/vendor/golang.org/x/sys/unix/export_test.go +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2015 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. - -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris - -package unix - -var Itoa = itoa diff --git a/src/cmd/vendor/golang.org/x/sys/unix/mmap_unix_test.go b/src/cmd/vendor/golang.org/x/sys/unix/mmap_unix_test.go deleted file mode 100644 index d4c4ef9264daa5..00000000000000 --- a/src/cmd/vendor/golang.org/x/sys/unix/mmap_unix_test.go +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2014 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. - -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris - -package unix_test - -import ( - "runtime" - "testing" - - "golang.org/x/sys/unix" -) - -func TestMmap(t *testing.T) { - b, err := unix.Mmap(-1, 0, unix.Getpagesize(), unix.PROT_NONE, unix.MAP_ANON|unix.MAP_PRIVATE) - if err != nil { - t.Fatalf("Mmap: %v", err) - } - if err := unix.Mprotect(b, unix.PROT_READ|unix.PROT_WRITE); err != nil { - t.Fatalf("Mprotect: %v", err) - } - - b[0] = 42 - - if runtime.GOOS == "aix" { - t.Skip("msync returns invalid argument for AIX, skipping msync test") - } else { - if err := unix.Msync(b, unix.MS_SYNC); err != nil { - t.Fatalf("Msync: %v", err) - } - } - - if err := unix.Madvise(b, unix.MADV_DONTNEED); err != nil { - t.Fatalf("Madvise: %v", err) - } - if err := unix.Munmap(b); err != nil { - t.Fatalf("Munmap: %v", err) - } -} diff --git a/src/cmd/vendor/golang.org/x/sys/unix/openbsd_test.go b/src/cmd/vendor/golang.org/x/sys/unix/openbsd_test.go deleted file mode 100644 index 3ded960712a214..00000000000000 --- a/src/cmd/vendor/golang.org/x/sys/unix/openbsd_test.go +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright 2016 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. - -// +build openbsd - -// This, on the face of it, bizarre testing mechanism is necessary because -// the only reliable way to gauge whether or not a pledge(2) call has succeeded -// is that the program has been killed as a result of breaking its pledge. - -package unix_test - -import ( - "flag" - "fmt" - "io/ioutil" - "os" - "os/exec" - "path/filepath" - "testing" - - "golang.org/x/sys/unix" -) - -type testProc struct { - fn func() // should always exit instead of returning - cleanup func() error // for instance, delete coredumps from testing pledge - success bool // whether zero-exit means success or failure -} - -var ( - testProcs = map[string]testProc{} - procName = "" -) - -const ( - optName = "sys-unix-internal-procname" -) - -func init() { - flag.StringVar(&procName, optName, "", "internal use only") -} - -// testCmd generates a proper command that, when executed, runs the test -// corresponding to the given key. -func testCmd(procName string) (*exec.Cmd, error) { - exe, err := filepath.Abs(os.Args[0]) - if err != nil { - return nil, err - } - cmd := exec.Command(exe, "-"+optName+"="+procName) - cmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr - return cmd, nil -} - -// ExitsCorrectly is a comprehensive, one-line-of-use wrapper for testing -// a testProc with a key. -func ExitsCorrectly(procName string, t *testing.T) { - s := testProcs[procName] - c, err := testCmd(procName) - defer func() { - if s.cleanup() != nil { - t.Fatalf("Failed to run cleanup for %s", procName) - } - }() - if err != nil { - t.Fatalf("Failed to construct command for %s", procName) - } - if (c.Run() == nil) != s.success { - result := "succeed" - if !s.success { - result = "fail" - } - t.Fatalf("Process did not %s when it was supposed to", result) - } -} - -func TestMain(m *testing.M) { - flag.Parse() - if procName != "" { - testProcs[procName].fn() - } - os.Exit(m.Run()) -} - -// For example, add a test for pledge. -func init() { - testProcs["pledge"] = testProc{ - func() { - fmt.Println(unix.Pledge("", "")) - os.Exit(0) - }, - func() error { - files, err := ioutil.ReadDir(".") - if err != nil { - return err - } - for _, file := range files { - if filepath.Ext(file.Name()) == ".core" { - if err := os.Remove(file.Name()); err != nil { - return err - } - } - } - return nil - }, - false, - } -} - -func TestPledge(t *testing.T) { - ExitsCorrectly("pledge", t) -} diff --git a/src/cmd/vendor/golang.org/x/sys/unix/sendfile_test.go b/src/cmd/vendor/golang.org/x/sys/unix/sendfile_test.go deleted file mode 100644 index d41fb93c8f44a8..00000000000000 --- a/src/cmd/vendor/golang.org/x/sys/unix/sendfile_test.go +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright 2018 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. - -// +build darwin,amd64 darwin,386 dragonfly freebsd linux solaris - -package unix_test - -import ( - "io/ioutil" - "net" - "os" - "path/filepath" - "testing" - - "golang.org/x/sys/unix" -) - -func TestSendfile(t *testing.T) { - // Set up source data file. - tempDir, err := ioutil.TempDir("", "TestSendfile") - if err != nil { - t.Fatal(err) - } - defer os.RemoveAll(tempDir) - name := filepath.Join(tempDir, "source") - const contents = "contents" - err = ioutil.WriteFile(name, []byte(contents), 0666) - if err != nil { - t.Fatal(err) - } - - done := make(chan bool) - - // Start server listening on a socket. - ln, err := net.Listen("tcp", "127.0.0.1:0") - if err != nil { - t.Skipf("listen failed: %s\n", err) - } - defer ln.Close() - go func() { - conn, err := ln.Accept() - if err != nil { - t.Fatal(err) - } - defer conn.Close() - b, err := ioutil.ReadAll(conn) - if string(b) != contents { - t.Errorf("contents not transmitted: got %s (len=%d), want %s", string(b), len(b), contents) - } - done <- true - }() - - // Open source file. - src, err := os.Open(name) - if err != nil { - t.Fatal(err) - } - - // Send source file to server. - conn, err := net.Dial("tcp", ln.Addr().String()) - if err != nil { - t.Fatal(err) - } - file, err := conn.(*net.TCPConn).File() - if err != nil { - t.Fatal(err) - } - var off int64 - n, err := unix.Sendfile(int(file.Fd()), int(src.Fd()), &off, len(contents)) - if err != nil { - t.Errorf("Sendfile failed %s\n", err) - } - if n != len(contents) { - t.Errorf("written count wrong: want %d, got %d", len(contents), n) - } - // Note: off is updated on some systems and not others. Oh well. - // Linux: increments off by the amount sent. - // Darwin: leaves off unchanged. - // It would be nice to fix Darwin if we can. - if off != 0 && off != int64(len(contents)) { - t.Errorf("offset wrong: god %d, want %d or %d", off, 0, len(contents)) - } - // The cursor position should be unchanged. - pos, err := src.Seek(0, 1) - if err != nil { - t.Errorf("can't get cursor position %s\n", err) - } - if pos != 0 { - t.Errorf("cursor position wrong: got %d, want 0", pos) - } - - file.Close() // Note: required to have the close below really send EOF to the server. - conn.Close() - - // Wait for server to close. - <-done -} diff --git a/src/cmd/vendor/golang.org/x/sys/unix/syscall_aix_test.go b/src/cmd/vendor/golang.org/x/sys/unix/syscall_aix_test.go deleted file mode 100644 index 6f55c07bd14bd6..00000000000000 --- a/src/cmd/vendor/golang.org/x/sys/unix/syscall_aix_test.go +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright 2018 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. - -// +build aix - -package unix_test - -import ( - "os" - "runtime" - "testing" - "time" - - "golang.org/x/sys/unix" -) - -func TestIoctlGetInt(t *testing.T) { - f, err := os.Open("/dev/random") - if err != nil { - t.Fatalf("failed to open device: %v", err) - } - defer f.Close() - - v, err := unix.IoctlGetInt(int(f.Fd()), unix.RNDGETENTCNT) - if err != nil { - t.Fatalf("failed to perform ioctl: %v", err) - } - - t.Logf("%d bits of entropy available", v) -} - -func TestTime(t *testing.T) { - var ut unix.Time_t - ut2, err := unix.Time(&ut) - if err != nil { - t.Fatalf("Time: %v", err) - } - if ut != ut2 { - t.Errorf("Time: return value %v should be equal to argument %v", ut2, ut) - } - - var now time.Time - - for i := 0; i < 10; i++ { - ut, err = unix.Time(nil) - if err != nil { - t.Fatalf("Time: %v", err) - } - - now = time.Now() - - if int64(ut) == now.Unix() { - return - } - } - - t.Errorf("Time: return value %v should be nearly equal to time.Now().Unix() %v", ut, now.Unix()) -} - -func TestUtime(t *testing.T) { - defer chtmpdir(t)() - - touch(t, "file1") - - buf := &unix.Utimbuf{ - Modtime: 12345, - } - - err := unix.Utime("file1", buf) - if err != nil { - t.Fatalf("Utime: %v", err) - } - - fi, err := os.Stat("file1") - if err != nil { - t.Fatal(err) - } - - if fi.ModTime().Unix() != 12345 { - t.Errorf("Utime: failed to change modtime: expected %v, got %v", 12345, fi.ModTime().Unix()) - } -} - -func TestUtimesNanoAt(t *testing.T) { - defer chtmpdir(t)() - - symlink := "symlink1" - defer os.Remove(symlink) - err := os.Symlink("nonexisting", symlink) - if err != nil { - t.Fatal(err) - } - - ts := []unix.Timespec{ - {Sec: 1111, Nsec: 2222}, - {Sec: 3333, Nsec: 4444}, - } - err = unix.UtimesNanoAt(unix.AT_FDCWD, symlink, ts, unix.AT_SYMLINK_NOFOLLOW) - if err != nil { - t.Fatalf("UtimesNanoAt: %v", err) - } - - var st unix.Stat_t - err = unix.Lstat(symlink, &st) - if err != nil { - t.Fatalf("Lstat: %v", err) - } - if runtime.GOARCH == "ppc64" { - if int64(st.Atim.Sec) != int64(ts[0].Sec) || st.Atim.Nsec != int32(ts[0].Nsec) { - t.Errorf("UtimesNanoAt: wrong atime: %v", st.Atim) - } - if int64(st.Mtim.Sec) != int64(ts[1].Sec) || st.Mtim.Nsec != int32(ts[1].Nsec) { - t.Errorf("UtimesNanoAt: wrong mtime: %v", st.Mtim) - } - } else { - if int32(st.Atim.Sec) != int32(ts[0].Sec) || int32(st.Atim.Nsec) != int32(ts[0].Nsec) { - t.Errorf("UtimesNanoAt: wrong atime: %v", st.Atim) - } - if int32(st.Mtim.Sec) != int32(ts[1].Sec) || int32(st.Mtim.Nsec) != int32(ts[1].Nsec) { - t.Errorf("UtimesNanoAt: wrong mtime: %v", st.Mtim) - } - } -} - -func TestPselect(t *testing.T) { - if runtime.GOARCH == "ppc64" { - t.Skip("pselect issue with structure timespec on AIX 7.2 tl0, skipping test") - } - - _, err := unix.Pselect(0, nil, nil, nil, &unix.Timespec{Sec: 0, Nsec: 0}, nil) - if err != nil { - t.Fatalf("Pselect: %v", err) - } - - dur := 2500 * time.Microsecond - ts := unix.NsecToTimespec(int64(dur)) - start := time.Now() - _, err = unix.Pselect(0, nil, nil, nil, &ts, nil) - took := time.Since(start) - if err != nil { - t.Fatalf("Pselect: %v", err) - } - - if took < dur { - t.Errorf("Pselect: timeout should have been at least %v, got %v", dur, took) - } -} - -// stringsFromByteSlice converts a sequence of attributes to a []string. -// On Linux, each entry is a NULL-terminated string. -func stringsFromByteSlice(buf []byte) []string { - var result []string - off := 0 - for i, b := range buf { - if b == 0 { - result = append(result, string(buf[off:i])) - off = i + 1 - } - } - return result -} diff --git a/src/cmd/vendor/golang.org/x/sys/unix/syscall_bsd_test.go b/src/cmd/vendor/golang.org/x/sys/unix/syscall_bsd_test.go deleted file mode 100644 index 12924cb83dfa3f..00000000000000 --- a/src/cmd/vendor/golang.org/x/sys/unix/syscall_bsd_test.go +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2014 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. - -// +build darwin dragonfly freebsd openbsd - -package unix_test - -import ( - "os/exec" - "runtime" - "testing" - "time" - - "golang.org/x/sys/unix" -) - -func TestGetfsstat(t *testing.T) { - n, err := unix.Getfsstat(nil, unix.MNT_NOWAIT) - if err != nil { - t.Fatal(err) - } - - data := make([]unix.Statfs_t, n) - n2, err := unix.Getfsstat(data, unix.MNT_NOWAIT) - if err != nil { - t.Fatal(err) - } - if n != n2 { - t.Errorf("Getfsstat(nil) = %d, but subsequent Getfsstat(slice) = %d", n, n2) - } - for i, stat := range data { - if stat == (unix.Statfs_t{}) { - t.Errorf("index %v is an empty Statfs_t struct", i) - } - } - if t.Failed() { - for i, stat := range data[:n2] { - t.Logf("data[%v] = %+v", i, stat) - } - mount, err := exec.Command("mount").CombinedOutput() - if err != nil { - t.Logf("mount: %v\n%s", err, mount) - } else { - t.Logf("mount: %s", mount) - } - } -} - -func TestSelect(t *testing.T) { - err := unix.Select(0, nil, nil, nil, &unix.Timeval{Sec: 0, Usec: 0}) - if err != nil { - t.Fatalf("Select: %v", err) - } - - dur := 250 * time.Millisecond - tv := unix.NsecToTimeval(int64(dur)) - start := time.Now() - err = unix.Select(0, nil, nil, nil, &tv) - took := time.Since(start) - if err != nil { - t.Fatalf("Select: %v", err) - } - - // On some BSDs the actual timeout might also be slightly less than the requested. - // Add an acceptable margin to avoid flaky tests. - if took < dur*2/3 { - t.Errorf("Select: timeout should have been at least %v, got %v", dur, took) - } -} - -func TestSysctlRaw(t *testing.T) { - if runtime.GOOS == "openbsd" { - t.Skip("kern.proc.pid does not exist on OpenBSD") - } - - _, err := unix.SysctlRaw("kern.proc.pid", unix.Getpid()) - if err != nil { - t.Fatal(err) - } -} - -func TestSysctlUint32(t *testing.T) { - maxproc, err := unix.SysctlUint32("kern.maxproc") - if err != nil { - t.Fatal(err) - } - t.Logf("kern.maxproc: %v", maxproc) -} diff --git a/src/cmd/vendor/golang.org/x/sys/unix/syscall_darwin_test.go b/src/cmd/vendor/golang.org/x/sys/unix/syscall_darwin_test.go deleted file mode 100644 index 7faa295fcefd16..00000000000000 --- a/src/cmd/vendor/golang.org/x/sys/unix/syscall_darwin_test.go +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2018 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. - -package unix_test - -import ( - "os" - "testing" - - "golang.org/x/sys/unix" -) - -// stringsFromByteSlice converts a sequence of attributes to a []string. -// On Darwin, each entry is a NULL-terminated string. -func stringsFromByteSlice(buf []byte) []string { - var result []string - off := 0 - for i, b := range buf { - if b == 0 { - result = append(result, string(buf[off:i])) - off = i + 1 - } - } - return result -} - -func TestUtimesNanoAt(t *testing.T) { - defer chtmpdir(t)() - - symlink := "symlink1" - os.Remove(symlink) - err := os.Symlink("nonexisting", symlink) - if err != nil { - t.Fatal(err) - } - - ts := []unix.Timespec{ - {Sec: 1111, Nsec: 2222}, - {Sec: 3333, Nsec: 4444}, - } - err = unix.UtimesNanoAt(unix.AT_FDCWD, symlink, ts, unix.AT_SYMLINK_NOFOLLOW) - if err != nil { - t.Fatalf("UtimesNanoAt: %v", err) - } - - var st unix.Stat_t - err = unix.Lstat(symlink, &st) - if err != nil { - t.Fatalf("Lstat: %v", err) - } - - // Only check Mtimespec, Atimespec might not be supported by the underlying filesystem - expected := ts[1] - if st.Mtimespec.Nsec == 0 { - // Some filesystems only support 1-second time stamp resolution - // and will always set Nsec to 0. - expected.Nsec = 0 - } - if st.Mtimespec != expected { - t.Errorf("UtimesNanoAt: wrong mtime: got %v, expected %v", st.Mtimespec, expected) - } -} diff --git a/src/cmd/vendor/golang.org/x/sys/unix/syscall_freebsd_test.go b/src/cmd/vendor/golang.org/x/sys/unix/syscall_freebsd_test.go deleted file mode 100644 index 0fec1a8277cbbd..00000000000000 --- a/src/cmd/vendor/golang.org/x/sys/unix/syscall_freebsd_test.go +++ /dev/null @@ -1,312 +0,0 @@ -// Copyright 2014 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. - -// +build freebsd - -package unix_test - -import ( - "flag" - "fmt" - "io/ioutil" - "os" - "os/exec" - "path" - "path/filepath" - "runtime" - "testing" - - "golang.org/x/sys/unix" -) - -func TestSysctlUint64(t *testing.T) { - _, err := unix.SysctlUint64("vm.swap_total") - if err != nil { - t.Fatal(err) - } -} - -// FIXME: Infrastructure for launching tests in subprocesses stolen from openbsd_test.go - refactor? -// testCmd generates a proper command that, when executed, runs the test -// corresponding to the given key. - -type testProc struct { - fn func() // should always exit instead of returning - arg func(t *testing.T) string // generate argument for test - cleanup func(arg string) error // for instance, delete coredumps from testing pledge - success bool // whether zero-exit means success or failure -} - -var ( - testProcs = map[string]testProc{} - procName = "" - procArg = "" -) - -const ( - optName = "sys-unix-internal-procname" - optArg = "sys-unix-internal-arg" -) - -func init() { - flag.StringVar(&procName, optName, "", "internal use only") - flag.StringVar(&procArg, optArg, "", "internal use only") - -} - -func testCmd(procName string, procArg string) (*exec.Cmd, error) { - exe, err := filepath.Abs(os.Args[0]) - if err != nil { - return nil, err - } - cmd := exec.Command(exe, "-"+optName+"="+procName, "-"+optArg+"="+procArg) - cmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr - return cmd, nil -} - -// ExitsCorrectly is a comprehensive, one-line-of-use wrapper for testing -// a testProc with a key. -func ExitsCorrectly(t *testing.T, procName string) { - s := testProcs[procName] - arg := "-" - if s.arg != nil { - arg = s.arg(t) - } - c, err := testCmd(procName, arg) - defer func(arg string) { - if err := s.cleanup(arg); err != nil { - t.Fatalf("Failed to run cleanup for %s %s %#v", procName, err, err) - } - }(arg) - if err != nil { - t.Fatalf("Failed to construct command for %s", procName) - } - if (c.Run() == nil) != s.success { - result := "succeed" - if !s.success { - result = "fail" - } - t.Fatalf("Process did not %s when it was supposed to", result) - } -} - -func TestMain(m *testing.M) { - flag.Parse() - if procName != "" { - t := testProcs[procName] - t.fn() - os.Stderr.WriteString("test function did not exit\n") - if t.success { - os.Exit(1) - } else { - os.Exit(0) - } - } - os.Exit(m.Run()) -} - -// end of infrastructure - -const testfile = "gocapmodetest" -const testfile2 = testfile + "2" - -func CapEnterTest() { - _, err := os.OpenFile(path.Join(procArg, testfile), os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666) - if err != nil { - panic(fmt.Sprintf("OpenFile: %s", err)) - } - - err = unix.CapEnter() - if err != nil { - panic(fmt.Sprintf("CapEnter: %s", err)) - } - - _, err = os.OpenFile(path.Join(procArg, testfile2), os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666) - if err == nil { - panic("OpenFile works!") - } - if err.(*os.PathError).Err != unix.ECAPMODE { - panic(fmt.Sprintf("OpenFile failed wrong: %s %#v", err, err)) - } - os.Exit(0) -} - -func makeTempDir(t *testing.T) string { - d, err := ioutil.TempDir("", "go_openat_test") - if err != nil { - t.Fatalf("TempDir failed: %s", err) - } - return d -} - -func removeTempDir(arg string) error { - err := os.RemoveAll(arg) - if err != nil && err.(*os.PathError).Err == unix.ENOENT { - return nil - } - return err -} - -func init() { - testProcs["cap_enter"] = testProc{ - CapEnterTest, - makeTempDir, - removeTempDir, - true, - } -} - -func TestCapEnter(t *testing.T) { - if runtime.GOARCH != "amd64" { - t.Skipf("skipping test on %s", runtime.GOARCH) - } - ExitsCorrectly(t, "cap_enter") -} - -func OpenatTest() { - f, err := os.Open(procArg) - if err != nil { - panic(err) - } - - err = unix.CapEnter() - if err != nil { - panic(fmt.Sprintf("CapEnter: %s", err)) - } - - fxx, err := unix.Openat(int(f.Fd()), "xx", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666) - if err != nil { - panic(err) - } - unix.Close(fxx) - - // The right to open BASE/xx is not ambient - _, err = os.OpenFile(procArg+"/xx", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666) - if err == nil { - panic("OpenFile succeeded") - } - if err.(*os.PathError).Err != unix.ECAPMODE { - panic(fmt.Sprintf("OpenFile failed wrong: %s %#v", err, err)) - } - - // Can't make a new directory either - err = os.Mkdir(procArg+"2", 0777) - if err == nil { - panic("MKdir succeeded") - } - if err.(*os.PathError).Err != unix.ECAPMODE { - panic(fmt.Sprintf("Mkdir failed wrong: %s %#v", err, err)) - } - - // Remove all caps except read and lookup. - r, err := unix.CapRightsInit([]uint64{unix.CAP_READ, unix.CAP_LOOKUP}) - if err != nil { - panic(fmt.Sprintf("CapRightsInit failed: %s %#v", err, err)) - } - err = unix.CapRightsLimit(f.Fd(), r) - if err != nil { - panic(fmt.Sprintf("CapRightsLimit failed: %s %#v", err, err)) - } - - // Check we can get the rights back again - r, err = unix.CapRightsGet(f.Fd()) - if err != nil { - panic(fmt.Sprintf("CapRightsGet failed: %s %#v", err, err)) - } - b, err := unix.CapRightsIsSet(r, []uint64{unix.CAP_READ, unix.CAP_LOOKUP}) - if err != nil { - panic(fmt.Sprintf("CapRightsIsSet failed: %s %#v", err, err)) - } - if !b { - panic(fmt.Sprintf("Unexpected rights")) - } - b, err = unix.CapRightsIsSet(r, []uint64{unix.CAP_READ, unix.CAP_LOOKUP, unix.CAP_WRITE}) - if err != nil { - panic(fmt.Sprintf("CapRightsIsSet failed: %s %#v", err, err)) - } - if b { - panic(fmt.Sprintf("Unexpected rights (2)")) - } - - // Can no longer create a file - _, err = unix.Openat(int(f.Fd()), "xx2", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666) - if err == nil { - panic("Openat succeeded") - } - if err != unix.ENOTCAPABLE { - panic(fmt.Sprintf("OpenFileAt failed wrong: %s %#v", err, err)) - } - - // But can read an existing one - _, err = unix.Openat(int(f.Fd()), "xx", os.O_RDONLY, 0666) - if err != nil { - panic(fmt.Sprintf("Openat failed: %s %#v", err, err)) - } - - os.Exit(0) -} - -func init() { - testProcs["openat"] = testProc{ - OpenatTest, - makeTempDir, - removeTempDir, - true, - } -} - -func TestOpenat(t *testing.T) { - if runtime.GOARCH != "amd64" { - t.Skipf("skipping test on %s", runtime.GOARCH) - } - ExitsCorrectly(t, "openat") -} - -func TestCapRightsSetAndClear(t *testing.T) { - r, err := unix.CapRightsInit([]uint64{unix.CAP_READ, unix.CAP_WRITE, unix.CAP_PDWAIT}) - if err != nil { - t.Fatalf("CapRightsInit failed: %s", err) - } - - err = unix.CapRightsSet(r, []uint64{unix.CAP_EVENT, unix.CAP_LISTEN}) - if err != nil { - t.Fatalf("CapRightsSet failed: %s", err) - } - - b, err := unix.CapRightsIsSet(r, []uint64{unix.CAP_READ, unix.CAP_WRITE, unix.CAP_PDWAIT, unix.CAP_EVENT, unix.CAP_LISTEN}) - if err != nil { - t.Fatalf("CapRightsIsSet failed: %s", err) - } - if !b { - t.Fatalf("Wrong rights set") - } - - err = unix.CapRightsClear(r, []uint64{unix.CAP_READ, unix.CAP_PDWAIT}) - if err != nil { - t.Fatalf("CapRightsClear failed: %s", err) - } - - b, err = unix.CapRightsIsSet(r, []uint64{unix.CAP_WRITE, unix.CAP_EVENT, unix.CAP_LISTEN}) - if err != nil { - t.Fatalf("CapRightsIsSet failed: %s", err) - } - if !b { - t.Fatalf("Wrong rights set") - } -} - -// stringsFromByteSlice converts a sequence of attributes to a []string. -// On FreeBSD, each entry consists of a single byte containing the length -// of the attribute name, followed by the attribute name. -// The name is _not_ NULL-terminated. -func stringsFromByteSlice(buf []byte) []string { - var result []string - i := 0 - for i < len(buf) { - next := i + 1 + int(buf[i]) - result = append(result, string(buf[i+1:next])) - i = next - } - return result -} diff --git a/src/cmd/vendor/golang.org/x/sys/unix/syscall_linux_test.go b/src/cmd/vendor/golang.org/x/sys/unix/syscall_linux_test.go deleted file mode 100644 index 758efa66e57952..00000000000000 --- a/src/cmd/vendor/golang.org/x/sys/unix/syscall_linux_test.go +++ /dev/null @@ -1,484 +0,0 @@ -// Copyright 2016 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. - -// +build linux - -package unix_test - -import ( - "io/ioutil" - "os" - "runtime" - "runtime/debug" - "testing" - "time" - - "golang.org/x/sys/unix" -) - -func TestIoctlGetInt(t *testing.T) { - f, err := os.Open("/dev/random") - if err != nil { - t.Fatalf("failed to open device: %v", err) - } - defer f.Close() - - v, err := unix.IoctlGetInt(int(f.Fd()), unix.RNDGETENTCNT) - if err != nil { - t.Fatalf("failed to perform ioctl: %v", err) - } - - t.Logf("%d bits of entropy available", v) -} - -func TestPpoll(t *testing.T) { - if runtime.GOOS == "android" { - t.Skip("mkfifo syscall is not available on android, skipping test") - } - - f, cleanup := mktmpfifo(t) - defer cleanup() - - const timeout = 100 * time.Millisecond - - ok := make(chan bool, 1) - go func() { - select { - case <-time.After(10 * timeout): - t.Errorf("Ppoll: failed to timeout after %d", 10*timeout) - case <-ok: - } - }() - - fds := []unix.PollFd{{Fd: int32(f.Fd()), Events: unix.POLLIN}} - timeoutTs := unix.NsecToTimespec(int64(timeout)) - n, err := unix.Ppoll(fds, &timeoutTs, nil) - ok <- true - if err != nil { - t.Errorf("Ppoll: unexpected error: %v", err) - return - } - if n != 0 { - t.Errorf("Ppoll: wrong number of events: got %v, expected %v", n, 0) - return - } -} - -func TestTime(t *testing.T) { - var ut unix.Time_t - ut2, err := unix.Time(&ut) - if err != nil { - t.Fatalf("Time: %v", err) - } - if ut != ut2 { - t.Errorf("Time: return value %v should be equal to argument %v", ut2, ut) - } - - var now time.Time - - for i := 0; i < 10; i++ { - ut, err = unix.Time(nil) - if err != nil { - t.Fatalf("Time: %v", err) - } - - now = time.Now() - - if int64(ut) == now.Unix() { - return - } - } - - t.Errorf("Time: return value %v should be nearly equal to time.Now().Unix() %v", ut, now.Unix()) -} - -func TestUtime(t *testing.T) { - defer chtmpdir(t)() - - touch(t, "file1") - - buf := &unix.Utimbuf{ - Modtime: 12345, - } - - err := unix.Utime("file1", buf) - if err != nil { - t.Fatalf("Utime: %v", err) - } - - fi, err := os.Stat("file1") - if err != nil { - t.Fatal(err) - } - - if fi.ModTime().Unix() != 12345 { - t.Errorf("Utime: failed to change modtime: expected %v, got %v", 12345, fi.ModTime().Unix()) - } -} - -func TestUtimesNanoAt(t *testing.T) { - defer chtmpdir(t)() - - symlink := "symlink1" - os.Remove(symlink) - err := os.Symlink("nonexisting", symlink) - if err != nil { - t.Fatal(err) - } - - ts := []unix.Timespec{ - {Sec: 1111, Nsec: 2222}, - {Sec: 3333, Nsec: 4444}, - } - err = unix.UtimesNanoAt(unix.AT_FDCWD, symlink, ts, unix.AT_SYMLINK_NOFOLLOW) - if err != nil { - t.Fatalf("UtimesNanoAt: %v", err) - } - - var st unix.Stat_t - err = unix.Lstat(symlink, &st) - if err != nil { - t.Fatalf("Lstat: %v", err) - } - - // Only check Mtim, Atim might not be supported by the underlying filesystem - expected := ts[1] - if st.Mtim.Nsec == 0 { - // Some filesystems only support 1-second time stamp resolution - // and will always set Nsec to 0. - expected.Nsec = 0 - } - if st.Mtim != expected { - t.Errorf("UtimesNanoAt: wrong mtime: expected %v, got %v", expected, st.Mtim) - } -} - -func TestRlimitAs(t *testing.T) { - // disable GC during to avoid flaky test - defer debug.SetGCPercent(debug.SetGCPercent(-1)) - - var rlim unix.Rlimit - err := unix.Getrlimit(unix.RLIMIT_AS, &rlim) - if err != nil { - t.Fatalf("Getrlimit: %v", err) - } - var zero unix.Rlimit - if zero == rlim { - t.Fatalf("Getrlimit: got zero value %#v", rlim) - } - set := rlim - set.Cur = uint64(unix.Getpagesize()) - err = unix.Setrlimit(unix.RLIMIT_AS, &set) - if err != nil { - t.Fatalf("Setrlimit: set failed: %#v %v", set, err) - } - - // RLIMIT_AS was set to the page size, so mmap()'ing twice the page size - // should fail. See 'man 2 getrlimit'. - _, err = unix.Mmap(-1, 0, 2*unix.Getpagesize(), unix.PROT_NONE, unix.MAP_ANON|unix.MAP_PRIVATE) - if err == nil { - t.Fatal("Mmap: unexpectedly succeeded after setting RLIMIT_AS") - } - - err = unix.Setrlimit(unix.RLIMIT_AS, &rlim) - if err != nil { - t.Fatalf("Setrlimit: restore failed: %#v %v", rlim, err) - } - - b, err := unix.Mmap(-1, 0, 2*unix.Getpagesize(), unix.PROT_NONE, unix.MAP_ANON|unix.MAP_PRIVATE) - if err != nil { - t.Fatalf("Mmap: %v", err) - } - err = unix.Munmap(b) - if err != nil { - t.Fatalf("Munmap: %v", err) - } -} - -func TestSelect(t *testing.T) { - _, err := unix.Select(0, nil, nil, nil, &unix.Timeval{Sec: 0, Usec: 0}) - if err != nil { - t.Fatalf("Select: %v", err) - } - - dur := 150 * time.Millisecond - tv := unix.NsecToTimeval(int64(dur)) - start := time.Now() - _, err = unix.Select(0, nil, nil, nil, &tv) - took := time.Since(start) - if err != nil { - t.Fatalf("Select: %v", err) - } - - if took < dur { - t.Errorf("Select: timeout should have been at least %v, got %v", dur, took) - } -} - -func TestPselect(t *testing.T) { - _, err := unix.Pselect(0, nil, nil, nil, &unix.Timespec{Sec: 0, Nsec: 0}, nil) - if err != nil { - t.Fatalf("Pselect: %v", err) - } - - dur := 2500 * time.Microsecond - ts := unix.NsecToTimespec(int64(dur)) - start := time.Now() - _, err = unix.Pselect(0, nil, nil, nil, &ts, nil) - took := time.Since(start) - if err != nil { - t.Fatalf("Pselect: %v", err) - } - - if took < dur { - t.Errorf("Pselect: timeout should have been at least %v, got %v", dur, took) - } -} - -func TestSchedSetaffinity(t *testing.T) { - runtime.LockOSThread() - defer runtime.UnlockOSThread() - - var oldMask unix.CPUSet - err := unix.SchedGetaffinity(0, &oldMask) - if err != nil { - t.Fatalf("SchedGetaffinity: %v", err) - } - - var newMask unix.CPUSet - newMask.Zero() - if newMask.Count() != 0 { - t.Errorf("CpuZero: didn't zero CPU set: %v", newMask) - } - cpu := 1 - newMask.Set(cpu) - if newMask.Count() != 1 || !newMask.IsSet(cpu) { - t.Errorf("CpuSet: didn't set CPU %d in set: %v", cpu, newMask) - } - cpu = 5 - newMask.Set(cpu) - if newMask.Count() != 2 || !newMask.IsSet(cpu) { - t.Errorf("CpuSet: didn't set CPU %d in set: %v", cpu, newMask) - } - newMask.Clear(cpu) - if newMask.Count() != 1 || newMask.IsSet(cpu) { - t.Errorf("CpuClr: didn't clear CPU %d in set: %v", cpu, newMask) - } - - if runtime.NumCPU() < 2 { - t.Skip("skipping setaffinity tests on single CPU system") - } - if runtime.GOOS == "android" { - t.Skip("skipping setaffinity tests on android") - } - - // On a system like ppc64x where some cores can be disabled using ppc64_cpu, - // setaffinity should only be called with enabled cores. The valid cores - // are found from the oldMask, but if none are found then the setaffinity - // tests are skipped. Issue #27875. - if !oldMask.IsSet(cpu) { - newMask.Zero() - for i := 0; i < len(oldMask); i++ { - if oldMask.IsSet(i) { - newMask.Set(i) - break - } - } - if newMask.Count() == 0 { - t.Skip("skipping setaffinity tests if CPU not available") - } - } - - err = unix.SchedSetaffinity(0, &newMask) - if err != nil { - t.Fatalf("SchedSetaffinity: %v", err) - } - - var gotMask unix.CPUSet - err = unix.SchedGetaffinity(0, &gotMask) - if err != nil { - t.Fatalf("SchedGetaffinity: %v", err) - } - - if gotMask != newMask { - t.Errorf("SchedSetaffinity: returned affinity mask does not match set affinity mask") - } - - // Restore old mask so it doesn't affect successive tests - err = unix.SchedSetaffinity(0, &oldMask) - if err != nil { - t.Fatalf("SchedSetaffinity: %v", err) - } -} - -func TestStatx(t *testing.T) { - var stx unix.Statx_t - err := unix.Statx(unix.AT_FDCWD, ".", 0, 0, &stx) - if err == unix.ENOSYS || err == unix.EPERM { - t.Skip("statx syscall is not available, skipping test") - } else if err != nil { - t.Fatalf("Statx: %v", err) - } - - defer chtmpdir(t)() - touch(t, "file1") - - var st unix.Stat_t - err = unix.Stat("file1", &st) - if err != nil { - t.Fatalf("Stat: %v", err) - } - - flags := unix.AT_STATX_SYNC_AS_STAT - err = unix.Statx(unix.AT_FDCWD, "file1", flags, unix.STATX_ALL, &stx) - if err != nil { - t.Fatalf("Statx: %v", err) - } - - if uint32(stx.Mode) != st.Mode { - t.Errorf("Statx: returned stat mode does not match Stat") - } - - ctime := unix.StatxTimestamp{Sec: int64(st.Ctim.Sec), Nsec: uint32(st.Ctim.Nsec)} - mtime := unix.StatxTimestamp{Sec: int64(st.Mtim.Sec), Nsec: uint32(st.Mtim.Nsec)} - - if stx.Ctime != ctime { - t.Errorf("Statx: returned stat ctime does not match Stat") - } - if stx.Mtime != mtime { - t.Errorf("Statx: returned stat mtime does not match Stat") - } - - err = os.Symlink("file1", "symlink1") - if err != nil { - t.Fatal(err) - } - - err = unix.Lstat("symlink1", &st) - if err != nil { - t.Fatalf("Lstat: %v", err) - } - - err = unix.Statx(unix.AT_FDCWD, "symlink1", flags, unix.STATX_BASIC_STATS, &stx) - if err != nil { - t.Fatalf("Statx: %v", err) - } - - // follow symlink, expect a regulat file - if stx.Mode&unix.S_IFREG == 0 { - t.Errorf("Statx: didn't follow symlink") - } - - err = unix.Statx(unix.AT_FDCWD, "symlink1", flags|unix.AT_SYMLINK_NOFOLLOW, unix.STATX_ALL, &stx) - if err != nil { - t.Fatalf("Statx: %v", err) - } - - // follow symlink, expect a symlink - if stx.Mode&unix.S_IFLNK == 0 { - t.Errorf("Statx: unexpectedly followed symlink") - } - if uint32(stx.Mode) != st.Mode { - t.Errorf("Statx: returned stat mode does not match Lstat") - } - - ctime = unix.StatxTimestamp{Sec: int64(st.Ctim.Sec), Nsec: uint32(st.Ctim.Nsec)} - mtime = unix.StatxTimestamp{Sec: int64(st.Mtim.Sec), Nsec: uint32(st.Mtim.Nsec)} - - if stx.Ctime != ctime { - t.Errorf("Statx: returned stat ctime does not match Lstat") - } - if stx.Mtime != mtime { - t.Errorf("Statx: returned stat mtime does not match Lstat") - } -} - -// stringsFromByteSlice converts a sequence of attributes to a []string. -// On Linux, each entry is a NULL-terminated string. -func stringsFromByteSlice(buf []byte) []string { - var result []string - off := 0 - for i, b := range buf { - if b == 0 { - result = append(result, string(buf[off:i])) - off = i + 1 - } - } - return result -} - -func TestFaccessat(t *testing.T) { - defer chtmpdir(t)() - touch(t, "file1") - - err := unix.Faccessat(unix.AT_FDCWD, "file1", unix.R_OK, 0) - if err != nil { - t.Errorf("Faccessat: unexpected error: %v", err) - } - - err = unix.Faccessat(unix.AT_FDCWD, "file1", unix.R_OK, 2) - if err != unix.EINVAL { - t.Errorf("Faccessat: unexpected error: %v, want EINVAL", err) - } - - err = unix.Faccessat(unix.AT_FDCWD, "file1", unix.R_OK, unix.AT_EACCESS) - if err != nil { - t.Errorf("Faccessat: unexpected error: %v", err) - } - - err = os.Symlink("file1", "symlink1") - if err != nil { - t.Fatal(err) - } - - err = unix.Faccessat(unix.AT_FDCWD, "symlink1", unix.R_OK, unix.AT_SYMLINK_NOFOLLOW) - if err != nil { - t.Errorf("Faccessat SYMLINK_NOFOLLOW: unexpected error %v", err) - } - - // We can't really test AT_SYMLINK_NOFOLLOW, because there - // doesn't seem to be any way to change the mode of a symlink. - // We don't test AT_EACCESS because such tests are only - // meaningful if run as root. - - err = unix.Fchmodat(unix.AT_FDCWD, "file1", 0, 0) - if err != nil { - t.Errorf("Fchmodat: unexpected error %v", err) - } - - err = unix.Faccessat(unix.AT_FDCWD, "file1", unix.F_OK, unix.AT_SYMLINK_NOFOLLOW) - if err != nil { - t.Errorf("Faccessat: unexpected error: %v", err) - } - - err = unix.Faccessat(unix.AT_FDCWD, "file1", unix.R_OK, unix.AT_SYMLINK_NOFOLLOW) - if err != unix.EACCES { - if unix.Getuid() != 0 { - t.Errorf("Faccessat: unexpected error: %v, want EACCES", err) - } - } -} - -func TestSyncFileRange(t *testing.T) { - file, err := ioutil.TempFile("", "TestSyncFileRange") - if err != nil { - t.Fatal(err) - } - defer os.Remove(file.Name()) - defer file.Close() - - err = unix.SyncFileRange(int(file.Fd()), 0, 0, 0) - if err == unix.ENOSYS || err == unix.EPERM { - t.Skip("sync_file_range syscall is not available, skipping test") - } else if err != nil { - t.Fatalf("SyncFileRange: %v", err) - } - - // invalid flags - flags := 0xf00 - err = unix.SyncFileRange(int(file.Fd()), 0, 0, flags) - if err != unix.EINVAL { - t.Fatalf("SyncFileRange: unexpected error: %v, want EINVAL", err) - } -} diff --git a/src/cmd/vendor/golang.org/x/sys/unix/syscall_netbsd_test.go b/src/cmd/vendor/golang.org/x/sys/unix/syscall_netbsd_test.go deleted file mode 100644 index 41141f96e699b5..00000000000000 --- a/src/cmd/vendor/golang.org/x/sys/unix/syscall_netbsd_test.go +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2018 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. - -package unix_test - -import ( - "bytes" - "testing" - - "golang.org/x/sys/unix" -) - -// stringsFromByteSlice converts a sequence of attributes to a []string. -// On NetBSD, each entry consists of a single byte containing the length -// of the attribute name, followed by the attribute name. -// The name is _not_ NULL-terminated. -func stringsFromByteSlice(buf []byte) []string { - var result []string - i := 0 - for i < len(buf) { - next := i + 1 + int(buf[i]) - result = append(result, string(buf[i+1:next])) - i = next - } - return result -} - -func TestSysctlClockinfo(t *testing.T) { - ci, err := unix.SysctlClockinfo("kern.clockrate") - if err != nil { - t.Fatal(err) - } - t.Logf("tick = %v, tickadj = %v, hz = %v, profhz = %v, stathz = %v", - ci.Tick, ci.Tickadj, ci.Hz, ci.Profhz, ci.Stathz) -} - -func TestIoctlPtmget(t *testing.T) { - fd, err := unix.Open("/dev/ptmx", unix.O_NOCTTY|unix.O_RDWR, 0666) - if err != nil { - t.Skip("failed to open /dev/ptmx, skipping test") - } - defer unix.Close(fd) - - ptm, err := unix.IoctlGetPtmget(fd, unix.TIOCPTSNAME) - if err != nil { - t.Fatalf("IoctlGetPtmget: %v\n", err) - } - - t.Logf("sfd = %v, ptsname = %v", ptm.Sfd, string(ptm.Sn[:bytes.IndexByte(ptm.Sn[:], 0)])) -} diff --git a/src/cmd/vendor/golang.org/x/sys/unix/syscall_openbsd_test.go b/src/cmd/vendor/golang.org/x/sys/unix/syscall_openbsd_test.go deleted file mode 100644 index b95f334e196d31..00000000000000 --- a/src/cmd/vendor/golang.org/x/sys/unix/syscall_openbsd_test.go +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2018 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. - -package unix_test - -import ( - "testing" - "time" - - "golang.org/x/sys/unix" -) - -func TestPpoll(t *testing.T) { - f, cleanup := mktmpfifo(t) - defer cleanup() - - const timeout = 100 * time.Millisecond - - ok := make(chan bool, 1) - go func() { - select { - case <-time.After(10 * timeout): - t.Errorf("Ppoll: failed to timeout after %d", 10*timeout) - case <-ok: - } - }() - - fds := []unix.PollFd{{Fd: int32(f.Fd()), Events: unix.POLLIN}} - timeoutTs := unix.NsecToTimespec(int64(timeout)) - n, err := unix.Ppoll(fds, &timeoutTs, nil) - ok <- true - if err != nil { - t.Errorf("Ppoll: unexpected error: %v", err) - return - } - if n != 0 { - t.Errorf("Ppoll: wrong number of events: got %v, expected %v", n, 0) - return - } -} - -func TestSysctlUvmexp(t *testing.T) { - uvm, err := unix.SysctlUvmexp("vm.uvmexp") - if err != nil { - t.Fatal(err) - } - t.Logf("free = %v", uvm.Free) -} diff --git a/src/cmd/vendor/golang.org/x/sys/unix/syscall_solaris_test.go b/src/cmd/vendor/golang.org/x/sys/unix/syscall_solaris_test.go deleted file mode 100644 index 57dba88243548b..00000000000000 --- a/src/cmd/vendor/golang.org/x/sys/unix/syscall_solaris_test.go +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2017 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. - -// +build solaris - -package unix_test - -import ( - "os/exec" - "testing" - "time" - - "golang.org/x/sys/unix" -) - -func TestSelect(t *testing.T) { - err := unix.Select(0, nil, nil, nil, &unix.Timeval{Sec: 0, Usec: 0}) - if err != nil { - t.Fatalf("Select: %v", err) - } - - dur := 150 * time.Millisecond - tv := unix.NsecToTimeval(int64(dur)) - start := time.Now() - err = unix.Select(0, nil, nil, nil, &tv) - took := time.Since(start) - if err != nil { - t.Fatalf("Select: %v", err) - } - - if took < dur { - t.Errorf("Select: timeout should have been at least %v, got %v", dur, took) - } -} - -func TestStatvfs(t *testing.T) { - if err := unix.Statvfs("", nil); err == nil { - t.Fatal(`Statvfs("") expected failure`) - } - - statvfs := unix.Statvfs_t{} - if err := unix.Statvfs("/", &statvfs); err != nil { - t.Errorf(`Statvfs("/") failed: %v`, err) - } - - if t.Failed() { - mount, err := exec.Command("mount").CombinedOutput() - if err != nil { - t.Logf("mount: %v\n%s", err, mount) - } else { - t.Logf("mount: %s", mount) - } - } -} diff --git a/src/cmd/vendor/golang.org/x/sys/unix/syscall_test.go b/src/cmd/vendor/golang.org/x/sys/unix/syscall_test.go deleted file mode 100644 index dc857840a436cc..00000000000000 --- a/src/cmd/vendor/golang.org/x/sys/unix/syscall_test.go +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2013 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. - -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris - -package unix_test - -import ( - "fmt" - "testing" - - "golang.org/x/sys/unix" -) - -func testSetGetenv(t *testing.T, key, value string) { - err := unix.Setenv(key, value) - if err != nil { - t.Fatalf("Setenv failed to set %q: %v", value, err) - } - newvalue, found := unix.Getenv(key) - if !found { - t.Fatalf("Getenv failed to find %v variable (want value %q)", key, value) - } - if newvalue != value { - t.Fatalf("Getenv(%v) = %q; want %q", key, newvalue, value) - } -} - -func TestEnv(t *testing.T) { - testSetGetenv(t, "TESTENV", "AVALUE") - // make sure TESTENV gets set to "", not deleted - testSetGetenv(t, "TESTENV", "") -} - -func TestItoa(t *testing.T) { - // Make most negative integer: 0x8000... - i := 1 - for i<<1 != 0 { - i <<= 1 - } - if i >= 0 { - t.Fatal("bad math") - } - s := unix.Itoa(i) - f := fmt.Sprint(i) - if s != f { - t.Fatalf("itoa(%d) = %s, want %s", i, s, f) - } -} - -func TestUname(t *testing.T) { - var utsname unix.Utsname - err := unix.Uname(&utsname) - if err != nil { - t.Fatalf("Uname: %v", err) - } - - t.Logf("OS: %s/%s %s", utsname.Sysname[:], utsname.Machine[:], utsname.Release[:]) -} diff --git a/src/cmd/vendor/golang.org/x/sys/unix/syscall_unix_test.go b/src/cmd/vendor/golang.org/x/sys/unix/syscall_unix_test.go deleted file mode 100644 index c1b1ea59a0adc5..00000000000000 --- a/src/cmd/vendor/golang.org/x/sys/unix/syscall_unix_test.go +++ /dev/null @@ -1,677 +0,0 @@ -// Copyright 2013 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. - -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris - -package unix_test - -import ( - "flag" - "fmt" - "io/ioutil" - "net" - "os" - "os/exec" - "path/filepath" - "runtime" - "syscall" - "testing" - "time" - - "golang.org/x/sys/unix" -) - -// Tests that below functions, structures and constants are consistent -// on all Unix-like systems. -func _() { - // program scheduling priority functions and constants - var ( - _ func(int, int, int) error = unix.Setpriority - _ func(int, int) (int, error) = unix.Getpriority - ) - const ( - _ int = unix.PRIO_USER - _ int = unix.PRIO_PROCESS - _ int = unix.PRIO_PGRP - ) - - // termios constants - const ( - _ int = unix.TCIFLUSH - _ int = unix.TCIOFLUSH - _ int = unix.TCOFLUSH - ) - - // fcntl file locking structure and constants - var ( - _ = unix.Flock_t{ - Type: int16(0), - Whence: int16(0), - Start: int64(0), - Len: int64(0), - Pid: int32(0), - } - ) - const ( - _ = unix.F_GETLK - _ = unix.F_SETLK - _ = unix.F_SETLKW - ) -} - -func TestErrnoSignalName(t *testing.T) { - testErrors := []struct { - num syscall.Errno - name string - }{ - {syscall.EPERM, "EPERM"}, - {syscall.EINVAL, "EINVAL"}, - {syscall.ENOENT, "ENOENT"}, - } - - for _, te := range testErrors { - t.Run(fmt.Sprintf("%d/%s", te.num, te.name), func(t *testing.T) { - e := unix.ErrnoName(te.num) - if e != te.name { - t.Errorf("ErrnoName(%d) returned %s, want %s", te.num, e, te.name) - } - }) - } - - testSignals := []struct { - num syscall.Signal - name string - }{ - {syscall.SIGHUP, "SIGHUP"}, - {syscall.SIGPIPE, "SIGPIPE"}, - {syscall.SIGSEGV, "SIGSEGV"}, - } - - for _, ts := range testSignals { - t.Run(fmt.Sprintf("%d/%s", ts.num, ts.name), func(t *testing.T) { - s := unix.SignalName(ts.num) - if s != ts.name { - t.Errorf("SignalName(%d) returned %s, want %s", ts.num, s, ts.name) - } - }) - } -} - -func TestFcntlInt(t *testing.T) { - t.Parallel() - file, err := ioutil.TempFile("", "TestFnctlInt") - if err != nil { - t.Fatal(err) - } - defer os.Remove(file.Name()) - defer file.Close() - f := file.Fd() - flags, err := unix.FcntlInt(f, unix.F_GETFD, 0) - if err != nil { - t.Fatal(err) - } - if flags&unix.FD_CLOEXEC == 0 { - t.Errorf("flags %#x do not include FD_CLOEXEC", flags) - } -} - -// TestFcntlFlock tests whether the file locking structure matches -// the calling convention of each kernel. -func TestFcntlFlock(t *testing.T) { - name := filepath.Join(os.TempDir(), "TestFcntlFlock") - fd, err := unix.Open(name, unix.O_CREAT|unix.O_RDWR|unix.O_CLOEXEC, 0) - if err != nil { - t.Fatalf("Open failed: %v", err) - } - defer unix.Unlink(name) - defer unix.Close(fd) - flock := unix.Flock_t{ - Type: unix.F_RDLCK, - Start: 0, Len: 0, Whence: 1, - } - if err := unix.FcntlFlock(uintptr(fd), unix.F_GETLK, &flock); err != nil { - t.Fatalf("FcntlFlock failed: %v", err) - } -} - -// TestPassFD tests passing a file descriptor over a Unix socket. -// -// This test involved both a parent and child process. The parent -// process is invoked as a normal test, with "go test", which then -// runs the child process by running the current test binary with args -// "-test.run=^TestPassFD$" and an environment variable used to signal -// that the test should become the child process instead. -func TestPassFD(t *testing.T) { - if runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64") { - t.Skip("cannot exec subprocess on iOS, skipping test") - } - if runtime.GOOS == "aix" { - t.Skip("getsockname issue on AIX 7.2 tl1, skipping test") - } - - if os.Getenv("GO_WANT_HELPER_PROCESS") == "1" { - passFDChild() - return - } - - tempDir, err := ioutil.TempDir("", "TestPassFD") - if err != nil { - t.Fatal(err) - } - defer os.RemoveAll(tempDir) - - fds, err := unix.Socketpair(unix.AF_LOCAL, unix.SOCK_STREAM, 0) - if err != nil { - t.Fatalf("Socketpair: %v", err) - } - defer unix.Close(fds[0]) - defer unix.Close(fds[1]) - writeFile := os.NewFile(uintptr(fds[0]), "child-writes") - readFile := os.NewFile(uintptr(fds[1]), "parent-reads") - defer writeFile.Close() - defer readFile.Close() - - cmd := exec.Command(os.Args[0], "-test.run=^TestPassFD$", "--", tempDir) - cmd.Env = []string{"GO_WANT_HELPER_PROCESS=1"} - if lp := os.Getenv("LD_LIBRARY_PATH"); lp != "" { - cmd.Env = append(cmd.Env, "LD_LIBRARY_PATH="+lp) - } - cmd.ExtraFiles = []*os.File{writeFile} - - out, err := cmd.CombinedOutput() - if len(out) > 0 || err != nil { - t.Fatalf("child process: %q, %v", out, err) - } - - c, err := net.FileConn(readFile) - if err != nil { - t.Fatalf("FileConn: %v", err) - } - defer c.Close() - - uc, ok := c.(*net.UnixConn) - if !ok { - t.Fatalf("unexpected FileConn type; expected UnixConn, got %T", c) - } - - buf := make([]byte, 32) // expect 1 byte - oob := make([]byte, 32) // expect 24 bytes - closeUnix := time.AfterFunc(5*time.Second, func() { - t.Logf("timeout reading from unix socket") - uc.Close() - }) - _, oobn, _, _, err := uc.ReadMsgUnix(buf, oob) - if err != nil { - t.Fatalf("ReadMsgUnix: %v", err) - } - closeUnix.Stop() - - scms, err := unix.ParseSocketControlMessage(oob[:oobn]) - if err != nil { - t.Fatalf("ParseSocketControlMessage: %v", err) - } - if len(scms) != 1 { - t.Fatalf("expected 1 SocketControlMessage; got scms = %#v", scms) - } - scm := scms[0] - gotFds, err := unix.ParseUnixRights(&scm) - if err != nil { - t.Fatalf("unix.ParseUnixRights: %v", err) - } - if len(gotFds) != 1 { - t.Fatalf("wanted 1 fd; got %#v", gotFds) - } - - f := os.NewFile(uintptr(gotFds[0]), "fd-from-child") - defer f.Close() - - got, err := ioutil.ReadAll(f) - want := "Hello from child process!\n" - if string(got) != want { - t.Errorf("child process ReadAll: %q, %v; want %q", got, err, want) - } -} - -// passFDChild is the child process used by TestPassFD. -func passFDChild() { - defer os.Exit(0) - - // Look for our fd. It should be fd 3, but we work around an fd leak - // bug here (http://golang.org/issue/2603) to let it be elsewhere. - var uc *net.UnixConn - for fd := uintptr(3); fd <= 10; fd++ { - f := os.NewFile(fd, "unix-conn") - var ok bool - netc, _ := net.FileConn(f) - uc, ok = netc.(*net.UnixConn) - if ok { - break - } - } - if uc == nil { - fmt.Println("failed to find unix fd") - return - } - - // Make a file f to send to our parent process on uc. - // We make it in tempDir, which our parent will clean up. - flag.Parse() - tempDir := flag.Arg(0) - f, err := ioutil.TempFile(tempDir, "") - if err != nil { - fmt.Printf("TempFile: %v", err) - return - } - - f.Write([]byte("Hello from child process!\n")) - f.Seek(0, 0) - - rights := unix.UnixRights(int(f.Fd())) - dummyByte := []byte("x") - n, oobn, err := uc.WriteMsgUnix(dummyByte, rights, nil) - if err != nil { - fmt.Printf("WriteMsgUnix: %v", err) - return - } - if n != 1 || oobn != len(rights) { - fmt.Printf("WriteMsgUnix = %d, %d; want 1, %d", n, oobn, len(rights)) - return - } -} - -// TestUnixRightsRoundtrip tests that UnixRights, ParseSocketControlMessage, -// and ParseUnixRights are able to successfully round-trip lists of file descriptors. -func TestUnixRightsRoundtrip(t *testing.T) { - testCases := [...][][]int{ - {{42}}, - {{1, 2}}, - {{3, 4, 5}}, - {{}}, - {{1, 2}, {3, 4, 5}, {}, {7}}, - } - for _, testCase := range testCases { - b := []byte{} - var n int - for _, fds := range testCase { - // Last assignment to n wins - n = len(b) + unix.CmsgLen(4*len(fds)) - b = append(b, unix.UnixRights(fds...)...) - } - // Truncate b - b = b[:n] - - scms, err := unix.ParseSocketControlMessage(b) - if err != nil { - t.Fatalf("ParseSocketControlMessage: %v", err) - } - if len(scms) != len(testCase) { - t.Fatalf("expected %v SocketControlMessage; got scms = %#v", len(testCase), scms) - } - for i, scm := range scms { - gotFds, err := unix.ParseUnixRights(&scm) - if err != nil { - t.Fatalf("ParseUnixRights: %v", err) - } - wantFds := testCase[i] - if len(gotFds) != len(wantFds) { - t.Fatalf("expected %v fds, got %#v", len(wantFds), gotFds) - } - for j, fd := range gotFds { - if fd != wantFds[j] { - t.Fatalf("expected fd %v, got %v", wantFds[j], fd) - } - } - } - } -} - -func TestRlimit(t *testing.T) { - var rlimit, zero unix.Rlimit - err := unix.Getrlimit(unix.RLIMIT_NOFILE, &rlimit) - if err != nil { - t.Fatalf("Getrlimit: save failed: %v", err) - } - if zero == rlimit { - t.Fatalf("Getrlimit: save failed: got zero value %#v", rlimit) - } - set := rlimit - set.Cur = set.Max - 1 - if runtime.GOOS == "darwin" && set.Cur > 10240 { - // The max file limit is 10240, even though - // the max returned by Getrlimit is 1<<63-1. - // This is OPEN_MAX in sys/syslimits.h. - set.Cur = 10240 - } - err = unix.Setrlimit(unix.RLIMIT_NOFILE, &set) - if err != nil { - t.Fatalf("Setrlimit: set failed: %#v %v", set, err) - } - var get unix.Rlimit - err = unix.Getrlimit(unix.RLIMIT_NOFILE, &get) - if err != nil { - t.Fatalf("Getrlimit: get failed: %v", err) - } - set = rlimit - set.Cur = set.Max - 1 - if set != get { - // Seems like Darwin requires some privilege to - // increase the soft limit of rlimit sandbox, though - // Setrlimit never reports an error. - switch runtime.GOOS { - case "darwin": - default: - t.Fatalf("Rlimit: change failed: wanted %#v got %#v", set, get) - } - } - err = unix.Setrlimit(unix.RLIMIT_NOFILE, &rlimit) - if err != nil { - t.Fatalf("Setrlimit: restore failed: %#v %v", rlimit, err) - } -} - -func TestSeekFailure(t *testing.T) { - _, err := unix.Seek(-1, 0, 0) - if err == nil { - t.Fatalf("Seek(-1, 0, 0) did not fail") - } - str := err.Error() // used to crash on Linux - t.Logf("Seek: %v", str) - if str == "" { - t.Fatalf("Seek(-1, 0, 0) return error with empty message") - } -} - -func TestDup(t *testing.T) { - file, err := ioutil.TempFile("", "TestDup") - if err != nil { - t.Fatalf("Tempfile failed: %v", err) - } - defer os.Remove(file.Name()) - defer file.Close() - f := int(file.Fd()) - - newFd, err := unix.Dup(f) - if err != nil { - t.Fatalf("Dup: %v", err) - } - - err = unix.Dup2(newFd, newFd+1) - if err != nil { - t.Fatalf("Dup2: %v", err) - } - - b1 := []byte("Test123") - b2 := make([]byte, 7) - _, err = unix.Write(newFd+1, b1) - if err != nil { - t.Fatalf("Write to dup2 fd failed: %v", err) - } - _, err = unix.Seek(f, 0, 0) - if err != nil { - t.Fatalf("Seek failed: %v", err) - } - _, err = unix.Read(f, b2) - if err != nil { - t.Fatalf("Read back failed: %v", err) - } - if string(b1) != string(b2) { - t.Errorf("Dup: stdout write not in file, expected %v, got %v", string(b1), string(b2)) - } -} - -func TestPoll(t *testing.T) { - if runtime.GOOS == "android" || - (runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64")) { - t.Skip("mkfifo syscall is not available on android and iOS, skipping test") - } - - f, cleanup := mktmpfifo(t) - defer cleanup() - - const timeout = 100 - - ok := make(chan bool, 1) - go func() { - select { - case <-time.After(10 * timeout * time.Millisecond): - t.Errorf("Poll: failed to timeout after %d milliseconds", 10*timeout) - case <-ok: - } - }() - - fds := []unix.PollFd{{Fd: int32(f.Fd()), Events: unix.POLLIN}} - n, err := unix.Poll(fds, timeout) - ok <- true - if err != nil { - t.Errorf("Poll: unexpected error: %v", err) - return - } - if n != 0 { - t.Errorf("Poll: wrong number of events: got %v, expected %v", n, 0) - return - } -} - -func TestGetwd(t *testing.T) { - fd, err := os.Open(".") - if err != nil { - t.Fatalf("Open .: %s", err) - } - defer fd.Close() - // Directory list for test. Do not worry if any are symlinks or do not - // exist on some common unix desktop environments. That will be checked. - dirs := []string{"/", "/usr/bin", "/etc", "/var", "/opt"} - switch runtime.GOOS { - case "android": - dirs = []string{"/", "/system/bin"} - case "darwin": - switch runtime.GOARCH { - case "arm", "arm64": - d1, err := ioutil.TempDir("", "d1") - if err != nil { - t.Fatalf("TempDir: %v", err) - } - d2, err := ioutil.TempDir("", "d2") - if err != nil { - t.Fatalf("TempDir: %v", err) - } - dirs = []string{d1, d2} - } - } - oldwd := os.Getenv("PWD") - for _, d := range dirs { - // Check whether d exists, is a dir and that d's path does not contain a symlink - fi, err := os.Stat(d) - if err != nil || !fi.IsDir() { - t.Logf("Test dir %s stat error (%v) or not a directory, skipping", d, err) - continue - } - check, err := filepath.EvalSymlinks(d) - if err != nil || check != d { - t.Logf("Test dir %s (%s) is symlink or other error (%v), skipping", d, check, err) - continue - } - err = os.Chdir(d) - if err != nil { - t.Fatalf("Chdir: %v", err) - } - pwd, err := unix.Getwd() - if err != nil { - t.Fatalf("Getwd in %s: %s", d, err) - } - os.Setenv("PWD", oldwd) - err = fd.Chdir() - if err != nil { - // We changed the current directory and cannot go back. - // Don't let the tests continue; they'll scribble - // all over some other directory. - fmt.Fprintf(os.Stderr, "fchdir back to dot failed: %s\n", err) - os.Exit(1) - } - if pwd != d { - t.Fatalf("Getwd returned %q want %q", pwd, d) - } - } -} - -func TestFstatat(t *testing.T) { - defer chtmpdir(t)() - - touch(t, "file1") - - var st1 unix.Stat_t - err := unix.Stat("file1", &st1) - if err != nil { - t.Fatalf("Stat: %v", err) - } - - var st2 unix.Stat_t - err = unix.Fstatat(unix.AT_FDCWD, "file1", &st2, 0) - if err != nil { - t.Fatalf("Fstatat: %v", err) - } - - if st1 != st2 { - t.Errorf("Fstatat: returned stat does not match Stat") - } - - err = os.Symlink("file1", "symlink1") - if err != nil { - t.Fatal(err) - } - - err = unix.Lstat("symlink1", &st1) - if err != nil { - t.Fatalf("Lstat: %v", err) - } - - err = unix.Fstatat(unix.AT_FDCWD, "symlink1", &st2, unix.AT_SYMLINK_NOFOLLOW) - if err != nil { - t.Fatalf("Fstatat: %v", err) - } - - if st1 != st2 { - t.Errorf("Fstatat: returned stat does not match Lstat") - } -} - -func TestFchmodat(t *testing.T) { - defer chtmpdir(t)() - - touch(t, "file1") - err := os.Symlink("file1", "symlink1") - if err != nil { - t.Fatal(err) - } - - mode := os.FileMode(0444) - err = unix.Fchmodat(unix.AT_FDCWD, "symlink1", uint32(mode), 0) - if err != nil { - t.Fatalf("Fchmodat: unexpected error: %v", err) - } - - fi, err := os.Stat("file1") - if err != nil { - t.Fatal(err) - } - - if fi.Mode() != mode { - t.Errorf("Fchmodat: failed to change file mode: expected %v, got %v", mode, fi.Mode()) - } - - mode = os.FileMode(0644) - didChmodSymlink := true - err = unix.Fchmodat(unix.AT_FDCWD, "symlink1", uint32(mode), unix.AT_SYMLINK_NOFOLLOW) - if err != nil { - if (runtime.GOOS == "android" || runtime.GOOS == "linux" || runtime.GOOS == "solaris") && err == unix.EOPNOTSUPP { - // Linux and Illumos don't support flags != 0 - didChmodSymlink = false - } else { - t.Fatalf("Fchmodat: unexpected error: %v", err) - } - } - - if !didChmodSymlink { - // Didn't change mode of the symlink. On Linux, the permissions - // of a symbolic link are always 0777 according to symlink(7) - mode = os.FileMode(0777) - } - - var st unix.Stat_t - err = unix.Lstat("symlink1", &st) - if err != nil { - t.Fatal(err) - } - - got := os.FileMode(st.Mode & 0777) - if got != mode { - t.Errorf("Fchmodat: failed to change symlink mode: expected %v, got %v", mode, got) - } -} - -func TestMkdev(t *testing.T) { - major := uint32(42) - minor := uint32(7) - dev := unix.Mkdev(major, minor) - - if unix.Major(dev) != major { - t.Errorf("Major(%#x) == %d, want %d", dev, unix.Major(dev), major) - } - if unix.Minor(dev) != minor { - t.Errorf("Minor(%#x) == %d, want %d", dev, unix.Minor(dev), minor) - } -} - -// mktmpfifo creates a temporary FIFO and provides a cleanup function. -func mktmpfifo(t *testing.T) (*os.File, func()) { - err := unix.Mkfifo("fifo", 0666) - if err != nil { - t.Fatalf("mktmpfifo: failed to create FIFO: %v", err) - } - - f, err := os.OpenFile("fifo", os.O_RDWR, 0666) - if err != nil { - os.Remove("fifo") - t.Fatalf("mktmpfifo: failed to open FIFO: %v", err) - } - - return f, func() { - f.Close() - os.Remove("fifo") - } -} - -// utilities taken from os/os_test.go - -func touch(t *testing.T, name string) { - f, err := os.Create(name) - if err != nil { - t.Fatal(err) - } - if err := f.Close(); err != nil { - t.Fatal(err) - } -} - -// chtmpdir changes the working directory to a new temporary directory and -// provides a cleanup function. Used when PWD is read-only. -func chtmpdir(t *testing.T) func() { - oldwd, err := os.Getwd() - if err != nil { - t.Fatalf("chtmpdir: %v", err) - } - d, err := ioutil.TempDir("", "test") - if err != nil { - t.Fatalf("chtmpdir: %v", err) - } - if err := os.Chdir(d); err != nil { - t.Fatalf("chtmpdir: %v", err) - } - return func() { - if err := os.Chdir(oldwd); err != nil { - t.Fatalf("chtmpdir: %v", err) - } - os.RemoveAll(d) - } -} diff --git a/src/cmd/vendor/golang.org/x/sys/unix/timestruct_test.go b/src/cmd/vendor/golang.org/x/sys/unix/timestruct_test.go deleted file mode 100644 index 1a72fdb362af91..00000000000000 --- a/src/cmd/vendor/golang.org/x/sys/unix/timestruct_test.go +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2017 The Go Authors. All right reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris - -package unix_test - -import ( - "testing" - "time" - "unsafe" - - "golang.org/x/sys/unix" -) - -func TestTimeToTimespec(t *testing.T) { - timeTests := []struct { - time time.Time - valid bool - }{ - {time.Unix(0, 0), true}, - {time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC), true}, - {time.Date(2262, time.December, 31, 23, 0, 0, 0, time.UTC), false}, - {time.Unix(0x7FFFFFFF, 0), true}, - {time.Unix(0x80000000, 0), false}, - {time.Unix(0x7FFFFFFF, 1000000000), false}, - {time.Unix(0x7FFFFFFF, 999999999), true}, - {time.Unix(-0x80000000, 0), true}, - {time.Unix(-0x80000001, 0), false}, - {time.Date(2038, time.January, 19, 3, 14, 7, 0, time.UTC), true}, - {time.Date(2038, time.January, 19, 3, 14, 8, 0, time.UTC), false}, - {time.Date(1901, time.December, 13, 20, 45, 52, 0, time.UTC), true}, - {time.Date(1901, time.December, 13, 20, 45, 51, 0, time.UTC), false}, - } - - // Currently all targets have either int32 or int64 for Timespec.Sec. - // If there were a new target with unsigned or floating point type for - // it, this test must be adjusted. - have64BitTime := (unsafe.Sizeof(unix.Timespec{}.Sec) == 8) - for _, tt := range timeTests { - ts, err := unix.TimeToTimespec(tt.time) - tt.valid = tt.valid || have64BitTime - if tt.valid && err != nil { - t.Errorf("TimeToTimespec(%v): %v", tt.time, err) - } - if err == nil { - tstime := time.Unix(int64(ts.Sec), int64(ts.Nsec)) - if !tstime.Equal(tt.time) { - t.Errorf("TimeToTimespec(%v) is the time %v", tt.time, tstime) - } - } - } -} diff --git a/src/cmd/vendor/golang.org/x/sys/unix/xattr_test.go b/src/cmd/vendor/golang.org/x/sys/unix/xattr_test.go deleted file mode 100644 index 57fc84fb0f870a..00000000000000 --- a/src/cmd/vendor/golang.org/x/sys/unix/xattr_test.go +++ /dev/null @@ -1,207 +0,0 @@ -// Copyright 2018 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. - -// +build darwin freebsd linux netbsd - -package unix_test - -import ( - "io/ioutil" - "os" - "runtime" - "strings" - "testing" - - "golang.org/x/sys/unix" -) - -func TestXattr(t *testing.T) { - defer chtmpdir(t)() - - f := "xattr1" - touch(t, f) - - xattrName := "user.test" - xattrDataSet := "gopher" - - err := unix.Setxattr(f, xattrName, []byte{}, 0) - if err == unix.ENOTSUP || err == unix.EOPNOTSUPP { - t.Skip("filesystem does not support extended attributes, skipping test") - } else if err != nil { - t.Fatalf("Setxattr: %v", err) - } - - err = unix.Setxattr(f, xattrName, []byte(xattrDataSet), 0) - if err != nil { - t.Fatalf("Setxattr: %v", err) - } - - // find size - size, err := unix.Listxattr(f, nil) - if err != nil { - t.Fatalf("Listxattr: %v", err) - } - - if size <= 0 { - t.Fatalf("Listxattr returned an empty list of attributes") - } - - buf := make([]byte, size) - read, err := unix.Listxattr(f, buf) - if err != nil { - t.Fatalf("Listxattr: %v", err) - } - - xattrs := stringsFromByteSlice(buf[:read]) - - xattrWant := xattrName - if runtime.GOOS == "freebsd" { - // On FreeBSD, the namespace is stored separately from the xattr - // name and Listxattr doesn't return the namespace prefix. - xattrWant = strings.TrimPrefix(xattrWant, "user.") - } - found := false - for _, name := range xattrs { - if name == xattrWant { - found = true - } - } - - if !found { - t.Errorf("Listxattr did not return previously set attribute '%s'", xattrName) - } - - // find size - size, err = unix.Getxattr(f, xattrName, nil) - if err != nil { - t.Fatalf("Getxattr: %v", err) - } - - if size <= 0 { - t.Fatalf("Getxattr returned an empty attribute") - } - - xattrDataGet := make([]byte, size) - _, err = unix.Getxattr(f, xattrName, xattrDataGet) - if err != nil { - t.Fatalf("Getxattr: %v", err) - } - - got := string(xattrDataGet) - if got != xattrDataSet { - t.Errorf("Getxattr: expected attribute value %s, got %s", xattrDataSet, got) - } - - err = unix.Removexattr(f, xattrName) - if err != nil { - t.Fatalf("Removexattr: %v", err) - } - - n := "nonexistent" - err = unix.Lsetxattr(n, xattrName, []byte(xattrDataSet), 0) - if err != unix.ENOENT { - t.Errorf("Lsetxattr: expected %v on non-existent file, got %v", unix.ENOENT, err) - } - - _, err = unix.Lgetxattr(n, xattrName, nil) - if err != unix.ENOENT { - t.Errorf("Lgetxattr: %v", err) - } - - s := "symlink1" - err = os.Symlink(n, s) - if err != nil { - t.Fatal(err) - } - - err = unix.Lsetxattr(s, xattrName, []byte(xattrDataSet), 0) - if err != nil { - // Linux and Android doen't support xattrs on symlinks according - // to xattr(7), so just test that we get the proper error. - if (runtime.GOOS != "linux" && runtime.GOOS != "android") || err != unix.EPERM { - t.Fatalf("Lsetxattr: %v", err) - } - } -} - -func TestFdXattr(t *testing.T) { - file, err := ioutil.TempFile("", "TestFdXattr") - if err != nil { - t.Fatal(err) - } - defer os.Remove(file.Name()) - defer file.Close() - - fd := int(file.Fd()) - xattrName := "user.test" - xattrDataSet := "gopher" - - err = unix.Fsetxattr(fd, xattrName, []byte(xattrDataSet), 0) - if err == unix.ENOTSUP || err == unix.EOPNOTSUPP { - t.Skip("filesystem does not support extended attributes, skipping test") - } else if err != nil { - t.Fatalf("Fsetxattr: %v", err) - } - - // find size - size, err := unix.Flistxattr(fd, nil) - if err != nil { - t.Fatalf("Flistxattr: %v", err) - } - - if size <= 0 { - t.Fatalf("Flistxattr returned an empty list of attributes") - } - - buf := make([]byte, size) - read, err := unix.Flistxattr(fd, buf) - if err != nil { - t.Fatalf("Flistxattr: %v", err) - } - - xattrs := stringsFromByteSlice(buf[:read]) - - xattrWant := xattrName - if runtime.GOOS == "freebsd" { - // On FreeBSD, the namespace is stored separately from the xattr - // name and Listxattr doesn't return the namespace prefix. - xattrWant = strings.TrimPrefix(xattrWant, "user.") - } - found := false - for _, name := range xattrs { - if name == xattrWant { - found = true - } - } - - if !found { - t.Errorf("Flistxattr did not return previously set attribute '%s'", xattrName) - } - - // find size - size, err = unix.Fgetxattr(fd, xattrName, nil) - if err != nil { - t.Fatalf("Fgetxattr: %v", err) - } - - if size <= 0 { - t.Fatalf("Fgetxattr returned an empty attribute") - } - - xattrDataGet := make([]byte, size) - _, err = unix.Fgetxattr(fd, xattrName, xattrDataGet) - if err != nil { - t.Fatalf("Fgetxattr: %v", err) - } - - got := string(xattrDataGet) - if got != xattrDataSet { - t.Errorf("Fgetxattr: expected attribute value %s, got %s", xattrDataSet, got) - } - - err = unix.Fremovexattr(fd, xattrName) - if err != nil { - t.Fatalf("Fremovexattr: %v", err) - } -} diff --git a/src/cmd/vendor/golang.org/x/sys/windows/registry/export_test.go b/src/cmd/vendor/golang.org/x/sys/windows/registry/export_test.go deleted file mode 100644 index 8badf6fdcf1f9a..00000000000000 --- a/src/cmd/vendor/golang.org/x/sys/windows/registry/export_test.go +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2015 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. - -// +build windows - -package registry - -func (k Key) SetValue(name string, valtype uint32, data []byte) error { - return k.setValue(name, valtype, data) -} diff --git a/src/cmd/vendor/golang.org/x/sys/windows/registry/registry_test.go b/src/cmd/vendor/golang.org/x/sys/windows/registry/registry_test.go deleted file mode 100644 index 2f4dd69ef90f41..00000000000000 --- a/src/cmd/vendor/golang.org/x/sys/windows/registry/registry_test.go +++ /dev/null @@ -1,756 +0,0 @@ -// Copyright 2015 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. - -// +build windows - -package registry_test - -import ( - "bytes" - "crypto/rand" - "os" - "syscall" - "testing" - "time" - "unsafe" - - "golang.org/x/sys/windows/registry" -) - -func randKeyName(prefix string) string { - const numbers = "0123456789" - buf := make([]byte, 10) - rand.Read(buf) - for i, b := range buf { - buf[i] = numbers[b%byte(len(numbers))] - } - return prefix + string(buf) -} - -func TestReadSubKeyNames(t *testing.T) { - k, err := registry.OpenKey(registry.CLASSES_ROOT, "TypeLib", registry.ENUMERATE_SUB_KEYS) - if err != nil { - t.Fatal(err) - } - defer k.Close() - - names, err := k.ReadSubKeyNames(-1) - if err != nil { - t.Fatal(err) - } - var foundStdOle bool - for _, name := range names { - // Every PC has "stdole 2.0 OLE Automation" library installed. - if name == "{00020430-0000-0000-C000-000000000046}" { - foundStdOle = true - } - } - if !foundStdOle { - t.Fatal("could not find stdole 2.0 OLE Automation") - } -} - -func TestCreateOpenDeleteKey(t *testing.T) { - k, err := registry.OpenKey(registry.CURRENT_USER, "Software", registry.QUERY_VALUE) - if err != nil { - t.Fatal(err) - } - defer k.Close() - - testKName := randKeyName("TestCreateOpenDeleteKey_") - - testK, exist, err := registry.CreateKey(k, testKName, registry.CREATE_SUB_KEY) - if err != nil { - t.Fatal(err) - } - defer testK.Close() - - if exist { - t.Fatalf("key %q already exists", testKName) - } - - testKAgain, exist, err := registry.CreateKey(k, testKName, registry.CREATE_SUB_KEY) - if err != nil { - t.Fatal(err) - } - defer testKAgain.Close() - - if !exist { - t.Fatalf("key %q should already exist", testKName) - } - - testKOpened, err := registry.OpenKey(k, testKName, registry.ENUMERATE_SUB_KEYS) - if err != nil { - t.Fatal(err) - } - defer testKOpened.Close() - - err = registry.DeleteKey(k, testKName) - if err != nil { - t.Fatal(err) - } - - testKOpenedAgain, err := registry.OpenKey(k, testKName, registry.ENUMERATE_SUB_KEYS) - if err == nil { - defer testKOpenedAgain.Close() - t.Fatalf("key %q should already been deleted", testKName) - } - if err != registry.ErrNotExist { - t.Fatalf(`unexpected error ("not exist" expected): %v`, err) - } -} - -func equalStringSlice(a, b []string) bool { - if len(a) != len(b) { - return false - } - if a == nil { - return true - } - for i := range a { - if a[i] != b[i] { - return false - } - } - return true -} - -type ValueTest struct { - Type uint32 - Name string - Value interface{} - WillFail bool -} - -var ValueTests = []ValueTest{ - {Type: registry.SZ, Name: "String1", Value: ""}, - {Type: registry.SZ, Name: "String2", Value: "\000", WillFail: true}, - {Type: registry.SZ, Name: "String3", Value: "Hello World"}, - {Type: registry.SZ, Name: "String4", Value: "Hello World\000", WillFail: true}, - {Type: registry.EXPAND_SZ, Name: "ExpString1", Value: ""}, - {Type: registry.EXPAND_SZ, Name: "ExpString2", Value: "\000", WillFail: true}, - {Type: registry.EXPAND_SZ, Name: "ExpString3", Value: "Hello World"}, - {Type: registry.EXPAND_SZ, Name: "ExpString4", Value: "Hello\000World", WillFail: true}, - {Type: registry.EXPAND_SZ, Name: "ExpString5", Value: "%PATH%"}, - {Type: registry.EXPAND_SZ, Name: "ExpString6", Value: "%NO_SUCH_VARIABLE%"}, - {Type: registry.EXPAND_SZ, Name: "ExpString7", Value: "%PATH%;."}, - {Type: registry.BINARY, Name: "Binary1", Value: []byte{}}, - {Type: registry.BINARY, Name: "Binary2", Value: []byte{1, 2, 3}}, - {Type: registry.BINARY, Name: "Binary3", Value: []byte{3, 2, 1, 0, 1, 2, 3}}, - {Type: registry.DWORD, Name: "Dword1", Value: uint64(0)}, - {Type: registry.DWORD, Name: "Dword2", Value: uint64(1)}, - {Type: registry.DWORD, Name: "Dword3", Value: uint64(0xff)}, - {Type: registry.DWORD, Name: "Dword4", Value: uint64(0xffff)}, - {Type: registry.QWORD, Name: "Qword1", Value: uint64(0)}, - {Type: registry.QWORD, Name: "Qword2", Value: uint64(1)}, - {Type: registry.QWORD, Name: "Qword3", Value: uint64(0xff)}, - {Type: registry.QWORD, Name: "Qword4", Value: uint64(0xffff)}, - {Type: registry.QWORD, Name: "Qword5", Value: uint64(0xffffff)}, - {Type: registry.QWORD, Name: "Qword6", Value: uint64(0xffffffff)}, - {Type: registry.MULTI_SZ, Name: "MultiString1", Value: []string{"a", "b", "c"}}, - {Type: registry.MULTI_SZ, Name: "MultiString2", Value: []string{"abc", "", "cba"}}, - {Type: registry.MULTI_SZ, Name: "MultiString3", Value: []string{""}}, - {Type: registry.MULTI_SZ, Name: "MultiString4", Value: []string{"abcdef"}}, - {Type: registry.MULTI_SZ, Name: "MultiString5", Value: []string{"\000"}, WillFail: true}, - {Type: registry.MULTI_SZ, Name: "MultiString6", Value: []string{"a\000b"}, WillFail: true}, - {Type: registry.MULTI_SZ, Name: "MultiString7", Value: []string{"ab", "\000", "cd"}, WillFail: true}, - {Type: registry.MULTI_SZ, Name: "MultiString8", Value: []string{"\000", "cd"}, WillFail: true}, - {Type: registry.MULTI_SZ, Name: "MultiString9", Value: []string{"ab", "\000"}, WillFail: true}, -} - -func setValues(t *testing.T, k registry.Key) { - for _, test := range ValueTests { - var err error - switch test.Type { - case registry.SZ: - err = k.SetStringValue(test.Name, test.Value.(string)) - case registry.EXPAND_SZ: - err = k.SetExpandStringValue(test.Name, test.Value.(string)) - case registry.MULTI_SZ: - err = k.SetStringsValue(test.Name, test.Value.([]string)) - case registry.BINARY: - err = k.SetBinaryValue(test.Name, test.Value.([]byte)) - case registry.DWORD: - err = k.SetDWordValue(test.Name, uint32(test.Value.(uint64))) - case registry.QWORD: - err = k.SetQWordValue(test.Name, test.Value.(uint64)) - default: - t.Fatalf("unsupported type %d for %s value", test.Type, test.Name) - } - if test.WillFail { - if err == nil { - t.Fatalf("setting %s value %q should fail, but succeeded", test.Name, test.Value) - } - } else { - if err != nil { - t.Fatal(err) - } - } - } -} - -func enumerateValues(t *testing.T, k registry.Key) { - names, err := k.ReadValueNames(-1) - if err != nil { - t.Error(err) - return - } - haveNames := make(map[string]bool) - for _, n := range names { - haveNames[n] = false - } - for _, test := range ValueTests { - wantFound := !test.WillFail - _, haveFound := haveNames[test.Name] - if wantFound && !haveFound { - t.Errorf("value %s is not found while enumerating", test.Name) - } - if haveFound && !wantFound { - t.Errorf("value %s is found while enumerating, but expected to fail", test.Name) - } - if haveFound { - delete(haveNames, test.Name) - } - } - for n, v := range haveNames { - t.Errorf("value %s (%v) is found while enumerating, but has not been cretaed", n, v) - } -} - -func testErrNotExist(t *testing.T, name string, err error) { - if err == nil { - t.Errorf("%s value should not exist", name) - return - } - if err != registry.ErrNotExist { - t.Errorf("reading %s value should return 'not exist' error, but got: %s", name, err) - return - } -} - -func testErrUnexpectedType(t *testing.T, test ValueTest, gottype uint32, err error) { - if err == nil { - t.Errorf("GetXValue(%q) should not succeed", test.Name) - return - } - if err != registry.ErrUnexpectedType { - t.Errorf("reading %s value should return 'unexpected key value type' error, but got: %s", test.Name, err) - return - } - if gottype != test.Type { - t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype) - return - } -} - -func testGetStringValue(t *testing.T, k registry.Key, test ValueTest) { - got, gottype, err := k.GetStringValue(test.Name) - if err != nil { - t.Errorf("GetStringValue(%s) failed: %v", test.Name, err) - return - } - if got != test.Value { - t.Errorf("want %s value %q, got %q", test.Name, test.Value, got) - return - } - if gottype != test.Type { - t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype) - return - } - if gottype == registry.EXPAND_SZ { - _, err = registry.ExpandString(got) - if err != nil { - t.Errorf("ExpandString(%s) failed: %v", got, err) - return - } - } -} - -func testGetIntegerValue(t *testing.T, k registry.Key, test ValueTest) { - got, gottype, err := k.GetIntegerValue(test.Name) - if err != nil { - t.Errorf("GetIntegerValue(%s) failed: %v", test.Name, err) - return - } - if got != test.Value.(uint64) { - t.Errorf("want %s value %v, got %v", test.Name, test.Value, got) - return - } - if gottype != test.Type { - t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype) - return - } -} - -func testGetBinaryValue(t *testing.T, k registry.Key, test ValueTest) { - got, gottype, err := k.GetBinaryValue(test.Name) - if err != nil { - t.Errorf("GetBinaryValue(%s) failed: %v", test.Name, err) - return - } - if !bytes.Equal(got, test.Value.([]byte)) { - t.Errorf("want %s value %v, got %v", test.Name, test.Value, got) - return - } - if gottype != test.Type { - t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype) - return - } -} - -func testGetStringsValue(t *testing.T, k registry.Key, test ValueTest) { - got, gottype, err := k.GetStringsValue(test.Name) - if err != nil { - t.Errorf("GetStringsValue(%s) failed: %v", test.Name, err) - return - } - if !equalStringSlice(got, test.Value.([]string)) { - t.Errorf("want %s value %#v, got %#v", test.Name, test.Value, got) - return - } - if gottype != test.Type { - t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype) - return - } -} - -func testGetValue(t *testing.T, k registry.Key, test ValueTest, size int) { - if size <= 0 { - return - } - // read data with no buffer - gotsize, gottype, err := k.GetValue(test.Name, nil) - if err != nil { - t.Errorf("GetValue(%s, [%d]byte) failed: %v", test.Name, size, err) - return - } - if gotsize != size { - t.Errorf("want %s value size of %d, got %v", test.Name, size, gotsize) - return - } - if gottype != test.Type { - t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype) - return - } - // read data with short buffer - gotsize, gottype, err = k.GetValue(test.Name, make([]byte, size-1)) - if err == nil { - t.Errorf("GetValue(%s, [%d]byte) should fail, but succeeded", test.Name, size-1) - return - } - if err != registry.ErrShortBuffer { - t.Errorf("reading %s value should return 'short buffer' error, but got: %s", test.Name, err) - return - } - if gotsize != size { - t.Errorf("want %s value size of %d, got %v", test.Name, size, gotsize) - return - } - if gottype != test.Type { - t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype) - return - } - // read full data - gotsize, gottype, err = k.GetValue(test.Name, make([]byte, size)) - if err != nil { - t.Errorf("GetValue(%s, [%d]byte) failed: %v", test.Name, size, err) - return - } - if gotsize != size { - t.Errorf("want %s value size of %d, got %v", test.Name, size, gotsize) - return - } - if gottype != test.Type { - t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype) - return - } - // check GetValue returns ErrNotExist as required - _, _, err = k.GetValue(test.Name+"_not_there", make([]byte, size)) - if err == nil { - t.Errorf("GetValue(%q) should not succeed", test.Name) - return - } - if err != registry.ErrNotExist { - t.Errorf("GetValue(%q) should return 'not exist' error, but got: %s", test.Name, err) - return - } -} - -func testValues(t *testing.T, k registry.Key) { - for _, test := range ValueTests { - switch test.Type { - case registry.SZ, registry.EXPAND_SZ: - if test.WillFail { - _, _, err := k.GetStringValue(test.Name) - testErrNotExist(t, test.Name, err) - } else { - testGetStringValue(t, k, test) - _, gottype, err := k.GetIntegerValue(test.Name) - testErrUnexpectedType(t, test, gottype, err) - // Size of utf16 string in bytes is not perfect, - // but correct for current test values. - // Size also includes terminating 0. - testGetValue(t, k, test, (len(test.Value.(string))+1)*2) - } - _, _, err := k.GetStringValue(test.Name + "_string_not_created") - testErrNotExist(t, test.Name+"_string_not_created", err) - case registry.DWORD, registry.QWORD: - testGetIntegerValue(t, k, test) - _, gottype, err := k.GetBinaryValue(test.Name) - testErrUnexpectedType(t, test, gottype, err) - _, _, err = k.GetIntegerValue(test.Name + "_int_not_created") - testErrNotExist(t, test.Name+"_int_not_created", err) - size := 8 - if test.Type == registry.DWORD { - size = 4 - } - testGetValue(t, k, test, size) - case registry.BINARY: - testGetBinaryValue(t, k, test) - _, gottype, err := k.GetStringsValue(test.Name) - testErrUnexpectedType(t, test, gottype, err) - _, _, err = k.GetBinaryValue(test.Name + "_byte_not_created") - testErrNotExist(t, test.Name+"_byte_not_created", err) - testGetValue(t, k, test, len(test.Value.([]byte))) - case registry.MULTI_SZ: - if test.WillFail { - _, _, err := k.GetStringsValue(test.Name) - testErrNotExist(t, test.Name, err) - } else { - testGetStringsValue(t, k, test) - _, gottype, err := k.GetStringValue(test.Name) - testErrUnexpectedType(t, test, gottype, err) - size := 0 - for _, s := range test.Value.([]string) { - size += len(s) + 1 // nil terminated - } - size += 1 // extra nil at the end - size *= 2 // count bytes, not uint16 - testGetValue(t, k, test, size) - } - _, _, err := k.GetStringsValue(test.Name + "_strings_not_created") - testErrNotExist(t, test.Name+"_strings_not_created", err) - default: - t.Errorf("unsupported type %d for %s value", test.Type, test.Name) - continue - } - } -} - -func testStat(t *testing.T, k registry.Key) { - subk, _, err := registry.CreateKey(k, "subkey", registry.CREATE_SUB_KEY) - if err != nil { - t.Error(err) - return - } - defer subk.Close() - - defer registry.DeleteKey(k, "subkey") - - ki, err := k.Stat() - if err != nil { - t.Error(err) - return - } - if ki.SubKeyCount != 1 { - t.Error("key must have 1 subkey") - } - if ki.MaxSubKeyLen != 6 { - t.Error("key max subkey name length must be 6") - } - if ki.ValueCount != 24 { - t.Errorf("key must have 24 values, but is %d", ki.ValueCount) - } - if ki.MaxValueNameLen != 12 { - t.Errorf("key max value name length must be 10, but is %d", ki.MaxValueNameLen) - } - if ki.MaxValueLen != 38 { - t.Errorf("key max value length must be 38, but is %d", ki.MaxValueLen) - } - if mt, ct := ki.ModTime(), time.Now(); ct.Sub(mt) > 100*time.Millisecond { - t.Errorf("key mod time is not close to current time: mtime=%v current=%v delta=%v", mt, ct, ct.Sub(mt)) - } -} - -func deleteValues(t *testing.T, k registry.Key) { - for _, test := range ValueTests { - if test.WillFail { - continue - } - err := k.DeleteValue(test.Name) - if err != nil { - t.Error(err) - continue - } - } - names, err := k.ReadValueNames(-1) - if err != nil { - t.Error(err) - return - } - if len(names) != 0 { - t.Errorf("some values remain after deletion: %v", names) - } -} - -func TestValues(t *testing.T) { - softwareK, err := registry.OpenKey(registry.CURRENT_USER, "Software", registry.QUERY_VALUE) - if err != nil { - t.Fatal(err) - } - defer softwareK.Close() - - testKName := randKeyName("TestValues_") - - k, exist, err := registry.CreateKey(softwareK, testKName, registry.CREATE_SUB_KEY|registry.QUERY_VALUE|registry.SET_VALUE) - if err != nil { - t.Fatal(err) - } - defer k.Close() - - if exist { - t.Fatalf("key %q already exists", testKName) - } - - defer registry.DeleteKey(softwareK, testKName) - - setValues(t, k) - - enumerateValues(t, k) - - testValues(t, k) - - testStat(t, k) - - deleteValues(t, k) -} - -func walkKey(t *testing.T, k registry.Key, kname string) { - names, err := k.ReadValueNames(-1) - if err != nil { - t.Fatalf("reading value names of %s failed: %v", kname, err) - } - for _, name := range names { - _, valtype, err := k.GetValue(name, nil) - if err != nil { - t.Fatalf("reading value type of %s of %s failed: %v", name, kname, err) - } - switch valtype { - case registry.NONE: - case registry.SZ: - _, _, err := k.GetStringValue(name) - if err != nil { - t.Error(err) - } - case registry.EXPAND_SZ: - s, _, err := k.GetStringValue(name) - if err != nil { - t.Error(err) - } - _, err = registry.ExpandString(s) - if err != nil { - t.Error(err) - } - case registry.DWORD, registry.QWORD: - _, _, err := k.GetIntegerValue(name) - if err != nil { - t.Error(err) - } - case registry.BINARY: - _, _, err := k.GetBinaryValue(name) - if err != nil { - t.Error(err) - } - case registry.MULTI_SZ: - _, _, err := k.GetStringsValue(name) - if err != nil { - t.Error(err) - } - case registry.FULL_RESOURCE_DESCRIPTOR, registry.RESOURCE_LIST, registry.RESOURCE_REQUIREMENTS_LIST: - // TODO: not implemented - default: - t.Fatalf("value type %d of %s of %s failed: %v", valtype, name, kname, err) - } - } - - names, err = k.ReadSubKeyNames(-1) - if err != nil { - t.Fatalf("reading sub-keys of %s failed: %v", kname, err) - } - for _, name := range names { - func() { - subk, err := registry.OpenKey(k, name, registry.ENUMERATE_SUB_KEYS|registry.QUERY_VALUE) - if err != nil { - if err == syscall.ERROR_ACCESS_DENIED { - // ignore error, if we are not allowed to access this key - return - } - t.Fatalf("opening sub-keys %s of %s failed: %v", name, kname, err) - } - defer subk.Close() - - walkKey(t, subk, kname+`\`+name) - }() - } -} - -func TestWalkFullRegistry(t *testing.T) { - if testing.Short() { - t.Skip("skipping long running test in short mode") - } - walkKey(t, registry.CLASSES_ROOT, "CLASSES_ROOT") - walkKey(t, registry.CURRENT_USER, "CURRENT_USER") - walkKey(t, registry.LOCAL_MACHINE, "LOCAL_MACHINE") - walkKey(t, registry.USERS, "USERS") - walkKey(t, registry.CURRENT_CONFIG, "CURRENT_CONFIG") -} - -func TestExpandString(t *testing.T) { - got, err := registry.ExpandString("%PATH%") - if err != nil { - t.Fatal(err) - } - want := os.Getenv("PATH") - if got != want { - t.Errorf("want %q string expanded, got %q", want, got) - } -} - -func TestInvalidValues(t *testing.T) { - softwareK, err := registry.OpenKey(registry.CURRENT_USER, "Software", registry.QUERY_VALUE) - if err != nil { - t.Fatal(err) - } - defer softwareK.Close() - - testKName := randKeyName("TestInvalidValues_") - - k, exist, err := registry.CreateKey(softwareK, testKName, registry.CREATE_SUB_KEY|registry.QUERY_VALUE|registry.SET_VALUE) - if err != nil { - t.Fatal(err) - } - defer k.Close() - - if exist { - t.Fatalf("key %q already exists", testKName) - } - - defer registry.DeleteKey(softwareK, testKName) - - var tests = []struct { - Type uint32 - Name string - Data []byte - }{ - {registry.DWORD, "Dword1", nil}, - {registry.DWORD, "Dword2", []byte{1, 2, 3}}, - {registry.QWORD, "Qword1", nil}, - {registry.QWORD, "Qword2", []byte{1, 2, 3}}, - {registry.QWORD, "Qword3", []byte{1, 2, 3, 4, 5, 6, 7}}, - {registry.MULTI_SZ, "MultiString1", nil}, - {registry.MULTI_SZ, "MultiString2", []byte{0}}, - {registry.MULTI_SZ, "MultiString3", []byte{'a', 'b', 0}}, - {registry.MULTI_SZ, "MultiString4", []byte{'a', 0, 0, 'b', 0}}, - {registry.MULTI_SZ, "MultiString5", []byte{'a', 0, 0}}, - } - - for _, test := range tests { - err := k.SetValue(test.Name, test.Type, test.Data) - if err != nil { - t.Fatalf("SetValue for %q failed: %v", test.Name, err) - } - } - - for _, test := range tests { - switch test.Type { - case registry.DWORD, registry.QWORD: - value, valType, err := k.GetIntegerValue(test.Name) - if err == nil { - t.Errorf("GetIntegerValue(%q) succeeded. Returns type=%d value=%v", test.Name, valType, value) - } - case registry.MULTI_SZ: - value, valType, err := k.GetStringsValue(test.Name) - if err == nil { - if len(value) != 0 { - t.Errorf("GetStringsValue(%q) succeeded. Returns type=%d value=%v", test.Name, valType, value) - } - } - default: - t.Errorf("unsupported type %d for %s value", test.Type, test.Name) - } - } -} - -func TestGetMUIStringValue(t *testing.T) { - if err := registry.LoadRegLoadMUIString(); err != nil { - t.Skip("regLoadMUIString not supported; skipping") - } - if err := procGetDynamicTimeZoneInformation.Find(); err != nil { - t.Skipf("%s not supported; skipping", procGetDynamicTimeZoneInformation.Name) - } - var dtzi DynamicTimezoneinformation - if _, err := GetDynamicTimeZoneInformation(&dtzi); err != nil { - t.Fatal(err) - } - tzKeyName := syscall.UTF16ToString(dtzi.TimeZoneKeyName[:]) - timezoneK, err := registry.OpenKey(registry.LOCAL_MACHINE, - `SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\`+tzKeyName, registry.READ) - if err != nil { - t.Fatal(err) - } - defer timezoneK.Close() - - type testType struct { - name string - want string - } - var tests = []testType{ - {"MUI_Std", syscall.UTF16ToString(dtzi.StandardName[:])}, - } - if dtzi.DynamicDaylightTimeDisabled == 0 { - tests = append(tests, testType{"MUI_Dlt", syscall.UTF16ToString(dtzi.DaylightName[:])}) - } - - for _, test := range tests { - got, err := timezoneK.GetMUIStringValue(test.name) - if err != nil { - t.Error("GetMUIStringValue:", err) - } - - if got != test.want { - t.Errorf("GetMUIStringValue: %s: Got %q, want %q", test.name, got, test.want) - } - } -} - -type DynamicTimezoneinformation struct { - Bias int32 - StandardName [32]uint16 - StandardDate syscall.Systemtime - StandardBias int32 - DaylightName [32]uint16 - DaylightDate syscall.Systemtime - DaylightBias int32 - TimeZoneKeyName [128]uint16 - DynamicDaylightTimeDisabled uint8 -} - -var ( - kernel32DLL = syscall.NewLazyDLL("kernel32") - - procGetDynamicTimeZoneInformation = kernel32DLL.NewProc("GetDynamicTimeZoneInformation") -) - -func GetDynamicTimeZoneInformation(dtzi *DynamicTimezoneinformation) (rc uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetDynamicTimeZoneInformation.Addr(), 1, uintptr(unsafe.Pointer(dtzi)), 0, 0) - rc = uint32(r0) - if rc == 0xffffffff { - if e1 != 0 { - err = error(e1) - } else { - err = syscall.EINVAL - } - } - return -} diff --git a/src/cmd/vendor/golang.org/x/sys/windows/svc/eventlog/log_test.go b/src/cmd/vendor/golang.org/x/sys/windows/svc/eventlog/log_test.go deleted file mode 100644 index 6fbbd4a87642eb..00000000000000 --- a/src/cmd/vendor/golang.org/x/sys/windows/svc/eventlog/log_test.go +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2012 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. - -// +build windows - -package eventlog_test - -import ( - "testing" - - "golang.org/x/sys/windows/svc/eventlog" -) - -func TestLog(t *testing.T) { - if testing.Short() { - t.Skip("skipping test in short mode - it modifies system logs") - } - - const name = "mylog" - const supports = eventlog.Error | eventlog.Warning | eventlog.Info - err := eventlog.InstallAsEventCreate(name, supports) - if err != nil { - t.Fatalf("Install failed: %s", err) - } - defer func() { - err = eventlog.Remove(name) - if err != nil { - t.Fatalf("Remove failed: %s", err) - } - }() - - l, err := eventlog.Open(name) - if err != nil { - t.Fatalf("Open failed: %s", err) - } - defer l.Close() - - err = l.Info(1, "info") - if err != nil { - t.Fatalf("Info failed: %s", err) - } - err = l.Warning(2, "warning") - if err != nil { - t.Fatalf("Warning failed: %s", err) - } - err = l.Error(3, "error") - if err != nil { - t.Fatalf("Error failed: %s", err) - } -} diff --git a/src/cmd/vendor/golang.org/x/sys/windows/svc/mgr/mgr_test.go b/src/cmd/vendor/golang.org/x/sys/windows/svc/mgr/mgr_test.go deleted file mode 100644 index 9171f5bcf1414b..00000000000000 --- a/src/cmd/vendor/golang.org/x/sys/windows/svc/mgr/mgr_test.go +++ /dev/null @@ -1,282 +0,0 @@ -// Copyright 2012 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. - -// +build windows - -package mgr_test - -import ( - "os" - "path/filepath" - "sort" - "strings" - "syscall" - "testing" - "time" - - "golang.org/x/sys/windows/svc/mgr" -) - -func TestOpenLanManServer(t *testing.T) { - m, err := mgr.Connect() - if err != nil { - if errno, ok := err.(syscall.Errno); ok && errno == syscall.ERROR_ACCESS_DENIED { - t.Skip("Skipping test: we don't have rights to manage services.") - } - t.Fatalf("SCM connection failed: %s", err) - } - defer m.Disconnect() - - s, err := m.OpenService("LanmanServer") - if err != nil { - t.Fatalf("OpenService(lanmanserver) failed: %s", err) - } - defer s.Close() - - _, err = s.Config() - if err != nil { - t.Fatalf("Config failed: %s", err) - } -} - -func install(t *testing.T, m *mgr.Mgr, name, exepath string, c mgr.Config) { - // Sometimes it takes a while for the service to get - // removed after previous test run. - for i := 0; ; i++ { - s, err := m.OpenService(name) - if err != nil { - break - } - s.Close() - - if i > 10 { - t.Fatalf("service %s already exists", name) - } - time.Sleep(300 * time.Millisecond) - } - - s, err := m.CreateService(name, exepath, c) - if err != nil { - t.Fatalf("CreateService(%s) failed: %v", name, err) - } - defer s.Close() -} - -func depString(d []string) string { - if len(d) == 0 { - return "" - } - for i := range d { - d[i] = strings.ToLower(d[i]) - } - ss := sort.StringSlice(d) - ss.Sort() - return strings.Join([]string(ss), " ") -} - -func testConfig(t *testing.T, s *mgr.Service, should mgr.Config) mgr.Config { - is, err := s.Config() - if err != nil { - t.Fatalf("Config failed: %s", err) - } - if should.DisplayName != is.DisplayName { - t.Fatalf("config mismatch: DisplayName is %q, but should have %q", is.DisplayName, should.DisplayName) - } - if should.StartType != is.StartType { - t.Fatalf("config mismatch: StartType is %v, but should have %v", is.StartType, should.StartType) - } - if should.Description != is.Description { - t.Fatalf("config mismatch: Description is %q, but should have %q", is.Description, should.Description) - } - if depString(should.Dependencies) != depString(is.Dependencies) { - t.Fatalf("config mismatch: Dependencies is %v, but should have %v", is.Dependencies, should.Dependencies) - } - return is -} - -func testRecoveryActions(t *testing.T, s *mgr.Service, should []mgr.RecoveryAction) { - is, err := s.RecoveryActions() - if err != nil { - t.Fatalf("RecoveryActions failed: %s", err) - } - if len(should) != len(is) { - t.Errorf("recovery action mismatch: contains %v actions, but should have %v", len(is), len(should)) - } - for i, _ := range is { - if should[i].Type != is[i].Type { - t.Errorf("recovery action mismatch: Type is %v, but should have %v", is[i].Type, should[i].Type) - } - if should[i].Delay != is[i].Delay { - t.Errorf("recovery action mismatch: Delay is %v, but should have %v", is[i].Delay, should[i].Delay) - } - } -} - -func testResetPeriod(t *testing.T, s *mgr.Service, should uint32) { - is, err := s.ResetPeriod() - if err != nil { - t.Fatalf("ResetPeriod failed: %s", err) - } - if should != is { - t.Errorf("reset period mismatch: reset period is %v, but should have %v", is, should) - } -} - -func testSetRecoveryActions(t *testing.T, s *mgr.Service) { - r := []mgr.RecoveryAction{ - mgr.RecoveryAction{ - Type: mgr.NoAction, - Delay: 60000 * time.Millisecond, - }, - mgr.RecoveryAction{ - Type: mgr.ServiceRestart, - Delay: 4 * time.Minute, - }, - mgr.RecoveryAction{ - Type: mgr.ServiceRestart, - Delay: time.Minute, - }, - mgr.RecoveryAction{ - Type: mgr.RunCommand, - Delay: 4000 * time.Millisecond, - }, - } - - // 4 recovery actions with reset period - err := s.SetRecoveryActions(r, uint32(10000)) - if err != nil { - t.Fatalf("SetRecoveryActions failed: %v", err) - } - testRecoveryActions(t, s, r) - testResetPeriod(t, s, uint32(10000)) - - // Infinite reset period - err = s.SetRecoveryActions(r, syscall.INFINITE) - if err != nil { - t.Fatalf("SetRecoveryActions failed: %v", err) - } - testRecoveryActions(t, s, r) - testResetPeriod(t, s, syscall.INFINITE) - - // nil recovery actions - err = s.SetRecoveryActions(nil, 0) - if err.Error() != "recoveryActions cannot be nil" { - t.Fatalf("SetRecoveryActions failed with unexpected error message of %q", err) - } - - // Delete all recovery actions and reset period - err = s.ResetRecoveryActions() - if err != nil { - t.Fatalf("ResetRecoveryActions failed: %v", err) - } - testRecoveryActions(t, s, nil) - testResetPeriod(t, s, 0) -} - -func testRebootMessage(t *testing.T, s *mgr.Service, should string) { - err := s.SetRebootMessage(should) - if err != nil { - t.Fatalf("SetRebootMessage failed: %v", err) - } - is, err := s.RebootMessage() - if err != nil { - t.Fatalf("RebootMessage failed: %v", err) - } - if should != is { - t.Errorf("reboot message mismatch: message is %q, but should have %q", is, should) - } -} - -func testRecoveryCommand(t *testing.T, s *mgr.Service, should string) { - err := s.SetRecoveryCommand(should) - if err != nil { - t.Fatalf("SetRecoveryCommand failed: %v", err) - } - is, err := s.RecoveryCommand() - if err != nil { - t.Fatalf("RecoveryCommand failed: %v", err) - } - if should != is { - t.Errorf("recovery command mismatch: command is %q, but should have %q", is, should) - } -} - -func remove(t *testing.T, s *mgr.Service) { - err := s.Delete() - if err != nil { - t.Fatalf("Delete failed: %s", err) - } -} - -func TestMyService(t *testing.T) { - if testing.Short() { - t.Skip("skipping test in short mode - it modifies system services") - } - - const name = "myservice" - - m, err := mgr.Connect() - if err != nil { - if errno, ok := err.(syscall.Errno); ok && errno == syscall.ERROR_ACCESS_DENIED { - t.Skip("Skipping test: we don't have rights to manage services.") - } - t.Fatalf("SCM connection failed: %s", err) - } - defer m.Disconnect() - - c := mgr.Config{ - StartType: mgr.StartDisabled, - DisplayName: "my service", - Description: "my service is just a test", - Dependencies: []string{"LanmanServer", "W32Time"}, - } - - exename := os.Args[0] - exepath, err := filepath.Abs(exename) - if err != nil { - t.Fatalf("filepath.Abs(%s) failed: %s", exename, err) - } - - install(t, m, name, exepath, c) - - s, err := m.OpenService(name) - if err != nil { - t.Fatalf("service %s is not installed", name) - } - defer s.Close() - - c.BinaryPathName = exepath - c = testConfig(t, s, c) - - c.StartType = mgr.StartManual - err = s.UpdateConfig(c) - if err != nil { - t.Fatalf("UpdateConfig failed: %v", err) - } - - testConfig(t, s, c) - - svcnames, err := m.ListServices() - if err != nil { - t.Fatalf("ListServices failed: %v", err) - } - var myserviceIsInstalled bool - for _, sn := range svcnames { - if sn == name { - myserviceIsInstalled = true - break - } - } - if !myserviceIsInstalled { - t.Errorf("ListServices failed to find %q service", name) - } - - testSetRecoveryActions(t, s) - testRebootMessage(t, s, "myservice failed") - testRebootMessage(t, s, "") // delete reboot message - testRecoveryCommand(t, s, "sc query myservice") - testRecoveryCommand(t, s, "") // delete recovery command - - remove(t, s) -} diff --git a/src/cmd/vendor/golang.org/x/sys/windows/svc/svc_test.go b/src/cmd/vendor/golang.org/x/sys/windows/svc/svc_test.go deleted file mode 100644 index feed8fabde676a..00000000000000 --- a/src/cmd/vendor/golang.org/x/sys/windows/svc/svc_test.go +++ /dev/null @@ -1,131 +0,0 @@ -// Copyright 2012 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. - -// +build windows - -package svc_test - -import ( - "fmt" - "io/ioutil" - "math/rand" - "os" - "os/exec" - "path/filepath" - "strings" - "testing" - "time" - - "golang.org/x/sys/windows/svc" - "golang.org/x/sys/windows/svc/mgr" -) - -func getState(t *testing.T, s *mgr.Service) svc.State { - status, err := s.Query() - if err != nil { - t.Fatalf("Query(%s) failed: %s", s.Name, err) - } - return status.State -} - -func testState(t *testing.T, s *mgr.Service, want svc.State) { - have := getState(t, s) - if have != want { - t.Fatalf("%s state is=%d want=%d", s.Name, have, want) - } -} - -func waitState(t *testing.T, s *mgr.Service, want svc.State) { - for i := 0; ; i++ { - have := getState(t, s) - if have == want { - return - } - if i > 10 { - t.Fatalf("%s state is=%d, waiting timeout", s.Name, have) - } - time.Sleep(300 * time.Millisecond) - } -} - -func TestExample(t *testing.T) { - if testing.Short() { - t.Skip("skipping test in short mode - it modifies system services") - } - - const name = "myservice" - - m, err := mgr.Connect() - if err != nil { - t.Fatalf("SCM connection failed: %s", err) - } - defer m.Disconnect() - - dir, err := ioutil.TempDir("", "svc") - if err != nil { - t.Fatalf("failed to create temp directory: %v", err) - } - defer os.RemoveAll(dir) - - exepath := filepath.Join(dir, "a.exe") - o, err := exec.Command("go", "build", "-o", exepath, "golang.org/x/sys/windows/svc/example").CombinedOutput() - if err != nil { - t.Fatalf("failed to build service program: %v\n%v", err, string(o)) - } - - s, err := m.OpenService(name) - if err == nil { - err = s.Delete() - if err != nil { - s.Close() - t.Fatalf("Delete failed: %s", err) - } - s.Close() - } - s, err = m.CreateService(name, exepath, mgr.Config{DisplayName: "my service"}, "is", "auto-started") - if err != nil { - t.Fatalf("CreateService(%s) failed: %v", name, err) - } - defer s.Close() - - args := []string{"is", "manual-started", fmt.Sprintf("%d", rand.Int())} - - testState(t, s, svc.Stopped) - err = s.Start(args...) - if err != nil { - t.Fatalf("Start(%s) failed: %s", s.Name, err) - } - waitState(t, s, svc.Running) - time.Sleep(1 * time.Second) - - // testing deadlock from issues 4. - _, err = s.Control(svc.Interrogate) - if err != nil { - t.Fatalf("Control(%s) failed: %s", s.Name, err) - } - _, err = s.Control(svc.Interrogate) - if err != nil { - t.Fatalf("Control(%s) failed: %s", s.Name, err) - } - time.Sleep(1 * time.Second) - - _, err = s.Control(svc.Stop) - if err != nil { - t.Fatalf("Control(%s) failed: %s", s.Name, err) - } - waitState(t, s, svc.Stopped) - - err = s.Delete() - if err != nil { - t.Fatalf("Delete failed: %s", err) - } - - out, err := exec.Command("wevtutil.exe", "qe", "Application", "/q:*[System[Provider[@Name='myservice']]]", "/rd:true", "/c:10").CombinedOutput() - if err != nil { - t.Fatalf("wevtutil failed: %v\n%v", err, string(out)) - } - if want := strings.Join(append([]string{name}, args...), "-"); !strings.Contains(string(out), want) { - t.Errorf("%q string does not contain %q", string(out), want) - } -} diff --git a/src/cmd/vendor/golang.org/x/sys/windows/syscall_test.go b/src/cmd/vendor/golang.org/x/sys/windows/syscall_test.go deleted file mode 100644 index d7009e44a5715d..00000000000000 --- a/src/cmd/vendor/golang.org/x/sys/windows/syscall_test.go +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2013 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. - -// +build windows - -package windows_test - -import ( - "syscall" - "testing" - - "golang.org/x/sys/windows" -) - -func testSetGetenv(t *testing.T, key, value string) { - err := windows.Setenv(key, value) - if err != nil { - t.Fatalf("Setenv failed to set %q: %v", value, err) - } - newvalue, found := windows.Getenv(key) - if !found { - t.Fatalf("Getenv failed to find %v variable (want value %q)", key, value) - } - if newvalue != value { - t.Fatalf("Getenv(%v) = %q; want %q", key, newvalue, value) - } -} - -func TestEnv(t *testing.T) { - testSetGetenv(t, "TESTENV", "AVALUE") - // make sure TESTENV gets set to "", not deleted - testSetGetenv(t, "TESTENV", "") -} - -func TestGetProcAddressByOrdinal(t *testing.T) { - // Attempt calling shlwapi.dll:IsOS, resolving it by ordinal, as - // suggested in - // https://msdn.microsoft.com/en-us/library/windows/desktop/bb773795.aspx - h, err := windows.LoadLibrary("shlwapi.dll") - if err != nil { - t.Fatalf("Failed to load shlwapi.dll: %s", err) - } - procIsOS, err := windows.GetProcAddressByOrdinal(h, 437) - if err != nil { - t.Fatalf("Could not find shlwapi.dll:IsOS by ordinal: %s", err) - } - const OS_NT = 1 - r, _, _ := syscall.Syscall(procIsOS, 1, OS_NT, 0, 0) - if r == 0 { - t.Error("shlwapi.dll:IsOS(OS_NT) returned 0, expected non-zero value") - } -} diff --git a/src/cmd/vendor/golang.org/x/sys/windows/syscall_windows_test.go b/src/cmd/vendor/golang.org/x/sys/windows/syscall_windows_test.go deleted file mode 100644 index 539dda2413ec25..00000000000000 --- a/src/cmd/vendor/golang.org/x/sys/windows/syscall_windows_test.go +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright 2012 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. - -package windows_test - -import ( - "io/ioutil" - "os" - "path/filepath" - "syscall" - "testing" - - "golang.org/x/sys/windows" -) - -func TestWin32finddata(t *testing.T) { - dir, err := ioutil.TempDir("", "go-build") - if err != nil { - t.Fatalf("failed to create temp directory: %v", err) - } - defer os.RemoveAll(dir) - - path := filepath.Join(dir, "long_name.and_extension") - f, err := os.Create(path) - if err != nil { - t.Fatalf("failed to create %v: %v", path, err) - } - f.Close() - - type X struct { - fd windows.Win32finddata - got byte - pad [10]byte // to protect ourselves - - } - var want byte = 2 // it is unlikely to have this character in the filename - x := X{got: want} - - pathp, _ := windows.UTF16PtrFromString(path) - h, err := windows.FindFirstFile(pathp, &(x.fd)) - if err != nil { - t.Fatalf("FindFirstFile failed: %v", err) - } - err = windows.FindClose(h) - if err != nil { - t.Fatalf("FindClose failed: %v", err) - } - - if x.got != want { - t.Fatalf("memory corruption: want=%d got=%d", want, x.got) - } -} - -func TestFormatMessage(t *testing.T) { - dll := windows.MustLoadDLL("netevent.dll") - - const TITLE_SC_MESSAGE_BOX uint32 = 0xC0001B75 - const flags uint32 = syscall.FORMAT_MESSAGE_FROM_HMODULE | syscall.FORMAT_MESSAGE_ARGUMENT_ARRAY | syscall.FORMAT_MESSAGE_IGNORE_INSERTS - buf := make([]uint16, 300) - _, err := windows.FormatMessage(flags, uintptr(dll.Handle), TITLE_SC_MESSAGE_BOX, 0, buf, nil) - if err != nil { - t.Fatalf("FormatMessage for handle=%x and errno=%x failed: %v", dll.Handle, TITLE_SC_MESSAGE_BOX, err) - } -} - -func abort(funcname string, err error) { - panic(funcname + " failed: " + err.Error()) -} - -func ExampleLoadLibrary() { - h, err := windows.LoadLibrary("kernel32.dll") - if err != nil { - abort("LoadLibrary", err) - } - defer windows.FreeLibrary(h) - proc, err := windows.GetProcAddress(h, "GetVersion") - if err != nil { - abort("GetProcAddress", err) - } - r, _, _ := syscall.Syscall(uintptr(proc), 0, 0, 0, 0) - major := byte(r) - minor := uint8(r >> 8) - build := uint16(r >> 16) - print("windows version ", major, ".", minor, " (Build ", build, ")\n") -} - -func TestTOKEN_ALL_ACCESS(t *testing.T) { - if windows.TOKEN_ALL_ACCESS != 0xF01FF { - t.Errorf("TOKEN_ALL_ACCESS = %x, want 0xF01FF", windows.TOKEN_ALL_ACCESS) - } -}