diff --git a/go.mod b/go.mod index f38462b272..ac2df9e4ce 100644 --- a/go.mod +++ b/go.mod @@ -5,32 +5,30 @@ go 1.17 require ( github.com/cilium/ebpf v0.11.0 github.com/cosiner/argv v0.1.0 - github.com/creack/pty v1.1.9 - github.com/derekparker/trie v0.0.0-20221213183930-4c74548207f4 + github.com/creack/pty v1.1.20 + github.com/derekparker/trie v0.0.0-20230829180723-39f4de51ef7d github.com/go-delve/liner v1.2.3-0.20220127212407-d32d89dd2a5d - github.com/google/go-dap v0.9.1 - github.com/hashicorp/golang-lru v0.5.4 - github.com/mattn/go-colorable v0.0.9 - github.com/mattn/go-isatty v0.0.3 - github.com/sirupsen/logrus v1.6.0 - github.com/spf13/cobra v1.1.3 + github.com/google/go-dap v0.11.0 + github.com/hashicorp/golang-lru v1.0.2 + github.com/mattn/go-colorable v0.1.13 + github.com/mattn/go-isatty v0.0.20 + github.com/sirupsen/logrus v1.9.3 + github.com/spf13/cobra v1.7.0 github.com/spf13/pflag v1.0.5 - go.starlark.net v0.0.0-20220816155156-cfacd8902214 - golang.org/x/arch v0.0.0-20190927153633-4e8777c89be4 - golang.org/x/sys v0.12.0 - golang.org/x/tools v0.13.0 + go.starlark.net v0.0.0-20231101134539-556fd59b42f6 + golang.org/x/arch v0.5.0 + golang.org/x/sys v0.13.0 + golang.org/x/tools v0.14.0 gopkg.in/yaml.v2 v2.4.0 ) require ( - github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect - github.com/inconshreveable/mousetrap v1.0.0 // indirect - github.com/konsorten/go-windows-terminal-sequences v1.0.3 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/mattn/go-runewidth v0.0.13 // indirect github.com/rivo/uniseg v0.2.0 // indirect - github.com/russross/blackfriday/v2 v2.0.1 // indirect - github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect - github.com/stretchr/testify v1.7.0 // indirect + github.com/russross/blackfriday/v2 v2.1.0 // indirect golang.org/x/exp v0.0.0-20230224173230-c95f2b4c22f2 // indirect - golang.org/x/mod v0.12.0 // indirect + golang.org/x/mod v0.13.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index c7ee1bcef7..2a39b312c6 100644 --- a/go.sum +++ b/go.sum @@ -1,77 +1,33 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/cilium/ebpf v0.11.0 h1:V8gS/bTCCjX9uUnkUFUpPsksM8n1lXBAvHcpiFk1X2Y= github.com/cilium/ebpf v0.11.0/go.mod h1:WE7CZAnqOL2RouJ4f1uyNhqr2P4CCvXFIqdRDUgWsVs= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosiner/argv v0.1.0 h1:BVDiEL32lwHukgJKP87btEPenzrrHUjajs/8yzaqcXg= github.com/cosiner/argv v0.1.0/go.mod h1:EusR6TucWKX+zFgtdUsKT2Cvg45K5rtpCcWz4hK06d8= -github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/creack/pty v1.1.9 h1:uDmaGzcdjhF4i/plgjmEsriH11Y0o7RKapEf/LDaM3w= +github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/creack/pty v1.1.20 h1:VIPb/a2s17qNeQgDnkfZC35RScx+blkKF8GV68n80J4= +github.com/creack/pty v1.1.20/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/derekparker/trie v0.0.0-20221213183930-4c74548207f4 h1:atN94qKNhLpy+9BwbE5nxvFj4rScJi6W3x/NfFmMDg4= -github.com/derekparker/trie v0.0.0-20221213183930-4c74548207f4/go.mod h1:C7Es+DLenIpPc9J6IYw4jrK0h7S9bKj4DNl8+KxGEXU= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/derekparker/trie v0.0.0-20230829180723-39f4de51ef7d h1:hUWoLdw5kvo2xCsqlsIBMvWUc1QCSsCYD2J2+Fg6YoU= +github.com/derekparker/trie v0.0.0-20230829180723-39f4de51ef7d/go.mod h1:C7Es+DLenIpPc9J6IYw4jrK0h7S9bKj4DNl8+KxGEXU= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/frankban/quicktest v1.14.5 h1:dfYrrRyLtiqT9GyKXgdh+k4inNeTvmGbuSgZ3lx3GhA= github.com/frankban/quicktest v1.14.5/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-delve/liner v1.2.3-0.20220127212407-d32d89dd2a5d h1:pxjSLshkZJGLVm0wv20f/H0oTWiq/egkoJQ2ja6LEvo= github.com/go-delve/liner v1.2.3-0.20220127212407-d32d89dd2a5d/go.mod h1:biJCRbqp51wS+I92HMqn5H8/A0PAhxn2vyOT+JqhiGI= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= @@ -79,8 +35,6 @@ github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrU github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -90,292 +44,138 @@ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-dap v0.9.1 h1:d8dETjgHMR9/xs+Xza+NrZmB7jxIS5OtM2uRsyJVA/c= -github.com/google/go-dap v0.9.1/go.mod h1:HAeyoSd2WIfTfg+0GRXcFrb+RnojAtGNh+k+XTIxJDE= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= -github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8= -github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/google/go-dap v0.11.0 h1:SpAZJL41rOOvd85PuLCCLE1dteTQOyKNnn0H3DBHywo= +github.com/google/go-dap v0.11.0/go.mod h1:HAeyoSd2WIfTfg+0GRXcFrb+RnojAtGNh+k+XTIxJDE= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-isatty v0.0.3 h1:ns/ykhmWi7G9O+8a448SecJU3nSMBXJfqQkl0upE1jI= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.6.0 h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I= -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v1.1.3 h1:xghbfqPkxzxP3C/f3n5DdpAbdKLj4ZE4BWQI362l53M= -github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= +github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.starlark.net v0.0.0-20220816155156-cfacd8902214 h1:MqijAN3S61c7KWasOk+zIqIjHQPN6WUra/X3+YAkQxQ= -go.starlark.net v0.0.0-20220816155156-cfacd8902214/go.mod h1:VZcBMdr3cT3PnBoWunTabuSEXwVAH+ZJ5zxfs3AdASk= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -golang.org/x/arch v0.0.0-20190927153633-4e8777c89be4 h1:QlVATYS7JBoZMVaf+cNjb90WD/beKVHnIxFKT4QaHVI= -golang.org/x/arch v0.0.0-20190927153633-4e8777c89be4/go.mod h1:flIaEI6LNU6xOCD5PaJvn9wGP0agmIOqjrtsKGRguv4= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +go.starlark.net v0.0.0-20231101134539-556fd59b42f6 h1:+eC0F/k4aBLC4szgOcjd7bDTEnpxADJyWJE0yowgM3E= +go.starlark.net v0.0.0-20231101134539-556fd59b42f6/go.mod h1:LcLNIzVOMp4oV+uusnpk+VU+SzXaJakUuBjoCSWH5dM= +golang.org/x/arch v0.5.0 h1:jpGode6huXQxcskEIpOCvrU+tzo81b6+oFLUYXWtH/Y= +golang.org/x/arch v0.5.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20230224173230-c95f2b4c22f2 h1:Jvc7gsqn21cJHCmAWx0LiimpP18LZmUxkT5Mp7EZ1mI= golang.org/x/exp v0.0.0-20230224173230-c95f2b4c22f2/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.6.0 h1:b9gGHsz9/HhJ3HF5DHQytPpuwocVTChQJK3AvoLRD5I= golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= -golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= +golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= +golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211117180635-dee7805ff2e1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.2.0 h1:G6AHpWxTMGY1KyEYoAQ5WTtIekUUvDNjan3ugu60JvE= golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= -golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= +golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -385,25 +185,15 @@ google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miE google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= diff --git a/pkg/proc/ppc64le_disasm.go b/pkg/proc/ppc64le_disasm.go index 75b3add779..fbf16c96c3 100644 --- a/pkg/proc/ppc64le_disasm.go +++ b/pkg/proc/ppc64le_disasm.go @@ -54,7 +54,7 @@ func ppc64leAsmDecode(asmInst *AsmInstruction, mem []byte, regs *op.DwarfRegiste case ppc64asm.BL, ppc64asm.BLA, ppc64asm.BCL, ppc64asm.BCLA, ppc64asm.BCLRL, ppc64asm.BCCTRL, ppc64asm.BCTARL: // Pages 38-40 Book I v3.0 asmInst.Kind = CallInstruction - case ppc64asm.RFEBB, ppc64asm.RFID, ppc64asm.HRFID, ppc64asm.RFI, ppc64asm.RFCI, ppc64asm.RFDI, ppc64asm.RFMCI, ppc64asm.RFGI, ppc64asm.BCLR: + case ppc64asm.RFEBB, ppc64asm.RFID, ppc64asm.HRFID, ppc64asm.BCLR: asmInst.Kind = RetInstruction case ppc64asm.B, ppc64asm.BA, ppc64asm.BC, ppc64asm.BCA, ppc64asm.BCCTR, ppc64asm.BCTAR: // Pages 38-40 Book I v3.0 diff --git a/vendor/github.com/cpuguy83/go-md2man/v2/md2man/roff.go b/vendor/github.com/cpuguy83/go-md2man/v2/md2man/roff.go index 0668a66cf7..be2b343606 100644 --- a/vendor/github.com/cpuguy83/go-md2man/v2/md2man/roff.go +++ b/vendor/github.com/cpuguy83/go-md2man/v2/md2man/roff.go @@ -15,7 +15,7 @@ type roffRenderer struct { extensions blackfriday.Extensions listCounters []int firstHeader bool - defineTerm bool + firstDD bool listDepth int } @@ -42,7 +42,8 @@ const ( quoteCloseTag = "\n.RE\n" listTag = "\n.RS\n" listCloseTag = "\n.RE\n" - arglistTag = "\n.TP\n" + dtTag = "\n.TP\n" + dd2Tag = "\n" tableStart = "\n.TS\nallbox;\n" tableEnd = ".TE\n" tableCellStart = "T{\n" @@ -90,7 +91,7 @@ func (r *roffRenderer) RenderNode(w io.Writer, node *blackfriday.Node, entering switch node.Type { case blackfriday.Text: - r.handleText(w, node, entering) + escapeSpecialChars(w, node.Literal) case blackfriday.Softbreak: out(w, crTag) case blackfriday.Hardbreak: @@ -150,40 +151,21 @@ func (r *roffRenderer) RenderNode(w io.Writer, node *blackfriday.Node, entering out(w, codeCloseTag) case blackfriday.Table: r.handleTable(w, node, entering) - case blackfriday.TableCell: - r.handleTableCell(w, node, entering) case blackfriday.TableHead: case blackfriday.TableBody: case blackfriday.TableRow: // no action as cell entries do all the nroff formatting return blackfriday.GoToNext + case blackfriday.TableCell: + r.handleTableCell(w, node, entering) + case blackfriday.HTMLSpan: + // ignore other HTML tags default: fmt.Fprintln(os.Stderr, "WARNING: go-md2man does not handle node type "+node.Type.String()) } return walkAction } -func (r *roffRenderer) handleText(w io.Writer, node *blackfriday.Node, entering bool) { - var ( - start, end string - ) - // handle special roff table cell text encapsulation - if node.Parent.Type == blackfriday.TableCell { - if len(node.Literal) > 30 { - start = tableCellStart - end = tableCellEnd - } else { - // end rows that aren't terminated by "tableCellEnd" with a cr if end of row - if node.Parent.Next == nil && !node.Parent.IsHeader { - end = crTag - } - } - } - out(w, start) - escapeSpecialChars(w, node.Literal) - out(w, end) -} - func (r *roffRenderer) handleHeading(w io.Writer, node *blackfriday.Node, entering bool) { if entering { switch node.Level { @@ -230,15 +212,20 @@ func (r *roffRenderer) handleItem(w io.Writer, node *blackfriday.Node, entering if node.ListFlags&blackfriday.ListTypeOrdered != 0 { out(w, fmt.Sprintf(".IP \"%3d.\" 5\n", r.listCounters[len(r.listCounters)-1])) r.listCounters[len(r.listCounters)-1]++ + } else if node.ListFlags&blackfriday.ListTypeTerm != 0 { + // DT (definition term): line just before DD (see below). + out(w, dtTag) + r.firstDD = true } else if node.ListFlags&blackfriday.ListTypeDefinition != 0 { - // state machine for handling terms and following definitions - // since blackfriday does not distinguish them properly, nor - // does it seperate them into separate lists as it should - if !r.defineTerm { - out(w, arglistTag) - r.defineTerm = true + // DD (definition description): line that starts with ": ". + // + // We have to distinguish between the first DD and the + // subsequent ones, as there should be no vertical + // whitespace between the DT and the first DD. + if r.firstDD { + r.firstDD = false } else { - r.defineTerm = false + out(w, dd2Tag) } } else { out(w, ".IP \\(bu 2\n") @@ -251,7 +238,7 @@ func (r *roffRenderer) handleItem(w io.Writer, node *blackfriday.Node, entering func (r *roffRenderer) handleTable(w io.Writer, node *blackfriday.Node, entering bool) { if entering { out(w, tableStart) - //call walker to count cells (and rows?) so format section can be produced + // call walker to count cells (and rows?) so format section can be produced columns := countColumns(node) out(w, strings.Repeat("l ", columns)+"\n") out(w, strings.Repeat("l ", columns)+".\n") @@ -261,28 +248,41 @@ func (r *roffRenderer) handleTable(w io.Writer, node *blackfriday.Node, entering } func (r *roffRenderer) handleTableCell(w io.Writer, node *blackfriday.Node, entering bool) { - var ( - start, end string - ) - if node.IsHeader { - start = codespanTag - end = codespanCloseTag - } if entering { + var start string if node.Prev != nil && node.Prev.Type == blackfriday.TableCell { - out(w, "\t"+start) - } else { - out(w, start) + start = "\t" + } + if node.IsHeader { + start += codespanTag + } else if nodeLiteralSize(node) > 30 { + start += tableCellStart } + out(w, start) } else { - // need to carriage return if we are at the end of the header row - if node.IsHeader && node.Next == nil { - end = end + crTag + var end string + if node.IsHeader { + end = codespanCloseTag + } else if nodeLiteralSize(node) > 30 { + end = tableCellEnd + } + if node.Next == nil && end != tableCellEnd { + // Last cell: need to carriage return if we are at the end of the + // header row and content isn't wrapped in a "tablecell" + end += crTag } out(w, end) } } +func nodeLiteralSize(node *blackfriday.Node) int { + total := 0 + for n := node.FirstChild; n != nil; n = n.FirstChild { + total += len(n.Literal) + } + return total +} + // because roff format requires knowing the column count before outputting any table // data we need to walk a table tree and count the columns func countColumns(node *blackfriday.Node) int { @@ -309,15 +309,6 @@ func out(w io.Writer, output string) { io.WriteString(w, output) // nolint: errcheck } -func needsBackslash(c byte) bool { - for _, r := range []byte("-_&\\~") { - if c == r { - return true - } - } - return false -} - func escapeSpecialChars(w io.Writer, text []byte) { for i := 0; i < len(text); i++ { // escape initial apostrophe or period @@ -328,7 +319,7 @@ func escapeSpecialChars(w io.Writer, text []byte) { // directly copy normal characters org := i - for i < len(text) && !needsBackslash(text[i]) { + for i < len(text) && text[i] != '\\' { i++ } if i > org { diff --git a/vendor/github.com/creack/pty/Dockerfile.golang b/vendor/github.com/creack/pty/Dockerfile.golang new file mode 100644 index 0000000000..2ee82a3a1f --- /dev/null +++ b/vendor/github.com/creack/pty/Dockerfile.golang @@ -0,0 +1,17 @@ +ARG GOVERSION=1.14 +FROM golang:${GOVERSION} + +# Set base env. +ARG GOOS=linux +ARG GOARCH=amd64 +ENV GOOS=${GOOS} GOARCH=${GOARCH} CGO_ENABLED=0 GOFLAGS='-v -ldflags=-s -ldflags=-w' + +# Pre compile the stdlib for 386/arm (32bits). +RUN go build -a std + +# Add the code to the image. +WORKDIR pty +ADD . . + +# Build the lib. +RUN go build diff --git a/vendor/github.com/creack/pty/Dockerfile.riscv b/vendor/github.com/creack/pty/Dockerfile.riscv index adfdf82c89..7a30c94d03 100644 --- a/vendor/github.com/creack/pty/Dockerfile.riscv +++ b/vendor/github.com/creack/pty/Dockerfile.riscv @@ -1,3 +1,4 @@ +# NOTE: Using 1.13 as a base to build the RISCV compiler, the resulting version is based on go1.6. FROM golang:1.13 # Clone and complie a riscv compatible version of the go compiler. @@ -8,7 +9,15 @@ ENV PATH=/riscv-go/misc/riscv:/riscv-go/bin:$PATH RUN cd /riscv-go/src && GOROOT_BOOTSTRAP=$(go env GOROOT) ./make.bash ENV GOROOT=/riscv-go -# Make sure we compile. +# Set the base env. +ENV GOOS=linux GOARCH=riscv CGO_ENABLED=0 GOFLAGS='-v -ldflags=-s -ldflags=-w' + +# Pre compile the stdlib. +RUN go build -a std + +# Add the code to the image. WORKDIR pty ADD . . -RUN GOOS=linux GOARCH=riscv go build + +# Build the lib. +RUN go build diff --git a/vendor/github.com/creack/pty/README.md b/vendor/github.com/creack/pty/README.md index 5275014a7a..a4fe7670d4 100644 --- a/vendor/github.com/creack/pty/README.md +++ b/vendor/github.com/creack/pty/README.md @@ -4,9 +4,13 @@ Pty is a Go package for using unix pseudo-terminals. ## Install - go get github.com/creack/pty +```sh +go get github.com/creack/pty +``` + +## Examples -## Example +Note that those examples are for demonstration purpose only, to showcase how to use the library. They are not meant to be used in any kind of production environment. ### Command @@ -14,10 +18,11 @@ Pty is a Go package for using unix pseudo-terminals. package main import ( - "github.com/creack/pty" "io" "os" "os/exec" + + "github.com/creack/pty" ) func main() { @@ -51,7 +56,7 @@ import ( "syscall" "github.com/creack/pty" - "golang.org/x/crypto/ssh/terminal" + "golang.org/x/term" ) func test() error { @@ -77,15 +82,17 @@ func test() error { } }() ch <- syscall.SIGWINCH // Initial resize. + defer func() { signal.Stop(ch); close(ch) }() // Cleanup signals when done. // Set stdin in raw mode. - oldState, err := terminal.MakeRaw(int(os.Stdin.Fd())) + oldState, err := term.MakeRaw(int(os.Stdin.Fd())) if err != nil { panic(err) } - defer func() { _ = terminal.Restore(int(os.Stdin.Fd()), oldState) }() // Best effort. + defer func() { _ = term.Restore(int(os.Stdin.Fd()), oldState) }() // Best effort. // Copy stdin to the pty and the pty to stdout. + // NOTE: The goroutine will keep reading until the next keystroke before returning. go func() { _, _ = io.Copy(ptmx, os.Stdin) }() _, _ = io.Copy(os.Stdout, ptmx) diff --git a/vendor/github.com/creack/pty/asm_solaris_amd64.s b/vendor/github.com/creack/pty/asm_solaris_amd64.s new file mode 100644 index 0000000000..7fbef8ee66 --- /dev/null +++ b/vendor/github.com/creack/pty/asm_solaris_amd64.s @@ -0,0 +1,18 @@ +// 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. + +//go:build gc +//+build gc + +#include "textflag.h" + +// +// System calls for amd64, Solaris are implemented in runtime/syscall_solaris.go +// + +TEXT ·sysvicall6(SB),NOSPLIT,$0-88 + JMP syscall·sysvicall6(SB) + +TEXT ·rawSysvicall6(SB),NOSPLIT,$0-88 + JMP syscall·rawSysvicall6(SB) diff --git a/vendor/github.com/creack/pty/doc.go b/vendor/github.com/creack/pty/doc.go index 190cfbea92..3c8b3244e8 100644 --- a/vendor/github.com/creack/pty/doc.go +++ b/vendor/github.com/creack/pty/doc.go @@ -10,7 +10,7 @@ import ( // available on the current platform. var ErrUnsupported = errors.New("unsupported") -// Opens a pty and its corresponding tty. +// Open a pty and its corresponding tty. func Open() (pty, tty *os.File, err error) { return open() } diff --git a/vendor/github.com/creack/pty/ioctl.go b/vendor/github.com/creack/pty/ioctl.go index c85cdcd14a..60ac9b85fd 100644 --- a/vendor/github.com/creack/pty/ioctl.go +++ b/vendor/github.com/creack/pty/ioctl.go @@ -1,13 +1,23 @@ -// +build !windows,!solaris +//go:build !windows && go1.12 +// +build !windows,go1.12 package pty -import "syscall" +import "os" -func ioctl(fd, cmd, ptr uintptr) error { - _, _, e := syscall.Syscall(syscall.SYS_IOCTL, fd, cmd, ptr) - if e != 0 { +func ioctl(f *os.File, cmd, ptr uintptr) error { + sc, e := f.SyscallConn() + if e != nil { + return ioctl_inner(f.Fd(), cmd, ptr) // fall back to blocking io (old behavior) + } + + ch := make(chan error, 1) + defer close(ch) + + e = sc.Control(func(fd uintptr) { ch <- ioctl_inner(fd, cmd, ptr) }) + if e != nil { return e } - return nil + e = <-ch + return e } diff --git a/vendor/github.com/creack/pty/ioctl_bsd.go b/vendor/github.com/creack/pty/ioctl_bsd.go index 73b12c53cf..db3bf845be 100644 --- a/vendor/github.com/creack/pty/ioctl_bsd.go +++ b/vendor/github.com/creack/pty/ioctl_bsd.go @@ -1,3 +1,4 @@ +//go:build darwin || dragonfly || freebsd || netbsd || openbsd // +build darwin dragonfly freebsd netbsd openbsd package pty diff --git a/vendor/github.com/creack/pty/ioctl_inner.go b/vendor/github.com/creack/pty/ioctl_inner.go new file mode 100644 index 0000000000..fd5dbef3a4 --- /dev/null +++ b/vendor/github.com/creack/pty/ioctl_inner.go @@ -0,0 +1,19 @@ +//go:build !windows && !solaris && !aix +// +build !windows,!solaris,!aix + +package pty + +import "syscall" + +const ( + TIOCGWINSZ = syscall.TIOCGWINSZ + TIOCSWINSZ = syscall.TIOCSWINSZ +) + +func ioctl_inner(fd, cmd, ptr uintptr) error { + _, _, e := syscall.Syscall(syscall.SYS_IOCTL, fd, cmd, ptr) + if e != 0 { + return e + } + return nil +} diff --git a/vendor/github.com/creack/pty/ioctl_legacy.go b/vendor/github.com/creack/pty/ioctl_legacy.go new file mode 100644 index 0000000000..f00b1a195d --- /dev/null +++ b/vendor/github.com/creack/pty/ioctl_legacy.go @@ -0,0 +1,10 @@ +//go:build !windows && !go1.12 +// +build !windows,!go1.12 + +package pty + +import "os" + +func ioctl(f *os.File, cmd, ptr uintptr) error { + return ioctl_inner(f.Fd(), cmd, ptr) // fall back to blocking io (old behavior) +} diff --git a/vendor/github.com/creack/pty/ioctl_solaris.go b/vendor/github.com/creack/pty/ioctl_solaris.go index f63985f34c..c0231df1c8 100644 --- a/vendor/github.com/creack/pty/ioctl_solaris.go +++ b/vendor/github.com/creack/pty/ioctl_solaris.go @@ -1,30 +1,48 @@ +//go:build solaris +// +build solaris + package pty import ( - "golang.org/x/sys/unix" + "syscall" "unsafe" ) +//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" +//go:linkname procioctl libc_ioctl +var procioctl uintptr + const ( // see /usr/include/sys/stropts.h - I_PUSH = uintptr((int32('S')<<8 | 002)) - I_STR = uintptr((int32('S')<<8 | 010)) - I_FIND = uintptr((int32('S')<<8 | 013)) + I_PUSH = uintptr((int32('S')<<8 | 002)) + I_STR = uintptr((int32('S')<<8 | 010)) + I_FIND = uintptr((int32('S')<<8 | 013)) + // see /usr/include/sys/ptms.h ISPTM = (int32('P') << 8) | 1 UNLKPT = (int32('P') << 8) | 2 PTSSTTY = (int32('P') << 8) | 3 ZONEPT = (int32('P') << 8) | 4 OWNERPT = (int32('P') << 8) | 5 + + // see /usr/include/sys/termios.h + TIOCSWINSZ = (uint32('T') << 8) | 103 + TIOCGWINSZ = (uint32('T') << 8) | 104 ) type strioctl struct { - ic_cmd int32 - ic_timout int32 - ic_len int32 - ic_dp unsafe.Pointer + icCmd int32 + icTimeout int32 + icLen int32 + icDP unsafe.Pointer } -func ioctl(fd, cmd, ptr uintptr) error { - return unix.IoctlSetInt(int(fd), uint(cmd), int(ptr)) +// Defined in asm_solaris_amd64.s. +func sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) + +func ioctl_inner(fd, cmd, ptr uintptr) error { + if _, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, fd, cmd, ptr, 0, 0, 0); errno != 0 { + return errno + } + return nil } diff --git a/vendor/github.com/creack/pty/ioctl_unsupported.go b/vendor/github.com/creack/pty/ioctl_unsupported.go new file mode 100644 index 0000000000..79ad4c6ae3 --- /dev/null +++ b/vendor/github.com/creack/pty/ioctl_unsupported.go @@ -0,0 +1,13 @@ +//go:build aix +// +build aix + +package pty + +const ( + TIOCGWINSZ = 0 + TIOCSWINSZ = 0 +) + +func ioctl_inner(fd, cmd, ptr uintptr) error { + return ErrUnsupported +} diff --git a/vendor/github.com/creack/pty/mktypes.bash b/vendor/github.com/creack/pty/mktypes.bash index 82ee16721c..7f71bda6a6 100644 --- a/vendor/github.com/creack/pty/mktypes.bash +++ b/vendor/github.com/creack/pty/mktypes.bash @@ -13,7 +13,7 @@ GODEFS="go tool cgo -godefs" $GODEFS types.go |gofmt > ztypes_$GOARCH.go case $GOOS in -freebsd|dragonfly|openbsd) +freebsd|dragonfly|netbsd|openbsd) $GODEFS types_$GOOS.go |gofmt > ztypes_$GOOSARCH.go ;; esac diff --git a/vendor/github.com/creack/pty/pty_darwin.go b/vendor/github.com/creack/pty/pty_darwin.go index 6344b6b0ef..eadf6ab7c7 100644 --- a/vendor/github.com/creack/pty/pty_darwin.go +++ b/vendor/github.com/creack/pty/pty_darwin.go @@ -1,3 +1,6 @@ +//go:build darwin +// +build darwin + package pty import ( @@ -33,7 +36,7 @@ func open() (pty, tty *os.File, err error) { return nil, nil, err } - t, err := os.OpenFile(sname, os.O_RDWR, 0) + t, err := os.OpenFile(sname, os.O_RDWR|syscall.O_NOCTTY, 0) if err != nil { return nil, nil, err } @@ -43,7 +46,7 @@ func open() (pty, tty *os.File, err error) { func ptsname(f *os.File) (string, error) { n := make([]byte, _IOC_PARM_LEN(syscall.TIOCPTYGNAME)) - err := ioctl(f.Fd(), syscall.TIOCPTYGNAME, uintptr(unsafe.Pointer(&n[0]))) + err := ioctl(f, syscall.TIOCPTYGNAME, uintptr(unsafe.Pointer(&n[0]))) if err != nil { return "", err } @@ -57,9 +60,9 @@ func ptsname(f *os.File) (string, error) { } func grantpt(f *os.File) error { - return ioctl(f.Fd(), syscall.TIOCPTYGRANT, 0) + return ioctl(f, syscall.TIOCPTYGRANT, 0) } func unlockpt(f *os.File) error { - return ioctl(f.Fd(), syscall.TIOCPTYUNLK, 0) + return ioctl(f, syscall.TIOCPTYUNLK, 0) } diff --git a/vendor/github.com/creack/pty/pty_dragonfly.go b/vendor/github.com/creack/pty/pty_dragonfly.go index b7d1f20f29..12803de043 100644 --- a/vendor/github.com/creack/pty/pty_dragonfly.go +++ b/vendor/github.com/creack/pty/pty_dragonfly.go @@ -1,3 +1,6 @@ +//go:build dragonfly +// +build dragonfly + package pty import ( @@ -42,17 +45,17 @@ func open() (pty, tty *os.File, err error) { } func grantpt(f *os.File) error { - _, err := isptmaster(f.Fd()) + _, err := isptmaster(f) return err } func unlockpt(f *os.File) error { - _, err := isptmaster(f.Fd()) + _, err := isptmaster(f) return err } -func isptmaster(fd uintptr) (bool, error) { - err := ioctl(fd, syscall.TIOCISPTMASTER, 0) +func isptmaster(f *os.File) (bool, error) { + err := ioctl(f, syscall.TIOCISPTMASTER, 0) return err == nil, err } @@ -65,7 +68,7 @@ func ptsname(f *os.File) (string, error) { name := make([]byte, _C_SPECNAMELEN) fa := fiodgnameArg{Name: (*byte)(unsafe.Pointer(&name[0])), Len: _C_SPECNAMELEN, Pad_cgo_0: [4]byte{0, 0, 0, 0}} - err := ioctl(f.Fd(), ioctl_FIODNAME, uintptr(unsafe.Pointer(&fa))) + err := ioctl(f, ioctl_FIODNAME, uintptr(unsafe.Pointer(&fa))) if err != nil { return "", err } diff --git a/vendor/github.com/creack/pty/pty_freebsd.go b/vendor/github.com/creack/pty/pty_freebsd.go index 63b6d91337..47afcfeec8 100644 --- a/vendor/github.com/creack/pty/pty_freebsd.go +++ b/vendor/github.com/creack/pty/pty_freebsd.go @@ -1,3 +1,6 @@ +//go:build freebsd +// +build freebsd + package pty import ( @@ -41,8 +44,8 @@ func open() (pty, tty *os.File, err error) { return p, t, nil } -func isptmaster(fd uintptr) (bool, error) { - err := ioctl(fd, syscall.TIOCPTMASTER, 0) +func isptmaster(f *os.File) (bool, error) { + err := ioctl(f, syscall.TIOCPTMASTER, 0) return err == nil, err } @@ -52,7 +55,7 @@ var ( ) func ptsname(f *os.File) (string, error) { - master, err := isptmaster(f.Fd()) + master, err := isptmaster(f) if err != nil { return "", err } @@ -65,7 +68,7 @@ func ptsname(f *os.File) (string, error) { buf = make([]byte, n) arg = fiodgnameArg{Len: n, Buf: (*byte)(unsafe.Pointer(&buf[0]))} ) - if err := ioctl(f.Fd(), ioctlFIODGNAME, uintptr(unsafe.Pointer(&arg))); err != nil { + if err := ioctl(f, ioctlFIODGNAME, uintptr(unsafe.Pointer(&arg))); err != nil { return "", err } diff --git a/vendor/github.com/creack/pty/pty_linux.go b/vendor/github.com/creack/pty/pty_linux.go index 4a833de184..e12e2c891c 100644 --- a/vendor/github.com/creack/pty/pty_linux.go +++ b/vendor/github.com/creack/pty/pty_linux.go @@ -1,3 +1,6 @@ +//go:build linux +// +build linux + package pty import ( @@ -28,7 +31,7 @@ func open() (pty, tty *os.File, err error) { return nil, nil, err } - t, err := os.OpenFile(sname, os.O_RDWR|syscall.O_NOCTTY, 0) + t, err := os.OpenFile(sname, os.O_RDWR|syscall.O_NOCTTY, 0) //nolint:gosec // Expected Open from a variable. if err != nil { return nil, nil, err } @@ -37,7 +40,7 @@ func open() (pty, tty *os.File, err error) { func ptsname(f *os.File) (string, error) { var n _C_uint - err := ioctl(f.Fd(), syscall.TIOCGPTN, uintptr(unsafe.Pointer(&n))) + err := ioctl(f, syscall.TIOCGPTN, uintptr(unsafe.Pointer(&n))) //nolint:gosec // Expected unsafe pointer for Syscall call. if err != nil { return "", err } @@ -47,5 +50,5 @@ func ptsname(f *os.File) (string, error) { func unlockpt(f *os.File) error { var u _C_int // use TIOCSPTLCK with a pointer to zero to clear the lock - return ioctl(f.Fd(), syscall.TIOCSPTLCK, uintptr(unsafe.Pointer(&u))) + return ioctl(f, syscall.TIOCSPTLCK, uintptr(unsafe.Pointer(&u))) //nolint:gosec // Expected unsafe pointer for Syscall call. } diff --git a/vendor/github.com/creack/pty/pty_netbsd.go b/vendor/github.com/creack/pty/pty_netbsd.go new file mode 100644 index 0000000000..dd5611dbd7 --- /dev/null +++ b/vendor/github.com/creack/pty/pty_netbsd.go @@ -0,0 +1,69 @@ +//go:build netbsd +// +build netbsd + +package pty + +import ( + "errors" + "os" + "syscall" + "unsafe" +) + +func open() (pty, tty *os.File, err error) { + p, err := os.OpenFile("/dev/ptmx", os.O_RDWR, 0) + if err != nil { + return nil, nil, err + } + // In case of error after this point, make sure we close the ptmx fd. + defer func() { + if err != nil { + _ = p.Close() // Best effort. + } + }() + + sname, err := ptsname(p) + if err != nil { + return nil, nil, err + } + + if err := grantpt(p); err != nil { + return nil, nil, err + } + + // In NetBSD unlockpt() does nothing, so it isn't called here. + + t, err := os.OpenFile(sname, os.O_RDWR|syscall.O_NOCTTY, 0) + if err != nil { + return nil, nil, err + } + return p, t, nil +} + +func ptsname(f *os.File) (string, error) { + /* + * from ptsname(3): The ptsname() function is equivalent to: + * struct ptmget pm; + * ioctl(fd, TIOCPTSNAME, &pm) == -1 ? NULL : pm.sn; + */ + var ptm ptmget + if err := ioctl(f, uintptr(ioctl_TIOCPTSNAME), uintptr(unsafe.Pointer(&ptm))); err != nil { + return "", err + } + name := make([]byte, len(ptm.Sn)) + for i, c := range ptm.Sn { + name[i] = byte(c) + if c == 0 { + return string(name[:i]), nil + } + } + return "", errors.New("TIOCPTSNAME string not NUL-terminated") +} + +func grantpt(f *os.File) error { + /* + * from grantpt(3): Calling grantpt() is equivalent to: + * ioctl(fd, TIOCGRANTPT, 0); + */ + return ioctl(f, uintptr(ioctl_TIOCGRANTPT), 0) +} diff --git a/vendor/github.com/creack/pty/pty_openbsd.go b/vendor/github.com/creack/pty/pty_openbsd.go index a6a35d1e67..337c39f3f1 100644 --- a/vendor/github.com/creack/pty/pty_openbsd.go +++ b/vendor/github.com/creack/pty/pty_openbsd.go @@ -1,3 +1,6 @@ +//go:build openbsd +// +build openbsd + package pty import ( @@ -6,6 +9,17 @@ import ( "unsafe" ) +func cInt8ToString(in []int8) string { + var s []byte + for _, v := range in { + if v == 0 { + break + } + s = append(s, byte(v)) + } + return string(s) +} + func open() (pty, tty *os.File, err error) { /* * from ptm(4): @@ -22,12 +36,12 @@ func open() (pty, tty *os.File, err error) { defer p.Close() var ptm ptmget - if err := ioctl(p.Fd(), uintptr(ioctl_PTMGET), uintptr(unsafe.Pointer(&ptm))); err != nil { + if err := ioctl(p, uintptr(ioctl_PTMGET), uintptr(unsafe.Pointer(&ptm))); err != nil { return nil, nil, err } - pty = os.NewFile(uintptr(ptm.Cfd), "/dev/ptm") - tty = os.NewFile(uintptr(ptm.Sfd), "/dev/ptm") + pty = os.NewFile(uintptr(ptm.Cfd), cInt8ToString(ptm.Cn[:])) + tty = os.NewFile(uintptr(ptm.Sfd), cInt8ToString(ptm.Sn[:])) return pty, tty, nil } diff --git a/vendor/github.com/creack/pty/pty_solaris.go b/vendor/github.com/creack/pty/pty_solaris.go index 09ec1b7978..4e22416b01 100644 --- a/vendor/github.com/creack/pty/pty_solaris.go +++ b/vendor/github.com/creack/pty/pty_solaris.go @@ -1,3 +1,6 @@ +//go:build solaris +// +build solaris + package pty /* based on: @@ -6,122 +9,153 @@ http://src.illumos.org/source/xref/illumos-gate/usr/src/lib/libc/port/gen/pt.c import ( "errors" - "golang.org/x/sys/unix" "os" "strconv" "syscall" "unsafe" ) -const NODEV = ^uint64(0) - func open() (pty, tty *os.File, err error) { - masterfd, err := syscall.Open("/dev/ptmx", syscall.O_RDWR|unix.O_NOCTTY, 0) - //masterfd, err := syscall.Open("/dev/ptmx", syscall.O_RDWR|syscall.O_CLOEXEC|unix.O_NOCTTY, 0) + ptmxfd, err := syscall.Open("/dev/ptmx", syscall.O_RDWR|syscall.O_NOCTTY, 0) if err != nil { return nil, nil, err } - p := os.NewFile(uintptr(masterfd), "/dev/ptmx") + p := os.NewFile(uintptr(ptmxfd), "/dev/ptmx") + // In case of error after this point, make sure we close the ptmx fd. + defer func() { + if err != nil { + _ = p.Close() // Best effort. + } + }() sname, err := ptsname(p) if err != nil { return nil, nil, err } - err = grantpt(p) - if err != nil { + if err := grantpt(p); err != nil { return nil, nil, err } - err = unlockpt(p) - if err != nil { + if err := unlockpt(p); err != nil { return nil, nil, err } - slavefd, err := syscall.Open(sname, os.O_RDWR|unix.O_NOCTTY, 0) + ptsfd, err := syscall.Open(sname, os.O_RDWR|syscall.O_NOCTTY, 0) if err != nil { return nil, nil, err } - t := os.NewFile(uintptr(slavefd), sname) + t := os.NewFile(uintptr(ptsfd), sname) - // pushing terminal driver STREAMS modules as per pts(7) - for _, mod := range([]string{"ptem", "ldterm", "ttcompat"}) { - err = streams_push(t, mod) + // In case of error after this point, make sure we close the pts fd. + defer func() { if err != nil { + _ = t.Close() // Best effort. + } + }() + + // pushing terminal driver STREAMS modules as per pts(7) + for _, mod := range []string{"ptem", "ldterm", "ttcompat"} { + if err := streamsPush(t, mod); err != nil { return nil, nil, err } } - - return p, t, nil -} -func minor(x uint64) uint64 { - return x & 0377 + return p, t, nil } -func ptsdev(fd uintptr) uint64 { - istr := strioctl{ISPTM, 0, 0, nil} - err := ioctl(fd, I_STR, uintptr(unsafe.Pointer(&istr))) +func ptsname(f *os.File) (string, error) { + dev, err := ptsdev(f) if err != nil { - return NODEV + return "", err } - var status unix.Stat_t - err = unix.Fstat(int(fd), &status) - if err != nil { - return NODEV + fn := "/dev/pts/" + strconv.FormatInt(int64(dev), 10) + + if err := syscall.Access(fn, 0); err != nil { + return "", err } - return uint64(minor(status.Rdev)) + return fn, nil } -func ptsname(f *os.File) (string, error) { - dev := ptsdev(f.Fd()) - if dev == NODEV { - return "", errors.New("not a master pty") +func unlockpt(f *os.File) error { + istr := strioctl{ + icCmd: UNLKPT, + icTimeout: 0, + icLen: 0, + icDP: nil, } - fn := "/dev/pts/" + strconv.FormatInt(int64(dev), 10) - // access(2) creates the slave device (if the pty exists) - // F_OK == 0 (unistd.h) - err := unix.Access(fn, 0) + return ioctl(f, I_STR, uintptr(unsafe.Pointer(&istr))) +} + +func minor(x uint64) uint64 { return x & 0377 } + +func ptsdev(f *os.File) (uint64, error) { + istr := strioctl{ + icCmd: ISPTM, + icTimeout: 0, + icLen: 0, + icDP: nil, + } + + if err := ioctl(f, I_STR, uintptr(unsafe.Pointer(&istr))); err != nil { + return 0, err + } + var errors = make(chan error, 1) + var results = make(chan uint64, 1) + defer close(errors) + defer close(results) + + var err error + var sc syscall.RawConn + sc, err = f.SyscallConn() if err != nil { - return "", err + return 0, err } - return fn, nil + err = sc.Control(func(fd uintptr) { + var status syscall.Stat_t + if err := syscall.Fstat(int(fd), &status); err != nil { + results <- 0 + errors <- err + } + results <- uint64(minor(status.Rdev)) + errors <- nil + }) + if err != nil { + return 0, err + } + return <-results, <-errors } -type pt_own struct { - pto_ruid int32 - pto_rgid int32 +type ptOwn struct { + rUID int32 + rGID int32 } func grantpt(f *os.File) error { - if ptsdev(f.Fd()) == NODEV { - return errors.New("not a master pty") - } - var pto pt_own - pto.pto_ruid = int32(os.Getuid()) - // XXX should first attempt to get gid of DEFAULT_TTY_GROUP="tty" - pto.pto_rgid = int32(os.Getgid()) - var istr strioctl - istr.ic_cmd = OWNERPT - istr.ic_timout = 0 - istr.ic_len = int32(unsafe.Sizeof(istr)) - istr.ic_dp = unsafe.Pointer(&pto) - err := ioctl(f.Fd(), I_STR, uintptr(unsafe.Pointer(&istr))) - if err != nil { + if _, err := ptsdev(f); err != nil { + return err + } + pto := ptOwn{ + rUID: int32(os.Getuid()), + // XXX should first attempt to get gid of DEFAULT_TTY_GROUP="tty" + rGID: int32(os.Getgid()), + } + istr := strioctl{ + icCmd: OWNERPT, + icTimeout: 0, + icLen: int32(unsafe.Sizeof(strioctl{})), + icDP: unsafe.Pointer(&pto), + } + if err := ioctl(f, I_STR, uintptr(unsafe.Pointer(&istr))); err != nil { return errors.New("access denied") } return nil } -func unlockpt(f *os.File) error { - istr := strioctl{UNLKPT, 0, 0, nil} - return ioctl(f.Fd(), I_STR, uintptr(unsafe.Pointer(&istr))) -} - -// push STREAMS modules if not already done so -func streams_push(f *os.File, mod string) error { - var err error +// streamsPush pushes STREAMS modules if not already done so. +func streamsPush(f *os.File, mod string) error { buf := []byte(mod) + // XXX I_FIND is not returning an error when the module // is already pushed even though truss reports a return // value of 1. A bug in the Go Solaris syscall interface? @@ -129,11 +163,9 @@ func streams_push(f *os.File, mod string) error { // https://www.illumos.org/issues/9042 // but since we are not using libc or XPG4.2, we should not be // double-pushing modules - - err = ioctl(f.Fd(), I_FIND, uintptr(unsafe.Pointer(&buf[0]))) - if err != nil { + + if err := ioctl(f, I_FIND, uintptr(unsafe.Pointer(&buf[0]))); err != nil { return nil } - err = ioctl(f.Fd(), I_PUSH, uintptr(unsafe.Pointer(&buf[0]))) - return err + return ioctl(f, I_PUSH, uintptr(unsafe.Pointer(&buf[0]))) } diff --git a/vendor/github.com/creack/pty/pty_unsupported.go b/vendor/github.com/creack/pty/pty_unsupported.go index ceb425b19c..c771020fae 100644 --- a/vendor/github.com/creack/pty/pty_unsupported.go +++ b/vendor/github.com/creack/pty/pty_unsupported.go @@ -1,4 +1,5 @@ -// +build !linux,!darwin,!freebsd,!dragonfly,!openbsd,!solaris +//go:build !linux && !darwin && !freebsd && !dragonfly && !netbsd && !openbsd && !solaris +// +build !linux,!darwin,!freebsd,!dragonfly,!netbsd,!openbsd,!solaris package pty diff --git a/vendor/github.com/creack/pty/run.go b/vendor/github.com/creack/pty/run.go index 959be26b20..4755366200 100644 --- a/vendor/github.com/creack/pty/run.go +++ b/vendor/github.com/creack/pty/run.go @@ -1,5 +1,3 @@ -// +build !windows - package pty import ( @@ -11,25 +9,31 @@ import ( // Start assigns a pseudo-terminal tty os.File to c.Stdin, c.Stdout, // and c.Stderr, calls c.Start, and returns the File of the tty's // corresponding pty. -func Start(c *exec.Cmd) (pty *os.File, err error) { - return StartWithSize(c, nil) +// +// Starts the process in a new session and sets the controlling terminal. +func Start(cmd *exec.Cmd) (*os.File, error) { + return StartWithSize(cmd, nil) } -// StartWithSize assigns a pseudo-terminal tty os.File to c.Stdin, c.Stdout, +// StartWithAttrs assigns a pseudo-terminal tty os.File to c.Stdin, c.Stdout, // and c.Stderr, calls c.Start, and returns the File of the tty's // corresponding pty. // -// This will resize the pty to the specified size before starting the command -func StartWithSize(c *exec.Cmd, sz *Winsize) (pty *os.File, err error) { +// This will resize the pty to the specified size before starting the command if a size is provided. +// The `attrs` parameter overrides the one set in c.SysProcAttr. +// +// This should generally not be needed. Used in some edge cases where it is needed to create a pty +// without a controlling terminal. +func StartWithAttrs(c *exec.Cmd, sz *Winsize, attrs *syscall.SysProcAttr) (*os.File, error) { pty, tty, err := Open() if err != nil { return nil, err } - defer tty.Close() + defer func() { _ = tty.Close() }() // Best effort. + if sz != nil { - err = Setsize(pty, sz) - if err != nil { - pty.Close() + if err := Setsize(pty, sz); err != nil { + _ = pty.Close() // Best effort. return nil, err } } @@ -42,15 +46,11 @@ func StartWithSize(c *exec.Cmd, sz *Winsize) (pty *os.File, err error) { if c.Stdin == nil { c.Stdin = tty } - if c.SysProcAttr == nil { - c.SysProcAttr = &syscall.SysProcAttr{} - } - c.SysProcAttr.Setctty = true - c.SysProcAttr.Setsid = true - c.SysProcAttr.Ctty = int(tty.Fd()) - err = c.Start() - if err != nil { - pty.Close() + + c.SysProcAttr = attrs + + if err := c.Start(); err != nil { + _ = pty.Close() // Best effort. return nil, err } return pty, err diff --git a/vendor/github.com/creack/pty/start.go b/vendor/github.com/creack/pty/start.go new file mode 100644 index 0000000000..9b51635f5e --- /dev/null +++ b/vendor/github.com/creack/pty/start.go @@ -0,0 +1,25 @@ +//go:build !windows +// +build !windows + +package pty + +import ( + "os" + "os/exec" + "syscall" +) + +// StartWithSize assigns a pseudo-terminal tty os.File to c.Stdin, c.Stdout, +// and c.Stderr, calls c.Start, and returns the File of the tty's +// corresponding pty. +// +// This will resize the pty to the specified size before starting the command. +// Starts the process in a new session and sets the controlling terminal. +func StartWithSize(cmd *exec.Cmd, ws *Winsize) (*os.File, error) { + if cmd.SysProcAttr == nil { + cmd.SysProcAttr = &syscall.SysProcAttr{} + } + cmd.SysProcAttr.Setsid = true + cmd.SysProcAttr.Setctty = true + return StartWithAttrs(cmd, ws, cmd.SysProcAttr) +} diff --git a/vendor/github.com/creack/pty/start_windows.go b/vendor/github.com/creack/pty/start_windows.go new file mode 100644 index 0000000000..7e9530ba03 --- /dev/null +++ b/vendor/github.com/creack/pty/start_windows.go @@ -0,0 +1,19 @@ +//go:build windows +// +build windows + +package pty + +import ( + "os" + "os/exec" +) + +// StartWithSize assigns a pseudo-terminal tty os.File to c.Stdin, c.Stdout, +// and c.Stderr, calls c.Start, and returns the File of the tty's +// corresponding pty. +// +// This will resize the pty to the specified size before starting the command. +// Starts the process in a new session and sets the controlling terminal. +func StartWithSize(cmd *exec.Cmd, ws *Winsize) (*os.File, error) { + return nil, ErrUnsupported +} diff --git a/vendor/github.com/creack/pty/test_crosscompile.sh b/vendor/github.com/creack/pty/test_crosscompile.sh index f0b1dcac09..cff1b7ca74 100644 --- a/vendor/github.com/creack/pty/test_crosscompile.sh +++ b/vendor/github.com/creack/pty/test_crosscompile.sh @@ -4,32 +4,32 @@ # Does not actually test the logic, just the compilation so we make sure we don't break code depending on the lib. echo2() { - echo $@ >&2 + echo $@ >&2 } trap end 0 end() { - [ "$?" = 0 ] && echo2 "Pass." || (echo2 "Fail."; exit 1) + [ "$?" = 0 ] && echo2 "Pass." || (echo2 "Fail."; exit 1) } cross() { - os=$1 - shift - echo2 "Build for $os." - for arch in $@; do - echo2 " - $os/$arch" - GOOS=$os GOARCH=$arch go build - done - echo2 + os=$1 + shift + echo2 "Build for $os." + for arch in $@; do + echo2 " - $os/$arch" + GOOS=$os GOARCH=$arch go build + done + echo2 } set -e -cross linux amd64 386 arm arm64 ppc64 ppc64le s390x mips mipsle mips64 mips64le -cross darwin amd64 386 arm arm64 -cross freebsd amd64 386 arm -cross netbsd amd64 386 arm -cross openbsd amd64 386 +cross linux amd64 386 arm arm64 ppc64 ppc64le s390x mips mipsle mips64 mips64le riscv64 +cross darwin amd64 arm64 +cross freebsd amd64 386 arm arm64 riscv64 +cross netbsd amd64 386 arm arm64 +cross openbsd amd64 386 arm arm64 cross dragonfly amd64 cross solaris amd64 @@ -41,10 +41,24 @@ cross windows amd64 386 arm # Some os/arch require a different compiler. Run in docker. if ! hash docker; then - # If docker is not present, stop here. - return + # If docker is not present, stop here. + return fi echo2 "Build for linux." echo2 " - linux/riscv" -docker build -t test -f Dockerfile.riscv . +docker build -t creack-pty-test -f Dockerfile.riscv . + +# Golang dropped support for darwin 32bits since go1.15. Make sure the lib still compile with go1.14 on those archs. +echo2 "Build for darwin (32bits)." +echo2 " - darwin/386" +docker build -t creack-pty-test -f Dockerfile.golang --build-arg=GOVERSION=1.14 --build-arg=GOOS=darwin --build-arg=GOARCH=386 . +echo2 " - darwin/arm" +docker build -t creack-pty-test -f Dockerfile.golang --build-arg=GOVERSION=1.14 --build-arg=GOOS=darwin --build-arg=GOARCH=arm . + +# Run a single test for an old go version. Would be best with go1.0, but not available on Dockerhub. +# Using 1.6 as it is the base version for the RISCV compiler. +# Would also be better to run all the tests, not just one, need to refactor this file to allow for specifc archs per version. +echo2 "Build for linux - go1.6." +echo2 " - linux/amd64" +docker build -t creack-pty-test -f Dockerfile.golang --build-arg=GOVERSION=1.6 --build-arg=GOOS=linux --build-arg=GOARCH=amd64 . diff --git a/vendor/github.com/creack/pty/util.go b/vendor/github.com/creack/pty/util.go deleted file mode 100644 index 8fdde0bab9..0000000000 --- a/vendor/github.com/creack/pty/util.go +++ /dev/null @@ -1,64 +0,0 @@ -// +build !windows,!solaris - -package pty - -import ( - "os" - "syscall" - "unsafe" -) - -// InheritSize applies the terminal size of pty to tty. This should be run -// in a signal handler for syscall.SIGWINCH to automatically resize the tty when -// the pty receives a window size change notification. -func InheritSize(pty, tty *os.File) error { - size, err := GetsizeFull(pty) - if err != nil { - return err - } - err = Setsize(tty, size) - if err != nil { - return err - } - return nil -} - -// Setsize resizes t to s. -func Setsize(t *os.File, ws *Winsize) error { - return windowRectCall(ws, t.Fd(), syscall.TIOCSWINSZ) -} - -// GetsizeFull returns the full terminal size description. -func GetsizeFull(t *os.File) (size *Winsize, err error) { - var ws Winsize - err = windowRectCall(&ws, t.Fd(), syscall.TIOCGWINSZ) - return &ws, err -} - -// Getsize returns the number of rows (lines) and cols (positions -// in each line) in terminal t. -func Getsize(t *os.File) (rows, cols int, err error) { - ws, err := GetsizeFull(t) - return int(ws.Rows), int(ws.Cols), err -} - -// Winsize describes the terminal size. -type Winsize struct { - Rows uint16 // ws_row: Number of rows (in cells) - Cols uint16 // ws_col: Number of columns (in cells) - X uint16 // ws_xpixel: Width in pixels - Y uint16 // ws_ypixel: Height in pixels -} - -func windowRectCall(ws *Winsize, fd, a2 uintptr) error { - _, _, errno := syscall.Syscall( - syscall.SYS_IOCTL, - fd, - a2, - uintptr(unsafe.Pointer(ws)), - ) - if errno != 0 { - return syscall.Errno(errno) - } - return nil -} diff --git a/vendor/github.com/creack/pty/util_solaris.go b/vendor/github.com/creack/pty/util_solaris.go deleted file mode 100644 index e889692482..0000000000 --- a/vendor/github.com/creack/pty/util_solaris.go +++ /dev/null @@ -1,51 +0,0 @@ -// - -package pty - -import ( - "os" - "golang.org/x/sys/unix" -) - -const ( - TIOCGWINSZ = 21608 // 'T' << 8 | 104 - TIOCSWINSZ = 21607 // 'T' << 8 | 103 -) - -// Winsize describes the terminal size. -type Winsize struct { - Rows uint16 // ws_row: Number of rows (in cells) - Cols uint16 // ws_col: Number of columns (in cells) - X uint16 // ws_xpixel: Width in pixels - Y uint16 // ws_ypixel: Height in pixels -} - -// GetsizeFull returns the full terminal size description. -func GetsizeFull(t *os.File) (size *Winsize, err error) { - var wsz *unix.Winsize - wsz, err = unix.IoctlGetWinsize(int(t.Fd()), TIOCGWINSZ) - - if err != nil { - return nil, err - } else { - return &Winsize{wsz.Row, wsz.Col, wsz.Xpixel, wsz.Ypixel}, nil - } -} - -// Get Windows Size -func Getsize(t *os.File) (rows, cols int, err error) { - var wsz *unix.Winsize - wsz, err = unix.IoctlGetWinsize(int(t.Fd()), TIOCGWINSZ) - - if err != nil { - return 80, 25, err - } else { - return int(wsz.Row), int(wsz.Col), nil - } -} - -// Setsize resizes t to s. -func Setsize(t *os.File, ws *Winsize) error { - wsz := unix.Winsize{ws.Rows, ws.Cols, ws.X, ws.Y} - return unix.IoctlSetWinsize(int(t.Fd()), TIOCSWINSZ, &wsz) -} diff --git a/vendor/github.com/creack/pty/winsize.go b/vendor/github.com/creack/pty/winsize.go new file mode 100644 index 0000000000..57323f40ab --- /dev/null +++ b/vendor/github.com/creack/pty/winsize.go @@ -0,0 +1,27 @@ +package pty + +import "os" + +// InheritSize applies the terminal size of pty to tty. This should be run +// in a signal handler for syscall.SIGWINCH to automatically resize the tty when +// the pty receives a window size change notification. +func InheritSize(pty, tty *os.File) error { + size, err := GetsizeFull(pty) + if err != nil { + return err + } + if err := Setsize(tty, size); err != nil { + return err + } + return nil +} + +// Getsize returns the number of rows (lines) and cols (positions +// in each line) in terminal t. +func Getsize(t *os.File) (rows, cols int, err error) { + ws, err := GetsizeFull(t) + if err != nil { + return 0, 0, err + } + return int(ws.Rows), int(ws.Cols), nil +} diff --git a/vendor/github.com/creack/pty/winsize_unix.go b/vendor/github.com/creack/pty/winsize_unix.go new file mode 100644 index 0000000000..ad98c8a47b --- /dev/null +++ b/vendor/github.com/creack/pty/winsize_unix.go @@ -0,0 +1,35 @@ +//go:build !windows +// +build !windows + +package pty + +import ( + "os" + "syscall" + "unsafe" +) + +// Winsize describes the terminal size. +type Winsize struct { + Rows uint16 // ws_row: Number of rows (in cells) + Cols uint16 // ws_col: Number of columns (in cells) + X uint16 // ws_xpixel: Width in pixels + Y uint16 // ws_ypixel: Height in pixels +} + +// Setsize resizes t to s. +func Setsize(t *os.File, ws *Winsize) error { + //nolint:gosec // Expected unsafe pointer for Syscall call. + return ioctl(t, syscall.TIOCSWINSZ, uintptr(unsafe.Pointer(ws))) +} + +// GetsizeFull returns the full terminal size description. +func GetsizeFull(t *os.File) (size *Winsize, err error) { + var ws Winsize + + //nolint:gosec // Expected unsafe pointer for Syscall call. + if err := ioctl(t, syscall.TIOCGWINSZ, uintptr(unsafe.Pointer(&ws))); err != nil { + return nil, err + } + return &ws, nil +} diff --git a/vendor/github.com/creack/pty/winsize_unsupported.go b/vendor/github.com/creack/pty/winsize_unsupported.go new file mode 100644 index 0000000000..0d2109938a --- /dev/null +++ b/vendor/github.com/creack/pty/winsize_unsupported.go @@ -0,0 +1,23 @@ +//go:build windows +// +build windows + +package pty + +import ( + "os" +) + +// Winsize is a dummy struct to enable compilation on unsupported platforms. +type Winsize struct { + Rows, Cols, X, Y uint16 +} + +// Setsize resizes t to s. +func Setsize(*os.File, *Winsize) error { + return ErrUnsupported +} + +// GetsizeFull returns the full terminal size description. +func GetsizeFull(*os.File) (*Winsize, error) { + return nil, ErrUnsupported +} diff --git a/vendor/github.com/creack/pty/ztypes_386.go b/vendor/github.com/creack/pty/ztypes_386.go index ff0b8fd838..d126f4aa58 100644 --- a/vendor/github.com/creack/pty/ztypes_386.go +++ b/vendor/github.com/creack/pty/ztypes_386.go @@ -1,3 +1,6 @@ +//go:build 386 +// +build 386 + // Created by cgo -godefs - DO NOT EDIT // cgo -godefs types.go diff --git a/vendor/github.com/creack/pty/ztypes_amd64.go b/vendor/github.com/creack/pty/ztypes_amd64.go index ff0b8fd838..6c4a7677fc 100644 --- a/vendor/github.com/creack/pty/ztypes_amd64.go +++ b/vendor/github.com/creack/pty/ztypes_amd64.go @@ -1,3 +1,6 @@ +//go:build amd64 +// +build amd64 + // Created by cgo -godefs - DO NOT EDIT // cgo -godefs types.go diff --git a/vendor/github.com/creack/pty/ztypes_arm.go b/vendor/github.com/creack/pty/ztypes_arm.go index ff0b8fd838..de6fe160ea 100644 --- a/vendor/github.com/creack/pty/ztypes_arm.go +++ b/vendor/github.com/creack/pty/ztypes_arm.go @@ -1,3 +1,6 @@ +//go:build arm +// +build arm + // Created by cgo -godefs - DO NOT EDIT // cgo -godefs types.go diff --git a/vendor/github.com/creack/pty/ztypes_arm64.go b/vendor/github.com/creack/pty/ztypes_arm64.go index 6c29a4b918..c4f315cac1 100644 --- a/vendor/github.com/creack/pty/ztypes_arm64.go +++ b/vendor/github.com/creack/pty/ztypes_arm64.go @@ -1,8 +1,9 @@ +//go:build arm64 +// +build arm64 + // Created by cgo -godefs - DO NOT EDIT // cgo -godefs types.go -// +build arm64 - package pty type ( diff --git a/vendor/github.com/creack/pty/ztypes_dragonfly_amd64.go b/vendor/github.com/creack/pty/ztypes_dragonfly_amd64.go index 6b0ba037f8..183c421471 100644 --- a/vendor/github.com/creack/pty/ztypes_dragonfly_amd64.go +++ b/vendor/github.com/creack/pty/ztypes_dragonfly_amd64.go @@ -1,3 +1,6 @@ +//go:build amd64 && dragonfly +// +build amd64,dragonfly + // Created by cgo -godefs - DO NOT EDIT // cgo -godefs types_dragonfly.go diff --git a/vendor/github.com/creack/pty/ztypes_freebsd_386.go b/vendor/github.com/creack/pty/ztypes_freebsd_386.go index d9975374e3..d80dbf7172 100644 --- a/vendor/github.com/creack/pty/ztypes_freebsd_386.go +++ b/vendor/github.com/creack/pty/ztypes_freebsd_386.go @@ -1,3 +1,6 @@ +//go:build 386 && freebsd +// +build 386,freebsd + // Created by cgo -godefs - DO NOT EDIT // cgo -godefs types_freebsd.go diff --git a/vendor/github.com/creack/pty/ztypes_freebsd_amd64.go b/vendor/github.com/creack/pty/ztypes_freebsd_amd64.go index 5fa102fcdf..bfab4e4582 100644 --- a/vendor/github.com/creack/pty/ztypes_freebsd_amd64.go +++ b/vendor/github.com/creack/pty/ztypes_freebsd_amd64.go @@ -1,3 +1,6 @@ +//go:build amd64 && freebsd +// +build amd64,freebsd + // Created by cgo -godefs - DO NOT EDIT // cgo -godefs types_freebsd.go diff --git a/vendor/github.com/creack/pty/ztypes_freebsd_arm.go b/vendor/github.com/creack/pty/ztypes_freebsd_arm.go index d9975374e3..3a8aeae371 100644 --- a/vendor/github.com/creack/pty/ztypes_freebsd_arm.go +++ b/vendor/github.com/creack/pty/ztypes_freebsd_arm.go @@ -1,3 +1,6 @@ +//go:build arm && freebsd +// +build arm,freebsd + // Created by cgo -godefs - DO NOT EDIT // cgo -godefs types_freebsd.go diff --git a/vendor/github.com/creack/pty/ztypes_freebsd_arm64.go b/vendor/github.com/creack/pty/ztypes_freebsd_arm64.go new file mode 100644 index 0000000000..a83924918a --- /dev/null +++ b/vendor/github.com/creack/pty/ztypes_freebsd_arm64.go @@ -0,0 +1,16 @@ +//go:build arm64 && freebsd +// +build arm64,freebsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs types_freebsd.go + +package pty + +const ( + _C_SPECNAMELEN = 0xff +) + +type fiodgnameArg struct { + Len int32 + Buf *byte +} diff --git a/vendor/github.com/creack/pty/ztypes_freebsd_ppc64.go b/vendor/github.com/creack/pty/ztypes_freebsd_ppc64.go new file mode 100644 index 0000000000..5fa102fcdf --- /dev/null +++ b/vendor/github.com/creack/pty/ztypes_freebsd_ppc64.go @@ -0,0 +1,14 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types_freebsd.go + +package pty + +const ( + _C_SPECNAMELEN = 0x3f +) + +type fiodgnameArg struct { + Len int32 + Pad_cgo_0 [4]byte + Buf *byte +} diff --git a/vendor/github.com/creack/pty/ztypes_freebsd_riscv64.go b/vendor/github.com/creack/pty/ztypes_freebsd_riscv64.go new file mode 100644 index 0000000000..b3c544098c --- /dev/null +++ b/vendor/github.com/creack/pty/ztypes_freebsd_riscv64.go @@ -0,0 +1,13 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs types_freebsd.go + +package pty + +const ( + _C_SPECNAMELEN = 0x3f +) + +type fiodgnameArg struct { + Len int32 + Buf *byte +} diff --git a/vendor/github.com/creack/pty/ztypes_loong64.go b/vendor/github.com/creack/pty/ztypes_loong64.go new file mode 100644 index 0000000000..3beb5c1762 --- /dev/null +++ b/vendor/github.com/creack/pty/ztypes_loong64.go @@ -0,0 +1,12 @@ +//go:build loong64 +// +build loong64 + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types.go + +package pty + +type ( + _C_int int32 + _C_uint uint32 +) diff --git a/vendor/github.com/creack/pty/ztypes_mipsx.go b/vendor/github.com/creack/pty/ztypes_mipsx.go index f0ce74086a..281277977e 100644 --- a/vendor/github.com/creack/pty/ztypes_mipsx.go +++ b/vendor/github.com/creack/pty/ztypes_mipsx.go @@ -1,9 +1,10 @@ +//go:build (mips || mipsle || mips64 || mips64le) && linux +// +build mips mipsle mips64 mips64le +// +build linux + // Created by cgo -godefs - DO NOT EDIT // cgo -godefs types.go -// +build linux -// +build mips mipsle mips64 mips64le - package pty type ( diff --git a/vendor/github.com/creack/pty/ztypes_netbsd_32bit_int.go b/vendor/github.com/creack/pty/ztypes_netbsd_32bit_int.go new file mode 100644 index 0000000000..2ab7c45598 --- /dev/null +++ b/vendor/github.com/creack/pty/ztypes_netbsd_32bit_int.go @@ -0,0 +1,17 @@ +//go:build (386 || amd64 || arm || arm64) && netbsd +// +build 386 amd64 arm arm64 +// +build netbsd + +package pty + +type ptmget struct { + Cfd int32 + Sfd int32 + Cn [1024]int8 + Sn [1024]int8 +} + +var ( + ioctl_TIOCPTSNAME = 0x48087448 + ioctl_TIOCGRANTPT = 0x20007447 +) diff --git a/vendor/github.com/creack/pty/ztypes_openbsd_amd64.go b/vendor/github.com/creack/pty/ztypes_openbsd_32bit_int.go similarity index 50% rename from vendor/github.com/creack/pty/ztypes_openbsd_amd64.go rename to vendor/github.com/creack/pty/ztypes_openbsd_32bit_int.go index e67051688f..1eb0948167 100644 --- a/vendor/github.com/creack/pty/ztypes_openbsd_amd64.go +++ b/vendor/github.com/creack/pty/ztypes_openbsd_32bit_int.go @@ -1,5 +1,6 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_openbsd.go +//go:build (386 || amd64 || arm || arm64 || mips64) && openbsd +// +build 386 amd64 arm arm64 mips64 +// +build openbsd package pty diff --git a/vendor/github.com/creack/pty/ztypes_openbsd_386.go b/vendor/github.com/creack/pty/ztypes_openbsd_386.go deleted file mode 100644 index ccb3aab9ae..0000000000 --- a/vendor/github.com/creack/pty/ztypes_openbsd_386.go +++ /dev/null @@ -1,13 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_openbsd.go - -package pty - -type ptmget struct { - Cfd int32 - Sfd int32 - Cn [16]int8 - Sn [16]int8 -} - -var ioctl_PTMGET = 0x40287401 diff --git a/vendor/github.com/creack/pty/ztypes_ppc.go b/vendor/github.com/creack/pty/ztypes_ppc.go new file mode 100644 index 0000000000..ff0b8fd838 --- /dev/null +++ b/vendor/github.com/creack/pty/ztypes_ppc.go @@ -0,0 +1,9 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types.go + +package pty + +type ( + _C_int int32 + _C_uint uint32 +) diff --git a/vendor/github.com/creack/pty/ztypes_ppc64.go b/vendor/github.com/creack/pty/ztypes_ppc64.go index 4e1af84312..bbb3da8322 100644 --- a/vendor/github.com/creack/pty/ztypes_ppc64.go +++ b/vendor/github.com/creack/pty/ztypes_ppc64.go @@ -1,3 +1,4 @@ +//go:build ppc64 // +build ppc64 // Created by cgo -godefs - DO NOT EDIT diff --git a/vendor/github.com/creack/pty/ztypes_ppc64le.go b/vendor/github.com/creack/pty/ztypes_ppc64le.go index e6780f4e23..8a4fac3e92 100644 --- a/vendor/github.com/creack/pty/ztypes_ppc64le.go +++ b/vendor/github.com/creack/pty/ztypes_ppc64le.go @@ -1,3 +1,4 @@ +//go:build ppc64le // +build ppc64le // Created by cgo -godefs - DO NOT EDIT diff --git a/vendor/github.com/creack/pty/ztypes_riscvx.go b/vendor/github.com/creack/pty/ztypes_riscvx.go index 99eec8ecbe..dc5da90506 100644 --- a/vendor/github.com/creack/pty/ztypes_riscvx.go +++ b/vendor/github.com/creack/pty/ztypes_riscvx.go @@ -1,8 +1,9 @@ +//go:build riscv || riscv64 +// +build riscv riscv64 + // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs types.go -// +build riscv riscv64 - package pty type ( diff --git a/vendor/github.com/creack/pty/ztypes_s390x.go b/vendor/github.com/creack/pty/ztypes_s390x.go index a7452b61cb..3433be7ca0 100644 --- a/vendor/github.com/creack/pty/ztypes_s390x.go +++ b/vendor/github.com/creack/pty/ztypes_s390x.go @@ -1,3 +1,4 @@ +//go:build s390x // +build s390x // Created by cgo -godefs - DO NOT EDIT diff --git a/vendor/github.com/creack/pty/ztypes_sparcx.go b/vendor/github.com/creack/pty/ztypes_sparcx.go new file mode 100644 index 0000000000..06e44311df --- /dev/null +++ b/vendor/github.com/creack/pty/ztypes_sparcx.go @@ -0,0 +1,12 @@ +//go:build sparc || sparc64 +// +build sparc sparc64 + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs types.go + +package pty + +type ( + _C_int int32 + _C_uint uint32 +) diff --git a/vendor/github.com/derekparker/trie/trie.go b/vendor/github.com/derekparker/trie/trie.go index 772a3a38a6..04e1371dc5 100644 --- a/vendor/github.com/derekparker/trie/trie.go +++ b/vendor/github.com/derekparker/trie/trie.go @@ -107,11 +107,22 @@ func (t *Trie) Remove(key string) { rs = []rune(key) node = findNode(t.Root(), []rune(key)) ) + + if node == nil { + return + } + t.mu.Lock() t.size-- for n := node.Parent(); n != nil; n = n.Parent() { i++ + + if n == t.root { + t.root = &Node{children: make(map[rune]*Node)} + break + } + if len(n.Children()) > 1 { r := rs[len(rs)-i] n.RemoveChild(r) diff --git a/vendor/github.com/google/go-dap/codec.go b/vendor/github.com/google/go-dap/codec.go index 50b14a5018..79a43b44c9 100644 --- a/vendor/github.com/google/go-dap/codec.go +++ b/vendor/github.com/google/go-dap/codec.go @@ -28,84 +28,161 @@ type DecodeProtocolMessageFieldError struct { SubType string FieldName string FieldValue string + Message json.RawMessage } func (e *DecodeProtocolMessageFieldError) Error() string { return fmt.Sprintf("%s %s '%s' is not supported (seq: %d)", e.SubType, e.FieldName, e.FieldValue, e.Seq) } -// DecodeProtocolMessage parses the JSON-encoded data and returns the result of +// defaultCodec is used to decode vanilla DAP messages. +var defaultCodec = NewCodec() + +// Codec is responsible for turning byte blobs into DAP messages. +type Codec struct { + eventCtor map[string]messageCtor + requestCtor map[string]messageCtor + responseCtor map[string]messageCtor +} + +// NewCodec constructs a new codec that extends the vanilla DAP protocol. +// Unless you need to register custom DAP messages, use +// DecodeProtocolMessage instead. +func NewCodec() *Codec { + ret := &Codec{ + eventCtor: make(map[string]messageCtor), + requestCtor: make(map[string]messageCtor), + responseCtor: make(map[string]messageCtor), + } + for k, v := range eventCtor { + ret.eventCtor[k] = v + } + for k, v := range requestCtor { + ret.requestCtor[k] = v + } + for k, v := range responseCtor { + ret.responseCtor[k] = v + } + return ret +} + +// RegisterRequest registers a new custom DAP command, so that it can be +// unmarshalled by DecodeMessage. Returns an error when the command already +// exists. +// +// The ctor functions need to return a new instance of the underlying DAP +// message type. A typical usage looks like this: +// +// reqCtor := func() Message { return &LaunchRequest{} } +// respCtor := func() Message { return &LaunchResponse{} } +// codec.RegisterRequest("launch", reqCtor, respCtor) +func (c *Codec) RegisterRequest(command string, requestCtor, responseCtor func() Message) error { + _, hasReqCtor := c.requestCtor[command] + _, hasRespCtor := c.responseCtor[command] + if hasReqCtor || hasRespCtor { + return fmt.Errorf("command %q is already registered", command) + } + c.requestCtor[command] = requestCtor + c.responseCtor[command] = responseCtor + return nil +} + +// RegisterEvent registers a new custom DAP event, so that it can be +// unmarshalled by DecodeMessage. Returns an error when the event already +// exists. +// +// The ctor function needs to return a new instance of the underlying DAP +// message type. A typical usage looks like this: +// +// ctor := func() Message { return &StoppedEvent{} } +// codec.RegisterEvent("stopped", ctor) +func (c *Codec) RegisterEvent(event string, ctor func() Message) error { + if _, hasEventCtor := c.eventCtor[event]; hasEventCtor { + return fmt.Errorf("event %q is already registered", event) + } + c.eventCtor[event] = ctor + return nil +} + +// DecodeMessage parses the JSON-encoded data and returns the result of // the appropriate type within the ProtocolMessage hierarchy. If message type, // command, etc cannot be cast, returns DecodeProtocolMessageFieldError. // See also godoc for json.Unmarshal, which is used for underlying decoding. -func DecodeProtocolMessage(data []byte) (Message, error) { - var protomsg ProtocolMessage - if err := json.Unmarshal(data, &protomsg); err != nil { +func (c *Codec) DecodeMessage(data []byte) (Message, error) { + // This struct is the union of the ResponseMessage, RequestMessage, and + // EventMessage types. It is an optimization that saves an additional + // json.Unmarshal call. + var m struct { + ProtocolMessage + Command string `json:"command"` + Event string `json:"event"` + Success bool `json:"success"` + } + if err := json.Unmarshal(data, &m); err != nil { return nil, err } - switch protomsg.Type { + switch m.Type { case "request": - return decodeRequest(data) + return c.decodeRequest(m.Command, m.Seq, data) case "response": - return decodeResponse(data) + return c.decodeResponse(m.Command, m.Seq, m.Success, data) case "event": - return decodeEvent(data) + return c.decodeEvent(m.Event, m.Seq, data) default: - return nil, &DecodeProtocolMessageFieldError{protomsg.GetSeq(), "ProtocolMessage", "type", protomsg.Type} + return nil, &DecodeProtocolMessageFieldError{m.Seq, "ProtocolMessage", "type", m.Type, json.RawMessage(data)} } } -type messageCtor func() Message - // decodeRequest determines what request type in the ProtocolMessage hierarchy // data corresponds to and uses json.Unmarshal to populate the corresponding // struct to be returned. -func decodeRequest(data []byte) (Message, error) { - var r Request - if err := json.Unmarshal(data, &r); err != nil { - return nil, err +func (c *Codec) decodeRequest(command string, seq int, data []byte) (Message, error) { + ctor, ok := c.requestCtor[command] + if !ok { + return nil, &DecodeProtocolMessageFieldError{seq, "Request", "command", command, json.RawMessage(data)} } - if ctor, ok := requestCtor[r.Command]; ok { - requestPtr := ctor() - err := json.Unmarshal(data, requestPtr) - return requestPtr, err - } - return nil, &DecodeProtocolMessageFieldError{r.GetSeq(), "Request", "command", r.Command} + requestPtr := ctor() + err := json.Unmarshal(data, requestPtr) + return requestPtr, err } // decodeResponse determines what response type in the ProtocolMessage hierarchy // data corresponds to and uses json.Unmarshal to populate the corresponding // struct to be returned. -func decodeResponse(data []byte) (Message, error) { - var r Response - if err := json.Unmarshal(data, &r); err != nil { - return nil, err - } - if !r.Success { +func (c *Codec) decodeResponse(command string, seq int, success bool, data []byte) (Message, error) { + if !success { var er ErrorResponse err := json.Unmarshal(data, &er) return &er, err } - if ctor, ok := responseCtor[r.Command]; ok { - responsePtr := ctor() - err := json.Unmarshal(data, responsePtr) - return responsePtr, err + ctor, ok := c.responseCtor[command] + if !ok { + return nil, &DecodeProtocolMessageFieldError{seq, "Response", "command", command, json.RawMessage(data)} } - return nil, &DecodeProtocolMessageFieldError{r.GetSeq(), "Response", "command", r.Command} + responsePtr := ctor() + err := json.Unmarshal(data, responsePtr) + return responsePtr, err } // decodeEvent determines what event type in the ProtocolMessage hierarchy // data corresponds to and uses json.Unmarshal to populate the corresponding // struct to be returned. -func decodeEvent(data []byte) (Message, error) { - var e Event - if err := json.Unmarshal(data, &e); err != nil { - return nil, err +func (c *Codec) decodeEvent(event string, seq int, data []byte) (Message, error) { + ctor, ok := c.eventCtor[event] + if !ok { + return nil, &DecodeProtocolMessageFieldError{seq, "Event", "event", event, json.RawMessage(data)} } - if ctor, ok := eventCtor[e.Event]; ok { - eventPtr := ctor() - err := json.Unmarshal(data, eventPtr) - return eventPtr, err - } - return nil, &DecodeProtocolMessageFieldError{e.GetSeq(), "Event", "event", e.Event} + eventPtr := ctor() + err := json.Unmarshal(data, eventPtr) + return eventPtr, err +} + +// DecodeProtocolMessage parses the JSON-encoded ProtocolMessage and returns +// the message embedded in it. If message type, command, etc cannot be cast, +// returns DecodeProtocolMessageFieldError. See also godoc for json.Unmarshal, +// which is used for underlying decoding. +func DecodeProtocolMessage(data []byte) (Message, error) { + return defaultCodec.DecodeMessage(data) } + +type messageCtor func() Message diff --git a/vendor/github.com/google/go-dap/schematypes.go b/vendor/github.com/google/go-dap/schematypes.go index 8799020d35..e359a18cf3 100644 --- a/vendor/github.com/google/go-dap/schematypes.go +++ b/vendor/github.com/google/go-dap/schematypes.go @@ -76,6 +76,8 @@ type Request struct { Command string `json:"command"` } +func (r *Request) GetRequest() *Request { return r } + // Event: A debug adapter initiated event. type Event struct { ProtocolMessage @@ -83,6 +85,8 @@ type Event struct { Event string `json:"event"` } +func (e *Event) GetEvent() *Event { return e } + // Response: Response for a request. type Response struct { ProtocolMessage @@ -93,6 +97,8 @@ type Response struct { Message string `json:"message,omitempty"` } +func (r *Response) GetResponse() *Response { return r } + // ErrorResponse: On error (whenever `success` is false), the body can provide more details. type ErrorResponse struct { Response @@ -104,8 +110,6 @@ type ErrorResponseBody struct { Error *ErrorMessage `json:"error,omitempty"` } -func (r *ErrorResponse) GetResponse() *Response { return &r.Response } - // CancelRequest: The `cancel` request is used by the client in two situations: // - to indicate that it is no longer interested in the result produced by a specific request issued earlier // - to cancel a progress sequence. Clients should only call this request if the corresponding capability `supportsCancelRequest` is true. @@ -122,8 +126,6 @@ type CancelRequest struct { Arguments *CancelArguments `json:"arguments,omitempty"` } -func (r *CancelRequest) GetRequest() *Request { return &r.Request } - // CancelArguments: Arguments for `cancel` request. type CancelArguments struct { RequestId int `json:"requestId,omitempty"` @@ -135,8 +137,6 @@ type CancelResponse struct { Response } -func (r *CancelResponse) GetResponse() *Response { return &r.Response } - // InitializedEvent: This event indicates that the debug adapter is ready to accept configuration requests (e.g. `setBreakpoints`, `setExceptionBreakpoints`). // A debug adapter is expected to send this event when it is ready to accept configuration requests (but not before the `initialize` request has finished). // The sequence of events/requests is as follows: @@ -150,8 +150,6 @@ type InitializedEvent struct { Event } -func (e *InitializedEvent) GetEvent() *Event { return &e.Event } - // StoppedEvent: The event indicates that the execution of the debuggee has stopped due to some condition. // This can be caused by a breakpoint previously set, a stepping request has completed, by executing a debugger statement etc. type StoppedEvent struct { @@ -170,8 +168,6 @@ type StoppedEventBody struct { HitBreakpointIds []int `json:"hitBreakpointIds,omitempty"` } -func (e *StoppedEvent) GetEvent() *Event { return &e.Event } - // ContinuedEvent: The event indicates that the execution of the debuggee has continued. // Please note: a debug adapter is not expected to send this event in response to a request that implies that execution continues, e.g. `launch` or `continue`. // It is only necessary to send a `continued` event if there was no previous request that implied this. @@ -186,8 +182,6 @@ type ContinuedEventBody struct { AllThreadsContinued bool `json:"allThreadsContinued,omitempty"` } -func (e *ContinuedEvent) GetEvent() *Event { return &e.Event } - // ExitedEvent: The event indicates that the debuggee has exited and returns its exit code. type ExitedEvent struct { Event @@ -199,8 +193,6 @@ type ExitedEventBody struct { ExitCode int `json:"exitCode"` } -func (e *ExitedEvent) GetEvent() *Event { return &e.Event } - // TerminatedEvent: The event indicates that debugging of the debuggee has terminated. This does **not** mean that the debuggee itself has exited. type TerminatedEvent struct { Event @@ -212,8 +204,6 @@ type TerminatedEventBody struct { Restart interface{} `json:"restart,omitempty"` } -func (e *TerminatedEvent) GetEvent() *Event { return &e.Event } - // ThreadEvent: The event indicates that a thread has started or exited. type ThreadEvent struct { Event @@ -226,8 +216,6 @@ type ThreadEventBody struct { ThreadId int `json:"threadId"` } -func (e *ThreadEvent) GetEvent() *Event { return &e.Event } - // OutputEvent: The event indicates that the target has produced some output. type OutputEvent struct { Event @@ -246,8 +234,6 @@ type OutputEventBody struct { Data interface{} `json:"data,omitempty"` } -func (e *OutputEvent) GetEvent() *Event { return &e.Event } - // BreakpointEvent: The event indicates that some information about a breakpoint has changed. type BreakpointEvent struct { Event @@ -260,8 +246,6 @@ type BreakpointEventBody struct { Breakpoint Breakpoint `json:"breakpoint"` } -func (e *BreakpointEvent) GetEvent() *Event { return &e.Event } - // ModuleEvent: The event indicates that some information about a module has changed. type ModuleEvent struct { Event @@ -274,8 +258,6 @@ type ModuleEventBody struct { Module Module `json:"module"` } -func (e *ModuleEvent) GetEvent() *Event { return &e.Event } - // LoadedSourceEvent: The event indicates that some source has been added, changed, or removed from the set of all loaded sources. type LoadedSourceEvent struct { Event @@ -288,8 +270,6 @@ type LoadedSourceEventBody struct { Source Source `json:"source"` } -func (e *LoadedSourceEvent) GetEvent() *Event { return &e.Event } - // ProcessEvent: The event indicates that the debugger has begun debugging a new process. Either one that it has launched, or one that it has attached to. type ProcessEvent struct { Event @@ -305,8 +285,6 @@ type ProcessEventBody struct { PointerSize int `json:"pointerSize,omitempty"` } -func (e *ProcessEvent) GetEvent() *Event { return &e.Event } - // CapabilitiesEvent: The event indicates that one or more capabilities have changed. // Since the capabilities are dependent on the client and its UI, it might not be possible to change that at random times (or too late). // Consequently this event has a hint characteristic: a client can only be expected to make a 'best effort' in honoring individual capabilities but there are no guarantees. @@ -321,8 +299,6 @@ type CapabilitiesEventBody struct { Capabilities Capabilities `json:"capabilities"` } -func (e *CapabilitiesEvent) GetEvent() *Event { return &e.Event } - // ProgressStartEvent: The event signals that a long running operation is about to start and provides additional information for the client to set up a corresponding progress and cancellation UI. // The client is free to delay the showing of the UI in order to reduce flicker. // This event should only be sent if the corresponding capability `supportsProgressReporting` is true. @@ -341,8 +317,6 @@ type ProgressStartEventBody struct { Percentage int `json:"percentage,omitempty"` } -func (e *ProgressStartEvent) GetEvent() *Event { return &e.Event } - // ProgressUpdateEvent: The event signals that the progress reporting needs to be updated with a new message and/or percentage. // The client does not have to update the UI immediately, but the clients needs to keep track of the message and/or percentage values. // This event should only be sent if the corresponding capability `supportsProgressReporting` is true. @@ -358,8 +332,6 @@ type ProgressUpdateEventBody struct { Percentage int `json:"percentage,omitempty"` } -func (e *ProgressUpdateEvent) GetEvent() *Event { return &e.Event } - // ProgressEndEvent: The event signals the end of the progress reporting with a final message. // This event should only be sent if the corresponding capability `supportsProgressReporting` is true. type ProgressEndEvent struct { @@ -373,8 +345,6 @@ type ProgressEndEventBody struct { Message string `json:"message,omitempty"` } -func (e *ProgressEndEvent) GetEvent() *Event { return &e.Event } - // InvalidatedEvent: This event signals that some state in the debug adapter has changed and requires that the client needs to re-render the data snapshot previously requested. // Debug adapters do not have to emit this event for runtime changes like stopped or thread events because in that case the client refetches the new state anyway. But the event can be used for example to refresh the UI after rendering formatting has changed in the debug adapter. // This event should only be sent if the corresponding capability `supportsInvalidatedEvent` is true. @@ -390,8 +360,6 @@ type InvalidatedEventBody struct { StackFrameId int `json:"stackFrameId,omitempty"` } -func (e *InvalidatedEvent) GetEvent() *Event { return &e.Event } - // MemoryEvent: This event indicates that some memory range has been updated. It should only be sent if the corresponding capability `supportsMemoryEvent` is true. // Clients typically react to the event by re-issuing a `readMemory` request if they show the memory identified by the `memoryReference` and if the updated memory range overlaps the displayed range. Clients should not make assumptions how individual memory references relate to each other, so they should not assume that they are part of a single continuous address range and might overlap. // Debug adapters can use this event to indicate that the contents of a memory range has changed due to some other request like `setVariable` or `setExpression`. Debug adapters are not expected to emit this event for each and every memory change of a running program, because that information is typically not available from debuggers and it would flood clients with too many events. @@ -407,8 +375,6 @@ type MemoryEventBody struct { Count int `json:"count"` } -func (e *MemoryEvent) GetEvent() *Event { return &e.Event } - // RunInTerminalRequest: This request is sent from the debug adapter to the client to run a command in a terminal. // This is typically used to launch the debuggee in a terminal provided by the client. // This request should only be called if the corresponding client capability `supportsRunInTerminalRequest` is true. @@ -420,8 +386,6 @@ type RunInTerminalRequest struct { Arguments RunInTerminalRequestArguments `json:"arguments"` } -func (r *RunInTerminalRequest) GetRequest() *Request { return &r.Request } - // RunInTerminalRequestArguments: Arguments for `runInTerminal` request. type RunInTerminalRequestArguments struct { Kind string `json:"kind,omitempty"` @@ -444,8 +408,6 @@ type RunInTerminalResponseBody struct { ShellProcessId int `json:"shellProcessId,omitempty"` } -func (r *RunInTerminalResponse) GetResponse() *Response { return &r.Response } - // StartDebuggingRequest: This request is sent from the debug adapter to the client to start a new debug session of the same type as the caller. // This request should only be sent if the corresponding client capability `supportsStartDebuggingRequest` is true. // A client implementation of `startDebugging` should start a new debug session (of the same type as the caller) in the same way that the caller's session was started. If the client supports hierarchical debug sessions, the newly created session can be treated as a child of the caller session. @@ -455,8 +417,6 @@ type StartDebuggingRequest struct { Arguments StartDebuggingRequestArguments `json:"arguments"` } -func (r *StartDebuggingRequest) GetRequest() *Request { return &r.Request } - // StartDebuggingRequestArguments: Arguments for `startDebugging` request. type StartDebuggingRequestArguments struct { Configuration map[string]interface{} `json:"configuration"` @@ -468,8 +428,6 @@ type StartDebuggingResponse struct { Response } -func (r *StartDebuggingResponse) GetResponse() *Response { return &r.Response } - // InitializeRequest: The `initialize` request is sent as the first request from the client to the debug adapter in order to configure it with client capabilities and to retrieve capabilities from the debug adapter. // Until the debug adapter has responded with an `initialize` response, the client must not send any additional requests or events to the debug adapter. // In addition the debug adapter is not allowed to send any requests or events to the client until it has responded with an `initialize` response. @@ -480,8 +438,6 @@ type InitializeRequest struct { Arguments InitializeRequestArguments `json:"arguments"` } -func (r *InitializeRequest) GetRequest() *Request { return &r.Request } - // InitializeRequestArguments: Arguments for `initialize` request. type InitializeRequestArguments struct { ClientID string `json:"clientID,omitempty"` @@ -509,8 +465,6 @@ type InitializeResponse struct { Body Capabilities `json:"body,omitempty"` } -func (r *InitializeResponse) GetResponse() *Response { return &r.Response } - // ConfigurationDoneRequest: This request indicates that the client has finished initialization of the debug adapter. // So it is the last request in the sequence of configuration requests (which was started by the `initialized` event). // Clients should only call this request if the corresponding capability `supportsConfigurationDoneRequest` is true. @@ -520,8 +474,6 @@ type ConfigurationDoneRequest struct { Arguments *ConfigurationDoneArguments `json:"arguments,omitempty"` } -func (r *ConfigurationDoneRequest) GetRequest() *Request { return &r.Request } - // ConfigurationDoneArguments: Arguments for `configurationDone` request. type ConfigurationDoneArguments struct { } @@ -531,8 +483,6 @@ type ConfigurationDoneResponse struct { Response } -func (r *ConfigurationDoneResponse) GetResponse() *Response { return &r.Response } - // LaunchRequest: This launch request is sent from the client to the debug adapter to start the debuggee with or without debugging (if `noDebug` is true). // Since launching is debugger/runtime specific, the arguments for this request are not part of this specification. type LaunchRequest struct { @@ -541,7 +491,6 @@ type LaunchRequest struct { Arguments json.RawMessage `json:"arguments"` } -func (r *LaunchRequest) GetRequest() *Request { return &r.Request } func (r *LaunchRequest) GetArguments() json.RawMessage { return r.Arguments } // LaunchResponse: Response to `launch` request. This is just an acknowledgement, so no body field is required. @@ -549,8 +498,6 @@ type LaunchResponse struct { Response } -func (r *LaunchResponse) GetResponse() *Response { return &r.Response } - // AttachRequest: The `attach` request is sent from the client to the debug adapter to attach to a debuggee that is already running. // Since attaching is debugger/runtime specific, the arguments for this request are not part of this specification. type AttachRequest struct { @@ -559,7 +506,6 @@ type AttachRequest struct { Arguments json.RawMessage `json:"arguments"` } -func (r *AttachRequest) GetRequest() *Request { return &r.Request } func (r *AttachRequest) GetArguments() json.RawMessage { return r.Arguments } // AttachResponse: Response to `attach` request. This is just an acknowledgement, so no body field is required. @@ -567,8 +513,6 @@ type AttachResponse struct { Response } -func (r *AttachResponse) GetResponse() *Response { return &r.Response } - // RestartRequest: Restarts a debug session. Clients should only call this request if the corresponding capability `supportsRestartRequest` is true. // If the capability is missing or has the value false, a typical client emulates `restart` by terminating the debug adapter first and then launching it anew. type RestartRequest struct { @@ -577,8 +521,6 @@ type RestartRequest struct { Arguments *RestartArguments `json:"arguments,omitempty"` } -func (r *RestartRequest) GetRequest() *Request { return &r.Request } - // RestartArguments: Arguments for `restart` request. type RestartArguments struct { Arguments interface{} `json:"arguments,omitempty"` @@ -589,8 +531,6 @@ type RestartResponse struct { Response } -func (r *RestartResponse) GetResponse() *Response { return &r.Response } - // DisconnectRequest: The `disconnect` request asks the debug adapter to disconnect from the debuggee (thus ending the debug session) and then to shut down itself (the debug adapter). // In addition, the debug adapter must terminate the debuggee if it was started with the `launch` request. If an `attach` request was used to connect to the debuggee, then the debug adapter must not terminate the debuggee. // This implicit behavior of when to terminate the debuggee can be overridden with the `terminateDebuggee` argument (which is only supported by a debug adapter if the corresponding capability `supportTerminateDebuggee` is true). @@ -600,8 +540,6 @@ type DisconnectRequest struct { Arguments *DisconnectArguments `json:"arguments,omitempty"` } -func (r *DisconnectRequest) GetRequest() *Request { return &r.Request } - // DisconnectArguments: Arguments for `disconnect` request. type DisconnectArguments struct { Restart bool `json:"restart,omitempty"` @@ -614,8 +552,6 @@ type DisconnectResponse struct { Response } -func (r *DisconnectResponse) GetResponse() *Response { return &r.Response } - // TerminateRequest: The `terminate` request is sent from the client to the debug adapter in order to shut down the debuggee gracefully. Clients should only call this request if the capability `supportsTerminateRequest` is true. // Typically a debug adapter implements `terminate` by sending a software signal which the debuggee intercepts in order to clean things up properly before terminating itself. // Please note that this request does not directly affect the state of the debug session: if the debuggee decides to veto the graceful shutdown for any reason by not terminating itself, then the debug session just continues. @@ -626,8 +562,6 @@ type TerminateRequest struct { Arguments *TerminateArguments `json:"arguments,omitempty"` } -func (r *TerminateRequest) GetRequest() *Request { return &r.Request } - // TerminateArguments: Arguments for `terminate` request. type TerminateArguments struct { Restart bool `json:"restart,omitempty"` @@ -638,8 +572,6 @@ type TerminateResponse struct { Response } -func (r *TerminateResponse) GetResponse() *Response { return &r.Response } - // BreakpointLocationsRequest: The `breakpointLocations` request returns all possible locations for source breakpoints in a given range. // Clients should only call this request if the corresponding capability `supportsBreakpointLocationsRequest` is true. type BreakpointLocationsRequest struct { @@ -648,8 +580,6 @@ type BreakpointLocationsRequest struct { Arguments *BreakpointLocationsArguments `json:"arguments,omitempty"` } -func (r *BreakpointLocationsRequest) GetRequest() *Request { return &r.Request } - // BreakpointLocationsArguments: Arguments for `breakpointLocations` request. type BreakpointLocationsArguments struct { Source Source `json:"source"` @@ -671,8 +601,6 @@ type BreakpointLocationsResponseBody struct { Breakpoints []BreakpointLocation `json:"breakpoints"` } -func (r *BreakpointLocationsResponse) GetResponse() *Response { return &r.Response } - // SetBreakpointsRequest: Sets multiple breakpoints for a single source and clears all previous breakpoints in that source. // To clear all breakpoint for a source, specify an empty array. // When a breakpoint is hit, a `stopped` event (with reason `breakpoint`) is generated. @@ -682,8 +610,6 @@ type SetBreakpointsRequest struct { Arguments SetBreakpointsArguments `json:"arguments"` } -func (r *SetBreakpointsRequest) GetRequest() *Request { return &r.Request } - // SetBreakpointsArguments: Arguments for `setBreakpoints` request. type SetBreakpointsArguments struct { Source Source `json:"source"` @@ -707,8 +633,6 @@ type SetBreakpointsResponseBody struct { Breakpoints []Breakpoint `json:"breakpoints"` } -func (r *SetBreakpointsResponse) GetResponse() *Response { return &r.Response } - // SetFunctionBreakpointsRequest: Replaces all existing function breakpoints with new function breakpoints. // To clear all function breakpoints, specify an empty array. // When a function breakpoint is hit, a `stopped` event (with reason `function breakpoint`) is generated. @@ -719,8 +643,6 @@ type SetFunctionBreakpointsRequest struct { Arguments SetFunctionBreakpointsArguments `json:"arguments"` } -func (r *SetFunctionBreakpointsRequest) GetRequest() *Request { return &r.Request } - // SetFunctionBreakpointsArguments: Arguments for `setFunctionBreakpoints` request. type SetFunctionBreakpointsArguments struct { Breakpoints []FunctionBreakpoint `json:"breakpoints"` @@ -738,8 +660,6 @@ type SetFunctionBreakpointsResponseBody struct { Breakpoints []Breakpoint `json:"breakpoints"` } -func (r *SetFunctionBreakpointsResponse) GetResponse() *Response { return &r.Response } - // SetExceptionBreakpointsRequest: The request configures the debugger's response to thrown exceptions. // If an exception is configured to break, a `stopped` event is fired (with reason `exception`). // Clients should only call this request if the corresponding capability `exceptionBreakpointFilters` returns one or more filters. @@ -749,8 +669,6 @@ type SetExceptionBreakpointsRequest struct { Arguments SetExceptionBreakpointsArguments `json:"arguments"` } -func (r *SetExceptionBreakpointsRequest) GetRequest() *Request { return &r.Request } - // SetExceptionBreakpointsArguments: Arguments for `setExceptionBreakpoints` request. type SetExceptionBreakpointsArguments struct { Filters []string `json:"filters"` @@ -772,8 +690,6 @@ type SetExceptionBreakpointsResponseBody struct { Breakpoints []Breakpoint `json:"breakpoints,omitempty"` } -func (r *SetExceptionBreakpointsResponse) GetResponse() *Response { return &r.Response } - // DataBreakpointInfoRequest: Obtains information on a possible data breakpoint that could be set on an expression or variable. // Clients should only call this request if the corresponding capability `supportsDataBreakpoints` is true. type DataBreakpointInfoRequest struct { @@ -782,8 +698,6 @@ type DataBreakpointInfoRequest struct { Arguments DataBreakpointInfoArguments `json:"arguments"` } -func (r *DataBreakpointInfoRequest) GetRequest() *Request { return &r.Request } - // DataBreakpointInfoArguments: Arguments for `dataBreakpointInfo` request. type DataBreakpointInfoArguments struct { VariablesReference int `json:"variablesReference,omitempty"` @@ -805,8 +719,6 @@ type DataBreakpointInfoResponseBody struct { CanPersist bool `json:"canPersist,omitempty"` } -func (r *DataBreakpointInfoResponse) GetResponse() *Response { return &r.Response } - // SetDataBreakpointsRequest: Replaces all existing data breakpoints with new data breakpoints. // To clear all data breakpoints, specify an empty array. // When a data breakpoint is hit, a `stopped` event (with reason `data breakpoint`) is generated. @@ -817,8 +729,6 @@ type SetDataBreakpointsRequest struct { Arguments SetDataBreakpointsArguments `json:"arguments"` } -func (r *SetDataBreakpointsRequest) GetRequest() *Request { return &r.Request } - // SetDataBreakpointsArguments: Arguments for `setDataBreakpoints` request. type SetDataBreakpointsArguments struct { Breakpoints []DataBreakpoint `json:"breakpoints"` @@ -836,8 +746,6 @@ type SetDataBreakpointsResponseBody struct { Breakpoints []Breakpoint `json:"breakpoints"` } -func (r *SetDataBreakpointsResponse) GetResponse() *Response { return &r.Response } - // SetInstructionBreakpointsRequest: Replaces all existing instruction breakpoints. Typically, instruction breakpoints would be set from a disassembly window. // To clear all instruction breakpoints, specify an empty array. // When an instruction breakpoint is hit, a `stopped` event (with reason `instruction breakpoint`) is generated. @@ -848,8 +756,6 @@ type SetInstructionBreakpointsRequest struct { Arguments SetInstructionBreakpointsArguments `json:"arguments"` } -func (r *SetInstructionBreakpointsRequest) GetRequest() *Request { return &r.Request } - // SetInstructionBreakpointsArguments: Arguments for `setInstructionBreakpoints` request type SetInstructionBreakpointsArguments struct { Breakpoints []InstructionBreakpoint `json:"breakpoints"` @@ -866,8 +772,6 @@ type SetInstructionBreakpointsResponseBody struct { Breakpoints []Breakpoint `json:"breakpoints"` } -func (r *SetInstructionBreakpointsResponse) GetResponse() *Response { return &r.Response } - // ContinueRequest: The request resumes execution of all threads. If the debug adapter supports single thread execution (see capability `supportsSingleThreadExecutionRequests`), setting the `singleThread` argument to true resumes only the specified thread. If not all threads were resumed, the `allThreadsContinued` attribute of the response should be set to false. type ContinueRequest struct { Request @@ -875,8 +779,6 @@ type ContinueRequest struct { Arguments ContinueArguments `json:"arguments"` } -func (r *ContinueRequest) GetRequest() *Request { return &r.Request } - // ContinueArguments: Arguments for `continue` request. type ContinueArguments struct { ThreadId int `json:"threadId"` @@ -894,8 +796,6 @@ type ContinueResponseBody struct { AllThreadsContinued bool `json:"allThreadsContinued"` } -func (r *ContinueResponse) GetResponse() *Response { return &r.Response } - // NextRequest: The request executes one step (in the given granularity) for the specified thread and allows all other threads to run freely by resuming them. // If the debug adapter supports single thread execution (see capability `supportsSingleThreadExecutionRequests`), setting the `singleThread` argument to true prevents other suspended threads from resuming. // The debug adapter first sends the response and then a `stopped` event (with reason `step`) after the step has completed. @@ -905,8 +805,6 @@ type NextRequest struct { Arguments NextArguments `json:"arguments"` } -func (r *NextRequest) GetRequest() *Request { return &r.Request } - // NextArguments: Arguments for `next` request. type NextArguments struct { ThreadId int `json:"threadId"` @@ -919,8 +817,6 @@ type NextResponse struct { Response } -func (r *NextResponse) GetResponse() *Response { return &r.Response } - // StepInRequest: The request resumes the given thread to step into a function/method and allows all other threads to run freely by resuming them. // If the debug adapter supports single thread execution (see capability `supportsSingleThreadExecutionRequests`), setting the `singleThread` argument to true prevents other suspended threads from resuming. // If the request cannot step into a target, `stepIn` behaves like the `next` request. @@ -934,8 +830,6 @@ type StepInRequest struct { Arguments StepInArguments `json:"arguments"` } -func (r *StepInRequest) GetRequest() *Request { return &r.Request } - // StepInArguments: Arguments for `stepIn` request. type StepInArguments struct { ThreadId int `json:"threadId"` @@ -949,8 +843,6 @@ type StepInResponse struct { Response } -func (r *StepInResponse) GetResponse() *Response { return &r.Response } - // StepOutRequest: The request resumes the given thread to step out (return) from a function/method and allows all other threads to run freely by resuming them. // If the debug adapter supports single thread execution (see capability `supportsSingleThreadExecutionRequests`), setting the `singleThread` argument to true prevents other suspended threads from resuming. // The debug adapter first sends the response and then a `stopped` event (with reason `step`) after the step has completed. @@ -960,8 +852,6 @@ type StepOutRequest struct { Arguments StepOutArguments `json:"arguments"` } -func (r *StepOutRequest) GetRequest() *Request { return &r.Request } - // StepOutArguments: Arguments for `stepOut` request. type StepOutArguments struct { ThreadId int `json:"threadId"` @@ -974,8 +864,6 @@ type StepOutResponse struct { Response } -func (r *StepOutResponse) GetResponse() *Response { return &r.Response } - // StepBackRequest: The request executes one backward step (in the given granularity) for the specified thread and allows all other threads to run backward freely by resuming them. // If the debug adapter supports single thread execution (see capability `supportsSingleThreadExecutionRequests`), setting the `singleThread` argument to true prevents other suspended threads from resuming. // The debug adapter first sends the response and then a `stopped` event (with reason `step`) after the step has completed. @@ -986,8 +874,6 @@ type StepBackRequest struct { Arguments StepBackArguments `json:"arguments"` } -func (r *StepBackRequest) GetRequest() *Request { return &r.Request } - // StepBackArguments: Arguments for `stepBack` request. type StepBackArguments struct { ThreadId int `json:"threadId"` @@ -1000,8 +886,6 @@ type StepBackResponse struct { Response } -func (r *StepBackResponse) GetResponse() *Response { return &r.Response } - // ReverseContinueRequest: The request resumes backward execution of all threads. If the debug adapter supports single thread execution (see capability `supportsSingleThreadExecutionRequests`), setting the `singleThread` argument to true resumes only the specified thread. If not all threads were resumed, the `allThreadsContinued` attribute of the response should be set to false. // Clients should only call this request if the corresponding capability `supportsStepBack` is true. type ReverseContinueRequest struct { @@ -1010,8 +894,6 @@ type ReverseContinueRequest struct { Arguments ReverseContinueArguments `json:"arguments"` } -func (r *ReverseContinueRequest) GetRequest() *Request { return &r.Request } - // ReverseContinueArguments: Arguments for `reverseContinue` request. type ReverseContinueArguments struct { ThreadId int `json:"threadId"` @@ -1023,8 +905,6 @@ type ReverseContinueResponse struct { Response } -func (r *ReverseContinueResponse) GetResponse() *Response { return &r.Response } - // RestartFrameRequest: The request restarts execution of the specified stack frame. // The debug adapter first sends the response and then a `stopped` event (with reason `restart`) after the restart has completed. // Clients should only call this request if the corresponding capability `supportsRestartFrame` is true. @@ -1034,8 +914,6 @@ type RestartFrameRequest struct { Arguments RestartFrameArguments `json:"arguments"` } -func (r *RestartFrameRequest) GetRequest() *Request { return &r.Request } - // RestartFrameArguments: Arguments for `restartFrame` request. type RestartFrameArguments struct { FrameId int `json:"frameId"` @@ -1046,8 +924,6 @@ type RestartFrameResponse struct { Response } -func (r *RestartFrameResponse) GetResponse() *Response { return &r.Response } - // GotoRequest: The request sets the location where the debuggee will continue to run. // This makes it possible to skip the execution of code or to execute code again. // The code between the current location and the goto target is not executed but skipped. @@ -1059,8 +935,6 @@ type GotoRequest struct { Arguments GotoArguments `json:"arguments"` } -func (r *GotoRequest) GetRequest() *Request { return &r.Request } - // GotoArguments: Arguments for `goto` request. type GotoArguments struct { ThreadId int `json:"threadId"` @@ -1072,8 +946,6 @@ type GotoResponse struct { Response } -func (r *GotoResponse) GetResponse() *Response { return &r.Response } - // PauseRequest: The request suspends the debuggee. // The debug adapter first sends the response and then a `stopped` event (with reason `pause`) after the thread has been paused successfully. type PauseRequest struct { @@ -1082,8 +954,6 @@ type PauseRequest struct { Arguments PauseArguments `json:"arguments"` } -func (r *PauseRequest) GetRequest() *Request { return &r.Request } - // PauseArguments: Arguments for `pause` request. type PauseArguments struct { ThreadId int `json:"threadId"` @@ -1094,8 +964,6 @@ type PauseResponse struct { Response } -func (r *PauseResponse) GetResponse() *Response { return &r.Response } - // StackTraceRequest: The request returns a stacktrace from the current execution state of a given thread. // A client can request all stack frames by omitting the startFrame and levels arguments. For performance-conscious clients and if the corresponding capability `supportsDelayedStackTraceLoading` is true, stack frames can be retrieved in a piecemeal way with the `startFrame` and `levels` arguments. The response of the `stackTrace` request may contain a `totalFrames` property that hints at the total number of frames in the stack. If a client needs this total number upfront, it can issue a request for a single (first) frame and depending on the value of `totalFrames` decide how to proceed. In any case a client should be prepared to receive fewer frames than requested, which is an indication that the end of the stack has been reached. type StackTraceRequest struct { @@ -1104,8 +972,6 @@ type StackTraceRequest struct { Arguments StackTraceArguments `json:"arguments"` } -func (r *StackTraceRequest) GetRequest() *Request { return &r.Request } - // StackTraceArguments: Arguments for `stackTrace` request. type StackTraceArguments struct { ThreadId int `json:"threadId"` @@ -1126,8 +992,6 @@ type StackTraceResponseBody struct { TotalFrames int `json:"totalFrames,omitempty"` } -func (r *StackTraceResponse) GetResponse() *Response { return &r.Response } - // ScopesRequest: The request returns the variable scopes for a given stack frame ID. type ScopesRequest struct { Request @@ -1135,8 +999,6 @@ type ScopesRequest struct { Arguments ScopesArguments `json:"arguments"` } -func (r *ScopesRequest) GetRequest() *Request { return &r.Request } - // ScopesArguments: Arguments for `scopes` request. type ScopesArguments struct { FrameId int `json:"frameId"` @@ -1153,8 +1015,6 @@ type ScopesResponseBody struct { Scopes []Scope `json:"scopes"` } -func (r *ScopesResponse) GetResponse() *Response { return &r.Response } - // VariablesRequest: Retrieves all child variables for the given variable reference. // A filter can be used to limit the fetched children to either named or indexed children. type VariablesRequest struct { @@ -1163,8 +1023,6 @@ type VariablesRequest struct { Arguments VariablesArguments `json:"arguments"` } -func (r *VariablesRequest) GetRequest() *Request { return &r.Request } - // VariablesArguments: Arguments for `variables` request. type VariablesArguments struct { VariablesReference int `json:"variablesReference"` @@ -1185,8 +1043,6 @@ type VariablesResponseBody struct { Variables []Variable `json:"variables"` } -func (r *VariablesResponse) GetResponse() *Response { return &r.Response } - // SetVariableRequest: Set the variable with the given name in the variable container to a new value. Clients should only call this request if the corresponding capability `supportsSetVariable` is true. // If a debug adapter implements both `setVariable` and `setExpression`, a client will only use `setExpression` if the variable has an `evaluateName` property. type SetVariableRequest struct { @@ -1195,8 +1051,6 @@ type SetVariableRequest struct { Arguments SetVariableArguments `json:"arguments"` } -func (r *SetVariableRequest) GetRequest() *Request { return &r.Request } - // SetVariableArguments: Arguments for `setVariable` request. type SetVariableArguments struct { VariablesReference int `json:"variablesReference"` @@ -1220,8 +1074,6 @@ type SetVariableResponseBody struct { IndexedVariables int `json:"indexedVariables,omitempty"` } -func (r *SetVariableResponse) GetResponse() *Response { return &r.Response } - // SourceRequest: The request retrieves the source code for a given source reference. type SourceRequest struct { Request @@ -1229,8 +1081,6 @@ type SourceRequest struct { Arguments SourceArguments `json:"arguments"` } -func (r *SourceRequest) GetRequest() *Request { return &r.Request } - // SourceArguments: Arguments for `source` request. type SourceArguments struct { Source *Source `json:"source,omitempty"` @@ -1249,15 +1099,11 @@ type SourceResponseBody struct { MimeType string `json:"mimeType,omitempty"` } -func (r *SourceResponse) GetResponse() *Response { return &r.Response } - // ThreadsRequest: The request retrieves a list of all threads. type ThreadsRequest struct { Request } -func (r *ThreadsRequest) GetRequest() *Request { return &r.Request } - // ThreadsResponse: Response to `threads` request. type ThreadsResponse struct { Response @@ -1269,8 +1115,6 @@ type ThreadsResponseBody struct { Threads []Thread `json:"threads"` } -func (r *ThreadsResponse) GetResponse() *Response { return &r.Response } - // TerminateThreadsRequest: The request terminates the threads with the given ids. // Clients should only call this request if the corresponding capability `supportsTerminateThreadsRequest` is true. type TerminateThreadsRequest struct { @@ -1279,8 +1123,6 @@ type TerminateThreadsRequest struct { Arguments TerminateThreadsArguments `json:"arguments"` } -func (r *TerminateThreadsRequest) GetRequest() *Request { return &r.Request } - // TerminateThreadsArguments: Arguments for `terminateThreads` request. type TerminateThreadsArguments struct { ThreadIds []int `json:"threadIds,omitempty"` @@ -1291,8 +1133,6 @@ type TerminateThreadsResponse struct { Response } -func (r *TerminateThreadsResponse) GetResponse() *Response { return &r.Response } - // ModulesRequest: Modules can be retrieved from the debug adapter with this request which can either return all modules or a range of modules to support paging. // Clients should only call this request if the corresponding capability `supportsModulesRequest` is true. type ModulesRequest struct { @@ -1301,8 +1141,6 @@ type ModulesRequest struct { Arguments ModulesArguments `json:"arguments"` } -func (r *ModulesRequest) GetRequest() *Request { return &r.Request } - // ModulesArguments: Arguments for `modules` request. type ModulesArguments struct { StartModule int `json:"startModule,omitempty"` @@ -1321,8 +1159,6 @@ type ModulesResponseBody struct { TotalModules int `json:"totalModules,omitempty"` } -func (r *ModulesResponse) GetResponse() *Response { return &r.Response } - // LoadedSourcesRequest: Retrieves the set of all sources currently loaded by the debugged process. // Clients should only call this request if the corresponding capability `supportsLoadedSourcesRequest` is true. type LoadedSourcesRequest struct { @@ -1331,8 +1167,6 @@ type LoadedSourcesRequest struct { Arguments *LoadedSourcesArguments `json:"arguments,omitempty"` } -func (r *LoadedSourcesRequest) GetRequest() *Request { return &r.Request } - // LoadedSourcesArguments: Arguments for `loadedSources` request. type LoadedSourcesArguments struct { } @@ -1348,8 +1182,6 @@ type LoadedSourcesResponseBody struct { Sources []Source `json:"sources"` } -func (r *LoadedSourcesResponse) GetResponse() *Response { return &r.Response } - // EvaluateRequest: Evaluates the given expression in the context of the topmost stack frame. // The expression has access to any variables and arguments that are in scope. type EvaluateRequest struct { @@ -1358,8 +1190,6 @@ type EvaluateRequest struct { Arguments EvaluateArguments `json:"arguments"` } -func (r *EvaluateRequest) GetRequest() *Request { return &r.Request } - // EvaluateArguments: Arguments for `evaluate` request. type EvaluateArguments struct { Expression string `json:"expression"` @@ -1385,8 +1215,6 @@ type EvaluateResponseBody struct { MemoryReference string `json:"memoryReference,omitempty"` } -func (r *EvaluateResponse) GetResponse() *Response { return &r.Response } - // SetExpressionRequest: Evaluates the given `value` expression and assigns it to the `expression` which must be a modifiable l-value. // The expressions have access to any variables and arguments that are in scope of the specified frame. // Clients should only call this request if the corresponding capability `supportsSetExpression` is true. @@ -1397,8 +1225,6 @@ type SetExpressionRequest struct { Arguments SetExpressionArguments `json:"arguments"` } -func (r *SetExpressionRequest) GetRequest() *Request { return &r.Request } - // SetExpressionArguments: Arguments for `setExpression` request. type SetExpressionArguments struct { Expression string `json:"expression"` @@ -1423,8 +1249,6 @@ type SetExpressionResponseBody struct { IndexedVariables int `json:"indexedVariables,omitempty"` } -func (r *SetExpressionResponse) GetResponse() *Response { return &r.Response } - // StepInTargetsRequest: This request retrieves the possible step-in targets for the specified stack frame. // These targets can be used in the `stepIn` request. // Clients should only call this request if the corresponding capability `supportsStepInTargetsRequest` is true. @@ -1434,8 +1258,6 @@ type StepInTargetsRequest struct { Arguments StepInTargetsArguments `json:"arguments"` } -func (r *StepInTargetsRequest) GetRequest() *Request { return &r.Request } - // StepInTargetsArguments: Arguments for `stepInTargets` request. type StepInTargetsArguments struct { FrameId int `json:"frameId"` @@ -1452,8 +1274,6 @@ type StepInTargetsResponseBody struct { Targets []StepInTarget `json:"targets"` } -func (r *StepInTargetsResponse) GetResponse() *Response { return &r.Response } - // GotoTargetsRequest: This request retrieves the possible goto targets for the specified source location. // These targets can be used in the `goto` request. // Clients should only call this request if the corresponding capability `supportsGotoTargetsRequest` is true. @@ -1463,8 +1283,6 @@ type GotoTargetsRequest struct { Arguments GotoTargetsArguments `json:"arguments"` } -func (r *GotoTargetsRequest) GetRequest() *Request { return &r.Request } - // GotoTargetsArguments: Arguments for `gotoTargets` request. type GotoTargetsArguments struct { Source Source `json:"source"` @@ -1483,8 +1301,6 @@ type GotoTargetsResponseBody struct { Targets []GotoTarget `json:"targets"` } -func (r *GotoTargetsResponse) GetResponse() *Response { return &r.Response } - // CompletionsRequest: Returns a list of possible completions for a given caret position and text. // Clients should only call this request if the corresponding capability `supportsCompletionsRequest` is true. type CompletionsRequest struct { @@ -1493,8 +1309,6 @@ type CompletionsRequest struct { Arguments CompletionsArguments `json:"arguments"` } -func (r *CompletionsRequest) GetRequest() *Request { return &r.Request } - // CompletionsArguments: Arguments for `completions` request. type CompletionsArguments struct { FrameId int `json:"frameId,omitempty"` @@ -1514,8 +1328,6 @@ type CompletionsResponseBody struct { Targets []CompletionItem `json:"targets"` } -func (r *CompletionsResponse) GetResponse() *Response { return &r.Response } - // ExceptionInfoRequest: Retrieves the details of the exception that caused this event to be raised. // Clients should only call this request if the corresponding capability `supportsExceptionInfoRequest` is true. type ExceptionInfoRequest struct { @@ -1524,8 +1336,6 @@ type ExceptionInfoRequest struct { Arguments ExceptionInfoArguments `json:"arguments"` } -func (r *ExceptionInfoRequest) GetRequest() *Request { return &r.Request } - // ExceptionInfoArguments: Arguments for `exceptionInfo` request. type ExceptionInfoArguments struct { ThreadId int `json:"threadId"` @@ -1545,8 +1355,6 @@ type ExceptionInfoResponseBody struct { Details *ExceptionDetails `json:"details,omitempty"` } -func (r *ExceptionInfoResponse) GetResponse() *Response { return &r.Response } - // ReadMemoryRequest: Reads bytes from memory at the provided location. // Clients should only call this request if the corresponding capability `supportsReadMemoryRequest` is true. type ReadMemoryRequest struct { @@ -1555,8 +1363,6 @@ type ReadMemoryRequest struct { Arguments ReadMemoryArguments `json:"arguments"` } -func (r *ReadMemoryRequest) GetRequest() *Request { return &r.Request } - // ReadMemoryArguments: Arguments for `readMemory` request. type ReadMemoryArguments struct { MemoryReference string `json:"memoryReference"` @@ -1577,8 +1383,6 @@ type ReadMemoryResponseBody struct { Data string `json:"data,omitempty"` } -func (r *ReadMemoryResponse) GetResponse() *Response { return &r.Response } - // WriteMemoryRequest: Writes bytes to memory at the provided location. // Clients should only call this request if the corresponding capability `supportsWriteMemoryRequest` is true. type WriteMemoryRequest struct { @@ -1587,8 +1391,6 @@ type WriteMemoryRequest struct { Arguments WriteMemoryArguments `json:"arguments"` } -func (r *WriteMemoryRequest) GetRequest() *Request { return &r.Request } - // WriteMemoryArguments: Arguments for `writeMemory` request. type WriteMemoryArguments struct { MemoryReference string `json:"memoryReference"` @@ -1609,8 +1411,6 @@ type WriteMemoryResponseBody struct { BytesWritten int `json:"bytesWritten,omitempty"` } -func (r *WriteMemoryResponse) GetResponse() *Response { return &r.Response } - // DisassembleRequest: Disassembles code stored at the provided location. // Clients should only call this request if the corresponding capability `supportsDisassembleRequest` is true. type DisassembleRequest struct { @@ -1619,8 +1419,6 @@ type DisassembleRequest struct { Arguments DisassembleArguments `json:"arguments"` } -func (r *DisassembleRequest) GetRequest() *Request { return &r.Request } - // DisassembleArguments: Arguments for `disassemble` request. type DisassembleArguments struct { MemoryReference string `json:"memoryReference"` @@ -1641,8 +1439,6 @@ type DisassembleResponseBody struct { Instructions []DisassembledInstruction `json:"instructions"` } -func (r *DisassembleResponse) GetResponse() *Response { return &r.Response } - // Capabilities: Information about the capabilities of a debug adapter. type Capabilities struct { SupportsConfigurationDoneRequest bool `json:"supportsConfigurationDoneRequest,omitempty"` diff --git a/vendor/github.com/hashicorp/golang-lru/LICENSE b/vendor/github.com/hashicorp/golang-lru/LICENSE index be2cc4dfb6..0e5d580e0e 100644 --- a/vendor/github.com/hashicorp/golang-lru/LICENSE +++ b/vendor/github.com/hashicorp/golang-lru/LICENSE @@ -1,3 +1,5 @@ +Copyright (c) 2014 HashiCorp, Inc. + Mozilla Public License, version 2.0 1. Definitions diff --git a/vendor/github.com/hashicorp/golang-lru/simplelru/lru.go b/vendor/github.com/hashicorp/golang-lru/simplelru/lru.go index a86c8539e0..9233583c91 100644 --- a/vendor/github.com/hashicorp/golang-lru/simplelru/lru.go +++ b/vendor/github.com/hashicorp/golang-lru/simplelru/lru.go @@ -25,7 +25,7 @@ type entry struct { // NewLRU constructs an LRU of the given size func NewLRU(size int, onEvict EvictCallback) (*LRU, error) { if size <= 0 { - return nil, errors.New("Must provide a positive size") + return nil, errors.New("must provide a positive size") } c := &LRU{ size: size, @@ -109,7 +109,7 @@ func (c *LRU) Remove(key interface{}) (present bool) { } // RemoveOldest removes the oldest item from the cache. -func (c *LRU) RemoveOldest() (key interface{}, value interface{}, ok bool) { +func (c *LRU) RemoveOldest() (key, value interface{}, ok bool) { ent := c.evictList.Back() if ent != nil { c.removeElement(ent) @@ -120,7 +120,7 @@ func (c *LRU) RemoveOldest() (key interface{}, value interface{}, ok bool) { } // GetOldest returns the oldest entry -func (c *LRU) GetOldest() (key interface{}, value interface{}, ok bool) { +func (c *LRU) GetOldest() (key, value interface{}, ok bool) { ent := c.evictList.Back() if ent != nil { kv := ent.Value.(*entry) diff --git a/vendor/github.com/hashicorp/golang-lru/simplelru/lru_interface.go b/vendor/github.com/hashicorp/golang-lru/simplelru/lru_interface.go index 92d70934d6..cb7f8caf03 100644 --- a/vendor/github.com/hashicorp/golang-lru/simplelru/lru_interface.go +++ b/vendor/github.com/hashicorp/golang-lru/simplelru/lru_interface.go @@ -1,3 +1,4 @@ +// Package simplelru provides simple LRU implementation based on build-in container/list. package simplelru // LRUCache is the interface for simple LRU cache. @@ -34,6 +35,6 @@ type LRUCache interface { // Clears all cache entries. Purge() - // Resizes cache, returning number evicted - Resize(int) int + // Resizes cache, returning number evicted + Resize(int) int } diff --git a/vendor/github.com/inconshreveable/mousetrap/LICENSE b/vendor/github.com/inconshreveable/mousetrap/LICENSE index 5f0d1fb6a7..5f920e9732 100644 --- a/vendor/github.com/inconshreveable/mousetrap/LICENSE +++ b/vendor/github.com/inconshreveable/mousetrap/LICENSE @@ -1,13 +1,201 @@ -Copyright 2014 Alan Shreve + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -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 + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - http://www.apache.org/licenses/LICENSE-2.0 + 1. Definitions. -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. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2022 Alan Shreve (@inconshreveable) + + 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. diff --git a/vendor/github.com/inconshreveable/mousetrap/trap_others.go b/vendor/github.com/inconshreveable/mousetrap/trap_others.go index 9d2d8a4bab..06a91f0868 100644 --- a/vendor/github.com/inconshreveable/mousetrap/trap_others.go +++ b/vendor/github.com/inconshreveable/mousetrap/trap_others.go @@ -1,3 +1,4 @@ +//go:build !windows // +build !windows package mousetrap diff --git a/vendor/github.com/inconshreveable/mousetrap/trap_windows.go b/vendor/github.com/inconshreveable/mousetrap/trap_windows.go index 336142a5e3..0c56880216 100644 --- a/vendor/github.com/inconshreveable/mousetrap/trap_windows.go +++ b/vendor/github.com/inconshreveable/mousetrap/trap_windows.go @@ -1,81 +1,32 @@ -// +build windows -// +build !go1.4 - package mousetrap import ( - "fmt" - "os" "syscall" "unsafe" ) -const ( - // defined by the Win32 API - th32cs_snapprocess uintptr = 0x2 -) - -var ( - kernel = syscall.MustLoadDLL("kernel32.dll") - CreateToolhelp32Snapshot = kernel.MustFindProc("CreateToolhelp32Snapshot") - Process32First = kernel.MustFindProc("Process32FirstW") - Process32Next = kernel.MustFindProc("Process32NextW") -) - -// ProcessEntry32 structure defined by the Win32 API -type processEntry32 struct { - dwSize uint32 - cntUsage uint32 - th32ProcessID uint32 - th32DefaultHeapID int - th32ModuleID uint32 - cntThreads uint32 - th32ParentProcessID uint32 - pcPriClassBase int32 - dwFlags uint32 - szExeFile [syscall.MAX_PATH]uint16 -} - -func getProcessEntry(pid int) (pe *processEntry32, err error) { - snapshot, _, e1 := CreateToolhelp32Snapshot.Call(th32cs_snapprocess, uintptr(0)) - if snapshot == uintptr(syscall.InvalidHandle) { - err = fmt.Errorf("CreateToolhelp32Snapshot: %v", e1) - return +func getProcessEntry(pid int) (*syscall.ProcessEntry32, error) { + snapshot, err := syscall.CreateToolhelp32Snapshot(syscall.TH32CS_SNAPPROCESS, 0) + if err != nil { + return nil, err } - defer syscall.CloseHandle(syscall.Handle(snapshot)) - - var processEntry processEntry32 - processEntry.dwSize = uint32(unsafe.Sizeof(processEntry)) - ok, _, e1 := Process32First.Call(snapshot, uintptr(unsafe.Pointer(&processEntry))) - if ok == 0 { - err = fmt.Errorf("Process32First: %v", e1) - return + defer syscall.CloseHandle(snapshot) + var procEntry syscall.ProcessEntry32 + procEntry.Size = uint32(unsafe.Sizeof(procEntry)) + if err = syscall.Process32First(snapshot, &procEntry); err != nil { + return nil, err } - for { - if processEntry.th32ProcessID == uint32(pid) { - pe = &processEntry - return + if procEntry.ProcessID == uint32(pid) { + return &procEntry, nil } - - ok, _, e1 = Process32Next.Call(snapshot, uintptr(unsafe.Pointer(&processEntry))) - if ok == 0 { - err = fmt.Errorf("Process32Next: %v", e1) - return + err = syscall.Process32Next(snapshot, &procEntry) + if err != nil { + return nil, err } } } -func getppid() (pid int, err error) { - pe, err := getProcessEntry(os.Getpid()) - if err != nil { - return - } - - pid = int(pe.th32ParentProcessID) - return -} - // StartedByExplorer returns true if the program was invoked by the user double-clicking // on the executable from explorer.exe // @@ -83,16 +34,9 @@ func getppid() (pid int, err error) { // It does not guarantee that the program was run from a terminal. It only can tell you // whether it was launched from explorer.exe func StartedByExplorer() bool { - ppid, err := getppid() + pe, err := getProcessEntry(syscall.Getppid()) if err != nil { return false } - - pe, err := getProcessEntry(ppid) - if err != nil { - return false - } - - name := syscall.UTF16ToString(pe.szExeFile[:]) - return name == "explorer.exe" + return "explorer.exe" == syscall.UTF16ToString(pe.ExeFile[:]) } diff --git a/vendor/github.com/inconshreveable/mousetrap/trap_windows_1.4.go b/vendor/github.com/inconshreveable/mousetrap/trap_windows_1.4.go deleted file mode 100644 index 9a28e57c3c..0000000000 --- a/vendor/github.com/inconshreveable/mousetrap/trap_windows_1.4.go +++ /dev/null @@ -1,46 +0,0 @@ -// +build windows -// +build go1.4 - -package mousetrap - -import ( - "os" - "syscall" - "unsafe" -) - -func getProcessEntry(pid int) (*syscall.ProcessEntry32, error) { - snapshot, err := syscall.CreateToolhelp32Snapshot(syscall.TH32CS_SNAPPROCESS, 0) - if err != nil { - return nil, err - } - defer syscall.CloseHandle(snapshot) - var procEntry syscall.ProcessEntry32 - procEntry.Size = uint32(unsafe.Sizeof(procEntry)) - if err = syscall.Process32First(snapshot, &procEntry); err != nil { - return nil, err - } - for { - if procEntry.ProcessID == uint32(pid) { - return &procEntry, nil - } - err = syscall.Process32Next(snapshot, &procEntry) - if err != nil { - return nil, err - } - } -} - -// StartedByExplorer returns true if the program was invoked by the user double-clicking -// on the executable from explorer.exe -// -// It is conservative and returns false if any of the internal calls fail. -// It does not guarantee that the program was run from a terminal. It only can tell you -// whether it was launched from explorer.exe -func StartedByExplorer() bool { - pe, err := getProcessEntry(os.Getppid()) - if err != nil { - return false - } - return "explorer.exe" == syscall.UTF16ToString(pe.ExeFile[:]) -} diff --git a/vendor/github.com/konsorten/go-windows-terminal-sequences/LICENSE b/vendor/github.com/konsorten/go-windows-terminal-sequences/LICENSE deleted file mode 100644 index 14127cd831..0000000000 --- a/vendor/github.com/konsorten/go-windows-terminal-sequences/LICENSE +++ /dev/null @@ -1,9 +0,0 @@ -(The MIT License) - -Copyright (c) 2017 marvin + konsorten GmbH (open-source@konsorten.de) - -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. diff --git a/vendor/github.com/konsorten/go-windows-terminal-sequences/README.md b/vendor/github.com/konsorten/go-windows-terminal-sequences/README.md deleted file mode 100644 index 09a4a35c9b..0000000000 --- a/vendor/github.com/konsorten/go-windows-terminal-sequences/README.md +++ /dev/null @@ -1,42 +0,0 @@ -# Windows Terminal Sequences - -This library allow for enabling Windows terminal color support for Go. - -See [Console Virtual Terminal Sequences](https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences) for details. - -## Usage - -```go -import ( - "syscall" - - sequences "github.com/konsorten/go-windows-terminal-sequences" -) - -func main() { - sequences.EnableVirtualTerminalProcessing(syscall.Stdout, true) -} - -``` - -## Authors - -The tool is sponsored by the [marvin + konsorten GmbH](http://www.konsorten.de). - -We thank all the authors who provided code to this library: - -* Felix Kollmann -* Nicolas Perraut -* @dirty49374 - -## License - -(The MIT License) - -Copyright (c) 2018 marvin + konsorten GmbH (open-source@konsorten.de) - -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. diff --git a/vendor/github.com/konsorten/go-windows-terminal-sequences/sequences.go b/vendor/github.com/konsorten/go-windows-terminal-sequences/sequences.go deleted file mode 100644 index 57f530ae83..0000000000 --- a/vendor/github.com/konsorten/go-windows-terminal-sequences/sequences.go +++ /dev/null @@ -1,35 +0,0 @@ -// +build windows - -package sequences - -import ( - "syscall" -) - -var ( - kernel32Dll *syscall.LazyDLL = syscall.NewLazyDLL("Kernel32.dll") - setConsoleMode *syscall.LazyProc = kernel32Dll.NewProc("SetConsoleMode") -) - -func EnableVirtualTerminalProcessing(stream syscall.Handle, enable bool) error { - const ENABLE_VIRTUAL_TERMINAL_PROCESSING uint32 = 0x4 - - var mode uint32 - err := syscall.GetConsoleMode(syscall.Stdout, &mode) - if err != nil { - return err - } - - if enable { - mode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING - } else { - mode &^= ENABLE_VIRTUAL_TERMINAL_PROCESSING - } - - ret, _, err := setConsoleMode.Call(uintptr(stream), uintptr(mode)) - if ret == 0 { - return err - } - - return nil -} diff --git a/vendor/github.com/konsorten/go-windows-terminal-sequences/sequences_dummy.go b/vendor/github.com/konsorten/go-windows-terminal-sequences/sequences_dummy.go deleted file mode 100644 index df61a6f2f6..0000000000 --- a/vendor/github.com/konsorten/go-windows-terminal-sequences/sequences_dummy.go +++ /dev/null @@ -1,11 +0,0 @@ -// +build linux darwin - -package sequences - -import ( - "fmt" -) - -func EnableVirtualTerminalProcessing(stream uintptr, enable bool) error { - return fmt.Errorf("windows only package") -} diff --git a/vendor/github.com/mattn/go-colorable/.travis.yml b/vendor/github.com/mattn/go-colorable/.travis.yml deleted file mode 100644 index 98db8f060b..0000000000 --- a/vendor/github.com/mattn/go-colorable/.travis.yml +++ /dev/null @@ -1,9 +0,0 @@ -language: go -go: - - tip - -before_install: - - go get github.com/mattn/goveralls - - go get golang.org/x/tools/cmd/cover -script: - - $HOME/gopath/bin/goveralls -repotoken xnXqRGwgW3SXIguzxf90ZSK1GPYZPaGrw diff --git a/vendor/github.com/mattn/go-colorable/README.md b/vendor/github.com/mattn/go-colorable/README.md index 56729a92ca..ca0483711c 100644 --- a/vendor/github.com/mattn/go-colorable/README.md +++ b/vendor/github.com/mattn/go-colorable/README.md @@ -1,8 +1,8 @@ # go-colorable -[![Godoc Reference](https://godoc.org/github.com/mattn/go-colorable?status.svg)](http://godoc.org/github.com/mattn/go-colorable) -[![Build Status](https://travis-ci.org/mattn/go-colorable.svg?branch=master)](https://travis-ci.org/mattn/go-colorable) -[![Coverage Status](https://coveralls.io/repos/github/mattn/go-colorable/badge.svg?branch=master)](https://coveralls.io/github/mattn/go-colorable?branch=master) +[![Build Status](https://github.com/mattn/go-colorable/workflows/test/badge.svg)](https://github.com/mattn/go-colorable/actions?query=workflow%3Atest) +[![Codecov](https://codecov.io/gh/mattn/go-colorable/branch/master/graph/badge.svg)](https://codecov.io/gh/mattn/go-colorable) +[![GoDoc](https://godoc.org/github.com/mattn/go-colorable?status.svg)](http://godoc.org/github.com/mattn/go-colorable) [![Go Report Card](https://goreportcard.com/badge/mattn/go-colorable)](https://goreportcard.com/report/mattn/go-colorable) Colorable writer for windows. diff --git a/vendor/github.com/mattn/go-colorable/colorable_appengine.go b/vendor/github.com/mattn/go-colorable/colorable_appengine.go index 1f28d773d7..416d1bbbf8 100644 --- a/vendor/github.com/mattn/go-colorable/colorable_appengine.go +++ b/vendor/github.com/mattn/go-colorable/colorable_appengine.go @@ -1,3 +1,4 @@ +//go:build appengine // +build appengine package colorable @@ -9,7 +10,7 @@ import ( _ "github.com/mattn/go-isatty" ) -// NewColorable return new instance of Writer which handle escape sequence. +// NewColorable returns new instance of Writer which handles escape sequence. func NewColorable(file *os.File) io.Writer { if file == nil { panic("nil passed instead of *os.File to NewColorable()") @@ -18,12 +19,20 @@ func NewColorable(file *os.File) io.Writer { return file } -// NewColorableStdout return new instance of Writer which handle escape sequence for stdout. +// NewColorableStdout returns new instance of Writer which handles escape sequence for stdout. func NewColorableStdout() io.Writer { return os.Stdout } -// NewColorableStderr return new instance of Writer which handle escape sequence for stderr. +// NewColorableStderr returns new instance of Writer which handles escape sequence for stderr. func NewColorableStderr() io.Writer { return os.Stderr } + +// EnableColorsStdout enable colors if possible. +func EnableColorsStdout(enabled *bool) func() { + if enabled != nil { + *enabled = true + } + return func() {} +} diff --git a/vendor/github.com/mattn/go-colorable/colorable_others.go b/vendor/github.com/mattn/go-colorable/colorable_others.go index 887f203dc7..766d94603a 100644 --- a/vendor/github.com/mattn/go-colorable/colorable_others.go +++ b/vendor/github.com/mattn/go-colorable/colorable_others.go @@ -1,5 +1,5 @@ -// +build !windows -// +build !appengine +//go:build !windows && !appengine +// +build !windows,!appengine package colorable @@ -10,7 +10,7 @@ import ( _ "github.com/mattn/go-isatty" ) -// NewColorable return new instance of Writer which handle escape sequence. +// NewColorable returns new instance of Writer which handles escape sequence. func NewColorable(file *os.File) io.Writer { if file == nil { panic("nil passed instead of *os.File to NewColorable()") @@ -19,12 +19,20 @@ func NewColorable(file *os.File) io.Writer { return file } -// NewColorableStdout return new instance of Writer which handle escape sequence for stdout. +// NewColorableStdout returns new instance of Writer which handles escape sequence for stdout. func NewColorableStdout() io.Writer { return os.Stdout } -// NewColorableStderr return new instance of Writer which handle escape sequence for stderr. +// NewColorableStderr returns new instance of Writer which handles escape sequence for stderr. func NewColorableStderr() io.Writer { return os.Stderr } + +// EnableColorsStdout enable colors if possible. +func EnableColorsStdout(enabled *bool) func() { + if enabled != nil { + *enabled = true + } + return func() {} +} diff --git a/vendor/github.com/mattn/go-colorable/colorable_windows.go b/vendor/github.com/mattn/go-colorable/colorable_windows.go index e17a5474e9..1846ad5ab4 100644 --- a/vendor/github.com/mattn/go-colorable/colorable_windows.go +++ b/vendor/github.com/mattn/go-colorable/colorable_windows.go @@ -1,5 +1,5 @@ -// +build windows -// +build !appengine +//go:build windows && !appengine +// +build windows,!appengine package colorable @@ -10,6 +10,7 @@ import ( "os" "strconv" "strings" + "sync" "syscall" "unsafe" @@ -27,6 +28,18 @@ const ( backgroundRed = 0x40 backgroundIntensity = 0x80 backgroundMask = (backgroundRed | backgroundBlue | backgroundGreen | backgroundIntensity) + commonLvbUnderscore = 0x8000 + + cENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x4 +) + +const ( + genericRead = 0x80000000 + genericWrite = 0x40000000 +) + +const ( + consoleTextmodeBuffer = 0x1 ) type wchar uint16 @@ -69,23 +82,33 @@ var ( procGetConsoleCursorInfo = kernel32.NewProc("GetConsoleCursorInfo") procSetConsoleCursorInfo = kernel32.NewProc("SetConsoleCursorInfo") procSetConsoleTitle = kernel32.NewProc("SetConsoleTitleW") + procGetConsoleMode = kernel32.NewProc("GetConsoleMode") + procSetConsoleMode = kernel32.NewProc("SetConsoleMode") + procCreateConsoleScreenBuffer = kernel32.NewProc("CreateConsoleScreenBuffer") ) -// Writer provide colorable Writer to the console +// Writer provides colorable Writer to the console type Writer struct { - out io.Writer - handle syscall.Handle - oldattr word - oldpos coord + out io.Writer + handle syscall.Handle + althandle syscall.Handle + oldattr word + oldpos coord + rest bytes.Buffer + mutex sync.Mutex } -// NewColorable return new instance of Writer which handle escape sequence from File. +// NewColorable returns new instance of Writer which handles escape sequence from File. func NewColorable(file *os.File) io.Writer { if file == nil { panic("nil passed instead of *os.File to NewColorable()") } if isatty.IsTerminal(file.Fd()) { + var mode uint32 + if r, _, _ := procGetConsoleMode.Call(file.Fd(), uintptr(unsafe.Pointer(&mode))); r != 0 && mode&cENABLE_VIRTUAL_TERMINAL_PROCESSING != 0 { + return file + } var csbi consoleScreenBufferInfo handle := syscall.Handle(file.Fd()) procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) @@ -94,12 +117,12 @@ func NewColorable(file *os.File) io.Writer { return file } -// NewColorableStdout return new instance of Writer which handle escape sequence for stdout. +// NewColorableStdout returns new instance of Writer which handles escape sequence for stdout. func NewColorableStdout() io.Writer { return NewColorable(os.Stdout) } -// NewColorableStderr return new instance of Writer which handle escape sequence for stderr. +// NewColorableStderr returns new instance of Writer which handles escape sequence for stderr. func NewColorableStderr() io.Writer { return NewColorable(os.Stderr) } @@ -402,114 +425,171 @@ func doTitleSequence(er *bytes.Reader) error { return nil } -// Write write data on console +// returns Atoi(s) unless s == "" in which case it returns def +func atoiWithDefault(s string, def int) (int, error) { + if s == "" { + return def, nil + } + return strconv.Atoi(s) +} + +// Write writes data on console func (w *Writer) Write(data []byte) (n int, err error) { + w.mutex.Lock() + defer w.mutex.Unlock() var csbi consoleScreenBufferInfo procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi))) - er := bytes.NewReader(data) - var bw [1]byte + handle := w.handle + + var er *bytes.Reader + if w.rest.Len() > 0 { + var rest bytes.Buffer + w.rest.WriteTo(&rest) + w.rest.Reset() + rest.Write(data) + er = bytes.NewReader(rest.Bytes()) + } else { + er = bytes.NewReader(data) + } + var plaintext bytes.Buffer loop: for { c1, err := er.ReadByte() if err != nil { + plaintext.WriteTo(w.out) break loop } if c1 != 0x1b { - bw[0] = c1 - w.out.Write(bw[:]) + plaintext.WriteByte(c1) continue } + _, err = plaintext.WriteTo(w.out) + if err != nil { + break loop + } c2, err := er.ReadByte() if err != nil { break loop } - if c2 == ']' { - if err := doTitleSequence(er); err != nil { + switch c2 { + case '>': + continue + case ']': + w.rest.WriteByte(c1) + w.rest.WriteByte(c2) + er.WriteTo(&w.rest) + if bytes.IndexByte(w.rest.Bytes(), 0x07) == -1 { + break loop + } + er = bytes.NewReader(w.rest.Bytes()[2:]) + err := doTitleSequence(er) + if err != nil { break loop } + w.rest.Reset() continue - } - if c2 != 0x5b { + // https://github.com/mattn/go-colorable/issues/27 + case '7': + procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) + w.oldpos = csbi.cursorPosition + continue + case '8': + procSetConsoleCursorPosition.Call(uintptr(handle), *(*uintptr)(unsafe.Pointer(&w.oldpos))) + continue + case 0x5b: + // execute part after switch + default: continue } + w.rest.WriteByte(c1) + w.rest.WriteByte(c2) + er.WriteTo(&w.rest) + var buf bytes.Buffer var m byte - for { - c, err := er.ReadByte() - if err != nil { - break loop - } + for i, c := range w.rest.Bytes()[2:] { if ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || c == '@' { m = c + er = bytes.NewReader(w.rest.Bytes()[2+i+1:]) + w.rest.Reset() break } buf.Write([]byte(string(c))) } + if m == 0 { + break loop + } switch m { case 'A': - n, err = strconv.Atoi(buf.String()) + n, err = atoiWithDefault(buf.String(), 1) if err != nil { continue } - procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi))) + procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) csbi.cursorPosition.y -= short(n) - procSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) + procSetConsoleCursorPosition.Call(uintptr(handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) case 'B': - n, err = strconv.Atoi(buf.String()) + n, err = atoiWithDefault(buf.String(), 1) if err != nil { continue } - procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi))) + procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) csbi.cursorPosition.y += short(n) - procSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) + procSetConsoleCursorPosition.Call(uintptr(handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) case 'C': - n, err = strconv.Atoi(buf.String()) + n, err = atoiWithDefault(buf.String(), 1) if err != nil { continue } - procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi))) + procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) csbi.cursorPosition.x += short(n) - procSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) + procSetConsoleCursorPosition.Call(uintptr(handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) case 'D': - n, err = strconv.Atoi(buf.String()) + n, err = atoiWithDefault(buf.String(), 1) if err != nil { continue } - procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi))) + procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) csbi.cursorPosition.x -= short(n) - procSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) + if csbi.cursorPosition.x < 0 { + csbi.cursorPosition.x = 0 + } + procSetConsoleCursorPosition.Call(uintptr(handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) case 'E': n, err = strconv.Atoi(buf.String()) if err != nil { continue } - procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi))) + procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) csbi.cursorPosition.x = 0 csbi.cursorPosition.y += short(n) - procSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) + procSetConsoleCursorPosition.Call(uintptr(handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) case 'F': n, err = strconv.Atoi(buf.String()) if err != nil { continue } - procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi))) + procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) csbi.cursorPosition.x = 0 csbi.cursorPosition.y -= short(n) - procSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) + procSetConsoleCursorPosition.Call(uintptr(handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) case 'G': n, err = strconv.Atoi(buf.String()) if err != nil { continue } - procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi))) + if n < 1 { + n = 1 + } + procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) csbi.cursorPosition.x = short(n - 1) - procSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) + procSetConsoleCursorPosition.Call(uintptr(handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) case 'H', 'f': - procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi))) + procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) if buf.Len() > 0 { token := strings.Split(buf.String(), ";") switch len(token) { @@ -534,7 +614,7 @@ loop: } else { csbi.cursorPosition.y = 0 } - procSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) + procSetConsoleCursorPosition.Call(uintptr(handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) case 'J': n := 0 if buf.Len() > 0 { @@ -545,20 +625,20 @@ loop: } var count, written dword var cursor coord - procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi))) + procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) switch n { case 0: cursor = coord{x: csbi.cursorPosition.x, y: csbi.cursorPosition.y} - count = dword(csbi.size.x - csbi.cursorPosition.x + (csbi.size.y-csbi.cursorPosition.y)*csbi.size.x) + count = dword(csbi.size.x) - dword(csbi.cursorPosition.x) + dword(csbi.size.y-csbi.cursorPosition.y)*dword(csbi.size.x) case 1: cursor = coord{x: csbi.window.left, y: csbi.window.top} - count = dword(csbi.size.x - csbi.cursorPosition.x + (csbi.window.top-csbi.cursorPosition.y)*csbi.size.x) + count = dword(csbi.size.x) - dword(csbi.cursorPosition.x) + dword(csbi.window.top-csbi.cursorPosition.y)*dword(csbi.size.x) case 2: cursor = coord{x: csbi.window.left, y: csbi.window.top} - count = dword(csbi.size.x - csbi.cursorPosition.x + (csbi.size.y-csbi.cursorPosition.y)*csbi.size.x) + count = dword(csbi.size.x) - dword(csbi.cursorPosition.x) + dword(csbi.size.y-csbi.cursorPosition.y)*dword(csbi.size.x) } - procFillConsoleOutputCharacter.Call(uintptr(w.handle), uintptr(' '), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written))) - procFillConsoleOutputAttribute.Call(uintptr(w.handle), uintptr(csbi.attributes), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written))) + procFillConsoleOutputCharacter.Call(uintptr(handle), uintptr(' '), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written))) + procFillConsoleOutputAttribute.Call(uintptr(handle), uintptr(csbi.attributes), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written))) case 'K': n := 0 if buf.Len() > 0 { @@ -567,28 +647,42 @@ loop: continue } } - procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi))) + procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) var cursor coord var count, written dword switch n { case 0: - cursor = coord{x: csbi.cursorPosition.x + 1, y: csbi.cursorPosition.y} - count = dword(csbi.size.x - csbi.cursorPosition.x - 1) + cursor = coord{x: csbi.cursorPosition.x, y: csbi.cursorPosition.y} + count = dword(csbi.size.x - csbi.cursorPosition.x) case 1: - cursor = coord{x: csbi.window.left, y: csbi.window.top + csbi.cursorPosition.y} + cursor = coord{x: csbi.window.left, y: csbi.cursorPosition.y} count = dword(csbi.size.x - csbi.cursorPosition.x) case 2: - cursor = coord{x: csbi.window.left, y: csbi.window.top + csbi.cursorPosition.y} + cursor = coord{x: csbi.window.left, y: csbi.cursorPosition.y} count = dword(csbi.size.x) } - procFillConsoleOutputCharacter.Call(uintptr(w.handle), uintptr(' '), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written))) - procFillConsoleOutputAttribute.Call(uintptr(w.handle), uintptr(csbi.attributes), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written))) + procFillConsoleOutputCharacter.Call(uintptr(handle), uintptr(' '), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written))) + procFillConsoleOutputAttribute.Call(uintptr(handle), uintptr(csbi.attributes), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written))) + case 'X': + n := 0 + if buf.Len() > 0 { + n, err = strconv.Atoi(buf.String()) + if err != nil { + continue + } + } + procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) + var cursor coord + var written dword + cursor = coord{x: csbi.cursorPosition.x, y: csbi.cursorPosition.y} + procFillConsoleOutputCharacter.Call(uintptr(handle), uintptr(' '), uintptr(n), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written))) + procFillConsoleOutputAttribute.Call(uintptr(handle), uintptr(csbi.attributes), uintptr(n), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written))) case 'm': - procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi))) + procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) attr := csbi.attributes cs := buf.String() if cs == "" { - procSetConsoleTextAttribute.Call(uintptr(w.handle), uintptr(w.oldattr)) + procSetConsoleTextAttribute.Call(uintptr(handle), uintptr(w.oldattr)) continue } token := strings.Split(cs, ";") @@ -598,14 +692,19 @@ loop: switch { case n == 0 || n == 100: attr = w.oldattr - case 1 <= n && n <= 5: - attr |= foregroundIntensity - case n == 7: - attr = ((attr & foregroundMask) << 4) | ((attr & backgroundMask) >> 4) - case n == 22 || n == 25: + case n == 4: + attr |= commonLvbUnderscore + case (1 <= n && n <= 3) || n == 5: attr |= foregroundIntensity - case n == 27: - attr = ((attr & foregroundMask) << 4) | ((attr & backgroundMask) >> 4) + case n == 7 || n == 27: + attr = + (attr &^ (foregroundMask | backgroundMask)) | + ((attr & foregroundMask) << 4) | + ((attr & backgroundMask) >> 4) + case n == 22: + attr &^= foregroundIntensity + case n == 24: + attr &^= commonLvbUnderscore case 30 <= n && n <= 37: attr &= backgroundMask if (n-30)&1 != 0 { @@ -624,9 +723,24 @@ loop: n256setup() } attr &= backgroundMask - attr |= n256foreAttr[n256] + attr |= n256foreAttr[n256%len(n256foreAttr)] i += 2 } + } else if len(token) == 5 && token[i+1] == "2" { + var r, g, b int + r, _ = strconv.Atoi(token[i+2]) + g, _ = strconv.Atoi(token[i+3]) + b, _ = strconv.Atoi(token[i+4]) + i += 4 + if r > 127 { + attr |= foregroundRed + } + if g > 127 { + attr |= foregroundGreen + } + if b > 127 { + attr |= foregroundBlue + } } else { attr = attr & (w.oldattr & backgroundMask) } @@ -651,9 +765,24 @@ loop: n256setup() } attr &= foregroundMask - attr |= n256backAttr[n256] + attr |= n256backAttr[n256%len(n256backAttr)] i += 2 } + } else if len(token) == 5 && token[i+1] == "2" { + var r, g, b int + r, _ = strconv.Atoi(token[i+2]) + g, _ = strconv.Atoi(token[i+3]) + b, _ = strconv.Atoi(token[i+4]) + i += 4 + if r > 127 { + attr |= backgroundRed + } + if g > 127 { + attr |= backgroundGreen + } + if b > 127 { + attr |= backgroundBlue + } } else { attr = attr & (w.oldattr & foregroundMask) } @@ -685,38 +814,52 @@ loop: attr |= backgroundBlue } } - procSetConsoleTextAttribute.Call(uintptr(w.handle), uintptr(attr)) + procSetConsoleTextAttribute.Call(uintptr(handle), uintptr(attr)) } } case 'h': var ci consoleCursorInfo cs := buf.String() if cs == "5>" { - procGetConsoleCursorInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&ci))) + procGetConsoleCursorInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&ci))) ci.visible = 0 - procSetConsoleCursorInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&ci))) + procSetConsoleCursorInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&ci))) } else if cs == "?25" { - procGetConsoleCursorInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&ci))) + procGetConsoleCursorInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&ci))) ci.visible = 1 - procSetConsoleCursorInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&ci))) + procSetConsoleCursorInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&ci))) + } else if cs == "?1049" { + if w.althandle == 0 { + h, _, _ := procCreateConsoleScreenBuffer.Call(uintptr(genericRead|genericWrite), 0, 0, uintptr(consoleTextmodeBuffer), 0, 0) + w.althandle = syscall.Handle(h) + if w.althandle != 0 { + handle = w.althandle + } + } } case 'l': var ci consoleCursorInfo cs := buf.String() if cs == "5>" { - procGetConsoleCursorInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&ci))) + procGetConsoleCursorInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&ci))) ci.visible = 1 - procSetConsoleCursorInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&ci))) + procSetConsoleCursorInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&ci))) } else if cs == "?25" { - procGetConsoleCursorInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&ci))) + procGetConsoleCursorInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&ci))) ci.visible = 0 - procSetConsoleCursorInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&ci))) + procSetConsoleCursorInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&ci))) + } else if cs == "?1049" { + if w.althandle != 0 { + syscall.CloseHandle(w.althandle) + w.althandle = 0 + handle = w.handle + } } case 's': - procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi))) + procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) w.oldpos = csbi.cursorPosition case 'u': - procSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&w.oldpos))) + procSetConsoleCursorPosition.Call(uintptr(handle), *(*uintptr)(unsafe.Pointer(&w.oldpos))) } } @@ -882,3 +1025,23 @@ func n256setup() { n256backAttr[i] = c.backgroundAttr() } } + +// EnableColorsStdout enable colors if possible. +func EnableColorsStdout(enabled *bool) func() { + var mode uint32 + h := os.Stdout.Fd() + if r, _, _ := procGetConsoleMode.Call(h, uintptr(unsafe.Pointer(&mode))); r != 0 { + if r, _, _ = procSetConsoleMode.Call(h, uintptr(mode|cENABLE_VIRTUAL_TERMINAL_PROCESSING)); r != 0 { + if enabled != nil { + *enabled = true + } + return func() { + procSetConsoleMode.Call(h, uintptr(mode)) + } + } + } + if enabled != nil { + *enabled = true + } + return func() {} +} diff --git a/vendor/github.com/mattn/go-colorable/go.test.sh b/vendor/github.com/mattn/go-colorable/go.test.sh new file mode 100644 index 0000000000..012162b077 --- /dev/null +++ b/vendor/github.com/mattn/go-colorable/go.test.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +set -e +echo "" > coverage.txt + +for d in $(go list ./... | grep -v vendor); do + go test -race -coverprofile=profile.out -covermode=atomic "$d" + if [ -f profile.out ]; then + cat profile.out >> coverage.txt + rm profile.out + fi +done diff --git a/vendor/github.com/mattn/go-colorable/noncolorable.go b/vendor/github.com/mattn/go-colorable/noncolorable.go index 9721e16f4b..05d6f74bf6 100644 --- a/vendor/github.com/mattn/go-colorable/noncolorable.go +++ b/vendor/github.com/mattn/go-colorable/noncolorable.go @@ -5,31 +5,35 @@ import ( "io" ) -// NonColorable hold writer but remove escape sequence. +// NonColorable holds writer but removes escape sequence. type NonColorable struct { out io.Writer } -// NewNonColorable return new instance of Writer which remove escape sequence from Writer. +// NewNonColorable returns new instance of Writer which removes escape sequence from Writer. func NewNonColorable(w io.Writer) io.Writer { return &NonColorable{out: w} } -// Write write data on console +// Write writes data on console func (w *NonColorable) Write(data []byte) (n int, err error) { er := bytes.NewReader(data) - var bw [1]byte + var plaintext bytes.Buffer loop: for { c1, err := er.ReadByte() if err != nil { + plaintext.WriteTo(w.out) break loop } if c1 != 0x1b { - bw[0] = c1 - w.out.Write(bw[:]) + plaintext.WriteByte(c1) continue } + _, err = plaintext.WriteTo(w.out) + if err != nil { + break loop + } c2, err := er.ReadByte() if err != nil { break loop @@ -38,7 +42,6 @@ loop: continue } - var buf bytes.Buffer for { c, err := er.ReadByte() if err != nil { @@ -47,7 +50,6 @@ loop: if ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || c == '@' { break } - buf.Write([]byte(string(c))) } } diff --git a/vendor/github.com/mattn/go-isatty/.travis.yml b/vendor/github.com/mattn/go-isatty/.travis.yml deleted file mode 100644 index b9f8b239c0..0000000000 --- a/vendor/github.com/mattn/go-isatty/.travis.yml +++ /dev/null @@ -1,9 +0,0 @@ -language: go -go: - - tip - -before_install: - - go get github.com/mattn/goveralls - - go get golang.org/x/tools/cmd/cover -script: - - $HOME/gopath/bin/goveralls -repotoken 3gHdORO5k5ziZcWMBxnd9LrMZaJs8m9x5 diff --git a/vendor/github.com/mattn/go-isatty/README.md b/vendor/github.com/mattn/go-isatty/README.md index 1e69004bb0..38418353e3 100644 --- a/vendor/github.com/mattn/go-isatty/README.md +++ b/vendor/github.com/mattn/go-isatty/README.md @@ -1,7 +1,7 @@ # go-isatty [![Godoc Reference](https://godoc.org/github.com/mattn/go-isatty?status.svg)](http://godoc.org/github.com/mattn/go-isatty) -[![Build Status](https://travis-ci.org/mattn/go-isatty.svg?branch=master)](https://travis-ci.org/mattn/go-isatty) +[![Codecov](https://codecov.io/gh/mattn/go-isatty/branch/master/graph/badge.svg)](https://codecov.io/gh/mattn/go-isatty) [![Coverage Status](https://coveralls.io/repos/github/mattn/go-isatty/badge.svg?branch=master)](https://coveralls.io/github/mattn/go-isatty?branch=master) [![Go Report Card](https://goreportcard.com/badge/mattn/go-isatty)](https://goreportcard.com/report/mattn/go-isatty) diff --git a/vendor/github.com/mattn/go-isatty/go.test.sh b/vendor/github.com/mattn/go-isatty/go.test.sh new file mode 100644 index 0000000000..012162b077 --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/go.test.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +set -e +echo "" > coverage.txt + +for d in $(go list ./... | grep -v vendor); do + go test -race -coverprofile=profile.out -covermode=atomic "$d" + if [ -f profile.out ]; then + cat profile.out >> coverage.txt + rm profile.out + fi +done diff --git a/vendor/github.com/mattn/go-isatty/isatty_appengine.go b/vendor/github.com/mattn/go-isatty/isatty_appengine.go deleted file mode 100644 index 9584a98842..0000000000 --- a/vendor/github.com/mattn/go-isatty/isatty_appengine.go +++ /dev/null @@ -1,15 +0,0 @@ -// +build appengine - -package isatty - -// IsTerminal returns true if the file descriptor is terminal which -// is always false on on appengine classic which is a sandboxed PaaS. -func IsTerminal(fd uintptr) bool { - return false -} - -// IsCygwinTerminal() return true if the file descriptor is a cygwin or msys2 -// terminal. This is also always false on this environment. -func IsCygwinTerminal(fd uintptr) bool { - return false -} diff --git a/vendor/github.com/mattn/go-isatty/isatty_bsd.go b/vendor/github.com/mattn/go-isatty/isatty_bsd.go index 42f2514d13..d0ea68f408 100644 --- a/vendor/github.com/mattn/go-isatty/isatty_bsd.go +++ b/vendor/github.com/mattn/go-isatty/isatty_bsd.go @@ -1,18 +1,20 @@ -// +build darwin freebsd openbsd netbsd dragonfly +//go:build (darwin || freebsd || openbsd || netbsd || dragonfly || hurd) && !appengine && !tinygo +// +build darwin freebsd openbsd netbsd dragonfly hurd // +build !appengine +// +build !tinygo package isatty -import ( - "syscall" - "unsafe" -) - -const ioctlReadTermios = syscall.TIOCGETA +import "golang.org/x/sys/unix" // IsTerminal return true if the file descriptor is terminal. func IsTerminal(fd uintptr) bool { - var termios syscall.Termios - _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, fd, ioctlReadTermios, uintptr(unsafe.Pointer(&termios)), 0, 0, 0) - return err == 0 + _, err := unix.IoctlGetTermios(int(fd), unix.TIOCGETA) + return err == nil +} + +// IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 +// terminal. This is also always false on this environment. +func IsCygwinTerminal(fd uintptr) bool { + return false } diff --git a/vendor/github.com/mattn/go-isatty/isatty_linux.go b/vendor/github.com/mattn/go-isatty/isatty_linux.go deleted file mode 100644 index 7384cf9916..0000000000 --- a/vendor/github.com/mattn/go-isatty/isatty_linux.go +++ /dev/null @@ -1,18 +0,0 @@ -// +build linux -// +build !appengine,!ppc64,!ppc64le - -package isatty - -import ( - "syscall" - "unsafe" -) - -const ioctlReadTermios = syscall.TCGETS - -// IsTerminal return true if the file descriptor is terminal. -func IsTerminal(fd uintptr) bool { - var termios syscall.Termios - _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, fd, ioctlReadTermios, uintptr(unsafe.Pointer(&termios)), 0, 0, 0) - return err == 0 -} diff --git a/vendor/github.com/mattn/go-isatty/isatty_linux_ppc64x.go b/vendor/github.com/mattn/go-isatty/isatty_linux_ppc64x.go deleted file mode 100644 index 44e5d21302..0000000000 --- a/vendor/github.com/mattn/go-isatty/isatty_linux_ppc64x.go +++ /dev/null @@ -1,19 +0,0 @@ -// +build linux -// +build ppc64 ppc64le - -package isatty - -import ( - "unsafe" - - syscall "golang.org/x/sys/unix" -) - -const ioctlReadTermios = syscall.TCGETS - -// IsTerminal return true if the file descriptor is terminal. -func IsTerminal(fd uintptr) bool { - var termios syscall.Termios - _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, fd, ioctlReadTermios, uintptr(unsafe.Pointer(&termios)), 0, 0, 0) - return err == 0 -} diff --git a/vendor/github.com/mattn/go-isatty/isatty_others.go b/vendor/github.com/mattn/go-isatty/isatty_others.go index ff4de3d9a5..7402e0618a 100644 --- a/vendor/github.com/mattn/go-isatty/isatty_others.go +++ b/vendor/github.com/mattn/go-isatty/isatty_others.go @@ -1,8 +1,15 @@ +//go:build (appengine || js || nacl || tinygo || wasm) && !windows +// +build appengine js nacl tinygo wasm // +build !windows -// +build !appengine package isatty +// IsTerminal returns true if the file descriptor is terminal which +// is always false on js and appengine classic which is a sandboxed PaaS. +func IsTerminal(fd uintptr) bool { + return false +} + // IsCygwinTerminal() return true if the file descriptor is a cygwin or msys2 // terminal. This is also always false on this environment. func IsCygwinTerminal(fd uintptr) bool { diff --git a/vendor/github.com/mattn/go-isatty/isatty_plan9.go b/vendor/github.com/mattn/go-isatty/isatty_plan9.go new file mode 100644 index 0000000000..bae7f9bb3d --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/isatty_plan9.go @@ -0,0 +1,23 @@ +//go:build plan9 +// +build plan9 + +package isatty + +import ( + "syscall" +) + +// IsTerminal returns true if the given file descriptor is a terminal. +func IsTerminal(fd uintptr) bool { + path, err := syscall.Fd2path(int(fd)) + if err != nil { + return false + } + return path == "/dev/cons" || path == "/mnt/term/dev/cons" +} + +// IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 +// terminal. This is also always false on this environment. +func IsCygwinTerminal(fd uintptr) bool { + return false +} diff --git a/vendor/github.com/mattn/go-isatty/isatty_solaris.go b/vendor/github.com/mattn/go-isatty/isatty_solaris.go index 1f0c6bf53d..0c3acf2dc2 100644 --- a/vendor/github.com/mattn/go-isatty/isatty_solaris.go +++ b/vendor/github.com/mattn/go-isatty/isatty_solaris.go @@ -1,5 +1,5 @@ -// +build solaris -// +build !appengine +//go:build solaris && !appengine +// +build solaris,!appengine package isatty @@ -8,9 +8,14 @@ import ( ) // IsTerminal returns true if the given file descriptor is a terminal. -// see: http://src.illumos.org/source/xref/illumos-gate/usr/src/lib/libbc/libc/gen/common/isatty.c +// see: https://src.illumos.org/source/xref/illumos-gate/usr/src/lib/libc/port/gen/isatty.c func IsTerminal(fd uintptr) bool { - var termio unix.Termio - err := unix.IoctlSetTermio(int(fd), unix.TCGETA, &termio) + _, err := unix.IoctlGetTermio(int(fd), unix.TCGETA) return err == nil } + +// IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 +// terminal. This is also always false on this environment. +func IsCygwinTerminal(fd uintptr) bool { + return false +} diff --git a/vendor/github.com/mattn/go-isatty/isatty_tcgets.go b/vendor/github.com/mattn/go-isatty/isatty_tcgets.go new file mode 100644 index 0000000000..0337d8cf6d --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/isatty_tcgets.go @@ -0,0 +1,20 @@ +//go:build (linux || aix || zos) && !appengine && !tinygo +// +build linux aix zos +// +build !appengine +// +build !tinygo + +package isatty + +import "golang.org/x/sys/unix" + +// IsTerminal return true if the file descriptor is terminal. +func IsTerminal(fd uintptr) bool { + _, err := unix.IoctlGetTermios(int(fd), unix.TCGETS) + return err == nil +} + +// IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 +// terminal. This is also always false on this environment. +func IsCygwinTerminal(fd uintptr) bool { + return false +} diff --git a/vendor/github.com/mattn/go-isatty/isatty_windows.go b/vendor/github.com/mattn/go-isatty/isatty_windows.go index af51cbcaa4..8e3c99171b 100644 --- a/vendor/github.com/mattn/go-isatty/isatty_windows.go +++ b/vendor/github.com/mattn/go-isatty/isatty_windows.go @@ -1,9 +1,10 @@ -// +build windows -// +build !appengine +//go:build windows && !appengine +// +build windows,!appengine package isatty import ( + "errors" "strings" "syscall" "unicode/utf16" @@ -11,15 +12,18 @@ import ( ) const ( - fileNameInfo uintptr = 2 - fileTypePipe = 3 + objectNameInfo uintptr = 1 + fileNameInfo = 2 + fileTypePipe = 3 ) var ( kernel32 = syscall.NewLazyDLL("kernel32.dll") + ntdll = syscall.NewLazyDLL("ntdll.dll") procGetConsoleMode = kernel32.NewProc("GetConsoleMode") procGetFileInformationByHandleEx = kernel32.NewProc("GetFileInformationByHandleEx") procGetFileType = kernel32.NewProc("GetFileType") + procNtQueryObject = ntdll.NewProc("NtQueryObject") ) func init() { @@ -45,7 +49,10 @@ func isCygwinPipeName(name string) bool { return false } - if token[0] != `\msys` && token[0] != `\cygwin` { + if token[0] != `\msys` && + token[0] != `\cygwin` && + token[0] != `\Device\NamedPipe\msys` && + token[0] != `\Device\NamedPipe\cygwin` { return false } @@ -68,11 +75,35 @@ func isCygwinPipeName(name string) bool { return true } +// getFileNameByHandle use the undocomented ntdll NtQueryObject to get file full name from file handler +// since GetFileInformationByHandleEx is not available under windows Vista and still some old fashion +// guys are using Windows XP, this is a workaround for those guys, it will also work on system from +// Windows vista to 10 +// see https://stackoverflow.com/a/18792477 for details +func getFileNameByHandle(fd uintptr) (string, error) { + if procNtQueryObject == nil { + return "", errors.New("ntdll.dll: NtQueryObject not supported") + } + + var buf [4 + syscall.MAX_PATH]uint16 + var result int + r, _, e := syscall.Syscall6(procNtQueryObject.Addr(), 5, + fd, objectNameInfo, uintptr(unsafe.Pointer(&buf)), uintptr(2*len(buf)), uintptr(unsafe.Pointer(&result)), 0) + if r != 0 { + return "", e + } + return string(utf16.Decode(buf[4 : 4+buf[0]/2])), nil +} + // IsCygwinTerminal() return true if the file descriptor is a cygwin or msys2 // terminal. func IsCygwinTerminal(fd uintptr) bool { if procGetFileInformationByHandleEx == nil { - return false + name, err := getFileNameByHandle(fd) + if err != nil { + return false + } + return isCygwinPipeName(name) } // Cygwin/msys's pty is a pipe. diff --git a/vendor/github.com/russross/blackfriday/v2/README.md b/vendor/github.com/russross/blackfriday/v2/README.md index d5a8649bd5..d9c08a22fc 100644 --- a/vendor/github.com/russross/blackfriday/v2/README.md +++ b/vendor/github.com/russross/blackfriday/v2/README.md @@ -1,4 +1,6 @@ -Blackfriday [![Build Status](https://travis-ci.org/russross/blackfriday.svg?branch=master)](https://travis-ci.org/russross/blackfriday) +Blackfriday +[![Build Status][BuildV2SVG]][BuildV2URL] +[![PkgGoDev][PkgGoDevV2SVG]][PkgGoDevV2URL] =========== Blackfriday is a [Markdown][1] processor implemented in [Go][2]. It @@ -16,19 +18,21 @@ It started as a translation from C of [Sundown][3]. Installation ------------ -Blackfriday is compatible with any modern Go release. With Go 1.7 and git -installed: +Blackfriday is compatible with modern Go releases in module mode. +With Go installed: - go get gopkg.in/russross/blackfriday.v2 + go get github.com/russross/blackfriday/v2 -will download, compile, and install the package into your `$GOPATH` -directory hierarchy. Alternatively, you can achieve the same if you -import it into a project: +will resolve and add the package to the current development module, +then build and install it. Alternatively, you can achieve the same +if you import it in a package: - import "gopkg.in/russross/blackfriday.v2" + import "github.com/russross/blackfriday/v2" and `go get` without parameters. +Legacy GOPATH mode is unsupported. + Versions -------- @@ -36,13 +40,9 @@ Versions Currently maintained and recommended version of Blackfriday is `v2`. It's being developed on its own branch: https://github.com/russross/blackfriday/tree/v2 and the documentation is available at -https://godoc.org/gopkg.in/russross/blackfriday.v2. +https://pkg.go.dev/github.com/russross/blackfriday/v2. -It is `go get`-able via via [gopkg.in][6] at `gopkg.in/russross/blackfriday.v2`, -but we highly recommend using package management tool like [dep][7] or -[Glide][8] and make use of semantic versioning. With package management you -should import `github.com/russross/blackfriday` and specify that you're using -version 2.0.0. +It is `go get`-able in module mode at `github.com/russross/blackfriday/v2`. Version 2 offers a number of improvements over v1: @@ -62,6 +62,11 @@ Potential drawbacks: v2. See issue [#348](https://github.com/russross/blackfriday/issues/348) for tracking. +If you are still interested in the legacy `v1`, you can import it from +`github.com/russross/blackfriday`. Documentation for the legacy v1 can be found +here: https://pkg.go.dev/github.com/russross/blackfriday. + + Usage ----- @@ -91,7 +96,7 @@ Here's an example of simple usage of Blackfriday together with Bluemonday: ```go import ( "github.com/microcosm-cc/bluemonday" - "github.com/russross/blackfriday" + "github.com/russross/blackfriday/v2" ) // ... @@ -104,6 +109,8 @@ html := bluemonday.UGCPolicy().SanitizeBytes(unsafe) If you want to customize the set of options, use `blackfriday.WithExtensions`, `blackfriday.WithRenderer` and `blackfriday.WithRefOverride`. +### `blackfriday-tool` + You can also check out `blackfriday-tool` for a more complete example of how to use it. Download and install it using: @@ -114,7 +121,7 @@ markdown file using a standalone program. You can also browse the source directly on github if you are just looking for some example code: -* +* Note that if you have not already done so, installing `blackfriday-tool` will be sufficient to download and install @@ -123,6 +130,22 @@ installed in `$GOPATH/bin`. This is a statically-linked binary that can be copied to wherever you need it without worrying about dependencies and library versions. +### Sanitized anchor names + +Blackfriday includes an algorithm for creating sanitized anchor names +corresponding to a given input text. This algorithm is used to create +anchors for headings when `AutoHeadingIDs` extension is enabled. The +algorithm has a specification, so that other packages can create +compatible anchor names and links to those anchors. + +The specification is located at https://pkg.go.dev/github.com/russross/blackfriday/v2#hdr-Sanitized_Anchor_Names. + +[`SanitizedAnchorName`](https://pkg.go.dev/github.com/russross/blackfriday/v2#SanitizedAnchorName) exposes this functionality, and can be used to +create compatible links to the anchor names generated by blackfriday. +This algorithm is also implemented in a small standalone package at +[`github.com/shurcooL/sanitized_anchor_name`](https://pkg.go.dev/github.com/shurcooL/sanitized_anchor_name). It can be useful for clients +that want a small package and don't need full functionality of blackfriday. + Features -------- @@ -199,6 +222,15 @@ implements the following extensions: You can use 3 or more backticks to mark the beginning of the block, and the same number to mark the end of the block. + To preserve classes of fenced code blocks while using the bluemonday + HTML sanitizer, use the following policy: + + ```go + p := bluemonday.UGCPolicy() + p.AllowAttrs("class").Matching(regexp.MustCompile("^language-[a-zA-Z0-9]+$")).OnElements("code") + html := p.SanitizeBytes(unsafe) + ``` + * **Definition lists**. A simple definition list is made of a single-line term followed by a colon and the definition for that term. @@ -250,7 +282,7 @@ Other renderers Blackfriday is structured to allow alternative rendering engines. Here are a few of note: -* [github_flavored_markdown](https://godoc.org/github.com/shurcooL/github_flavored_markdown): +* [github_flavored_markdown](https://pkg.go.dev/github.com/shurcooL/github_flavored_markdown): provides a GitHub Flavored Markdown renderer with fenced code block highlighting, clickable heading anchor links. @@ -261,20 +293,28 @@ are a few of note: * [markdownfmt](https://github.com/shurcooL/markdownfmt): like gofmt, but for markdown. -* [LaTeX output](https://github.com/Ambrevar/Blackfriday-LaTeX): +* [LaTeX output](https://gitlab.com/ambrevar/blackfriday-latex): renders output as LaTeX. +* [bfchroma](https://github.com/Depado/bfchroma/): provides convenience + integration with the [Chroma](https://github.com/alecthomas/chroma) code + highlighting library. bfchroma is only compatible with v2 of Blackfriday and + provides a drop-in renderer ready to use with Blackfriday, as well as + options and means for further customization. + * [Blackfriday-Confluence](https://github.com/kentaro-m/blackfriday-confluence): provides a [Confluence Wiki Markup](https://confluence.atlassian.com/doc/confluence-wiki-markup-251003035.html) renderer. +* [Blackfriday-Slack](https://github.com/karriereat/blackfriday-slack): converts markdown to slack message style + -Todo +TODO ---- * More unit testing -* Improve unicode support. It does not understand all unicode +* Improve Unicode support. It does not understand all Unicode rules (about what constitutes a letter, a punctuation symbol, etc.), so it may fail to detect word boundaries correctly in - some instances. It is safe on all utf-8 input. + some instances. It is safe on all UTF-8 input. License @@ -286,6 +326,10 @@ License [1]: https://daringfireball.net/projects/markdown/ "Markdown" [2]: https://golang.org/ "Go Language" [3]: https://github.com/vmg/sundown "Sundown" - [4]: https://godoc.org/gopkg.in/russross/blackfriday.v2#Parse "Parse func" + [4]: https://pkg.go.dev/github.com/russross/blackfriday/v2#Parse "Parse func" [5]: https://github.com/microcosm-cc/bluemonday "Bluemonday" - [6]: https://labix.org/gopkg.in "gopkg.in" + + [BuildV2SVG]: https://travis-ci.org/russross/blackfriday.svg?branch=v2 + [BuildV2URL]: https://travis-ci.org/russross/blackfriday + [PkgGoDevV2SVG]: https://pkg.go.dev/badge/github.com/russross/blackfriday/v2 + [PkgGoDevV2URL]: https://pkg.go.dev/github.com/russross/blackfriday/v2 diff --git a/vendor/github.com/russross/blackfriday/v2/block.go b/vendor/github.com/russross/blackfriday/v2/block.go index b8607474e5..dcd61e6e35 100644 --- a/vendor/github.com/russross/blackfriday/v2/block.go +++ b/vendor/github.com/russross/blackfriday/v2/block.go @@ -18,8 +18,7 @@ import ( "html" "regexp" "strings" - - "github.com/shurcooL/sanitized_anchor_name" + "unicode" ) const ( @@ -259,7 +258,7 @@ func (p *Markdown) prefixHeading(data []byte) int { } if end > i { if id == "" && p.extensions&AutoHeadingIDs != 0 { - id = sanitized_anchor_name.Create(string(data[i:end])) + id = SanitizedAnchorName(string(data[i:end])) } block := p.addBlock(Heading, data[i:end]) block.HeadingID = id @@ -673,6 +672,7 @@ func (p *Markdown) fencedCodeBlock(data []byte, doRender bool) int { if beg == 0 || beg >= len(data) { return 0 } + fenceLength := beg - 1 var work bytes.Buffer work.Write([]byte(info)) @@ -706,6 +706,7 @@ func (p *Markdown) fencedCodeBlock(data []byte, doRender bool) int { if doRender { block := p.addBlock(CodeBlock, work.Bytes()) // TODO: get rid of temp buffer block.IsFenced = true + block.FenceLength = fenceLength finalizeCodeBlock(block) } @@ -1503,7 +1504,7 @@ func (p *Markdown) paragraph(data []byte) int { id := "" if p.extensions&AutoHeadingIDs != 0 { - id = sanitized_anchor_name.Create(string(data[prev:eol])) + id = SanitizedAnchorName(string(data[prev:eol])) } block := p.addBlock(Heading, data[prev:eol]) @@ -1588,3 +1589,24 @@ func skipUntilChar(text []byte, start int, char byte) int { } return i } + +// SanitizedAnchorName returns a sanitized anchor name for the given text. +// +// It implements the algorithm specified in the package comment. +func SanitizedAnchorName(text string) string { + var anchorName []rune + futureDash := false + for _, r := range text { + switch { + case unicode.IsLetter(r) || unicode.IsNumber(r): + if futureDash && len(anchorName) > 0 { + anchorName = append(anchorName, '-') + } + futureDash = false + anchorName = append(anchorName, unicode.ToLower(r)) + default: + futureDash = true + } + } + return string(anchorName) +} diff --git a/vendor/github.com/russross/blackfriday/v2/doc.go b/vendor/github.com/russross/blackfriday/v2/doc.go index 5b3fa9876a..57ff152a05 100644 --- a/vendor/github.com/russross/blackfriday/v2/doc.go +++ b/vendor/github.com/russross/blackfriday/v2/doc.go @@ -15,4 +15,32 @@ // // If you're interested in calling Blackfriday from command line, see // https://github.com/russross/blackfriday-tool. +// +// Sanitized Anchor Names +// +// Blackfriday includes an algorithm for creating sanitized anchor names +// corresponding to a given input text. This algorithm is used to create +// anchors for headings when AutoHeadingIDs extension is enabled. The +// algorithm is specified below, so that other packages can create +// compatible anchor names and links to those anchors. +// +// The algorithm iterates over the input text, interpreted as UTF-8, +// one Unicode code point (rune) at a time. All runes that are letters (category L) +// or numbers (category N) are considered valid characters. They are mapped to +// lower case, and included in the output. All other runes are considered +// invalid characters. Invalid characters that precede the first valid character, +// as well as invalid character that follow the last valid character +// are dropped completely. All other sequences of invalid characters +// between two valid characters are replaced with a single dash character '-'. +// +// SanitizedAnchorName exposes this functionality, and can be used to +// create compatible links to the anchor names generated by blackfriday. +// This algorithm is also implemented in a small standalone package at +// github.com/shurcooL/sanitized_anchor_name. It can be useful for clients +// that want a small package and don't need full functionality of blackfriday. package blackfriday + +// NOTE: Keep Sanitized Anchor Name algorithm in sync with package +// github.com/shurcooL/sanitized_anchor_name. +// Otherwise, users of sanitized_anchor_name will get anchor names +// that are incompatible with those generated by blackfriday. diff --git a/vendor/github.com/russross/blackfriday/v2/entities.go b/vendor/github.com/russross/blackfriday/v2/entities.go new file mode 100644 index 0000000000..a2c3edb691 --- /dev/null +++ b/vendor/github.com/russross/blackfriday/v2/entities.go @@ -0,0 +1,2236 @@ +package blackfriday + +// Extracted from https://html.spec.whatwg.org/multipage/entities.json +var entities = map[string]bool{ + "Æ": true, + "Æ": true, + "&": true, + "&": true, + "Á": true, + "Á": true, + "Ă": true, + "Â": true, + "Â": true, + "А": true, + "𝔄": true, + "À": true, + "À": true, + "Α": true, + "Ā": true, + "⩓": true, + "Ą": true, + "𝔸": true, + "⁡": true, + "Å": true, + "Å": true, + "𝒜": true, + "≔": true, + "Ã": true, + "Ã": true, + "Ä": true, + "Ä": true, + "∖": true, + "⫧": true, + "⌆": true, + "Б": true, + "∵": true, + "ℬ": true, + "Β": true, + "𝔅": true, + "𝔹": true, + "˘": true, + "ℬ": true, + "≎": true, + "Ч": true, + "©": true, + "©": true, + "Ć": true, + "⋒": true, + "ⅅ": true, + "ℭ": true, + "Č": true, + "Ç": true, + "Ç": true, + "Ĉ": true, + "∰": true, + "Ċ": true, + "¸": true, + "·": true, + "ℭ": true, + "Χ": true, + "⊙": true, + "⊖": true, + "⊕": true, + "⊗": true, + "∲": true, + "”": true, + "’": true, + "∷": true, + "⩴": true, + "≡": true, + "∯": true, + "∮": true, + "ℂ": true, + "∐": true, + "∳": true, + "⨯": true, + "𝒞": true, + "⋓": true, + "≍": true, + "ⅅ": true, + "⤑": true, + "Ђ": true, + "Ѕ": true, + "Џ": true, + "‡": true, + "↡": true, + "⫤": true, + "Ď": true, + "Д": true, + "∇": true, + "Δ": true, + "𝔇": true, + "´": true, + "˙": true, + "˝": true, + "`": true, + "˜": true, + "⋄": true, + "ⅆ": true, + "𝔻": true, + "¨": true, + "⃜": true, + "≐": true, + "∯": true, + "¨": true, + "⇓": true, + "⇐": true, + "⇔": true, + "⫤": true, + "⟸": true, + "⟺": true, + "⟹": true, + "⇒": true, + "⊨": true, + "⇑": true, + "⇕": true, + "∥": true, + "↓": true, + "⤓": true, + "⇵": true, + "̑": true, + "⥐": true, + "⥞": true, + "↽": true, + "⥖": true, + "⥟": true, + "⇁": true, + "⥗": true, + "⊤": true, + "↧": true, + "⇓": true, + "𝒟": true, + "Đ": true, + "Ŋ": true, + "Ð": true, + "Ð": true, + "É": true, + "É": true, + "Ě": true, + "Ê": true, + "Ê": true, + "Э": true, + "Ė": true, + "𝔈": true, + "È": true, + "È": true, + "∈": true, + "Ē": true, + "◻": true, + "▫": true, + "Ę": true, + "𝔼": true, + "Ε": true, + "⩵": true, + "≂": true, + "⇌": true, + "ℰ": true, + "⩳": true, + "Η": true, + "Ë": true, + "Ë": true, + "∃": true, + "ⅇ": true, + "Ф": true, + "𝔉": true, + "◼": true, + "▪": true, + "𝔽": true, + "∀": true, + "ℱ": true, + "ℱ": true, + "Ѓ": true, + ">": true, + ">": true, + "Γ": true, + "Ϝ": true, + "Ğ": true, + "Ģ": true, + "Ĝ": true, + "Г": true, + "Ġ": true, + "𝔊": true, + "⋙": true, + "𝔾": true, + "≥": true, + "⋛": true, + "≧": true, + "⪢": true, + "≷": true, + "⩾": true, + "≳": true, + "𝒢": true, + "≫": true, + "Ъ": true, + "ˇ": true, + "^": true, + "Ĥ": true, + "ℌ": true, + "ℋ": true, + "ℍ": true, + "─": true, + "ℋ": true, + "Ħ": true, + "≎": true, + "≏": true, + "Е": true, + "IJ": true, + "Ё": true, + "Í": true, + "Í": true, + "Î": true, + "Î": true, + "И": true, + "İ": true, + "ℑ": true, + "Ì": true, + "Ì": true, + "ℑ": true, + "Ī": true, + "ⅈ": true, + "⇒": true, + "∬": true, + "∫": true, + "⋂": true, + "⁣": true, + "⁢": true, + "Į": true, + "𝕀": true, + "Ι": true, + "ℐ": true, + "Ĩ": true, + "І": true, + "Ï": true, + "Ï": true, + "Ĵ": true, + "Й": true, + "𝔍": true, + "𝕁": true, + "𝒥": true, + "Ј": true, + "Є": true, + "Х": true, + "Ќ": true, + "Κ": true, + "Ķ": true, + "К": true, + "𝔎": true, + "𝕂": true, + "𝒦": true, + "Љ": true, + "<": true, + "<": true, + "Ĺ": true, + "Λ": true, + "⟪": true, + "ℒ": true, + "↞": true, + "Ľ": true, + "Ļ": true, + "Л": true, + "⟨": true, + "←": true, + "⇤": true, + "⇆": true, + "⌈": true, + "⟦": true, + "⥡": true, + "⇃": true, + "⥙": true, + "⌊": true, + "↔": true, + "⥎": true, + "⊣": true, + "↤": true, + "⥚": true, + "⊲": true, + "⧏": true, + "⊴": true, + "⥑": true, + "⥠": true, + "↿": true, + "⥘": true, + "↼": true, + "⥒": true, + "⇐": true, + "⇔": true, + "⋚": true, + "≦": true, + "≶": true, + "⪡": true, + "⩽": true, + "≲": true, + "𝔏": true, + "⋘": true, + "⇚": true, + "Ŀ": true, + "⟵": true, + "⟷": true, + "⟶": true, + "⟸": true, + "⟺": true, + "⟹": true, + "𝕃": true, + "↙": true, + "↘": true, + "ℒ": true, + "↰": true, + "Ł": true, + "≪": true, + "⤅": true, + "М": true, + " ": true, + "ℳ": true, + "𝔐": true, + "∓": true, + "𝕄": true, + "ℳ": true, + "Μ": true, + "Њ": true, + "Ń": true, + "Ň": true, + "Ņ": true, + "Н": true, + "​": true, + "​": true, + "​": true, + "​": true, + "≫": true, + "≪": true, + " ": true, + "𝔑": true, + "⁠": true, + " ": true, + "ℕ": true, + "⫬": true, + "≢": true, + "≭": true, + "∦": true, + "∉": true, + "≠": true, + "≂̸": true, + "∄": true, + "≯": true, + "≱": true, + "≧̸": true, + "≫̸": true, + "≹": true, + "⩾̸": true, + "≵": true, + "≎̸": true, + "≏̸": true, + "⋪": true, + "⧏̸": true, + "⋬": true, + "≮": true, + "≰": true, + "≸": true, + "≪̸": true, + "⩽̸": true, + "≴": true, + "⪢̸": true, + "⪡̸": true, + "⊀": true, + "⪯̸": true, + "⋠": true, + "∌": true, + "⋫": true, + "⧐̸": true, + "⋭": true, + "⊏̸": true, + "⋢": true, + "⊐̸": true, + "⋣": true, + "⊂⃒": true, + "⊈": true, + "⊁": true, + "⪰̸": true, + "⋡": true, + "≿̸": true, + "⊃⃒": true, + "⊉": true, + "≁": true, + "≄": true, + "≇": true, + "≉": true, + "∤": true, + "𝒩": true, + "Ñ": true, + "Ñ": true, + "Ν": true, + "Œ": true, + "Ó": true, + "Ó": true, + "Ô": true, + "Ô": true, + "О": true, + "Ő": true, + "𝔒": true, + "Ò": true, + "Ò": true, + "Ō": true, + "Ω": true, + "Ο": true, + "𝕆": true, + "“": true, + "‘": true, + "⩔": true, + "𝒪": true, + "Ø": true, + "Ø": true, + "Õ": true, + "Õ": true, + "⨷": true, + "Ö": true, + "Ö": true, + "‾": true, + "⏞": true, + "⎴": true, + "⏜": true, + "∂": true, + "П": true, + "𝔓": true, + "Φ": true, + "Π": true, + "±": true, + "ℌ": true, + "ℙ": true, + "⪻": true, + "≺": true, + "⪯": true, + "≼": true, + "≾": true, + "″": true, + "∏": true, + "∷": true, + "∝": true, + "𝒫": true, + "Ψ": true, + """: true, + """: true, + "𝔔": true, + "ℚ": true, + "𝒬": true, + "⤐": true, + "®": true, + "®": true, + "Ŕ": true, + "⟫": true, + "↠": true, + "⤖": true, + "Ř": true, + "Ŗ": true, + "Р": true, + "ℜ": true, + "∋": true, + "⇋": true, + "⥯": true, + "ℜ": true, + "Ρ": true, + "⟩": true, + "→": true, + "⇥": true, + "⇄": true, + "⌉": true, + "⟧": true, + "⥝": true, + "⇂": true, + "⥕": true, + "⌋": true, + "⊢": true, + "↦": true, + "⥛": true, + "⊳": true, + "⧐": true, + "⊵": true, + "⥏": true, + "⥜": true, + "↾": true, + "⥔": true, + "⇀": true, + "⥓": true, + "⇒": true, + "ℝ": true, + "⥰": true, + "⇛": true, + "ℛ": true, + "↱": true, + "⧴": true, + "Щ": true, + "Ш": true, + "Ь": true, + "Ś": true, + "⪼": true, + "Š": true, + "Ş": true, + "Ŝ": true, + "С": true, + "𝔖": true, + "↓": true, + "←": true, + "→": true, + "↑": true, + "Σ": true, + "∘": true, + "𝕊": true, + "√": true, + "□": true, + "⊓": true, + "⊏": true, + "⊑": true, + "⊐": true, + "⊒": true, + "⊔": true, + "𝒮": true, + "⋆": true, + "⋐": true, + "⋐": true, + "⊆": true, + "≻": true, + "⪰": true, + "≽": true, + "≿": true, + "∋": true, + "∑": true, + "⋑": true, + "⊃": true, + "⊇": true, + "⋑": true, + "Þ": true, + "Þ": true, + "™": true, + "Ћ": true, + "Ц": true, + " ": true, + "Τ": true, + "Ť": true, + "Ţ": true, + "Т": true, + "𝔗": true, + "∴": true, + "Θ": true, + "  ": true, + " ": true, + "∼": true, + "≃": true, + "≅": true, + "≈": true, + "𝕋": true, + "⃛": true, + "𝒯": true, + "Ŧ": true, + "Ú": true, + "Ú": true, + "↟": true, + "⥉": true, + "Ў": true, + "Ŭ": true, + "Û": true, + "Û": true, + "У": true, + "Ű": true, + "𝔘": true, + "Ù": true, + "Ù": true, + "Ū": true, + "_": true, + "⏟": true, + "⎵": true, + "⏝": true, + "⋃": true, + "⊎": true, + "Ų": true, + "𝕌": true, + "↑": true, + "⤒": true, + "⇅": true, + "↕": true, + "⥮": true, + "⊥": true, + "↥": true, + "⇑": true, + "⇕": true, + "↖": true, + "↗": true, + "ϒ": true, + "Υ": true, + "Ů": true, + "𝒰": true, + "Ũ": true, + "Ü": true, + "Ü": true, + "⊫": true, + "⫫": true, + "В": true, + "⊩": true, + "⫦": true, + "⋁": true, + "‖": true, + "‖": true, + "∣": true, + "|": true, + "❘": true, + "≀": true, + " ": true, + "𝔙": true, + "𝕍": true, + "𝒱": true, + "⊪": true, + "Ŵ": true, + "⋀": true, + "𝔚": true, + "𝕎": true, + "𝒲": true, + "𝔛": true, + "Ξ": true, + "𝕏": true, + "𝒳": true, + "Я": true, + "Ї": true, + "Ю": true, + "Ý": true, + "Ý": true, + "Ŷ": true, + "Ы": true, + "𝔜": true, + "𝕐": true, + "𝒴": true, + "Ÿ": true, + "Ж": true, + "Ź": true, + "Ž": true, + "З": true, + "Ż": true, + "​": true, + "Ζ": true, + "ℨ": true, + "ℤ": true, + "𝒵": true, + "á": true, + "á": true, + "ă": true, + "∾": true, + "∾̳": true, + "∿": true, + "â": true, + "â": true, + "´": true, + "´": true, + "а": true, + "æ": true, + "æ": true, + "⁡": true, + "𝔞": true, + "à": true, + "à": true, + "ℵ": true, + "ℵ": true, + "α": true, + "ā": true, + "⨿": true, + "&": true, + "&": true, + "∧": true, + "⩕": true, + "⩜": true, + "⩘": true, + "⩚": true, + "∠": true, + "⦤": true, + "∠": true, + "∡": true, + "⦨": true, + "⦩": true, + "⦪": true, + "⦫": true, + "⦬": true, + "⦭": true, + "⦮": true, + "⦯": true, + "∟": true, + "⊾": true, + "⦝": true, + "∢": true, + "Å": true, + "⍼": true, + "ą": true, + "𝕒": true, + "≈": true, + "⩰": true, + "⩯": true, + "≊": true, + "≋": true, + "'": true, + "≈": true, + "≊": true, + "å": true, + "å": true, + "𝒶": true, + "*": true, + "≈": true, + "≍": true, + "ã": true, + "ã": true, + "ä": true, + "ä": true, + "∳": true, + "⨑": true, + "⫭": true, + "≌": true, + "϶": true, + "‵": true, + "∽": true, + "⋍": true, + "⊽": true, + "⌅": true, + "⌅": true, + "⎵": true, + "⎶": true, + "≌": true, + "б": true, + "„": true, + "∵": true, + "∵": true, + "⦰": true, + "϶": true, + "ℬ": true, + "β": true, + "ℶ": true, + "≬": true, + "𝔟": true, + "⋂": true, + "◯": true, + "⋃": true, + "⨀": true, + "⨁": true, + "⨂": true, + "⨆": true, + "★": true, + "▽": true, + "△": true, + "⨄": true, + "⋁": true, + "⋀": true, + "⤍": true, + "⧫": true, + "▪": true, + "▴": true, + "▾": true, + "◂": true, + "▸": true, + "␣": true, + "▒": true, + "░": true, + "▓": true, + "█": true, + "=⃥": true, + "≡⃥": true, + "⌐": true, + "𝕓": true, + "⊥": true, + "⊥": true, + "⋈": true, + "╗": true, + "╔": true, + "╖": true, + "╓": true, + "═": true, + "╦": true, + "╩": true, + "╤": true, + "╧": true, + "╝": true, + "╚": true, + "╜": true, + "╙": true, + "║": true, + "╬": true, + "╣": true, + "╠": true, + "╫": true, + "╢": true, + "╟": true, + "⧉": true, + "╕": true, + "╒": true, + "┐": true, + "┌": true, + "─": true, + "╥": true, + "╨": true, + "┬": true, + "┴": true, + "⊟": true, + "⊞": true, + "⊠": true, + "╛": true, + "╘": true, + "┘": true, + "└": true, + "│": true, + "╪": true, + "╡": true, + "╞": true, + "┼": true, + "┤": true, + "├": true, + "‵": true, + "˘": true, + "¦": true, + "¦": true, + "𝒷": true, + "⁏": true, + "∽": true, + "⋍": true, + "\": true, + "⧅": true, + "⟈": true, + "•": true, + "•": true, + "≎": true, + "⪮": true, + "≏": true, + "≏": true, + "ć": true, + "∩": true, + "⩄": true, + "⩉": true, + "⩋": true, + "⩇": true, + "⩀": true, + "∩︀": true, + "⁁": true, + "ˇ": true, + "⩍": true, + "č": true, + "ç": true, + "ç": true, + "ĉ": true, + "⩌": true, + "⩐": true, + "ċ": true, + "¸": true, + "¸": true, + "⦲": true, + "¢": true, + "¢": true, + "·": true, + "𝔠": true, + "ч": true, + "✓": true, + "✓": true, + "χ": true, + "○": true, + "⧃": true, + "ˆ": true, + "≗": true, + "↺": true, + "↻": true, + "®": true, + "Ⓢ": true, + "⊛": true, + "⊚": true, + "⊝": true, + "≗": true, + "⨐": true, + "⫯": true, + "⧂": true, + "♣": true, + "♣": true, + ":": true, + "≔": true, + "≔": true, + ",": true, + "@": true, + "∁": true, + "∘": true, + "∁": true, + "ℂ": true, + "≅": true, + "⩭": true, + "∮": true, + "𝕔": true, + "∐": true, + "©": true, + "©": true, + "℗": true, + "↵": true, + "✗": true, + "𝒸": true, + "⫏": true, + "⫑": true, + "⫐": true, + "⫒": true, + "⋯": true, + "⤸": true, + "⤵": true, + "⋞": true, + "⋟": true, + "↶": true, + "⤽": true, + "∪": true, + "⩈": true, + "⩆": true, + "⩊": true, + "⊍": true, + "⩅": true, + "∪︀": true, + "↷": true, + "⤼": true, + "⋞": true, + "⋟": true, + "⋎": true, + "⋏": true, + "¤": true, + "¤": true, + "↶": true, + "↷": true, + "⋎": true, + "⋏": true, + "∲": true, + "∱": true, + "⌭": true, + "⇓": true, + "⥥": true, + "†": true, + "ℸ": true, + "↓": true, + "‐": true, + "⊣": true, + "⤏": true, + "˝": true, + "ď": true, + "д": true, + "ⅆ": true, + "‡": true, + "⇊": true, + "⩷": true, + "°": true, + "°": true, + "δ": true, + "⦱": true, + "⥿": true, + "𝔡": true, + "⇃": true, + "⇂": true, + "⋄": true, + "⋄": true, + "♦": true, + "♦": true, + "¨": true, + "ϝ": true, + "⋲": true, + "÷": true, + "÷": true, + "÷": true, + "⋇": true, + "⋇": true, + "ђ": true, + "⌞": true, + "⌍": true, + "$": true, + "𝕕": true, + "˙": true, + "≐": true, + "≑": true, + "∸": true, + "∔": true, + "⊡": true, + "⌆": true, + "↓": true, + "⇊": true, + "⇃": true, + "⇂": true, + "⤐": true, + "⌟": true, + "⌌": true, + "𝒹": true, + "ѕ": true, + "⧶": true, + "đ": true, + "⋱": true, + "▿": true, + "▾": true, + "⇵": true, + "⥯": true, + "⦦": true, + "џ": true, + "⟿": true, + "⩷": true, + "≑": true, + "é": true, + "é": true, + "⩮": true, + "ě": true, + "≖": true, + "ê": true, + "ê": true, + "≕": true, + "э": true, + "ė": true, + "ⅇ": true, + "≒": true, + "𝔢": true, + "⪚": true, + "è": true, + "è": true, + "⪖": true, + "⪘": true, + "⪙": true, + "⏧": true, + "ℓ": true, + "⪕": true, + "⪗": true, + "ē": true, + "∅": true, + "∅": true, + "∅": true, + " ": true, + " ": true, + " ": true, + "ŋ": true, + " ": true, + "ę": true, + "𝕖": true, + "⋕": true, + "⧣": true, + "⩱": true, + "ε": true, + "ε": true, + "ϵ": true, + "≖": true, + "≕": true, + "≂": true, + "⪖": true, + "⪕": true, + "=": true, + "≟": true, + "≡": true, + "⩸": true, + "⧥": true, + "≓": true, + "⥱": true, + "ℯ": true, + "≐": true, + "≂": true, + "η": true, + "ð": true, + "ð": true, + "ë": true, + "ë": true, + "€": true, + "!": true, + "∃": true, + "ℰ": true, + "ⅇ": true, + "≒": true, + "ф": true, + "♀": true, + "ffi": true, + "ff": true, + "ffl": true, + "𝔣": true, + "fi": true, + "fj": true, + "♭": true, + "fl": true, + "▱": true, + "ƒ": true, + "𝕗": true, + "∀": true, + "⋔": true, + "⫙": true, + "⨍": true, + "½": true, + "½": true, + "⅓": true, + "¼": true, + "¼": true, + "⅕": true, + "⅙": true, + "⅛": true, + "⅔": true, + "⅖": true, + "¾": true, + "¾": true, + "⅗": true, + "⅜": true, + "⅘": true, + "⅚": true, + "⅝": true, + "⅞": true, + "⁄": true, + "⌢": true, + "𝒻": true, + "≧": true, + "⪌": true, + "ǵ": true, + "γ": true, + "ϝ": true, + "⪆": true, + "ğ": true, + "ĝ": true, + "г": true, + "ġ": true, + "≥": true, + "⋛": true, + "≥": true, + "≧": true, + "⩾": true, + "⩾": true, + "⪩": true, + "⪀": true, + "⪂": true, + "⪄": true, + "⋛︀": true, + "⪔": true, + "𝔤": true, + "≫": true, + "⋙": true, + "ℷ": true, + "ѓ": true, + "≷": true, + "⪒": true, + "⪥": true, + "⪤": true, + "≩": true, + "⪊": true, + "⪊": true, + "⪈": true, + "⪈": true, + "≩": true, + "⋧": true, + "𝕘": true, + "`": true, + "ℊ": true, + "≳": true, + "⪎": true, + "⪐": true, + ">": true, + ">": true, + "⪧": true, + "⩺": true, + "⋗": true, + "⦕": true, + "⩼": true, + "⪆": true, + "⥸": true, + "⋗": true, + "⋛": true, + "⪌": true, + "≷": true, + "≳": true, + "≩︀": true, + "≩︀": true, + "⇔": true, + " ": true, + "½": true, + "ℋ": true, + "ъ": true, + "↔": true, + "⥈": true, + "↭": true, + "ℏ": true, + "ĥ": true, + "♥": true, + "♥": true, + "…": true, + "⊹": true, + "𝔥": true, + "⤥": true, + "⤦": true, + "⇿": true, + "∻": true, + "↩": true, + "↪": true, + "𝕙": true, + "―": true, + "𝒽": true, + "ℏ": true, + "ħ": true, + "⁃": true, + "‐": true, + "í": true, + "í": true, + "⁣": true, + "î": true, + "î": true, + "и": true, + "е": true, + "¡": true, + "¡": true, + "⇔": true, + "𝔦": true, + "ì": true, + "ì": true, + "ⅈ": true, + "⨌": true, + "∭": true, + "⧜": true, + "℩": true, + "ij": true, + "ī": true, + "ℑ": true, + "ℐ": true, + "ℑ": true, + "ı": true, + "⊷": true, + "Ƶ": true, + "∈": true, + "℅": true, + "∞": true, + "⧝": true, + "ı": true, + "∫": true, + "⊺": true, + "ℤ": true, + "⊺": true, + "⨗": true, + "⨼": true, + "ё": true, + "į": true, + "𝕚": true, + "ι": true, + "⨼": true, + "¿": true, + "¿": true, + "𝒾": true, + "∈": true, + "⋹": true, + "⋵": true, + "⋴": true, + "⋳": true, + "∈": true, + "⁢": true, + "ĩ": true, + "і": true, + "ï": true, + "ï": true, + "ĵ": true, + "й": true, + "𝔧": true, + "ȷ": true, + "𝕛": true, + "𝒿": true, + "ј": true, + "є": true, + "κ": true, + "ϰ": true, + "ķ": true, + "к": true, + "𝔨": true, + "ĸ": true, + "х": true, + "ќ": true, + "𝕜": true, + "𝓀": true, + "⇚": true, + "⇐": true, + "⤛": true, + "⤎": true, + "≦": true, + "⪋": true, + "⥢": true, + "ĺ": true, + "⦴": true, + "ℒ": true, + "λ": true, + "⟨": true, + "⦑": true, + "⟨": true, + "⪅": true, + "«": true, + "«": true, + "←": true, + "⇤": true, + "⤟": true, + "⤝": true, + "↩": true, + "↫": true, + "⤹": true, + "⥳": true, + "↢": true, + "⪫": true, + "⤙": true, + "⪭": true, + "⪭︀": true, + "⤌": true, + "❲": true, + "{": true, + "[": true, + "⦋": true, + "⦏": true, + "⦍": true, + "ľ": true, + "ļ": true, + "⌈": true, + "{": true, + "л": true, + "⤶": true, + "“": true, + "„": true, + "⥧": true, + "⥋": true, + "↲": true, + "≤": true, + "←": true, + "↢": true, + "↽": true, + "↼": true, + "⇇": true, + "↔": true, + "⇆": true, + "⇋": true, + "↭": true, + "⋋": true, + "⋚": true, + "≤": true, + "≦": true, + "⩽": true, + "⩽": true, + "⪨": true, + "⩿": true, + "⪁": true, + "⪃": true, + "⋚︀": true, + "⪓": true, + "⪅": true, + "⋖": true, + "⋚": true, + "⪋": true, + "≶": true, + "≲": true, + "⥼": true, + "⌊": true, + "𝔩": true, + "≶": true, + "⪑": true, + "↽": true, + "↼": true, + "⥪": true, + "▄": true, + "љ": true, + "≪": true, + "⇇": true, + "⌞": true, + "⥫": true, + "◺": true, + "ŀ": true, + "⎰": true, + "⎰": true, + "≨": true, + "⪉": true, + "⪉": true, + "⪇": true, + "⪇": true, + "≨": true, + "⋦": true, + "⟬": true, + "⇽": true, + "⟦": true, + "⟵": true, + "⟷": true, + "⟼": true, + "⟶": true, + "↫": true, + "↬": true, + "⦅": true, + "𝕝": true, + "⨭": true, + "⨴": true, + "∗": true, + "_": true, + "◊": true, + "◊": true, + "⧫": true, + "(": true, + "⦓": true, + "⇆": true, + "⌟": true, + "⇋": true, + "⥭": true, + "‎": true, + "⊿": true, + "‹": true, + "𝓁": true, + "↰": true, + "≲": true, + "⪍": true, + "⪏": true, + "[": true, + "‘": true, + "‚": true, + "ł": true, + "<": true, + "<": true, + "⪦": true, + "⩹": true, + "⋖": true, + "⋋": true, + "⋉": true, + "⥶": true, + "⩻": true, + "⦖": true, + "◃": true, + "⊴": true, + "◂": true, + "⥊": true, + "⥦": true, + "≨︀": true, + "≨︀": true, + "∺": true, + "¯": true, + "¯": true, + "♂": true, + "✠": true, + "✠": true, + "↦": true, + "↦": true, + "↧": true, + "↤": true, + "↥": true, + "▮": true, + "⨩": true, + "м": true, + "—": true, + "∡": true, + "𝔪": true, + "℧": true, + "µ": true, + "µ": true, + "∣": true, + "*": true, + "⫰": true, + "·": true, + "·": true, + "−": true, + "⊟": true, + "∸": true, + "⨪": true, + "⫛": true, + "…": true, + "∓": true, + "⊧": true, + "𝕞": true, + "∓": true, + "𝓂": true, + "∾": true, + "μ": true, + "⊸": true, + "⊸": true, + "⋙̸": true, + "≫⃒": true, + "≫̸": true, + "⇍": true, + "⇎": true, + "⋘̸": true, + "≪⃒": true, + "≪̸": true, + "⇏": true, + "⊯": true, + "⊮": true, + "∇": true, + "ń": true, + "∠⃒": true, + "≉": true, + "⩰̸": true, + "≋̸": true, + "ʼn": true, + "≉": true, + "♮": true, + "♮": true, + "ℕ": true, + " ": true, + " ": true, + "≎̸": true, + "≏̸": true, + "⩃": true, + "ň": true, + "ņ": true, + "≇": true, + "⩭̸": true, + "⩂": true, + "н": true, + "–": true, + "≠": true, + "⇗": true, + "⤤": true, + "↗": true, + "↗": true, + "≐̸": true, + "≢": true, + "⤨": true, + "≂̸": true, + "∄": true, + "∄": true, + "𝔫": true, + "≧̸": true, + "≱": true, + "≱": true, + "≧̸": true, + "⩾̸": true, + "⩾̸": true, + "≵": true, + "≯": true, + "≯": true, + "⇎": true, + "↮": true, + "⫲": true, + "∋": true, + "⋼": true, + "⋺": true, + "∋": true, + "њ": true, + "⇍": true, + "≦̸": true, + "↚": true, + "‥": true, + "≰": true, + "↚": true, + "↮": true, + "≰": true, + "≦̸": true, + "⩽̸": true, + "⩽̸": true, + "≮": true, + "≴": true, + "≮": true, + "⋪": true, + "⋬": true, + "∤": true, + "𝕟": true, + "¬": true, + "¬": true, + "∉": true, + "⋹̸": true, + "⋵̸": true, + "∉": true, + "⋷": true, + "⋶": true, + "∌": true, + "∌": true, + "⋾": true, + "⋽": true, + "∦": true, + "∦": true, + "⫽⃥": true, + "∂̸": true, + "⨔": true, + "⊀": true, + "⋠": true, + "⪯̸": true, + "⊀": true, + "⪯̸": true, + "⇏": true, + "↛": true, + "⤳̸": true, + "↝̸": true, + "↛": true, + "⋫": true, + "⋭": true, + "⊁": true, + "⋡": true, + "⪰̸": true, + "𝓃": true, + "∤": true, + "∦": true, + "≁": true, + "≄": true, + "≄": true, + "∤": true, + "∦": true, + "⋢": true, + "⋣": true, + "⊄": true, + "⫅̸": true, + "⊈": true, + "⊂⃒": true, + "⊈": true, + "⫅̸": true, + "⊁": true, + "⪰̸": true, + "⊅": true, + "⫆̸": true, + "⊉": true, + "⊃⃒": true, + "⊉": true, + "⫆̸": true, + "≹": true, + "ñ": true, + "ñ": true, + "≸": true, + "⋪": true, + "⋬": true, + "⋫": true, + "⋭": true, + "ν": true, + "#": true, + "№": true, + " ": true, + "⊭": true, + "⤄": true, + "≍⃒": true, + "⊬": true, + "≥⃒": true, + ">⃒": true, + "⧞": true, + "⤂": true, + "≤⃒": true, + "<⃒": true, + "⊴⃒": true, + "⤃": true, + "⊵⃒": true, + "∼⃒": true, + "⇖": true, + "⤣": true, + "↖": true, + "↖": true, + "⤧": true, + "Ⓢ": true, + "ó": true, + "ó": true, + "⊛": true, + "⊚": true, + "ô": true, + "ô": true, + "о": true, + "⊝": true, + "ő": true, + "⨸": true, + "⊙": true, + "⦼": true, + "œ": true, + "⦿": true, + "𝔬": true, + "˛": true, + "ò": true, + "ò": true, + "⧁": true, + "⦵": true, + "Ω": true, + "∮": true, + "↺": true, + "⦾": true, + "⦻": true, + "‾": true, + "⧀": true, + "ō": true, + "ω": true, + "ο": true, + "⦶": true, + "⊖": true, + "𝕠": true, + "⦷": true, + "⦹": true, + "⊕": true, + "∨": true, + "↻": true, + "⩝": true, + "ℴ": true, + "ℴ": true, + "ª": true, + "ª": true, + "º": true, + "º": true, + "⊶": true, + "⩖": true, + "⩗": true, + "⩛": true, + "ℴ": true, + "ø": true, + "ø": true, + "⊘": true, + "õ": true, + "õ": true, + "⊗": true, + "⨶": true, + "ö": true, + "ö": true, + "⌽": true, + "∥": true, + "¶": true, + "¶": true, + "∥": true, + "⫳": true, + "⫽": true, + "∂": true, + "п": true, + "%": true, + ".": true, + "‰": true, + "⊥": true, + "‱": true, + "𝔭": true, + "φ": true, + "ϕ": true, + "ℳ": true, + "☎": true, + "π": true, + "⋔": true, + "ϖ": true, + "ℏ": true, + "ℎ": true, + "ℏ": true, + "+": true, + "⨣": true, + "⊞": true, + "⨢": true, + "∔": true, + "⨥": true, + "⩲": true, + "±": true, + "±": true, + "⨦": true, + "⨧": true, + "±": true, + "⨕": true, + "𝕡": true, + "£": true, + "£": true, + "≺": true, + "⪳": true, + "⪷": true, + "≼": true, + "⪯": true, + "≺": true, + "⪷": true, + "≼": true, + "⪯": true, + "⪹": true, + "⪵": true, + "⋨": true, + "≾": true, + "′": true, + "ℙ": true, + "⪵": true, + "⪹": true, + "⋨": true, + "∏": true, + "⌮": true, + "⌒": true, + "⌓": true, + "∝": true, + "∝": true, + "≾": true, + "⊰": true, + "𝓅": true, + "ψ": true, + " ": true, + "𝔮": true, + "⨌": true, + "𝕢": true, + "⁗": true, + "𝓆": true, + "ℍ": true, + "⨖": true, + "?": true, + "≟": true, + """: true, + """: true, + "⇛": true, + "⇒": true, + "⤜": true, + "⤏": true, + "⥤": true, + "∽̱": true, + "ŕ": true, + "√": true, + "⦳": true, + "⟩": true, + "⦒": true, + "⦥": true, + "⟩": true, + "»": true, + "»": true, + "→": true, + "⥵": true, + "⇥": true, + "⤠": true, + "⤳": true, + "⤞": true, + "↪": true, + "↬": true, + "⥅": true, + "⥴": true, + "↣": true, + "↝": true, + "⤚": true, + "∶": true, + "ℚ": true, + "⤍": true, + "❳": true, + "}": true, + "]": true, + "⦌": true, + "⦎": true, + "⦐": true, + "ř": true, + "ŗ": true, + "⌉": true, + "}": true, + "р": true, + "⤷": true, + "⥩": true, + "”": true, + "”": true, + "↳": true, + "ℜ": true, + "ℛ": true, + "ℜ": true, + "ℝ": true, + "▭": true, + "®": true, + "®": true, + "⥽": true, + "⌋": true, + "𝔯": true, + "⇁": true, + "⇀": true, + "⥬": true, + "ρ": true, + "ϱ": true, + "→": true, + "↣": true, + "⇁": true, + "⇀": true, + "⇄": true, + "⇌": true, + "⇉": true, + "↝": true, + "⋌": true, + "˚": true, + "≓": true, + "⇄": true, + "⇌": true, + "‏": true, + "⎱": true, + "⎱": true, + "⫮": true, + "⟭": true, + "⇾": true, + "⟧": true, + "⦆": true, + "𝕣": true, + "⨮": true, + "⨵": true, + ")": true, + "⦔": true, + "⨒": true, + "⇉": true, + "›": true, + "𝓇": true, + "↱": true, + "]": true, + "’": true, + "’": true, + "⋌": true, + "⋊": true, + "▹": true, + "⊵": true, + "▸": true, + "⧎": true, + "⥨": true, + "℞": true, + "ś": true, + "‚": true, + "≻": true, + "⪴": true, + "⪸": true, + "š": true, + "≽": true, + "⪰": true, + "ş": true, + "ŝ": true, + "⪶": true, + "⪺": true, + "⋩": true, + "⨓": true, + "≿": true, + "с": true, + "⋅": true, + "⊡": true, + "⩦": true, + "⇘": true, + "⤥": true, + "↘": true, + "↘": true, + "§": true, + "§": true, + ";": true, + "⤩": true, + "∖": true, + "∖": true, + "✶": true, + "𝔰": true, + "⌢": true, + "♯": true, + "щ": true, + "ш": true, + "∣": true, + "∥": true, + "­": true, + "­": true, + "σ": true, + "ς": true, + "ς": true, + "∼": true, + "⩪": true, + "≃": true, + "≃": true, + "⪞": true, + "⪠": true, + "⪝": true, + "⪟": true, + "≆": true, + "⨤": true, + "⥲": true, + "←": true, + "∖": true, + "⨳": true, + "⧤": true, + "∣": true, + "⌣": true, + "⪪": true, + "⪬": true, + "⪬︀": true, + "ь": true, + "/": true, + "⧄": true, + "⌿": true, + "𝕤": true, + "♠": true, + "♠": true, + "∥": true, + "⊓": true, + "⊓︀": true, + "⊔": true, + "⊔︀": true, + "⊏": true, + "⊑": true, + "⊏": true, + "⊑": true, + "⊐": true, + "⊒": true, + "⊐": true, + "⊒": true, + "□": true, + "□": true, + "▪": true, + "▪": true, + "→": true, + "𝓈": true, + "∖": true, + "⌣": true, + "⋆": true, + "☆": true, + "★": true, + "ϵ": true, + "ϕ": true, + "¯": true, + "⊂": true, + "⫅": true, + "⪽": true, + "⊆": true, + "⫃": true, + "⫁": true, + "⫋": true, + "⊊": true, + "⪿": true, + "⥹": true, + "⊂": true, + "⊆": true, + "⫅": true, + "⊊": true, + "⫋": true, + "⫇": true, + "⫕": true, + "⫓": true, + "≻": true, + "⪸": true, + "≽": true, + "⪰": true, + "⪺": true, + "⪶": true, + "⋩": true, + "≿": true, + "∑": true, + "♪": true, + "¹": true, + "¹": true, + "²": true, + "²": true, + "³": true, + "³": true, + "⊃": true, + "⫆": true, + "⪾": true, + "⫘": true, + "⊇": true, + "⫄": true, + "⟉": true, + "⫗": true, + "⥻": true, + "⫂": true, + "⫌": true, + "⊋": true, + "⫀": true, + "⊃": true, + "⊇": true, + "⫆": true, + "⊋": true, + "⫌": true, + "⫈": true, + "⫔": true, + "⫖": true, + "⇙": true, + "⤦": true, + "↙": true, + "↙": true, + "⤪": true, + "ß": true, + "ß": true, + "⌖": true, + "τ": true, + "⎴": true, + "ť": true, + "ţ": true, + "т": true, + "⃛": true, + "⌕": true, + "𝔱": true, + "∴": true, + "∴": true, + "θ": true, + "ϑ": true, + "ϑ": true, + "≈": true, + "∼": true, + " ": true, + "≈": true, + "∼": true, + "þ": true, + "þ": true, + "˜": true, + "×": true, + "×": true, + "⊠": true, + "⨱": true, + "⨰": true, + "∭": true, + "⤨": true, + "⊤": true, + "⌶": true, + "⫱": true, + "𝕥": true, + "⫚": true, + "⤩": true, + "‴": true, + "™": true, + "▵": true, + "▿": true, + "◃": true, + "⊴": true, + "≜": true, + "▹": true, + "⊵": true, + "◬": true, + "≜": true, + "⨺": true, + "⨹": true, + "⧍": true, + "⨻": true, + "⏢": true, + "𝓉": true, + "ц": true, + "ћ": true, + "ŧ": true, + "≬": true, + "↞": true, + "↠": true, + "⇑": true, + "⥣": true, + "ú": true, + "ú": true, + "↑": true, + "ў": true, + "ŭ": true, + "û": true, + "û": true, + "у": true, + "⇅": true, + "ű": true, + "⥮": true, + "⥾": true, + "𝔲": true, + "ù": true, + "ù": true, + "↿": true, + "↾": true, + "▀": true, + "⌜": true, + "⌜": true, + "⌏": true, + "◸": true, + "ū": true, + "¨": true, + "¨": true, + "ų": true, + "𝕦": true, + "↑": true, + "↕": true, + "↿": true, + "↾": true, + "⊎": true, + "υ": true, + "ϒ": true, + "υ": true, + "⇈": true, + "⌝": true, + "⌝": true, + "⌎": true, + "ů": true, + "◹": true, + "𝓊": true, + "⋰": true, + "ũ": true, + "▵": true, + "▴": true, + "⇈": true, + "ü": true, + "ü": true, + "⦧": true, + "⇕": true, + "⫨": true, + "⫩": true, + "⊨": true, + "⦜": true, + "ϵ": true, + "ϰ": true, + "∅": true, + "ϕ": true, + "ϖ": true, + "∝": true, + "↕": true, + "ϱ": true, + "ς": true, + "⊊︀": true, + "⫋︀": true, + "⊋︀": true, + "⫌︀": true, + "ϑ": true, + "⊲": true, + "⊳": true, + "в": true, + "⊢": true, + "∨": true, + "⊻": true, + "≚": true, + "⋮": true, + "|": true, + "|": true, + "𝔳": true, + "⊲": true, + "⊂⃒": true, + "⊃⃒": true, + "𝕧": true, + "∝": true, + "⊳": true, + "𝓋": true, + "⫋︀": true, + "⊊︀": true, + "⫌︀": true, + "⊋︀": true, + "⦚": true, + "ŵ": true, + "⩟": true, + "∧": true, + "≙": true, + "℘": true, + "𝔴": true, + "𝕨": true, + "℘": true, + "≀": true, + "≀": true, + "𝓌": true, + "⋂": true, + "◯": true, + "⋃": true, + "▽": true, + "𝔵": true, + "⟺": true, + "⟷": true, + "ξ": true, + "⟸": true, + "⟵": true, + "⟼": true, + "⋻": true, + "⨀": true, + "𝕩": true, + "⨁": true, + "⨂": true, + "⟹": true, + "⟶": true, + "𝓍": true, + "⨆": true, + "⨄": true, + "△": true, + "⋁": true, + "⋀": true, + "ý": true, + "ý": true, + "я": true, + "ŷ": true, + "ы": true, + "¥": true, + "¥": true, + "𝔶": true, + "ї": true, + "𝕪": true, + "𝓎": true, + "ю": true, + "ÿ": true, + "ÿ": true, + "ź": true, + "ž": true, + "з": true, + "ż": true, + "ℨ": true, + "ζ": true, + "𝔷": true, + "ж": true, + "⇝": true, + "𝕫": true, + "𝓏": true, + "‍": true, + "‌": true, +} diff --git a/vendor/github.com/russross/blackfriday/v2/esc.go b/vendor/github.com/russross/blackfriday/v2/esc.go index 6385f27cb6..6ab60102c9 100644 --- a/vendor/github.com/russross/blackfriday/v2/esc.go +++ b/vendor/github.com/russross/blackfriday/v2/esc.go @@ -13,13 +13,27 @@ var htmlEscaper = [256][]byte{ } func escapeHTML(w io.Writer, s []byte) { + escapeEntities(w, s, false) +} + +func escapeAllHTML(w io.Writer, s []byte) { + escapeEntities(w, s, true) +} + +func escapeEntities(w io.Writer, s []byte, escapeValidEntities bool) { var start, end int for end < len(s) { escSeq := htmlEscaper[s[end]] if escSeq != nil { - w.Write(s[start:end]) - w.Write(escSeq) - start = end + 1 + isEntity, entityEnd := nodeIsEntity(s, end) + if isEntity && !escapeValidEntities { + w.Write(s[start : entityEnd+1]) + start = entityEnd + 1 + } else { + w.Write(s[start:end]) + w.Write(escSeq) + start = end + 1 + } } end++ } @@ -28,6 +42,28 @@ func escapeHTML(w io.Writer, s []byte) { } } +func nodeIsEntity(s []byte, end int) (isEntity bool, endEntityPos int) { + isEntity = false + endEntityPos = end + 1 + + if s[end] == '&' { + for endEntityPos < len(s) { + if s[endEntityPos] == ';' { + if entities[string(s[end:endEntityPos+1])] { + isEntity = true + break + } + } + if !isalnum(s[endEntityPos]) && s[endEntityPos] != '&' && s[endEntityPos] != '#' { + break + } + endEntityPos++ + } + } + + return isEntity, endEntityPos +} + func escLink(w io.Writer, text []byte) { unesc := html.UnescapeString(string(text)) escapeHTML(w, []byte(unesc)) diff --git a/vendor/github.com/russross/blackfriday/v2/html.go b/vendor/github.com/russross/blackfriday/v2/html.go index 284c87184f..cb4f26e30f 100644 --- a/vendor/github.com/russross/blackfriday/v2/html.go +++ b/vendor/github.com/russross/blackfriday/v2/html.go @@ -132,7 +132,10 @@ func NewHTMLRenderer(params HTMLRendererParameters) *HTMLRenderer { } if params.FootnoteReturnLinkContents == "" { - params.FootnoteReturnLinkContents = `[return]` + // U+FE0E is VARIATION SELECTOR-15. + // It suppresses automatic emoji presentation of the preceding + // U+21A9 LEFTWARDS ARROW WITH HOOK on iOS and iPadOS. + params.FootnoteReturnLinkContents = "↩\ufe0e" } return &HTMLRenderer{ @@ -616,7 +619,7 @@ func (r *HTMLRenderer) RenderNode(w io.Writer, node *Node, entering bool) WalkSt } case Code: r.out(w, codeTag) - escapeHTML(w, node.Literal) + escapeAllHTML(w, node.Literal) r.out(w, codeCloseTag) case Document: break @@ -762,7 +765,7 @@ func (r *HTMLRenderer) RenderNode(w io.Writer, node *Node, entering bool) WalkSt r.cr(w) r.out(w, preTag) r.tag(w, codeTag[:len(codeTag)-1], attrs) - escapeHTML(w, node.Literal) + escapeAllHTML(w, node.Literal) r.out(w, codeCloseTag) r.out(w, preCloseTag) if node.Parent.Type != Item { diff --git a/vendor/github.com/russross/blackfriday/v2/inline.go b/vendor/github.com/russross/blackfriday/v2/inline.go index 4ed2907921..d45bd94172 100644 --- a/vendor/github.com/russross/blackfriday/v2/inline.go +++ b/vendor/github.com/russross/blackfriday/v2/inline.go @@ -278,7 +278,7 @@ func link(p *Markdown, data []byte, offset int) (int, *Node) { case data[i] == '\n': textHasNl = true - case data[i-1] == '\\': + case isBackslashEscaped(data, i): continue case data[i] == '[': diff --git a/vendor/github.com/russross/blackfriday/v2/node.go b/vendor/github.com/russross/blackfriday/v2/node.go index 51b9e8c1b5..04e6050cee 100644 --- a/vendor/github.com/russross/blackfriday/v2/node.go +++ b/vendor/github.com/russross/blackfriday/v2/node.go @@ -199,7 +199,8 @@ func (n *Node) InsertBefore(sibling *Node) { } } -func (n *Node) isContainer() bool { +// IsContainer returns true if 'n' can contain children. +func (n *Node) IsContainer() bool { switch n.Type { case Document: fallthrough @@ -238,6 +239,11 @@ func (n *Node) isContainer() bool { } } +// IsLeaf returns true if 'n' is a leaf node. +func (n *Node) IsLeaf() bool { + return !n.IsContainer() +} + func (n *Node) canContain(t NodeType) bool { if n.Type == List { return t == Item @@ -309,11 +315,11 @@ func newNodeWalker(root *Node) *nodeWalker { } func (nw *nodeWalker) next() { - if (!nw.current.isContainer() || !nw.entering) && nw.current == nw.root { + if (!nw.current.IsContainer() || !nw.entering) && nw.current == nw.root { nw.current = nil return } - if nw.entering && nw.current.isContainer() { + if nw.entering && nw.current.IsContainer() { if nw.current.FirstChild != nil { nw.current = nw.current.FirstChild nw.entering = true diff --git a/vendor/github.com/shurcooL/sanitized_anchor_name/.travis.yml b/vendor/github.com/shurcooL/sanitized_anchor_name/.travis.yml deleted file mode 100644 index 93b1fcdb31..0000000000 --- a/vendor/github.com/shurcooL/sanitized_anchor_name/.travis.yml +++ /dev/null @@ -1,16 +0,0 @@ -sudo: false -language: go -go: - - 1.x - - master -matrix: - allow_failures: - - go: master - fast_finish: true -install: - - # Do nothing. This is needed to prevent default install action "go get -t -v ./..." from happening here (we want it to happen inside script step). -script: - - go get -t -v ./... - - diff -u <(echo -n) <(gofmt -d -s .) - - go tool vet . - - go test -v -race ./... diff --git a/vendor/github.com/shurcooL/sanitized_anchor_name/LICENSE b/vendor/github.com/shurcooL/sanitized_anchor_name/LICENSE deleted file mode 100644 index c35c17af98..0000000000 --- a/vendor/github.com/shurcooL/sanitized_anchor_name/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2015 Dmitri Shuralyov - -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. diff --git a/vendor/github.com/shurcooL/sanitized_anchor_name/README.md b/vendor/github.com/shurcooL/sanitized_anchor_name/README.md deleted file mode 100644 index 670bf0fe6c..0000000000 --- a/vendor/github.com/shurcooL/sanitized_anchor_name/README.md +++ /dev/null @@ -1,36 +0,0 @@ -sanitized_anchor_name -===================== - -[![Build Status](https://travis-ci.org/shurcooL/sanitized_anchor_name.svg?branch=master)](https://travis-ci.org/shurcooL/sanitized_anchor_name) [![GoDoc](https://godoc.org/github.com/shurcooL/sanitized_anchor_name?status.svg)](https://godoc.org/github.com/shurcooL/sanitized_anchor_name) - -Package sanitized_anchor_name provides a func to create sanitized anchor names. - -Its logic can be reused by multiple packages to create interoperable anchor names -and links to those anchors. - -At this time, it does not try to ensure that generated anchor names -are unique, that responsibility falls on the caller. - -Installation ------------- - -```bash -go get -u github.com/shurcooL/sanitized_anchor_name -``` - -Example -------- - -```Go -anchorName := sanitized_anchor_name.Create("This is a header") - -fmt.Println(anchorName) - -// Output: -// this-is-a-header -``` - -License -------- - -- [MIT License](LICENSE) diff --git a/vendor/github.com/shurcooL/sanitized_anchor_name/main.go b/vendor/github.com/shurcooL/sanitized_anchor_name/main.go deleted file mode 100644 index 6a77d12431..0000000000 --- a/vendor/github.com/shurcooL/sanitized_anchor_name/main.go +++ /dev/null @@ -1,29 +0,0 @@ -// Package sanitized_anchor_name provides a func to create sanitized anchor names. -// -// Its logic can be reused by multiple packages to create interoperable anchor names -// and links to those anchors. -// -// At this time, it does not try to ensure that generated anchor names -// are unique, that responsibility falls on the caller. -package sanitized_anchor_name // import "github.com/shurcooL/sanitized_anchor_name" - -import "unicode" - -// Create returns a sanitized anchor name for the given text. -func Create(text string) string { - var anchorName []rune - var futureDash = false - for _, r := range text { - switch { - case unicode.IsLetter(r) || unicode.IsNumber(r): - if futureDash && len(anchorName) > 0 { - anchorName = append(anchorName, '-') - } - futureDash = false - anchorName = append(anchorName, unicode.ToLower(r)) - default: - futureDash = true - } - } - return string(anchorName) -} diff --git a/vendor/github.com/sirupsen/logrus/.gitignore b/vendor/github.com/sirupsen/logrus/.gitignore index 6b7d7d1e8b..1fb13abebe 100644 --- a/vendor/github.com/sirupsen/logrus/.gitignore +++ b/vendor/github.com/sirupsen/logrus/.gitignore @@ -1,2 +1,4 @@ logrus vendor + +.idea/ diff --git a/vendor/github.com/sirupsen/logrus/.travis.yml b/vendor/github.com/sirupsen/logrus/.travis.yml index 5e20aa4140..c1dbd5a3a3 100644 --- a/vendor/github.com/sirupsen/logrus/.travis.yml +++ b/vendor/github.com/sirupsen/logrus/.travis.yml @@ -4,14 +4,12 @@ git: depth: 1 env: - GO111MODULE=on -go: [1.13.x, 1.14.x] -os: [linux, osx] +go: 1.15.x +os: linux install: - ./travis/install.sh script: - - ./travis/cross_build.sh - - ./travis/lint.sh - - export GOMAXPROCS=4 - - export GORACE=halt_on_error=1 - - go test -race -v ./... - - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then go test -race -v -tags appengine ./... ; fi + - cd ci + - go run mage.go -v -w ../ crossBuild + - go run mage.go -v -w ../ lint + - go run mage.go -v -w ../ test diff --git a/vendor/github.com/sirupsen/logrus/CHANGELOG.md b/vendor/github.com/sirupsen/logrus/CHANGELOG.md index 584026d67c..7567f61289 100644 --- a/vendor/github.com/sirupsen/logrus/CHANGELOG.md +++ b/vendor/github.com/sirupsen/logrus/CHANGELOG.md @@ -1,3 +1,39 @@ +# 1.8.1 +Code quality: + * move magefile in its own subdir/submodule to remove magefile dependency on logrus consumer + * improve timestamp format documentation + +Fixes: + * fix race condition on logger hooks + + +# 1.8.0 + +Correct versioning number replacing v1.7.1. + +# 1.7.1 + +Beware this release has introduced a new public API and its semver is therefore incorrect. + +Code quality: + * use go 1.15 in travis + * use magefile as task runner + +Fixes: + * small fixes about new go 1.13 error formatting system + * Fix for long time race condiction with mutating data hooks + +Features: + * build support for zos + +# 1.7.0 +Fixes: + * the dependency toward a windows terminal library has been removed + +Features: + * a new buffer pool management API has been added + * a set of `Fn()` functions have been added + # 1.6.0 Fixes: * end of line cleanup diff --git a/vendor/github.com/sirupsen/logrus/README.md b/vendor/github.com/sirupsen/logrus/README.md index 5796706dbf..d1d4a85fd7 100644 --- a/vendor/github.com/sirupsen/logrus/README.md +++ b/vendor/github.com/sirupsen/logrus/README.md @@ -1,4 +1,4 @@ -# Logrus :walrus: [![Build Status](https://travis-ci.org/sirupsen/logrus.svg?branch=master)](https://travis-ci.org/sirupsen/logrus) [![GoDoc](https://godoc.org/github.com/sirupsen/logrus?status.svg)](https://godoc.org/github.com/sirupsen/logrus) +# Logrus :walrus: [![Build Status](https://github.com/sirupsen/logrus/workflows/CI/badge.svg)](https://github.com/sirupsen/logrus/actions?query=workflow%3ACI) [![Build Status](https://travis-ci.org/sirupsen/logrus.svg?branch=master)](https://travis-ci.org/sirupsen/logrus) [![Go Reference](https://pkg.go.dev/badge/github.com/sirupsen/logrus.svg)](https://pkg.go.dev/github.com/sirupsen/logrus) Logrus is a structured logger for Go (golang), completely API compatible with the standard library logger. @@ -9,7 +9,7 @@ the last thing you want from your Logging library (again...). This does not mean Logrus is dead. Logrus will continue to be maintained for security, (backwards compatible) bug fixes, and performance (where we are -limited by the interface). +limited by the interface). I believe Logrus' biggest contribution is to have played a part in today's widespread use of structured logging in Golang. There doesn't seem to be a @@ -43,7 +43,7 @@ plain text): With `log.SetFormatter(&log.JSONFormatter{})`, for easy parsing by logstash or Splunk: -```json +```text {"animal":"walrus","level":"info","msg":"A group of walrus emerges from the ocean","size":10,"time":"2014-03-10 19:57:38.562264131 -0400 EDT"} @@ -99,7 +99,7 @@ time="2015-03-26T01:27:38-04:00" level=fatal method=github.com/sirupsen/arcticcr ``` Note that this does add measurable overhead - the cost will depend on the version of Go, but is between 20 and 40% in recent tests with 1.6 and 1.7. You can validate this in your -environment via benchmarks: +environment via benchmarks: ``` go test -bench=.*CallerTracing ``` @@ -317,6 +317,8 @@ log.SetLevel(log.InfoLevel) It may be useful to set `log.Level = logrus.DebugLevel` in a debug or verbose environment if your application has that. +Note: If you want different log levels for global (`log.SetLevel(...)`) and syslog logging, please check the [syslog hook README](hooks/syslog/README.md#different-log-levels-for-local-and-remote-logging). + #### Entries Besides the fields added with `WithField` or `WithFields` some fields are @@ -341,7 +343,7 @@ import ( log "github.com/sirupsen/logrus" ) -init() { +func init() { // do something here to set environment depending on an environment variable // or command-line flag if Environment == "production" { @@ -402,7 +404,7 @@ func (f *MyJSONFormatter) Format(entry *Entry) ([]byte, error) { // source of the official loggers. serialized, err := json.Marshal(entry.Data) if err != nil { - return nil, fmt.Errorf("Failed to marshal fields to JSON, %v", err) + return nil, fmt.Errorf("Failed to marshal fields to JSON, %w", err) } return append(serialized, '\n'), nil } diff --git a/vendor/github.com/sirupsen/logrus/buffer_pool.go b/vendor/github.com/sirupsen/logrus/buffer_pool.go new file mode 100644 index 0000000000..c7787f77cb --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/buffer_pool.go @@ -0,0 +1,43 @@ +package logrus + +import ( + "bytes" + "sync" +) + +var ( + bufferPool BufferPool +) + +type BufferPool interface { + Put(*bytes.Buffer) + Get() *bytes.Buffer +} + +type defaultPool struct { + pool *sync.Pool +} + +func (p *defaultPool) Put(buf *bytes.Buffer) { + p.pool.Put(buf) +} + +func (p *defaultPool) Get() *bytes.Buffer { + return p.pool.Get().(*bytes.Buffer) +} + +// SetBufferPool allows to replace the default logrus buffer pool +// to better meets the specific needs of an application. +func SetBufferPool(bp BufferPool) { + bufferPool = bp +} + +func init() { + SetBufferPool(&defaultPool{ + pool: &sync.Pool{ + New: func() interface{} { + return new(bytes.Buffer) + }, + }, + }) +} diff --git a/vendor/github.com/sirupsen/logrus/entry.go b/vendor/github.com/sirupsen/logrus/entry.go index f6e062a346..71cdbbc35d 100644 --- a/vendor/github.com/sirupsen/logrus/entry.go +++ b/vendor/github.com/sirupsen/logrus/entry.go @@ -13,7 +13,6 @@ import ( ) var ( - bufferPool *sync.Pool // qualified package name, cached at first use logrusPackage string @@ -31,12 +30,6 @@ const ( ) func init() { - bufferPool = &sync.Pool{ - New: func() interface{} { - return new(bytes.Buffer) - }, - } - // start at the bottom of the stack before the package-name cache is primed minimumCallerDepth = 1 } @@ -85,6 +78,14 @@ func NewEntry(logger *Logger) *Entry { } } +func (entry *Entry) Dup() *Entry { + data := make(Fields, len(entry.Data)) + for k, v := range entry.Data { + data[k] = v + } + return &Entry{Logger: entry.Logger, Data: data, Time: entry.Time, Context: entry.Context, err: entry.err} +} + // Returns the bytes representation of this entry from the formatter. func (entry *Entry) Bytes() ([]byte, error) { return entry.Logger.Formatter.Format(entry) @@ -130,11 +131,9 @@ func (entry *Entry) WithFields(fields Fields) *Entry { for k, v := range fields { isErrField := false if t := reflect.TypeOf(v); t != nil { - switch t.Kind() { - case reflect.Func: + switch { + case t.Kind() == reflect.Func, t.Kind() == reflect.Ptr && t.Elem().Kind() == reflect.Func: isErrField = true - case reflect.Ptr: - isErrField = t.Elem().Kind() == reflect.Func } } if isErrField { @@ -219,51 +218,66 @@ func (entry Entry) HasCaller() (has bool) { entry.Caller != nil } -// This function is not declared with a pointer value because otherwise -// race conditions will occur when using multiple goroutines -func (entry Entry) log(level Level, msg string) { +func (entry *Entry) log(level Level, msg string) { var buffer *bytes.Buffer - // Default to now, but allow users to override if they want. - // - // We don't have to worry about polluting future calls to Entry#log() - // with this assignment because this function is declared with a - // non-pointer receiver. - if entry.Time.IsZero() { - entry.Time = time.Now() - } + newEntry := entry.Dup() - entry.Level = level - entry.Message = msg - entry.Logger.mu.Lock() - if entry.Logger.ReportCaller { - entry.Caller = getCaller() + if newEntry.Time.IsZero() { + newEntry.Time = time.Now() } - entry.Logger.mu.Unlock() - entry.fireHooks() + newEntry.Level = level + newEntry.Message = msg - buffer = bufferPool.Get().(*bytes.Buffer) + newEntry.Logger.mu.Lock() + reportCaller := newEntry.Logger.ReportCaller + bufPool := newEntry.getBufferPool() + newEntry.Logger.mu.Unlock() + + if reportCaller { + newEntry.Caller = getCaller() + } + + newEntry.fireHooks() + buffer = bufPool.Get() + defer func() { + newEntry.Buffer = nil + buffer.Reset() + bufPool.Put(buffer) + }() buffer.Reset() - defer bufferPool.Put(buffer) - entry.Buffer = buffer + newEntry.Buffer = buffer - entry.write() + newEntry.write() - entry.Buffer = nil + newEntry.Buffer = nil // To avoid Entry#log() returning a value that only would make sense for // panic() to use in Entry#Panic(), we avoid the allocation by checking // directly here. if level <= PanicLevel { - panic(&entry) + panic(newEntry) + } +} + +func (entry *Entry) getBufferPool() (pool BufferPool) { + if entry.Logger.BufferPool != nil { + return entry.Logger.BufferPool } + return bufferPool } func (entry *Entry) fireHooks() { + var tmpHooks LevelHooks entry.Logger.mu.Lock() - defer entry.Logger.mu.Unlock() - err := entry.Logger.Hooks.Fire(entry.Level, entry) + tmpHooks = make(LevelHooks, len(entry.Logger.Hooks)) + for k, v := range entry.Logger.Hooks { + tmpHooks[k] = v + } + entry.Logger.mu.Unlock() + + err := tmpHooks.Fire(entry.Level, entry) if err != nil { fmt.Fprintf(os.Stderr, "Failed to fire hook: %v\n", err) } @@ -277,11 +291,14 @@ func (entry *Entry) write() { fmt.Fprintf(os.Stderr, "Failed to obtain reader, %v\n", err) return } - if _, err = entry.Logger.Out.Write(serialized); err != nil { + if _, err := entry.Logger.Out.Write(serialized); err != nil { fmt.Fprintf(os.Stderr, "Failed to write to log, %v\n", err) } } +// Log will log a message at the level given as parameter. +// Warning: using Log at Panic or Fatal level will not respectively Panic nor Exit. +// For this behaviour Entry.Panic or Entry.Fatal should be used instead. func (entry *Entry) Log(level Level, args ...interface{}) { if entry.Logger.IsLevelEnabled(level) { entry.log(level, fmt.Sprint(args...)) @@ -323,7 +340,6 @@ func (entry *Entry) Fatal(args ...interface{}) { func (entry *Entry) Panic(args ...interface{}) { entry.Log(PanicLevel, args...) - panic(fmt.Sprint(args...)) } // Entry Printf family functions diff --git a/vendor/github.com/sirupsen/logrus/exported.go b/vendor/github.com/sirupsen/logrus/exported.go index 42b04f6c80..017c30ce67 100644 --- a/vendor/github.com/sirupsen/logrus/exported.go +++ b/vendor/github.com/sirupsen/logrus/exported.go @@ -134,6 +134,51 @@ func Fatal(args ...interface{}) { std.Fatal(args...) } +// TraceFn logs a message from a func at level Trace on the standard logger. +func TraceFn(fn LogFunction) { + std.TraceFn(fn) +} + +// DebugFn logs a message from a func at level Debug on the standard logger. +func DebugFn(fn LogFunction) { + std.DebugFn(fn) +} + +// PrintFn logs a message from a func at level Info on the standard logger. +func PrintFn(fn LogFunction) { + std.PrintFn(fn) +} + +// InfoFn logs a message from a func at level Info on the standard logger. +func InfoFn(fn LogFunction) { + std.InfoFn(fn) +} + +// WarnFn logs a message from a func at level Warn on the standard logger. +func WarnFn(fn LogFunction) { + std.WarnFn(fn) +} + +// WarningFn logs a message from a func at level Warn on the standard logger. +func WarningFn(fn LogFunction) { + std.WarningFn(fn) +} + +// ErrorFn logs a message from a func at level Error on the standard logger. +func ErrorFn(fn LogFunction) { + std.ErrorFn(fn) +} + +// PanicFn logs a message from a func at level Panic on the standard logger. +func PanicFn(fn LogFunction) { + std.PanicFn(fn) +} + +// FatalFn logs a message from a func at level Fatal on the standard logger then the process will exit with status set to 1. +func FatalFn(fn LogFunction) { + std.FatalFn(fn) +} + // Tracef logs a message at level Trace on the standard logger. func Tracef(format string, args ...interface{}) { std.Tracef(format, args...) diff --git a/vendor/github.com/sirupsen/logrus/json_formatter.go b/vendor/github.com/sirupsen/logrus/json_formatter.go index ba7f237112..c96dc5636b 100644 --- a/vendor/github.com/sirupsen/logrus/json_formatter.go +++ b/vendor/github.com/sirupsen/logrus/json_formatter.go @@ -23,6 +23,9 @@ func (f FieldMap) resolve(key fieldKey) string { // JSONFormatter formats logs into parsable json type JSONFormatter struct { // TimestampFormat sets the format used for marshaling timestamps. + // The format to use is the same than for time.Format or time.Parse from the standard + // library. + // The standard Library already provides a set of predefined format. TimestampFormat string // DisableTimestamp allows disabling automatic timestamps in output @@ -118,7 +121,7 @@ func (f *JSONFormatter) Format(entry *Entry) ([]byte, error) { encoder.SetIndent("", " ") } if err := encoder.Encode(data); err != nil { - return nil, fmt.Errorf("failed to marshal fields to JSON, %v", err) + return nil, fmt.Errorf("failed to marshal fields to JSON, %w", err) } return b.Bytes(), nil diff --git a/vendor/github.com/sirupsen/logrus/logger.go b/vendor/github.com/sirupsen/logrus/logger.go index 6fdda748e4..5ff0aef6d3 100644 --- a/vendor/github.com/sirupsen/logrus/logger.go +++ b/vendor/github.com/sirupsen/logrus/logger.go @@ -9,6 +9,11 @@ import ( "time" ) +// LogFunction For big messages, it can be more efficient to pass a function +// and only call it if the log level is actually enables rather than +// generating the log message and then checking if the level is enabled +type LogFunction func() []interface{} + type Logger struct { // The logs are `io.Copy`'d to this in a mutex. It's common to set this to a // file, or leave it default which is `os.Stderr`. You can also set this to @@ -39,6 +44,9 @@ type Logger struct { entryPool sync.Pool // Function to exit the application, defaults to `os.Exit()` ExitFunc exitFunc + // The buffer pool used to format the log. If it is nil, the default global + // buffer pool will be used. + BufferPool BufferPool } type exitFunc func(int) @@ -70,7 +78,7 @@ func (mw *MutexWrap) Disable() { // // var log = &logrus.Logger{ // Out: os.Stderr, -// Formatter: new(logrus.JSONFormatter), +// Formatter: new(logrus.TextFormatter), // Hooks: make(logrus.LevelHooks), // Level: logrus.DebugLevel, // } @@ -187,6 +195,9 @@ func (logger *Logger) Panicf(format string, args ...interface{}) { logger.Logf(PanicLevel, format, args...) } +// Log will log a message at the level given as parameter. +// Warning: using Log at Panic or Fatal level will not respectively Panic nor Exit. +// For this behaviour Logger.Panic or Logger.Fatal should be used instead. func (logger *Logger) Log(level Level, args ...interface{}) { if logger.IsLevelEnabled(level) { entry := logger.newEntry() @@ -195,6 +206,14 @@ func (logger *Logger) Log(level Level, args ...interface{}) { } } +func (logger *Logger) LogFn(level Level, fn LogFunction) { + if logger.IsLevelEnabled(level) { + entry := logger.newEntry() + entry.Log(level, fn()...) + logger.releaseEntry(entry) + } +} + func (logger *Logger) Trace(args ...interface{}) { logger.Log(TraceLevel, args...) } @@ -234,6 +253,45 @@ func (logger *Logger) Panic(args ...interface{}) { logger.Log(PanicLevel, args...) } +func (logger *Logger) TraceFn(fn LogFunction) { + logger.LogFn(TraceLevel, fn) +} + +func (logger *Logger) DebugFn(fn LogFunction) { + logger.LogFn(DebugLevel, fn) +} + +func (logger *Logger) InfoFn(fn LogFunction) { + logger.LogFn(InfoLevel, fn) +} + +func (logger *Logger) PrintFn(fn LogFunction) { + entry := logger.newEntry() + entry.Print(fn()...) + logger.releaseEntry(entry) +} + +func (logger *Logger) WarnFn(fn LogFunction) { + logger.LogFn(WarnLevel, fn) +} + +func (logger *Logger) WarningFn(fn LogFunction) { + logger.WarnFn(fn) +} + +func (logger *Logger) ErrorFn(fn LogFunction) { + logger.LogFn(ErrorLevel, fn) +} + +func (logger *Logger) FatalFn(fn LogFunction) { + logger.LogFn(FatalLevel, fn) + logger.Exit(1) +} + +func (logger *Logger) PanicFn(fn LogFunction) { + logger.LogFn(PanicLevel, fn) +} + func (logger *Logger) Logln(level Level, args ...interface{}) { if logger.IsLevelEnabled(level) { entry := logger.newEntry() @@ -350,3 +408,10 @@ func (logger *Logger) ReplaceHooks(hooks LevelHooks) LevelHooks { logger.mu.Unlock() return oldHooks } + +// SetBufferPool sets the logger buffer pool. +func (logger *Logger) SetBufferPool(pool BufferPool) { + logger.mu.Lock() + defer logger.mu.Unlock() + logger.BufferPool = pool +} diff --git a/vendor/github.com/sirupsen/logrus/terminal_check_unix.go b/vendor/github.com/sirupsen/logrus/terminal_check_unix.go index cc4fe6e317..04748b8515 100644 --- a/vendor/github.com/sirupsen/logrus/terminal_check_unix.go +++ b/vendor/github.com/sirupsen/logrus/terminal_check_unix.go @@ -1,4 +1,4 @@ -// +build linux aix +// +build linux aix zos // +build !js package logrus diff --git a/vendor/github.com/sirupsen/logrus/terminal_check_windows.go b/vendor/github.com/sirupsen/logrus/terminal_check_windows.go index 572889db21..2879eb50ea 100644 --- a/vendor/github.com/sirupsen/logrus/terminal_check_windows.go +++ b/vendor/github.com/sirupsen/logrus/terminal_check_windows.go @@ -5,30 +5,23 @@ package logrus import ( "io" "os" - "syscall" - sequences "github.com/konsorten/go-windows-terminal-sequences" + "golang.org/x/sys/windows" ) -func initTerminal(w io.Writer) { - switch v := w.(type) { - case *os.File: - sequences.EnableVirtualTerminalProcessing(syscall.Handle(v.Fd()), true) - } -} - func checkIfTerminal(w io.Writer) bool { - var ret bool switch v := w.(type) { case *os.File: + handle := windows.Handle(v.Fd()) var mode uint32 - err := syscall.GetConsoleMode(syscall.Handle(v.Fd()), &mode) - ret = (err == nil) - default: - ret = false - } - if ret { - initTerminal(w) + if err := windows.GetConsoleMode(handle, &mode); err != nil { + return false + } + mode |= windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING + if err := windows.SetConsoleMode(handle, mode); err != nil { + return false + } + return true } - return ret + return false } diff --git a/vendor/github.com/sirupsen/logrus/text_formatter.go b/vendor/github.com/sirupsen/logrus/text_formatter.go index 3c28b54cab..be2c6efe5e 100644 --- a/vendor/github.com/sirupsen/logrus/text_formatter.go +++ b/vendor/github.com/sirupsen/logrus/text_formatter.go @@ -53,7 +53,10 @@ type TextFormatter struct { // the time passed since beginning of execution. FullTimestamp bool - // TimestampFormat to use for display when a full timestamp is printed + // TimestampFormat to use for display when a full timestamp is printed. + // The format to use is the same than for time.Format or time.Parse from the standard + // library. + // The standard Library already provides a set of predefined format. TimestampFormat string // The fields are sorted by default for a consistent output. For applications @@ -235,6 +238,8 @@ func (f *TextFormatter) printColored(b *bytes.Buffer, entry *Entry, keys []strin levelColor = yellow case ErrorLevel, FatalLevel, PanicLevel: levelColor = red + case InfoLevel: + levelColor = blue default: levelColor = blue } diff --git a/vendor/github.com/sirupsen/logrus/writer.go b/vendor/github.com/sirupsen/logrus/writer.go index 72e8e3a1b6..074fd4b8bd 100644 --- a/vendor/github.com/sirupsen/logrus/writer.go +++ b/vendor/github.com/sirupsen/logrus/writer.go @@ -4,6 +4,7 @@ import ( "bufio" "io" "runtime" + "strings" ) // Writer at INFO level. See WriterLevel for details. @@ -20,15 +21,18 @@ func (logger *Logger) WriterLevel(level Level) *io.PipeWriter { return NewEntry(logger).WriterLevel(level) } +// Writer returns an io.Writer that writes to the logger at the info log level func (entry *Entry) Writer() *io.PipeWriter { return entry.WriterLevel(InfoLevel) } +// WriterLevel returns an io.Writer that writes to the logger at the given log level func (entry *Entry) WriterLevel(level Level) *io.PipeWriter { reader, writer := io.Pipe() var printFunc func(args ...interface{}) + // Determine which log function to use based on the specified log level switch level { case TraceLevel: printFunc = entry.Trace @@ -48,23 +52,51 @@ func (entry *Entry) WriterLevel(level Level) *io.PipeWriter { printFunc = entry.Print } + // Start a new goroutine to scan the input and write it to the logger using the specified print function. + // It splits the input into chunks of up to 64KB to avoid buffer overflows. go entry.writerScanner(reader, printFunc) + + // Set a finalizer function to close the writer when it is garbage collected runtime.SetFinalizer(writer, writerFinalizer) return writer } +// writerScanner scans the input from the reader and writes it to the logger func (entry *Entry) writerScanner(reader *io.PipeReader, printFunc func(args ...interface{})) { scanner := bufio.NewScanner(reader) + + // Set the buffer size to the maximum token size to avoid buffer overflows + scanner.Buffer(make([]byte, bufio.MaxScanTokenSize), bufio.MaxScanTokenSize) + + // Define a split function to split the input into chunks of up to 64KB + chunkSize := bufio.MaxScanTokenSize // 64KB + splitFunc := func(data []byte, atEOF bool) (int, []byte, error) { + if len(data) >= chunkSize { + return chunkSize, data[:chunkSize], nil + } + + return bufio.ScanLines(data, atEOF) + } + + // Use the custom split function to split the input + scanner.Split(splitFunc) + + // Scan the input and write it to the logger using the specified print function for scanner.Scan() { - printFunc(scanner.Text()) + printFunc(strings.TrimRight(scanner.Text(), "\r\n")) } + + // If there was an error while scanning the input, log an error if err := scanner.Err(); err != nil { entry.Errorf("Error while reading from Writer: %s", err) } + + // Close the reader when we are done reader.Close() } +// WriterFinalizer is a finalizer function that closes then given writer when it is garbage collected func writerFinalizer(writer *io.PipeWriter) { writer.Close() } diff --git a/vendor/github.com/spf13/cobra/.golangci.yml b/vendor/github.com/spf13/cobra/.golangci.yml index 0d6e61793a..2578d94b5e 100644 --- a/vendor/github.com/spf13/cobra/.golangci.yml +++ b/vendor/github.com/spf13/cobra/.golangci.yml @@ -1,3 +1,17 @@ +# Copyright 2013-2023 The Cobra Authors +# +# 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. + run: deadline: 5m diff --git a/vendor/github.com/spf13/cobra/.travis.yml b/vendor/github.com/spf13/cobra/.travis.yml deleted file mode 100644 index e0a3b50043..0000000000 --- a/vendor/github.com/spf13/cobra/.travis.yml +++ /dev/null @@ -1,28 +0,0 @@ -language: go - -stages: - - test - - build - -go: - - 1.12.x - - 1.13.x - - tip - -env: GO111MODULE=on - -before_install: - - go get -u github.com/kyoh86/richgo - - go get -u github.com/mitchellh/gox - - curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin latest - -matrix: - allow_failures: - - go: tip - include: - - stage: build - go: 1.13.x - script: make cobra_generator - -script: - - make test diff --git a/vendor/github.com/spf13/cobra/CHANGELOG.md b/vendor/github.com/spf13/cobra/CHANGELOG.md deleted file mode 100644 index 8a23b4f851..0000000000 --- a/vendor/github.com/spf13/cobra/CHANGELOG.md +++ /dev/null @@ -1,51 +0,0 @@ -# Cobra Changelog - -## v1.1.3 - -* **Fix:** release-branch.cobra1.1 only: Revert "Deprecate Go < 1.14" to maintain backward compatibility - -## v1.1.2 - -### Notable Changes - -* Bump license year to 2021 in golden files (#1309) @Bowbaq -* Enhance PowerShell completion with custom comp (#1208) @Luap99 -* Update gopkg.in/yaml.v2 to v2.4.0: The previous breaking change in yaml.v2 v2.3.0 has been reverted, see go-yaml/yaml#670 -* Documentation readability improvements (#1228 etc.) @zaataylor etc. -* Use golangci-lint: Repair warnings and errors resulting from linting (#1044) @umarcor - -## v1.1.1 - -* **Fix:** yaml.v2 2.3.0 contained a unintended breaking change. This release reverts to yaml.v2 v2.2.8 which has recent critical CVE fixes, but does not have the breaking changes. See https://github.com/spf13/cobra/pull/1259 for context. -* **Fix:** correct internal formatting for go-md2man v2 (which caused man page generation to be broken). See https://github.com/spf13/cobra/issues/1049 for context. - -## v1.1.0 - -### Notable Changes - -* Extend Go completions and revamp zsh comp (#1070) -* Fix man page doc generation - no auto generated tag when `cmd.DisableAutoGenTag = true` (#1104) @jpmcb -* Add completion for help command (#1136) -* Complete subcommands when TraverseChildren is set (#1171) -* Fix stderr printing functions (#894) -* fix: fish output redirection (#1247) - -## v1.0.0 - -Announcing v1.0.0 of Cobra. 🎉 - -### Notable Changes -* Fish completion (including support for Go custom completion) @marckhouzam -* API (urgent): Rename BashCompDirectives to ShellCompDirectives @marckhouzam -* Remove/replace SetOutput on Command - deprecated @jpmcb -* add support for autolabel stale PR @xchapter7x -* Add Labeler Actions @xchapter7x -* Custom completions coded in Go (instead of Bash) @marckhouzam -* Partial Revert of #922 @jharshman -* Add Makefile to project @jharshman -* Correct documentation for InOrStdin @desponda -* Apply formatting to templates @jharshman -* Revert change so help is printed on stdout again @marckhouzam -* Update md2man to v2.0.0 @pdf -* update viper to v1.4.0 @umarcor -* Update cmd/root.go example in README.md @jharshman diff --git a/vendor/github.com/spf13/cobra/MAINTAINERS b/vendor/github.com/spf13/cobra/MAINTAINERS new file mode 100644 index 0000000000..4c5ac3dd99 --- /dev/null +++ b/vendor/github.com/spf13/cobra/MAINTAINERS @@ -0,0 +1,13 @@ +maintainers: +- spf13 +- johnSchnake +- jpmcb +- marckhouzam +inactive: +- anthonyfok +- bep +- bogem +- broady +- eparis +- jharshman +- wfernandes diff --git a/vendor/github.com/spf13/cobra/Makefile b/vendor/github.com/spf13/cobra/Makefile index 472c73bf16..0da8d7aa08 100644 --- a/vendor/github.com/spf13/cobra/Makefile +++ b/vendor/github.com/spf13/cobra/Makefile @@ -5,15 +5,11 @@ ifeq (, $(shell which golangci-lint)) $(warning "could not find golangci-lint in $(PATH), run: curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh") endif -ifeq (, $(shell which richgo)) -$(warning "could not find richgo in $(PATH), run: go get github.com/kyoh86/richgo") -endif - -.PHONY: fmt lint test cobra_generator install_deps clean +.PHONY: fmt lint test install_deps clean default: all -all: fmt test cobra_generator +all: fmt test fmt: $(info ******************** checking formatting ********************) @@ -23,14 +19,13 @@ lint: $(info ******************** running lint tools ********************) golangci-lint run -v -test: install_deps lint +test: install_deps $(info ******************** running tests ********************) - richgo test -v ./... + go test -v ./... -cobra_generator: install_deps - $(info ******************** building generator ********************) - mkdir -p $(BIN) - make -C cobra all +richtest: install_deps + $(info ******************** running tests with kyoh86/richgo ********************) + richgo test -v ./... install_deps: $(info ******************** downloading dependencies ********************) diff --git a/vendor/github.com/spf13/cobra/README.md b/vendor/github.com/spf13/cobra/README.md index a1b13ddda6..592c0b8ab0 100644 --- a/vendor/github.com/spf13/cobra/README.md +++ b/vendor/github.com/spf13/cobra/README.md @@ -1,61 +1,35 @@ -![cobra logo](https://cloud.githubusercontent.com/assets/173412/10886352/ad566232-814f-11e5-9cd0-aa101788c117.png) +![cobra logo](assets/CobraMain.png) -Cobra is both a library for creating powerful modern CLI applications as well as a program to generate applications and command files. +Cobra is a library for creating powerful modern CLI applications. -Cobra is used in many Go projects such as [Kubernetes](http://kubernetes.io/), -[Hugo](https://gohugo.io), and [Github CLI](https://github.com/cli/cli) to +Cobra is used in many Go projects such as [Kubernetes](https://kubernetes.io/), +[Hugo](https://gohugo.io), and [GitHub CLI](https://github.com/cli/cli) to name a few. [This list](./projects_using_cobra.md) contains a more extensive list of projects using Cobra. -[![](https://img.shields.io/github/workflow/status/spf13/cobra/Test?longCache=tru&label=Test&logo=github%20actions&logoColor=fff)](https://github.com/spf13/cobra/actions?query=workflow%3ATest) -[![Build Status](https://travis-ci.org/spf13/cobra.svg "Travis CI status")](https://travis-ci.org/spf13/cobra) -[![GoDoc](https://godoc.org/github.com/spf13/cobra?status.svg)](https://godoc.org/github.com/spf13/cobra) +[![](https://img.shields.io/github/actions/workflow/status/spf13/cobra/test.yml?branch=main&longCache=true&label=Test&logo=github%20actions&logoColor=fff)](https://github.com/spf13/cobra/actions?query=workflow%3ATest) +[![Go Reference](https://pkg.go.dev/badge/github.com/spf13/cobra.svg)](https://pkg.go.dev/github.com/spf13/cobra) [![Go Report Card](https://goreportcard.com/badge/github.com/spf13/cobra)](https://goreportcard.com/report/github.com/spf13/cobra) [![Slack](https://img.shields.io/badge/Slack-cobra-brightgreen)](https://gophers.slack.com/archives/CD3LP1199) -# Table of Contents - -- [Overview](#overview) -- [Concepts](#concepts) - * [Commands](#commands) - * [Flags](#flags) -- [Installing](#installing) -- [Getting Started](#getting-started) - * [Using the Cobra Generator](#using-the-cobra-generator) - * [Using the Cobra Library](#using-the-cobra-library) - * [Working with Flags](#working-with-flags) - * [Positional and Custom Arguments](#positional-and-custom-arguments) - * [Example](#example) - * [Help Command](#help-command) - * [Usage Message](#usage-message) - * [PreRun and PostRun Hooks](#prerun-and-postrun-hooks) - * [Suggestions when "unknown command" happens](#suggestions-when-unknown-command-happens) - * [Generating documentation for your command](#generating-documentation-for-your-command) - * [Generating shell completions](#generating-shell-completions) -- [Contributing](CONTRIBUTING.md) -- [License](#license) - # Overview Cobra is a library providing a simple interface to create powerful modern CLI interfaces similar to git & go tools. -Cobra is also an application that will generate your application scaffolding to rapidly -develop a Cobra-based application. - Cobra provides: * Easy subcommand-based CLIs: `app server`, `app fetch`, etc. * Fully POSIX-compliant flags (including short & long versions) * Nested subcommands * Global, local and cascading flags -* Easy generation of applications & commands with `cobra init appname` & `cobra add cmdname` * Intelligent suggestions (`app srver`... did you mean `app server`?) * Automatic help generation for commands and flags +* Grouping help for subcommands * Automatic help flag recognition of `-h`, `--help`, etc. * Automatically generated shell autocomplete for your application (bash, zsh, fish, powershell) * Automatically generated man pages for your application * Command aliases so you can change things without breaking them * The flexibility to define your own help, usage, etc. -* Optional tight integration with [viper](http://github.com/spf13/viper) for 12-factor apps +* Optional seamless integration with [viper](https://github.com/spf13/viper) for 12-factor apps # Concepts @@ -67,9 +41,9 @@ The best applications read like sentences when used, and as a result, users intuitively know how to interact with them. The pattern to follow is -`APPNAME VERB NOUN --ADJECTIVE.` +`APPNAME VERB NOUN --ADJECTIVE` or -`APPNAME COMMAND ARG --FLAG` +`APPNAME COMMAND ARG --FLAG`. A few good real world examples may better illustrate this point. @@ -89,7 +63,7 @@ have children commands and optionally run an action. In the example above, 'server' is the command. -[More about cobra.Command](https://godoc.org/github.com/spf13/cobra#Command) +[More about cobra.Command](https://pkg.go.dev/github.com/spf13/cobra#Command) ## Flags @@ -106,654 +80,32 @@ which maintains the same interface while adding POSIX compliance. # Installing Using Cobra is easy. First, use `go get` to install the latest version -of the library. This command will install the `cobra` generator executable -along with the library and its dependencies: - - go get -u github.com/spf13/cobra - -Next, include Cobra in your application: - -```go -import "github.com/spf13/cobra" -``` - -# Getting Started - -While you are welcome to provide your own organization, typically a Cobra-based -application will follow the following organizational structure: - -``` - ▾ appName/ - ▾ cmd/ - add.go - your.go - commands.go - here.go - main.go -``` - -In a Cobra app, typically the main.go file is very bare. It serves one purpose: initializing Cobra. - -```go -package main - -import ( - "{pathToYourApp}/cmd" -) - -func main() { - cmd.Execute() -} -``` - -## Using the Cobra Generator - -Cobra provides its own program that will create your application and add any -commands you want. It's the easiest way to incorporate Cobra into your application. - -[Here](https://github.com/spf13/cobra/blob/master/cobra/README.md) you can find more information about it. - -## Using the Cobra Library - -To manually implement Cobra you need to create a bare main.go file and a rootCmd file. -You will optionally provide additional commands as you see fit. - -### Create rootCmd - -Cobra doesn't require any special constructors. Simply create your commands. - -Ideally you place this in app/cmd/root.go: - -```go -var rootCmd = &cobra.Command{ - Use: "hugo", - Short: "Hugo is a very fast static site generator", - Long: `A Fast and Flexible Static Site Generator built with - love by spf13 and friends in Go. - Complete documentation is available at http://hugo.spf13.com`, - Run: func(cmd *cobra.Command, args []string) { - // Do Stuff Here - }, -} - -func Execute() { - if err := rootCmd.Execute(); err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } -} -``` - -You will additionally define flags and handle configuration in your init() function. - -For example cmd/root.go: - -```go -package cmd - -import ( - "fmt" - "os" - - homedir "github.com/mitchellh/go-homedir" - "github.com/spf13/cobra" - "github.com/spf13/viper" -) - -var ( - // Used for flags. - cfgFile string - userLicense string - - rootCmd = &cobra.Command{ - Use: "cobra", - Short: "A generator for Cobra based Applications", - Long: `Cobra is a CLI library for Go that empowers applications. -This application is a tool to generate the needed files -to quickly create a Cobra application.`, - } -) - -// Execute executes the root command. -func Execute() error { - return rootCmd.Execute() -} - -func init() { - cobra.OnInitialize(initConfig) - - rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.cobra.yaml)") - rootCmd.PersistentFlags().StringP("author", "a", "YOUR NAME", "author name for copyright attribution") - rootCmd.PersistentFlags().StringVarP(&userLicense, "license", "l", "", "name of license for the project") - rootCmd.PersistentFlags().Bool("viper", true, "use Viper for configuration") - viper.BindPFlag("author", rootCmd.PersistentFlags().Lookup("author")) - viper.BindPFlag("useViper", rootCmd.PersistentFlags().Lookup("viper")) - viper.SetDefault("author", "NAME HERE ") - viper.SetDefault("license", "apache") - - rootCmd.AddCommand(addCmd) - rootCmd.AddCommand(initCmd) -} - -func initConfig() { - if cfgFile != "" { - // Use config file from the flag. - viper.SetConfigFile(cfgFile) - } else { - // Find home directory. - home, err := homedir.Dir() - cobra.CheckErr(err) - - // Search config in home directory with name ".cobra" (without extension). - viper.AddConfigPath(home) - viper.SetConfigName(".cobra") - } - - viper.AutomaticEnv() - - if err := viper.ReadInConfig(); err == nil { - fmt.Println("Using config file:", viper.ConfigFileUsed()) - } -} -``` - -### Create your main.go - -With the root command you need to have your main function execute it. -Execute should be run on the root for clarity, though it can be called on any command. - -In a Cobra app, typically the main.go file is very bare. It serves one purpose: to initialize Cobra. - -```go -package main - -import ( - "{pathToYourApp}/cmd" -) - -func main() { - cmd.Execute() -} -``` - -### Create additional commands - -Additional commands can be defined and typically are each given their own file -inside of the cmd/ directory. - -If you wanted to create a version command you would create cmd/version.go and -populate it with the following: - -```go -package cmd - -import ( - "fmt" - - "github.com/spf13/cobra" -) - -func init() { - rootCmd.AddCommand(versionCmd) -} - -var versionCmd = &cobra.Command{ - Use: "version", - Short: "Print the version number of Hugo", - Long: `All software has versions. This is Hugo's`, - Run: func(cmd *cobra.Command, args []string) { - fmt.Println("Hugo Static Site Generator v0.9 -- HEAD") - }, -} -``` - -### Returning and handling errors - -If you wish to return an error to the caller of a command, `RunE` can be used. - -```go -package cmd - -import ( - "fmt" - - "github.com/spf13/cobra" -) - -func init() { - rootCmd.AddCommand(tryCmd) -} - -var tryCmd = &cobra.Command{ - Use: "try", - Short: "Try and possibly fail at something", - RunE: func(cmd *cobra.Command, args []string) error { - if err := someFunc(); err != nil { - return err - } - return nil - }, -} -``` - -The error can then be caught at the execute function call. - -## Working with Flags - -Flags provide modifiers to control how the action command operates. - -### Assign flags to a command - -Since the flags are defined and used in different locations, we need to -define a variable outside with the correct scope to assign the flag to -work with. - -```go -var Verbose bool -var Source string -``` - -There are two different approaches to assign a flag. - -### Persistent Flags - -A flag can be 'persistent', meaning that this flag will be available to the -command it's assigned to as well as every command under that command. For -global flags, assign a flag as a persistent flag on the root. - -```go -rootCmd.PersistentFlags().BoolVarP(&Verbose, "verbose", "v", false, "verbose output") -``` - -### Local Flags - -A flag can also be assigned locally, which will only apply to that specific command. - -```go -localCmd.Flags().StringVarP(&Source, "source", "s", "", "Source directory to read from") -``` - -### Local Flag on Parent Commands - -By default, Cobra only parses local flags on the target command, and any local flags on -parent commands are ignored. By enabling `Command.TraverseChildren`, Cobra will -parse local flags on each command before executing the target command. - -```go -command := cobra.Command{ - Use: "print [OPTIONS] [COMMANDS]", - TraverseChildren: true, -} -``` - -### Bind Flags with Config - -You can also bind your flags with [viper](https://github.com/spf13/viper): -```go -var author string +of the library. -func init() { - rootCmd.PersistentFlags().StringVar(&author, "author", "YOUR NAME", "Author name for copyright attribution") - viper.BindPFlag("author", rootCmd.PersistentFlags().Lookup("author")) -} ``` - -In this example, the persistent flag `author` is bound with `viper`. -**Note**: the variable `author` will not be set to the value from config, -when the `--author` flag is not provided by user. - -More in [viper documentation](https://github.com/spf13/viper#working-with-flags). - -### Required flags - -Flags are optional by default. If instead you wish your command to report an error -when a flag has not been set, mark it as required: -```go -rootCmd.Flags().StringVarP(&Region, "region", "r", "", "AWS region (required)") -rootCmd.MarkFlagRequired("region") -``` - -Or, for persistent flags: -```go -rootCmd.PersistentFlags().StringVarP(&Region, "region", "r", "", "AWS region (required)") -rootCmd.MarkPersistentFlagRequired("region") -``` - -## Positional and Custom Arguments - -Validation of positional arguments can be specified using the `Args` field -of `Command`. - -The following validators are built in: - -- `NoArgs` - the command will report an error if there are any positional args. -- `ArbitraryArgs` - the command will accept any args. -- `OnlyValidArgs` - the command will report an error if there are any positional args that are not in the `ValidArgs` field of `Command`. -- `MinimumNArgs(int)` - the command will report an error if there are not at least N positional args. -- `MaximumNArgs(int)` - the command will report an error if there are more than N positional args. -- `ExactArgs(int)` - the command will report an error if there are not exactly N positional args. -- `ExactValidArgs(int)` - the command will report an error if there are not exactly N positional args OR if there are any positional args that are not in the `ValidArgs` field of `Command` -- `RangeArgs(min, max)` - the command will report an error if the number of args is not between the minimum and maximum number of expected args. - -An example of setting the custom validator: - -```go -var cmd = &cobra.Command{ - Short: "hello", - Args: func(cmd *cobra.Command, args []string) error { - if len(args) < 1 { - return errors.New("requires a color argument") - } - if myapp.IsValidColor(args[0]) { - return nil - } - return fmt.Errorf("invalid color specified: %s", args[0]) - }, - Run: func(cmd *cobra.Command, args []string) { - fmt.Println("Hello, World!") - }, -} -``` - -## Example - -In the example below, we have defined three commands. Two are at the top level -and one (cmdTimes) is a child of one of the top commands. In this case the root -is not executable, meaning that a subcommand is required. This is accomplished -by not providing a 'Run' for the 'rootCmd'. - -We have only defined one flag for a single command. - -More documentation about flags is available at https://github.com/spf13/pflag - -```go -package main - -import ( - "fmt" - "strings" - - "github.com/spf13/cobra" -) - -func main() { - var echoTimes int - - var cmdPrint = &cobra.Command{ - Use: "print [string to print]", - Short: "Print anything to the screen", - Long: `print is for printing anything back to the screen. -For many years people have printed back to the screen.`, - Args: cobra.MinimumNArgs(1), - Run: func(cmd *cobra.Command, args []string) { - fmt.Println("Print: " + strings.Join(args, " ")) - }, - } - - var cmdEcho = &cobra.Command{ - Use: "echo [string to echo]", - Short: "Echo anything to the screen", - Long: `echo is for echoing anything back. -Echo works a lot like print, except it has a child command.`, - Args: cobra.MinimumNArgs(1), - Run: func(cmd *cobra.Command, args []string) { - fmt.Println("Echo: " + strings.Join(args, " ")) - }, - } - - var cmdTimes = &cobra.Command{ - Use: "times [string to echo]", - Short: "Echo anything to the screen more times", - Long: `echo things multiple times back to the user by providing -a count and a string.`, - Args: cobra.MinimumNArgs(1), - Run: func(cmd *cobra.Command, args []string) { - for i := 0; i < echoTimes; i++ { - fmt.Println("Echo: " + strings.Join(args, " ")) - } - }, - } - - cmdTimes.Flags().IntVarP(&echoTimes, "times", "t", 1, "times to echo the input") - - var rootCmd = &cobra.Command{Use: "app"} - rootCmd.AddCommand(cmdPrint, cmdEcho) - cmdEcho.AddCommand(cmdTimes) - rootCmd.Execute() -} -``` - -For a more complete example of a larger application, please checkout [Hugo](http://gohugo.io/). - -## Help Command - -Cobra automatically adds a help command to your application when you have subcommands. -This will be called when a user runs 'app help'. Additionally, help will also -support all other commands as input. Say, for instance, you have a command called -'create' without any additional configuration; Cobra will work when 'app help -create' is called. Every command will automatically have the '--help' flag added. - -### Example - -The following output is automatically generated by Cobra. Nothing beyond the -command and flag definitions are needed. - - $ cobra help - - Cobra is a CLI library for Go that empowers applications. - This application is a tool to generate the needed files - to quickly create a Cobra application. - - Usage: - cobra [command] - - Available Commands: - add Add a command to a Cobra Application - help Help about any command - init Initialize a Cobra Application - - Flags: - -a, --author string author name for copyright attribution (default "YOUR NAME") - --config string config file (default is $HOME/.cobra.yaml) - -h, --help help for cobra - -l, --license string name of license for the project - --viper use Viper for configuration (default true) - - Use "cobra [command] --help" for more information about a command. - - -Help is just a command like any other. There is no special logic or behavior -around it. In fact, you can provide your own if you want. - -### Defining your own help - -You can provide your own Help command or your own template for the default command to use -with following functions: - -```go -cmd.SetHelpCommand(cmd *Command) -cmd.SetHelpFunc(f func(*Command, []string)) -cmd.SetHelpTemplate(s string) +go get -u github.com/spf13/cobra@latest ``` -The latter two will also apply to any children commands. - -## Usage Message - -When the user provides an invalid flag or invalid command, Cobra responds by -showing the user the 'usage'. - -### Example -You may recognize this from the help above. That's because the default help -embeds the usage as part of its output. - - $ cobra --invalid - Error: unknown flag: --invalid - Usage: - cobra [command] - - Available Commands: - add Add a command to a Cobra Application - help Help about any command - init Initialize a Cobra Application - - Flags: - -a, --author string author name for copyright attribution (default "YOUR NAME") - --config string config file (default is $HOME/.cobra.yaml) - -h, --help help for cobra - -l, --license string name of license for the project - --viper use Viper for configuration (default true) - - Use "cobra [command] --help" for more information about a command. - -### Defining your own usage -You can provide your own usage function or template for Cobra to use. -Like help, the function and template are overridable through public methods: - -```go -cmd.SetUsageFunc(f func(*Command) error) -cmd.SetUsageTemplate(s string) -``` - -## Version Flag - -Cobra adds a top-level '--version' flag if the Version field is set on the root command. -Running an application with the '--version' flag will print the version to stdout using -the version template. The template can be customized using the -`cmd.SetVersionTemplate(s string)` function. - -## PreRun and PostRun Hooks - -It is possible to run functions before or after the main `Run` function of your command. The `PersistentPreRun` and `PreRun` functions will be executed before `Run`. `PersistentPostRun` and `PostRun` will be executed after `Run`. The `Persistent*Run` functions will be inherited by children if they do not declare their own. These functions are run in the following order: - -- `PersistentPreRun` -- `PreRun` -- `Run` -- `PostRun` -- `PersistentPostRun` - -An example of two commands which use all of these features is below. When the subcommand is executed, it will run the root command's `PersistentPreRun` but not the root command's `PersistentPostRun`: - -```go -package main - -import ( - "fmt" - - "github.com/spf13/cobra" -) - -func main() { - - var rootCmd = &cobra.Command{ - Use: "root [sub]", - Short: "My root command", - PersistentPreRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside rootCmd PersistentPreRun with args: %v\n", args) - }, - PreRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside rootCmd PreRun with args: %v\n", args) - }, - Run: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside rootCmd Run with args: %v\n", args) - }, - PostRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside rootCmd PostRun with args: %v\n", args) - }, - PersistentPostRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside rootCmd PersistentPostRun with args: %v\n", args) - }, - } - - var subCmd = &cobra.Command{ - Use: "sub [no options!]", - Short: "My subcommand", - PreRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside subCmd PreRun with args: %v\n", args) - }, - Run: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside subCmd Run with args: %v\n", args) - }, - PostRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside subCmd PostRun with args: %v\n", args) - }, - PersistentPostRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside subCmd PersistentPostRun with args: %v\n", args) - }, - } - - rootCmd.AddCommand(subCmd) - - rootCmd.SetArgs([]string{""}) - rootCmd.Execute() - fmt.Println() - rootCmd.SetArgs([]string{"sub", "arg1", "arg2"}) - rootCmd.Execute() -} -``` - -Output: -``` -Inside rootCmd PersistentPreRun with args: [] -Inside rootCmd PreRun with args: [] -Inside rootCmd Run with args: [] -Inside rootCmd PostRun with args: [] -Inside rootCmd PersistentPostRun with args: [] - -Inside rootCmd PersistentPreRun with args: [arg1 arg2] -Inside subCmd PreRun with args: [arg1 arg2] -Inside subCmd Run with args: [arg1 arg2] -Inside subCmd PostRun with args: [arg1 arg2] -Inside subCmd PersistentPostRun with args: [arg1 arg2] -``` - -## Suggestions when "unknown command" happens - -Cobra will print automatic suggestions when "unknown command" errors happen. This allows Cobra to behave similarly to the `git` command when a typo happens. For example: - -``` -$ hugo srever -Error: unknown command "srever" for "hugo" - -Did you mean this? - server - -Run 'hugo --help' for usage. -``` - -Suggestions are automatic based on every subcommand registered and use an implementation of [Levenshtein distance](http://en.wikipedia.org/wiki/Levenshtein_distance). Every registered command that matches a minimum distance of 2 (ignoring case) will be displayed as a suggestion. - -If you need to disable suggestions or tweak the string distance in your command, use: +Next, include Cobra in your application: ```go -command.DisableSuggestions = true +import "github.com/spf13/cobra" ``` -or - -```go -command.SuggestionsMinimumDistance = 1 -``` +# Usage +`cobra-cli` is a command line program to generate cobra applications and command files. +It will bootstrap your application scaffolding to rapidly +develop a Cobra-based application. It is the easiest way to incorporate Cobra into your application. -You can also explicitly set names for which a given command will be suggested using the `SuggestFor` attribute. This allows suggestions for strings that are not close in terms of string distance, but makes sense in your set of commands and for some which you don't want aliases. Example: +It can be installed by running: ``` -$ kubectl remove -Error: unknown command "remove" for "kubectl" - -Did you mean this? - delete - -Run 'kubectl help' for usage. +go install github.com/spf13/cobra-cli@latest ``` -## Generating documentation for your command - -Cobra can generate documentation based on subcommands, flags, etc. Read more about it in the [docs generation documentation](doc/README.md). - -## Generating shell completions +For complete details on using the Cobra-CLI generator, please read [The Cobra Generator README](https://github.com/spf13/cobra-cli/blob/main/README.md) -Cobra can generate a shell-completion file for the following shells: bash, zsh, fish, PowerShell. If you add more information to your commands, these completions can be amazingly powerful and flexible. Read more about it in [Shell Completions](shell_completions.md). +For complete details on using the Cobra library, please read the [The Cobra User Guide](user_guide.md). # License diff --git a/vendor/github.com/spf13/cobra/active_help.go b/vendor/github.com/spf13/cobra/active_help.go new file mode 100644 index 0000000000..2d0239437a --- /dev/null +++ b/vendor/github.com/spf13/cobra/active_help.go @@ -0,0 +1,63 @@ +// Copyright 2013-2023 The Cobra Authors +// +// 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 cobra + +import ( + "fmt" + "os" + "strings" +) + +const ( + activeHelpMarker = "_activeHelp_ " + // The below values should not be changed: programs will be using them explicitly + // in their user documentation, and users will be using them explicitly. + activeHelpEnvVarSuffix = "_ACTIVE_HELP" + activeHelpGlobalEnvVar = "COBRA_ACTIVE_HELP" + activeHelpGlobalDisable = "0" +) + +// AppendActiveHelp adds the specified string to the specified array to be used as ActiveHelp. +// Such strings will be processed by the completion script and will be shown as ActiveHelp +// to the user. +// The array parameter should be the array that will contain the completions. +// This function can be called multiple times before and/or after completions are added to +// the array. Each time this function is called with the same array, the new +// ActiveHelp line will be shown below the previous ones when completion is triggered. +func AppendActiveHelp(compArray []string, activeHelpStr string) []string { + return append(compArray, fmt.Sprintf("%s%s", activeHelpMarker, activeHelpStr)) +} + +// GetActiveHelpConfig returns the value of the ActiveHelp environment variable +// _ACTIVE_HELP where is the name of the root command in upper +// case, with all - replaced by _. +// It will always return "0" if the global environment variable COBRA_ACTIVE_HELP +// is set to "0". +func GetActiveHelpConfig(cmd *Command) string { + activeHelpCfg := os.Getenv(activeHelpGlobalEnvVar) + if activeHelpCfg != activeHelpGlobalDisable { + activeHelpCfg = os.Getenv(activeHelpEnvVar(cmd.Root().Name())) + } + return activeHelpCfg +} + +// activeHelpEnvVar returns the name of the program-specific ActiveHelp environment +// variable. It has the format _ACTIVE_HELP where is the name of the +// root command in upper case, with all - replaced by _. +func activeHelpEnvVar(name string) string { + // This format should not be changed: users will be using it explicitly. + activeHelpEnvVar := strings.ToUpper(fmt.Sprintf("%s%s", name, activeHelpEnvVarSuffix)) + return strings.ReplaceAll(activeHelpEnvVar, "-", "_") +} diff --git a/vendor/github.com/spf13/cobra/active_help.md b/vendor/github.com/spf13/cobra/active_help.md new file mode 100644 index 0000000000..5e7f59af38 --- /dev/null +++ b/vendor/github.com/spf13/cobra/active_help.md @@ -0,0 +1,157 @@ +# Active Help + +Active Help is a framework provided by Cobra which allows a program to define messages (hints, warnings, etc) that will be printed during program usage. It aims to make it easier for your users to learn how to use your program. If configured by the program, Active Help is printed when the user triggers shell completion. + +For example, +``` +bash-5.1$ helm repo add [tab] +You must choose a name for the repo you are adding. + +bash-5.1$ bin/helm package [tab] +Please specify the path to the chart to package + +bash-5.1$ bin/helm package [tab][tab] +bin/ internal/ scripts/ pkg/ testdata/ +``` + +**Hint**: A good place to use Active Help messages is when the normal completion system does not provide any suggestions. In such cases, Active Help nicely supplements the normal shell completions to guide the user in knowing what is expected by the program. +## Supported shells + +Active Help is currently only supported for the following shells: +- Bash (using [bash completion V2](shell_completions.md#bash-completion-v2) only). Note that bash 4.4 or higher is required for the prompt to appear when an Active Help message is printed. +- Zsh + +## Adding Active Help messages + +As Active Help uses the shell completion system, the implementation of Active Help messages is done by enhancing custom dynamic completions. If you are not familiar with dynamic completions, please refer to [Shell Completions](shell_completions.md). + +Adding Active Help is done through the use of the `cobra.AppendActiveHelp(...)` function, where the program repeatedly adds Active Help messages to the list of completions. Keep reading for details. + +### Active Help for nouns + +Adding Active Help when completing a noun is done within the `ValidArgsFunction(...)` of a command. Please notice the use of `cobra.AppendActiveHelp(...)` in the following example: + +```go +cmd := &cobra.Command{ + Use: "add [NAME] [URL]", + Short: "add a chart repository", + Args: require.ExactArgs(2), + RunE: func(cmd *cobra.Command, args []string) error { + return addRepo(args) + }, + ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { + var comps []string + if len(args) == 0 { + comps = cobra.AppendActiveHelp(comps, "You must choose a name for the repo you are adding") + } else if len(args) == 1 { + comps = cobra.AppendActiveHelp(comps, "You must specify the URL for the repo you are adding") + } else { + comps = cobra.AppendActiveHelp(comps, "This command does not take any more arguments") + } + return comps, cobra.ShellCompDirectiveNoFileComp + }, +} +``` +The example above defines the completions (none, in this specific example) as well as the Active Help messages for the `helm repo add` command. It yields the following behavior: +``` +bash-5.1$ helm repo add [tab] +You must choose a name for the repo you are adding + +bash-5.1$ helm repo add grafana [tab] +You must specify the URL for the repo you are adding + +bash-5.1$ helm repo add grafana https://grafana.github.io/helm-charts [tab] +This command does not take any more arguments +``` +**Hint**: As can be seen in the above example, a good place to use Active Help messages is when the normal completion system does not provide any suggestions. In such cases, Active Help nicely supplements the normal shell completions. + +### Active Help for flags + +Providing Active Help for flags is done in the same fashion as for nouns, but using the completion function registered for the flag. For example: +```go +_ = cmd.RegisterFlagCompletionFunc("version", func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { + if len(args) != 2 { + return cobra.AppendActiveHelp(nil, "You must first specify the chart to install before the --version flag can be completed"), cobra.ShellCompDirectiveNoFileComp + } + return compVersionFlag(args[1], toComplete) + }) +``` +The example above prints an Active Help message when not enough information was given by the user to complete the `--version` flag. +``` +bash-5.1$ bin/helm install myrelease --version 2.0.[tab] +You must first specify the chart to install before the --version flag can be completed + +bash-5.1$ bin/helm install myrelease bitnami/solr --version 2.0.[tab][tab] +2.0.1 2.0.2 2.0.3 +``` + +## User control of Active Help + +You may want to allow your users to disable Active Help or choose between different levels of Active Help. It is entirely up to the program to define the type of configurability of Active Help that it wants to offer, if any. +Allowing to configure Active Help is entirely optional; you can use Active Help in your program without doing anything about Active Help configuration. + +The way to configure Active Help is to use the program's Active Help environment +variable. That variable is named `_ACTIVE_HELP` where `` is the name of your +program in uppercase with any `-` replaced by an `_`. The variable should be set by the user to whatever +Active Help configuration values are supported by the program. + +For example, say `helm` has chosen to support three levels for Active Help: `on`, `off`, `local`. Then a user +would set the desired behavior to `local` by doing `export HELM_ACTIVE_HELP=local` in their shell. + +For simplicity, when in `cmd.ValidArgsFunction(...)` or a flag's completion function, the program should read the +Active Help configuration using the `cobra.GetActiveHelpConfig(cmd)` function and select what Active Help messages +should or should not be added (instead of reading the environment variable directly). + +For example: +```go +ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { + activeHelpLevel := cobra.GetActiveHelpConfig(cmd) + + var comps []string + if len(args) == 0 { + if activeHelpLevel != "off" { + comps = cobra.AppendActiveHelp(comps, "You must choose a name for the repo you are adding") + } + } else if len(args) == 1 { + if activeHelpLevel != "off" { + comps = cobra.AppendActiveHelp(comps, "You must specify the URL for the repo you are adding") + } + } else { + if activeHelpLevel == "local" { + comps = cobra.AppendActiveHelp(comps, "This command does not take any more arguments") + } + } + return comps, cobra.ShellCompDirectiveNoFileComp +}, +``` +**Note 1**: If the `_ACTIVE_HELP` environment variable is set to the string "0", Cobra will automatically disable all Active Help output (even if some output was specified by the program using the `cobra.AppendActiveHelp(...)` function). Using "0" can simplify your code in situations where you want to blindly disable Active Help without having to call `cobra.GetActiveHelpConfig(cmd)` explicitly. + +**Note 2**: If a user wants to disable Active Help for every single program based on Cobra, she can set the environment variable `COBRA_ACTIVE_HELP` to "0". In this case `cobra.GetActiveHelpConfig(cmd)` will return "0" no matter what the variable `_ACTIVE_HELP` is set to. + +**Note 3**: If the user does not set `_ACTIVE_HELP` or `COBRA_ACTIVE_HELP` (which will be a common case), the default value for the Active Help configuration returned by `cobra.GetActiveHelpConfig(cmd)` will be the empty string. +## Active Help with Cobra's default completion command + +Cobra provides a default `completion` command for programs that wish to use it. +When using the default `completion` command, Active Help is configurable in the same +fashion as described above using environment variables. You may wish to document this in more +details for your users. + +## Debugging Active Help + +Debugging your Active Help code is done in the same way as debugging your dynamic completion code, which is with Cobra's hidden `__complete` command. Please refer to [debugging shell completion](shell_completions.md#debugging) for details. + +When debugging with the `__complete` command, if you want to specify different Active Help configurations, you should use the active help environment variable. That variable is named `_ACTIVE_HELP` where any `-` is replaced by an `_`. For example, we can test deactivating some Active Help as shown below: +``` +$ HELM_ACTIVE_HELP=1 bin/helm __complete install wordpress bitnami/h +bitnami/haproxy +bitnami/harbor +_activeHelp_ WARNING: cannot re-use a name that is still in use +:0 +Completion ended with directive: ShellCompDirectiveDefault + +$ HELM_ACTIVE_HELP=0 bin/helm __complete install wordpress bitnami/h +bitnami/haproxy +bitnami/harbor +:0 +Completion ended with directive: ShellCompDirectiveDefault +``` diff --git a/vendor/github.com/spf13/cobra/args.go b/vendor/github.com/spf13/cobra/args.go index 70e9b26291..e79ec33a81 100644 --- a/vendor/github.com/spf13/cobra/args.go +++ b/vendor/github.com/spf13/cobra/args.go @@ -1,3 +1,17 @@ +// Copyright 2013-2023 The Cobra Authors +// +// 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 cobra import ( @@ -7,7 +21,7 @@ import ( type PositionalArgs func(cmd *Command, args []string) error -// Legacy arg validation has the following behaviour: +// legacyArgs validation has the following behaviour: // - root commands with no subcommands can take arbitrary arguments // - root commands with subcommands will do subcommand validity checking // - subcommands will always accept arbitrary arguments @@ -32,7 +46,8 @@ func NoArgs(cmd *Command, args []string) error { return nil } -// OnlyValidArgs returns an error if any args are not in the list of ValidArgs. +// OnlyValidArgs returns an error if there are any positional args that are not in +// the `ValidArgs` field of `Command` func OnlyValidArgs(cmd *Command, args []string) error { if len(cmd.ValidArgs) > 0 { // Remove any description that may be included in ValidArgs. @@ -41,7 +56,6 @@ func OnlyValidArgs(cmd *Command, args []string) error { for _, v := range cmd.ValidArgs { validArgs = append(validArgs, strings.Split(v, "\t")[0]) } - for _, v := range args { if !stringInSlice(v, validArgs) { return fmt.Errorf("invalid argument %q for %q%s", v, cmd.CommandPath(), cmd.findSuggestions(args[0])) @@ -86,24 +100,32 @@ func ExactArgs(n int) PositionalArgs { } } -// ExactValidArgs returns an error if -// there are not exactly N positional args OR -// there are any positional args that are not in the `ValidArgs` field of `Command` -func ExactValidArgs(n int) PositionalArgs { +// RangeArgs returns an error if the number of args is not within the expected range. +func RangeArgs(min int, max int) PositionalArgs { return func(cmd *Command, args []string) error { - if err := ExactArgs(n)(cmd, args); err != nil { - return err + if len(args) < min || len(args) > max { + return fmt.Errorf("accepts between %d and %d arg(s), received %d", min, max, len(args)) } - return OnlyValidArgs(cmd, args) + return nil } } -// RangeArgs returns an error if the number of args is not within the expected range. -func RangeArgs(min int, max int) PositionalArgs { +// MatchAll allows combining several PositionalArgs to work in concert. +func MatchAll(pargs ...PositionalArgs) PositionalArgs { return func(cmd *Command, args []string) error { - if len(args) < min || len(args) > max { - return fmt.Errorf("accepts between %d and %d arg(s), received %d", min, max, len(args)) + for _, parg := range pargs { + if err := parg(cmd, args); err != nil { + return err + } } return nil } } + +// ExactValidArgs returns an error if there are not exactly N positional args OR +// there are any positional args that are not in the `ValidArgs` field of `Command` +// +// Deprecated: use MatchAll(ExactArgs(n), OnlyValidArgs) instead +func ExactValidArgs(n int) PositionalArgs { + return MatchAll(ExactArgs(n), OnlyValidArgs) +} diff --git a/vendor/github.com/spf13/cobra/bash_completions.go b/vendor/github.com/spf13/cobra/bash_completions.go index 7106147937..10c78847de 100644 --- a/vendor/github.com/spf13/cobra/bash_completions.go +++ b/vendor/github.com/spf13/cobra/bash_completions.go @@ -1,3 +1,17 @@ +// Copyright 2013-2023 The Cobra Authors +// +// 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 cobra import ( @@ -24,7 +38,7 @@ func writePreamble(buf io.StringWriter, name string) { WriteStringAndCheck(buf, fmt.Sprintf(` __%[1]s_debug() { - if [[ -n ${BASH_COMP_DEBUG_FILE} ]]; then + if [[ -n ${BASH_COMP_DEBUG_FILE:-} ]]; then echo "$*" >> "${BASH_COMP_DEBUG_FILE}" fi } @@ -73,7 +87,8 @@ __%[1]s_handle_go_custom_completion() # Prepare the command to request completions for the program. # Calling ${words[0]} instead of directly %[1]s allows to handle aliases args=("${words[@]:1}") - requestComp="${words[0]} %[2]s ${args[*]}" + # Disable ActiveHelp which is not supported for bash completion v1 + requestComp="%[8]s=0 ${words[0]} %[2]s ${args[*]}" lastParam=${words[$((${#words[@]}-1))]} lastChar=${lastParam:$((${#lastParam}-1)):1} @@ -99,7 +114,7 @@ __%[1]s_handle_go_custom_completion() directive=0 fi __%[1]s_debug "${FUNCNAME[0]}: the completion directive is: ${directive}" - __%[1]s_debug "${FUNCNAME[0]}: the completions are: ${out[*]}" + __%[1]s_debug "${FUNCNAME[0]}: the completions are: ${out}" if [ $((directive & shellCompDirectiveError)) -ne 0 ]; then # Error code. No completion. @@ -125,7 +140,7 @@ __%[1]s_handle_go_custom_completion() local fullFilter filter filteringCmd # Do not use quotes around the $out variable or else newline # characters will be kept. - for filter in ${out[*]}; do + for filter in ${out}; do fullFilter+="$filter|" done @@ -134,9 +149,9 @@ __%[1]s_handle_go_custom_completion() $filteringCmd elif [ $((directive & shellCompDirectiveFilterDirs)) -ne 0 ]; then # File completion for directories only - local subDir + local subdir # Use printf to strip any trailing newline - subdir=$(printf "%%s" "${out[0]}") + subdir=$(printf "%%s" "${out}") if [ -n "$subdir" ]; then __%[1]s_debug "Listing directories in $subdir" __%[1]s_handle_subdirs_in_dir_flag "$subdir" @@ -147,7 +162,7 @@ __%[1]s_handle_go_custom_completion() else while IFS='' read -r comp; do COMPREPLY+=("$comp") - done < <(compgen -W "${out[*]}" -- "$cur") + done < <(compgen -W "${out}" -- "$cur") fi } @@ -187,13 +202,19 @@ __%[1]s_handle_reply() PREFIX="" cur="${cur#*=}" ${flags_completion[${index}]} - if [ -n "${ZSH_VERSION}" ]; then + if [ -n "${ZSH_VERSION:-}" ]; then # zsh completion needs --flag= prefix eval "COMPREPLY=( \"\${COMPREPLY[@]/#/${flag}=}\" )" fi fi fi - return 0; + + if [[ -z "${flag_parsing_disabled}" ]]; then + # If flag parsing is enabled, we have completed the flags and can return. + # If flag parsing is disabled, we may not know all (or any) of the flags, so we fallthrough + # to possibly call handle_go_custom_completion. + return 0; + fi ;; esac @@ -232,13 +253,13 @@ __%[1]s_handle_reply() fi if [[ ${#COMPREPLY[@]} -eq 0 ]]; then - if declare -F __%[1]s_custom_func >/dev/null; then - # try command name qualified custom func - __%[1]s_custom_func - else - # otherwise fall back to unqualified for compatibility - declare -F __custom_func >/dev/null && __custom_func - fi + if declare -F __%[1]s_custom_func >/dev/null; then + # try command name qualified custom func + __%[1]s_custom_func + else + # otherwise fall back to unqualified for compatibility + declare -F __custom_func >/dev/null && __custom_func + fi fi # available in bash-completion >= 2, not always present on macOS @@ -272,7 +293,7 @@ __%[1]s_handle_flag() # if a command required a flag, and we found it, unset must_have_one_flag() local flagname=${words[c]} - local flagvalue + local flagvalue="" # if the word contained an = if [[ ${words[c]} == *"="* ]]; then flagvalue=${flagname#*=} # take in as flagvalue after the = @@ -291,7 +312,7 @@ __%[1]s_handle_flag() # keep flag value with flagname as flaghash # flaghash variable is an associative array which is only supported in bash > 3. - if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then + if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then if [ -n "${flagvalue}" ] ; then flaghash[${flagname}]=${flagvalue} elif [ -n "${words[ $((c+1)) ]}" ] ; then @@ -303,7 +324,7 @@ __%[1]s_handle_flag() # skip the argument to a two word flag if [[ ${words[c]} != *"="* ]] && __%[1]s_contains_word "${words[c]}" "${two_word_flags[@]}"; then - __%[1]s_debug "${FUNCNAME[0]}: found a flag ${words[c]}, skip the next argument" + __%[1]s_debug "${FUNCNAME[0]}: found a flag ${words[c]}, skip the next argument" c=$((c+1)) # if we are looking for a flags value, don't show commands if [[ $c -eq $cword ]]; then @@ -363,7 +384,7 @@ __%[1]s_handle_word() __%[1]s_handle_command elif __%[1]s_contains_word "${words[c]}" "${command_aliases[@]}"; then # aliashash variable is an associative array which is only supported in bash > 3. - if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then + if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then words[c]=${aliashash[${words[c]}]} __%[1]s_handle_command else @@ -377,14 +398,14 @@ __%[1]s_handle_word() `, name, ShellCompNoDescRequestCmd, ShellCompDirectiveError, ShellCompDirectiveNoSpace, ShellCompDirectiveNoFileComp, - ShellCompDirectiveFilterFileExt, ShellCompDirectiveFilterDirs)) + ShellCompDirectiveFilterFileExt, ShellCompDirectiveFilterDirs, activeHelpEnvVar(name))) } func writePostscript(buf io.StringWriter, name string) { - name = strings.Replace(name, ":", "__", -1) + name = strings.ReplaceAll(name, ":", "__") WriteStringAndCheck(buf, fmt.Sprintf("__start_%s()\n", name)) WriteStringAndCheck(buf, fmt.Sprintf(`{ - local cur prev words cword + local cur prev words cword split declare -A flaghash 2>/dev/null || : declare -A aliashash 2>/dev/null || : if declare -F _init_completion >/dev/null 2>&1; then @@ -394,17 +415,20 @@ func writePostscript(buf io.StringWriter, name string) { fi local c=0 + local flag_parsing_disabled= local flags=() local two_word_flags=() local local_nonpersistent_flags=() local flags_with_completion=() local flags_completion=() local commands=("%[1]s") + local command_aliases=() local must_have_one_flag=() local must_have_one_noun=() - local has_completion_function - local last_command + local has_completion_function="" + local last_command="" local nouns=() + local noun_aliases=() __%[1]s_handle_word } @@ -508,8 +532,10 @@ func writeLocalNonPersistentFlag(buf io.StringWriter, flag *pflag.Flag) { } } -// Setup annotations for go completions for registered flags +// prepareCustomAnnotationsForFlags setup annotations for go completions for registered flags func prepareCustomAnnotationsForFlags(cmd *Command) { + flagCompletionMutex.RLock() + defer flagCompletionMutex.RUnlock() for flag := range flagCompletionFunctions { // Make sure the completion script calls the __*_go_custom_completion function for // every registered flag. We need to do this here (and not when the flag was registered @@ -531,6 +557,11 @@ func writeFlags(buf io.StringWriter, cmd *Command) { flags_completion=() `) + + if cmd.DisableFlagParsing { + WriteStringAndCheck(buf, " flag_parsing_disabled=1\n") + } + localNonPersistentFlags := cmd.LocalNonPersistentFlags() cmd.NonInheritedFlags().VisitAll(func(flag *pflag.Flag) { if nonCompletableFlag(flag) { @@ -605,7 +636,7 @@ func writeCmdAliases(buf io.StringWriter, cmd *Command) { sort.Strings(cmd.Aliases) - WriteStringAndCheck(buf, fmt.Sprint(` if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then`, "\n")) + WriteStringAndCheck(buf, fmt.Sprint(` if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then`, "\n")) for _, value := range cmd.Aliases { WriteStringAndCheck(buf, fmt.Sprintf(" command_aliases+=(%q)\n", value)) WriteStringAndCheck(buf, fmt.Sprintf(" aliashash[%q]=%q\n", value, cmd.Name())) @@ -629,8 +660,8 @@ func gen(buf io.StringWriter, cmd *Command) { gen(buf, c) } commandName := cmd.CommandPath() - commandName = strings.Replace(commandName, " ", "_", -1) - commandName = strings.Replace(commandName, ":", "__", -1) + commandName = strings.ReplaceAll(commandName, " ", "_") + commandName = strings.ReplaceAll(commandName, ":", "__") if cmd.Root() == cmd { WriteStringAndCheck(buf, fmt.Sprintf("_%s_root_command()\n{\n", commandName)) diff --git a/vendor/github.com/spf13/cobra/bash_completions.md b/vendor/github.com/spf13/cobra/bash_completions.md index 130f99b923..52919b2fa6 100644 --- a/vendor/github.com/spf13/cobra/bash_completions.md +++ b/vendor/github.com/spf13/cobra/bash_completions.md @@ -6,6 +6,8 @@ Please refer to [Shell Completions](shell_completions.md) for details. For backward compatibility, Cobra still supports its legacy dynamic completion solution (described below). Unlike the `ValidArgsFunction` solution, the legacy solution will only work for Bash shell-completion and not for other shells. This legacy solution can be used along-side `ValidArgsFunction` and `RegisterFlagCompletionFunc()`, as long as both solutions are not used for the same command. This provides a path to gradually migrate from the legacy solution to the new solution. +**Note**: Cobra's default `completion` command uses bash completion V2. If you are currently using Cobra's legacy dynamic completion solution, you should not use the default `completion` command but continue using your own. + The legacy solution allows you to inject bash functions into the bash completion script. Those bash functions are responsible for providing the completion choices for your own completions. Some code that works in kubernetes: diff --git a/vendor/github.com/spf13/cobra/bash_completionsV2.go b/vendor/github.com/spf13/cobra/bash_completionsV2.go new file mode 100644 index 0000000000..19b09560c1 --- /dev/null +++ b/vendor/github.com/spf13/cobra/bash_completionsV2.go @@ -0,0 +1,396 @@ +// Copyright 2013-2023 The Cobra Authors +// +// 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 cobra + +import ( + "bytes" + "fmt" + "io" + "os" +) + +func (c *Command) genBashCompletion(w io.Writer, includeDesc bool) error { + buf := new(bytes.Buffer) + genBashComp(buf, c.Name(), includeDesc) + _, err := buf.WriteTo(w) + return err +} + +func genBashComp(buf io.StringWriter, name string, includeDesc bool) { + compCmd := ShellCompRequestCmd + if !includeDesc { + compCmd = ShellCompNoDescRequestCmd + } + + WriteStringAndCheck(buf, fmt.Sprintf(`# bash completion V2 for %-36[1]s -*- shell-script -*- + +__%[1]s_debug() +{ + if [[ -n ${BASH_COMP_DEBUG_FILE-} ]]; then + echo "$*" >> "${BASH_COMP_DEBUG_FILE}" + fi +} + +# Macs have bash3 for which the bash-completion package doesn't include +# _init_completion. This is a minimal version of that function. +__%[1]s_init_completion() +{ + COMPREPLY=() + _get_comp_words_by_ref "$@" cur prev words cword +} + +# This function calls the %[1]s program to obtain the completion +# results and the directive. It fills the 'out' and 'directive' vars. +__%[1]s_get_completion_results() { + local requestComp lastParam lastChar args + + # Prepare the command to request completions for the program. + # Calling ${words[0]} instead of directly %[1]s allows to handle aliases + args=("${words[@]:1}") + requestComp="${words[0]} %[2]s ${args[*]}" + + lastParam=${words[$((${#words[@]}-1))]} + lastChar=${lastParam:$((${#lastParam}-1)):1} + __%[1]s_debug "lastParam ${lastParam}, lastChar ${lastChar}" + + if [[ -z ${cur} && ${lastChar} != = ]]; then + # If the last parameter is complete (there is a space following it) + # We add an extra empty parameter so we can indicate this to the go method. + __%[1]s_debug "Adding extra empty parameter" + requestComp="${requestComp} ''" + fi + + # When completing a flag with an = (e.g., %[1]s -n=) + # bash focuses on the part after the =, so we need to remove + # the flag part from $cur + if [[ ${cur} == -*=* ]]; then + cur="${cur#*=}" + fi + + __%[1]s_debug "Calling ${requestComp}" + # Use eval to handle any environment variables and such + out=$(eval "${requestComp}" 2>/dev/null) + + # Extract the directive integer at the very end of the output following a colon (:) + directive=${out##*:} + # Remove the directive + out=${out%%:*} + if [[ ${directive} == "${out}" ]]; then + # There is not directive specified + directive=0 + fi + __%[1]s_debug "The completion directive is: ${directive}" + __%[1]s_debug "The completions are: ${out}" +} + +__%[1]s_process_completion_results() { + local shellCompDirectiveError=%[3]d + local shellCompDirectiveNoSpace=%[4]d + local shellCompDirectiveNoFileComp=%[5]d + local shellCompDirectiveFilterFileExt=%[6]d + local shellCompDirectiveFilterDirs=%[7]d + local shellCompDirectiveKeepOrder=%[8]d + + if (((directive & shellCompDirectiveError) != 0)); then + # Error code. No completion. + __%[1]s_debug "Received error from custom completion go code" + return + else + if (((directive & shellCompDirectiveNoSpace) != 0)); then + if [[ $(type -t compopt) == builtin ]]; then + __%[1]s_debug "Activating no space" + compopt -o nospace + else + __%[1]s_debug "No space directive not supported in this version of bash" + fi + fi + if (((directive & shellCompDirectiveKeepOrder) != 0)); then + if [[ $(type -t compopt) == builtin ]]; then + # no sort isn't supported for bash less than < 4.4 + if [[ ${BASH_VERSINFO[0]} -lt 4 || ( ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 4 ) ]]; then + __%[1]s_debug "No sort directive not supported in this version of bash" + else + __%[1]s_debug "Activating keep order" + compopt -o nosort + fi + else + __%[1]s_debug "No sort directive not supported in this version of bash" + fi + fi + if (((directive & shellCompDirectiveNoFileComp) != 0)); then + if [[ $(type -t compopt) == builtin ]]; then + __%[1]s_debug "Activating no file completion" + compopt +o default + else + __%[1]s_debug "No file completion directive not supported in this version of bash" + fi + fi + fi + + # Separate activeHelp from normal completions + local completions=() + local activeHelp=() + __%[1]s_extract_activeHelp + + if (((directive & shellCompDirectiveFilterFileExt) != 0)); then + # File extension filtering + local fullFilter filter filteringCmd + + # Do not use quotes around the $completions variable or else newline + # characters will be kept. + for filter in ${completions[*]}; do + fullFilter+="$filter|" + done + + filteringCmd="_filedir $fullFilter" + __%[1]s_debug "File filtering command: $filteringCmd" + $filteringCmd + elif (((directive & shellCompDirectiveFilterDirs) != 0)); then + # File completion for directories only + + local subdir + subdir=${completions[0]} + if [[ -n $subdir ]]; then + __%[1]s_debug "Listing directories in $subdir" + pushd "$subdir" >/dev/null 2>&1 && _filedir -d && popd >/dev/null 2>&1 || return + else + __%[1]s_debug "Listing directories in ." + _filedir -d + fi + else + __%[1]s_handle_completion_types + fi + + __%[1]s_handle_special_char "$cur" : + __%[1]s_handle_special_char "$cur" = + + # Print the activeHelp statements before we finish + if ((${#activeHelp[*]} != 0)); then + printf "\n"; + printf "%%s\n" "${activeHelp[@]}" + printf "\n" + + # The prompt format is only available from bash 4.4. + # We test if it is available before using it. + if (x=${PS1@P}) 2> /dev/null; then + printf "%%s" "${PS1@P}${COMP_LINE[@]}" + else + # Can't print the prompt. Just print the + # text the user had typed, it is workable enough. + printf "%%s" "${COMP_LINE[@]}" + fi + fi +} + +# Separate activeHelp lines from real completions. +# Fills the $activeHelp and $completions arrays. +__%[1]s_extract_activeHelp() { + local activeHelpMarker="%[9]s" + local endIndex=${#activeHelpMarker} + + while IFS='' read -r comp; do + if [[ ${comp:0:endIndex} == $activeHelpMarker ]]; then + comp=${comp:endIndex} + __%[1]s_debug "ActiveHelp found: $comp" + if [[ -n $comp ]]; then + activeHelp+=("$comp") + fi + else + # Not an activeHelp line but a normal completion + completions+=("$comp") + fi + done <<<"${out}" +} + +__%[1]s_handle_completion_types() { + __%[1]s_debug "__%[1]s_handle_completion_types: COMP_TYPE is $COMP_TYPE" + + case $COMP_TYPE in + 37|42) + # Type: menu-complete/menu-complete-backward and insert-completions + # If the user requested inserting one completion at a time, or all + # completions at once on the command-line we must remove the descriptions. + # https://github.com/spf13/cobra/issues/1508 + local tab=$'\t' comp + while IFS='' read -r comp; do + [[ -z $comp ]] && continue + # Strip any description + comp=${comp%%%%$tab*} + # Only consider the completions that match + if [[ $comp == "$cur"* ]]; then + COMPREPLY+=("$comp") + fi + done < <(printf "%%s\n" "${completions[@]}") + ;; + + *) + # Type: complete (normal completion) + __%[1]s_handle_standard_completion_case + ;; + esac +} + +__%[1]s_handle_standard_completion_case() { + local tab=$'\t' comp + + # Short circuit to optimize if we don't have descriptions + if [[ "${completions[*]}" != *$tab* ]]; then + IFS=$'\n' read -ra COMPREPLY -d '' < <(compgen -W "${completions[*]}" -- "$cur") + return 0 + fi + + local longest=0 + local compline + # Look for the longest completion so that we can format things nicely + while IFS='' read -r compline; do + [[ -z $compline ]] && continue + # Strip any description before checking the length + comp=${compline%%%%$tab*} + # Only consider the completions that match + [[ $comp == "$cur"* ]] || continue + COMPREPLY+=("$compline") + if ((${#comp}>longest)); then + longest=${#comp} + fi + done < <(printf "%%s\n" "${completions[@]}") + + # If there is a single completion left, remove the description text + if ((${#COMPREPLY[*]} == 1)); then + __%[1]s_debug "COMPREPLY[0]: ${COMPREPLY[0]}" + comp="${COMPREPLY[0]%%%%$tab*}" + __%[1]s_debug "Removed description from single completion, which is now: ${comp}" + COMPREPLY[0]=$comp + else # Format the descriptions + __%[1]s_format_comp_descriptions $longest + fi +} + +__%[1]s_handle_special_char() +{ + local comp="$1" + local char=$2 + if [[ "$comp" == *${char}* && "$COMP_WORDBREAKS" == *${char}* ]]; then + local word=${comp%%"${comp##*${char}}"} + local idx=${#COMPREPLY[*]} + while ((--idx >= 0)); do + COMPREPLY[idx]=${COMPREPLY[idx]#"$word"} + done + fi +} + +__%[1]s_format_comp_descriptions() +{ + local tab=$'\t' + local comp desc maxdesclength + local longest=$1 + + local i ci + for ci in ${!COMPREPLY[*]}; do + comp=${COMPREPLY[ci]} + # Properly format the description string which follows a tab character if there is one + if [[ "$comp" == *$tab* ]]; then + __%[1]s_debug "Original comp: $comp" + desc=${comp#*$tab} + comp=${comp%%%%$tab*} + + # $COLUMNS stores the current shell width. + # Remove an extra 4 because we add 2 spaces and 2 parentheses. + maxdesclength=$(( COLUMNS - longest - 4 )) + + # Make sure we can fit a description of at least 8 characters + # if we are to align the descriptions. + if ((maxdesclength > 8)); then + # Add the proper number of spaces to align the descriptions + for ((i = ${#comp} ; i < longest ; i++)); do + comp+=" " + done + else + # Don't pad the descriptions so we can fit more text after the completion + maxdesclength=$(( COLUMNS - ${#comp} - 4 )) + fi + + # If there is enough space for any description text, + # truncate the descriptions that are too long for the shell width + if ((maxdesclength > 0)); then + if ((${#desc} > maxdesclength)); then + desc=${desc:0:$(( maxdesclength - 1 ))} + desc+="…" + fi + comp+=" ($desc)" + fi + COMPREPLY[ci]=$comp + __%[1]s_debug "Final comp: $comp" + fi + done +} + +__start_%[1]s() +{ + local cur prev words cword split + + COMPREPLY=() + + # Call _init_completion from the bash-completion package + # to prepare the arguments properly + if declare -F _init_completion >/dev/null 2>&1; then + _init_completion -n =: || return + else + __%[1]s_init_completion -n =: || return + fi + + __%[1]s_debug + __%[1]s_debug "========= starting completion logic ==========" + __%[1]s_debug "cur is ${cur}, words[*] is ${words[*]}, #words[@] is ${#words[@]}, cword is $cword" + + # The user could have moved the cursor backwards on the command-line. + # We need to trigger completion from the $cword location, so we need + # to truncate the command-line ($words) up to the $cword location. + words=("${words[@]:0:$cword+1}") + __%[1]s_debug "Truncated words[*]: ${words[*]}," + + local out directive + __%[1]s_get_completion_results + __%[1]s_process_completion_results +} + +if [[ $(type -t compopt) = "builtin" ]]; then + complete -o default -F __start_%[1]s %[1]s +else + complete -o default -o nospace -F __start_%[1]s %[1]s +fi + +# ex: ts=4 sw=4 et filetype=sh +`, name, compCmd, + ShellCompDirectiveError, ShellCompDirectiveNoSpace, ShellCompDirectiveNoFileComp, + ShellCompDirectiveFilterFileExt, ShellCompDirectiveFilterDirs, ShellCompDirectiveKeepOrder, + activeHelpMarker)) +} + +// GenBashCompletionFileV2 generates Bash completion version 2. +func (c *Command) GenBashCompletionFileV2(filename string, includeDesc bool) error { + outFile, err := os.Create(filename) + if err != nil { + return err + } + defer outFile.Close() + + return c.GenBashCompletionV2(outFile, includeDesc) +} + +// GenBashCompletionV2 generates Bash completion file version 2 +// and writes it to the passed writer. +func (c *Command) GenBashCompletionV2(w io.Writer, includeDesc bool) error { + return c.genBashCompletion(w, includeDesc) +} diff --git a/vendor/github.com/spf13/cobra/cobra.go b/vendor/github.com/spf13/cobra/cobra.go index d6cbfd7198..b07b44a0ce 100644 --- a/vendor/github.com/spf13/cobra/cobra.go +++ b/vendor/github.com/spf13/cobra/cobra.go @@ -1,9 +1,10 @@ -// Copyright © 2013 Steve Francia . +// Copyright 2013-2023 The Cobra Authors // // 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 +// +// 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, @@ -39,15 +40,25 @@ var templateFuncs = template.FuncMap{ } var initializers []func() +var finalizers []func() + +const ( + defaultPrefixMatching = false + defaultCommandSorting = true + defaultCaseInsensitive = false +) // EnablePrefixMatching allows to set automatic prefix matching. Automatic prefix matching can be a dangerous thing // to automatically enable in CLI tools. // Set this to true to enable it. -var EnablePrefixMatching = false +var EnablePrefixMatching = defaultPrefixMatching // EnableCommandSorting controls sorting of the slice of commands, which is turned on by default. // To disable sorting, set it to false. -var EnableCommandSorting = true +var EnableCommandSorting = defaultCommandSorting + +// EnableCaseInsensitive allows case-insensitive commands names. (case sensitive by default) +var EnableCaseInsensitive = defaultCaseInsensitive // MousetrapHelpText enables an information splash screen on Windows // if the CLI is started from explorer.exe. @@ -84,6 +95,12 @@ func OnInitialize(y ...func()) { initializers = append(initializers, y...) } +// OnFinalize sets the passed functions to be run when each command's +// Execute method is terminated. +func OnFinalize(y ...func()) { + finalizers = append(finalizers, y...) +} + // FIXME Gt is unused by cobra and should be removed in a version 2. It exists only for compatibility with users of cobra. // Gt takes two types and checks whether the first type is greater than the second. In case of types Arrays, Chans, @@ -150,8 +167,8 @@ func appendIfNotPresent(s, stringToAppend string) string { // rpad adds padding to the right of a string. func rpad(s string, padding int) string { - template := fmt.Sprintf("%%-%ds", padding) - return fmt.Sprintf(template, s) + formattedString := fmt.Sprintf("%%-%ds", padding) + return fmt.Sprintf(formattedString, s) } // tmpl executes the given template text on data, writing the result to w. diff --git a/vendor/github.com/spf13/cobra/command.go b/vendor/github.com/spf13/cobra/command.go index d6732ad115..01f7c6f1c5 100644 --- a/vendor/github.com/spf13/cobra/command.go +++ b/vendor/github.com/spf13/cobra/command.go @@ -1,9 +1,10 @@ -// Copyright © 2013 Steve Francia . +// Copyright 2013-2023 The Cobra Authors // // 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 +// +// 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, @@ -18,6 +19,7 @@ package cobra import ( "bytes" "context" + "errors" "fmt" "io" "os" @@ -28,16 +30,24 @@ import ( flag "github.com/spf13/pflag" ) +const FlagSetByCobraAnnotation = "cobra_annotation_flag_set_by_cobra" + // FParseErrWhitelist configures Flag parse errors to be ignored type FParseErrWhitelist flag.ParseErrorsWhitelist +// Group Structure to manage groups for commands +type Group struct { + ID string + Title string +} + // Command is just that, a command for your application. // E.g. 'go run ...' - 'run' is the command. Cobra requires // you to define the usage and description as part of your command // definition to ensure usability. type Command struct { // Use is the one-line usage message. - // Recommended syntax is as follow: + // Recommended syntax is as follows: // [ ] identifies an optional argument. Arguments that are not enclosed in brackets are required. // ... indicates that you can specify multiple values for the previous argument. // | indicates mutually exclusive information. You can use the argument to the left of the separator or the @@ -57,15 +67,18 @@ type Command struct { // Short is the short description shown in the 'help' output. Short string + // The group id under which this subcommand is grouped in the 'help' output of its parent. + GroupID string + // Long is the long message shown in the 'help ' output. Long string // Example is examples of how to use the command. Example string - // ValidArgs is list of all valid non-flag arguments that are accepted in bash completions + // ValidArgs is list of all valid non-flag arguments that are accepted in shell completions ValidArgs []string - // ValidArgsFunction is an optional function that provides valid non-flag arguments for bash completion. + // ValidArgsFunction is an optional function that provides valid non-flag arguments for shell completion. // It is a dynamic version of using ValidArgs. // Only one of ValidArgs and ValidArgsFunction can be used for a command. ValidArgsFunction func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) @@ -74,11 +87,12 @@ type Command struct { Args PositionalArgs // ArgAliases is List of aliases for ValidArgs. - // These are not suggested to the user in the bash completion, + // These are not suggested to the user in the shell completion, // but accepted if entered manually. ArgAliases []string - // BashCompletionFunction is custom functions used by the bash autocompletion generator. + // BashCompletionFunction is custom bash functions used by the legacy bash autocompletion generator. + // For portability with other shells, it is recommended to instead use ValidArgsFunction BashCompletionFunction string // Deprecated defines, if this command is deprecated and should print this string when used. @@ -123,6 +137,9 @@ type Command struct { // PersistentPostRunE: PersistentPostRun but returns an error. PersistentPostRunE func(cmd *Command, args []string) error + // groups for subcommands + commandgroups []*Group + // args is actual args parsed from flags. args []string // flagErrorBuf contains all error messages from pflag. @@ -155,6 +172,12 @@ type Command struct { // helpCommand is command with usage 'help'. If it's not defined by user, // cobra uses default help command. helpCommand *Command + // helpCommandGroupID is the group id for the helpCommand + helpCommandGroupID string + + // completionCommandGroupID is the group id for the completion command + completionCommandGroupID string + // versionTemplate is the version template defined by user. versionTemplate string @@ -165,9 +188,12 @@ type Command struct { // errWriter is a writer defined by the user that replaces stderr errWriter io.Writer - //FParseErrWhitelist flag parse errors to be ignored + // FParseErrWhitelist flag parse errors to be ignored FParseErrWhitelist FParseErrWhitelist + // CompletionOptions is a set of options to control the handling of shell completion + CompletionOptions CompletionOptions + // commandsAreSorted defines, if command slice are sorted or not. commandsAreSorted bool // commandCalledAs is the name or alias value used to call this command. @@ -220,12 +246,23 @@ type Command struct { SuggestionsMinimumDistance int } -// Context returns underlying command context. If command wasn't -// executed with ExecuteContext Context returns Background context. +// Context returns underlying command context. If command was executed +// with ExecuteContext or the context was set with SetContext, the +// previously set context will be returned. Otherwise, nil is returned. +// +// Notice that a call to Execute and ExecuteC will replace a nil context of +// a command with a context.Background, so a background context will be +// returned by Context after one of these functions has been called. func (c *Command) Context() context.Context { return c.ctx } +// SetContext sets context for the command. This context will be overwritten by +// Command.ExecuteContext or Command.ExecuteContextC. +func (c *Command) SetContext(ctx context.Context) { + c.ctx = ctx +} + // SetArgs sets arguments for the command. It is set to os.Args[1:] by default, if desired, can be overridden // particularly useful when testing. func (c *Command) SetArgs(a []string) { @@ -284,6 +321,21 @@ func (c *Command) SetHelpCommand(cmd *Command) { c.helpCommand = cmd } +// SetHelpCommandGroupID sets the group id of the help command. +func (c *Command) SetHelpCommandGroupID(groupID string) { + if c.helpCommand != nil { + c.helpCommand.GroupID = groupID + } + // helpCommandGroupID is used if no helpCommand is defined by the user + c.helpCommandGroupID = groupID +} + +// SetCompletionCommandGroupID sets the group id of the completion command. +func (c *Command) SetCompletionCommandGroupID(groupID string) { + // completionCommandGroupID is used if no completion command is defined by the user + c.Root().completionCommandGroupID = groupID +} + // SetHelpTemplate sets help template to be used. Application can use it to set custom template. func (c *Command) SetHelpTemplate(s string) { c.helpTemplate = s @@ -492,10 +544,16 @@ Aliases: {{.NameAndAliases}}{{end}}{{if .HasExample}} Examples: -{{.Example}}{{end}}{{if .HasAvailableSubCommands}} +{{.Example}}{{end}}{{if .HasAvailableSubCommands}}{{$cmds := .Commands}}{{if eq (len .Groups) 0}} + +Available Commands:{{range $cmds}}{{if (or .IsAvailableCommand (eq .Name "help"))}} + {{rpad .Name .NamePadding }} {{.Short}}{{end}}{{end}}{{else}}{{range $group := .Groups}} -Available Commands:{{range .Commands}}{{if (or .IsAvailableCommand (eq .Name "help"))}} - {{rpad .Name .NamePadding }} {{.Short}}{{end}}{{end}}{{end}}{{if .HasAvailableLocalFlags}} +{{.Title}}{{range $cmds}}{{if (and (eq .GroupID $group.ID) (or .IsAvailableCommand (eq .Name "help")))}} + {{rpad .Name .NamePadding }} {{.Short}}{{end}}{{end}}{{end}}{{if not .AllChildCommandsHaveGroup}} + +Additional Commands:{{range $cmds}}{{if (and (eq .GroupID "") (or .IsAvailableCommand (eq .Name "help")))}} + {{rpad .Name .NamePadding }} {{.Short}}{{end}}{{end}}{{end}}{{end}}{{end}}{{if .HasAvailableLocalFlags}} Flags: {{.LocalFlags.FlagUsages | trimTrailingWhitespaces}}{{end}}{{if .HasAvailableInheritedFlags}} @@ -597,20 +655,44 @@ Loop: // argsMinusFirstX removes only the first x from args. Otherwise, commands that look like // openshift admin policy add-role-to-user admin my-user, lose the admin argument (arg[4]). -func argsMinusFirstX(args []string, x string) []string { - for i, y := range args { - if x == y { - ret := []string{} - ret = append(ret, args[:i]...) - ret = append(ret, args[i+1:]...) - return ret +// Special care needs to be taken not to remove a flag value. +func (c *Command) argsMinusFirstX(args []string, x string) []string { + if len(args) == 0 { + return args + } + c.mergePersistentFlags() + flags := c.Flags() + +Loop: + for pos := 0; pos < len(args); pos++ { + s := args[pos] + switch { + case s == "--": + // -- means we have reached the end of the parseable args. Break out of the loop now. + break Loop + case strings.HasPrefix(s, "--") && !strings.Contains(s, "=") && !hasNoOptDefVal(s[2:], flags): + fallthrough + case strings.HasPrefix(s, "-") && !strings.Contains(s, "=") && len(s) == 2 && !shortHasNoOptDefVal(s[1:], flags): + // This is a flag without a default value, and an equal sign is not used. Increment pos in order to skip + // over the next arg, because that is the value of this flag. + pos++ + continue + case !strings.HasPrefix(s, "-"): + // This is not a flag or a flag value. Check to see if it matches what we're looking for, and if so, + // return the args, excluding the one at this position. + if s == x { + ret := []string{} + ret = append(ret, args[:pos]...) + ret = append(ret, args[pos+1:]...) + return ret + } } } return args } func isFlagArg(arg string) bool { - return ((len(arg) >= 3 && arg[1] == '-') || + return ((len(arg) >= 3 && arg[0:2] == "--") || (len(arg) >= 2 && arg[0] == '-' && arg[1] != '-')) } @@ -628,7 +710,7 @@ func (c *Command) Find(args []string) (*Command, []string, error) { cmd := c.findNext(nextSubCmd) if cmd != nil { - return innerfind(cmd, argsMinusFirstX(innerArgs, nextSubCmd)) + return innerfind(cmd, c.argsMinusFirstX(innerArgs, nextSubCmd)) } return c, innerArgs } @@ -660,7 +742,7 @@ func (c *Command) findSuggestions(arg string) string { func (c *Command) findNext(next string) *Command { matches := make([]*Command, 0) for _, cmd := range c.commands { - if cmd.Name() == next || cmd.HasAlias(next) { + if commandNameMatches(cmd.Name(), next) || cmd.HasAlias(next) { cmd.commandCalledAs.name = next return cmd } @@ -817,6 +899,8 @@ func (c *Command) execute(a []string) (err error) { c.preRun() + defer c.postRun() + argWoFlags := c.Flags().Args() if c.DisableFlagParsing { argWoFlags = a @@ -845,9 +929,13 @@ func (c *Command) execute(a []string) (err error) { c.PreRun(c, argWoFlags) } - if err := c.validateRequiredFlags(); err != nil { + if err := c.ValidateRequiredFlags(); err != nil { + return err + } + if err := c.ValidateFlagGroups(); err != nil { return err } + if c.RunE != nil { if err := c.RunE(c, argWoFlags); err != nil { return err @@ -883,8 +971,15 @@ func (c *Command) preRun() { } } +func (c *Command) postRun() { + for _, x := range finalizers { + x() + } +} + // ExecuteContext is the same as Execute(), but sets the ctx on the command. -// Retrieve ctx by calling cmd.Context() inside your *Run lifecycle functions. +// Retrieve ctx by calling cmd.Context() inside your *Run lifecycle or ValidArgs +// functions. func (c *Command) ExecuteContext(ctx context.Context) error { c.ctx = ctx return c.Execute() @@ -898,6 +993,14 @@ func (c *Command) Execute() error { return err } +// ExecuteContextC is the same as ExecuteC(), but sets the ctx on the command. +// Retrieve ctx by calling cmd.Context() inside your *Run lifecycle or ValidArgs +// functions. +func (c *Command) ExecuteContextC(ctx context.Context) (*Command, error) { + c.ctx = ctx + return c.ExecuteC() +} + // ExecuteC executes the command. func (c *Command) ExecuteC() (cmd *Command, err error) { if c.ctx == nil { @@ -914,9 +1017,14 @@ func (c *Command) ExecuteC() (cmd *Command, err error) { preExecHookFn(c) } - // initialize help as the last point possible to allow for user - // overriding + // initialize help at the last point to allow for user overriding c.InitDefaultHelpCmd() + // initialize completion at the last point to allow for user overriding + c.InitDefaultCompletionCmd() + + // Now that all commands have been created, let's make sure all groups + // are properly created also + c.checkCommandGroups() args := c.args @@ -925,7 +1033,7 @@ func (c *Command) ExecuteC() (cmd *Command, err error) { args = os.Args[1:] } - // initialize the hidden command to be used for bash completion + // initialize the hidden command to be used for shell completion c.initCompleteCmd(args) var flags []string @@ -961,7 +1069,7 @@ func (c *Command) ExecuteC() (cmd *Command, err error) { if err != nil { // Always show help if requested, even if SilenceErrors is in // effect - if err == flag.ErrHelp { + if errors.Is(err, flag.ErrHelp) { cmd.HelpFunc()(cmd, args) return cmd, nil } @@ -983,12 +1091,13 @@ func (c *Command) ExecuteC() (cmd *Command, err error) { func (c *Command) ValidateArgs(args []string) error { if c.Args == nil { - return nil + return ArbitraryArgs(c, args) } return c.Args(c, args) } -func (c *Command) validateRequiredFlags() error { +// ValidateRequiredFlags validates all required flags are present and returns an error otherwise +func (c *Command) ValidateRequiredFlags() error { if c.DisableFlagParsing { return nil } @@ -1011,6 +1120,19 @@ func (c *Command) validateRequiredFlags() error { return nil } +// checkCommandGroups checks if a command has been added to a group that does not exists. +// If so, we panic because it indicates a coding error that should be corrected. +func (c *Command) checkCommandGroups() { + for _, sub := range c.commands { + // if Group is not defined let the developer know right away + if sub.GroupID != "" && !c.ContainsGroup(sub.GroupID) { + panic(fmt.Sprintf("group id '%s' is not defined for subcommand '%s'", sub.GroupID, sub.CommandPath())) + } + + sub.checkCommandGroups() + } +} + // InitDefaultHelpFlag adds default help flag to c. // It is called automatically by executing the c or by calling help and usage. // If c already has help flag, it will do nothing. @@ -1024,6 +1146,7 @@ func (c *Command) InitDefaultHelpFlag() { usage += c.Name() } c.Flags().BoolP("help", "h", false, usage) + _ = c.Flags().SetAnnotation("help", FlagSetByCobraAnnotation, []string{"true"}) } } @@ -1049,6 +1172,7 @@ func (c *Command) InitDefaultVersionFlag() { } else { c.Flags().Bool("version", false, usage) } + _ = c.Flags().SetAnnotation("version", FlagSetByCobraAnnotation, []string{"true"}) } } @@ -1091,10 +1215,12 @@ Simply type ` + c.Name() + ` help [path to command] for full details.`, c.Printf("Unknown help topic %#q\n", args) CheckErr(c.Root().Usage()) } else { - cmd.InitDefaultHelpFlag() // make possible 'help' flag to be shown + cmd.InitDefaultHelpFlag() // make possible 'help' flag to be shown + cmd.InitDefaultVersionFlag() // make possible 'version' flag to be shown CheckErr(cmd.Help()) } }, + GroupID: c.helpCommandGroupID, } } c.RemoveCommand(c.helpCommand) @@ -1155,6 +1281,36 @@ func (c *Command) AddCommand(cmds ...*Command) { } } +// Groups returns a slice of child command groups. +func (c *Command) Groups() []*Group { + return c.commandgroups +} + +// AllChildCommandsHaveGroup returns if all subcommands are assigned to a group +func (c *Command) AllChildCommandsHaveGroup() bool { + for _, sub := range c.commands { + if (sub.IsAvailableCommand() || sub == c.helpCommand) && sub.GroupID == "" { + return false + } + } + return true +} + +// ContainsGroup return if groupID exists in the list of command groups. +func (c *Command) ContainsGroup(groupID string) bool { + for _, x := range c.commandgroups { + if x.ID == groupID { + return true + } + } + return false +} + +// AddGroup adds one or more command groups to this parent command. +func (c *Command) AddGroup(groups ...*Group) { + c.commandgroups = append(c.commandgroups, groups...) +} + // RemoveCommand removes one or more commands from a parent command. func (c *Command) RemoveCommand(cmds ...*Command) { commands := []*Command{} @@ -1298,7 +1454,7 @@ func (c *Command) Name() string { // HasAlias determines if a given string is an alias of the command. func (c *Command) HasAlias(s string) bool { for _, a := range c.Aliases { - if a == s { + if commandNameMatches(a, s) { return true } } @@ -1475,7 +1631,8 @@ func (c *Command) LocalFlags() *flag.FlagSet { } addToLocal := func(f *flag.Flag) { - if c.lflags.Lookup(f.Name) == nil && c.parentsPflags.Lookup(f.Name) == nil { + // Add the flag if it is not a parent PFlag, or it shadows a parent PFlag + if c.lflags.Lookup(f.Name) == nil && f != c.parentsPflags.Lookup(f.Name) { c.lflags.AddFlag(f) } } @@ -1664,3 +1821,14 @@ func (c *Command) updateParentsPflags() { c.parentsPflags.AddFlagSet(parent.PersistentFlags()) }) } + +// commandNameMatches checks if two command names are equal +// taking into account case sensitivity according to +// EnableCaseInsensitive global configuration. +func commandNameMatches(s string, t string) bool { + if EnableCaseInsensitive { + return strings.EqualFold(s, t) + } + + return s == t +} diff --git a/vendor/github.com/spf13/cobra/command_notwin.go b/vendor/github.com/spf13/cobra/command_notwin.go index 6159c1cc19..307f0c127f 100644 --- a/vendor/github.com/spf13/cobra/command_notwin.go +++ b/vendor/github.com/spf13/cobra/command_notwin.go @@ -1,3 +1,18 @@ +// Copyright 2013-2023 The Cobra Authors +// +// 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. + +//go:build !windows // +build !windows package cobra diff --git a/vendor/github.com/spf13/cobra/command_win.go b/vendor/github.com/spf13/cobra/command_win.go index 8768b1736d..adbef395c2 100644 --- a/vendor/github.com/spf13/cobra/command_win.go +++ b/vendor/github.com/spf13/cobra/command_win.go @@ -1,3 +1,18 @@ +// Copyright 2013-2023 The Cobra Authors +// +// 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. + +//go:build windows // +build windows package cobra diff --git a/vendor/github.com/spf13/cobra/custom_completions.go b/vendor/github.com/spf13/cobra/completions.go similarity index 54% rename from vendor/github.com/spf13/cobra/custom_completions.go rename to vendor/github.com/spf13/cobra/completions.go index fa060c147b..ee38c4d0b8 100644 --- a/vendor/github.com/spf13/cobra/custom_completions.go +++ b/vendor/github.com/spf13/cobra/completions.go @@ -1,9 +1,24 @@ +// Copyright 2013-2023 The Cobra Authors +// +// 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 cobra import ( "fmt" "os" "strings" + "sync" "github.com/spf13/pflag" ) @@ -17,13 +32,25 @@ const ( ShellCompNoDescRequestCmd = "__completeNoDesc" ) -// Global map of flag completion functions. +// Global map of flag completion functions. Make sure to use flagCompletionMutex before you try to read and write from it. var flagCompletionFunctions = map[*pflag.Flag]func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective){} +// lock for reading and writing from flagCompletionFunctions +var flagCompletionMutex = &sync.RWMutex{} + // ShellCompDirective is a bit map representing the different behaviors the shell // can be instructed to have once completions have been provided. type ShellCompDirective int +type flagCompError struct { + subCommand string + flagName string +} + +func (e *flagCompError) Error() string { + return "Subcommand '" + e.subCommand + "' does not support flag '" + e.flagName + "'" +} + const ( // ShellCompDirectiveError indicates an error occurred and completions should be ignored. ShellCompDirectiveError ShellCompDirective = 1 << iota @@ -34,7 +61,6 @@ const ( // ShellCompDirectiveNoFileComp indicates that the shell should not provide // file completion even when no completion is provided. - // This currently does not work for zsh or bash < 4 ShellCompDirectiveNoFileComp // ShellCompDirectiveFilterFileExt indicates that the provided completions @@ -51,6 +77,10 @@ const ( // obtain the same behavior but only for flags. ShellCompDirectiveFilterDirs + // ShellCompDirectiveKeepOrder indicates that the shell should preserve the order + // in which the completions are provided + ShellCompDirectiveKeepOrder + // =========================================================================== // All directives using iota should be above this one. @@ -63,12 +93,51 @@ const ( ShellCompDirectiveDefault ShellCompDirective = 0 ) +const ( + // Constants for the completion command + compCmdName = "completion" + compCmdNoDescFlagName = "no-descriptions" + compCmdNoDescFlagDesc = "disable completion descriptions" + compCmdNoDescFlagDefault = false +) + +// CompletionOptions are the options to control shell completion +type CompletionOptions struct { + // DisableDefaultCmd prevents Cobra from creating a default 'completion' command + DisableDefaultCmd bool + // DisableNoDescFlag prevents Cobra from creating the '--no-descriptions' flag + // for shells that support completion descriptions + DisableNoDescFlag bool + // DisableDescriptions turns off all completion descriptions for shells + // that support them + DisableDescriptions bool + // HiddenDefaultCmd makes the default 'completion' command hidden + HiddenDefaultCmd bool +} + +// NoFileCompletions can be used to disable file completion for commands that should +// not trigger file completions. +func NoFileCompletions(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) { + return nil, ShellCompDirectiveNoFileComp +} + +// FixedCompletions can be used to create a completion function which always +// returns the same results. +func FixedCompletions(choices []string, directive ShellCompDirective) func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) { + return func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) { + return choices, directive + } +} + // RegisterFlagCompletionFunc should be called to register a function to provide completion for a flag. func (c *Command) RegisterFlagCompletionFunc(flagName string, f func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective)) error { flag := c.Flag(flagName) if flag == nil { return fmt.Errorf("RegisterFlagCompletionFunc: flag '%s' does not exist", flagName) } + flagCompletionMutex.Lock() + defer flagCompletionMutex.Unlock() + if _, exists := flagCompletionFunctions[flag]; exists { return fmt.Errorf("RegisterFlagCompletionFunc: flag '%s' already registered", flagName) } @@ -94,6 +163,9 @@ func (d ShellCompDirective) string() string { if d&ShellCompDirectiveFilterDirs != 0 { directives = append(directives, "ShellCompDirectiveFilterDirs") } + if d&ShellCompDirectiveKeepOrder != 0 { + directives = append(directives, "ShellCompDirectiveKeepOrder") + } if len(directives) == 0 { directives = append(directives, "ShellCompDirectiveDefault") } @@ -104,7 +176,7 @@ func (d ShellCompDirective) string() string { return strings.Join(directives, ", ") } -// Adds a special hidden command that can be used to request custom completions. +// initCompleteCmd adds a special hidden command that can be used to request custom completions. func (c *Command) initCompleteCmd(args []string) { completeCmd := &Command{ Use: fmt.Sprintf("%s [command-line]", ShellCompRequestCmd), @@ -127,6 +199,12 @@ func (c *Command) initCompleteCmd(args []string) { noDescriptions := (cmd.CalledAs() == ShellCompNoDescRequestCmd) for _, comp := range completions { + if GetActiveHelpConfig(finalCmd) == activeHelpGlobalDisable { + // Remove all activeHelp entries in this case + if strings.HasPrefix(comp, activeHelpMarker) { + continue + } + } if noDescriptions { // Remove any description that may be included following a tab character. comp = strings.Split(comp, "\t")[0] @@ -149,10 +227,6 @@ func (c *Command) initCompleteCmd(args []string) { fmt.Fprintln(finalCmd.OutOrStdout(), comp) } - if directive >= shellCompDirectiveMaxValue { - directive = ShellCompDirectiveDefault - } - // As the last printout, print the completion directive for the completion script to parse. // The directive integer must be that last character following a single colon (:). // The completion script expects : @@ -189,29 +263,75 @@ func (c *Command) getCompletions(args []string) (*Command, []string, ShellCompDi if c.Root().TraverseChildren { finalCmd, finalArgs, err = c.Root().Traverse(trimmedArgs) } else { - finalCmd, finalArgs, err = c.Root().Find(trimmedArgs) + // For Root commands that don't specify any value for their Args fields, when we call + // Find(), if those Root commands don't have any sub-commands, they will accept arguments. + // However, because we have added the __complete sub-command in the current code path, the + // call to Find() -> legacyArgs() will return an error if there are any arguments. + // To avoid this, we first remove the __complete command to get back to having no sub-commands. + rootCmd := c.Root() + if len(rootCmd.Commands()) == 1 { + rootCmd.RemoveCommand(c) + } + + finalCmd, finalArgs, err = rootCmd.Find(trimmedArgs) } if err != nil { // Unable to find the real command. E.g., someInvalidCmd return c, []string{}, ShellCompDirectiveDefault, fmt.Errorf("Unable to find a command for arguments: %v", trimmedArgs) } + finalCmd.ctx = c.ctx + + // These flags are normally added when `execute()` is called on `finalCmd`, + // however, when doing completion, we don't call `finalCmd.execute()`. + // Let's add the --help and --version flag ourselves. + finalCmd.InitDefaultHelpFlag() + finalCmd.InitDefaultVersionFlag() // Check if we are doing flag value completion before parsing the flags. // This is important because if we are completing a flag value, we need to also // remove the flag name argument from the list of finalArgs or else the parsing // could fail due to an invalid value (incomplete) for the flag. - flag, finalArgs, toComplete, err := checkIfFlagCompletion(finalCmd, finalArgs, toComplete) - if err != nil { - // Error while attempting to parse flags - return finalCmd, []string{}, ShellCompDirectiveDefault, err - } + flag, finalArgs, toComplete, flagErr := checkIfFlagCompletion(finalCmd, finalArgs, toComplete) + + // Check if interspersed is false or -- was set on a previous arg. + // This works by counting the arguments. Normally -- is not counted as arg but + // if -- was already set or interspersed is false and there is already one arg then + // the extra added -- is counted as arg. + flagCompletion := true + _ = finalCmd.ParseFlags(append(finalArgs, "--")) + newArgCount := finalCmd.Flags().NArg() // Parse the flags early so we can check if required flags are set if err = finalCmd.ParseFlags(finalArgs); err != nil { return finalCmd, []string{}, ShellCompDirectiveDefault, fmt.Errorf("Error while parsing flags from args %v: %s", finalArgs, err.Error()) } - if flag != nil { + realArgCount := finalCmd.Flags().NArg() + if newArgCount > realArgCount { + // don't do flag completion (see above) + flagCompletion = false + } + // Error while attempting to parse flags + if flagErr != nil { + // If error type is flagCompError and we don't want flagCompletion we should ignore the error + if _, ok := flagErr.(*flagCompError); !(ok && !flagCompletion) { + return finalCmd, []string{}, ShellCompDirectiveDefault, flagErr + } + } + + // Look for the --help or --version flags. If they are present, + // there should be no further completions. + if helpOrVersionFlagPresent(finalCmd) { + return finalCmd, []string{}, ShellCompDirectiveNoFileComp, nil + } + + // We only remove the flags from the arguments if DisableFlagParsing is not set. + // This is important for commands which have requested to do their own flag completion. + if !finalCmd.DisableFlagParsing { + finalArgs = finalCmd.Flags().Args() + } + + if flag != nil && flagCompletion { // Check if we are completing a flag value subject to annotations if validExts, present := flag.Annotations[BashCompFilenameExt]; present { if len(validExts) != 0 { @@ -235,12 +355,19 @@ func (c *Command) getCompletions(args []string) (*Command, []string, ShellCompDi } } + var completions []string + var directive ShellCompDirective + + // Enforce flag groups before doing flag completions + finalCmd.enforceFlagGroupsForCompletion() + + // Note that we want to perform flagname completion even if finalCmd.DisableFlagParsing==true; + // doing this allows for completion of persistent flag names even for commands that disable flag parsing. + // // When doing completion of a flag name, as soon as an argument starts with // a '-' we know it is a flag. We cannot use isFlagArg() here as it requires // the flag name to be complete - if flag == nil && len(toComplete) > 0 && toComplete[0] == '-' && !strings.Contains(toComplete, "=") { - var completions []string - + if flag == nil && len(toComplete) > 0 && toComplete[0] == '-' && !strings.Contains(toComplete, "=") && flagCompletion { // First check for required flags completions = completeRequireFlags(finalCmd, toComplete) @@ -267,92 +394,94 @@ func (c *Command) getCompletions(args []string) (*Command, []string, ShellCompDi }) } - directive := ShellCompDirectiveNoFileComp + directive = ShellCompDirectiveNoFileComp if len(completions) == 1 && strings.HasSuffix(completions[0], "=") { // If there is a single completion, the shell usually adds a space // after the completion. We don't want that if the flag ends with an = directive = ShellCompDirectiveNoSpace } - return finalCmd, completions, directive, nil - } - - // We only remove the flags from the arguments if DisableFlagParsing is not set. - // This is important for commands which have requested to do their own flag completion. - if !finalCmd.DisableFlagParsing { - finalArgs = finalCmd.Flags().Args() - } - var completions []string - directive := ShellCompDirectiveDefault - if flag == nil { - foundLocalNonPersistentFlag := false - // If TraverseChildren is true on the root command we don't check for - // local flags because we can use a local flag on a parent command - if !finalCmd.Root().TraverseChildren { - // Check if there are any local, non-persistent flags on the command-line - localNonPersistentFlags := finalCmd.LocalNonPersistentFlags() - finalCmd.NonInheritedFlags().VisitAll(func(flag *pflag.Flag) { - if localNonPersistentFlags.Lookup(flag.Name) != nil && flag.Changed { - foundLocalNonPersistentFlag = true - } - }) + if !finalCmd.DisableFlagParsing { + // If DisableFlagParsing==false, we have completed the flags as known by Cobra; + // we can return what we found. + // If DisableFlagParsing==true, Cobra may not be aware of all flags, so we + // let the logic continue to see if ValidArgsFunction needs to be called. + return finalCmd, completions, directive, nil } + } else { + directive = ShellCompDirectiveDefault + if flag == nil { + foundLocalNonPersistentFlag := false + // If TraverseChildren is true on the root command we don't check for + // local flags because we can use a local flag on a parent command + if !finalCmd.Root().TraverseChildren { + // Check if there are any local, non-persistent flags on the command-line + localNonPersistentFlags := finalCmd.LocalNonPersistentFlags() + finalCmd.NonInheritedFlags().VisitAll(func(flag *pflag.Flag) { + if localNonPersistentFlags.Lookup(flag.Name) != nil && flag.Changed { + foundLocalNonPersistentFlag = true + } + }) + } - // Complete subcommand names, including the help command - if len(finalArgs) == 0 && !foundLocalNonPersistentFlag { - // We only complete sub-commands if: - // - there are no arguments on the command-line and - // - there are no local, non-peristent flag on the command-line or TraverseChildren is true - for _, subCmd := range finalCmd.Commands() { - if subCmd.IsAvailableCommand() || subCmd == finalCmd.helpCommand { - if strings.HasPrefix(subCmd.Name(), toComplete) { - completions = append(completions, fmt.Sprintf("%s\t%s", subCmd.Name(), subCmd.Short)) + // Complete subcommand names, including the help command + if len(finalArgs) == 0 && !foundLocalNonPersistentFlag { + // We only complete sub-commands if: + // - there are no arguments on the command-line and + // - there are no local, non-persistent flags on the command-line or TraverseChildren is true + for _, subCmd := range finalCmd.Commands() { + if subCmd.IsAvailableCommand() || subCmd == finalCmd.helpCommand { + if strings.HasPrefix(subCmd.Name(), toComplete) { + completions = append(completions, fmt.Sprintf("%s\t%s", subCmd.Name(), subCmd.Short)) + } + directive = ShellCompDirectiveNoFileComp } - directive = ShellCompDirectiveNoFileComp } } - } - // Complete required flags even without the '-' prefix - completions = append(completions, completeRequireFlags(finalCmd, toComplete)...) - - // Always complete ValidArgs, even if we are completing a subcommand name. - // This is for commands that have both subcommands and ValidArgs. - if len(finalCmd.ValidArgs) > 0 { - if len(finalArgs) == 0 { - // ValidArgs are only for the first argument - for _, validArg := range finalCmd.ValidArgs { - if strings.HasPrefix(validArg, toComplete) { - completions = append(completions, validArg) + // Complete required flags even without the '-' prefix + completions = append(completions, completeRequireFlags(finalCmd, toComplete)...) + + // Always complete ValidArgs, even if we are completing a subcommand name. + // This is for commands that have both subcommands and ValidArgs. + if len(finalCmd.ValidArgs) > 0 { + if len(finalArgs) == 0 { + // ValidArgs are only for the first argument + for _, validArg := range finalCmd.ValidArgs { + if strings.HasPrefix(validArg, toComplete) { + completions = append(completions, validArg) + } } - } - directive = ShellCompDirectiveNoFileComp - - // If no completions were found within commands or ValidArgs, - // see if there are any ArgAliases that should be completed. - if len(completions) == 0 { - for _, argAlias := range finalCmd.ArgAliases { - if strings.HasPrefix(argAlias, toComplete) { - completions = append(completions, argAlias) + directive = ShellCompDirectiveNoFileComp + + // If no completions were found within commands or ValidArgs, + // see if there are any ArgAliases that should be completed. + if len(completions) == 0 { + for _, argAlias := range finalCmd.ArgAliases { + if strings.HasPrefix(argAlias, toComplete) { + completions = append(completions, argAlias) + } } } } + + // If there are ValidArgs specified (even if they don't match), we stop completion. + // Only one of ValidArgs or ValidArgsFunction can be used for a single command. + return finalCmd, completions, directive, nil } - // If there are ValidArgs specified (even if they don't match), we stop completion. - // Only one of ValidArgs or ValidArgsFunction can be used for a single command. - return finalCmd, completions, directive, nil + // Let the logic continue so as to add any ValidArgsFunction completions, + // even if we already found sub-commands. + // This is for commands that have subcommands but also specify a ValidArgsFunction. } - - // Let the logic continue so as to add any ValidArgsFunction completions, - // even if we already found sub-commands. - // This is for commands that have subcommands but also specify a ValidArgsFunction. } // Find the completion function for the flag or command var completionFn func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) - if flag != nil { + if flag != nil && flagCompletion { + flagCompletionMutex.RLock() completionFn = flagCompletionFunctions[flag] + flagCompletionMutex.RUnlock() } else { completionFn = finalCmd.ValidArgsFunction } @@ -367,6 +496,18 @@ func (c *Command) getCompletions(args []string) (*Command, []string, ShellCompDi return finalCmd, completions, directive, nil } +func helpOrVersionFlagPresent(cmd *Command) bool { + if versionFlag := cmd.Flags().Lookup("version"); versionFlag != nil && + len(versionFlag.Annotations[FlagSetByCobraAnnotation]) > 0 && versionFlag.Changed { + return true + } + if helpFlag := cmd.Flags().Lookup("help"); helpFlag != nil && + len(helpFlag.Annotations[FlagSetByCobraAnnotation]) > 0 && helpFlag.Changed { + return true + } + return false +} + func getFlagNameCompletions(flag *pflag.Flag, toComplete string) []string { if nonCompletableFlag(flag) { return []string{} @@ -435,6 +576,7 @@ func checkIfFlagCompletion(finalCmd *Command, args []string, lastArg string) (*p var flagName string trimmedArgs := args flagWithEqual := false + orgLastArg := lastArg // When doing completion of a flag name, as soon as an argument starts with // a '-' we know it is a flag. We cannot use isFlagArg() here as that function @@ -442,7 +584,16 @@ func checkIfFlagCompletion(finalCmd *Command, args []string, lastArg string) (*p if len(lastArg) > 0 && lastArg[0] == '-' { if index := strings.Index(lastArg, "="); index >= 0 { // Flag with an = - flagName = strings.TrimLeft(lastArg[:index], "-") + if strings.HasPrefix(lastArg[:index], "--") { + // Flag has full name + flagName = lastArg[2:index] + } else { + // Flag is shorthand + // We have to get the last shorthand flag name + // e.g. `-asd` => d to provide the correct completion + // https://github.com/spf13/cobra/issues/1257 + flagName = lastArg[index-1 : index] + } lastArg = lastArg[index+1:] flagWithEqual = true } else { @@ -459,8 +610,16 @@ func checkIfFlagCompletion(finalCmd *Command, args []string, lastArg string) (*p // If the flag contains an = it means it has already been fully processed, // so we don't need to deal with it here. if index := strings.Index(prevArg, "="); index < 0 { - flagName = strings.TrimLeft(prevArg, "-") - + if strings.HasPrefix(prevArg, "--") { + // Flag has full name + flagName = prevArg[2:] + } else { + // Flag is shorthand + // We have to get the last shorthand flag name + // e.g. `-asd` => d to provide the correct completion + // https://github.com/spf13/cobra/issues/1257 + flagName = prevArg[len(prevArg)-1:] + } // Remove the uncompleted flag or else there could be an error created // for an invalid value for that flag trimmedArgs = args[:len(args)-1] @@ -476,9 +635,8 @@ func checkIfFlagCompletion(finalCmd *Command, args []string, lastArg string) (*p flag := findFlag(finalCmd, flagName) if flag == nil { - // Flag not supported by this command, nothing to complete - err := fmt.Errorf("Subcommand '%s' does not support flag '%s'", finalCmd.Name(), flagName) - return nil, nil, "", err + // Flag not supported by this command, the interspersed option might be set so return the original args + return nil, args, orgLastArg, &flagCompError{subCommand: finalCmd.Name(), flagName: flagName} } if !flagWithEqual { @@ -494,6 +652,169 @@ func checkIfFlagCompletion(finalCmd *Command, args []string, lastArg string) (*p return flag, trimmedArgs, lastArg, nil } +// InitDefaultCompletionCmd adds a default 'completion' command to c. +// This function will do nothing if any of the following is true: +// 1- the feature has been explicitly disabled by the program, +// 2- c has no subcommands (to avoid creating one), +// 3- c already has a 'completion' command provided by the program. +func (c *Command) InitDefaultCompletionCmd() { + if c.CompletionOptions.DisableDefaultCmd || !c.HasSubCommands() { + return + } + + for _, cmd := range c.commands { + if cmd.Name() == compCmdName || cmd.HasAlias(compCmdName) { + // A completion command is already available + return + } + } + + haveNoDescFlag := !c.CompletionOptions.DisableNoDescFlag && !c.CompletionOptions.DisableDescriptions + + completionCmd := &Command{ + Use: compCmdName, + Short: "Generate the autocompletion script for the specified shell", + Long: fmt.Sprintf(`Generate the autocompletion script for %[1]s for the specified shell. +See each sub-command's help for details on how to use the generated script. +`, c.Root().Name()), + Args: NoArgs, + ValidArgsFunction: NoFileCompletions, + Hidden: c.CompletionOptions.HiddenDefaultCmd, + GroupID: c.completionCommandGroupID, + } + c.AddCommand(completionCmd) + + out := c.OutOrStdout() + noDesc := c.CompletionOptions.DisableDescriptions + shortDesc := "Generate the autocompletion script for %s" + bash := &Command{ + Use: "bash", + Short: fmt.Sprintf(shortDesc, "bash"), + Long: fmt.Sprintf(`Generate the autocompletion script for the bash shell. + +This script depends on the 'bash-completion' package. +If it is not installed already, you can install it via your OS's package manager. + +To load completions in your current shell session: + + source <(%[1]s completion bash) + +To load completions for every new session, execute once: + +#### Linux: + + %[1]s completion bash > /etc/bash_completion.d/%[1]s + +#### macOS: + + %[1]s completion bash > $(brew --prefix)/etc/bash_completion.d/%[1]s + +You will need to start a new shell for this setup to take effect. +`, c.Root().Name()), + Args: NoArgs, + DisableFlagsInUseLine: true, + ValidArgsFunction: NoFileCompletions, + RunE: func(cmd *Command, args []string) error { + return cmd.Root().GenBashCompletionV2(out, !noDesc) + }, + } + if haveNoDescFlag { + bash.Flags().BoolVar(&noDesc, compCmdNoDescFlagName, compCmdNoDescFlagDefault, compCmdNoDescFlagDesc) + } + + zsh := &Command{ + Use: "zsh", + Short: fmt.Sprintf(shortDesc, "zsh"), + Long: fmt.Sprintf(`Generate the autocompletion script for the zsh shell. + +If shell completion is not already enabled in your environment you will need +to enable it. You can execute the following once: + + echo "autoload -U compinit; compinit" >> ~/.zshrc + +To load completions in your current shell session: + + source <(%[1]s completion zsh) + +To load completions for every new session, execute once: + +#### Linux: + + %[1]s completion zsh > "${fpath[1]}/_%[1]s" + +#### macOS: + + %[1]s completion zsh > $(brew --prefix)/share/zsh/site-functions/_%[1]s + +You will need to start a new shell for this setup to take effect. +`, c.Root().Name()), + Args: NoArgs, + ValidArgsFunction: NoFileCompletions, + RunE: func(cmd *Command, args []string) error { + if noDesc { + return cmd.Root().GenZshCompletionNoDesc(out) + } + return cmd.Root().GenZshCompletion(out) + }, + } + if haveNoDescFlag { + zsh.Flags().BoolVar(&noDesc, compCmdNoDescFlagName, compCmdNoDescFlagDefault, compCmdNoDescFlagDesc) + } + + fish := &Command{ + Use: "fish", + Short: fmt.Sprintf(shortDesc, "fish"), + Long: fmt.Sprintf(`Generate the autocompletion script for the fish shell. + +To load completions in your current shell session: + + %[1]s completion fish | source + +To load completions for every new session, execute once: + + %[1]s completion fish > ~/.config/fish/completions/%[1]s.fish + +You will need to start a new shell for this setup to take effect. +`, c.Root().Name()), + Args: NoArgs, + ValidArgsFunction: NoFileCompletions, + RunE: func(cmd *Command, args []string) error { + return cmd.Root().GenFishCompletion(out, !noDesc) + }, + } + if haveNoDescFlag { + fish.Flags().BoolVar(&noDesc, compCmdNoDescFlagName, compCmdNoDescFlagDefault, compCmdNoDescFlagDesc) + } + + powershell := &Command{ + Use: "powershell", + Short: fmt.Sprintf(shortDesc, "powershell"), + Long: fmt.Sprintf(`Generate the autocompletion script for powershell. + +To load completions in your current shell session: + + %[1]s completion powershell | Out-String | Invoke-Expression + +To load completions for every new session, add the output of the above command +to your powershell profile. +`, c.Root().Name()), + Args: NoArgs, + ValidArgsFunction: NoFileCompletions, + RunE: func(cmd *Command, args []string) error { + if noDesc { + return cmd.Root().GenPowerShellCompletion(out) + } + return cmd.Root().GenPowerShellCompletionWithDesc(out) + + }, + } + if haveNoDescFlag { + powershell.Flags().BoolVar(&noDesc, compCmdNoDescFlagName, compCmdNoDescFlagDefault, compCmdNoDescFlagDesc) + } + + completionCmd.AddCommand(bash, zsh, fish, powershell) +} + func findFlag(cmd *Command, name string) *pflag.Flag { flagSet := cmd.Flags() if len(name) == 1 { diff --git a/vendor/github.com/spf13/cobra/doc/README.md b/vendor/github.com/spf13/cobra/doc/README.md index 6ea4eb6623..8e07baae33 100644 --- a/vendor/github.com/spf13/cobra/doc/README.md +++ b/vendor/github.com/spf13/cobra/doc/README.md @@ -7,6 +7,11 @@ ## Options ### `DisableAutoGenTag` + You may set `cmd.DisableAutoGenTag = true` to _entirely_ remove the auto generated string "Auto generated by spf13/cobra..." from any documentation source. + +### `InitDefaultCompletionCmd` + +You may call `cmd.InitDefaultCompletionCmd()` to document the default autocompletion command. diff --git a/vendor/github.com/spf13/cobra/doc/man_docs.go b/vendor/github.com/spf13/cobra/doc/man_docs.go index 916e36144d..b8c15ce885 100644 --- a/vendor/github.com/spf13/cobra/doc/man_docs.go +++ b/vendor/github.com/spf13/cobra/doc/man_docs.go @@ -1,9 +1,10 @@ -// Copyright 2015 Red Hat Inc. All rights reserved. +// Copyright 2013-2023 The Cobra Authors // // 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 +// +// 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, @@ -66,7 +67,7 @@ func GenManTreeFromOpts(cmd *cobra.Command, opts GenManTreeOptions) error { if opts.CommandSeparator != "" { separator = opts.CommandSeparator } - basename := strings.Replace(cmd.CommandPath(), " ", separator, -1) + basename := strings.ReplaceAll(cmd.CommandPath(), " ", separator) filename := filepath.Join(opts.Path, basename+"."+section) f, err := os.Create(filename) if err != nil { @@ -116,7 +117,7 @@ func GenMan(cmd *cobra.Command, header *GenManHeader, w io.Writer) error { func fillHeader(header *GenManHeader, name string, disableAutoGen bool) error { if header.Title == "" { - header.Title = strings.ToUpper(strings.Replace(name, " ", "\\-", -1)) + header.Title = strings.ToUpper(strings.ReplaceAll(name, " ", "\\-")) } if header.Section == "" { header.Section = "1" @@ -203,7 +204,7 @@ func genMan(cmd *cobra.Command, header *GenManHeader) []byte { cmd.InitDefaultHelpFlag() // something like `rootcmd-subcmd1-subcmd2` - dashCommandName := strings.Replace(cmd.CommandPath(), " ", "-", -1) + dashCommandName := strings.ReplaceAll(cmd.CommandPath(), " ", "-") buf := new(bytes.Buffer) @@ -218,7 +219,7 @@ func genMan(cmd *cobra.Command, header *GenManHeader) []byte { seealsos := make([]string, 0) if cmd.HasParent() { parentPath := cmd.Parent().CommandPath() - dashParentPath := strings.Replace(parentPath, " ", "-", -1) + dashParentPath := strings.ReplaceAll(parentPath, " ", "-") seealso := fmt.Sprintf("**%s(%s)**", dashParentPath, header.Section) seealsos = append(seealsos, seealso) cmd.VisitParents(func(c *cobra.Command) { diff --git a/vendor/github.com/spf13/cobra/doc/md_docs.go b/vendor/github.com/spf13/cobra/doc/md_docs.go index 5181af8dc2..c4a27c0093 100644 --- a/vendor/github.com/spf13/cobra/doc/md_docs.go +++ b/vendor/github.com/spf13/cobra/doc/md_docs.go @@ -1,9 +1,10 @@ -//Copyright 2015 Red Hat Inc. All rights reserved. +// Copyright 2013-2023 The Cobra Authors // // 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 +// +// 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, @@ -83,7 +84,7 @@ func GenMarkdownCustom(cmd *cobra.Command, w io.Writer, linkHandler func(string) parent := cmd.Parent() pname := parent.CommandPath() link := pname + ".md" - link = strings.Replace(link, " ", "_", -1) + link = strings.ReplaceAll(link, " ", "_") buf.WriteString(fmt.Sprintf("* [%s](%s)\t - %s\n", pname, linkHandler(link), parent.Short)) cmd.VisitParents(func(c *cobra.Command) { if c.DisableAutoGenTag { @@ -101,7 +102,7 @@ func GenMarkdownCustom(cmd *cobra.Command, w io.Writer, linkHandler func(string) } cname := name + " " + child.Name() link := cname + ".md" - link = strings.Replace(link, " ", "_", -1) + link = strings.ReplaceAll(link, " ", "_") buf.WriteString(fmt.Sprintf("* [%s](%s)\t - %s\n", cname, linkHandler(link), child.Short)) } buf.WriteString("\n") @@ -137,7 +138,7 @@ func GenMarkdownTreeCustom(cmd *cobra.Command, dir string, filePrepender, linkHa } } - basename := strings.Replace(cmd.CommandPath(), " ", "_", -1) + ".md" + basename := strings.ReplaceAll(cmd.CommandPath(), " ", "_") + ".md" filename := filepath.Join(dir, basename) f, err := os.Create(filename) if err != nil { diff --git a/vendor/github.com/spf13/cobra/doc/md_docs.md b/vendor/github.com/spf13/cobra/doc/md_docs.md index 5c870625f7..1659175cfd 100644 --- a/vendor/github.com/spf13/cobra/doc/md_docs.md +++ b/vendor/github.com/spf13/cobra/doc/md_docs.md @@ -85,7 +85,7 @@ func GenMarkdownCustom(cmd *Command, out *bytes.Buffer, linkHandler func(string) } ``` -The `filePrepender` will prepend the return value given the full filepath to the rendered Markdown file. A common use case is to add front matter to use the generated documentation with [Hugo](http://gohugo.io/): +The `filePrepender` will prepend the return value given the full filepath to the rendered Markdown file. A common use case is to add front matter to use the generated documentation with [Hugo](https://gohugo.io/): ```go const fmTemplate = `--- diff --git a/vendor/github.com/spf13/cobra/doc/rest_docs.go b/vendor/github.com/spf13/cobra/doc/rest_docs.go index 051d8dc832..2cca6fd778 100644 --- a/vendor/github.com/spf13/cobra/doc/rest_docs.go +++ b/vendor/github.com/spf13/cobra/doc/rest_docs.go @@ -1,9 +1,10 @@ -//Copyright 2015 Red Hat Inc. All rights reserved. +// Copyright 2013-2023 The Cobra Authors // // 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 +// +// 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, @@ -47,7 +48,7 @@ func printOptionsReST(buf *bytes.Buffer, cmd *cobra.Command, name string) error return nil } -// linkHandler for default ReST hyperlink markup +// defaultLinkHandler for default ReST hyperlink markup func defaultLinkHandler(name, ref string) string { return fmt.Sprintf("`%s <%s.rst>`_", name, ref) } @@ -70,7 +71,7 @@ func GenReSTCustom(cmd *cobra.Command, w io.Writer, linkHandler func(string, str if len(long) == 0 { long = short } - ref := strings.Replace(name, " ", "_", -1) + ref := strings.ReplaceAll(name, " ", "_") buf.WriteString(".. _" + ref + ":\n\n") buf.WriteString(name + "\n") @@ -99,7 +100,7 @@ func GenReSTCustom(cmd *cobra.Command, w io.Writer, linkHandler func(string, str if cmd.HasParent() { parent := cmd.Parent() pname := parent.CommandPath() - ref = strings.Replace(pname, " ", "_", -1) + ref = strings.ReplaceAll(pname, " ", "_") buf.WriteString(fmt.Sprintf("* %s \t - %s\n", linkHandler(pname, ref), parent.Short)) cmd.VisitParents(func(c *cobra.Command) { if c.DisableAutoGenTag { @@ -116,7 +117,7 @@ func GenReSTCustom(cmd *cobra.Command, w io.Writer, linkHandler func(string, str continue } cname := name + " " + child.Name() - ref = strings.Replace(cname, " ", "_", -1) + ref = strings.ReplaceAll(cname, " ", "_") buf.WriteString(fmt.Sprintf("* %s \t - %s\n", linkHandler(cname, ref), child.Short)) } buf.WriteString("\n") @@ -151,7 +152,7 @@ func GenReSTTreeCustom(cmd *cobra.Command, dir string, filePrepender func(string } } - basename := strings.Replace(cmd.CommandPath(), " ", "_", -1) + ".rst" + basename := strings.ReplaceAll(cmd.CommandPath(), " ", "_") + ".rst" filename := filepath.Join(dir, basename) f, err := os.Create(filename) if err != nil { @@ -168,7 +169,7 @@ func GenReSTTreeCustom(cmd *cobra.Command, dir string, filePrepender func(string return nil } -// adapted from: https://github.com/kr/text/blob/main/indent.go +// indentString adapted from: https://github.com/kr/text/blob/main/indent.go func indentString(s, p string) string { var res []byte b := []byte(s) diff --git a/vendor/github.com/spf13/cobra/doc/rest_docs.md b/vendor/github.com/spf13/cobra/doc/rest_docs.md index 6098430eff..3041c573ab 100644 --- a/vendor/github.com/spf13/cobra/doc/rest_docs.md +++ b/vendor/github.com/spf13/cobra/doc/rest_docs.md @@ -85,7 +85,7 @@ func GenReSTCustom(cmd *Command, out *bytes.Buffer, linkHandler func(string, str } ``` -The `filePrepender` will prepend the return value given the full filepath to the rendered ReST file. A common use case is to add front matter to use the generated documentation with [Hugo](http://gohugo.io/): +The `filePrepender` will prepend the return value given the full filepath to the rendered ReST file. A common use case is to add front matter to use the generated documentation with [Hugo](https://gohugo.io/): ```go const fmTemplate = `--- diff --git a/vendor/github.com/spf13/cobra/doc/util.go b/vendor/github.com/spf13/cobra/doc/util.go index bffde94d50..0aaa07a166 100644 --- a/vendor/github.com/spf13/cobra/doc/util.go +++ b/vendor/github.com/spf13/cobra/doc/util.go @@ -1,9 +1,10 @@ -// Copyright 2015 Red Hat Inc. All rights reserved. +// Copyright 2013-2023 The Cobra Authors // // 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 +// +// 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, diff --git a/vendor/github.com/spf13/cobra/doc/yaml_docs.go b/vendor/github.com/spf13/cobra/doc/yaml_docs.go index 96e6ad721e..2b26d6ec0f 100644 --- a/vendor/github.com/spf13/cobra/doc/yaml_docs.go +++ b/vendor/github.com/spf13/cobra/doc/yaml_docs.go @@ -1,9 +1,10 @@ -// Copyright 2016 French Ben. All rights reserved. +// Copyright 2013-2023 The Cobra Authors // // 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 +// +// 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, @@ -23,7 +24,7 @@ import ( "github.com/spf13/cobra" "github.com/spf13/pflag" - "gopkg.in/yaml.v2" + "gopkg.in/yaml.v3" ) type cmdOption struct { @@ -66,7 +67,7 @@ func GenYamlTreeCustom(cmd *cobra.Command, dir string, filePrepender, linkHandle } } - basename := strings.Replace(cmd.CommandPath(), " ", "_", -1) + ".yaml" + basename := strings.ReplaceAll(cmd.CommandPath(), " ", "_") + ".yaml" filename := filepath.Join(dir, basename) f, err := os.Create(filename) if err != nil { @@ -128,7 +129,7 @@ func GenYamlCustom(cmd *cobra.Command, w io.Writer, linkHandler func(string) str if !child.IsAvailableCommand() || child.IsAdditionalHelpTopicCommand() { continue } - result = append(result, child.Name()+" - "+child.Short) + result = append(result, child.CommandPath()+" - "+child.Short) } yamlDoc.SeeAlso = result } diff --git a/vendor/github.com/spf13/cobra/doc/yaml_docs.md b/vendor/github.com/spf13/cobra/doc/yaml_docs.md index 1a9b7c6a3c..172e61d121 100644 --- a/vendor/github.com/spf13/cobra/doc/yaml_docs.md +++ b/vendor/github.com/spf13/cobra/doc/yaml_docs.md @@ -82,7 +82,7 @@ func GenYamlCustom(cmd *Command, out *bytes.Buffer, linkHandler func(string) str } ``` -The `filePrepender` will prepend the return value given the full filepath to the rendered Yaml file. A common use case is to add front matter to use the generated documentation with [Hugo](http://gohugo.io/): +The `filePrepender` will prepend the return value given the full filepath to the rendered Yaml file. A common use case is to add front matter to use the generated documentation with [Hugo](https://gohugo.io/): ```go const fmTemplate = `--- diff --git a/vendor/github.com/spf13/cobra/fish_completions.go b/vendor/github.com/spf13/cobra/fish_completions.go index 3e112347d7..12ca0d2b11 100644 --- a/vendor/github.com/spf13/cobra/fish_completions.go +++ b/vendor/github.com/spf13/cobra/fish_completions.go @@ -1,3 +1,17 @@ +// Copyright 2013-2023 The Cobra Authors +// +// 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 cobra import ( @@ -11,8 +25,8 @@ import ( func genFishComp(buf io.StringWriter, name string, includeDesc bool) { // Variables should not contain a '-' or ':' character nameForVar := name - nameForVar = strings.Replace(nameForVar, "-", "_", -1) - nameForVar = strings.Replace(nameForVar, ":", "_", -1) + nameForVar = strings.ReplaceAll(nameForVar, "-", "_") + nameForVar = strings.ReplaceAll(nameForVar, ":", "_") compCmd := ShellCompRequestCmd if !includeDesc { @@ -21,44 +35,48 @@ func genFishComp(buf io.StringWriter, name string, includeDesc bool) { WriteStringAndCheck(buf, fmt.Sprintf("# fish completion for %-36s -*- shell-script -*-\n", name)) WriteStringAndCheck(buf, fmt.Sprintf(` function __%[1]s_debug - set file "$BASH_COMP_DEBUG_FILE" + set -l file "$BASH_COMP_DEBUG_FILE" if test -n "$file" echo "$argv" >> $file end end function __%[1]s_perform_completion - __%[1]s_debug "Starting __%[1]s_perform_completion with: $argv" + __%[1]s_debug "Starting __%[1]s_perform_completion" - set args (string split -- " " "$argv") - set lastArg "$args[-1]" + # Extract all args except the last one + set -l args (commandline -opc) + # Extract the last arg and escape it in case it is a space + set -l lastArg (string escape -- (commandline -ct)) __%[1]s_debug "args: $args" __%[1]s_debug "last arg: $lastArg" - set emptyArg "" - if test -z "$lastArg" - __%[1]s_debug "Setting emptyArg" - set emptyArg \"\" - end - __%[1]s_debug "emptyArg: $emptyArg" + # Disable ActiveHelp which is not supported for fish shell + set -l requestComp "%[10]s=0 $args[1] %[3]s $args[2..-1] $lastArg" - if not type -q "$args[1]" - # This can happen when "complete --do-complete %[2]s" is called when running this script. - __%[1]s_debug "Cannot find $args[1]. No completions." - return - end - - set requestComp "$args[1] %[3]s $args[2..-1] $emptyArg" __%[1]s_debug "Calling $requestComp" + set -l results (eval $requestComp 2> /dev/null) + + # Some programs may output extra empty lines after the directive. + # Let's ignore them or else it will break completion. + # Ref: https://github.com/spf13/cobra/issues/1279 + for line in $results[-1..1] + if test (string trim -- $line) = "" + # Found an empty line, remove it + set results $results[1..-2] + else + # Found non-empty line, we have our proper output + break + end + end - set results (eval $requestComp 2> /dev/null) - set comps $results[1..-2] - set directiveLine $results[-1] + set -l comps $results[1..-2] + set -l directiveLine $results[-1] # For Fish, when completing a flag with an = (e.g., -n=) # completions must be prefixed with the flag - set flagPrefix (string match -r -- '-.*=' "$lastArg") + set -l flagPrefix (string match -r -- '-.*=' "$lastArg") __%[1]s_debug "Comps: $comps" __%[1]s_debug "DirectiveLine: $directiveLine" @@ -71,120 +89,187 @@ function __%[1]s_perform_completion printf "%%s\n" "$directiveLine" end -# This function does three things: -# 1- Obtain the completions and store them in the global __%[1]s_comp_results -# 2- Set the __%[1]s_comp_do_file_comp flag if file completion should be performed -# and unset it otherwise -# 3- Return true if the completion results are not empty +# this function limits calls to __%[1]s_perform_completion, by caching the result behind $__%[1]s_perform_completion_once_result +function __%[1]s_perform_completion_once + __%[1]s_debug "Starting __%[1]s_perform_completion_once" + + if test -n "$__%[1]s_perform_completion_once_result" + __%[1]s_debug "Seems like a valid result already exists, skipping __%[1]s_perform_completion" + return 0 + end + + set --global __%[1]s_perform_completion_once_result (__%[1]s_perform_completion) + if test -z "$__%[1]s_perform_completion_once_result" + __%[1]s_debug "No completions, probably due to a failure" + return 1 + end + + __%[1]s_debug "Performed completions and set __%[1]s_perform_completion_once_result" + return 0 +end + +# this function is used to clear the $__%[1]s_perform_completion_once_result variable after completions are run +function __%[1]s_clear_perform_completion_once_result + __%[1]s_debug "" + __%[1]s_debug "========= clearing previously set __%[1]s_perform_completion_once_result variable ==========" + set --erase __%[1]s_perform_completion_once_result + __%[1]s_debug "Succesfully erased the variable __%[1]s_perform_completion_once_result" +end + +function __%[1]s_requires_order_preservation + __%[1]s_debug "" + __%[1]s_debug "========= checking if order preservation is required ==========" + + __%[1]s_perform_completion_once + if test -z "$__%[1]s_perform_completion_once_result" + __%[1]s_debug "Error determining if order preservation is required" + return 1 + end + + set -l directive (string sub --start 2 $__%[1]s_perform_completion_once_result[-1]) + __%[1]s_debug "Directive is: $directive" + + set -l shellCompDirectiveKeepOrder %[9]d + set -l keeporder (math (math --scale 0 $directive / $shellCompDirectiveKeepOrder) %% 2) + __%[1]s_debug "Keeporder is: $keeporder" + + if test $keeporder -ne 0 + __%[1]s_debug "This does require order preservation" + return 0 + end + + __%[1]s_debug "This doesn't require order preservation" + return 1 +end + + +# This function does two things: +# - Obtain the completions and store them in the global __%[1]s_comp_results +# - Return false if file completion should be performed function __%[1]s_prepare_completions + __%[1]s_debug "" + __%[1]s_debug "========= starting completion logic ==========" + # Start fresh - set --erase __%[1]s_comp_do_file_comp set --erase __%[1]s_comp_results - # Check if the command-line is already provided. This is useful for testing. - if not set --query __%[1]s_comp_commandLine - # Use the -c flag to allow for completion in the middle of the line - set __%[1]s_comp_commandLine (commandline -c) - end - __%[1]s_debug "commandLine is: $__%[1]s_comp_commandLine" - - set results (__%[1]s_perform_completion "$__%[1]s_comp_commandLine") - set --erase __%[1]s_comp_commandLine - __%[1]s_debug "Completion results: $results" + __%[1]s_perform_completion_once + __%[1]s_debug "Completion results: $__%[1]s_perform_completion_once_result" - if test -z "$results" + if test -z "$__%[1]s_perform_completion_once_result" __%[1]s_debug "No completion, probably due to a failure" # Might as well do file completion, in case it helps - set --global __%[1]s_comp_do_file_comp 1 return 1 end - set directive (string sub --start 2 $results[-1]) - set --global __%[1]s_comp_results $results[1..-2] + set -l directive (string sub --start 2 $__%[1]s_perform_completion_once_result[-1]) + set --global __%[1]s_comp_results $__%[1]s_perform_completion_once_result[1..-2] __%[1]s_debug "Completions are: $__%[1]s_comp_results" __%[1]s_debug "Directive is: $directive" - set shellCompDirectiveError %[4]d - set shellCompDirectiveNoSpace %[5]d - set shellCompDirectiveNoFileComp %[6]d - set shellCompDirectiveFilterFileExt %[7]d - set shellCompDirectiveFilterDirs %[8]d + set -l shellCompDirectiveError %[4]d + set -l shellCompDirectiveNoSpace %[5]d + set -l shellCompDirectiveNoFileComp %[6]d + set -l shellCompDirectiveFilterFileExt %[7]d + set -l shellCompDirectiveFilterDirs %[8]d if test -z "$directive" set directive 0 end - set compErr (math (math --scale 0 $directive / $shellCompDirectiveError) %% 2) + set -l compErr (math (math --scale 0 $directive / $shellCompDirectiveError) %% 2) if test $compErr -eq 1 __%[1]s_debug "Received error directive: aborting." # Might as well do file completion, in case it helps - set --global __%[1]s_comp_do_file_comp 1 return 1 end - set filefilter (math (math --scale 0 $directive / $shellCompDirectiveFilterFileExt) %% 2) - set dirfilter (math (math --scale 0 $directive / $shellCompDirectiveFilterDirs) %% 2) + set -l filefilter (math (math --scale 0 $directive / $shellCompDirectiveFilterFileExt) %% 2) + set -l dirfilter (math (math --scale 0 $directive / $shellCompDirectiveFilterDirs) %% 2) if test $filefilter -eq 1; or test $dirfilter -eq 1 __%[1]s_debug "File extension filtering or directory filtering not supported" # Do full file completion instead - set --global __%[1]s_comp_do_file_comp 1 return 1 end - set nospace (math (math --scale 0 $directive / $shellCompDirectiveNoSpace) %% 2) - set nofiles (math (math --scale 0 $directive / $shellCompDirectiveNoFileComp) %% 2) + set -l nospace (math (math --scale 0 $directive / $shellCompDirectiveNoSpace) %% 2) + set -l nofiles (math (math --scale 0 $directive / $shellCompDirectiveNoFileComp) %% 2) __%[1]s_debug "nospace: $nospace, nofiles: $nofiles" - # Important not to quote the variable for count to work - set numComps (count $__%[1]s_comp_results) - __%[1]s_debug "numComps: $numComps" - - if test $numComps -eq 1; and test $nospace -ne 0 - # To support the "nospace" directive we trick the shell - # by outputting an extra, longer completion. - __%[1]s_debug "Adding second completion to perform nospace directive" - set --append __%[1]s_comp_results $__%[1]s_comp_results[1]. + # If we want to prevent a space, or if file completion is NOT disabled, + # we need to count the number of valid completions. + # To do so, we will filter on prefix as the completions we have received + # may not already be filtered so as to allow fish to match on different + # criteria than the prefix. + if test $nospace -ne 0; or test $nofiles -eq 0 + set -l prefix (commandline -t | string escape --style=regex) + __%[1]s_debug "prefix: $prefix" + + set -l completions (string match -r -- "^$prefix.*" $__%[1]s_comp_results) + set --global __%[1]s_comp_results $completions + __%[1]s_debug "Filtered completions are: $__%[1]s_comp_results" + + # Important not to quote the variable for count to work + set -l numComps (count $__%[1]s_comp_results) + __%[1]s_debug "numComps: $numComps" + + if test $numComps -eq 1; and test $nospace -ne 0 + # We must first split on \t to get rid of the descriptions to be + # able to check what the actual completion will be. + # We don't need descriptions anyway since there is only a single + # real completion which the shell will expand immediately. + set -l split (string split --max 1 \t $__%[1]s_comp_results[1]) + + # Fish won't add a space if the completion ends with any + # of the following characters: @=/:., + set -l lastChar (string sub -s -1 -- $split) + if not string match -r -q "[@=/:.,]" -- "$lastChar" + # In other cases, to support the "nospace" directive we trick the shell + # by outputting an extra, longer completion. + __%[1]s_debug "Adding second completion to perform nospace directive" + set --global __%[1]s_comp_results $split[1] $split[1]. + __%[1]s_debug "Completions are now: $__%[1]s_comp_results" + end + end + + if test $numComps -eq 0; and test $nofiles -eq 0 + # To be consistent with bash and zsh, we only trigger file + # completion when there are no other completions + __%[1]s_debug "Requesting file completion" + return 1 + end end - if test $numComps -eq 0; and test $nofiles -eq 0 - __%[1]s_debug "Requesting file completion" - set --global __%[1]s_comp_do_file_comp 1 - end - - # If we don't want file completion, we must return true even if there - # are no completions found. This is because fish will perform the last - # completion command, even if its condition is false, if no other - # completion command was triggered - return (not set --query __%[1]s_comp_do_file_comp) + return 0 end # Since Fish completions are only loaded once the user triggers them, we trigger them ourselves # so we can properly delete any completions provided by another script. -# The space after the the program name is essential to trigger completion for the program -# and not completion of the program name itself. -complete --do-complete "%[2]s " > /dev/null 2>&1 -# Using '> /dev/null 2>&1' since '&>' is not supported in older versions of fish. +# Only do this if the program can be found, or else fish may print some errors; besides, +# the existing completions will only be loaded if the program can be found. +if type -q "%[2]s" + # The space after the program name is essential to trigger completion for the program + # and not completion of the program name itself. + # Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish. + complete --do-complete "%[2]s " > /dev/null 2>&1 +end # Remove any pre-existing completions for the program since we will be handling all of them. complete -c %[2]s -e -# The order in which the below two lines are defined is very important so that __%[1]s_prepare_completions -# is called first. It is __%[1]s_prepare_completions that sets up the __%[1]s_comp_do_file_comp variable. -# -# This completion will be run second as complete commands are added FILO. -# It triggers file completion choices when __%[1]s_comp_do_file_comp is set. -complete -c %[2]s -n 'set --query __%[1]s_comp_do_file_comp' - -# This completion will be run first as complete commands are added FILO. -# The call to __%[1]s_prepare_completions will setup both __%[1]s_comp_results and __%[1]s_comp_do_file_comp. -# It provides the program's completion choices. -complete -c %[2]s -n '__%[1]s_prepare_completions' -f -a '$__%[1]s_comp_results' - +# this will get called after the two calls below and clear the $__%[1]s_perform_completion_once_result global +complete -c %[2]s -n '__%[1]s_clear_perform_completion_once_result' +# The call to __%[1]s_prepare_completions will setup __%[1]s_comp_results +# which provides the program's completion choices. +# If this doesn't require order preservation, we don't use the -k flag +complete -c %[2]s -n 'not __%[1]s_requires_order_preservation && __%[1]s_prepare_completions' -f -a '$__%[1]s_comp_results' +# otherwise we use the -k flag +complete -k -c %[2]s -n '__%[1]s_requires_order_preservation && __%[1]s_prepare_completions' -f -a '$__%[1]s_comp_results' `, nameForVar, name, compCmd, ShellCompDirectiveError, ShellCompDirectiveNoSpace, ShellCompDirectiveNoFileComp, - ShellCompDirectiveFilterFileExt, ShellCompDirectiveFilterDirs)) + ShellCompDirectiveFilterFileExt, ShellCompDirectiveFilterDirs, ShellCompDirectiveKeepOrder, activeHelpEnvVar(name))) } // GenFishCompletion generates fish completion file and writes to the passed writer. diff --git a/vendor/github.com/spf13/cobra/flag_groups.go b/vendor/github.com/spf13/cobra/flag_groups.go new file mode 100644 index 0000000000..b35fde1554 --- /dev/null +++ b/vendor/github.com/spf13/cobra/flag_groups.go @@ -0,0 +1,224 @@ +// Copyright 2013-2023 The Cobra Authors +// +// 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 cobra + +import ( + "fmt" + "sort" + "strings" + + flag "github.com/spf13/pflag" +) + +const ( + requiredAsGroup = "cobra_annotation_required_if_others_set" + mutuallyExclusive = "cobra_annotation_mutually_exclusive" +) + +// MarkFlagsRequiredTogether marks the given flags with annotations so that Cobra errors +// if the command is invoked with a subset (but not all) of the given flags. +func (c *Command) MarkFlagsRequiredTogether(flagNames ...string) { + c.mergePersistentFlags() + for _, v := range flagNames { + f := c.Flags().Lookup(v) + if f == nil { + panic(fmt.Sprintf("Failed to find flag %q and mark it as being required in a flag group", v)) + } + if err := c.Flags().SetAnnotation(v, requiredAsGroup, append(f.Annotations[requiredAsGroup], strings.Join(flagNames, " "))); err != nil { + // Only errs if the flag isn't found. + panic(err) + } + } +} + +// MarkFlagsMutuallyExclusive marks the given flags with annotations so that Cobra errors +// if the command is invoked with more than one flag from the given set of flags. +func (c *Command) MarkFlagsMutuallyExclusive(flagNames ...string) { + c.mergePersistentFlags() + for _, v := range flagNames { + f := c.Flags().Lookup(v) + if f == nil { + panic(fmt.Sprintf("Failed to find flag %q and mark it as being in a mutually exclusive flag group", v)) + } + // Each time this is called is a single new entry; this allows it to be a member of multiple groups if needed. + if err := c.Flags().SetAnnotation(v, mutuallyExclusive, append(f.Annotations[mutuallyExclusive], strings.Join(flagNames, " "))); err != nil { + panic(err) + } + } +} + +// ValidateFlagGroups validates the mutuallyExclusive/requiredAsGroup logic and returns the +// first error encountered. +func (c *Command) ValidateFlagGroups() error { + if c.DisableFlagParsing { + return nil + } + + flags := c.Flags() + + // groupStatus format is the list of flags as a unique ID, + // then a map of each flag name and whether it is set or not. + groupStatus := map[string]map[string]bool{} + mutuallyExclusiveGroupStatus := map[string]map[string]bool{} + flags.VisitAll(func(pflag *flag.Flag) { + processFlagForGroupAnnotation(flags, pflag, requiredAsGroup, groupStatus) + processFlagForGroupAnnotation(flags, pflag, mutuallyExclusive, mutuallyExclusiveGroupStatus) + }) + + if err := validateRequiredFlagGroups(groupStatus); err != nil { + return err + } + if err := validateExclusiveFlagGroups(mutuallyExclusiveGroupStatus); err != nil { + return err + } + return nil +} + +func hasAllFlags(fs *flag.FlagSet, flagnames ...string) bool { + for _, fname := range flagnames { + f := fs.Lookup(fname) + if f == nil { + return false + } + } + return true +} + +func processFlagForGroupAnnotation(flags *flag.FlagSet, pflag *flag.Flag, annotation string, groupStatus map[string]map[string]bool) { + groupInfo, found := pflag.Annotations[annotation] + if found { + for _, group := range groupInfo { + if groupStatus[group] == nil { + flagnames := strings.Split(group, " ") + + // Only consider this flag group at all if all the flags are defined. + if !hasAllFlags(flags, flagnames...) { + continue + } + + groupStatus[group] = map[string]bool{} + for _, name := range flagnames { + groupStatus[group][name] = false + } + } + + groupStatus[group][pflag.Name] = pflag.Changed + } + } +} + +func validateRequiredFlagGroups(data map[string]map[string]bool) error { + keys := sortedKeys(data) + for _, flagList := range keys { + flagnameAndStatus := data[flagList] + + unset := []string{} + for flagname, isSet := range flagnameAndStatus { + if !isSet { + unset = append(unset, flagname) + } + } + if len(unset) == len(flagnameAndStatus) || len(unset) == 0 { + continue + } + + // Sort values, so they can be tested/scripted against consistently. + sort.Strings(unset) + return fmt.Errorf("if any flags in the group [%v] are set they must all be set; missing %v", flagList, unset) + } + + return nil +} + +func validateExclusiveFlagGroups(data map[string]map[string]bool) error { + keys := sortedKeys(data) + for _, flagList := range keys { + flagnameAndStatus := data[flagList] + var set []string + for flagname, isSet := range flagnameAndStatus { + if isSet { + set = append(set, flagname) + } + } + if len(set) == 0 || len(set) == 1 { + continue + } + + // Sort values, so they can be tested/scripted against consistently. + sort.Strings(set) + return fmt.Errorf("if any flags in the group [%v] are set none of the others can be; %v were all set", flagList, set) + } + return nil +} + +func sortedKeys(m map[string]map[string]bool) []string { + keys := make([]string, len(m)) + i := 0 + for k := range m { + keys[i] = k + i++ + } + sort.Strings(keys) + return keys +} + +// enforceFlagGroupsForCompletion will do the following: +// - when a flag in a group is present, other flags in the group will be marked required +// - when a flag in a mutually exclusive group is present, other flags in the group will be marked as hidden +// This allows the standard completion logic to behave appropriately for flag groups +func (c *Command) enforceFlagGroupsForCompletion() { + if c.DisableFlagParsing { + return + } + + flags := c.Flags() + groupStatus := map[string]map[string]bool{} + mutuallyExclusiveGroupStatus := map[string]map[string]bool{} + c.Flags().VisitAll(func(pflag *flag.Flag) { + processFlagForGroupAnnotation(flags, pflag, requiredAsGroup, groupStatus) + processFlagForGroupAnnotation(flags, pflag, mutuallyExclusive, mutuallyExclusiveGroupStatus) + }) + + // If a flag that is part of a group is present, we make all the other flags + // of that group required so that the shell completion suggests them automatically + for flagList, flagnameAndStatus := range groupStatus { + for _, isSet := range flagnameAndStatus { + if isSet { + // One of the flags of the group is set, mark the other ones as required + for _, fName := range strings.Split(flagList, " ") { + _ = c.MarkFlagRequired(fName) + } + } + } + } + + // If a flag that is mutually exclusive to others is present, we hide the other + // flags of that group so the shell completion does not suggest them + for flagList, flagnameAndStatus := range mutuallyExclusiveGroupStatus { + for flagName, isSet := range flagnameAndStatus { + if isSet { + // One of the flags of the mutually exclusive group is set, mark the other ones as hidden + // Don't mark the flag that is already set as hidden because it may be an + // array or slice flag and therefore must continue being suggested + for _, fName := range strings.Split(flagList, " ") { + if fName != flagName { + flag := c.Flags().Lookup(fName) + flag.Hidden = true + } + } + } + } + } +} diff --git a/vendor/github.com/spf13/cobra/powershell_completions.go b/vendor/github.com/spf13/cobra/powershell_completions.go index c55be71cd1..177d2755f2 100644 --- a/vendor/github.com/spf13/cobra/powershell_completions.go +++ b/vendor/github.com/spf13/cobra/powershell_completions.go @@ -1,3 +1,17 @@ +// Copyright 2013-2023 The Cobra Authors +// +// 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. + // The generated scripts require PowerShell v5.0+ (which comes Windows 10, but // can be downloaded separately for windows 7 or 8.1). @@ -8,9 +22,15 @@ import ( "fmt" "io" "os" + "strings" ) func genPowerShellComp(buf io.StringWriter, name string, includeDesc bool) { + // Variables should not contain a '-' or ':' character + nameForVar := name + nameForVar = strings.Replace(nameForVar, "-", "_", -1) + nameForVar = strings.Replace(nameForVar, ":", "_", -1) + compCmd := ShellCompRequestCmd if !includeDesc { compCmd = ShellCompNoDescRequestCmd @@ -27,7 +47,7 @@ filter __%[1]s_escapeStringWithSpecialChars { `+" $_ -replace '\\s|#|@|\\$|;|,|''|\\{|\\}|\\(|\\)|\"|`|\\||<|>|&','`$&'"+` } -Register-ArgumentCompleter -CommandName '%[1]s' -ScriptBlock { +[scriptblock]$__%[2]sCompleterBlock = { param( $WordToComplete, $CommandAst, @@ -50,18 +70,20 @@ Register-ArgumentCompleter -CommandName '%[1]s' -ScriptBlock { if ($Command.Length -gt $CursorPosition) { $Command=$Command.Substring(0,$CursorPosition) } - __%[1]s_debug "Truncated command: $Command" + __%[1]s_debug "Truncated command: $Command" - $ShellCompDirectiveError=%[3]d - $ShellCompDirectiveNoSpace=%[4]d - $ShellCompDirectiveNoFileComp=%[5]d - $ShellCompDirectiveFilterFileExt=%[6]d - $ShellCompDirectiveFilterDirs=%[7]d + $ShellCompDirectiveError=%[4]d + $ShellCompDirectiveNoSpace=%[5]d + $ShellCompDirectiveNoFileComp=%[6]d + $ShellCompDirectiveFilterFileExt=%[7]d + $ShellCompDirectiveFilterDirs=%[8]d + $ShellCompDirectiveKeepOrder=%[9]d - # Prepare the command to request completions for the program. + # Prepare the command to request completions for the program. # Split the command at the first space to separate the program and arguments. $Program,$Arguments = $Command.Split(" ",2) - $RequestComp="$Program %[2]s $Arguments" + + $RequestComp="$Program %[3]s $Arguments" __%[1]s_debug "RequestComp: $RequestComp" # we cannot use $WordToComplete because it @@ -85,16 +107,27 @@ Register-ArgumentCompleter -CommandName '%[1]s' -ScriptBlock { # If the last parameter is complete (there is a space following it) # We add an extra empty parameter so we can indicate this to the go method. __%[1]s_debug "Adding extra empty parameter" -`+" # We need to use `\"`\" to pass an empty argument a \"\" or '' does not work!!!"+` -`+" $RequestComp=\"$RequestComp\" + ' `\"`\"' "+` + # PowerShell 7.2+ changed the way how the arguments are passed to executables, + # so for pre-7.2 or when Legacy argument passing is enabled we need to use +`+" # `\"`\" to pass an empty argument, a \"\" or '' does not work!!!"+` + if ($PSVersionTable.PsVersion -lt [version]'7.2.0' -or + ($PSVersionTable.PsVersion -lt [version]'7.3.0' -and -not [ExperimentalFeature]::IsEnabled("PSNativeCommandArgumentPassing")) -or + (($PSVersionTable.PsVersion -ge [version]'7.3.0' -or [ExperimentalFeature]::IsEnabled("PSNativeCommandArgumentPassing")) -and + $PSNativeCommandArgumentPassing -eq 'Legacy')) { +`+" $RequestComp=\"$RequestComp\" + ' `\"`\"'"+` + } else { + $RequestComp="$RequestComp" + ' ""' + } } __%[1]s_debug "Calling $RequestComp" + # First disable ActiveHelp which is not supported for Powershell + $env:%[10]s=0 + #call the command store the output in $out and redirect stderr and stdout to null # $Out is an array contains each line per element Invoke-Expression -OutVariable out "$RequestComp" 2>&1 | Out-Null - # get directive from last line [int]$Directive = $Out[-1].TrimStart(':') if ($Directive -eq "") { @@ -114,7 +147,7 @@ Register-ArgumentCompleter -CommandName '%[1]s' -ScriptBlock { } $Longest = 0 - $Values = $Out | ForEach-Object { + [Array]$Values = $Out | ForEach-Object { #Split the output in name and description `+" $Name, $Description = $_.Split(\"`t\",2)"+` __%[1]s_debug "Name: $Name Description: $Description" @@ -140,19 +173,6 @@ Register-ArgumentCompleter -CommandName '%[1]s' -ScriptBlock { $Space = "" } - if (($Directive -band $ShellCompDirectiveNoFileComp) -ne 0 ) { - __%[1]s_debug "ShellCompDirectiveNoFileComp is called" - - if ($Values.Length -eq 0) { - # Just print an empty string here so the - # shell does not start to complete paths. - # We cannot use CompletionResult here because - # it does not accept an empty string as argument. - "" - return - } - } - if ((($Directive -band $ShellCompDirectiveFilterFileExt) -ne 0 ) -or (($Directive -band $ShellCompDirectiveFilterDirs) -ne 0 )) { __%[1]s_debug "ShellCompDirectiveFilterFileExt ShellCompDirectiveFilterDirs are not supported" @@ -165,20 +185,38 @@ Register-ArgumentCompleter -CommandName '%[1]s' -ScriptBlock { # filter the result $_.Name -like "$WordToComplete*" - # Join the flag back if we have a equal sign flag + # Join the flag back if we have an equal sign flag if ( $IsEqualFlag ) { __%[1]s_debug "Join the equal sign flag back to the completion value" $_.Name = $Flag + "=" + $_.Name } } + # we sort the values in ascending order by name if keep order isn't passed + if (($Directive -band $ShellCompDirectiveKeepOrder) -eq 0 ) { + $Values = $Values | Sort-Object -Property Name + } + + if (($Directive -band $ShellCompDirectiveNoFileComp) -ne 0 ) { + __%[1]s_debug "ShellCompDirectiveNoFileComp is called" + + if ($Values.Length -eq 0) { + # Just print an empty string here so the + # shell does not start to complete paths. + # We cannot use CompletionResult here because + # it does not accept an empty string as argument. + "" + return + } + } + # Get the current mode $Mode = (Get-PSReadLineKeyHandler | Where-Object {$_.Key -eq "Tab" }).Function __%[1]s_debug "Mode: $Mode" $Values | ForEach-Object { - # store temporay because switch will overwrite $_ + # store temporary because switch will overwrite $_ $comp = $_ # PowerShell supports three different completion modes @@ -233,16 +271,18 @@ Register-ArgumentCompleter -CommandName '%[1]s' -ScriptBlock { Default { # Like MenuComplete but we don't want to add a space here because # the user need to press space anyway to get the completion. - # Description will not be shown because thats not possible with TabCompleteNext + # Description will not be shown because that's not possible with TabCompleteNext [System.Management.Automation.CompletionResult]::new($($comp.Name | __%[1]s_escapeStringWithSpecialChars), "$($comp.Name)", 'ParameterValue', "$($comp.Description)") } } } } -`, name, compCmd, + +Register-ArgumentCompleter -CommandName '%[1]s' -ScriptBlock $__%[2]sCompleterBlock +`, name, nameForVar, compCmd, ShellCompDirectiveError, ShellCompDirectiveNoSpace, ShellCompDirectiveNoFileComp, - ShellCompDirectiveFilterFileExt, ShellCompDirectiveFilterDirs)) + ShellCompDirectiveFilterFileExt, ShellCompDirectiveFilterDirs, ShellCompDirectiveKeepOrder, activeHelpEnvVar(name))) } func (c *Command) genPowerShellCompletion(w io.Writer, includeDesc bool) error { diff --git a/vendor/github.com/spf13/cobra/projects_using_cobra.md b/vendor/github.com/spf13/cobra/projects_using_cobra.md index d98a71e36f..8a291eb20e 100644 --- a/vendor/github.com/spf13/cobra/projects_using_cobra.md +++ b/vendor/github.com/spf13/cobra/projects_using_cobra.md @@ -1,38 +1,64 @@ ## Projects using Cobra +- [Allero](https://github.com/allero-io/allero) +- [Arewefastyet](https://benchmark.vitess.io) - [Arduino CLI](https://github.com/arduino/arduino-cli) -- [Bleve](http://www.blevesearch.com/) -- [CockroachDB](http://www.cockroachlabs.com/) +- [Bleve](https://blevesearch.com/) +- [Cilium](https://cilium.io/) +- [CloudQuery](https://github.com/cloudquery/cloudquery) +- [CockroachDB](https://www.cockroachlabs.com/) +- [Constellation](https://github.com/edgelesssys/constellation) - [Cosmos SDK](https://github.com/cosmos/cosmos-sdk) +- [Datree](https://github.com/datreeio/datree) - [Delve](https://github.com/derekparker/delve) - [Docker (distribution)](https://github.com/docker/distribution) - [Etcd](https://etcd.io/) - [Gardener](https://github.com/gardener/gardenctl) - [Giant Swarm's gsctl](https://github.com/giantswarm/gsctl) - [Git Bump](https://github.com/erdaltsksn/git-bump) -- [Github CLI](https://github.com/cli/cli) +- [GitHub CLI](https://github.com/cli/cli) - [GitHub Labeler](https://github.com/erdaltsksn/gh-label) - [Golangci-lint](https://golangci-lint.run) -- [GopherJS](http://www.gopherjs.org/) +- [GopherJS](https://github.com/gopherjs/gopherjs) +- [GoReleaser](https://goreleaser.com) - [Helm](https://helm.sh) - [Hugo](https://gohugo.io) +- [Infracost](https://github.com/infracost/infracost) - [Istio](https://istio.io) - [Kool](https://github.com/kool-dev/kool) -- [Kubernetes](http://kubernetes.io/) +- [Kubernetes](https://kubernetes.io/) +- [Kubescape](https://github.com/kubescape/kubescape) +- [KubeVirt](https://github.com/kubevirt/kubevirt) - [Linkerd](https://linkerd.io/) - [Mattermost-server](https://github.com/mattermost/mattermost-server) +- [Mercure](https://mercure.rocks/) +- [Meroxa CLI](https://github.com/meroxa/cli) - [Metal Stack CLI](https://github.com/metal-stack/metalctl) - [Moby (former Docker)](https://github.com/moby/moby) +- [Moldy](https://github.com/Moldy-Community/moldy) +- [Multi-gitter](https://github.com/lindell/multi-gitter) - [Nanobox](https://github.com/nanobox-io/nanobox)/[Nanopack](https://github.com/nanopack) +- [nFPM](https://nfpm.goreleaser.com) +- [Okteto](https://github.com/okteto/okteto) - [OpenShift](https://www.openshift.com/) - [Ory Hydra](https://github.com/ory/hydra) - [Ory Kratos](https://github.com/ory/kratos) +- [Pixie](https://github.com/pixie-io/pixie) +- [Polygon Edge](https://github.com/0xPolygon/polygon-edge) - [Pouch](https://github.com/alibaba/pouch) -- [ProjectAtomic (enterprise)](http://www.projectatomic.io/) +- [ProjectAtomic (enterprise)](https://www.projectatomic.io/) - [Prototool](https://github.com/uber/prototool) +- [Pulumi](https://www.pulumi.com) +- [QRcp](https://github.com/claudiodangelis/qrcp) - [Random](https://github.com/erdaltsksn/random) - [Rclone](https://rclone.org/) +- [Scaleway CLI](https://github.com/scaleway/scaleway-cli) +- [Sia](https://github.com/SiaFoundation/siad) - [Skaffold](https://skaffold.dev/) - [Tendermint](https://github.com/tendermint/tendermint) - [Twitch CLI](https://github.com/twitchdev/twitch-cli) +- [UpCloud CLI (`upctl`)](https://github.com/UpCloudLtd/upcloud-cli) +- [Vitess](https://vitess.io) +- VMware's [Tanzu Community Edition](https://github.com/vmware-tanzu/community-edition) & [Tanzu Framework](https://github.com/vmware-tanzu/tanzu-framework) - [Werf](https://werf.io/) +- [ZITADEL](https://github.com/zitadel/zitadel) diff --git a/vendor/github.com/spf13/cobra/shell_completions.go b/vendor/github.com/spf13/cobra/shell_completions.go index d99bf91e5f..b035742d39 100644 --- a/vendor/github.com/spf13/cobra/shell_completions.go +++ b/vendor/github.com/spf13/cobra/shell_completions.go @@ -1,3 +1,17 @@ +// Copyright 2013-2023 The Cobra Authors +// +// 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 cobra import ( diff --git a/vendor/github.com/spf13/cobra/shell_completions.md b/vendor/github.com/spf13/cobra/shell_completions.md index cd533ac3d4..065c0621d4 100644 --- a/vendor/github.com/spf13/cobra/shell_completions.md +++ b/vendor/github.com/spf13/cobra/shell_completions.md @@ -7,10 +7,21 @@ The currently supported shells are: - fish - PowerShell -If you are using the generator, you can create a completion command by running +Cobra will automatically provide your program with a fully functional `completion` command, +similarly to how it provides the `help` command. + +## Creating your own completion command + +If you do not wish to use the default `completion` command, you can choose to +provide your own, which will take precedence over the default one. (This also provides +backwards-compatibility with programs that already have their own `completion` command.) + +If you are using the `cobra-cli` generator, +which can be found at [spf13/cobra-cli](https://github.com/spf13/cobra-cli), +you can create a completion command by running ```bash -cobra add completion +cobra-cli add completion ``` and then modifying the generated `cmd/completion.go` file to look something like this (writing the shell script to stdout allows the most flexible use): @@ -19,17 +30,17 @@ and then modifying the generated `cmd/completion.go` file to look something like var completionCmd = &cobra.Command{ Use: "completion [bash|zsh|fish|powershell]", Short: "Generate completion script", - Long: `To load completions: + Long: fmt.Sprintf(`To load completions: Bash: - $ source <(yourprogram completion bash) + $ source <(%[1]s completion bash) # To load completions for each session, execute once: # Linux: - $ yourprogram completion bash > /etc/bash_completion.d/yourprogram + $ %[1]s completion bash > /etc/bash_completion.d/%[1]s # macOS: - $ yourprogram completion bash > /usr/local/etc/bash_completion.d/yourprogram + $ %[1]s completion bash > $(brew --prefix)/etc/bash_completion.d/%[1]s Zsh: @@ -39,28 +50,28 @@ Zsh: $ echo "autoload -U compinit; compinit" >> ~/.zshrc # To load completions for each session, execute once: - $ yourprogram completion zsh > "${fpath[1]}/_yourprogram" + $ %[1]s completion zsh > "${fpath[1]}/_%[1]s" # You will need to start a new shell for this setup to take effect. fish: - $ yourprogram completion fish | source + $ %[1]s completion fish | source # To load completions for each session, execute once: - $ yourprogram completion fish > ~/.config/fish/completions/yourprogram.fish + $ %[1]s completion fish > ~/.config/fish/completions/%[1]s.fish PowerShell: - PS> yourprogram completion powershell | Out-String | Invoke-Expression + PS> %[1]s completion powershell | Out-String | Invoke-Expression # To load completions for every new session, run: - PS> yourprogram completion powershell > yourprogram.ps1 + PS> %[1]s completion powershell > %[1]s.ps1 # and source this file from your PowerShell profile. -`, +`,cmd.Root().Name()), DisableFlagsInUseLine: true, ValidArgs: []string{"bash", "zsh", "fish", "powershell"}, - Args: cobra.ExactValidArgs(1), + Args: cobra.MatchAll(cobra.ExactArgs(1), cobra.OnlyValidArgs), Run: func(cmd *cobra.Command, args []string) { switch args[0] { case "bash": @@ -70,7 +81,7 @@ PowerShell: case "fish": cmd.Root().GenFishCompletion(os.Stdout, true) case "powershell": - cmd.Root().GenPowerShellCompletion(os.Stdout) + cmd.Root().GenPowerShellCompletionWithDesc(os.Stdout) } }, } @@ -78,6 +89,31 @@ PowerShell: **Note:** The cobra generator may include messages printed to stdout, for example, if the config file is loaded; this will break the auto-completion script so must be removed. +## Adapting the default completion command + +Cobra provides a few options for the default `completion` command. To configure such options you must set +the `CompletionOptions` field on the *root* command. + +To tell Cobra *not* to provide the default `completion` command: +``` +rootCmd.CompletionOptions.DisableDefaultCmd = true +``` + +To tell Cobra to mark the default `completion` command as *hidden*: +``` +rootCmd.CompletionOptions.HiddenDefaultCmd = true +``` + +To tell Cobra *not* to provide the user with the `--no-descriptions` flag to the completion sub-commands: +``` +rootCmd.CompletionOptions.DisableNoDescFlag = true +``` + +To tell Cobra to completely disable descriptions for completions: +``` +rootCmd.CompletionOptions.DisableDescriptions = true +``` + # Customizing completions The generated completion scripts will automatically handle completing commands and flags. However, you can make your completions much more powerful by providing information to complete your program's nouns and flag values. @@ -91,7 +127,7 @@ For example, if you want `kubectl get [tab][tab]` to show a list of valid "nouns Some simplified code from `kubectl get` looks like: ```go -validArgs []string = { "pod", "node", "service", "replicationcontroller" } +validArgs = []string{ "pod", "node", "service", "replicationcontroller" } cmd := &cobra.Command{ Use: "get [(-o|--output=)json|yaml|template|...] (RESOURCE [NAME] | RESOURCE/NAME ...)", @@ -117,7 +153,7 @@ node pod replicationcontroller service If your nouns have aliases, you can define them alongside `ValidArgs` using `ArgAliases`: ```go -argAliases []string = { "pods", "nodes", "services", "svc", "replicationcontrollers", "rc" } +argAliases = []string { "pods", "nodes", "services", "svc", "replicationcontrollers", "rc" } cmd := &cobra.Command{ ... @@ -126,16 +162,7 @@ cmd := &cobra.Command{ } ``` -The aliases are not shown to the user on tab completion, but they are accepted as valid nouns by -the completion algorithm if entered manually, e.g. in: - -```bash -$ kubectl get rc [tab][tab] -backend frontend database -``` - -Note that without declaring `rc` as an alias, the completion algorithm would not know to show the list of -replication controllers following `rc`. +The aliases are shown to the user on tab completion only if no completions were found within sub-commands or `ValidArgs`. ### Dynamic completion of nouns @@ -201,6 +228,10 @@ ShellCompDirectiveFilterFileExt // return []string{"themes"}, ShellCompDirectiveFilterDirs // ShellCompDirectiveFilterDirs + +// ShellCompDirectiveKeepOrder indicates that the shell should preserve the order +// in which the completions are provided +ShellCompDirectiveKeepOrder ``` ***Note***: When using the `ValidArgsFunction`, Cobra will call your registered function after having parsed all flags and arguments provided in the command-line. You therefore don't need to do this parsing yourself. For example, when a user calls `helm status --namespace my-rook-ns [tab][tab]`, Cobra will call your registered `ValidArgsFunction` after having parsed the `--namespace` flag, as it would have done when calling the `RunE` function. @@ -323,7 +354,10 @@ cmd.RegisterFlagCompletionFunc(flagName, func(cmd *cobra.Command, args []string, ``` ### Descriptions for completions -`zsh`, `fish` and `powershell` allow for descriptions to annotate completion choices. For commands and flags, Cobra will provide the descriptions automatically, based on usage information. For example, using zsh: +Cobra provides support for completion descriptions. Such descriptions are supported for each shell +(however, for bash, it is only available in the [completion V2 version](#bash-completion-v2)). +For commands and flags, Cobra will provide the descriptions automatically, based on usage information. +For example, using zsh: ``` $ helm s[tab] search -- search for a keyword in charts @@ -336,7 +370,7 @@ $ helm s[tab] search (search for a keyword in charts) show (show information of a chart) status (displays the status of the named release) ``` -Cobra allows you to add annotations to your own completions. Simply add the annotation text after each completion, following a `\t` separator. This technique applies to completions returned by `ValidArgs`, `ValidArgsFunction` and `RegisterFlagCompletionFunc()`. For example: +Cobra allows you to add descriptions to your own completions. Simply add the description text after each completion, following a `\t` separator. This technique applies to completions returned by `ValidArgs`, `ValidArgsFunction` and `RegisterFlagCompletionFunc()`. For example: ```go ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { return []string{"harbor\tAn image registry", "thanos\tLong-term metrics"}, cobra.ShellCompDirectiveNoFileComp @@ -346,6 +380,19 @@ or ```go ValidArgs: []string{"bash\tCompletions for bash", "zsh\tCompletions for zsh"} ``` + +If you don't want to show descriptions in the completions, you can add `--no-descriptions` to the default `completion` command to disable them, like: + +```bash +$ source <(helm completion bash) +$ helm completion [tab][tab] +bash (generate autocompletion script for bash) powershell (generate autocompletion script for powershell) +fish (generate autocompletion script for fish) zsh (generate autocompletion script for zsh) + +$ source <(helm completion bash --no-descriptions) +$ helm completion [tab][tab] +bash fish powershell zsh +``` ## Bash completions ### Dependencies @@ -371,6 +418,37 @@ completion firstcommand secondcommand For backward compatibility, Cobra still supports its bash legacy dynamic completion solution. Please refer to [Bash Completions](bash_completions.md) for details. +### Bash completion V2 + +Cobra provides two versions for bash completion. The original bash completion (which started it all!) can be used by calling +`GenBashCompletion()` or `GenBashCompletionFile()`. + +A new V2 bash completion version is also available. This version can be used by calling `GenBashCompletionV2()` or +`GenBashCompletionFileV2()`. The V2 version does **not** support the legacy dynamic completion +(see [Bash Completions](bash_completions.md)) but instead works only with the Go dynamic completion +solution described in this document. +Unless your program already uses the legacy dynamic completion solution, it is recommended that you use the bash +completion V2 solution which provides the following extra features: +- Supports completion descriptions (like the other shells) +- Small completion script of less than 300 lines (v1 generates scripts of thousands of lines; `kubectl` for example has a bash v1 completion script of over 13K lines) +- Streamlined user experience thanks to a completion behavior aligned with the other shells + +`Bash` completion V2 supports descriptions for completions. When calling `GenBashCompletionV2()` or `GenBashCompletionFileV2()` +you must provide these functions with a parameter indicating if the completions should be annotated with a description; Cobra +will provide the description automatically based on usage information. You can choose to make this option configurable by +your users. + +``` +# With descriptions +$ helm s[tab][tab] +search (search for a keyword in charts) status (display the status of the named release) +show (show information of a chart) + +# Without descriptions +$ helm s[tab][tab] +search show status +``` +**Note**: Cobra's default `completion` command uses bash completion V2. If for some reason you need to use bash completion V1, you will need to implement your own `completion` command. ## Zsh completions Cobra supports native zsh completion generated from the root `cobra.Command`. @@ -465,6 +543,21 @@ search for a keyword in charts $ helm s[tab] search show status ``` +### Aliases + +You can also configure `powershell` aliases for your program and they will also support completions. + +``` +$ sal aliasname origcommand +$ Register-ArgumentCompleter -CommandName 'aliasname' -ScriptBlock $__origcommandCompleterBlock + +# and now when you run `aliasname` completion will make +# suggestions as it did for `origcommand`. + +$ aliasname +completion firstcommand secondcommand +``` +The name of the completer block variable is of the form `$__CompleterBlock` where every `-` and `:` in the program name have been replaced with `_`, to respect powershell naming syntax. ### Limitations diff --git a/vendor/github.com/spf13/cobra/user_guide.md b/vendor/github.com/spf13/cobra/user_guide.md new file mode 100644 index 0000000000..85201d840c --- /dev/null +++ b/vendor/github.com/spf13/cobra/user_guide.md @@ -0,0 +1,726 @@ +# User Guide + +While you are welcome to provide your own organization, typically a Cobra-based +application will follow the following organizational structure: + +``` + ▾ appName/ + ▾ cmd/ + add.go + your.go + commands.go + here.go + main.go +``` + +In a Cobra app, typically the main.go file is very bare. It serves one purpose: initializing Cobra. + +```go +package main + +import ( + "{pathToYourApp}/cmd" +) + +func main() { + cmd.Execute() +} +``` + +## Using the Cobra Generator + +Cobra-CLI is its own program that will create your application and add any +commands you want. It's the easiest way to incorporate Cobra into your application. + +For complete details on using the Cobra generator, please refer to [The Cobra-CLI Generator README](https://github.com/spf13/cobra-cli/blob/main/README.md) + +## Using the Cobra Library + +To manually implement Cobra you need to create a bare main.go file and a rootCmd file. +You will optionally provide additional commands as you see fit. + +### Create rootCmd + +Cobra doesn't require any special constructors. Simply create your commands. + +Ideally you place this in app/cmd/root.go: + +```go +var rootCmd = &cobra.Command{ + Use: "hugo", + Short: "Hugo is a very fast static site generator", + Long: `A Fast and Flexible Static Site Generator built with + love by spf13 and friends in Go. + Complete documentation is available at https://gohugo.io/documentation/`, + Run: func(cmd *cobra.Command, args []string) { + // Do Stuff Here + }, +} + +func Execute() { + if err := rootCmd.Execute(); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} +``` + +You will additionally define flags and handle configuration in your init() function. + +For example cmd/root.go: + +```go +package cmd + +import ( + "fmt" + "os" + + "github.com/spf13/cobra" + "github.com/spf13/viper" +) + +var ( + // Used for flags. + cfgFile string + userLicense string + + rootCmd = &cobra.Command{ + Use: "cobra-cli", + Short: "A generator for Cobra based Applications", + Long: `Cobra is a CLI library for Go that empowers applications. +This application is a tool to generate the needed files +to quickly create a Cobra application.`, + } +) + +// Execute executes the root command. +func Execute() error { + return rootCmd.Execute() +} + +func init() { + cobra.OnInitialize(initConfig) + + rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.cobra.yaml)") + rootCmd.PersistentFlags().StringP("author", "a", "YOUR NAME", "author name for copyright attribution") + rootCmd.PersistentFlags().StringVarP(&userLicense, "license", "l", "", "name of license for the project") + rootCmd.PersistentFlags().Bool("viper", true, "use Viper for configuration") + viper.BindPFlag("author", rootCmd.PersistentFlags().Lookup("author")) + viper.BindPFlag("useViper", rootCmd.PersistentFlags().Lookup("viper")) + viper.SetDefault("author", "NAME HERE ") + viper.SetDefault("license", "apache") + + rootCmd.AddCommand(addCmd) + rootCmd.AddCommand(initCmd) +} + +func initConfig() { + if cfgFile != "" { + // Use config file from the flag. + viper.SetConfigFile(cfgFile) + } else { + // Find home directory. + home, err := os.UserHomeDir() + cobra.CheckErr(err) + + // Search config in home directory with name ".cobra" (without extension). + viper.AddConfigPath(home) + viper.SetConfigType("yaml") + viper.SetConfigName(".cobra") + } + + viper.AutomaticEnv() + + if err := viper.ReadInConfig(); err == nil { + fmt.Println("Using config file:", viper.ConfigFileUsed()) + } +} +``` + +### Create your main.go + +With the root command you need to have your main function execute it. +Execute should be run on the root for clarity, though it can be called on any command. + +In a Cobra app, typically the main.go file is very bare. It serves one purpose: to initialize Cobra. + +```go +package main + +import ( + "{pathToYourApp}/cmd" +) + +func main() { + cmd.Execute() +} +``` + +### Create additional commands + +Additional commands can be defined and typically are each given their own file +inside of the cmd/ directory. + +If you wanted to create a version command you would create cmd/version.go and +populate it with the following: + +```go +package cmd + +import ( + "fmt" + + "github.com/spf13/cobra" +) + +func init() { + rootCmd.AddCommand(versionCmd) +} + +var versionCmd = &cobra.Command{ + Use: "version", + Short: "Print the version number of Hugo", + Long: `All software has versions. This is Hugo's`, + Run: func(cmd *cobra.Command, args []string) { + fmt.Println("Hugo Static Site Generator v0.9 -- HEAD") + }, +} +``` + +### Organizing subcommands + +A command may have subcommands which in turn may have other subcommands. This is achieved by using +`AddCommand`. In some cases, especially in larger applications, each subcommand may be defined in +its own go package. + +The suggested approach is for the parent command to use `AddCommand` to add its most immediate +subcommands. For example, consider the following directory structure: + +```text +├── cmd +│   ├── root.go +│   └── sub1 +│   ├── sub1.go +│   └── sub2 +│   ├── leafA.go +│   ├── leafB.go +│   └── sub2.go +└── main.go +``` + +In this case: + +* The `init` function of `root.go` adds the command defined in `sub1.go` to the root command. +* The `init` function of `sub1.go` adds the command defined in `sub2.go` to the sub1 command. +* The `init` function of `sub2.go` adds the commands defined in `leafA.go` and `leafB.go` to the + sub2 command. + +This approach ensures the subcommands are always included at compile time while avoiding cyclic +references. + +### Returning and handling errors + +If you wish to return an error to the caller of a command, `RunE` can be used. + +```go +package cmd + +import ( + "fmt" + + "github.com/spf13/cobra" +) + +func init() { + rootCmd.AddCommand(tryCmd) +} + +var tryCmd = &cobra.Command{ + Use: "try", + Short: "Try and possibly fail at something", + RunE: func(cmd *cobra.Command, args []string) error { + if err := someFunc(); err != nil { + return err + } + return nil + }, +} +``` + +The error can then be caught at the execute function call. + +## Working with Flags + +Flags provide modifiers to control how the action command operates. + +### Assign flags to a command + +Since the flags are defined and used in different locations, we need to +define a variable outside with the correct scope to assign the flag to +work with. + +```go +var Verbose bool +var Source string +``` + +There are two different approaches to assign a flag. + +### Persistent Flags + +A flag can be 'persistent', meaning that this flag will be available to the +command it's assigned to as well as every command under that command. For +global flags, assign a flag as a persistent flag on the root. + +```go +rootCmd.PersistentFlags().BoolVarP(&Verbose, "verbose", "v", false, "verbose output") +``` + +### Local Flags + +A flag can also be assigned locally, which will only apply to that specific command. + +```go +localCmd.Flags().StringVarP(&Source, "source", "s", "", "Source directory to read from") +``` + +### Local Flag on Parent Commands + +By default, Cobra only parses local flags on the target command, and any local flags on +parent commands are ignored. By enabling `Command.TraverseChildren`, Cobra will +parse local flags on each command before executing the target command. + +```go +command := cobra.Command{ + Use: "print [OPTIONS] [COMMANDS]", + TraverseChildren: true, +} +``` + +### Bind Flags with Config + +You can also bind your flags with [viper](https://github.com/spf13/viper): +```go +var author string + +func init() { + rootCmd.PersistentFlags().StringVar(&author, "author", "YOUR NAME", "Author name for copyright attribution") + viper.BindPFlag("author", rootCmd.PersistentFlags().Lookup("author")) +} +``` + +In this example, the persistent flag `author` is bound with `viper`. +**Note**: the variable `author` will not be set to the value from config, +when the `--author` flag is provided by user. + +More in [viper documentation](https://github.com/spf13/viper#working-with-flags). + +### Required flags + +Flags are optional by default. If instead you wish your command to report an error +when a flag has not been set, mark it as required: +```go +rootCmd.Flags().StringVarP(&Region, "region", "r", "", "AWS region (required)") +rootCmd.MarkFlagRequired("region") +``` + +Or, for persistent flags: +```go +rootCmd.PersistentFlags().StringVarP(&Region, "region", "r", "", "AWS region (required)") +rootCmd.MarkPersistentFlagRequired("region") +``` + +### Flag Groups + +If you have different flags that must be provided together (e.g. if they provide the `--username` flag they MUST provide the `--password` flag as well) then +Cobra can enforce that requirement: +```go +rootCmd.Flags().StringVarP(&u, "username", "u", "", "Username (required if password is set)") +rootCmd.Flags().StringVarP(&pw, "password", "p", "", "Password (required if username is set)") +rootCmd.MarkFlagsRequiredTogether("username", "password") +``` + +You can also prevent different flags from being provided together if they represent mutually +exclusive options such as specifying an output format as either `--json` or `--yaml` but never both: +```go +rootCmd.Flags().BoolVar(&ofJson, "json", false, "Output in JSON") +rootCmd.Flags().BoolVar(&ofYaml, "yaml", false, "Output in YAML") +rootCmd.MarkFlagsMutuallyExclusive("json", "yaml") +``` + +In both of these cases: + - both local and persistent flags can be used + - **NOTE:** the group is only enforced on commands where every flag is defined + - a flag may appear in multiple groups + - a group may contain any number of flags + +## Positional and Custom Arguments + +Validation of positional arguments can be specified using the `Args` field of `Command`. +The following validators are built in: + +- Number of arguments: + - `NoArgs` - report an error if there are any positional args. + - `ArbitraryArgs` - accept any number of args. + - `MinimumNArgs(int)` - report an error if less than N positional args are provided. + - `MaximumNArgs(int)` - report an error if more than N positional args are provided. + - `ExactArgs(int)` - report an error if there are not exactly N positional args. + - `RangeArgs(min, max)` - report an error if the number of args is not between `min` and `max`. +- Content of the arguments: + - `OnlyValidArgs` - report an error if there are any positional args not specified in the `ValidArgs` field of `Command`, which can optionally be set to a list of valid values for positional args. + +If `Args` is undefined or `nil`, it defaults to `ArbitraryArgs`. + +Moreover, `MatchAll(pargs ...PositionalArgs)` enables combining existing checks with arbitrary other checks. +For instance, if you want to report an error if there are not exactly N positional args OR if there are any positional +args that are not in the `ValidArgs` field of `Command`, you can call `MatchAll` on `ExactArgs` and `OnlyValidArgs`, as +shown below: + +```go +var cmd = &cobra.Command{ + Short: "hello", + Args: cobra.MatchAll(cobra.ExactArgs(2), cobra.OnlyValidArgs), + Run: func(cmd *cobra.Command, args []string) { + fmt.Println("Hello, World!") + }, +} +``` + +It is possible to set any custom validator that satisfies `func(cmd *cobra.Command, args []string) error`. +For example: + +```go +var cmd = &cobra.Command{ + Short: "hello", + Args: func(cmd *cobra.Command, args []string) error { + // Optionally run one of the validators provided by cobra + if err := cobra.MinimumNArgs(1)(cmd, args); err != nil { + return err + } + // Run the custom validation logic + if myapp.IsValidColor(args[0]) { + return nil + } + return fmt.Errorf("invalid color specified: %s", args[0]) + }, + Run: func(cmd *cobra.Command, args []string) { + fmt.Println("Hello, World!") + }, +} +``` + +## Example + +In the example below, we have defined three commands. Two are at the top level +and one (cmdTimes) is a child of one of the top commands. In this case the root +is not executable, meaning that a subcommand is required. This is accomplished +by not providing a 'Run' for the 'rootCmd'. + +We have only defined one flag for a single command. + +More documentation about flags is available at https://github.com/spf13/pflag + +```go +package main + +import ( + "fmt" + "strings" + + "github.com/spf13/cobra" +) + +func main() { + var echoTimes int + + var cmdPrint = &cobra.Command{ + Use: "print [string to print]", + Short: "Print anything to the screen", + Long: `print is for printing anything back to the screen. +For many years people have printed back to the screen.`, + Args: cobra.MinimumNArgs(1), + Run: func(cmd *cobra.Command, args []string) { + fmt.Println("Print: " + strings.Join(args, " ")) + }, + } + + var cmdEcho = &cobra.Command{ + Use: "echo [string to echo]", + Short: "Echo anything to the screen", + Long: `echo is for echoing anything back. +Echo works a lot like print, except it has a child command.`, + Args: cobra.MinimumNArgs(1), + Run: func(cmd *cobra.Command, args []string) { + fmt.Println("Echo: " + strings.Join(args, " ")) + }, + } + + var cmdTimes = &cobra.Command{ + Use: "times [string to echo]", + Short: "Echo anything to the screen more times", + Long: `echo things multiple times back to the user by providing +a count and a string.`, + Args: cobra.MinimumNArgs(1), + Run: func(cmd *cobra.Command, args []string) { + for i := 0; i < echoTimes; i++ { + fmt.Println("Echo: " + strings.Join(args, " ")) + } + }, + } + + cmdTimes.Flags().IntVarP(&echoTimes, "times", "t", 1, "times to echo the input") + + var rootCmd = &cobra.Command{Use: "app"} + rootCmd.AddCommand(cmdPrint, cmdEcho) + cmdEcho.AddCommand(cmdTimes) + rootCmd.Execute() +} +``` + +For a more complete example of a larger application, please checkout [Hugo](https://gohugo.io/). + +## Help Command + +Cobra automatically adds a help command to your application when you have subcommands. +This will be called when a user runs 'app help'. Additionally, help will also +support all other commands as input. Say, for instance, you have a command called +'create' without any additional configuration; Cobra will work when 'app help +create' is called. Every command will automatically have the '--help' flag added. + +### Example + +The following output is automatically generated by Cobra. Nothing beyond the +command and flag definitions are needed. + + $ cobra-cli help + + Cobra is a CLI library for Go that empowers applications. + This application is a tool to generate the needed files + to quickly create a Cobra application. + + Usage: + cobra-cli [command] + + Available Commands: + add Add a command to a Cobra Application + completion Generate the autocompletion script for the specified shell + help Help about any command + init Initialize a Cobra Application + + Flags: + -a, --author string author name for copyright attribution (default "YOUR NAME") + --config string config file (default is $HOME/.cobra.yaml) + -h, --help help for cobra-cli + -l, --license string name of license for the project + --viper use Viper for configuration + + Use "cobra-cli [command] --help" for more information about a command. + + +Help is just a command like any other. There is no special logic or behavior +around it. In fact, you can provide your own if you want. + +### Grouping commands in help + +Cobra supports grouping of available commands in the help output. To group commands, each group must be explicitly +defined using `AddGroup()` on the parent command. Then a subcommand can be added to a group using the `GroupID` element +of that subcommand. The groups will appear in the help output in the same order as they are defined using different +calls to `AddGroup()`. If you use the generated `help` or `completion` commands, you can set their group ids using +`SetHelpCommandGroupId()` and `SetCompletionCommandGroupId()` on the root command, respectively. + +### Defining your own help + +You can provide your own Help command or your own template for the default command to use +with the following functions: + +```go +cmd.SetHelpCommand(cmd *Command) +cmd.SetHelpFunc(f func(*Command, []string)) +cmd.SetHelpTemplate(s string) +``` + +The latter two will also apply to any children commands. + +## Usage Message + +When the user provides an invalid flag or invalid command, Cobra responds by +showing the user the 'usage'. + +### Example +You may recognize this from the help above. That's because the default help +embeds the usage as part of its output. + + $ cobra-cli --invalid + Error: unknown flag: --invalid + Usage: + cobra-cli [command] + + Available Commands: + add Add a command to a Cobra Application + completion Generate the autocompletion script for the specified shell + help Help about any command + init Initialize a Cobra Application + + Flags: + -a, --author string author name for copyright attribution (default "YOUR NAME") + --config string config file (default is $HOME/.cobra.yaml) + -h, --help help for cobra-cli + -l, --license string name of license for the project + --viper use Viper for configuration + + Use "cobra [command] --help" for more information about a command. + +### Defining your own usage +You can provide your own usage function or template for Cobra to use. +Like help, the function and template are overridable through public methods: + +```go +cmd.SetUsageFunc(f func(*Command) error) +cmd.SetUsageTemplate(s string) +``` + +## Version Flag + +Cobra adds a top-level '--version' flag if the Version field is set on the root command. +Running an application with the '--version' flag will print the version to stdout using +the version template. The template can be customized using the +`cmd.SetVersionTemplate(s string)` function. + +## PreRun and PostRun Hooks + +It is possible to run functions before or after the main `Run` function of your command. The `PersistentPreRun` and `PreRun` functions will be executed before `Run`. `PersistentPostRun` and `PostRun` will be executed after `Run`. The `Persistent*Run` functions will be inherited by children if they do not declare their own. These functions are run in the following order: + +- `PersistentPreRun` +- `PreRun` +- `Run` +- `PostRun` +- `PersistentPostRun` + +An example of two commands which use all of these features is below. When the subcommand is executed, it will run the root command's `PersistentPreRun` but not the root command's `PersistentPostRun`: + +```go +package main + +import ( + "fmt" + + "github.com/spf13/cobra" +) + +func main() { + + var rootCmd = &cobra.Command{ + Use: "root [sub]", + Short: "My root command", + PersistentPreRun: func(cmd *cobra.Command, args []string) { + fmt.Printf("Inside rootCmd PersistentPreRun with args: %v\n", args) + }, + PreRun: func(cmd *cobra.Command, args []string) { + fmt.Printf("Inside rootCmd PreRun with args: %v\n", args) + }, + Run: func(cmd *cobra.Command, args []string) { + fmt.Printf("Inside rootCmd Run with args: %v\n", args) + }, + PostRun: func(cmd *cobra.Command, args []string) { + fmt.Printf("Inside rootCmd PostRun with args: %v\n", args) + }, + PersistentPostRun: func(cmd *cobra.Command, args []string) { + fmt.Printf("Inside rootCmd PersistentPostRun with args: %v\n", args) + }, + } + + var subCmd = &cobra.Command{ + Use: "sub [no options!]", + Short: "My subcommand", + PreRun: func(cmd *cobra.Command, args []string) { + fmt.Printf("Inside subCmd PreRun with args: %v\n", args) + }, + Run: func(cmd *cobra.Command, args []string) { + fmt.Printf("Inside subCmd Run with args: %v\n", args) + }, + PostRun: func(cmd *cobra.Command, args []string) { + fmt.Printf("Inside subCmd PostRun with args: %v\n", args) + }, + PersistentPostRun: func(cmd *cobra.Command, args []string) { + fmt.Printf("Inside subCmd PersistentPostRun with args: %v\n", args) + }, + } + + rootCmd.AddCommand(subCmd) + + rootCmd.SetArgs([]string{""}) + rootCmd.Execute() + fmt.Println() + rootCmd.SetArgs([]string{"sub", "arg1", "arg2"}) + rootCmd.Execute() +} +``` + +Output: +``` +Inside rootCmd PersistentPreRun with args: [] +Inside rootCmd PreRun with args: [] +Inside rootCmd Run with args: [] +Inside rootCmd PostRun with args: [] +Inside rootCmd PersistentPostRun with args: [] + +Inside rootCmd PersistentPreRun with args: [arg1 arg2] +Inside subCmd PreRun with args: [arg1 arg2] +Inside subCmd Run with args: [arg1 arg2] +Inside subCmd PostRun with args: [arg1 arg2] +Inside subCmd PersistentPostRun with args: [arg1 arg2] +``` + +## Suggestions when "unknown command" happens + +Cobra will print automatic suggestions when "unknown command" errors happen. This allows Cobra to behave similarly to the `git` command when a typo happens. For example: + +``` +$ hugo srever +Error: unknown command "srever" for "hugo" + +Did you mean this? + server + +Run 'hugo --help' for usage. +``` + +Suggestions are automatically generated based on existing subcommands and use an implementation of [Levenshtein distance](https://en.wikipedia.org/wiki/Levenshtein_distance). Every registered command that matches a minimum distance of 2 (ignoring case) will be displayed as a suggestion. + +If you need to disable suggestions or tweak the string distance in your command, use: + +```go +command.DisableSuggestions = true +``` + +or + +```go +command.SuggestionsMinimumDistance = 1 +``` + +You can also explicitly set names for which a given command will be suggested using the `SuggestFor` attribute. This allows suggestions for strings that are not close in terms of string distance, but make sense in your set of commands but for which +you don't want aliases. Example: + +``` +$ kubectl remove +Error: unknown command "remove" for "kubectl" + +Did you mean this? + delete + +Run 'kubectl help' for usage. +``` + +## Generating documentation for your command + +Cobra can generate documentation based on subcommands, flags, etc. Read more about it in the [docs generation documentation](doc/README.md). + +## Generating shell completions + +Cobra can generate a shell-completion file for the following shells: bash, zsh, fish, PowerShell. If you add more information to your commands, these completions can be amazingly powerful and flexible. Read more about it in [Shell Completions](shell_completions.md). + +## Providing Active Help + +Cobra makes use of the shell-completion system to define a framework allowing you to provide Active Help to your users. Active Help are messages (hints, warnings, etc) printed as the program is being used. Read more about it in [Active Help](active_help.md). diff --git a/vendor/github.com/spf13/cobra/zsh_completions.go b/vendor/github.com/spf13/cobra/zsh_completions.go index 2e840285f3..1856e4c7f6 100644 --- a/vendor/github.com/spf13/cobra/zsh_completions.go +++ b/vendor/github.com/spf13/cobra/zsh_completions.go @@ -1,3 +1,17 @@ +// Copyright 2013-2023 The Cobra Authors +// +// 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 cobra import ( @@ -75,7 +89,8 @@ func genZshComp(buf io.StringWriter, name string, includeDesc bool) { if !includeDesc { compCmd = ShellCompNoDescRequestCmd } - WriteStringAndCheck(buf, fmt.Sprintf(`#compdef _%[1]s %[1]s + WriteStringAndCheck(buf, fmt.Sprintf(`#compdef %[1]s +compdef _%[1]s %[1]s # zsh completion for %-36[1]s -*- shell-script -*- @@ -94,8 +109,9 @@ _%[1]s() local shellCompDirectiveNoFileComp=%[5]d local shellCompDirectiveFilterFileExt=%[6]d local shellCompDirectiveFilterDirs=%[7]d + local shellCompDirectiveKeepOrder=%[8]d - local lastParam lastChar flagPrefix requestComp out directive compCount comp lastComp + local lastParam lastChar flagPrefix requestComp out directive comp lastComp noSpace keepOrder local -a completions __%[1]s_debug "\n========= starting completion logic ==========" @@ -163,8 +179,24 @@ _%[1]s() return fi - compCount=0 + local activeHelpMarker="%[9]s" + local endIndex=${#activeHelpMarker} + local startIndex=$((${#activeHelpMarker}+1)) + local hasActiveHelp=0 while IFS='\n' read -r comp; do + # Check if this is an activeHelp statement (i.e., prefixed with $activeHelpMarker) + if [ "${comp[1,$endIndex]}" = "$activeHelpMarker" ];then + __%[1]s_debug "ActiveHelp found: $comp" + comp="${comp[$startIndex,-1]}" + if [ -n "$comp" ]; then + compadd -x "${comp}" + __%[1]s_debug "ActiveHelp will need delimiter" + hasActiveHelp=1 + fi + + continue + fi + if [ -n "$comp" ]; then # If requested, completions are returned with a description. # The description is preceded by a TAB character. @@ -172,16 +204,36 @@ _%[1]s() # We first need to escape any : as part of the completion itself. comp=${comp//:/\\:} - local tab=$(printf '\t') + local tab="$(printf '\t')" comp=${comp//$tab/:} - ((compCount++)) __%[1]s_debug "Adding completion: ${comp}" completions+=${comp} lastComp=$comp fi done < <(printf "%%s\n" "${out[@]}") + # Add a delimiter after the activeHelp statements, but only if: + # - there are completions following the activeHelp statements, or + # - file completion will be performed (so there will be choices after the activeHelp) + if [ $hasActiveHelp -eq 1 ]; then + if [ ${#completions} -ne 0 ] || [ $((directive & shellCompDirectiveNoFileComp)) -eq 0 ]; then + __%[1]s_debug "Adding activeHelp delimiter" + compadd -x "--" + hasActiveHelp=0 + fi + fi + + if [ $((directive & shellCompDirectiveNoSpace)) -ne 0 ]; then + __%[1]s_debug "Activating nospace." + noSpace="-S ''" + fi + + if [ $((directive & shellCompDirectiveKeepOrder)) -ne 0 ]; then + __%[1]s_debug "Activating keep order." + keepOrder="-V" + fi + if [ $((directive & shellCompDirectiveFilterFileExt)) -ne 0 ]; then # File extension filtering local filteringCmd @@ -199,7 +251,7 @@ _%[1]s() _arguments '*:filename:'"$filteringCmd" elif [ $((directive & shellCompDirectiveFilterDirs)) -ne 0 ]; then # File completion for directories only - local subDir + local subdir subdir="${completions[1]}" if [ -n "$subdir" ]; then __%[1]s_debug "Listing directories in $subdir" @@ -208,33 +260,49 @@ _%[1]s() __%[1]s_debug "Listing directories in ." fi + local result _arguments '*:dirname:_files -/'" ${flagPrefix}" + result=$? if [ -n "$subdir" ]; then popd >/dev/null 2>&1 fi - elif [ $((directive & shellCompDirectiveNoSpace)) -ne 0 ] && [ ${compCount} -eq 1 ]; then - __%[1]s_debug "Activating nospace." - # We can use compadd here as there is no description when - # there is only one completion. - compadd -S '' "${lastComp}" - elif [ ${compCount} -eq 0 ]; then - if [ $((directive & shellCompDirectiveNoFileComp)) -ne 0 ]; then - __%[1]s_debug "deactivating file completion" + return $result + else + __%[1]s_debug "Calling _describe" + if eval _describe $keepOrder "completions" completions $flagPrefix $noSpace; then + __%[1]s_debug "_describe found some completions" + + # Return the success of having called _describe + return 0 else - # Perform file completion - __%[1]s_debug "activating file completion" - _arguments '*:filename:_files'" ${flagPrefix}" + __%[1]s_debug "_describe did not find completions." + __%[1]s_debug "Checking if we should do file completion." + if [ $((directive & shellCompDirectiveNoFileComp)) -ne 0 ]; then + __%[1]s_debug "deactivating file completion" + + # We must return an error code here to let zsh know that there were no + # completions found by _describe; this is what will trigger other + # matching algorithms to attempt to find completions. + # For example zsh can match letters in the middle of words. + return 1 + else + # Perform file completion + __%[1]s_debug "Activating file completion" + + # We must return the result of this command, so it must be the + # last command, or else we must store its result to return it. + _arguments '*:filename:_files'" ${flagPrefix}" + fi fi - else - _describe "completions" completions $(echo $flagPrefix) fi } # don't run the completion function when being source-ed or eval-ed if [ "$funcstack[1]" = "_%[1]s" ]; then - _%[1]s + _%[1]s fi `, name, compCmd, ShellCompDirectiveError, ShellCompDirectiveNoSpace, ShellCompDirectiveNoFileComp, - ShellCompDirectiveFilterFileExt, ShellCompDirectiveFilterDirs)) + ShellCompDirectiveFilterFileExt, ShellCompDirectiveFilterDirs, ShellCompDirectiveKeepOrder, + activeHelpMarker)) } diff --git a/vendor/go.starlark.net/internal/compile/compile.go b/vendor/go.starlark.net/internal/compile/compile.go index c314e6e638..ecf689f05e 100644 --- a/vendor/go.starlark.net/internal/compile/compile.go +++ b/vendor/go.starlark.net/internal/compile/compile.go @@ -23,7 +23,6 @@ // // Operands, logically uint32s, are encoded using little-endian 7-bit // varints, the top bit indicating that more bytes follow. -// package compile // import "go.starlark.net/internal/compile" import ( @@ -47,7 +46,7 @@ var Disassemble = false const debug = false // make code generation verbose, for debugging the compiler // Increment this to force recompilation of saved bytecode files. -const Version = 12 +const Version = 14 type Opcode uint8 @@ -100,18 +99,19 @@ const ( FALSE // - FALSE False MANDATORY // - MANDATORY Mandatory [sentinel value for required kwonly args] - ITERPUSH // iterable ITERPUSH - [pushes the iterator stack] - ITERPOP // - ITERPOP - [pops the iterator stack] - NOT // value NOT bool - RETURN // value RETURN - - SETINDEX // a i new SETINDEX - - INDEX // a i INDEX elem - SETDICT // dict key value SETDICT - - SETDICTUNIQ // dict key value SETDICTUNIQ - - APPEND // list elem APPEND - - SLICE // x lo hi step SLICE slice - INPLACE_ADD // x y INPLACE_ADD z where z is x+y or x.extend(y) - MAKEDICT // - MAKEDICT dict + ITERPUSH // iterable ITERPUSH - [pushes the iterator stack] + ITERPOP // - ITERPOP - [pops the iterator stack] + NOT // value NOT bool + RETURN // value RETURN - + SETINDEX // a i new SETINDEX - + INDEX // a i INDEX elem + SETDICT // dict key value SETDICT - + SETDICTUNIQ // dict key value SETDICTUNIQ - + APPEND // list elem APPEND - + SLICE // x lo hi step SLICE slice + INPLACE_ADD // x y INPLACE_ADD z where z is x+y or x.extend(y) + INPLACE_PIPE // x y INPLACE_PIPE z where z is x|y + MAKEDICT // - MAKEDICT dict // --- opcodes with an argument must go below this line --- @@ -177,6 +177,7 @@ var opcodeNames = [...]string{ IN: "in", INDEX: "index", INPLACE_ADD: "inplace_add", + INPLACE_PIPE: "inplace_pipe", ITERJMP: "iterjmp", ITERPOP: "iterpop", ITERPUSH: "iterpush", @@ -250,6 +251,7 @@ var stackEffect = [...]int8{ IN: -1, INDEX: -1, INPLACE_ADD: -1, + INPLACE_PIPE: -1, ITERJMP: variableStackEffect, ITERPOP: 0, ITERPUSH: -1, @@ -314,6 +316,7 @@ type Program struct { Functions []*Funcode Globals []Binding // for error messages and tracing Toplevel *Funcode // module initialization function + Recursion bool // disable recursion check for functions in this file } // The type of a bytes literal value, to distinguish from text string. @@ -483,17 +486,20 @@ func bindings(bindings []*resolve.Binding) []Binding { } // Expr compiles an expression to a program whose toplevel function evaluates it. -func Expr(expr syntax.Expr, name string, locals []*resolve.Binding) *Program { +// The options must be consistent with those used when parsing expr. +func Expr(opts *syntax.FileOptions, expr syntax.Expr, name string, locals []*resolve.Binding) *Program { pos := syntax.Start(expr) stmts := []syntax.Stmt{&syntax.ReturnStmt{Result: expr}} - return File(stmts, pos, name, locals, nil) + return File(opts, stmts, pos, name, locals, nil) } // File compiles the statements of a file into a program. -func File(stmts []syntax.Stmt, pos syntax.Position, name string, locals, globals []*resolve.Binding) *Program { +// The options must be consistent with those used when parsing stmts. +func File(opts *syntax.FileOptions, stmts []syntax.Stmt, pos syntax.Position, name string, locals, globals []*resolve.Binding) *Program { pcomp := &pcomp{ prog: &Program{ - Globals: bindings(globals), + Globals: bindings(globals), + Recursion: opts.Recursion, }, names: make(map[string]uint32), constants: make(map[interface{}]uint32), @@ -1145,11 +1151,16 @@ func (fcomp *fcomp) stmt(stmt syntax.Stmt) { fcomp.expr(stmt.RHS) - if stmt.Op == syntax.PLUS_EQ { - // Allow the runtime to optimize list += iterable. + // In-place x+=y and x|=y have special semantics: + // the resulting x aliases the original x. + switch stmt.Op { + case syntax.PLUS_EQ: fcomp.setPos(stmt.OpPos) fcomp.emit(INPLACE_ADD) - } else { + case syntax.PIPE_EQ: + fcomp.setPos(stmt.OpPos) + fcomp.emit(INPLACE_PIPE) + default: fcomp.binop(stmt.OpPos, stmt.Op-syntax.PLUS_EQ+syntax.PLUS) } set() diff --git a/vendor/go.starlark.net/internal/compile/serial.go b/vendor/go.starlark.net/internal/compile/serial.go index adadabfc22..4d71738cce 100644 --- a/vendor/go.starlark.net/internal/compile/serial.go +++ b/vendor/go.starlark.net/internal/compile/serial.go @@ -25,6 +25,7 @@ package compile // toplevel Funcode // numfuncs varint // funcs []Funcode +// recursion varint (0 or 1) // []byte # concatenation of all referenced strings // EOF // @@ -130,6 +131,7 @@ func (prog *Program) Encode() []byte { for _, fn := range prog.Functions { e.function(fn) } + e.int(b2i(prog.Recursion)) // Patch in the offset of the string data section. binary.LittleEndian.PutUint32(e.p[4:8], uint32(len(e.p))) @@ -270,6 +272,7 @@ func DecodeProgram(data []byte) (_ *Program, err error) { for i := range funcs { funcs[i] = d.function() } + recursion := d.int() != 0 prog := &Program{ Loads: loads, @@ -278,6 +281,7 @@ func DecodeProgram(data []byte) (_ *Program, err error) { Globals: globals, Functions: funcs, Toplevel: toplevel, + Recursion: recursion, } toplevel.Prog = prog for _, f := range funcs { diff --git a/vendor/go.starlark.net/lib/time/time.go b/vendor/go.starlark.net/lib/time/time.go index de8bf53350..530716ccd3 100644 --- a/vendor/go.starlark.net/lib/time/time.go +++ b/vendor/go.starlark.net/lib/time/time.go @@ -6,6 +6,7 @@ package time // import "go.starlark.net/lib/time" import ( + "errors" "fmt" "sort" "time" @@ -29,7 +30,7 @@ import ( // parse_duration(d) - Parses the given duration string. For more details, refer to // https://pkg.go.dev/time#ParseDuration. // -// parseTime(x, format, location) - Parses the given time string using a specific time format and location. +// parse_time(x, format, location) - Parses the given time string using a specific time format and location. // The expected arguments are a time string (mandatory), a time format // (optional, set to RFC3339 by default, e.g. "2021-03-22T23:20:50.52Z") // and a name of location (optional, set to UTC by default). For more details, @@ -68,11 +69,29 @@ var Module = &starlarkstruct.Module{ }, } -// NowFunc is a function that generates the current time. Intentionally exported +// NowFunc is a function that reports the current time. Intentionally exported // so that it can be overridden, for example by applications that require their // Starlark scripts to be fully deterministic. +// +// Deprecated: avoid updating this global variable +// and instead use SetNow on each thread to set its clock function. var NowFunc = time.Now +const contextKey = "time.now" + +// SetNow sets the thread's optional clock function. +// If non-nil, it will be used in preference to NowFunc when the +// thread requests the current time by executing a call to time.now. +func SetNow(thread *starlark.Thread, nowFunc func() (time.Time, error)) { + thread.SetLocal(contextKey, nowFunc) +} + +// Now returns the clock function previously associated with this thread. +func Now(thread *starlark.Thread) func() (time.Time, error) { + nowFunc, _ := thread.Local(contextKey).(func() (time.Time, error)) + return nowFunc +} + func parseDuration(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { var d Duration err := starlark.UnpackPositionalArgs("parse_duration", args, kwargs, 1, &d) @@ -129,7 +148,19 @@ func fromTimestamp(thread *starlark.Thread, _ *starlark.Builtin, args starlark.T } func now(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - return Time(NowFunc()), nil + nowErrFunc := Now(thread) + if nowErrFunc != nil { + t, err := nowErrFunc() + if err != nil { + return nil, err + } + return Time(t), nil + } + nowFunc := NowFunc + if nowFunc == nil { + return nil, errors.New("time.now() is not available") + } + return Time(nowFunc()), nil } // Duration is a Starlark representation of a duration. @@ -209,16 +240,15 @@ func (d Duration) AttrNames() []string { } } -// CompareSameType implements comparison of two Duration values. required by -// starlark.Comparable interface. -func (d Duration) CompareSameType(op syntax.Token, v starlark.Value, depth int) (bool, error) { - cmp := 0 +// Cmp implements comparison of two Duration values. required by +// starlark.TotallyOrdered interface. +func (d Duration) Cmp(v starlark.Value, depth int) (int, error) { if x, y := d, v.(Duration); x < y { - cmp = -1 + return -1, nil } else if x > y { - cmp = 1 + return 1, nil } - return threeway(op, cmp), nil + return 0, nil } // Binary implements binary operators, which satisfies the starlark.HasBinary @@ -348,7 +378,7 @@ func (t Time) Hash() (uint32, error) { // Truth returns the truth value of an object required by starlark.Value // interface. -func (t Time) Truth() starlark.Bool { return starlark.Bool(time.Time(t).IsZero()) } +func (t Time) Truth() starlark.Bool { return !starlark.Bool(time.Time(t).IsZero()) } // Attr gets a value for a string attribute, implementing dot expression support // in starklark. required by starlark.HasAttrs interface. @@ -392,18 +422,17 @@ func (t Time) AttrNames() []string { ) } -// CompareSameType implements comparison of two Time values. required by -// starlark.Comparable interface. -func (t Time) CompareSameType(op syntax.Token, yV starlark.Value, depth int) (bool, error) { +// Cmp implements comparison of two Time values. Required by +// starlark.TotallyOrdered interface. +func (t Time) Cmp(yV starlark.Value, depth int) (int, error) { x := time.Time(t) y := time.Time(yV.(Time)) - cmp := 0 if x.Before(y) { - cmp = -1 + return -1, nil } else if x.After(y) { - cmp = 1 + return 1, nil } - return threeway(op, cmp), nil + return 0, nil } // Binary implements binary operators, which satisfies the starlark.HasBinary @@ -485,23 +514,3 @@ func builtinAttrNames(methods map[string]builtinMethod) []string { sort.Strings(names) return names } - -// Threeway interprets a three-way comparison value cmp (-1, 0, +1) -// as a boolean comparison (e.g. x < y). -func threeway(op syntax.Token, cmp int) bool { - switch op { - case syntax.EQL: - return cmp == 0 - case syntax.NEQ: - return cmp != 0 - case syntax.LE: - return cmp <= 0 - case syntax.LT: - return cmp < 0 - case syntax.GE: - return cmp >= 0 - case syntax.GT: - return cmp > 0 - } - panic(op) -} diff --git a/vendor/go.starlark.net/resolve/binding.go b/vendor/go.starlark.net/resolve/binding.go index 6b99f4b973..8507e64c71 100644 --- a/vendor/go.starlark.net/resolve/binding.go +++ b/vendor/go.starlark.net/resolve/binding.go @@ -10,7 +10,7 @@ import "go.starlark.net/syntax" // We cannot guarantee API stability for these types // as they are closely tied to the implementation. -// A Binding contains resolver information about an identifer. +// A Binding contains resolver information about an identifier. // The resolver populates the Binding field of each syntax.Identifier. // The Binding ties together all identifiers that denote the same variable. type Binding struct { diff --git a/vendor/go.starlark.net/resolve/resolve.go b/vendor/go.starlark.net/resolve/resolve.go index 56e33ba52c..c576a6baf2 100644 --- a/vendor/go.starlark.net/resolve/resolve.go +++ b/vendor/go.starlark.net/resolve/resolve.go @@ -97,6 +97,9 @@ const doesnt = "this Starlark dialect does not " // global options // These features are either not standard Starlark (yet), or deprecated // features of the BUILD language, so we put them behind flags. +// +// Deprecated: use an explicit [syntax.FileOptions] argument instead, +// as it avoids all the usual problems of global variables. var ( AllowSet = false // allow the 'set' built-in AllowGlobalReassign = false // allow reassignment to top-level names; also, allow if/for/while at top-level @@ -130,7 +133,7 @@ func File(file *syntax.File, isPredeclared, isUniversal func(name string) bool) // REPLChunk is a generalization of the File function that supports a // non-empty initial global block, as occurs in a REPL. func REPLChunk(file *syntax.File, isGlobal, isPredeclared, isUniversal func(name string) bool) error { - r := newResolver(isGlobal, isPredeclared, isUniversal) + r := newResolver(file.Options, isGlobal, isPredeclared, isUniversal) r.stmts(file.Stmts) r.env.resolveLocalUses() @@ -151,12 +154,18 @@ func REPLChunk(file *syntax.File, isGlobal, isPredeclared, isUniversal func(name return nil } -// Expr resolves the specified expression. +// Expr calls [ExprOptions] using [syntax.LegacyFileOptions]. +// Deprecated: relies on legacy global variables. +func Expr(expr syntax.Expr, isPredeclared, isUniversal func(name string) bool) ([]*Binding, error) { + return ExprOptions(syntax.LegacyFileOptions(), expr, isPredeclared, isUniversal) +} + +// ExprOptions resolves the specified expression. // It returns the local variables bound within the expression. // -// The isPredeclared and isUniversal predicates behave as for the File function. -func Expr(expr syntax.Expr, isPredeclared, isUniversal func(name string) bool) ([]*Binding, error) { - r := newResolver(nil, isPredeclared, isUniversal) +// The isPredeclared and isUniversal predicates behave as for the File function +func ExprOptions(opts *syntax.FileOptions, expr syntax.Expr, isPredeclared, isUniversal func(name string) bool) ([]*Binding, error) { + r := newResolver(opts, nil, isPredeclared, isUniversal) r.expr(expr) r.env.resolveLocalUses() r.resolveNonLocalUses(r.env) // globals & universals @@ -179,9 +188,10 @@ type Error struct { func (e Error) Error() string { return e.Pos.String() + ": " + e.Msg } -func newResolver(isGlobal, isPredeclared, isUniversal func(name string) bool) *resolver { +func newResolver(options *syntax.FileOptions, isGlobal, isPredeclared, isUniversal func(name string) bool) *resolver { file := new(block) return &resolver{ + options: options, file: file, env: file, isGlobal: isGlobal, @@ -193,6 +203,8 @@ func newResolver(isGlobal, isPredeclared, isUniversal func(name string) bool) *r } type resolver struct { + options *syntax.FileOptions + // env is the current local environment: // a linked list of blocks, innermost first. // The tail of the list is the file block. @@ -314,7 +326,7 @@ func (r *resolver) bind(id *syntax.Ident) bool { r.moduleGlobals = append(r.moduleGlobals, bind) } } - if ok && !AllowGlobalReassign { + if ok && !r.options.GlobalReassign { r.errorf(id.NamePos, "cannot reassign %s %s declared at %s", bind.Scope, id.Name, bind.First.NamePos) } @@ -382,7 +394,7 @@ func (r *resolver) use(id *syntax.Ident) { // We will piggyback support for the legacy semantics on the // AllowGlobalReassign flag, which is loosely related and also // required for Bazel. - if AllowGlobalReassign && r.env == r.file { + if r.options.GlobalReassign && r.env == r.file { r.useToplevel(use) return } @@ -420,7 +432,7 @@ func (r *resolver) useToplevel(use use) (bind *Binding) { r.predeclared[id.Name] = bind // save it } else if r.isUniversal(id.Name) { // use of universal name - if !AllowSet && id.Name == "set" { + if !r.options.Set && id.Name == "set" { r.errorf(id.NamePos, doesnt+"support sets") } bind = &Binding{Scope: Universal} @@ -493,7 +505,7 @@ func (r *resolver) stmt(stmt syntax.Stmt) { } case *syntax.IfStmt: - if !AllowGlobalReassign && r.container().function == nil { + if !r.options.TopLevelControl && r.container().function == nil { r.errorf(stmt.If, "if statement not within a function") } r.expr(stmt.Cond) @@ -519,7 +531,7 @@ func (r *resolver) stmt(stmt syntax.Stmt) { r.function(fn, stmt.Def) case *syntax.ForStmt: - if !AllowGlobalReassign && r.container().function == nil { + if !r.options.TopLevelControl && r.container().function == nil { r.errorf(stmt.For, "for loop not within a function") } r.expr(stmt.X) @@ -530,10 +542,10 @@ func (r *resolver) stmt(stmt syntax.Stmt) { r.loops-- case *syntax.WhileStmt: - if !AllowRecursion { + if !r.options.While { r.errorf(stmt.While, doesnt+"support while loops") } - if !AllowGlobalReassign && r.container().function == nil { + if !r.options.TopLevelControl && r.container().function == nil { r.errorf(stmt.While, "while loop not within a function") } r.expr(stmt.Cond) @@ -569,9 +581,9 @@ func (r *resolver) stmt(stmt syntax.Stmt) { } id := stmt.To[i] - if LoadBindsGlobally { + if r.options.LoadBindsGlobally { r.bind(id) - } else if r.bindLocal(id) && !AllowGlobalReassign { + } else if r.bindLocal(id) && !r.options.GlobalReassign { // "Global" in AllowGlobalReassign is a misnomer for "toplevel". // Sadly we can't report the previous declaration // as id.Binding may not be set yet. @@ -746,7 +758,7 @@ func (r *resolver) expr(e syntax.Expr) { } x := binop.X.(*syntax.Ident) if seenName[x.Name] { - r.errorf(x.NamePos, "keyword argument %s repeated", x.Name) + r.errorf(x.NamePos, "keyword argument %q is repeated", x.Name) } else { if seenName == nil { seenName = make(map[string]bool) diff --git a/vendor/go.starlark.net/starlark/eval.go b/vendor/go.starlark.net/starlark/eval.go index 49d4756b8e..99e83a148e 100644 --- a/vendor/go.starlark.net/starlark/eval.go +++ b/vendor/go.starlark.net/starlark/eval.go @@ -7,7 +7,6 @@ package starlark import ( "fmt" "io" - "io/ioutil" "log" "math/big" "sort" @@ -51,8 +50,13 @@ type Thread struct { // The default behavior is to call thread.Cancel("too many steps"). OnMaxSteps func(thread *Thread) - // steps counts abstract computation steps executed by this thread. - steps, maxSteps uint64 + // Steps a count of abstract computation steps executed + // by this thread. It is incremented by the interpreter. It may be used + // as a measure of the approximate cost of Starlark execution, by + // computing the difference in its value before and after a computation. + // + // The precise meaning of "step" is not specified and may change. + Steps, maxSteps uint64 // cancelReason records the reason from the first call to Cancel. cancelReason *string @@ -65,14 +69,9 @@ type Thread struct { proftime time.Duration } -// ExecutionSteps returns a count of abstract computation steps executed -// by this thread. It is incremented by the interpreter. It may be used -// as a measure of the approximate cost of Starlark execution, by -// computing the difference in its value before and after a computation. -// -// The precise meaning of "step" is not specified and may change. +// ExecutionSteps returns the current value of Steps. func (thread *Thread) ExecutionSteps() uint64 { - return thread.steps + return thread.Steps } // SetMaxExecutionSteps sets a limit on the number of Starlark @@ -84,12 +83,20 @@ func (thread *Thread) SetMaxExecutionSteps(max uint64) { thread.maxSteps = max } +// Uncancel resets the cancellation state. +// +// Unlike most methods of Thread, it is safe to call Uncancel from any +// goroutine, even if the thread is actively executing. +func (thread *Thread) Uncancel() { + atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&thread.cancelReason)), nil) +} + // Cancel causes execution of Starlark code in the specified thread to // promptly fail with an EvalError that includes the specified reason. // There may be a delay before the interpreter observes the cancellation // if the thread is currently in a call to a built-in function. // -// Cancellation cannot be undone. +// Call [Uncancel] to reset the cancellation state. // // Unlike most methods of Thread, it is safe to call Cancel from any // goroutine, even if the thread is actively executing. @@ -317,7 +324,13 @@ func (prog *Program) Write(out io.Writer) error { return err } -// ExecFile parses, resolves, and executes a Starlark file in the +// ExecFile calls [ExecFileOptions] using [syntax.LegacyFileOptions]. +// Deprecated: relies on legacy global variables. +func ExecFile(thread *Thread, filename string, src interface{}, predeclared StringDict) (StringDict, error) { + return ExecFileOptions(syntax.LegacyFileOptions(), thread, filename, src, predeclared) +} + +// ExecFileOptions parses, resolves, and executes a Starlark file in the // specified global environment, which may be modified during execution. // // Thread is the state associated with the Starlark thread. @@ -332,11 +345,11 @@ func (prog *Program) Write(out io.Writer) error { // Execution does not modify this dictionary, though it may mutate // its values. // -// If ExecFile fails during evaluation, it returns an *EvalError +// If ExecFileOptions fails during evaluation, it returns an *EvalError // containing a backtrace. -func ExecFile(thread *Thread, filename string, src interface{}, predeclared StringDict) (StringDict, error) { +func ExecFileOptions(opts *syntax.FileOptions, thread *Thread, filename string, src interface{}, predeclared StringDict) (StringDict, error) { // Parse, resolve, and compile a Starlark source file. - _, mod, err := SourceProgram(filename, src, predeclared.Has) + _, mod, err := SourceProgramOptions(opts, filename, src, predeclared.Has) if err != nil { return nil, err } @@ -346,7 +359,13 @@ func ExecFile(thread *Thread, filename string, src interface{}, predeclared Stri return g, err } -// SourceProgram produces a new program by parsing, resolving, +// SourceProgram calls [SourceProgramOptions] using [syntax.LegacyFileOptions]. +// Deprecated: relies on legacy global variables. +func SourceProgram(filename string, src interface{}, isPredeclared func(string) bool) (*syntax.File, *Program, error) { + return SourceProgramOptions(syntax.LegacyFileOptions(), filename, src, isPredeclared) +} + +// SourceProgramOptions produces a new program by parsing, resolving, // and compiling a Starlark source file. // On success, it returns the parsed file and the compiled program. // The filename and src parameters are as for syntax.Parse. @@ -355,8 +374,8 @@ func ExecFile(thread *Thread, filename string, src interface{}, predeclared Stri // a pre-declared identifier of the current module. // Its typical value is predeclared.Has, // where predeclared is a StringDict of pre-declared values. -func SourceProgram(filename string, src interface{}, isPredeclared func(string) bool) (*syntax.File, *Program, error) { - f, err := syntax.Parse(filename, src, 0) +func SourceProgramOptions(opts *syntax.FileOptions, filename string, src interface{}, isPredeclared func(string) bool) (*syntax.File, *Program, error) { + f, err := opts.Parse(filename, src, 0) if err != nil { return nil, nil, err } @@ -388,7 +407,7 @@ func FileProgram(f *syntax.File, isPredeclared func(string) bool) (*Program, err } module := f.Module.(*resolve.Module) - compiled := compile.File(f.Stmts, pos, "", module.Locals, module.Globals) + compiled := compile.File(f.Options, f.Stmts, pos, "", module.Locals, module.Globals) return &Program{compiled}, nil } @@ -396,7 +415,7 @@ func FileProgram(f *syntax.File, isPredeclared func(string) bool) (*Program, err // CompiledProgram produces a new program from the representation // of a compiled program previously saved by Program.Write. func CompiledProgram(in io.Reader) (*Program, error) { - data, err := ioutil.ReadAll(in) + data, err := io.ReadAll(in) if err != nil { return nil, err } @@ -445,7 +464,7 @@ func ExecREPLChunk(f *syntax.File, thread *Thread, globals StringDict) error { } module := f.Module.(*resolve.Module) - compiled := compile.File(f.Stmts, pos, "", module.Locals, module.Globals) + compiled := compile.File(f.Options, f.Stmts, pos, "", module.Locals, module.Globals) prog := &Program{compiled} // -- variant of Program.Init -- @@ -504,7 +523,13 @@ func makeToplevelFunction(prog *compile.Program, predeclared StringDict) *Functi } } -// Eval parses, resolves, and evaluates an expression within the +// Eval calls [EvalOptions] using [syntax.LegacyFileOptions]. +// Deprecated: relies on legacy global variables. +func Eval(thread *Thread, filename string, src interface{}, env StringDict) (Value, error) { + return EvalOptions(syntax.LegacyFileOptions(), thread, filename, src, env) +} + +// EvalOptions parses, resolves, and evaluates an expression within the // specified (predeclared) environment. // // Evaluation cannot mutate the environment dictionary itself, @@ -512,58 +537,71 @@ func makeToplevelFunction(prog *compile.Program, predeclared StringDict) *Functi // // The filename and src parameters are as for syntax.Parse. // -// If Eval fails during evaluation, it returns an *EvalError +// If EvalOptions fails during evaluation, it returns an *EvalError // containing a backtrace. -func Eval(thread *Thread, filename string, src interface{}, env StringDict) (Value, error) { - expr, err := syntax.ParseExpr(filename, src, 0) +func EvalOptions(opts *syntax.FileOptions, thread *Thread, filename string, src interface{}, env StringDict) (Value, error) { + expr, err := opts.ParseExpr(filename, src, 0) if err != nil { return nil, err } - f, err := makeExprFunc(expr, env) + f, err := makeExprFunc(opts, expr, env) if err != nil { return nil, err } return Call(thread, f, nil, nil) } -// EvalExpr resolves and evaluates an expression within the +// EvalExpr calls [EvalExprOptions] using [syntax.LegacyFileOptions]. +// Deprecated: relies on legacy global variables. +func EvalExpr(thread *Thread, expr syntax.Expr, env StringDict) (Value, error) { + return EvalExprOptions(syntax.LegacyFileOptions(), thread, expr, env) +} + +// EvalExprOptions resolves and evaluates an expression within the // specified (predeclared) environment. // Evaluating a comma-separated list of expressions yields a tuple value. // // Resolving an expression mutates it. -// Do not call EvalExpr more than once for the same expression. +// Do not call EvalExprOptions more than once for the same expression. // // Evaluation cannot mutate the environment dictionary itself, // though it may modify variables reachable from the dictionary. // -// If Eval fails during evaluation, it returns an *EvalError +// If EvalExprOptions fails during evaluation, it returns an *EvalError // containing a backtrace. -func EvalExpr(thread *Thread, expr syntax.Expr, env StringDict) (Value, error) { - fn, err := makeExprFunc(expr, env) +func EvalExprOptions(opts *syntax.FileOptions, thread *Thread, expr syntax.Expr, env StringDict) (Value, error) { + fn, err := makeExprFunc(opts, expr, env) if err != nil { return nil, err } return Call(thread, fn, nil, nil) } +// ExprFunc calls [ExprFuncOptions] using [syntax.LegacyFileOptions]. +// Deprecated: relies on legacy global variables. +func ExprFunc(filename string, src interface{}, env StringDict) (*Function, error) { + return ExprFuncOptions(syntax.LegacyFileOptions(), filename, src, env) +} + // ExprFunc returns a no-argument function // that evaluates the expression whose source is src. -func ExprFunc(filename string, src interface{}, env StringDict) (*Function, error) { - expr, err := syntax.ParseExpr(filename, src, 0) +func ExprFuncOptions(options *syntax.FileOptions, filename string, src interface{}, env StringDict) (*Function, error) { + expr, err := options.ParseExpr(filename, src, 0) if err != nil { return nil, err } - return makeExprFunc(expr, env) + return makeExprFunc(options, expr, env) } // makeExprFunc returns a no-argument function whose body is expr. -func makeExprFunc(expr syntax.Expr, env StringDict) (*Function, error) { - locals, err := resolve.Expr(expr, env.Has, Universe.Has) +// The options must be consistent with those used when parsing expr. +func makeExprFunc(opts *syntax.FileOptions, expr syntax.Expr, env StringDict) (*Function, error) { + locals, err := resolve.ExprOptions(opts, expr, env.Has, Universe.Has) if err != nil { return nil, err } - return makeToplevelFunction(compile.Expr(expr, "", locals), env), nil + return makeToplevelFunction(compile.Expr(opts, expr, "", locals), env), nil } // The following functions are primitive operations of the byte code interpreter. @@ -787,6 +825,12 @@ func Binary(op syntax.Token, x, y Value) (Value, error) { } return x - yf, nil } + case *Set: // difference + if y, ok := y.(*Set); ok { + iter := y.Iterate() + defer iter.Done() + return x.Difference(iter) + } } case syntax.STAR: @@ -1036,6 +1080,12 @@ func Binary(op syntax.Token, x, y Value) (Value, error) { if y, ok := y.(Int); ok { return x.Or(y), nil } + + case *Dict: // union + if y, ok := y.(*Dict); ok { + return x.Union(y), nil + } + case *Set: // union if y, ok := y.(*Set); ok { iter := Iterate(y) @@ -1052,17 +1102,9 @@ func Binary(op syntax.Token, x, y Value) (Value, error) { } case *Set: // intersection if y, ok := y.(*Set); ok { - set := new(Set) - if x.Len() > y.Len() { - x, y = y, x // opt: range over smaller set - } - for _, xelem := range x.elems() { - // Has, Insert cannot fail here. - if found, _ := y.Has(xelem); found { - set.Insert(xelem) - } - } - return set, nil + iter := y.Iterate() + defer iter.Done() + return x.Intersection(iter) } } @@ -1074,18 +1116,9 @@ func Binary(op syntax.Token, x, y Value) (Value, error) { } case *Set: // symmetric difference if y, ok := y.(*Set); ok { - set := new(Set) - for _, xelem := range x.elems() { - if found, _ := y.Has(xelem); !found { - set.Insert(xelem) - } - } - for _, yelem := range y.elems() { - if found, _ := x.Has(yelem); !found { - set.Insert(yelem) - } - } - return set, nil + iter := y.Iterate() + defer iter.Done() + return x.SymmetricDifference(iter) } } @@ -1219,8 +1252,22 @@ func Call(thread *Thread, fn Value, args Tuple, kwargs []Tuple) (Value, error) { fr.callable = c thread.beginProfSpan() + + // Use defer to ensure that panics from built-ins + // pass through the interpreter without leaving + // it in a bad state. + defer func() { + thread.endProfSpan() + + // clear out any references + // TODO(adonovan): opt: zero fr.Locals and + // reuse it if it is large enough. + *fr = frame{} + + thread.stack = thread.stack[:len(thread.stack)-1] // pop + }() + result, err := c.CallInternal(thread, args, kwargs) - thread.endProfSpan() // Sanity check: nil is not a valid Starlark value. if result == nil && err == nil { @@ -1234,9 +1281,6 @@ func Call(thread *Thread, fn Value, args Tuple, kwargs []Tuple) (Value, error) { } } - *fr = frame{} // clear out any references - thread.stack = thread.stack[:len(thread.stack)-1] // pop - return result, err } diff --git a/vendor/go.starlark.net/starlark/hashtable.go b/vendor/go.starlark.net/starlark/hashtable.go index 27990b5496..40f72bb635 100644 --- a/vendor/go.starlark.net/starlark/hashtable.go +++ b/vendor/go.starlark.net/starlark/hashtable.go @@ -6,12 +6,15 @@ package starlark import ( "fmt" + "math/big" _ "unsafe" // for go:linkname hack ) // hashtable is used to represent Starlark dict and set values. // It is a hash table whose key/value entries form a doubly-linked list // in the order the entries were inserted. +// +// Initialized instances of hashtable must not be copied. type hashtable struct { table []bucket // len is zero or a power of two bucket0 [1]bucket // inline allocation for small maps. @@ -20,8 +23,17 @@ type hashtable struct { head *entry // insertion order doubly-linked list; may be nil tailLink **entry // address of nil link at end of list (perhaps &head) frozen bool + + _ noCopy // triggers vet copylock check on this type. } +// noCopy is zero-sized type that triggers vet's copylock check. +// See https://github.com/golang/go/issues/8005#issuecomment-190753527. +type noCopy struct{} + +func (*noCopy) Lock() {} +func (*noCopy) Unlock() {} + const bucketSize = 8 type bucket struct { @@ -55,26 +67,16 @@ func (ht *hashtable) init(size int) { func (ht *hashtable) freeze() { if !ht.frozen { ht.frozen = true - for i := range ht.table { - for p := &ht.table[i]; p != nil; p = p.next { - for i := range p.entries { - e := &p.entries[i] - if e.hash != 0 { - e.key.Freeze() - e.value.Freeze() - } - } - } + for e := ht.head; e != nil; e = e.next { + e.key.Freeze() + e.value.Freeze() } } } func (ht *hashtable) insert(k, v Value) error { - if ht.frozen { - return fmt.Errorf("cannot insert into frozen hash table") - } - if ht.itercount > 0 { - return fmt.Errorf("cannot insert into hash table during iteration") + if err := ht.checkMutable("insert into"); err != nil { + return err } if ht.table == nil { ht.init(1) @@ -154,13 +156,12 @@ func overloaded(elems, buckets int) bool { func (ht *hashtable) grow() { // Double the number of buckets and rehash. - // TODO(adonovan): opt: - // - avoid reentrant calls to ht.insert, and specialize it. - // e.g. we know the calls to Equals will return false since - // there are no duplicates among the old keys. - // - saving the entire hash in the bucket would avoid the need to - // recompute the hash. - // - save the old buckets on a free list. + // + // Even though this makes reentrant calls to ht.insert, + // calls Equals unnecessarily (since there can't be duplicate keys), + // and recomputes the hash unnecessarily, the gains from + // avoiding these steps were found to be too small to justify + // the extra logic: -2% on hashtable benchmark. ht.table = make([]bucket, len(ht.table)<<1) oldhead := ht.head ht.head = nil @@ -200,6 +201,57 @@ func (ht *hashtable) lookup(k Value) (v Value, found bool, err error) { return None, false, nil // not found } +// count returns the number of distinct elements of iter that are elements of ht. +func (ht *hashtable) count(iter Iterator) (int, error) { + if ht.table == nil { + return 0, nil // empty + } + + var k Value + count := 0 + + // Use a bitset per table entry to record seen elements of ht. + // Elements are identified by their bucket number and index within the bucket. + // Each bitset gets one word initially, but may grow. + storage := make([]big.Word, len(ht.table)) + bitsets := make([]big.Int, len(ht.table)) + for i := range bitsets { + bitsets[i].SetBits(storage[i : i+1 : i+1]) + } + for iter.Next(&k) && count != int(ht.len) { + h, err := k.Hash() + if err != nil { + return 0, err // unhashable + } + if h == 0 { + h = 1 // zero is reserved + } + + // Inspect each bucket in the bucket list. + bucketId := h & (uint32(len(ht.table) - 1)) + i := 0 + for p := &ht.table[bucketId]; p != nil; p = p.next { + for j := range p.entries { + e := &p.entries[j] + if e.hash == h { + if eq, err := Equal(k, e.key); err != nil { + return 0, err + } else if eq { + bitIndex := i<<3 + j + if bitsets[bucketId].Bit(bitIndex) == 0 { + bitsets[bucketId].SetBit(&bitsets[bucketId], bitIndex, 1) + count++ + } + } + } + } + i++ + } + } + + return count, nil +} + // Items returns all the items in the map (as key/value pairs) in insertion order. func (ht *hashtable) items() []Tuple { items := make([]Tuple, 0, ht.len) @@ -230,11 +282,8 @@ func (ht *hashtable) keys() []Value { } func (ht *hashtable) delete(k Value) (v Value, found bool, err error) { - if ht.frozen { - return nil, false, fmt.Errorf("cannot delete from frozen hash table") - } - if ht.itercount > 0 { - return nil, false, fmt.Errorf("cannot delete from hash table during iteration") + if err := ht.checkMutable("delete from"); err != nil { + return nil, false, err } if ht.table == nil { return None, false, nil // empty @@ -277,12 +326,21 @@ func (ht *hashtable) delete(k Value) (v Value, found bool, err error) { return None, false, nil // not found } -func (ht *hashtable) clear() error { +// checkMutable reports an error if the hash table should not be mutated. +// verb+" dict" should describe the operation. +func (ht *hashtable) checkMutable(verb string) error { if ht.frozen { - return fmt.Errorf("cannot clear frozen hash table") + return fmt.Errorf("cannot %s frozen hash table", verb) } if ht.itercount > 0 { - return fmt.Errorf("cannot clear hash table during iteration") + return fmt.Errorf("cannot %s hash table during iteration", verb) + } + return nil +} + +func (ht *hashtable) clear() error { + if err := ht.checkMutable("clear"); err != nil { + return err } if ht.table != nil { for i := range ht.table { @@ -295,6 +353,15 @@ func (ht *hashtable) clear() error { return nil } +func (ht *hashtable) addAll(other *hashtable) error { + for e := other.head; e != nil; e = e.next { + if err := ht.insert(e.key, e.value); err != nil { + return err + } + } + return nil +} + // dump is provided as an aid to debugging. func (ht *hashtable) dump() { fmt.Printf("hashtable %p len=%d head=%p tailLink=%p", @@ -349,6 +416,8 @@ func (it *keyIterator) Done() { } } +// TODO(adonovan): use go1.19's maphash.String. + // hashString computes the hash of s. func hashString(s string) uint32 { if len(s) >= 12 { diff --git a/vendor/go.starlark.net/starlark/int.go b/vendor/go.starlark.net/starlark/int.go index 398811bc58..8f2b279c76 100644 --- a/vendor/go.starlark.net/starlark/int.go +++ b/vendor/go.starlark.net/starlark/int.go @@ -190,20 +190,36 @@ func (i Int) Hash() (uint32, error) { } return 12582917 * uint32(lo+3), nil } -func (x Int) CompareSameType(op syntax.Token, v Value, depth int) (bool, error) { - y := v.(Int) - xSmall, xBig := x.get() - ySmall, yBig := y.get() - if xBig != nil || yBig != nil { - return threeway(op, x.bigInt().Cmp(y.bigInt())), nil + +// Cmp implements comparison of two Int values. +// Required by the TotallyOrdered interface. +func (i Int) Cmp(v Value, depth int) (int, error) { + j := v.(Int) + iSmall, iBig := i.get() + jSmall, jBig := j.get() + if iBig != nil || jBig != nil { + return i.bigInt().Cmp(j.bigInt()), nil } - return threeway(op, signum64(xSmall-ySmall)), nil + return signum64(iSmall - jSmall), nil // safe: int32 operands } // Float returns the float value nearest i. func (i Int) Float() Float { iSmall, iBig := i.get() if iBig != nil { + // Fast path for hardware int-to-float conversions. + if iBig.IsUint64() { + return Float(iBig.Uint64()) + } else if iBig.IsInt64() { + return Float(iBig.Int64()) + } else { + // Fast path for very big ints. + const maxFiniteLen = 1023 + 1 // max exponent value + implicit mantissa bit + if iBig.BitLen() > maxFiniteLen { + return Float(math.Inf(iBig.Sign())) + } + } + f, _ := new(big.Float).SetInt(iBig).Float64() return Float(f) } diff --git a/vendor/go.starlark.net/starlark/int_generic.go b/vendor/go.starlark.net/starlark/int_generic.go index f2adf45321..244a60ca5b 100644 --- a/vendor/go.starlark.net/starlark/int_generic.go +++ b/vendor/go.starlark.net/starlark/int_generic.go @@ -1,5 +1,4 @@ -//go:build (!linux && !darwin && !dragonfly && !freebsd && !netbsd && !solaris) || (!amd64 && !arm64 && !mips64x && !ppc64x && !loong64) -// +build !linux,!darwin,!dragonfly,!freebsd,!netbsd,!solaris !amd64,!arm64,!mips64x,!ppc64x,!loong64 +//go:build (!linux && !darwin && !dragonfly && !freebsd && !netbsd && !solaris) || (!amd64 && !arm64 && !mips64x && !ppc64 && !ppc64le && !loong64 && !s390x) package starlark diff --git a/vendor/go.starlark.net/starlark/int_posix64.go b/vendor/go.starlark.net/starlark/int_posix64.go index 2ab0beda3f..70c949efc2 100644 --- a/vendor/go.starlark.net/starlark/int_posix64.go +++ b/vendor/go.starlark.net/starlark/int_posix64.go @@ -1,6 +1,4 @@ -//go:build (linux || darwin || dragonfly || freebsd || netbsd || solaris) && (amd64 || arm64 || mips64x || ppc64x || loong64) -// +build linux darwin dragonfly freebsd netbsd solaris -// +build amd64 arm64 mips64x ppc64x loong64 +//go:build (linux || darwin || dragonfly || freebsd || netbsd || solaris) && (amd64 || arm64 || mips64x || ppc64 || ppc64le || loong64 || s390x) package starlark diff --git a/vendor/go.starlark.net/starlark/interp.go b/vendor/go.starlark.net/starlark/interp.go index 2dcc731065..d29e52530b 100644 --- a/vendor/go.starlark.net/starlark/interp.go +++ b/vendor/go.starlark.net/starlark/interp.go @@ -10,7 +10,6 @@ import ( "go.starlark.net/internal/compile" "go.starlark.net/internal/spell" - "go.starlark.net/resolve" "go.starlark.net/syntax" ) @@ -24,19 +23,19 @@ func (fn *Function) CallInternal(thread *Thread, args Tuple, kwargs []Tuple) (Va // Postcondition: args is not mutated. This is stricter than required by Callable, // but allows CALL to avoid a copy. - if !resolve.AllowRecursion { + f := fn.funcode + if !f.Prog.Recursion { // detect recursion for _, fr := range thread.stack[:len(thread.stack)-1] { // We look for the same function code, // not function value, otherwise the user could // defeat the check by writing the Y combinator. - if frfn, ok := fr.Callable().(*Function); ok && frfn.funcode == fn.funcode { + if frfn, ok := fr.Callable().(*Function); ok && frfn.funcode == f { return nil, fmt.Errorf("function %s called recursively", fn.Name()) } } } - f := fn.funcode fr := thread.frameAt(0) // Allocate space for stack and locals. @@ -81,14 +80,25 @@ func (fn *Function) CallInternal(thread *Thread, args Tuple, kwargs []Tuple) (Va var iterstack []Iterator // stack of active iterators + // Use defer so that application panics can pass through + // interpreter without leaving thread in a bad state. + defer func() { + // ITERPOP the rest of the iterator stack. + for _, iter := range iterstack { + iter.Done() + } + + fr.locals = nil + }() + sp := 0 var pc uint32 var result Value code := f.Code loop: for { - thread.steps++ - if thread.steps >= thread.maxSteps { + thread.Steps++ + if thread.Steps >= thread.maxSteps { if thread.OnMaxSteps != nil { thread.OnMaxSteps(thread) } else { @@ -224,6 +234,34 @@ loop: stack[sp] = z sp++ + case compile.INPLACE_PIPE: + y := stack[sp-1] + x := stack[sp-2] + sp -= 2 + + // It's possible that y is not Dict but + // nonetheless defines x|y, in which case we + // should fall back to the general case. + var z Value + if xdict, ok := x.(*Dict); ok { + if ydict, ok := y.(*Dict); ok { + if err = xdict.ht.checkMutable("apply |= to"); err != nil { + break loop + } + xdict.ht.addAll(&ydict.ht) // can't fail + z = xdict + } + } + if z == nil { + z, err = Binary(syntax.PIPE, x, y) + if err != nil { + break loop + } + } + + stack[sp] = z + sp++ + case compile.NONE: stack[sp] = None sp++ @@ -618,14 +656,7 @@ loop: break loop } } - - // ITERPOP the rest of the iterator stack. - for _, iter := range iterstack { - iter.Done() - } - - fr.locals = nil - + // (deferred cleanup runs here) return result, err } diff --git a/vendor/go.starlark.net/starlark/library.go b/vendor/go.starlark.net/starlark/library.go index 1c801be644..ef032ee294 100644 --- a/vendor/go.starlark.net/starlark/library.go +++ b/vendor/go.starlark.net/starlark/library.go @@ -140,7 +140,17 @@ var ( } setMethods = map[string]*Builtin{ - "union": NewBuiltin("union", set_union), + "add": NewBuiltin("add", set_add), + "clear": NewBuiltin("clear", set_clear), + "difference": NewBuiltin("difference", set_difference), + "discard": NewBuiltin("discard", set_discard), + "intersection": NewBuiltin("intersection", set_intersection), + "issubset": NewBuiltin("issubset", set_issubset), + "issuperset": NewBuiltin("issuperset", set_issuperset), + "pop": NewBuiltin("pop", set_pop), + "remove": NewBuiltin("remove", set_remove), + "symmetric_difference": NewBuiltin("symmetric_difference", set_symmetric_difference), + "union": NewBuiltin("union", set_union), } ) @@ -2168,6 +2178,162 @@ func string_splitlines(_ *Thread, b *Builtin, args Tuple, kwargs []Tuple) (Value return NewList(list), nil } +// https://github.com/google/starlark-go/blob/master/doc/spec.md#set·add. +func set_add(_ *Thread, b *Builtin, args Tuple, kwargs []Tuple) (Value, error) { + var elem Value + if err := UnpackPositionalArgs(b.Name(), args, kwargs, 1, &elem); err != nil { + return nil, err + } + if found, err := b.Receiver().(*Set).Has(elem); err != nil { + return nil, nameErr(b, err) + } else if found { + return None, nil + } + err := b.Receiver().(*Set).Insert(elem) + if err != nil { + return nil, nameErr(b, err) + } + return None, nil +} + +// https://github.com/google/starlark-go/blob/master/doc/spec.md#set·clear. +func set_clear(_ *Thread, b *Builtin, args Tuple, kwargs []Tuple) (Value, error) { + if err := UnpackPositionalArgs(b.Name(), args, kwargs, 0); err != nil { + return nil, err + } + if b.Receiver().(*Set).Len() > 0 { + if err := b.Receiver().(*Set).Clear(); err != nil { + return nil, nameErr(b, err) + } + } + return None, nil +} + +// https://github.com/google/starlark-go/blob/master/doc/spec.md#set·difference. +func set_difference(_ *Thread, b *Builtin, args Tuple, kwargs []Tuple) (Value, error) { + // TODO: support multiple others: s.difference(*others) + var other Iterable + if err := UnpackPositionalArgs(b.Name(), args, kwargs, 0, &other); err != nil { + return nil, err + } + iter := other.Iterate() + defer iter.Done() + diff, err := b.Receiver().(*Set).Difference(iter) + if err != nil { + return nil, nameErr(b, err) + } + return diff, nil +} + +// https://github.com/google/starlark-go/blob/master/doc/spec.md#set_intersection. +func set_intersection(_ *Thread, b *Builtin, args Tuple, kwargs []Tuple) (Value, error) { + // TODO: support multiple others: s.difference(*others) + var other Iterable + if err := UnpackPositionalArgs(b.Name(), args, kwargs, 0, &other); err != nil { + return nil, err + } + iter := other.Iterate() + defer iter.Done() + diff, err := b.Receiver().(*Set).Intersection(iter) + if err != nil { + return nil, nameErr(b, err) + } + return diff, nil +} + +// https://github.com/google/starlark-go/blob/master/doc/spec.md#set_issubset. +func set_issubset(_ *Thread, b *Builtin, args Tuple, kwargs []Tuple) (Value, error) { + var other Iterable + if err := UnpackPositionalArgs(b.Name(), args, kwargs, 0, &other); err != nil { + return nil, err + } + iter := other.Iterate() + defer iter.Done() + diff, err := b.Receiver().(*Set).IsSubset(iter) + if err != nil { + return nil, nameErr(b, err) + } + return Bool(diff), nil +} + +// https://github.com/google/starlark-go/blob/master/doc/spec.md#set_issuperset. +func set_issuperset(_ *Thread, b *Builtin, args Tuple, kwargs []Tuple) (Value, error) { + var other Iterable + if err := UnpackPositionalArgs(b.Name(), args, kwargs, 0, &other); err != nil { + return nil, err + } + iter := other.Iterate() + defer iter.Done() + diff, err := b.Receiver().(*Set).IsSuperset(iter) + if err != nil { + return nil, nameErr(b, err) + } + return Bool(diff), nil +} + +// https://github.com/google/starlark-go/blob/master/doc/spec.md#set·discard. +func set_discard(_ *Thread, b *Builtin, args Tuple, kwargs []Tuple) (Value, error) { + var k Value + if err := UnpackPositionalArgs(b.Name(), args, kwargs, 1, &k); err != nil { + return nil, err + } + if found, err := b.Receiver().(*Set).Has(k); err != nil { + return nil, nameErr(b, err) + } else if !found { + return None, nil + } + if _, err := b.Receiver().(*Set).Delete(k); err != nil { + return nil, nameErr(b, err) // set is frozen + } + return None, nil +} + +// https://github.com/google/starlark-go/blob/master/doc/spec.md#set·pop. +func set_pop(_ *Thread, b *Builtin, args Tuple, kwargs []Tuple) (Value, error) { + if err := UnpackPositionalArgs(b.Name(), args, kwargs, 0); err != nil { + return nil, err + } + recv := b.Receiver().(*Set) + k, ok := recv.ht.first() + if !ok { + return nil, nameErr(b, "empty set") + } + _, err := recv.Delete(k) + if err != nil { + return nil, nameErr(b, err) // set is frozen + } + return k, nil +} + +// https://github.com/google/starlark-go/blob/master/doc/spec.md#set·remove. +func set_remove(_ *Thread, b *Builtin, args Tuple, kwargs []Tuple) (Value, error) { + var k Value + if err := UnpackPositionalArgs(b.Name(), args, kwargs, 1, &k); err != nil { + return nil, err + } + if found, err := b.Receiver().(*Set).Delete(k); err != nil { + return nil, nameErr(b, err) // dict is frozen or key is unhashable + } else if found { + return None, nil + } + return nil, nameErr(b, "missing key") +} + +// https://github.com/google/starlark-go/blob/master/doc/spec.md#set·symmetric_difference. +func set_symmetric_difference(_ *Thread, b *Builtin, args Tuple, kwargs []Tuple) (Value, error) { + var other Iterable + if err := UnpackPositionalArgs(b.Name(), args, kwargs, 0, &other); err != nil { + return nil, err + } + iter := other.Iterate() + defer iter.Done() + diff, err := b.Receiver().(*Set).SymmetricDifference(iter) + if err != nil { + return nil, nameErr(b, err) + } + return diff, nil +} + // https://github.com/google/starlark-go/blob/master/doc/spec.md#set·union. func set_union(_ *Thread, b *Builtin, args Tuple, kwargs []Tuple) (Value, error) { var iterable Iterable diff --git a/vendor/go.starlark.net/starlark/profile.go b/vendor/go.starlark.net/starlark/profile.go index 38da2b2e9f..590a4e2bb3 100644 --- a/vendor/go.starlark.net/starlark/profile.go +++ b/vendor/go.starlark.net/starlark/profile.go @@ -101,11 +101,11 @@ func StartProfile(w io.Writer) error { return nil } -// StopProfiler stops the profiler started by a prior call to +// StopProfile stops the profiler started by a prior call to // StartProfile and finalizes the profile. It returns an error if the // profile could not be completed. // -// StopProfiler must not be called concurrently with Starlark execution. +// StopProfile must not be called concurrently with Starlark execution. func StopProfile() error { // Terminate the profiler goroutine and get its result. close(profiler.events) diff --git a/vendor/go.starlark.net/starlark/unpack.go b/vendor/go.starlark.net/starlark/unpack.go index abc71b8c55..3168589921 100644 --- a/vendor/go.starlark.net/starlark/unpack.go +++ b/vendor/go.starlark.net/starlark/unpack.go @@ -300,7 +300,9 @@ func unpackOneArg(v Value, ptr interface{}) error { // Attempt to call Value.Type method. func() { defer func() { recover() }() - paramType = paramVar.MethodByName("Type").Call(nil)[0].String() + if typer, _ := paramVar.Interface().(interface{ Type() string }); typer != nil { + paramType = typer.Type() + } }() return fmt.Errorf("got %s, want %s", v.Type(), paramType) } diff --git a/vendor/go.starlark.net/starlark/value.go b/vendor/go.starlark.net/starlark/value.go index 72f3001e14..22a37c8a82 100644 --- a/vendor/go.starlark.net/starlark/value.go +++ b/vendor/go.starlark.net/starlark/value.go @@ -7,35 +7,35 @@ // Starlark values are represented by the Value interface. // The following built-in Value types are known to the evaluator: // -// NoneType -- NoneType -// Bool -- bool -// Bytes -- bytes -// Int -- int -// Float -- float -// String -- string -// *List -- list -// Tuple -- tuple -// *Dict -- dict -// *Set -- set -// *Function -- function (implemented in Starlark) -// *Builtin -- builtin_function_or_method (function or method implemented in Go) +// NoneType -- NoneType +// Bool -- bool +// Bytes -- bytes +// Int -- int +// Float -- float +// String -- string +// *List -- list +// Tuple -- tuple +// *Dict -- dict +// *Set -- set +// *Function -- function (implemented in Starlark) +// *Builtin -- builtin_function_or_method (function or method implemented in Go) // // Client applications may define new data types that satisfy at least // the Value interface. Such types may provide additional operations by // implementing any of these optional interfaces: // -// Callable -- value is callable like a function -// Comparable -- value defines its own comparison operations -// Iterable -- value is iterable using 'for' loops -// Sequence -- value is iterable sequence of known length -// Indexable -- value is sequence with efficient random access -// Mapping -- value maps from keys to values, like a dictionary -// HasBinary -- value defines binary operations such as * and + -// HasAttrs -- value has readable fields or methods x.f -// HasSetField -- value has settable fields x.f -// HasSetIndex -- value supports element update using x[i]=y -// HasSetKey -- value supports map update using x[k]=v -// HasUnary -- value defines unary operations such as + and - +// Callable -- value is callable like a function +// Comparable -- value defines its own comparison operations +// Iterable -- value is iterable using 'for' loops +// Sequence -- value is iterable sequence of known length +// Indexable -- value is sequence with efficient random access +// Mapping -- value maps from keys to values, like a dictionary +// HasBinary -- value defines binary operations such as * and + +// HasAttrs -- value has readable fields or methods x.f +// HasSetField -- value has settable fields x.f +// HasSetIndex -- value supports element update using x[i]=y +// HasSetKey -- value supports map update using x[k]=v +// HasUnary -- value defines unary operations such as + and - // // Client applications may also define domain-specific functions in Go // and make them available to Starlark programs. Use NewBuiltin to @@ -63,7 +63,6 @@ // through Starlark code and into callbacks. When evaluation fails it // returns an EvalError from which the application may obtain a // backtrace of active Starlark calls. -// package starlark // import "go.starlark.net/starlark" // This file defines the data types of Starlark and their basic operations. @@ -132,15 +131,41 @@ type Comparable interface { CompareSameType(op syntax.Token, y Value, depth int) (bool, error) } +// A TotallyOrdered is a type whose values form a total order: +// if x and y are of the same TotallyOrdered type, then x must be less than y, +// greater than y, or equal to y. +// +// It is simpler than Comparable and should be preferred in new code, +// but if a type implements both interfaces, Comparable takes precedence. +type TotallyOrdered interface { + Value + // Cmp compares two values x and y of the same totally ordered type. + // It returns negative if x < y, positive if x > y, and zero if the values are equal. + // + // Implementations that recursively compare subcomponents of + // the value should use the CompareDepth function, not Cmp, to + // avoid infinite recursion on cyclic structures. + // + // The depth parameter is used to bound comparisons of cyclic + // data structures. Implementations should decrement depth + // before calling CompareDepth and should return an error if depth + // < 1. + // + // Client code should not call this method. Instead, use the + // standalone Compare or Equals functions, which are defined for + // all pairs of operands. + Cmp(y Value, depth int) (int, error) +} + var ( - _ Comparable = Int{} - _ Comparable = False - _ Comparable = Float(0) - _ Comparable = String("") - _ Comparable = (*Dict)(nil) - _ Comparable = (*List)(nil) - _ Comparable = Tuple(nil) - _ Comparable = (*Set)(nil) + _ TotallyOrdered = Int{} + _ TotallyOrdered = Float(0) + _ Comparable = False + _ Comparable = String("") + _ Comparable = (*Dict)(nil) + _ Comparable = (*List)(nil) + _ Comparable = Tuple(nil) + _ Comparable = (*Set)(nil) ) // A Callable value f may be the operand of a function call, f(x). @@ -229,13 +254,12 @@ var ( // // Example usage: // -// iter := iterable.Iterator() +// iter := iterable.Iterator() // defer iter.Done() // var x Value // for iter.Next(&x) { // ... // } -// type Iterator interface { // If the iterator is exhausted, Next returns false. // Otherwise it sets *p to the current element of the sequence, @@ -276,7 +300,7 @@ type HasSetKey interface { var _ HasSetKey = (*Dict)(nil) // A HasBinary value may be used as either operand of these binary operators: -// + - * / // % in not in | & ^ << >> +// + - * / // % in not in | & ^ << >> // // The Side argument indicates whether the receiver is the left or right operand. // @@ -296,7 +320,7 @@ const ( ) // A HasUnary value may be used as the operand of these unary operators: -// + - ~ +// + - ~ // // An implementation may decline to handle an operation by returning (nil, nil). // For this reason, clients should always call the standalone Unary(op, x) @@ -441,9 +465,11 @@ func isFinite(f float64) bool { return math.Abs(f) <= math.MaxFloat64 } -func (x Float) CompareSameType(op syntax.Token, y_ Value, depth int) (bool, error) { - y := y_.(Float) - return threeway(op, floatCmp(x, y)), nil +// Cmp implements comparison of two Float values. +// Required by the TotallyOrdered interface. +func (f Float) Cmp(v Value, depth int) (int, error) { + g := v.(Float) + return floatCmp(f, g), nil } // floatCmp performs a three-valued comparison on floats, @@ -711,6 +737,34 @@ func (fn *Function) Param(i int) (string, syntax.Position) { id := fn.funcode.Locals[i] return id.Name, id.Pos } + +// ParamDefault returns the default value of the specified parameter +// (0 <= i < NumParams()), or nil if the parameter is not optional. +func (fn *Function) ParamDefault(i int) Value { + if i < 0 || i >= fn.NumParams() { + panic(i) + } + + // fn.defaults omits all required params up to the first optional param. It + // also does not include *args or **kwargs at the end. + firstOptIdx := fn.NumParams() - len(fn.defaults) + if fn.HasVarargs() { + firstOptIdx-- + } + if fn.HasKwargs() { + firstOptIdx-- + } + if i < firstOptIdx || i >= firstOptIdx+len(fn.defaults) { + return nil + } + + dflt := fn.defaults[i-firstOptIdx] + if _, ok := dflt.(mandatory); ok { + return nil + } + return dflt +} + func (fn *Function) HasVarargs() bool { return fn.funcode.HasVarargs } func (fn *Function) HasKwargs() bool { return fn.funcode.HasKwargs } @@ -754,13 +808,12 @@ func NewBuiltin(name string, fn func(thread *Thread, fn *Builtin, args Tuple, kw // In the example below, the value of f is the string.index // built-in method bound to the receiver value "abc": // -// f = "abc".index; f("a"); f("b") +// f = "abc".index; f("a"); f("b") // // In the common case, the receiver is bound only during the call, // but this still results in the creation of a temporary method closure: // -// "abc".index("a") -// +// "abc".index("a") func (b *Builtin) BindReceiver(recv Value) *Builtin { return &Builtin{name: b.name, fn: b.fn, recv: recv} } @@ -795,6 +848,14 @@ func (d *Dict) Freeze() { d.ht.freeze() func (d *Dict) Truth() Bool { return d.Len() > 0 } func (d *Dict) Hash() (uint32, error) { return 0, fmt.Errorf("unhashable type: dict") } +func (x *Dict) Union(y *Dict) *Dict { + z := new(Dict) + z.ht.init(x.Len()) // a lower bound + z.ht.addAll(&x.ht) // can't fail + z.ht.addAll(&y.ht) // can't fail + return z +} + func (d *Dict) Attr(name string) (Value, error) { return builtinAttr(d, name, dictMethods) } func (d *Dict) AttrNames() []string { return builtinAttrNames(dictMethods) } @@ -1057,7 +1118,6 @@ func (s *Set) Len() int { return int(s.ht.len) } func (s *Set) Iterate() Iterator { return s.ht.iterate() } func (s *Set) String() string { return toString(s) } func (s *Set) Type() string { return "set" } -func (s *Set) elems() []Value { return s.ht.keys() } func (s *Set) Freeze() { s.ht.freeze() } func (s *Set) Hash() (uint32, error) { return 0, fmt.Errorf("unhashable type: set") } func (s *Set) Truth() Bool { return s.Len() > 0 } @@ -1074,6 +1134,34 @@ func (x *Set) CompareSameType(op syntax.Token, y_ Value, depth int) (bool, error case syntax.NEQ: ok, err := setsEqual(x, y, depth) return !ok, err + case syntax.GE: // superset + if x.Len() < y.Len() { + return false, nil + } + iter := y.Iterate() + defer iter.Done() + return x.IsSuperset(iter) + case syntax.LE: // subset + if x.Len() > y.Len() { + return false, nil + } + iter := y.Iterate() + defer iter.Done() + return x.IsSubset(iter) + case syntax.GT: // proper superset + if x.Len() <= y.Len() { + return false, nil + } + iter := y.Iterate() + defer iter.Done() + return x.IsSuperset(iter) + case syntax.LT: // proper subset + if x.Len() >= y.Len() { + return false, nil + } + iter := y.Iterate() + defer iter.Done() + return x.IsSubset(iter) default: return false, fmt.Errorf("%s %s %s not implemented", x.Type(), op, y.Type()) } @@ -1083,19 +1171,36 @@ func setsEqual(x, y *Set, depth int) (bool, error) { if x.Len() != y.Len() { return false, nil } - for _, elem := range x.elems() { - if found, _ := y.Has(elem); !found { + for e := x.ht.head; e != nil; e = e.next { + if found, _ := y.Has(e.key); !found { return false, nil } } return true, nil } -func (s *Set) Union(iter Iterator) (Value, error) { +func setFromIterator(iter Iterator) (*Set, error) { + var x Value + set := new(Set) + for iter.Next(&x) { + err := set.Insert(x) + if err != nil { + return set, err + } + } + return set, nil +} + +func (s *Set) clone() *Set { set := new(Set) - for _, elem := range s.elems() { - set.Insert(elem) // can't fail + for e := s.ht.head; e != nil; e = e.next { + set.Insert(e.key) // can't fail } + return set +} + +func (s *Set) Union(iter Iterator) (Value, error) { + set := s.clone() var x Value for iter.Next(&x) { if err := set.Insert(x); err != nil { @@ -1105,6 +1210,72 @@ func (s *Set) Union(iter Iterator) (Value, error) { return set, nil } +func (s *Set) Difference(other Iterator) (Value, error) { + diff := s.clone() + var x Value + for other.Next(&x) { + if _, err := diff.Delete(x); err != nil { + return nil, err + } + } + return diff, nil +} + +func (s *Set) IsSuperset(other Iterator) (bool, error) { + var x Value + for other.Next(&x) { + found, err := s.Has(x) + if err != nil { + return false, err + } + if !found { + return false, nil + } + } + return true, nil +} + +func (s *Set) IsSubset(other Iterator) (bool, error) { + if count, err := s.ht.count(other); err != nil { + return false, err + } else { + return count == s.Len(), nil + } +} + +func (s *Set) Intersection(other Iterator) (Value, error) { + intersect := new(Set) + var x Value + for other.Next(&x) { + found, err := s.Has(x) + if err != nil { + return nil, err + } + if found { + err = intersect.Insert(x) + if err != nil { + return nil, err + } + } + } + return intersect, nil +} + +func (s *Set) SymmetricDifference(other Iterator) (Value, error) { + diff := s.clone() + var x Value + for other.Next(&x) { + found, err := diff.Delete(x) + if err != nil { + return nil, err + } + if !found { + diff.Insert(x) + } + } + return diff, nil +} + // toString returns the string form of value v. // It may be more efficient than v.String() for larger values. func toString(v Value) string { @@ -1198,11 +1369,11 @@ func writeValue(out *strings.Builder, x Value, path []Value) { case *Set: out.WriteString("set([") - for i, elem := range x.elems() { - if i > 0 { + for e := x.ht.head; e != nil; e = e.next { + if e != x.ht.head { out.WriteString(", ") } - writeValue(out, elem, path) + writeValue(out, e.key, path) } out.WriteString("])") @@ -1267,6 +1438,14 @@ func CompareDepth(op syntax.Token, x, y Value, depth int) (bool, error) { return xcomp.CompareSameType(op, y, depth) } + if xcomp, ok := x.(TotallyOrdered); ok { + t, err := xcomp.Cmp(y, depth) + if err != nil { + return false, err + } + return threeway(op, t), nil + } + // use identity comparison switch op { case syntax.EQL: @@ -1385,7 +1564,7 @@ func Iterate(x Value) Iterator { // Bytes is the type of a Starlark binary string. // // A Bytes encapsulates an immutable sequence of bytes. -// It is comparable, indexable, and sliceable, but not direcly iterable; +// It is comparable, indexable, and sliceable, but not directly iterable; // use bytes.elems() for an iterable view. // // In this Go implementation, the elements of 'string' and 'bytes' are diff --git a/vendor/go.starlark.net/starlarkstruct/struct.go b/vendor/go.starlark.net/starlarkstruct/struct.go index 7285bfa5a2..ea2b1f639f 100644 --- a/vendor/go.starlark.net/starlarkstruct/struct.go +++ b/vendor/go.starlark.net/starlarkstruct/struct.go @@ -132,11 +132,12 @@ func (s *Struct) ToStringDict(d starlark.StringDict) { func (s *Struct) String() string { buf := new(strings.Builder) - if s.constructor == Default { + switch constructor := s.constructor.(type) { + case starlark.String: // NB: The Java implementation always prints struct // even for Bazel provider instances. - buf.WriteString("struct") // avoid String()'s quotation - } else { + buf.WriteString(constructor.GoString()) // avoid String()'s quotation + default: buf.WriteString(s.constructor.String()) } buf.WriteByte('(') diff --git a/vendor/go.starlark.net/syntax/options.go b/vendor/go.starlark.net/syntax/options.go new file mode 100644 index 0000000000..51b2638233 --- /dev/null +++ b/vendor/go.starlark.net/syntax/options.go @@ -0,0 +1,63 @@ +// Copyright 2023 The Bazel 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 syntax + +import _ "unsafe" // for linkname + +// FileOptions specifies various per-file options that affect static +// aspects of an individual file such as parsing, name resolution, and +// code generation. (Options that affect global dynamics are typically +// controlled through [starlark.Thread].) +// +// The zero value of FileOptions is the default behavior. +// +// Many functions in this package come in two versions: the legacy +// standalone function (such as [Parse]) uses [LegacyFileOptions], +// whereas the more recent method (such as [Options.Parse]) honors the +// provided options. The second form is preferred. In other packages, +// the modern version is a standalone function with a leading +// FileOptions parameter and the name suffix "Options", such as +// [starlark.ExecFileOptions]. +type FileOptions struct { + // resolver + Set bool // allow references to the 'set' built-in function + While bool // allow 'while' statements + TopLevelControl bool // allow if/for/while statements at top-level + GlobalReassign bool // allow reassignment to top-level names + LoadBindsGlobally bool // load creates global not file-local bindings (deprecated) + + // compiler + Recursion bool // disable recursion check for functions in this file +} + +// TODO(adonovan): provide a canonical flag parser for FileOptions. +// (And use it in the testdata "options:" strings.) + +// LegacyFileOptions returns a new FileOptions containing the current +// values of the resolver package's legacy global variables such as +// [resolve.AllowRecursion], etc. +// These variables may be associated with command-line flags. +func LegacyFileOptions() *FileOptions { + return &FileOptions{ + Set: resolverAllowSet, + While: resolverAllowGlobalReassign, + TopLevelControl: resolverAllowGlobalReassign, + GlobalReassign: resolverAllowGlobalReassign, + Recursion: resolverAllowRecursion, + LoadBindsGlobally: resolverLoadBindsGlobally, + } +} + +// Access resolver (legacy) flags, if they are linked in; false otherwise. +var ( + //go:linkname resolverAllowSet go.starlark.net/resolve.AllowSet + resolverAllowSet bool + //go:linkname resolverAllowGlobalReassign go.starlark.net/resolve.AllowGlobalReassign + resolverAllowGlobalReassign bool + //go:linkname resolverAllowRecursion go.starlark.net/resolve.AllowRecursion + resolverAllowRecursion bool + //go:linkname resolverLoadBindsGlobally go.starlark.net/resolve.LoadBindsGlobally + resolverLoadBindsGlobally bool +) diff --git a/vendor/go.starlark.net/syntax/parse.go b/vendor/go.starlark.net/syntax/parse.go index f4c8fff4d7..1183a03bf5 100644 --- a/vendor/go.starlark.net/syntax/parse.go +++ b/vendor/go.starlark.net/syntax/parse.go @@ -23,19 +23,25 @@ const ( RetainComments Mode = 1 << iota // retain comments in AST; see Node.Comments ) +// Parse calls the Parse method of LegacyFileOptions(). +// Deprecated: relies on legacy global variables. +func Parse(filename string, src interface{}, mode Mode) (f *File, err error) { + return LegacyFileOptions().Parse(filename, src, mode) +} + // Parse parses the input data and returns the corresponding parse tree. // -// If src != nil, ParseFile parses the source from src and the filename +// If src != nil, Parse parses the source from src and the filename // is only used when recording position information. // The type of the argument for the src parameter must be string, // []byte, io.Reader, or FilePortion. -// If src == nil, ParseFile parses the file specified by filename. -func Parse(filename string, src interface{}, mode Mode) (f *File, err error) { +// If src == nil, Parse parses the file specified by filename. +func (opts *FileOptions) Parse(filename string, src interface{}, mode Mode) (f *File, err error) { in, err := newScanner(filename, src, mode&RetainComments != 0) if err != nil { return nil, err } - p := parser{in: in} + p := parser{options: opts, in: in} defer p.in.recover(&err) p.nextToken() // read first lookahead token @@ -47,6 +53,12 @@ func Parse(filename string, src interface{}, mode Mode) (f *File, err error) { return f, nil } +// ParseCompoundStmt calls the ParseCompoundStmt method of LegacyFileOptions(). +// Deprecated: relies on legacy global variables. +func ParseCompoundStmt(filename string, readline func() ([]byte, error)) (f *File, err error) { + return LegacyFileOptions().ParseCompoundStmt(filename, readline) +} + // ParseCompoundStmt parses a single compound statement: // a blank line, a def, for, while, or if statement, or a // semicolon-separated list of simple statements followed @@ -54,13 +66,13 @@ func Parse(filename string, src interface{}, mode Mode) (f *File, err error) { // ParseCompoundStmt does not consume any following input. // The parser calls the readline function each // time it needs a new line of input. -func ParseCompoundStmt(filename string, readline func() ([]byte, error)) (f *File, err error) { +func (opts *FileOptions) ParseCompoundStmt(filename string, readline func() ([]byte, error)) (f *File, err error) { in, err := newScanner(filename, readline, false) if err != nil { return nil, err } - p := parser{in: in} + p := parser{options: opts, in: in} defer p.in.recover(&err) p.nextToken() // read first lookahead token @@ -79,18 +91,24 @@ func ParseCompoundStmt(filename string, readline func() ([]byte, error)) (f *Fil } } - return &File{Path: filename, Stmts: stmts}, nil + return &File{Options: opts, Path: filename, Stmts: stmts}, nil +} + +// ParseExpr calls the ParseExpr method of LegacyFileOptions(). +// Deprecated: relies on legacy global variables. +func ParseExpr(filename string, src interface{}, mode Mode) (expr Expr, err error) { + return LegacyFileOptions().ParseExpr(filename, src, mode) } // ParseExpr parses a Starlark expression. // A comma-separated list of expressions is parsed as a tuple. // See Parse for explanation of parameters. -func ParseExpr(filename string, src interface{}, mode Mode) (expr Expr, err error) { +func (opts *FileOptions) ParseExpr(filename string, src interface{}, mode Mode) (expr Expr, err error) { in, err := newScanner(filename, src, mode&RetainComments != 0) if err != nil { return nil, err } - p := parser{in: in} + p := parser{options: opts, in: in} defer p.in.recover(&err) p.nextToken() // read first lookahead token @@ -112,9 +130,10 @@ func ParseExpr(filename string, src interface{}, mode Mode) (expr Expr, err erro } type parser struct { - in *scanner - tok Token - tokval tokenValue + options *FileOptions + in *scanner + tok Token + tokval tokenValue } // nextToken advances the scanner and returns the position of the @@ -139,7 +158,7 @@ func (p *parser) parseFile() *File { } stmts = p.parseStmt(stmts) } - return &File{Stmts: stmts} + return &File{Options: p.options, Stmts: stmts} } func (p *parser) parseStmt(stmts []Stmt) []Stmt { @@ -158,15 +177,17 @@ func (p *parser) parseStmt(stmts []Stmt) []Stmt { func (p *parser) parseDefStmt() Stmt { defpos := p.nextToken() // consume DEF id := p.parseIdent() - p.consume(LPAREN) + lparen := p.consume(LPAREN) params := p.parseParams() - p.consume(RPAREN) + rparen := p.consume(RPAREN) p.consume(COLON) body := p.parseSuite() return &DefStmt{ Def: defpos, Name: id, + Lparen: lparen, Params: params, + Rparen: rparen, Body: body, } } @@ -275,10 +296,11 @@ func (p *parser) parseSimpleStmt(stmts []Stmt, consumeNL bool) []Stmt { } // small_stmt = RETURN expr? -// | PASS | BREAK | CONTINUE -// | LOAD ... -// | expr ('=' | '+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '^=' | '<<=' | '>>=') expr // assign -// | expr +// +// | PASS | BREAK | CONTINUE +// | LOAD ... +// | expr ('=' | '+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '^=' | '<<=' | '>>=') expr // assign +// | expr func (p *parser) parseSmallStmt() Stmt { switch p.tok { case RETURN: @@ -415,21 +437,23 @@ func (p *parser) consume(t Token) Position { } // params = (param COMMA)* param COMMA? -// | +// +// | // // param = IDENT -// | IDENT EQ test -// | STAR -// | STAR IDENT -// | STARSTAR IDENT +// +// | IDENT EQ test +// | STAR +// | STAR IDENT +// | STARSTAR IDENT // // parseParams parses a parameter list. The resulting expressions are of the form: // -// *Ident x -// *Binary{Op: EQ, X: *Ident, Y: Expr} x=y -// *Unary{Op: STAR} * -// *Unary{Op: STAR, X: *Ident} *args -// *Unary{Op: STARSTAR, X: *Ident} **kwargs +// *Ident x +// *Binary{Op: EQ, X: *Ident, Y: Expr} x=y +// *Unary{Op: STAR} * +// *Unary{Op: STAR, X: *Ident} *args +// *Unary{Op: STARSTAR, X: *Ident} **kwargs func (p *parser) parseParams() []Expr { var params []Expr for p.tok != RPAREN && p.tok != COLON && p.tok != EOF { @@ -651,9 +675,10 @@ func init() { } // primary_with_suffix = primary -// | primary '.' IDENT -// | primary slice_suffix -// | primary call_suffix +// +// | primary '.' IDENT +// | primary slice_suffix +// | primary call_suffix func (p *parser) parsePrimaryWithSuffix() Expr { x := p.parsePrimary() for { @@ -770,12 +795,13 @@ func (p *parser) parseArgs() []Expr { return args } -// primary = IDENT -// | INT | FLOAT | STRING | BYTES -// | '[' ... // list literal or comprehension -// | '{' ... // dict literal or comprehension -// | '(' ... // tuple or parenthesized expression -// | ('-'|'+'|'~') primary_with_suffix +// primary = IDENT +// +// | INT | FLOAT | STRING | BYTES +// | '[' ... // list literal or comprehension +// | '{' ... // dict literal or comprehension +// | '(' ... // tuple or parenthesized expression +// | ('-'|'+'|'~') primary_with_suffix func (p *parser) parsePrimary() Expr { switch p.tok { case IDENT: @@ -836,9 +862,10 @@ func (p *parser) parsePrimary() Expr { } // list = '[' ']' -// | '[' expr ']' -// | '[' expr expr_list ']' -// | '[' expr (FOR loop_variables IN expr)+ ']' +// +// | '[' expr ']' +// | '[' expr expr_list ']' +// | '[' expr (FOR loop_variables IN expr)+ ']' func (p *parser) parseList() Expr { lbrack := p.nextToken() if p.tok == RBRACK { @@ -865,8 +892,9 @@ func (p *parser) parseList() Expr { } // dict = '{' '}' -// | '{' dict_entry_list '}' -// | '{' dict_entry FOR loop_variables IN expr '}' +// +// | '{' dict_entry_list '}' +// | '{' dict_entry FOR loop_variables IN expr '}' func (p *parser) parseDict() Expr { lbrace := p.nextToken() if p.tok == RBRACE { @@ -904,8 +932,9 @@ func (p *parser) parseDictEntry() *DictEntry { } // comp_suffix = FOR loopvars IN expr comp_suffix -// | IF expr comp_suffix -// | ']' or ')' (end) +// +// | IF expr comp_suffix +// | ']' or ')' (end) // // There can be multiple FOR/IF clauses; the first is always a FOR. func (p *parser) parseComprehensionSuffix(lbrace Position, body Expr, endBrace Token) Expr { diff --git a/vendor/go.starlark.net/syntax/scan.go b/vendor/go.starlark.net/syntax/scan.go index bb4165e9d2..95499772f9 100644 --- a/vendor/go.starlark.net/syntax/scan.go +++ b/vendor/go.starlark.net/syntax/scan.go @@ -9,7 +9,6 @@ package syntax import ( "fmt" "io" - "io/ioutil" "log" "math/big" "os" @@ -287,7 +286,7 @@ func readSource(filename string, src interface{}) ([]byte, error) { case []byte: return src, nil case io.Reader: - data, err := ioutil.ReadAll(src) + data, err := io.ReadAll(src) if err != nil { err = &os.PathError{Op: "read", Path: filename, Err: err} return nil, err @@ -296,7 +295,7 @@ func readSource(filename string, src interface{}) ([]byte, error) { case FilePortion: return src.Content, nil case nil: - return ioutil.ReadFile(filename) + return os.ReadFile(filename) default: return nil, fmt.Errorf("invalid source: %T", src) } @@ -1107,6 +1106,8 @@ var keywordToken = map[string]Token{ // reserved words: "as": ILLEGAL, // "assert": ILLEGAL, // heavily used by our tests + "async": ILLEGAL, + "await": ILLEGAL, "class": ILLEGAL, "del": ILLEGAL, "except": ILLEGAL, diff --git a/vendor/go.starlark.net/syntax/syntax.go b/vendor/go.starlark.net/syntax/syntax.go index 3756637583..5bfbcec39a 100644 --- a/vendor/go.starlark.net/syntax/syntax.go +++ b/vendor/go.starlark.net/syntax/syntax.go @@ -70,7 +70,8 @@ type File struct { Path string Stmts []Stmt - Module interface{} // a *resolve.Module, set by resolver + Module interface{} // a *resolve.Module, set by resolver + Options *FileOptions } func (x *File) Span() (start, end Position) { @@ -99,9 +100,10 @@ func (*LoadStmt) stmt() {} func (*ReturnStmt) stmt() {} // An AssignStmt represents an assignment: +// // x = 0 // x, y = y, x -// x += 1 +// x += 1 type AssignStmt struct { commentsRef OpPos Position @@ -121,7 +123,9 @@ type DefStmt struct { commentsRef Def Position Name *Ident + Lparen Position Params []Expr // param = ident | ident=expr | * | *ident | **ident + Rparen Position Body []Stmt Function interface{} // a *resolve.Function, set by resolver diff --git a/vendor/go.starlark.net/syntax/walk.go b/vendor/go.starlark.net/syntax/walk.go index 1491149c6a..5e6c805c24 100644 --- a/vendor/go.starlark.net/syntax/walk.go +++ b/vendor/go.starlark.net/syntax/walk.go @@ -119,9 +119,7 @@ func Walk(n Node, f func(Node) bool) { case *DictExpr: for _, entry := range n.List { - entry := entry.(*DictEntry) - Walk(entry.Key, f) - Walk(entry.Value, f) + Walk(entry, f) } case *UnaryExpr: diff --git a/vendor/golang.org/x/arch/AUTHORS b/vendor/golang.org/x/arch/AUTHORS deleted file mode 100644 index 2b00ddba0d..0000000000 --- a/vendor/golang.org/x/arch/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code refers to The Go Authors for copyright purposes. -# The master list of authors is in the main Go distribution, -# visible at https://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/arch/CONTRIBUTORS b/vendor/golang.org/x/arch/CONTRIBUTORS deleted file mode 100644 index 1fbd3e976f..0000000000 --- a/vendor/golang.org/x/arch/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code was written by the Go contributors. -# The master list of contributors is in the main Go distribution, -# visible at https://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/arch/arm64/arm64asm/condition.go b/vendor/golang.org/x/arch/arm64/arm64asm/condition.go index d673857212..37ad8eed99 100644 --- a/vendor/golang.org/x/arch/arm64/arm64asm/condition.go +++ b/vendor/golang.org/x/arch/arm64/arm64asm/condition.go @@ -11,7 +11,7 @@ package arm64asm // Refer to instFormat inside decode.go for more details func at_sys_cr_system_cond(instr uint32) bool { - return sys_op_4((instr>>16)&0x7, 0x7, 0x8, (instr>>5)&0x7) == Sys_AT + return sys_op_4((instr>>16)&0x7, 0x7, 0x8, (instr>>5)&0x7) == sys_AT } func bfi_bfm_32m_bitfield_cond(instr uint32) bool { @@ -61,11 +61,11 @@ func csinv_general_cond(instr uint32) bool { return instr&0xe000 != 0xe000 } func dc_sys_cr_system_cond(instr uint32) bool { - return sys_op_4((instr>>16)&0x7, 0x7, (instr>>8)&0xf, (instr>>5)&0x7) == Sys_DC + return sys_op_4((instr>>16)&0x7, 0x7, (instr>>8)&0xf, (instr>>5)&0x7) == sys_DC } func ic_sys_cr_system_cond(instr uint32) bool { - return sys_op_4((instr>>16)&0x7, 0x7, (instr>>8)&0xf, (instr>>5)&0x7) == Sys_IC + return sys_op_4((instr>>16)&0x7, 0x7, (instr>>8)&0xf, (instr>>5)&0x7) == sys_IC } func lsl_ubfm_32m_bitfield_cond(instr uint32) bool { @@ -133,7 +133,7 @@ func sbfx_sbfm_64m_bitfield_cond(instr uint32) bool { } func tlbi_sys_cr_system_cond(instr uint32) bool { - return sys_op_4((instr>>16)&0x7, 0x8, (instr>>8)&0xf, (instr>>5)&0x7) == Sys_TLBI + return sys_op_4((instr>>16)&0x7, 0x8, (instr>>8)&0xf, (instr>>5)&0x7) == sys_TLBI } func ubfiz_ubfm_32m_bitfield_cond(instr uint32) bool { diff --git a/vendor/golang.org/x/arch/arm64/arm64asm/condition_util.go b/vendor/golang.org/x/arch/arm64/arm64asm/condition_util.go index 62c0c3b0ac..f2fa11b9dc 100644 --- a/vendor/golang.org/x/arch/arm64/arm64asm/condition_util.go +++ b/vendor/golang.org/x/arch/arm64/arm64asm/condition_util.go @@ -47,19 +47,19 @@ func move_wide_preferred_4(sf, N, imms, immr uint32) bool { return false } -type Sys uint8 +type sys uint8 const ( - Sys_AT Sys = iota - Sys_DC - Sys_IC - Sys_TLBI - Sys_SYS + sys_AT sys = iota + sys_DC + sys_IC + sys_TLBI + sys_SYS ) -func sys_op_4(op1, crn, crm, op2 uint32) Sys { - // TODO: system instruction - return Sys_SYS +func sys_op_4(op1, crn, crm, op2 uint32) sys { + sysInst := sysInstFields{uint8(op1), uint8(crn), uint8(crm), uint8(op2)} + return sysInst.getType() } func is_zero(x uint32) bool { diff --git a/vendor/golang.org/x/arch/arm64/arm64asm/decode.go b/vendor/golang.org/x/arch/arm64/arm64asm/decode.go index 5e29c47696..b1c4f5ec2c 100644 --- a/vendor/golang.org/x/arch/arm64/arm64asm/decode.go +++ b/vendor/golang.org/x/arch/arm64/arm64asm/decode.go @@ -684,17 +684,26 @@ func decodeArg(aop instArg, x uint32) Arg { //TODO: system instruction return nil - case arg_sysop_DC_SYS_CR_system: - //TODO: system instruction - return nil - case arg_sysop_SYS_CR_system: //TODO: system instruction return nil - case arg_sysop_TLBI_SYS_CR_system: - //TODO: system instruction - return nil + case arg_sysop_DC_SYS_CR_system, arg_sysop_TLBI_SYS_CR_system: + op1 := (x >> 16) & 7 + cn := (x >> 12) & 15 + cm := (x >> 8) & 15 + op2 := (x >> 5) & 7 + sysInst := sysInstFields{uint8(op1), uint8(cn), uint8(cm), uint8(op2)} + attrs := sysInst.getAttrs() + reg := int(x & 31) + if !attrs.hasOperand2 { + if reg == 31 { + return sysOp{sysInst, 0, false} + } + // This instruction is undefined if the Rt field is not set to 31. + return nil + } + return sysOp{sysInst, X0 + Reg(reg), true} case arg_Bt: return B0 + Reg(x&(1<<5-1)) diff --git a/vendor/golang.org/x/arch/arm64/arm64asm/inst.go b/vendor/golang.org/x/arch/arm64/arm64asm/inst.go index cf690e2c18..866e399cd1 100644 --- a/vendor/golang.org/x/arch/arm64/arm64asm/inst.go +++ b/vendor/golang.org/x/arch/arm64/arm64asm/inst.go @@ -538,10 +538,12 @@ type MemExtend struct { Extend ExtShift // Amount indicates the index shift amount (but also see ShiftMustBeZero field below). Amount uint8 - // ShiftMustBeZero is set to true when the shift amount must be 0, even if the - // Amount field is not 0. In GNU syntax, a #0 shift amount is printed if Amount - // is not 0 but ShiftMustBeZero is true; #0 is not printed if Amount is 0 and - // ShiftMustBeZero is true. Both cases represent shift by 0 bit. + // Refer to ARM reference manual, for byte load/store(register), the index + // shift amount must be 0, encoded in "S" as 0 if omitted, or as 1 if present. + // a.ShiftMustBeZero is set true indicates the index shift amount must be 0. + // In GNU syntax, a #0 shift amount is printed if Amount is 1 but ShiftMustBeZero + // is true; #0 is not printed if Amount is 0 and ShiftMustBeZero is true. + // Both cases represent shift by 0 bit. ShiftMustBeZero bool } @@ -932,8 +934,10 @@ func (r RegisterWithArrangement) String() string { return result } -// Register with arrangement and index: .[], -// { .B, .B }[]. +// Register with arrangement and index: +// +// .[], +// { .B, .B }[]. type RegisterWithArrangementAndIndex struct { r Reg a Arrangement @@ -966,3 +970,161 @@ func (r RegisterWithArrangementAndIndex) String() string { } return fmt.Sprintf("%s[%d]", result, r.index) } + +type sysOp struct { + op sysInstFields + r Reg + hasOperand2 bool +} + +func (s sysOp) isArg() {} + +func (s sysOp) String() string { + result := s.op.String() + // If s.hasOperand2 is false, the value in the register + // specified by s.r is ignored. + if s.hasOperand2 { + result += ", " + s.r.String() + } + return result +} + +type sysInstFields struct { + op1 uint8 + cn uint8 + cm uint8 + op2 uint8 +} + +type sysInstAttrs struct { + typ sys + name string + hasOperand2 bool +} + +func (s sysInstFields) isArg() {} + +func (s sysInstFields) getAttrs() sysInstAttrs { + attrs, ok := sysInstsAttrs[sysInstFields{s.op1, s.cn, s.cm, s.op2}] + if !ok { + return sysInstAttrs{typ: sys_SYS} + } + return attrs +} + +func (s sysInstFields) String() string { + return s.getAttrs().name +} + +func (s sysInstFields) getType() sys { + return s.getAttrs().typ +} + +var sysInstsAttrs = map[sysInstFields]sysInstAttrs{ + sysInstFields{0, 8, 3, 0}: {sys_TLBI, "VMALLE1IS", false}, + sysInstFields{0, 8, 3, 1}: {sys_TLBI, "VAE1IS", true}, + sysInstFields{0, 8, 3, 2}: {sys_TLBI, "ASIDE1IS", true}, + sysInstFields{0, 8, 3, 3}: {sys_TLBI, "VAAE1IS", true}, + sysInstFields{0, 8, 3, 5}: {sys_TLBI, "VALE1IS", true}, + sysInstFields{0, 8, 3, 7}: {sys_TLBI, "VAALE1IS", true}, + sysInstFields{0, 8, 7, 0}: {sys_TLBI, "VMALLE1", false}, + sysInstFields{0, 8, 7, 1}: {sys_TLBI, "VAE1", true}, + sysInstFields{0, 8, 7, 2}: {sys_TLBI, "ASIDE1", true}, + sysInstFields{0, 8, 7, 3}: {sys_TLBI, "VAAE1", true}, + sysInstFields{0, 8, 7, 5}: {sys_TLBI, "VALE1", true}, + sysInstFields{0, 8, 7, 7}: {sys_TLBI, "VAALE1", true}, + sysInstFields{4, 8, 0, 1}: {sys_TLBI, "IPAS2E1IS", true}, + sysInstFields{4, 8, 0, 5}: {sys_TLBI, "IPAS2LE1IS", true}, + sysInstFields{4, 8, 3, 0}: {sys_TLBI, "ALLE2IS", false}, + sysInstFields{4, 8, 3, 1}: {sys_TLBI, "VAE2IS", true}, + sysInstFields{4, 8, 3, 4}: {sys_TLBI, "ALLE1IS", false}, + sysInstFields{4, 8, 3, 5}: {sys_TLBI, "VALE2IS", true}, + sysInstFields{4, 8, 3, 6}: {sys_TLBI, "VMALLS12E1IS", false}, + sysInstFields{4, 8, 4, 1}: {sys_TLBI, "IPAS2E1", true}, + sysInstFields{4, 8, 4, 5}: {sys_TLBI, "IPAS2LE1", true}, + sysInstFields{4, 8, 7, 0}: {sys_TLBI, "ALLE2", false}, + sysInstFields{4, 8, 7, 1}: {sys_TLBI, "VAE2", true}, + sysInstFields{4, 8, 7, 4}: {sys_TLBI, "ALLE1", false}, + sysInstFields{4, 8, 7, 5}: {sys_TLBI, "VALE2", true}, + sysInstFields{4, 8, 7, 6}: {sys_TLBI, "VMALLS12E1", false}, + sysInstFields{6, 8, 3, 0}: {sys_TLBI, "ALLE3IS", false}, + sysInstFields{6, 8, 3, 1}: {sys_TLBI, "VAE3IS", true}, + sysInstFields{6, 8, 3, 5}: {sys_TLBI, "VALE3IS", true}, + sysInstFields{6, 8, 7, 0}: {sys_TLBI, "ALLE3", false}, + sysInstFields{6, 8, 7, 1}: {sys_TLBI, "VAE3", true}, + sysInstFields{6, 8, 7, 5}: {sys_TLBI, "VALE3", true}, + sysInstFields{0, 8, 1, 0}: {sys_TLBI, "VMALLE1OS", false}, + sysInstFields{0, 8, 1, 1}: {sys_TLBI, "VAE1OS", true}, + sysInstFields{0, 8, 1, 2}: {sys_TLBI, "ASIDE1OS", true}, + sysInstFields{0, 8, 1, 3}: {sys_TLBI, "VAAE1OS", true}, + sysInstFields{0, 8, 1, 5}: {sys_TLBI, "VALE1OS", true}, + sysInstFields{0, 8, 1, 7}: {sys_TLBI, "VAALE1OS", true}, + sysInstFields{0, 8, 2, 1}: {sys_TLBI, "RVAE1IS", true}, + sysInstFields{0, 8, 2, 3}: {sys_TLBI, "RVAAE1IS", true}, + sysInstFields{0, 8, 2, 5}: {sys_TLBI, "RVALE1IS", true}, + sysInstFields{0, 8, 2, 7}: {sys_TLBI, "RVAALE1IS", true}, + sysInstFields{0, 8, 5, 1}: {sys_TLBI, "RVAE1OS", true}, + sysInstFields{0, 8, 5, 3}: {sys_TLBI, "RVAAE1OS", true}, + sysInstFields{0, 8, 5, 5}: {sys_TLBI, "RVALE1OS", true}, + sysInstFields{0, 8, 5, 7}: {sys_TLBI, "RVAALE1OS", true}, + sysInstFields{0, 8, 6, 1}: {sys_TLBI, "RVAE1", true}, + sysInstFields{0, 8, 6, 3}: {sys_TLBI, "RVAAE1", true}, + sysInstFields{0, 8, 6, 5}: {sys_TLBI, "RVALE1", true}, + sysInstFields{0, 8, 6, 7}: {sys_TLBI, "RVAALE1", true}, + sysInstFields{4, 8, 0, 2}: {sys_TLBI, "RIPAS2E1IS", true}, + sysInstFields{4, 8, 0, 6}: {sys_TLBI, "RIPAS2LE1IS", true}, + sysInstFields{4, 8, 1, 0}: {sys_TLBI, "ALLE2OS", false}, + sysInstFields{4, 8, 1, 1}: {sys_TLBI, "VAE2OS", true}, + sysInstFields{4, 8, 1, 4}: {sys_TLBI, "ALLE1OS", false}, + sysInstFields{4, 8, 1, 5}: {sys_TLBI, "VALE2OS", true}, + sysInstFields{4, 8, 1, 6}: {sys_TLBI, "VMALLS12E1OS", false}, + sysInstFields{4, 8, 2, 1}: {sys_TLBI, "RVAE2IS", true}, + sysInstFields{4, 8, 2, 5}: {sys_TLBI, "RVALE2IS", true}, + sysInstFields{4, 8, 4, 0}: {sys_TLBI, "IPAS2E1OS", true}, + sysInstFields{4, 8, 4, 2}: {sys_TLBI, "RIPAS2E1", true}, + sysInstFields{4, 8, 4, 3}: {sys_TLBI, "RIPAS2E1OS", true}, + sysInstFields{4, 8, 4, 4}: {sys_TLBI, "IPAS2LE1OS", true}, + sysInstFields{4, 8, 4, 6}: {sys_TLBI, "RIPAS2LE1", true}, + sysInstFields{4, 8, 4, 7}: {sys_TLBI, "RIPAS2LE1OS", true}, + sysInstFields{4, 8, 5, 1}: {sys_TLBI, "RVAE2OS", true}, + sysInstFields{4, 8, 5, 5}: {sys_TLBI, "RVALE2OS", true}, + sysInstFields{4, 8, 6, 1}: {sys_TLBI, "RVAE2", true}, + sysInstFields{4, 8, 6, 5}: {sys_TLBI, "RVALE2", true}, + sysInstFields{6, 8, 1, 0}: {sys_TLBI, "ALLE3OS", false}, + sysInstFields{6, 8, 1, 1}: {sys_TLBI, "VAE3OS", true}, + sysInstFields{6, 8, 1, 5}: {sys_TLBI, "VALE3OS", true}, + sysInstFields{6, 8, 2, 1}: {sys_TLBI, "RVAE3IS", true}, + sysInstFields{6, 8, 2, 5}: {sys_TLBI, "RVALE3IS", true}, + sysInstFields{6, 8, 5, 1}: {sys_TLBI, "RVAE3OS", true}, + sysInstFields{6, 8, 5, 5}: {sys_TLBI, "RVALE3OS", true}, + sysInstFields{6, 8, 6, 1}: {sys_TLBI, "RVAE3", true}, + sysInstFields{6, 8, 6, 5}: {sys_TLBI, "RVALE3", true}, + sysInstFields{0, 7, 6, 1}: {sys_DC, "IVAC", true}, + sysInstFields{0, 7, 6, 2}: {sys_DC, "ISW", true}, + sysInstFields{0, 7, 10, 2}: {sys_DC, "CSW", true}, + sysInstFields{0, 7, 14, 2}: {sys_DC, "CISW", true}, + sysInstFields{3, 7, 4, 1}: {sys_DC, "ZVA", true}, + sysInstFields{3, 7, 10, 1}: {sys_DC, "CVAC", true}, + sysInstFields{3, 7, 11, 1}: {sys_DC, "CVAU", true}, + sysInstFields{3, 7, 14, 1}: {sys_DC, "CIVAC", true}, + sysInstFields{0, 7, 6, 3}: {sys_DC, "IGVAC", true}, + sysInstFields{0, 7, 6, 4}: {sys_DC, "IGSW", true}, + sysInstFields{0, 7, 6, 5}: {sys_DC, "IGDVAC", true}, + sysInstFields{0, 7, 6, 6}: {sys_DC, "IGDSW", true}, + sysInstFields{0, 7, 10, 4}: {sys_DC, "CGSW", true}, + sysInstFields{0, 7, 10, 6}: {sys_DC, "CGDSW", true}, + sysInstFields{0, 7, 14, 4}: {sys_DC, "CIGSW", true}, + sysInstFields{0, 7, 14, 6}: {sys_DC, "CIGDSW", true}, + sysInstFields{3, 7, 4, 3}: {sys_DC, "GVA", true}, + sysInstFields{3, 7, 4, 4}: {sys_DC, "GZVA", true}, + sysInstFields{3, 7, 10, 3}: {sys_DC, "CGVAC", true}, + sysInstFields{3, 7, 10, 5}: {sys_DC, "CGDVAC", true}, + sysInstFields{3, 7, 12, 3}: {sys_DC, "CGVAP", true}, + sysInstFields{3, 7, 12, 5}: {sys_DC, "CGDVAP", true}, + sysInstFields{3, 7, 13, 3}: {sys_DC, "CGVADP", true}, + sysInstFields{3, 7, 13, 5}: {sys_DC, "CGDVADP", true}, + sysInstFields{3, 7, 14, 3}: {sys_DC, "CIGVAC", true}, + sysInstFields{3, 7, 14, 5}: {sys_DC, "CIGDVAC", true}, + sysInstFields{3, 7, 12, 1}: {sys_DC, "CVAP", true}, + sysInstFields{3, 7, 13, 1}: {sys_DC, "CVADP", true}, +} diff --git a/vendor/golang.org/x/arch/arm64/arm64asm/plan9x.go b/vendor/golang.org/x/arch/arm64/arm64asm/plan9x.go index 0498b8430c..ea5139cb82 100644 --- a/vendor/golang.org/x/arch/arm64/arm64asm/plan9x.go +++ b/vendor/golang.org/x/arch/arm64/arm64asm/plan9x.go @@ -126,7 +126,7 @@ func GoSyntax(inst Inst, pc uint64, symname func(uint64) (string, uint64), text op = "VMOV" } - case LDR: + case LDR, LDUR: var rno uint16 if r, ok := inst.Args[0].(Reg); ok { rno = uint16(r) @@ -135,12 +135,21 @@ func GoSyntax(inst Inst, pc uint64, symname func(uint64) (string, uint64), text } if rno <= uint16(WZR) { op = "MOVWU" + suffix + } else if rno >= uint16(B0) && rno <= uint16(B31) { + op = "FMOVB" + suffix + args[0] = fmt.Sprintf("F%d", rno&31) + } else if rno >= uint16(H0) && rno <= uint16(H31) { + op = "FMOVH" + suffix + args[0] = fmt.Sprintf("F%d", rno&31) } else if rno >= uint16(S0) && rno <= uint16(S31) { op = "FMOVS" + suffix args[0] = fmt.Sprintf("F%d", rno&31) } else if rno >= uint16(D0) && rno <= uint16(D31) { op = "FMOVD" + suffix args[0] = fmt.Sprintf("F%d", rno&31) + } else if rno >= uint16(Q0) && rno <= uint16(Q31) { + op = "FMOVQ" + suffix + args[0] = fmt.Sprintf("F%d", rno&31) } else { op = "MOVD" + suffix } @@ -181,12 +190,21 @@ func GoSyntax(inst Inst, pc uint64, symname func(uint64) (string, uint64), text } if rno <= uint16(WZR) { op = "MOVW" + suffix + } else if rno >= uint16(B0) && rno <= uint16(B31) { + op = "FMOVB" + suffix + args[0] = fmt.Sprintf("F%d", rno&31) + } else if rno >= uint16(H0) && rno <= uint16(H31) { + op = "FMOVH" + suffix + args[0] = fmt.Sprintf("F%d", rno&31) } else if rno >= uint16(S0) && rno <= uint16(S31) { op = "FMOVS" + suffix args[0] = fmt.Sprintf("F%d", rno&31) } else if rno >= uint16(D0) && rno <= uint16(D31) { op = "FMOVD" + suffix args[0] = fmt.Sprintf("F%d", rno&31) + } else if rno >= uint16(Q0) && rno <= uint16(Q31) { + op = "FMOVQ" + suffix + args[0] = fmt.Sprintf("F%d", rno&31) } else { op = "MOVD" + suffix } @@ -251,18 +269,31 @@ func GoSyntax(inst Inst, pc uint64, symname func(uint64) (string, uint64), text op += "W" } } - fallthrough + args[0] = fmt.Sprintf("(%s, %s)", args[0], args[1]) + args[1] = args[2] + return op + " " + args[1] + ", " + args[0] case STP, LDP: args[0] = fmt.Sprintf("(%s, %s)", args[0], args[1]) args[1] = args[2] - if op == "STP" { - op = op + suffix + + rno, ok := inst.Args[0].(Reg) + if !ok { + rno = Reg(inst.Args[0].(RegSP)) + } + if rno <= WZR { + op = op + "W" + } else if rno >= S0 && rno <= S31 { + op = "F" + op + "S" + } else if rno >= D0 && rno <= D31 { + op = "F" + op + "D" + } else if rno >= Q0 && rno <= Q31 { + op = "F" + op + "Q" + } + op = op + suffix + if inst.Op.String() == "STP" { return op + " " + args[0] + ", " + args[1] - } else if op == "LDP" { - op = op + suffix - return op + " " + args[1] + ", " + args[0] - } else if op == "LDAXP" || op == "LDXP" || op == "LDAXPW" || op == "LDXPW" { + } else { return op + " " + args[1] + ", " + args[0] } @@ -388,6 +419,8 @@ func GoSyntax(inst Inst, pc uint64, symname func(uint64) (string, uint64), text case UMOV: op = "VMOV" + case NOP: + op = "NOOP" default: index := sort.SearchStrings(noSuffixOpSet, op) @@ -467,6 +500,12 @@ SHA256SU0 SHA256SU1 `) +// floating point instructions without "F" prefix. +var fOpsWithoutFPrefix = map[Op]bool{ + LDP: true, + STP: true, +} + func plan9Arg(inst *Inst, pc uint64, symname func(uint64) (string, uint64), arg Arg) string { switch a := arg.(type) { case Imm: @@ -492,24 +531,18 @@ func plan9Arg(inst *Inst, pc uint64, symname func(uint64) (string, uint64), arg regenum := uint16(a) regno := uint16(a) & 31 - if regenum >= uint16(B0) && regenum <= uint16(D31) { - if strings.HasPrefix(inst.Op.String(), "F") || strings.HasSuffix(inst.Op.String(), "CVTF") { + if regenum >= uint16(B0) && regenum <= uint16(Q31) { + if strings.HasPrefix(inst.Op.String(), "F") || strings.HasSuffix(inst.Op.String(), "CVTF") || fOpsWithoutFPrefix[inst.Op] { // FP registers are the same ones as SIMD registers // Print Fn for scalar variant to align with assembler (e.g., FCVT, SCVTF, UCVTF, etc.) return fmt.Sprintf("F%d", regno) } else { + // Print Vn to align with assembler (e.g., SHA256H) return fmt.Sprintf("V%d", regno) } - } else if regenum >= uint16(Q0) && regenum <= uint16(Q31) { - // Print Vn to align with assembler (e.g., SHA256H) - return fmt.Sprintf("V%d", regno) - } - - if regno == 31 { - return "ZR" } - return fmt.Sprintf("R%d", regno) + return plan9gpr(a) case RegSP: regno := uint16(a) & 31 @@ -519,13 +552,7 @@ func plan9Arg(inst *Inst, pc uint64, symname func(uint64) (string, uint64), arg return fmt.Sprintf("R%d", regno) case RegExtshiftAmount: - reg := "" - regno := uint16(a.reg) & 31 - if regno == 31 { - reg = "ZR" - } else { - reg = fmt.Sprintf("R%d", uint16(a.reg)&31) - } + reg := plan9gpr(a.reg) extshift := "" amount := "" if a.extShift != ExtShift(0) { @@ -578,29 +605,27 @@ func plan9Arg(inst *Inst, pc uint64, symname func(uint64) (string, uint64), arg case MemExtend: base := "" index := "" - indexreg := "" regno := uint16(a.Base) & 31 if regno == 31 { base = "(RSP)" } else { base = fmt.Sprintf("(R%d)", regno) } - regno = uint16(a.Index) & 31 - if regno == 31 { - indexreg = "ZR" - } else { - indexreg = fmt.Sprintf("R%d", regno) - } + indexreg := plan9gpr(a.Index) if a.Extend == lsl { + // Refer to ARM reference manual, for byte load/store(register), the index + // shift amount must be 0, encoded in "S" as 0 if omitted, or as 1 if present. // a.Amount indicates the index shift amount, encoded in "S" field. - // a.ShiftMustBeZero is set true when the index shift amount must be 0, - // even if the a.Amount field is not 0. - // When a.ShiftMustBeZero is ture, GNU syntax prints #0 shift amount if - // "S" equals to 1, or does not print #0 shift amount if "S" equals to 0. - // Go syntax should never print a zero index shift amount. + // a.ShiftMustBeZero is set true indicates the index shift amount must be 0. + // When a.ShiftMustBeZero is true, GNU syntax prints "[Xn, Xm lsl #0]" if "S" + // equals to 1, or prints "[Xn, Xm]" if "S" equals to 0. if a.Amount != 0 && !a.ShiftMustBeZero { index = fmt.Sprintf("(%s<<%d)", indexreg, a.Amount) + } else if a.ShiftMustBeZero && a.Amount == 1 { + // When a.ShiftMustBeZero is ture, Go syntax prints "(Rm<<0)" if "a.Amount" + // equals to 1. + index = fmt.Sprintf("(%s<<0)", indexreg) } else { index = fmt.Sprintf("(%s)", indexreg) } @@ -696,7 +721,22 @@ func plan9Arg(inst *Inst, pc uint64, symname func(uint64) (string, uint64), arg if strings.Contains(a.String(), "#") { return fmt.Sprintf("$%d", a) } + case sysOp: + result := a.op.String() + if a.r != 0 { + result += ", " + plan9gpr(a.r) + } + return result } return strings.ToUpper(arg.String()) } + +// Convert a general-purpose register to plan9 assembly format. +func plan9gpr(r Reg) string { + regno := uint16(r) & 31 + if regno == 31 { + return "ZR" + } + return fmt.Sprintf("R%d", regno) +} diff --git a/vendor/golang.org/x/arch/ppc64/ppc64asm/decode.go b/vendor/golang.org/x/arch/ppc64/ppc64asm/decode.go index 5f04ff40e4..b8d857c6a6 100644 --- a/vendor/golang.org/x/arch/ppc64/ppc64asm/decode.go +++ b/vendor/golang.org/x/arch/ppc64/ppc64asm/decode.go @@ -12,18 +12,28 @@ import ( const debugDecode = false +const prefixOpcode = 1 + // instFormat is a decoding rule for one specific instruction form. -// a uint32 instruction ins matches the rule if ins&Mask == Value +// an instruction ins matches the rule if ins&Mask == Value // DontCare bits should be zero, but the machine might not reject // ones in those bits, they are mainly reserved for future expansion // of the instruction set. // The Args are stored in the same order as the instruction manual. +// +// Prefixed instructions are stored as: +// +// prefix << 32 | suffix, +// +// Regular instructions are: +// +// inst << 32 type instFormat struct { Op Op - Mask uint32 - Value uint32 - DontCare uint32 - Args [5]*argField + Mask uint64 + Value uint64 + DontCare uint64 + Args [6]*argField } // argField indicate how to decode an argument to an instruction. @@ -36,7 +46,7 @@ type argField struct { } // Parse parses the Arg out from the given binary instruction i. -func (a argField) Parse(i uint32) Arg { +func (a argField) Parse(i [2]uint32) Arg { switch a.Type { default: return nil @@ -54,6 +64,10 @@ func (a argField) Parse(i uint32) Arg { return V0 + Reg(a.BitFields.Parse(i)) case TypeVecSReg: return VS0 + Reg(a.BitFields.Parse(i)) + case TypeVecSpReg: + return VS0 + Reg(a.BitFields.Parse(i))*2 + case TypeMMAReg: + return A0 + Reg(a.BitFields.Parse(i)) case TypeSpReg: return SpReg(a.BitFields.Parse(i)) case TypeImmSigned: @@ -66,6 +80,12 @@ func (a argField) Parse(i uint32) Arg { return Label(a.BitFields.ParseSigned(i) << a.Shift) case TypeOffset: return Offset(a.BitFields.ParseSigned(i) << a.Shift) + case TypeNegOffset: + // An oddball encoding of offset for hashchk and similar. + // e.g hashchk offset is 0b1111111000000000 | DX << 8 | D << 3 + off := a.BitFields.ParseSigned(i) << a.Shift + neg := int64(-1) << (int(a.Shift) + a.BitFields.NumBits()) + return Offset(neg | off) } } @@ -81,10 +101,13 @@ const ( TypeFPReg // floating point register TypeVecReg // vector register TypeVecSReg // VSX register + TypeVecSpReg // VSX register pair (even only encoding) + TypeMMAReg // MMA register TypeSpReg // special register (depends on Op) TypeImmSigned // signed immediate TypeImmUnsigned // unsigned immediate/flag/mask, this is the catch-all type TypeOffset // signed offset in load/store + TypeNegOffset // A negative 16 bit value 0b1111111xxxxx000 encoded as 0bxxxxx (e.g in the hashchk instruction) TypeLast // must be the last one ) @@ -106,6 +129,10 @@ func (t ArgType) String() string { return "VecReg" case TypeVecSReg: return "VecSReg" + case TypeVecSpReg: + return "VecSpReg" + case TypeMMAReg: + return "MMAReg" case TypeSpReg: return "SpReg" case TypeImmSigned: @@ -118,6 +145,8 @@ func (t ArgType) String() string { return "Label" case TypeOffset: return "Offset" + case TypeNegOffset: + return "NegOffset" } } @@ -146,9 +175,22 @@ func Decode(src []byte, ord binary.ByteOrder) (inst Inst, err error) { if decoderCover == nil { decoderCover = make([]bool, len(instFormats)) } - inst.Len = 4 // only 4-byte instructions are supported - ui := ord.Uint32(src[:inst.Len]) - inst.Enc = ui + inst.Len = 4 + ui_extn := [2]uint32{ord.Uint32(src[:inst.Len]), 0} + ui := uint64(ui_extn[0]) << 32 + inst.Enc = ui_extn[0] + opcode := inst.Enc >> 26 + if opcode == prefixOpcode { + // This is a prefixed instruction + inst.Len = 8 + if len(src) < 8 { + return inst, errShort + } + // Merge the suffixed word. + ui_extn[1] = ord.Uint32(src[4:inst.Len]) + ui |= uint64(ui_extn[1]) + inst.SuffixEnc = ui_extn[1] + } for i, iform := range instFormats { if ui&iform.Mask != iform.Value { continue @@ -163,7 +205,7 @@ func Decode(src []byte, ord binary.ByteOrder) (inst Inst, err error) { if argfield == nil { break } - inst.Args[i] = argfield.Parse(ui) + inst.Args[i] = argfield.Parse(ui_extn) } inst.Op = iform.Op if debugDecode { diff --git a/vendor/golang.org/x/arch/ppc64/ppc64asm/field.go b/vendor/golang.org/x/arch/ppc64/ppc64asm/field.go index 26a4fdf1a0..b47f672d31 100644 --- a/vendor/golang.org/x/arch/ppc64/ppc64asm/field.go +++ b/vendor/golang.org/x/arch/ppc64/ppc64asm/field.go @@ -14,6 +14,10 @@ import ( type BitField struct { Offs uint8 // the offset of the left-most bit. Bits uint8 // length in bits. + // This instruction word holding this field. + // It is always 0 for ISA < 3.1 instructions. It is + // in decoding order. (0 == prefix, 1 == suffix on ISA 3.1) + Word uint8 } func (b BitField) String() string { @@ -28,16 +32,16 @@ func (b BitField) String() string { // Parse extracts the bitfield b from i, and return it as an unsigned integer. // Parse will panic if b is invalid. -func (b BitField) Parse(i uint32) uint32 { +func (b BitField) Parse(i [2]uint32) uint32 { if b.Bits > 32 || b.Bits == 0 || b.Offs > 31 || b.Offs+b.Bits > 32 { panic(fmt.Sprintf("invalid bitfiled %v", b)) } - return (i >> (32 - b.Offs - b.Bits)) & ((1 << b.Bits) - 1) + return (i[b.Word] >> (32 - b.Offs - b.Bits)) & ((1 << b.Bits) - 1) } // ParseSigned extracts the bitfield b from i, and return it as a signed integer. // ParseSigned will panic if b is invalid. -func (b BitField) ParseSigned(i uint32) int32 { +func (b BitField) ParseSigned(i [2]uint32) int32 { u := int32(b.Parse(i)) return u << (32 - b.Bits) >> (32 - b.Bits) } @@ -61,9 +65,9 @@ func (bs *BitFields) Append(b BitField) { // as an unsigned integer and the total length of all the bitfields. // parse will panic if any bitfield in b is invalid, but it doesn't check if // the sequence of bitfields is reasonable. -func (bs BitFields) parse(i uint32) (u uint32, Bits uint8) { +func (bs BitFields) parse(i [2]uint32) (u uint64, Bits uint8) { for _, b := range bs { - u = (u << b.Bits) | b.Parse(i) + u = (u << b.Bits) | uint64(b.Parse(i)) Bits += b.Bits } return u, Bits @@ -71,14 +75,23 @@ func (bs BitFields) parse(i uint32) (u uint32, Bits uint8) { // Parse extracts the bitfields from i, concatenate them and return the result // as an unsigned integer. Parse will panic if any bitfield in b is invalid. -func (bs BitFields) Parse(i uint32) uint32 { +func (bs BitFields) Parse(i [2]uint32) uint64 { u, _ := bs.parse(i) return u } -// Parse extracts the bitfields from i, concatenate them and return the result +// ParseSigned extracts the bitfields from i, concatenate them and return the result // as a signed integer. Parse will panic if any bitfield in b is invalid. -func (bs BitFields) ParseSigned(i uint32) int32 { +func (bs BitFields) ParseSigned(i [2]uint32) int64 { u, l := bs.parse(i) - return int32(u) << (32 - l) >> (32 - l) + return int64(u) << (64 - l) >> (64 - l) +} + +// Count the number of bits in the aggregate BitFields +func (bs BitFields) NumBits() int { + num := 0 + for _, b := range bs { + num += int(b.Bits) + } + return num } diff --git a/vendor/golang.org/x/arch/ppc64/ppc64asm/gnu.go b/vendor/golang.org/x/arch/ppc64/ppc64asm/gnu.go index fc2916408c..367acdd49d 100644 --- a/vendor/golang.org/x/arch/ppc64/ppc64asm/gnu.go +++ b/vendor/golang.org/x/arch/ppc64/ppc64asm/gnu.go @@ -11,8 +11,10 @@ import ( ) var ( - condBit = [4]string{"lt", "gt", "eq", "so"} - condBitNeg = [4]string{"ge", "le", "ne", "so"} + // bit 3 of index is a negated check. + condBit = [8]string{ + "lt", "gt", "eq", "so", + "ge", "le", "ne", "ns"} ) // GNUSyntax returns the GNU assembler syntax for the instruction, as defined by GNU binutils. @@ -31,57 +33,146 @@ func GNUSyntax(inst Inst, pc uint64) string { // Special handling for some ops startArg := 0 sep := " " - switch inst.Op.String() { - case "bc": - bo := gnuArg(&inst, 0, inst.Args[0], PC) - bi := inst.Args[1] - switch bi := bi.(type) { - case CondReg: - if bi >= CR0 { - if bi == CR0 && bo == "16" { - buf.WriteString("bdnz") + opName := inst.Op.String() + argList := inst.Args[:] + + switch opName { + case "bc", "bcl", "bca", "bcla", "bclr", "bclrl", "bcctr", "bcctrl", "bctar", "bctarl": + sfx := inst.Op.String()[2:] + bo := int(inst.Args[0].(Imm)) + bi := inst.Args[1].(CondReg) + atsfx := [4]string{"", "?", "-", "+"} + decsfx := [2]string{"dnz", "dz"} + + //BO field is... complicated (z == ignored bit, at == prediction hint) + //Paraphrased from ISA 3.1 Book I Section 2.4: + // + //0000z -> decrement ctr, b if ctr != 0 and CRbi == 0 + //0001z -> decrement ctr, b if ctr == 0 and CRbi == 0 + //001at -> b if CRbi == 0 + //0100z -> decrement ctr, b if ctr != 0 and CRbi == 1 + //0101z -> decrement ctr, b if ctr == 0 and CRbi == 1 + //011at -> b if CRbi == 1 + //1a00t -> decrement ctr, b if ctr != 0 + //1a01t -> decrement ctr, b if ctr == 0 + //1z1zz -> b always + + // Decoding (in this order) we get + // BO & 0b00100 == 0b00000 -> dz if BO[1], else dnz (not simplified for bcctrl forms) + // BO & 0b10000 == 0b10000 -> (bc and bca forms not simplified), at = B[4]B[0] if B[2] != 0, done + // BO & 0b10000 == 0b00000 -> t if BO[3], else f + // BO & 0b10100 == 0b00100 -> at = B[0:1] + + // BI fields rename as follows: + // less than : lt BI%4==0 && test == t + // less than or equal : le BI%4==1 && test == f + // equal : eq BI%4==2 && test == t + // greater than or equal: ge BI%4==0 && test == f + // greater than : gt BI%4==1 && test == t + // not less than : nl BI%4==0 && test == f + // not equal : ne BI%4==2 && test == f + // not greater than : ng BI%4==1 && test == f + // summary overflow : so BI%4==3 && test == t + // not summary overflow : ns BI%4==3 && test == f + // unordered : un BI%4==3 && test == t + // not unordered : nu BI%4==3 && test == f + // + // Note, there are only 8 possible tests, but quite a few more + // ways to name fields. For simplicity, we choose those in condBit. + + at := 0 // 0 == no hint, 1 == reserved, 2 == not likely, 3 == likely + form := 1 // 1 == n/a, 0 == cr bit not set, 4 == cr bit set + cr := (bi - Cond0LT) / 4 + bh := -1 // Only for lr/tar/ctr variants. + switch opName { + case "bclr", "bclrl", "bcctr", "bcctrl", "bctar", "bctarl": + bh = int(inst.Args[2].(Imm)) + } + + if bo&0x14 == 0x14 { + if bo == 0x14 && bi == Cond0LT { // preferred form of unconditional branch + // Likewise, avoid printing fake b/ba/bl/bla + if opName != "bc" && opName != "bca" && opName != "bcl" && opName != "bcla" { + startArg = 2 } - buf.WriteString(fmt.Sprintf("bc cr%d", bi-CR0)) } - cr := bi / 4 - switch bo { - case "4": - bit := condBitNeg[(bi-Cond0LT)%4] - if cr == 0 { - buf.WriteString(fmt.Sprintf("b%s", bit)) - } else { - buf.WriteString(fmt.Sprintf("b%s cr%d,", bit, cr)) - sep = "" - } - case "12": - bit := condBit[(bi-Cond0LT)%4] - if cr == 0 { - buf.WriteString(fmt.Sprintf("b%s", bit)) - } else { - buf.WriteString(fmt.Sprintf("b%s cr%d,", bit, cr)) - sep = "" + } else if bo&0x04 == 0 { // ctr is decremented + if opName != "bcctr" && opName != "bcctrl" { + startArg = 1 + tf := "" + if bo&0x10 == 0x00 { + tf = "f" + if bo&0x08 == 0x08 { + tf = "t" + } } - case "8": - bit := condBit[(bi-Cond0LT)%4] - sep = "" - if cr == 0 { - buf.WriteString(fmt.Sprintf("bdnzt %s,", bit)) - } else { - buf.WriteString(fmt.Sprintf("bdnzt cr%d,%s,", cr, bit)) + sfx = decsfx[(bo>>1)&1] + tf + sfx + } + if bo&0x10 == 0x10 { + if opName != "bcctr" && opName != "bcctrl" { + startArg = 2 } - case "16": - if cr == 0 && bi == Cond0LT { - buf.WriteString("bdnz") - } else { - buf.WriteString(fmt.Sprintf("bdnz cr%d,", cr)) - sep = "" + if bi != Cond0LT { + // A non-zero BI bit was encoded, but ignored by BO + startArg = 0 } + at = ((bo & 0x8) >> 2) | (bo & 0x1) + } else if bo&0x4 == 0x4 { + at = bo & 0x3 + } + } else if bo&0x10 == 0x10 { // BI field is not used + if opName != "bca" && opName != "bc" { + at = ((bo & 0x8) >> 2) | (bo & 0x1) + startArg = 2 + } + // If BI is encoded as a bit other than 0, no mnemonic. + if bo&0x14 == 0x14 { + startArg = 0 } + } else { + form = (bo & 0x8) >> 1 startArg = 2 - default: - fmt.Printf("Unexpected bi: %d for bc with bo: %s\n", bi, bo) + if bo&0x14 == 0x04 { + at = bo & 0x3 + } + } + sfx += atsfx[at] + + if form != 1 { + bit := int((bi-Cond0LT)%4) | (^form)&0x4 + sfx = condBit[bit] + sfx + } + + if at != 1 && startArg > 0 && bh <= 0 { + str := fmt.Sprintf("b%s", sfx) + if startArg > 1 && (cr != 0 || bh > 0) { + str += fmt.Sprintf(" cr%d", cr) + sep = "," + } + buf.WriteString(str) + if startArg < 2 && bh == 0 { + str := fmt.Sprintf(" %s", + gnuArg(&inst, 1, inst.Args[1], PC)) + buf.WriteString(str) + startArg = 3 + } else if bh == 0 { + startArg = 3 + } + } else { + if startArg == 0 || bh > 0 || at == 1 { + buf.WriteString(inst.Op.String()) + buf.WriteString(atsfx[at]) + startArg = 0 + } else { + buf.WriteString("b" + sfx) + } + if bh == 0 { + str := fmt.Sprintf(" %d,%s", bo, gnuArg(&inst, 1, inst.Args[1], PC)) + buf.WriteString(str) + startArg = 3 + } } - startArg = 2 + case "mtspr": opcode := inst.Op.String() buf.WriteString(opcode[0:2]) @@ -134,10 +225,121 @@ func GNUSyntax(inst Inst, pc uint64) string { buf.WriteString("spr") } - default: + case "mtfsfi", "mtfsfi.": + buf.WriteString(opName) + l := inst.Args[2].(Imm) + if l == 0 { + // L == 0 is an extended mnemonic for the same. + asm := fmt.Sprintf(" %s,%s", + gnuArg(&inst, 0, inst.Args[0], PC), + gnuArg(&inst, 1, inst.Args[1], PC)) + buf.WriteString(asm) + startArg = 3 + } + + case "paste.": + buf.WriteString(opName) + l := inst.Args[2].(Imm) + if l == 1 { + // L == 1 is an extended mnemonic for the same. + asm := fmt.Sprintf(" %s,%s", + gnuArg(&inst, 0, inst.Args[0], PC), + gnuArg(&inst, 1, inst.Args[1], PC)) + buf.WriteString(asm) + startArg = 3 + } + + case "mtfsf", "mtfsf.": + buf.WriteString(opName) + l := inst.Args[3].(Imm) + if l == 0 { + // L == 0 is an extended mnemonic for the same. + asm := fmt.Sprintf(" %s,%s,%s", + gnuArg(&inst, 0, inst.Args[0], PC), + gnuArg(&inst, 1, inst.Args[1], PC), + gnuArg(&inst, 2, inst.Args[2], PC)) + buf.WriteString(asm) + startArg = 4 + } + + case "sync": + lsc := inst.Args[0].(Imm)<<4 | inst.Args[1].(Imm) + switch lsc { + case 0x00: + buf.WriteString("hwsync") + startArg = 2 + case 0x10: + buf.WriteString("lwsync") + startArg = 2 + default: + buf.WriteString(opName) + } + + case "lbarx", "lharx", "lwarx", "ldarx": + // If EH == 0, omit printing EH. + eh := inst.Args[3].(Imm) + if eh == 0 { + argList = inst.Args[:3] + } buf.WriteString(inst.Op.String()) + + case "paddi": + // There are several extended mnemonics. Notably, "pla" is + // the only valid mnemonic for paddi (R=1), In this case, RA must + // always be 0. Otherwise it is invalid. + r := inst.Args[3].(Imm) + ra := inst.Args[1].(Reg) + str := opName + if ra == R0 { + name := []string{"pli", "pla"} + str = fmt.Sprintf("%s %s,%s", + name[r&1], + gnuArg(&inst, 0, inst.Args[0], PC), + gnuArg(&inst, 2, inst.Args[2], PC)) + startArg = 4 + } else { + str = fmt.Sprintf("%s %s,%s,%s", opName, + gnuArg(&inst, 0, inst.Args[0], PC), + gnuArg(&inst, 1, inst.Args[1], PC), + gnuArg(&inst, 2, inst.Args[2], PC)) + startArg = 4 + if r == 1 { + // This is an illegal encoding (ra != 0 && r == 1) on ISA 3.1. + v := uint64(inst.Enc)<<32 | uint64(inst.SuffixEnc) + return fmt.Sprintf(".quad 0x%x", v) + } + } + buf.WriteString(str) + + default: + // Prefixed load/stores do not print the displacement register when R==1 (they are PCrel). + // This also implies RA should be 0. Likewise, when R==0, printing of R can be omitted. + if strings.HasPrefix(opName, "pl") || strings.HasPrefix(opName, "pst") { + r := inst.Args[3].(Imm) + ra := inst.Args[2].(Reg) + d := inst.Args[1].(Offset) + if r == 1 && ra == R0 { + str := fmt.Sprintf("%s %s,%d", opName, gnuArg(&inst, 0, inst.Args[0], PC), d) + buf.WriteString(str) + startArg = 4 + } else { + str := fmt.Sprintf("%s %s,%d(%s)", opName, + gnuArg(&inst, 0, inst.Args[0], PC), + d, + gnuArg(&inst, 2, inst.Args[2], PC)) + if r == 1 { + // This is an invalid encoding (ra != 0 && r == 1) on ISA 3.1. + v := uint64(inst.Enc)<<32 | uint64(inst.SuffixEnc) + return fmt.Sprintf(".quad 0x%x", v) + } + buf.WriteString(str) + startArg = 4 + } + } else { + buf.WriteString(opName) + } } - for i, arg := range inst.Args[:] { + for i, arg := range argList { if arg == nil { break } @@ -157,7 +359,7 @@ func GNUSyntax(inst Inst, pc uint64) string { // gnuArg formats arg (which is the argIndex's arg in inst) according to GNU rules. // NOTE: because GNUSyntax is the only caller of this func, and it receives a copy -// of inst, it's ok to modify inst.Args here. +// of inst, it's ok to modify inst.Args here. func gnuArg(inst *Inst, argIndex int, arg Arg, pc uint64) string { // special cases for load/store instructions if _, ok := arg.(Offset); ok { @@ -185,7 +387,7 @@ func gnuArg(inst *Inst, argIndex int, arg Arg, pc uint64) string { if arg <= Cond0SO { return bit } - return fmt.Sprintf("%s cr%d", bit, int(arg-Cond0LT)/4) + return fmt.Sprintf("4*cr%d+%s", int(arg-Cond0LT)/4, bit) case Imm: return fmt.Sprintf("%d", arg) case SpReg: @@ -262,6 +464,8 @@ func isLoadStoreOp(op Op) bool { return true case LHBRX, LWBRX, STHBRX, STWBRX: return true + case LBARX, LWARX, LHARX, LDARX: + return true } return false } diff --git a/vendor/golang.org/x/arch/ppc64/ppc64asm/inst.go b/vendor/golang.org/x/arch/ppc64/ppc64asm/inst.go index 870522a10b..41e04513dd 100644 --- a/vendor/golang.org/x/arch/ppc64/ppc64asm/inst.go +++ b/vendor/golang.org/x/arch/ppc64/ppc64asm/inst.go @@ -10,10 +10,11 @@ import ( ) type Inst struct { - Op Op // Opcode mnemonic - Enc uint32 // Raw encoding bits - Len int // Length of encoding in bytes. - Args Args // Instruction arguments, in Power ISA manual order. + Op Op // Opcode mnemonic + Enc uint32 // Raw encoding bits (if Len == 8, this is the prefix word) + Len int // Length of encoding in bytes. + SuffixEnc uint32 // Raw encoding bits of second word (if Len == 8) + Args Args // Instruction arguments, in Power ISA manual order. } func (i Inst) String() string { @@ -50,9 +51,9 @@ type Arg interface { } // An Args holds the instruction arguments. -// If an instruction has fewer than 4 arguments, +// If an instruction has fewer than 6 arguments, // the final elements in the array are nil. -type Args [5]Arg +type Args [6]Arg // A Reg is a single register. The zero value means R0, not the absence of a register. // It also includes special registers. @@ -220,6 +221,14 @@ const ( VS61 VS62 VS63 + A0 // MMA registers. These are effectively shadow registers of four adjacent VSR's [An*4,An*4+3] + A1 + A2 + A3 + A4 + A5 + A6 + A7 ) func (Reg) IsArg() {} @@ -233,6 +242,8 @@ func (r Reg) String() string { return fmt.Sprintf("v%d", int(r-V0)) case VS0 <= r && r <= VS63: return fmt.Sprintf("vs%d", int(r-VS0)) + case A0 <= r && r <= A7: + return fmt.Sprintf("a%d", int(r-A0)) default: return fmt.Sprintf("Reg(%d)", int(r)) } @@ -328,7 +339,7 @@ func (l Label) String() string { } // Imm represents an immediate number. -type Imm int32 +type Imm int64 func (Imm) IsArg() {} func (i Imm) String() string { @@ -336,7 +347,7 @@ func (i Imm) String() string { } // Offset represents a memory offset immediate. -type Offset int32 +type Offset int64 func (Offset) IsArg() {} func (o Offset) String() string { diff --git a/vendor/golang.org/x/arch/ppc64/ppc64asm/plan9.go b/vendor/golang.org/x/arch/ppc64/ppc64asm/plan9.go index d039d9d500..fcb2a1288d 100644 --- a/vendor/golang.org/x/arch/ppc64/ppc64asm/plan9.go +++ b/vendor/golang.org/x/arch/ppc64/ppc64asm/plan9.go @@ -30,18 +30,7 @@ func GoSyntax(inst Inst, pc uint64, symname func(uint64) (string, uint64)) strin break } if s := plan9Arg(&inst, i, pc, a, symname); s != "" { - // In the case for some BC instructions, a CondReg arg has - // both the CR and the branch condition encoded in its value. - // plan9Arg will return a string with the string representation - // of these values separated by a blank that will be treated - // as 2 args from this point on. - if strings.IndexByte(s, ' ') > 0 { - t := strings.Split(s, " ") - args = append(args, t[0]) - args = append(args, t[1]) - } else { - args = append(args, s) - } + args = append(args, s) } } var op string @@ -55,13 +44,30 @@ func GoSyntax(inst Inst, pc uint64, symname func(uint64) (string, uint64)) strin // laid out the instruction switch inst.Op { default: // dst, sA, sB, ... - if len(args) == 0 { + switch len(args) { + case 0: return op - } else if len(args) == 1 { + case 1: return fmt.Sprintf("%s %s", op, args[0]) + case 2: + if inst.Op == COPY || inst.Op == PASTECC { + return op + " " + args[0] + "," + args[1] + } + return op + " " + args[1] + "," + args[0] + case 3: + if reverseOperandOrder(inst.Op) { + return op + " " + args[2] + "," + args[1] + "," + args[0] + } + case 4: + if reverseMiddleOps(inst.Op) { + return op + " " + args[1] + "," + args[3] + "," + args[2] + "," + args[0] + } } args = append(args, args[0]) return op + " " + strings.Join(args[1:], ",") + case PASTECC: + // paste. has two input registers, and an L field, unlike other 3 operand instructions. + return op + " " + args[0] + "," + args[1] + "," + args[2] case SYNC: if args[0] == "$1" { return "LWSYNC" @@ -77,43 +83,58 @@ func GoSyntax(inst Inst, pc uint64, symname func(uint64) (string, uint64)) strin STH, STHU, STW, STWU, STD, STDU, - STQ: + STFD, STFDU, + STFS, STFSU, + STQ, HASHST, HASHSTP: return op + " " + strings.Join(args, ",") - case CMPD, CMPDI, CMPLD, CMPLDI, CMPW, CMPWI, CMPLW, CMPLWI: - if len(args) == 2 { - return op + " " + args[0] + "," + args[1] - } else if len(args) == 3 { - return op + " " + args[0] + "," + args[1] + "," + args[2] + case FCMPU, FCMPO, CMPD, CMPDI, CMPLD, CMPLDI, CMPW, CMPWI, CMPLW, CMPLWI: + crf := int(inst.Args[0].(CondReg) - CR0) + cmpstr := op + " " + args[1] + "," + args[2] + if crf != 0 { // print CRx as the final operand if not implied (i.e BF != 0) + cmpstr += "," + args[0] } - return op + " " + args[0] + " ??" + return cmpstr case LIS: return "ADDIS $0," + args[1] + "," + args[0] // store instructions with index registers case STBX, STBUX, STHX, STHUX, STWX, STWUX, STDX, STDUX, - STHBRX, STWBRX, STDBRX, STSWX, STFSX, STFSUX, STFDX, STFDUX, STFIWX, STFDPX: + STHBRX, STWBRX, STDBRX, STSWX, STFIWX: return "MOV" + op[2:len(op)-1] + " " + args[0] + ",(" + args[2] + ")(" + args[1] + ")" case STDCXCC, STWCXCC, STHCXCC, STBCXCC: return op + " " + args[0] + ",(" + args[2] + ")(" + args[1] + ")" - case STXVD2X, STXVW4X: + case STXVX, STXVD2X, STXVW4X, STXVH8X, STXVB16X, STXSDX, STVX, STVXL, STVEBX, STVEHX, STVEWX, STXSIWX, STFDX, STFDUX, STFDPX, STFSX, STFSUX: return op + " " + args[0] + ",(" + args[2] + ")(" + args[1] + ")" - // load instructions with index registers - case LBZX, LBZUX, LHZX, LHZUX, LWZX, LWZUX, LDX, LDUX, - LHBRX, LWBRX, LDBRX, LSWX, LFSX, LFSUX, LFDX, LFDUX, LFIWAX, LFIWZX: - return "MOV" + op[1:len(op)-1] + " (" + args[2] + ")(" + args[1] + ")," + args[0] + case STXV: + return op + " " + args[0] + "," + args[1] + + case STXVL, STXVLL: + return op + " " + args[0] + "," + args[1] + "," + args[2] - case LDARX, LWARX, LHARX, LBARX: + case LWAX, LWAUX, LWZX, LHZX, LBZX, LDX, LHAX, LHAUX, LDARX, LWARX, LHARX, LBARX, LFDX, LFDUX, LFSX, LFSUX, LDBRX, LWBRX, LHBRX, LDUX, LWZUX, LHZUX, LBZUX: + if args[1] == "0" { + return op + " (" + args[2] + ")," + args[0] + } return op + " (" + args[2] + ")(" + args[1] + ")," + args[0] - case LXVD2X, LXVW4X: + case LXVX, LXVD2X, LXVW4X, LXVH8X, LXVB16X, LVX, LVXL, LVSR, LVSL, LVEBX, LVEHX, LVEWX, LXSDX, LXSIWAX: return op + " (" + args[2] + ")(" + args[1] + ")," + args[0] - case DCBT, DCBTST, DCBZ, DCBST: - return op + " (" + args[1] + ")" + case LXV: + return op + " " + args[1] + "," + args[0] + + case LXVL, LXVLL: + return op + " " + args[1] + "," + args[2] + "," + args[0] + + case DCBT, DCBTST, DCBZ, DCBST, ICBI: + if args[0] == "0" || args[0] == "R0" { + return op + " (" + args[1] + ")" + } + return op + " (" + args[1] + ")(" + args[0] + ")" // branch instructions needs additional handling case BCLR: @@ -122,16 +143,15 @@ func GoSyntax(inst Inst, pc uint64, symname func(uint64) (string, uint64)) strin } return op + " " + strings.Join(args, ", ") case BC: - if int(inst.Args[0].(Imm))&0x1c == 12 { // jump on cond bit set - if len(args) == 4 { - return fmt.Sprintf("B%s %s,%s", args[1], args[2], args[3]) - } - return fmt.Sprintf("B%s %s", args[1], args[2]) - } else if int(inst.Args[0].(Imm))&0x1c == 4 && revCondMap[args[1]] != "" { // jump on cond bit not set - if len(args) == 4 { - return fmt.Sprintf("B%s %s,%s", revCondMap[args[1]], args[2], args[3]) + bo := int(inst.Args[0].(Imm)) + bi := int(inst.Args[1].(CondReg) - Cond0LT) + bcname := condName[((bo&0x8)>>1)|(bi&0x3)] + if bo&0x17 == 4 { // jump only a CR bit set/unset, no hints (at bits) set. + if bi >= 4 { + return fmt.Sprintf("B%s CR%d,%s", bcname, bi>>2, args[2]) + } else { + return fmt.Sprintf("B%s %s", bcname, args[2]) } - return fmt.Sprintf("B%s %s", revCondMap[args[1]], args[2]) } return op + " " + strings.Join(args, ",") case BCCTR: @@ -150,8 +170,9 @@ func GoSyntax(inst Inst, pc uint64, symname func(uint64) (string, uint64)) strin } // plan9Arg formats arg (which is the argIndex's arg in inst) according to Plan 9 rules. +// // NOTE: because Plan9Syntax is the only caller of this func, and it receives a copy -// of inst, it's ok to modify inst.Args here. +// of inst, it's ok to modify inst.Args here. func plan9Arg(inst *Inst, argIndex int, pc uint64, arg Arg, symname func(uint64) (string, uint64)) string { // special cases for load/store instructions if _, ok := arg.(Offset); ok { @@ -173,16 +194,14 @@ func plan9Arg(inst *Inst, argIndex int, pc uint64, arg Arg, symname func(uint64) if inst.Op == ISEL { return fmt.Sprintf("$%d", (arg - Cond0LT)) } - if arg == CR0 && strings.HasPrefix(inst.Op.String(), "cmp") { - return "" // don't show cr0 for cmp instructions - } else if arg >= CR0 { - return fmt.Sprintf("CR%d", int(arg-CR0)) - } bit := [4]string{"LT", "GT", "EQ", "SO"}[(arg-Cond0LT)%4] if arg <= Cond0SO { return bit + } else if arg > Cond0SO && arg <= Cond7SO { + return fmt.Sprintf("CR%d%s", int(arg-Cond0LT)/4, bit) + } else { + return fmt.Sprintf("CR%d", int(arg-CR0)) } - return fmt.Sprintf("%s CR%d", bit, int(arg-Cond0LT)/4) case Imm: return fmt.Sprintf("$%d", arg) case SpReg: @@ -195,9 +214,16 @@ func plan9Arg(inst *Inst, argIndex int, pc uint64, arg Arg, symname func(uint64) return fmt.Sprintf("SPR(%d)", int(arg)) case PCRel: addr := pc + uint64(int64(arg)) - if s, base := symname(addr); s != "" && base == addr { + s, base := symname(addr) + if s != "" && addr == base { return fmt.Sprintf("%s(SB)", s) } + if inst.Op == BL && s != "" && (addr-base) == 8 { + // When decoding an object built for PIE, a CALL targeting + // a global entry point will be adjusted to the local entry + // if any. For now, assume any symname+8 PC is a local call. + return fmt.Sprintf("%s+%d(SB)", s, addr-base) + } return fmt.Sprintf("%#x", addr) case Label: return fmt.Sprintf("%#x", int(arg)) @@ -212,22 +238,122 @@ func plan9Arg(inst *Inst, argIndex int, pc uint64, arg Arg, symname func(uint64) return fmt.Sprintf("???(%v)", arg) } +func reverseMiddleOps(op Op) bool { + switch op { + case FMADD, FMADDCC, FMADDS, FMADDSCC, FMSUB, FMSUBCC, FMSUBS, FMSUBSCC, FNMADD, FNMADDCC, FNMADDS, FNMADDSCC, FNMSUB, FNMSUBCC, FNMSUBS, FNMSUBSCC, FSEL, FSELCC: + return true + } + return false +} + +func reverseOperandOrder(op Op) bool { + switch op { + // Special case for SUBF, SUBFC: not reversed + case ADD, ADDC, ADDE, ADDCC, ADDCCC: + return true + case MULLW, MULLWCC, MULHW, MULHWCC, MULLD, MULLDCC, MULHD, MULHDCC, MULLWO, MULLWOCC, MULHWU, MULHWUCC, MULLDO, MULLDOCC: + return true + case DIVD, DIVDCC, DIVDU, DIVDUCC, DIVDE, DIVDECC, DIVDEU, DIVDEUCC, DIVDO, DIVDOCC, DIVDUO, DIVDUOCC: + return true + case MODUD, MODSD, MODUW, MODSW: + return true + case FADD, FADDS, FSUB, FSUBS, FMUL, FMULS, FDIV, FDIVS, FMADD, FMADDS, FMSUB, FMSUBS, FNMADD, FNMADDS, FNMSUB, FNMSUBS, FMULSCC: + return true + case FADDCC, FADDSCC, FSUBCC, FMULCC, FDIVCC, FDIVSCC: + return true + case OR, ORCC, ORC, ORCCC, AND, ANDCC, ANDC, ANDCCC, XOR, XORCC, NAND, NANDCC, EQV, EQVCC, NOR, NORCC: + return true + case SLW, SLWCC, SLD, SLDCC, SRW, SRAW, SRWCC, SRAWCC, SRD, SRDCC, SRAD, SRADCC: + return true + } + return false +} + // revCondMap maps a conditional register bit to its inverse, if possible. var revCondMap = map[string]string{ "LT": "GE", "GT": "LE", "EQ": "NE", } +// Lookup table to map BI[0:1] and BO[3] to an extended mnemonic for CR ops. +// Bits 0-1 map to a bit with a CR field, and bit 2 selects the inverted (0) +// or regular (1) extended mnemonic. +var condName = []string{ + "GE", + "LE", + "NE", + "NSO", + "LT", + "GT", + "EQ", + "SO", +} + // plan9OpMap maps an Op to its Plan 9 mnemonics, if different than its GNU mnemonics. var plan9OpMap = map[Op]string{ - LWARX: "LWAR", - LDARX: "LDAR", - LHARX: "LHAR", - LBARX: "LBAR", - ADDI: "ADD", - SRADI: "SRAD", - SUBF: "SUB", - LI: "MOVD", - LBZ: "MOVBZ", STB: "MOVB", + LWARX: "LWAR", + LDARX: "LDAR", + LHARX: "LHAR", + LBARX: "LBAR", + LWAX: "MOVW", + LHAX: "MOVH", + LWAUX: "MOVWU", + LHAU: "MOVHU", + LHAUX: "MOVHU", + LDX: "MOVD", + LDUX: "MOVDU", + LWZX: "MOVWZ", + LWZUX: "MOVWZU", + LHZX: "MOVHZ", + LHZUX: "MOVHZU", + LBZX: "MOVBZ", + LBZUX: "MOVBZU", + LDBRX: "MOVDBR", + LWBRX: "MOVWBR", + LHBRX: "MOVHBR", + MCRF: "MOVFL", + XORI: "XOR", + ORI: "OR", + ANDICC: "ANDCC", + ANDC: "ANDN", + ANDCCC: "ANDNCC", + ADDEO: "ADDEV", + ADDEOCC: "ADDEVCC", + ADDO: "ADDV", + ADDOCC: "ADDVCC", + ADDMEO: "ADDMEV", + ADDMEOCC: "ADDMEVCC", + ADDCO: "ADDCV", + ADDCOCC: "ADDCVCC", + ADDZEO: "ADDZEV", + ADDZEOCC: "ADDZEVCC", + SUBFME: "SUBME", + SUBFMECC: "SUBMECC", + SUBFZE: "SUBZE", + SUBFZECC: "SUBZECC", + SUBFZEO: "SUBZEV", + SUBFZEOCC: "SUBZEVCC", + SUBF: "SUB", + SUBFC: "SUBC", + SUBFCC: "SUBCC", + SUBFCCC: "SUBCCC", + ORC: "ORN", + ORCCC: "ORNCC", + MULLWO: "MULLWV", + MULLWOCC: "MULLWVCC", + MULLDO: "MULLDV", + MULLDOCC: "MULLDVCC", + DIVDO: "DIVDV", + DIVDOCC: "DIVDVCC", + DIVDUO: "DIVDUV", + DIVDUOCC: "DIVDUVCC", + ADDI: "ADD", + MULLI: "MULLD", + SRADI: "SRAD", + STBCXCC: "STBCCC", + STWCXCC: "STWCCC", + STDCXCC: "STDCCC", + LI: "MOVD", + LBZ: "MOVBZ", STB: "MOVB", LBZU: "MOVBZU", STBU: "MOVBU", LHZ: "MOVHZ", LHA: "MOVH", STH: "MOVH", LHZU: "MOVHZU", STHU: "MOVHU", @@ -235,6 +361,14 @@ var plan9OpMap = map[Op]string{ LWZU: "MOVWZU", STWU: "MOVWU", LD: "MOVD", STD: "MOVD", LDU: "MOVDU", STDU: "MOVDU", + LFD: "FMOVD", STFD: "FMOVD", + LFS: "FMOVS", STFS: "FMOVS", + LFDX: "FMOVD", STFDX: "FMOVD", + LFDU: "FMOVDU", STFDU: "FMOVDU", + LFDUX: "FMOVDU", STFDUX: "FMOVDU", + LFSX: "FMOVS", STFSX: "FMOVS", + LFSU: "FMOVSU", STFSU: "FMOVSU", + LFSUX: "FMOVSU", STFSUX: "FMOVSU", CMPD: "CMP", CMPDI: "CMP", CMPW: "CMPW", CMPWI: "CMPW", CMPLD: "CMPU", CMPLDI: "CMPU", diff --git a/vendor/golang.org/x/arch/ppc64/ppc64asm/tables.go b/vendor/golang.org/x/arch/ppc64/ppc64asm/tables.go index f536926dbc..8705077b60 100644 --- a/vendor/golang.org/x/arch/ppc64/ppc64asm/tables.go +++ b/vendor/golang.org/x/arch/ppc64/ppc64asm/tables.go @@ -1,766 +1,672 @@ -// DO NOT EDIT -// generated by: ppc64map -fmt=decoder ../pp64.csv +// Code generated by ppc64map -fmt=decoder ../pp64.csv DO NOT EDIT. package ppc64asm const ( _ Op = iota - CNTLZW - CNTLZWCC - B - BA - BL - BLA - BC - BCA - BCL - BCLA - BCLR - BCLRL - BCCTR - BCCTRL + HASHCHK + HASHCHKP + HASHST + HASHSTP + BRD + BRH + BRW + CFUGED + CNTLZDM + CNTTZDM + DCFFIXQQ + DCTFIXQQ + LXVKQ + LXVP + LXVPX + LXVRBX + LXVRDX + LXVRHX + LXVRWX + MTVSRBM + MTVSRBMI + MTVSRDM + MTVSRHM + MTVSRQM + MTVSRWM + PADDI + PDEPD + PEXTD + PLBZ + PLD + PLFD + PLFS + PLHA + PLHZ + PLQ + PLWA + PLWZ + PLXSD + PLXSSP + PLXV + PLXVP + PMXVBF16GER2 + PMXVBF16GER2NN + PMXVBF16GER2NP + PMXVBF16GER2PN + PMXVBF16GER2PP + PMXVF16GER2 + PMXVF16GER2NN + PMXVF16GER2NP + PMXVF16GER2PN + PMXVF16GER2PP + PMXVF32GER + PMXVF32GERNN + PMXVF32GERNP + PMXVF32GERPN + PMXVF32GERPP + PMXVF64GER + PMXVF64GERNN + PMXVF64GERNP + PMXVF64GERPN + PMXVF64GERPP + PMXVI16GER2 + PMXVI16GER2PP + PMXVI16GER2S + PMXVI16GER2SPP + PMXVI4GER8 + PMXVI4GER8PP + PMXVI8GER4 + PMXVI8GER4PP + PMXVI8GER4SPP + PNOP + PSTB + PSTD + PSTFD + PSTFS + PSTH + PSTQ + PSTW + PSTXSD + PSTXSSP + PSTXV + PSTXVP + SETBC + SETBCR + SETNBC + SETNBCR + STXVP + STXVPX + STXVRBX + STXVRDX + STXVRHX + STXVRWX + VCFUGED + VCLRLB + VCLRRB + VCLZDM + VCMPEQUQ + VCMPEQUQCC + VCMPGTSQ + VCMPGTSQCC + VCMPGTUQ + VCMPGTUQCC + VCMPSQ + VCMPUQ + VCNTMBB + VCNTMBD + VCNTMBH + VCNTMBW + VCTZDM + VDIVESD + VDIVESQ + VDIVESW + VDIVEUD + VDIVEUQ + VDIVEUW + VDIVSD + VDIVSQ + VDIVSW + VDIVUD + VDIVUQ + VDIVUW + VEXPANDBM + VEXPANDDM + VEXPANDHM + VEXPANDQM + VEXPANDWM + VEXTDDVLX + VEXTDDVRX + VEXTDUBVLX + VEXTDUBVRX + VEXTDUHVLX + VEXTDUHVRX + VEXTDUWVLX + VEXTDUWVRX + VEXTRACTBM + VEXTRACTDM + VEXTRACTHM + VEXTRACTQM + VEXTRACTWM + VEXTSD2Q + VGNB + VINSBLX + VINSBRX + VINSBVLX + VINSBVRX + VINSD + VINSDLX + VINSDRX + VINSHLX + VINSHRX + VINSHVLX + VINSHVRX + VINSW + VINSWLX + VINSWRX + VINSWVLX + VINSWVRX + VMODSD + VMODSQ + VMODSW + VMODUD + VMODUQ + VMODUW + VMSUMCUD + VMULESD + VMULEUD + VMULHSD + VMULHSW + VMULHUD + VMULHUW + VMULLD + VMULOSD + VMULOUD + VPDEPD + VPEXTD + VRLQ + VRLQMI + VRLQNM + VSLDBI + VSLQ + VSRAQ + VSRDBI + VSRQ + VSTRIBL + VSTRIBLCC + VSTRIBR + VSTRIBRCC + VSTRIHL + VSTRIHLCC + VSTRIHR + VSTRIHRCC + XSCMPEQQP + XSCMPGEQP + XSCMPGTQP + XSCVQPSQZ + XSCVQPUQZ + XSCVSQQP + XSCVUQQP + XSMAXCQP + XSMINCQP + XVBF16GER2 + XVBF16GER2NN + XVBF16GER2NP + XVBF16GER2PN + XVBF16GER2PP + XVCVBF16SPN + XVCVSPBF16 + XVF16GER2 + XVF16GER2NN + XVF16GER2NP + XVF16GER2PN + XVF16GER2PP + XVF32GER + XVF32GERNN + XVF32GERNP + XVF32GERPN + XVF32GERPP + XVF64GER + XVF64GERNN + XVF64GERNP + XVF64GERPN + XVF64GERPP + XVI16GER2 + XVI16GER2PP + XVI16GER2S + XVI16GER2SPP + XVI4GER8 + XVI4GER8PP + XVI8GER4 + XVI8GER4PP + XVI8GER4SPP + XVTLSBB + XXBLENDVB + XXBLENDVD + XXBLENDVH + XXBLENDVW + XXEVAL + XXGENPCVBM + XXGENPCVDM + XXGENPCVHM + XXGENPCVWM + XXMFACC + XXMTACC + XXPERMX + XXSETACCZ + XXSPLTI32DX + XXSPLTIDP + XXSPLTIW + MSGCLRU + MSGSNDU + URFID + ADDEX + MFFSCDRN + MFFSCDRNI + MFFSCE + MFFSCRN + MFFSCRNI + MFFSL + SLBIAG + VMSUMUDM + ADDPCIS + BCDCFNCC + BCDCFSQCC + BCDCFZCC + BCDCPSGNCC + BCDCTNCC + BCDCTSQCC + BCDCTZCC + BCDSCC + BCDSETSGNCC + BCDSRCC + BCDTRUNCCC + BCDUSCC + BCDUTRUNCCC + CMPEQB + CMPRB + CNTTZD + CNTTZDCC + CNTTZW + CNTTZWCC + COPY + CPABORT + DARN + DTSTSFI + DTSTSFIQ + EXTSWSLI + EXTSWSLICC + LDAT + LWAT + LXSD + LXSIBZX + LXSIHZX + LXSSP + LXV + LXVB16X + LXVH8X + LXVL + LXVLL + LXVWSX + LXVX + MADDHD + MADDHDU + MADDLD + MCRXRX + MFVSRLD + MODSD + MODSW + MODUD + MODUW + MSGSYNC + MTVSRDD + MTVSRWS + PASTECC + SETB + SLBIEG + SLBSYNC + STDAT + STOP + STWAT + STXSD + STXSIBX + STXSIHX + STXSSP + STXV + STXVB16X + STXVH8X + STXVL + STXVLL + STXVX + VABSDUB + VABSDUH + VABSDUW + VBPERMD + VCLZLSBB + VCMPNEB + VCMPNEBCC + VCMPNEH + VCMPNEHCC + VCMPNEW + VCMPNEWCC + VCMPNEZB + VCMPNEZBCC + VCMPNEZH + VCMPNEZHCC + VCMPNEZW + VCMPNEZWCC + VCTZB + VCTZD + VCTZH + VCTZLSBB + VCTZW + VEXTRACTD + VEXTRACTUB + VEXTRACTUH + VEXTRACTUW + VEXTSB2D + VEXTSB2W + VEXTSH2D + VEXTSH2W + VEXTSW2D + VEXTUBLX + VEXTUBRX + VEXTUHLX + VEXTUHRX + VEXTUWLX + VEXTUWRX + VINSERTB + VINSERTD + VINSERTH + VINSERTW + VMUL10CUQ + VMUL10ECUQ + VMUL10EUQ + VMUL10UQ + VNEGD + VNEGW + VPERMR + VPRTYBD + VPRTYBQ + VPRTYBW + VRLDMI + VRLDNM + VRLWMI + VRLWNM + VSLV + VSRV + WAIT + XSABSQP + XSADDQP + XSADDQPO + XSCMPEQDP + XSCMPEXPDP + XSCMPEXPQP + XSCMPGEDP + XSCMPGTDP + XSCMPOQP + XSCMPUQP + XSCPSGNQP + XSCVDPHP + XSCVDPQP + XSCVHPDP + XSCVQPDP + XSCVQPDPO + XSCVQPSDZ + XSCVQPSWZ + XSCVQPUDZ + XSCVQPUWZ + XSCVSDQP + XSCVUDQP + XSDIVQP + XSDIVQPO + XSIEXPDP + XSIEXPQP + XSMADDQP + XSMADDQPO + XSMAXCDP + XSMAXJDP + XSMINCDP + XSMINJDP + XSMSUBQP + XSMSUBQPO + XSMULQP + XSMULQPO + XSNABSQP + XSNEGQP + XSNMADDQP + XSNMADDQPO + XSNMSUBQP + XSNMSUBQPO + XSRQPI + XSRQPIX + XSRQPXP + XSSQRTQP + XSSQRTQPO + XSSUBQP + XSSUBQPO + XSTSTDCDP + XSTSTDCQP + XSTSTDCSP + XSXEXPDP + XSXEXPQP + XSXSIGDP + XSXSIGQP + XVCVHPSP + XVCVSPHP + XVIEXPDP + XVIEXPSP + XVTSTDCDP + XVTSTDCSP + XVXEXPDP + XVXEXPSP + XVXSIGDP + XVXSIGSP + XXBRD + XXBRH + XXBRQ + XXBRW + XXEXTRACTUW + XXINSERTW + XXPERM + XXPERMR + XXSPLTIB + BCDADDCC + BCDSUBCC BCTAR BCTARL - CRAND - CROR - CRNAND - CRXOR - CRNOR - CRANDC - MCRF - CREQV - CRORC - SC CLRBHRB + FMRGEW + FMRGOW + ICBT + LQARX + LXSIWAX + LXSIWZX + LXSSPX MFBHRBE - LBZ - LBZU - LBZX - LBZUX - LHZ - LHZU - LHZX - LHZUX - LHA - LHAU - LHAX - LHAUX - LWZ - LWZU - LWZX - LWZUX - LWA - LWAX - LWAUX - LD - LDU - LDX - LDUX - STB - STBU - STBX - STBUX - STH - STHU - STHX - STHUX - STW - STWU - STWX - STWUX - STD - STDU - STDX - STDUX - LQ - STQ - LHBRX - LWBRX - STHBRX - STWBRX + MFVSRD + MFVSRWZ + MSGCLR + MSGCLRP + MSGSND + MSGSNDP + MTVSRD + MTVSRWA + MTVSRWZ + RFEBB + STQCXCC + STXSIWX + STXSSPX + VADDCUQ + VADDECUQ + VADDEUQM + VADDUDM + VADDUQM + VBPERMQ + VCIPHER + VCIPHERLAST + VCLZB + VCLZD + VCLZH + VCLZW + VCMPEQUD + VCMPEQUDCC + VCMPGTSD + VCMPGTSDCC + VCMPGTUD + VCMPGTUDCC + VEQV + VGBBD + VMAXSD + VMAXUD + VMINSD + VMINUD + VMRGEW + VMRGOW + VMULESW + VMULEUW + VMULOSW + VMULOUW + VMULUWM + VNAND + VNCIPHER + VNCIPHERLAST + VORC + VPERMXOR + VPKSDSS + VPKSDUS + VPKUDUM + VPKUDUS + VPMSUMB + VPMSUMD + VPMSUMH + VPMSUMW + VPOPCNTB + VPOPCNTD + VPOPCNTH + VPOPCNTW + VRLD + VSBOX + VSHASIGMAD + VSHASIGMAW + VSLD + VSRAD + VSRD + VSUBCUQ + VSUBECUQ + VSUBEUQM + VSUBUDM + VSUBUQM + VUPKHSW + VUPKLSW + XSADDSP + XSCVDPSPN + XSCVSPDPN + XSCVSXDSP + XSCVUXDSP + XSDIVSP + XSMADDASP + XSMADDMSP + XSMSUBASP + XSMSUBMSP + XSMULSP + XSNMADDASP + XSNMADDMSP + XSNMSUBASP + XSNMSUBMSP + XSRESP + XSRSP + XSRSQRTESP + XSSQRTSP + XSSUBSP + XXLEQV + XXLNAND + XXLORC + ADDG6S + BPERMD + CBCDTD + CDTBCD + DCFFIX + DCFFIXCC + DIVDE + DIVDECC + DIVDEO + DIVDEOCC + DIVDEU + DIVDEUCC + DIVDEUO + DIVDEUOCC + DIVWE + DIVWECC + DIVWEO + DIVWEOCC + DIVWEU + DIVWEUCC + DIVWEUO + DIVWEUOCC + FCFIDS + FCFIDSCC + FCFIDU + FCFIDUCC + FCFIDUS + FCFIDUSCC + FCTIDU + FCTIDUCC + FCTIDUZ + FCTIDUZCC + FCTIWU + FCTIWUCC + FCTIWUZ + FCTIWUZCC + FTDIV + FTSQRT + LBARX LDBRX + LFIWZX + LHARX + LXSDX + LXVD2X + LXVDSX + LXVW4X + POPCNTD + POPCNTW + STBCXCC STDBRX - LMW - STMW - LSWI - LSWX - STSWI - STSWX - LI - ADDI - LIS - ADDIS - ADD - ADDCC - ADDO - ADDOCC - ADDIC - SUBF - SUBFCC - SUBFO - SUBFOCC - ADDICCC - SUBFIC - ADDC - ADDCCC - ADDCO - ADDCOCC - SUBFC - SUBFCCC - SUBFCO - SUBFCOCC - ADDE - ADDECC - ADDEO - ADDEOCC - ADDME - ADDMECC - ADDMEO - ADDMEOCC - SUBFE - SUBFECC - SUBFEO - SUBFEOCC - SUBFME - SUBFMECC - SUBFMEO - SUBFMEOCC - ADDZE - ADDZECC - ADDZEO - ADDZEOCC - SUBFZE - SUBFZECC - SUBFZEO - SUBFZEOCC - NEG - NEGCC - NEGO - NEGOCC - MULLI - MULLW - MULLWCC - MULLWO - MULLWOCC - MULHW - MULHWCC - MULHWU - MULHWUCC - DIVW - DIVWCC - DIVWO - DIVWOCC - DIVWU - DIVWUCC - DIVWUO - DIVWUOCC - DIVWE - DIVWECC - DIVWEO - DIVWEOCC - DIVWEU - DIVWEUCC - DIVWEUO - DIVWEUOCC - MULLD - MULLDCC - MULLDO - MULLDOCC - MULHDU - MULHDUCC - MULHD - MULHDCC - DIVD - DIVDCC - DIVDO - DIVDOCC - DIVDU - DIVDUCC - DIVDUO - DIVDUOCC - DIVDE - DIVDECC - DIVDEO - DIVDEOCC - DIVDEU - DIVDEUCC - DIVDEUO - DIVDEUOCC - CMPWI - CMPDI - CMPW - CMPD - CMPLWI - CMPLDI - CMPLW - CMPLD - TWI - TW - TDI - ISEL - TD - ANDICC - ANDISCC - ORI - ORIS - XORI - XORIS - AND - ANDCC - XOR - XORCC - NAND - NANDCC - OR - ORCC - NOR - NORCC - ANDC - ANDCCC - EXTSB - EXTSBCC - EQV - EQVCC - ORC - ORCCC - EXTSH - EXTSHCC - CMPB - POPCNTB - POPCNTW - PRTYD - PRTYW - EXTSW - EXTSWCC - CNTLZD - CNTLZDCC - POPCNTD - BPERMD - RLWINM - RLWINMCC - RLWNM - RLWNMCC - RLWIMI - RLWIMICC - RLDICL - RLDICLCC - RLDICR - RLDICRCC - RLDIC - RLDICCC - RLDCL - RLDCLCC - RLDCR - RLDCRCC - RLDIMI - RLDIMICC - SLW - SLWCC - SRW - SRWCC - SRAWI - SRAWICC - SRAW - SRAWCC - SLD - SLDCC - SRD - SRDCC - SRADI - SRADICC - SRAD - SRADCC - CDTBCD - CBCDTD - ADDG6S - MTSPR - MFSPR - MTCRF - MFCR - MTSLE - MFVSRD - MFVSRWZ - MTVSRD - MTVSRWA - MTVSRWZ - MTOCRF - MFOCRF - MCRXR - MTDCRUX - MFDCRUX - LFS - LFSU - LFSX - LFSUX - LFD - LFDU - LFDX - LFDUX - LFIWAX - LFIWZX - STFS - STFSU - STFSX - STFSUX - STFD - STFDU - STFDX - STFDUX - STFIWX - LFDP - LFDPX - STFDP - STFDPX - FMR - FMRCC - FABS - FABSCC - FNABS - FNABSCC - FNEG - FNEGCC - FCPSGN - FCPSGNCC - FMRGEW - FMRGOW - FADD - FADDCC - FADDS - FADDSCC - FSUB - FSUBCC - FSUBS - FSUBSCC - FMUL - FMULCC - FMULS - FMULSCC - FDIV - FDIVCC - FDIVS - FDIVSCC - FSQRT - FSQRTCC - FSQRTS - FSQRTSCC - FRE - FRECC - FRES - FRESCC - FRSQRTE - FRSQRTECC - FRSQRTES - FRSQRTESCC - FTDIV - FTSQRT - FMADD - FMADDCC - FMADDS - FMADDSCC - FMSUB - FMSUBCC - FMSUBS - FMSUBSCC - FNMADD - FNMADDCC - FNMADDS - FNMADDSCC - FNMSUB - FNMSUBCC - FNMSUBS - FNMSUBSCC - FRSP - FRSPCC - FCTID - FCTIDCC - FCTIDZ - FCTIDZCC - FCTIDU - FCTIDUCC - FCTIDUZ - FCTIDUZCC - FCTIW - FCTIWCC - FCTIWZ - FCTIWZCC - FCTIWU - FCTIWUCC - FCTIWUZ - FCTIWUZCC - FCFID - FCFIDCC - FCFIDU - FCFIDUCC - FCFIDS - FCFIDSCC - FCFIDUS - FCFIDUSCC - FRIN - FRINCC - FRIZ - FRIZCC - FRIP - FRIPCC - FRIM - FRIMCC - FCMPU - FCMPO - FSEL - FSELCC - MFFS - MFFSCC - MCRFS - MTFSFI - MTFSFICC - MTFSF - MTFSFCC - MTFSB0 - MTFSB0CC - MTFSB1 - MTFSB1CC - LVEBX - LVEHX - LVEWX - LVX - LVXL - STVEBX - STVEHX - STVEWX - STVX - STVXL - LVSL - LVSR - VPKPX - VPKSDSS - VPKSDUS - VPKSHSS - VPKSHUS - VPKSWSS - VPKSWUS - VPKUDUM - VPKUDUS - VPKUHUM - VPKUHUS - VPKUWUM - VPKUWUS - VUPKHPX - VUPKLPX - VUPKHSB - VUPKHSH - VUPKHSW - VUPKLSB - VUPKLSH - VUPKLSW - VMRGHB - VMRGHH - VMRGLB - VMRGLH - VMRGHW - VMRGLW - VMRGEW - VMRGOW - VSPLTB - VSPLTH - VSPLTW - VSPLTISB - VSPLTISH - VSPLTISW - VPERM - VSEL - VSL - VSLDOI - VSLO - VSR - VSRO - VADDCUW - VADDSBS - VADDSHS - VADDSWS - VADDUBM - VADDUDM - VADDUHM - VADDUWM - VADDUBS - VADDUHS - VADDUWS - VADDUQM - VADDEUQM - VADDCUQ - VADDECUQ - VSUBCUW - VSUBSBS - VSUBSHS - VSUBSWS - VSUBUBM - VSUBUDM - VSUBUHM - VSUBUWM - VSUBUBS - VSUBUHS - VSUBUWS - VSUBUQM - VSUBEUQM - VSUBCUQ - VSUBECUQ - VMULESB - VMULEUB - VMULOSB - VMULOUB - VMULESH - VMULEUH - VMULOSH - VMULOUH - VMULESW - VMULEUW - VMULOSW - VMULOUW - VMULUWM - VMHADDSHS - VMHRADDSHS - VMLADDUHM - VMSUMUBM - VMSUMMBM - VMSUMSHM - VMSUMSHS - VMSUMUHM - VMSUMUHS - VSUMSWS - VSUM2SWS - VSUM4SBS - VSUM4SHS - VSUM4UBS - VAVGSB - VAVGSH - VAVGSW - VAVGUB - VAVGUW - VAVGUH - VMAXSB - VMAXSD - VMAXUB - VMAXUD - VMAXSH - VMAXSW - VMAXUH - VMAXUW - VMINSB - VMINSD - VMINUB - VMINUD - VMINSH - VMINSW - VMINUH - VMINUW - VCMPEQUB - VCMPEQUBCC - VCMPEQUH - VCMPEQUHCC - VCMPEQUW - VCMPEQUWCC - VCMPEQUD - VCMPEQUDCC - VCMPGTSB - VCMPGTSBCC - VCMPGTSD - VCMPGTSDCC - VCMPGTSH - VCMPGTSHCC - VCMPGTSW - VCMPGTSWCC - VCMPGTUB - VCMPGTUBCC - VCMPGTUD - VCMPGTUDCC - VCMPGTUH - VCMPGTUHCC - VCMPGTUW - VCMPGTUWCC - VAND - VANDC - VEQV - VNAND - VORC - VNOR - VOR - VXOR - VRLB - VRLH - VRLW - VRLD - VSLB - VSLH - VSLW - VSLD - VSRB - VSRH - VSRW - VSRD - VSRAB - VSRAH - VSRAW - VSRAD - VADDFP - VSUBFP - VMADDFP - VNMSUBFP - VMAXFP - VMINFP - VCTSXS - VCTUXS - VCFSX - VCFUX - VRFIM - VRFIN - VRFIP - VRFIZ - VCMPBFP - VCMPBFPCC - VCMPEQFP - VCMPEQFPCC - VCMPGEFP - VCMPGEFPCC - VCMPGTFP - VCMPGTFPCC - VEXPTEFP - VLOGEFP - VREFP - VRSQRTEFP - VCIPHER - VCIPHERLAST - VNCIPHER - VNCIPHERLAST - VSBOX - VSHASIGMAD - VSHASIGMAW - VPMSUMB - VPMSUMD - VPMSUMH - VPMSUMW - VPERMXOR - VGBBD - VCLZB - VCLZH - VCLZW - VCLZD - VPOPCNTB - VPOPCNTD - VPOPCNTH - VPOPCNTW - VBPERMQ - BCDADDCC - BCDSUBCC - MTVSCR - MFVSCR - DADD - DADDCC - DSUB - DSUBCC - DMUL - DMULCC - DDIV - DDIVCC - DCMPU - DCMPO - DTSTDC - DTSTDG - DTSTEX - DTSTSF - DQUAI - DQUAICC - DQUA - DQUACC - DRRND - DRRNDCC - DRINTX - DRINTXCC - DRINTN - DRINTNCC - DCTDP - DCTDPCC - DCTQPQ - DCTQPQCC - DRSP - DRSPCC - DRDPQ - DRDPQCC - DCFFIX - DCFFIXCC - DCFFIXQ - DCFFIXQCC - DCTFIX - DCTFIXCC - DDEDPD - DDEDPDCC - DENBCD - DENBCDCC - DXEX - DXEXCC - DIEX - DIEXCC - DSCLI - DSCLICC - DSCRI - DSCRICC - LXSDX - LXSIWAX - LXSIWZX - LXSSPX - LXVD2X - LXVDSX - LXVW4X + STHCXCC STXSDX - STXSIWX - STXSSPX STXVD2X STXVW4X XSABSDP XSADDDP - XSADDSP XSCMPODP XSCMPUDP XSCPSGNDP XSCVDPSP - XSCVDPSPN XSCVDPSXDS XSCVDPSXWS XSCVDPUXDS XSCVDPUXWS XSCVSPDP - XSCVSPDPN XSCVSXDDP - XSCVSXDSP XSCVUXDDP - XSCVUXDSP XSDIVDP - XSDIVSP XSMADDADP - XSMADDASP + XSMADDMDP XSMAXDP XSMINDP XSMSUBADP - XSMSUBASP + XSMSUBMDP XSMULDP - XSMULSP XSNABSDP XSNEGDP XSNMADDADP - XSNMADDASP + XSNMADDMDP XSNMSUBADP - XSNMSUBASP + XSNMSUBMDP XSRDPI XSRDPIC XSRDPIM XSRDPIP XSRDPIZ XSREDP - XSRESP - XSRSP XSRSQRTEDP - XSRSQRTESP XSSQRTDP - XSSQRTSP XSSUBDP - XSSUBSP XSTDIVDP XSTSQRTDP XVABSDP @@ -803,12 +709,16 @@ const ( XVDIVSP XVMADDADP XVMADDASP + XVMADDMDP + XVMADDMSP XVMAXDP XVMAXSP XVMINDP XVMINSP XVMSUBADP XVMSUBASP + XVMSUBMDP + XVMSUBMSP XVMULDP XVMULSP XVNABSDP @@ -817,8 +727,12 @@ const ( XVNEGSP XVNMADDADP XVNMADDASP + XVNMADDMDP + XVNMADDMSP XVNMSUBADP XVNMSUBASP + XVNMSUBMDP + XVNMSUBMSP XVRDPI XVRDPIC XVRDPIM @@ -843,9 +757,6 @@ const ( XVTSQRTSP XXLAND XXLANDC - XXLEQV - XXLNAND - XXLORC XXLNOR XXLOR XXLXOR @@ -855,4640 +766,5023 @@ const ( XXSEL XXSLDWI XXSPLTW - BRINC - EVABS - EVADDIW - EVADDSMIAAW - EVADDSSIAAW - EVADDUMIAAW - EVADDUSIAAW - EVADDW - EVAND - EVCMPEQ - EVANDC - EVCMPGTS - EVCMPGTU - EVCMPLTU - EVCMPLTS - EVCNTLSW - EVCNTLZW - EVDIVWS - EVDIVWU - EVEQV - EVEXTSB - EVEXTSH - EVLDD - EVLDH - EVLDDX - EVLDHX - EVLDW - EVLHHESPLAT - EVLDWX - EVLHHESPLATX - EVLHHOSSPLAT - EVLHHOUSPLAT - EVLHHOSSPLATX - EVLHHOUSPLATX - EVLWHE - EVLWHOS - EVLWHEX - EVLWHOSX - EVLWHOU - EVLWHSPLAT - EVLWHOUX - EVLWHSPLATX - EVLWWSPLAT - EVMERGEHI - EVLWWSPLATX - EVMERGELO - EVMERGEHILO - EVMHEGSMFAA - EVMERGELOHI - EVMHEGSMFAN - EVMHEGSMIAA - EVMHEGUMIAA - EVMHEGSMIAN - EVMHEGUMIAN - EVMHESMF - EVMHESMFAAW - EVMHESMFA - EVMHESMFANW - EVMHESMI - EVMHESMIAAW - EVMHESMIA - EVMHESMIANW - EVMHESSF - EVMHESSFA - EVMHESSFAAW - EVMHESSFANW - EVMHESSIAAW - EVMHESSIANW - EVMHEUMI - EVMHEUMIAAW - EVMHEUMIA - EVMHEUMIANW - EVMHEUSIAAW - EVMHEUSIANW - EVMHOGSMFAA - EVMHOGSMIAA - EVMHOGSMFAN - EVMHOGSMIAN - EVMHOGUMIAA - EVMHOSMF - EVMHOGUMIAN - EVMHOSMFA - EVMHOSMFAAW - EVMHOSMI - EVMHOSMFANW - EVMHOSMIA - EVMHOSMIAAW - EVMHOSMIANW - EVMHOSSF - EVMHOSSFA - EVMHOSSFAAW - EVMHOSSFANW - EVMHOSSIAAW - EVMHOUMI - EVMHOSSIANW - EVMHOUMIA - EVMHOUMIAAW - EVMHOUSIAAW - EVMHOUMIANW - EVMHOUSIANW - EVMRA - EVMWHSMF - EVMWHSMI - EVMWHSMFA - EVMWHSMIA - EVMWHSSF - EVMWHUMI - EVMWHSSFA - EVMWHUMIA - EVMWLSMIAAW - EVMWLSSIAAW - EVMWLSMIANW - EVMWLSSIANW - EVMWLUMI - EVMWLUMIAAW - EVMWLUMIA - EVMWLUMIANW - EVMWLUSIAAW - EVMWSMF - EVMWLUSIANW - EVMWSMFA - EVMWSMFAA - EVMWSMI - EVMWSMIAA - EVMWSMFAN - EVMWSMIA - EVMWSMIAN - EVMWSSF - EVMWSSFA - EVMWSSFAA - EVMWUMI - EVMWSSFAN - EVMWUMIA - EVMWUMIAA - EVNAND - EVMWUMIAN - EVNEG - EVNOR - EVORC - EVOR - EVRLW - EVRLWI - EVSEL - EVRNDW - EVSLW - EVSPLATFI - EVSRWIS - EVSLWI - EVSPLATI - EVSRWIU - EVSRWS - EVSTDD - EVSRWU - EVSTDDX - EVSTDH - EVSTDW - EVSTDHX - EVSTDWX - EVSTWHE - EVSTWHO - EVSTWWE - EVSTWHEX - EVSTWHOX - EVSTWWEX - EVSTWWO - EVSUBFSMIAAW - EVSTWWOX - EVSUBFSSIAAW - EVSUBFUMIAAW - EVSUBFUSIAAW - EVSUBFW - EVSUBIFW - EVXOR - EVFSABS - EVFSNABS - EVFSNEG - EVFSADD - EVFSMUL - EVFSSUB - EVFSDIV - EVFSCMPGT - EVFSCMPLT - EVFSCMPEQ - EVFSTSTGT - EVFSTSTLT - EVFSTSTEQ - EVFSCFSI - EVFSCFSF - EVFSCFUI - EVFSCFUF - EVFSCTSI - EVFSCTUI - EVFSCTSIZ - EVFSCTUIZ - EVFSCTSF - EVFSCTUF - EFSABS - EFSNEG - EFSNABS - EFSADD - EFSMUL - EFSSUB - EFSDIV - EFSCMPGT - EFSCMPLT - EFSCMPEQ - EFSTSTGT - EFSTSTLT - EFSTSTEQ - EFSCFSI - EFSCFSF - EFSCTSI - EFSCFUI - EFSCFUF - EFSCTUI - EFSCTSIZ - EFSCTSF - EFSCTUIZ - EFSCTUF - EFDABS - EFDNEG - EFDNABS - EFDADD - EFDMUL - EFDSUB - EFDDIV - EFDCMPGT - EFDCMPEQ - EFDCMPLT - EFDTSTGT - EFDTSTLT - EFDCFSI - EFDTSTEQ - EFDCFUI - EFDCFSID - EFDCFSF - EFDCFUF - EFDCFUID - EFDCTSI - EFDCTUI - EFDCTSIDZ - EFDCTUIDZ - EFDCTSIZ - EFDCTSF - EFDCTUF - EFDCTUIZ - EFDCFS - EFSCFD - DLMZB - DLMZBCC - MACCHW - MACCHWCC - MACCHWO - MACCHWOCC - MACCHWS - MACCHWSCC - MACCHWSO - MACCHWSOCC - MACCHWU - MACCHWUCC - MACCHWUO - MACCHWUOCC - MACCHWSU - MACCHWSUCC - MACCHWSUO - MACCHWSUOCC - MACHHW - MACHHWCC - MACHHWO - MACHHWOCC - MACHHWS - MACHHWSCC - MACHHWSO - MACHHWSOCC - MACHHWU - MACHHWUCC - MACHHWUO - MACHHWUOCC - MACHHWSU - MACHHWSUCC - MACHHWSUO - MACHHWSUOCC - MACLHW - MACLHWCC - MACLHWO - MACLHWOCC - MACLHWS - MACLHWSCC - MACLHWSO - MACLHWSOCC - MACLHWU - MACLHWUCC - MACLHWUO - MACLHWUOCC - MULCHW - MULCHWCC - MACLHWSU - MACLHWSUCC - MACLHWSUO - MACLHWSUOCC - MULCHWU - MULCHWUCC - MULHHW - MULHHWCC - MULLHW - MULLHWCC - MULHHWU - MULHHWUCC - MULLHWU - MULLHWUCC - NMACCHW - NMACCHWCC - NMACCHWO - NMACCHWOCC - NMACCHWS - NMACCHWSCC - NMACCHWSO - NMACCHWSOCC - NMACHHW - NMACHHWCC - NMACHHWO - NMACHHWOCC - NMACHHWS - NMACHHWSCC - NMACHHWSO - NMACHHWSOCC - NMACLHW - NMACLHWCC - NMACLHWO - NMACLHWOCC - NMACLHWS - NMACLHWSCC - NMACLHWSO - NMACLHWSOCC - ICBI - ICBT - DCBA + CMPB + DADD + DADDCC + DADDQ + DADDQCC + DCFFIXQ + DCFFIXQCC + DCMPO + DCMPOQ + DCMPU + DCMPUQ + DCTDP + DCTDPCC + DCTFIX + DCTFIXCC + DCTFIXQ + DCTFIXQCC + DCTQPQ + DCTQPQCC + DDEDPD + DDEDPDCC + DDEDPDQ + DDEDPDQCC + DDIV + DDIVCC + DDIVQ + DDIVQCC + DENBCD + DENBCDCC + DENBCDQ + DENBCDQCC + DIEX + DIEXCC + DIEXQCC + DIEXQ + DMUL + DMULCC + DMULQ + DMULQCC + DQUA + DQUACC + DQUAI + DQUAICC + DQUAIQ + DQUAIQCC + DQUAQ + DQUAQCC + DRDPQ + DRDPQCC + DRINTN + DRINTNCC + DRINTNQ + DRINTNQCC + DRINTX + DRINTXCC + DRINTXQ + DRINTXQCC + DRRND + DRRNDCC + DRRNDQ + DRRNDQCC + DRSP + DRSPCC + DSCLI + DSCLICC + DSCLIQ + DSCLIQCC + DSCRI + DSCRICC + DSCRIQ + DSCRIQCC + DSUB + DSUBCC + DSUBQ + DSUBQCC + DTSTDC + DTSTDCQ + DTSTDG + DTSTDGQ + DTSTEX + DTSTEXQ + DTSTSF + DTSTSFQ + DXEX + DXEXCC + DXEXQ + DXEXQCC + FCPSGN + FCPSGNCC + LBZCIX + LDCIX + LFDP + LFDPX + LFIWAX + LHZCIX + LWZCIX + PRTYD + PRTYW + SLBFEECC + STBCIX + STDCIX + STFDP + STFDPX + STHCIX + STWCIX + ISEL + LVEBX + LVEHX + LVEWX + LVSL + LVSR + LVX + LVXL + MFVSCR + MTVSCR + STVEBX + STVEHX + STVEWX + STVX + STVXL + TLBIEL + VADDCUW + VADDFP + VADDSBS + VADDSHS + VADDSWS + VADDUBM + VADDUBS + VADDUHM + VADDUHS + VADDUWM + VADDUWS + VAND + VANDC + VAVGSB + VAVGSH + VAVGSW + VAVGUB + VAVGUH + VAVGUW + VCFSX + VCFUX + VCMPBFP + VCMPBFPCC + VCMPEQFP + VCMPEQFPCC + VCMPEQUB + VCMPEQUBCC + VCMPEQUH + VCMPEQUHCC + VCMPEQUW + VCMPEQUWCC + VCMPGEFP + VCMPGEFPCC + VCMPGTFP + VCMPGTFPCC + VCMPGTSB + VCMPGTSBCC + VCMPGTSH + VCMPGTSHCC + VCMPGTSW + VCMPGTSWCC + VCMPGTUB + VCMPGTUBCC + VCMPGTUH + VCMPGTUHCC + VCMPGTUW + VCMPGTUWCC + VCTSXS + VCTUXS + VEXPTEFP + VLOGEFP + VMADDFP + VMAXFP + VMAXSB + VMAXSH + VMAXSW + VMAXUB + VMAXUH + VMAXUW + VMHADDSHS + VMHRADDSHS + VMINFP + VMINSB + VMINSH + VMINSW + VMINUB + VMINUH + VMINUW + VMLADDUHM + VMRGHB + VMRGHH + VMRGHW + VMRGLB + VMRGLH + VMRGLW + VMSUMMBM + VMSUMSHM + VMSUMSHS + VMSUMUBM + VMSUMUHM + VMSUMUHS + VMULESB + VMULESH + VMULEUB + VMULEUH + VMULOSB + VMULOSH + VMULOUB + VMULOUH + VNMSUBFP + VNOR + VOR + VPERM + VPKPX + VPKSHSS + VPKSHUS + VPKSWSS + VPKSWUS + VPKUHUM + VPKUHUS + VPKUWUM + VPKUWUS + VREFP + VRFIM + VRFIN + VRFIP + VRFIZ + VRLB + VRLH + VRLW + VRSQRTEFP + VSEL + VSL + VSLB + VSLDOI + VSLH + VSLO + VSLW + VSPLTB + VSPLTH + VSPLTISB + VSPLTISH + VSPLTISW + VSPLTW + VSR + VSRAB + VSRAH + VSRAW + VSRB + VSRH + VSRO + VSRW + VSUBCUW + VSUBFP + VSUBSBS + VSUBSHS + VSUBSWS + VSUBUBM + VSUBUBS + VSUBUHM + VSUBUHS + VSUBUWM + VSUBUWS + VSUM2SWS + VSUM4SBS + VSUM4SHS + VSUM4UBS + VSUMSWS + VUPKHPX + VUPKHSB + VUPKHSH + VUPKLPX + VUPKLSB + VUPKLSH + VXOR + FRE + FRECC + FRIM + FRIMCC + FRIN + FRINCC + FRIP + FRIPCC + FRIZ + FRIZCC + FRSQRTES + FRSQRTESCC + HRFID + POPCNTB + MFOCRF + MTOCRF + SLBMFEE + SLBMFEV + SLBMTE + RFSCV + SCV + LQ + STQ + CNTLZD + CNTLZDCC + DCBF + DCBST DCBT DCBTST + DIVD + DIVDCC + DIVDO + DIVDOCC + DIVDU + DIVDUCC + DIVDUO + DIVDUOCC + DIVW + DIVWCC + DIVWO + DIVWOCC + DIVWU + DIVWUCC + DIVWUO + DIVWUOCC + EIEIO + EXTSB + EXTSBCC + EXTSW + EXTSWCC + FADDS + FADDSCC + FCFID + FCFIDCC + FCTID + FCTIDCC + FCTIDZ + FCTIDZCC + FDIVS + FDIVSCC + FMADDS + FMADDSCC + FMSUBS + FMSUBSCC + FMULS + FMULSCC + FNMADDS + FNMADDSCC + FNMSUBS + FNMSUBSCC + FRES + FRESCC + FRSQRTE + FRSQRTECC + FSEL + FSELCC + FSQRTS + FSQRTSCC + FSUBS + FSUBSCC + ICBI + LD + LDARX + LDU + LDUX + LDX + LWA + LWARX + LWAUX + LWAX + MFTB + MTMSRD + MULHD + MULHDCC + MULHDU + MULHDUCC + MULHW + MULHWCC + MULHWU + MULHWUCC + MULLD + MULLDCC + MULLDO + MULLDOCC + RFID + RLDCL + RLDCLCC + RLDCR + RLDCRCC + RLDIC + RLDICCC + RLDICL + RLDICLCC + RLDICR + RLDICRCC + RLDIMI + RLDIMICC + SC + SLBIA + SLBIE + SLD + SLDCC + SRAD + SRADCC + SRADI + SRADICC + SRD + SRDCC + STD + STDCXCC + STDU + STDUX + STDX + STFIWX + STWCXCC + SUBF + SUBFCC + SUBFO + SUBFOCC + TD + TDI + TLBSYNC + FCTIW + FCTIWCC + FCTIWZ + FCTIWZCC + FSQRT + FSQRTCC + ADD + ADDCC + ADDO + ADDOCC + ADDC + ADDCCC + ADDCO + ADDCOCC + ADDE + ADDECC + ADDEO + ADDEOCC + LI + ADDI + ADDIC + ADDICCC + LIS + ADDIS + ADDME + ADDMECC + ADDMEO + ADDMEOCC + ADDZE + ADDZECC + ADDZEO + ADDZEOCC + AND + ANDCC + ANDC + ANDCCC + ANDICC + ANDISCC + B + BA + BL + BLA + BC + BCA + BCL + BCLA + BCCTR + BCCTRL + BCLR + BCLRL + CMPW + CMPD + CMP + CMPWI + CMPDI + CMPI + CMPLW + CMPLD + CMPL + CMPLWI + CMPLDI + CMPLI + CNTLZW + CNTLZWCC + CRAND + CRANDC + CREQV + CRNAND + CRNOR + CROR + CRORC + CRXOR DCBZ - DCBST - DCBF + EQV + EQVCC + EXTSH + EXTSHCC + FABS + FABSCC + FADD + FADDCC + FCMPO + FCMPU + FDIV + FDIVCC + FMADD + FMADDCC + FMR + FMRCC + FMSUB + FMSUBCC + FMUL + FMULCC + FNABS + FNABSCC + FNEG + FNEGCC + FNMADD + FNMADDCC + FNMSUB + FNMSUBCC + FRSP + FRSPCC + FSUB + FSUBCC ISYNC - LBARX - LHARX - LWARX - STBCXCC - STHCXCC - STWCXCC - LDARX - STDCXCC - LQARX - STQCXCC - SYNC - EIEIO - MBAR - WAIT - TBEGINCC - TENDCC - TABORTCC - TABORTWCCC - TABORTWCICC - TABORTDCCC - TABORTDCICC - TSRCC - TCHECK - MFTB - RFEBB - LBDX - LHDX - LWDX - LDDX - LFDDX - STBDX - STHDX - STWDX - STDDX - STFDDX - DSN - ECIWX - ECOWX - RFID - HRFID - DOZE - NAP - SLEEP - RVWINKLE - LBZCIX - LWZCIX - LHZCIX - LDCIX - STBCIX - STWCIX - STHCIX - STDCIX - TRECLAIMCC - TRECHKPTCC - MTMSR - MTMSRD + LBZ + LBZU + LBZUX + LBZX + LFD + LFDU + LFDUX + LFDX + LFS + LFSU + LFSUX + LFSX + LHA + LHAU + LHAUX + LHAX + LHBRX + LHZ + LHZU + LHZUX + LHZX + LMW + LSWI + LSWX + LWBRX + LWZ + LWZU + LWZUX + LWZX + MCRF + MCRFS + MFCR + MFFS + MFFSCC MFMSR - SLBIE - SLBIA - SLBMTE - SLBMFEV - SLBMFEE - SLBFEECC - MTSR - MTSRIN - MFSR - MFSRIN + MFSPR + MTCRF + MTFSB0 + MTFSB0CC + MTFSB1 + MTFSB1CC + MTFSF + MTFSFCC + MTFSFI + MTFSFICC + MTMSR + MTSPR + MULLI + MULLW + MULLWCC + MULLWO + MULLWOCC + NAND + NANDCC + NEG + NEGCC + NEGO + NEGOCC + NOR + NORCC + OR + ORCC + ORC + ORCCC + NOP + ORI + ORIS + RLWIMI + RLWIMICC + RLWINM + RLWINMCC + RLWNM + RLWNMCC + SLW + SLWCC + SRAW + SRAWCC + SRAWI + SRAWICC + SRW + SRWCC + STB + STBU + STBUX + STBX + STFD + STFDU + STFDUX + STFDX + STFS + STFSU + STFSUX + STFSX + STH + STHBRX + STHU + STHUX + STHX + STMW + STSWI + STSWX + STW + STWBRX + STWU + STWUX + STWX + SUBFC + SUBFCCC + SUBFCO + SUBFCOCC + SUBFE + SUBFECC + SUBFEO + SUBFEOCC + SUBFIC + SUBFME + SUBFMECC + SUBFMEO + SUBFMEOCC + SUBFZE + SUBFZECC + SUBFZEO + SUBFZEOCC + SYNC TLBIE - TLBIEL - TLBIA - TLBSYNC - MSGSND - MSGCLR - MSGSNDP - MSGCLRP - MTTMR - RFI - RFCI - RFDI - RFMCI - RFGI - EHPRIV - MTDCR - MTDCRX - MFDCR - MFDCRX - WRTEE - WRTEEI - LBEPX - LHEPX - LWEPX - LDEPX - STBEPX - STHEPX - STWEPX - STDEPX - DCBSTEP - DCBTEP - DCBFEP - DCBTSTEP - ICBIEP - DCBZEP - LFDEPX - STFDEPX - EVLDDEPX - EVSTDDEPX - LVEPX - LVEPXL - STVEPX - STVEPXL - DCBI - DCBLQCC - ICBLQCC - DCBTLS - DCBTSTLS - ICBTLS - ICBLC - DCBLC - TLBIVAX - TLBILX - TLBSX - TLBSRXCC - TLBRE - TLBWE - DNH - DCI - ICI - DCREAD - ICREAD - MFPMR - MTPMR - ADDEX - DARN - MADDHD - MADDHDU - MADDLD - CMPRB - CMPEQB - EXTSWSLI - EXTSWSLICC - MFVSRLD - MTVSRDD - MTVSRWS - MCRXRX - COPY - PASTECC + TW + TWI + XOR + XORCC + XORI + XORIS ) var opstr = [...]string{ - CNTLZW: "cntlzw", - CNTLZWCC: "cntlzw.", - B: "b", - BA: "ba", - BL: "bl", - BLA: "bla", - BC: "bc", - BCA: "bca", - BCL: "bcl", - BCLA: "bcla", - BCLR: "bclr", - BCLRL: "bclrl", - BCCTR: "bcctr", - BCCTRL: "bcctrl", - BCTAR: "bctar", - BCTARL: "bctarl", - CRAND: "crand", - CROR: "cror", - CRNAND: "crnand", - CRXOR: "crxor", - CRNOR: "crnor", - CRANDC: "crandc", - MCRF: "mcrf", - CREQV: "creqv", - CRORC: "crorc", - SC: "sc", - CLRBHRB: "clrbhrb", - MFBHRBE: "mfbhrbe", - LBZ: "lbz", - LBZU: "lbzu", - LBZX: "lbzx", - LBZUX: "lbzux", - LHZ: "lhz", - LHZU: "lhzu", - LHZX: "lhzx", - LHZUX: "lhzux", - LHA: "lha", - LHAU: "lhau", - LHAX: "lhax", - LHAUX: "lhaux", - LWZ: "lwz", - LWZU: "lwzu", - LWZX: "lwzx", - LWZUX: "lwzux", - LWA: "lwa", - LWAX: "lwax", - LWAUX: "lwaux", - LD: "ld", - LDU: "ldu", - LDX: "ldx", - LDUX: "ldux", - STB: "stb", - STBU: "stbu", - STBX: "stbx", - STBUX: "stbux", - STH: "sth", - STHU: "sthu", - STHX: "sthx", - STHUX: "sthux", - STW: "stw", - STWU: "stwu", - STWX: "stwx", - STWUX: "stwux", - STD: "std", - STDU: "stdu", - STDX: "stdx", - STDUX: "stdux", - LQ: "lq", - STQ: "stq", - LHBRX: "lhbrx", - LWBRX: "lwbrx", - STHBRX: "sthbrx", - STWBRX: "stwbrx", - LDBRX: "ldbrx", - STDBRX: "stdbrx", - LMW: "lmw", - STMW: "stmw", - LSWI: "lswi", - LSWX: "lswx", - STSWI: "stswi", - STSWX: "stswx", - LI: "li", - ADDI: "addi", - LIS: "lis", - ADDIS: "addis", - ADD: "add", - ADDCC: "add.", - ADDO: "addo", - ADDOCC: "addo.", - ADDIC: "addic", - SUBF: "subf", - SUBFCC: "subf.", - SUBFO: "subfo", - SUBFOCC: "subfo.", - ADDICCC: "addic.", - SUBFIC: "subfic", - ADDC: "addc", - ADDCCC: "addc.", - ADDCO: "addco", - ADDCOCC: "addco.", - SUBFC: "subfc", - SUBFCCC: "subfc.", - SUBFCO: "subfco", - SUBFCOCC: "subfco.", - ADDE: "adde", - ADDECC: "adde.", - ADDEO: "addeo", - ADDEOCC: "addeo.", - ADDME: "addme", - ADDMECC: "addme.", - ADDMEO: "addmeo", - ADDMEOCC: "addmeo.", - SUBFE: "subfe", - SUBFECC: "subfe.", - SUBFEO: "subfeo", - SUBFEOCC: "subfeo.", - SUBFME: "subfme", - SUBFMECC: "subfme.", - SUBFMEO: "subfmeo", - SUBFMEOCC: "subfmeo.", - ADDZE: "addze", - ADDZECC: "addze.", - ADDZEO: "addzeo", - ADDZEOCC: "addzeo.", - SUBFZE: "subfze", - SUBFZECC: "subfze.", - SUBFZEO: "subfzeo", - SUBFZEOCC: "subfzeo.", - NEG: "neg", - NEGCC: "neg.", - NEGO: "nego", - NEGOCC: "nego.", - MULLI: "mulli", - MULLW: "mullw", - MULLWCC: "mullw.", - MULLWO: "mullwo", - MULLWOCC: "mullwo.", - MULHW: "mulhw", - MULHWCC: "mulhw.", - MULHWU: "mulhwu", - MULHWUCC: "mulhwu.", - DIVW: "divw", - DIVWCC: "divw.", - DIVWO: "divwo", - DIVWOCC: "divwo.", - DIVWU: "divwu", - DIVWUCC: "divwu.", - DIVWUO: "divwuo", - DIVWUOCC: "divwuo.", - DIVWE: "divwe", - DIVWECC: "divwe.", - DIVWEO: "divweo", - DIVWEOCC: "divweo.", - DIVWEU: "divweu", - DIVWEUCC: "divweu.", - DIVWEUO: "divweuo", - DIVWEUOCC: "divweuo.", - MULLD: "mulld", - MULLDCC: "mulld.", - MULLDO: "mulldo", - MULLDOCC: "mulldo.", - MULHDU: "mulhdu", - MULHDUCC: "mulhdu.", - MULHD: "mulhd", - MULHDCC: "mulhd.", - DIVD: "divd", - DIVDCC: "divd.", - DIVDO: "divdo", - DIVDOCC: "divdo.", - DIVDU: "divdu", - DIVDUCC: "divdu.", - DIVDUO: "divduo", - DIVDUOCC: "divduo.", - DIVDE: "divde", - DIVDECC: "divde.", - DIVDEO: "divdeo", - DIVDEOCC: "divdeo.", - DIVDEU: "divdeu", - DIVDEUCC: "divdeu.", - DIVDEUO: "divdeuo", - DIVDEUOCC: "divdeuo.", - CMPWI: "cmpwi", - CMPDI: "cmpdi", - CMPW: "cmpw", - CMPD: "cmpd", - CMPLWI: "cmplwi", - CMPLDI: "cmpldi", - CMPLW: "cmplw", - CMPLD: "cmpld", - TWI: "twi", - TW: "tw", - TDI: "tdi", - ISEL: "isel", - TD: "td", - ANDICC: "andi.", - ANDISCC: "andis.", - ORI: "ori", - ORIS: "oris", - XORI: "xori", - XORIS: "xoris", - AND: "and", - ANDCC: "and.", - XOR: "xor", - XORCC: "xor.", - NAND: "nand", - NANDCC: "nand.", - OR: "or", - ORCC: "or.", - NOR: "nor", - NORCC: "nor.", - ANDC: "andc", - ANDCCC: "andc.", - EXTSB: "extsb", - EXTSBCC: "extsb.", - EQV: "eqv", - EQVCC: "eqv.", - ORC: "orc", - ORCCC: "orc.", - EXTSH: "extsh", - EXTSHCC: "extsh.", - CMPB: "cmpb", - POPCNTB: "popcntb", - POPCNTW: "popcntw", - PRTYD: "prtyd", - PRTYW: "prtyw", - EXTSW: "extsw", - EXTSWCC: "extsw.", - CNTLZD: "cntlzd", - CNTLZDCC: "cntlzd.", - POPCNTD: "popcntd", - BPERMD: "bpermd", - RLWINM: "rlwinm", - RLWINMCC: "rlwinm.", - RLWNM: "rlwnm", - RLWNMCC: "rlwnm.", - RLWIMI: "rlwimi", - RLWIMICC: "rlwimi.", - RLDICL: "rldicl", - RLDICLCC: "rldicl.", - RLDICR: "rldicr", - RLDICRCC: "rldicr.", - RLDIC: "rldic", - RLDICCC: "rldic.", - RLDCL: "rldcl", - RLDCLCC: "rldcl.", - RLDCR: "rldcr", - RLDCRCC: "rldcr.", - RLDIMI: "rldimi", - RLDIMICC: "rldimi.", - SLW: "slw", - SLWCC: "slw.", - SRW: "srw", - SRWCC: "srw.", - SRAWI: "srawi", - SRAWICC: "srawi.", - SRAW: "sraw", - SRAWCC: "sraw.", - SLD: "sld", - SLDCC: "sld.", - SRD: "srd", - SRDCC: "srd.", - SRADI: "sradi", - SRADICC: "sradi.", - SRAD: "srad", - SRADCC: "srad.", - CDTBCD: "cdtbcd", - CBCDTD: "cbcdtd", - ADDG6S: "addg6s", - MTSPR: "mtspr", - MFSPR: "mfspr", - MTCRF: "mtcrf", - MFCR: "mfcr", - MTSLE: "mtsle", - MFVSRD: "mfvsrd", - MFVSRWZ: "mfvsrwz", - MTVSRD: "mtvsrd", - MTVSRWA: "mtvsrwa", - MTVSRWZ: "mtvsrwz", - MTOCRF: "mtocrf", - MFOCRF: "mfocrf", - MCRXR: "mcrxr", - MTDCRUX: "mtdcrux", - MFDCRUX: "mfdcrux", - LFS: "lfs", - LFSU: "lfsu", - LFSX: "lfsx", - LFSUX: "lfsux", - LFD: "lfd", - LFDU: "lfdu", - LFDX: "lfdx", - LFDUX: "lfdux", - LFIWAX: "lfiwax", - LFIWZX: "lfiwzx", - STFS: "stfs", - STFSU: "stfsu", - STFSX: "stfsx", - STFSUX: "stfsux", - STFD: "stfd", - STFDU: "stfdu", - STFDX: "stfdx", - STFDUX: "stfdux", - STFIWX: "stfiwx", - LFDP: "lfdp", - LFDPX: "lfdpx", - STFDP: "stfdp", - STFDPX: "stfdpx", - FMR: "fmr", - FMRCC: "fmr.", - FABS: "fabs", - FABSCC: "fabs.", - FNABS: "fnabs", - FNABSCC: "fnabs.", - FNEG: "fneg", - FNEGCC: "fneg.", - FCPSGN: "fcpsgn", - FCPSGNCC: "fcpsgn.", - FMRGEW: "fmrgew", - FMRGOW: "fmrgow", - FADD: "fadd", - FADDCC: "fadd.", - FADDS: "fadds", - FADDSCC: "fadds.", - FSUB: "fsub", - FSUBCC: "fsub.", - FSUBS: "fsubs", - FSUBSCC: "fsubs.", - FMUL: "fmul", - FMULCC: "fmul.", - FMULS: "fmuls", - FMULSCC: "fmuls.", - FDIV: "fdiv", - FDIVCC: "fdiv.", - FDIVS: "fdivs", - FDIVSCC: "fdivs.", - FSQRT: "fsqrt", - FSQRTCC: "fsqrt.", - FSQRTS: "fsqrts", - FSQRTSCC: "fsqrts.", - FRE: "fre", - FRECC: "fre.", - FRES: "fres", - FRESCC: "fres.", - FRSQRTE: "frsqrte", - FRSQRTECC: "frsqrte.", - FRSQRTES: "frsqrtes", - FRSQRTESCC: "frsqrtes.", - FTDIV: "ftdiv", - FTSQRT: "ftsqrt", - FMADD: "fmadd", - FMADDCC: "fmadd.", - FMADDS: "fmadds", - FMADDSCC: "fmadds.", - FMSUB: "fmsub", - FMSUBCC: "fmsub.", - FMSUBS: "fmsubs", - FMSUBSCC: "fmsubs.", - FNMADD: "fnmadd", - FNMADDCC: "fnmadd.", - FNMADDS: "fnmadds", - FNMADDSCC: "fnmadds.", - FNMSUB: "fnmsub", - FNMSUBCC: "fnmsub.", - FNMSUBS: "fnmsubs", - FNMSUBSCC: "fnmsubs.", - FRSP: "frsp", - FRSPCC: "frsp.", - FCTID: "fctid", - FCTIDCC: "fctid.", - FCTIDZ: "fctidz", - FCTIDZCC: "fctidz.", - FCTIDU: "fctidu", - FCTIDUCC: "fctidu.", - FCTIDUZ: "fctiduz", - FCTIDUZCC: "fctiduz.", - FCTIW: "fctiw", - FCTIWCC: "fctiw.", - FCTIWZ: "fctiwz", - FCTIWZCC: "fctiwz.", - FCTIWU: "fctiwu", - FCTIWUCC: "fctiwu.", - FCTIWUZ: "fctiwuz", - FCTIWUZCC: "fctiwuz.", - FCFID: "fcfid", - FCFIDCC: "fcfid.", - FCFIDU: "fcfidu", - FCFIDUCC: "fcfidu.", - FCFIDS: "fcfids", - FCFIDSCC: "fcfids.", - FCFIDUS: "fcfidus", - FCFIDUSCC: "fcfidus.", - FRIN: "frin", - FRINCC: "frin.", - FRIZ: "friz", - FRIZCC: "friz.", - FRIP: "frip", - FRIPCC: "frip.", - FRIM: "frim", - FRIMCC: "frim.", - FCMPU: "fcmpu", - FCMPO: "fcmpo", - FSEL: "fsel", - FSELCC: "fsel.", - MFFS: "mffs", - MFFSCC: "mffs.", - MCRFS: "mcrfs", - MTFSFI: "mtfsfi", - MTFSFICC: "mtfsfi.", - MTFSF: "mtfsf", - MTFSFCC: "mtfsf.", - MTFSB0: "mtfsb0", - MTFSB0CC: "mtfsb0.", - MTFSB1: "mtfsb1", - MTFSB1CC: "mtfsb1.", - LVEBX: "lvebx", - LVEHX: "lvehx", - LVEWX: "lvewx", - LVX: "lvx", - LVXL: "lvxl", - STVEBX: "stvebx", - STVEHX: "stvehx", - STVEWX: "stvewx", - STVX: "stvx", - STVXL: "stvxl", - LVSL: "lvsl", - LVSR: "lvsr", - VPKPX: "vpkpx", - VPKSDSS: "vpksdss", - VPKSDUS: "vpksdus", - VPKSHSS: "vpkshss", - VPKSHUS: "vpkshus", - VPKSWSS: "vpkswss", - VPKSWUS: "vpkswus", - VPKUDUM: "vpkudum", - VPKUDUS: "vpkudus", - VPKUHUM: "vpkuhum", - VPKUHUS: "vpkuhus", - VPKUWUM: "vpkuwum", - VPKUWUS: "vpkuwus", - VUPKHPX: "vupkhpx", - VUPKLPX: "vupklpx", - VUPKHSB: "vupkhsb", - VUPKHSH: "vupkhsh", - VUPKHSW: "vupkhsw", - VUPKLSB: "vupklsb", - VUPKLSH: "vupklsh", - VUPKLSW: "vupklsw", - VMRGHB: "vmrghb", - VMRGHH: "vmrghh", - VMRGLB: "vmrglb", - VMRGLH: "vmrglh", - VMRGHW: "vmrghw", - VMRGLW: "vmrglw", - VMRGEW: "vmrgew", - VMRGOW: "vmrgow", - VSPLTB: "vspltb", - VSPLTH: "vsplth", - VSPLTW: "vspltw", - VSPLTISB: "vspltisb", - VSPLTISH: "vspltish", - VSPLTISW: "vspltisw", - VPERM: "vperm", - VSEL: "vsel", - VSL: "vsl", - VSLDOI: "vsldoi", - VSLO: "vslo", - VSR: "vsr", - VSRO: "vsro", - VADDCUW: "vaddcuw", - VADDSBS: "vaddsbs", - VADDSHS: "vaddshs", - VADDSWS: "vaddsws", - VADDUBM: "vaddubm", - VADDUDM: "vaddudm", - VADDUHM: "vadduhm", - VADDUWM: "vadduwm", - VADDUBS: "vaddubs", - VADDUHS: "vadduhs", - VADDUWS: "vadduws", - VADDUQM: "vadduqm", - VADDEUQM: "vaddeuqm", - VADDCUQ: "vaddcuq", - VADDECUQ: "vaddecuq", - VSUBCUW: "vsubcuw", - VSUBSBS: "vsubsbs", - VSUBSHS: "vsubshs", - VSUBSWS: "vsubsws", - VSUBUBM: "vsububm", - VSUBUDM: "vsubudm", - VSUBUHM: "vsubuhm", - VSUBUWM: "vsubuwm", - VSUBUBS: "vsububs", - VSUBUHS: "vsubuhs", - VSUBUWS: "vsubuws", - VSUBUQM: "vsubuqm", - VSUBEUQM: "vsubeuqm", - VSUBCUQ: "vsubcuq", - VSUBECUQ: "vsubecuq", - VMULESB: "vmulesb", - VMULEUB: "vmuleub", - VMULOSB: "vmulosb", - VMULOUB: "vmuloub", - VMULESH: "vmulesh", - VMULEUH: "vmuleuh", - VMULOSH: "vmulosh", - VMULOUH: "vmulouh", - VMULESW: "vmulesw", - VMULEUW: "vmuleuw", - VMULOSW: "vmulosw", - VMULOUW: "vmulouw", - VMULUWM: "vmuluwm", - VMHADDSHS: "vmhaddshs", - VMHRADDSHS: "vmhraddshs", - VMLADDUHM: "vmladduhm", - VMSUMUBM: "vmsumubm", - VMSUMMBM: "vmsummbm", - VMSUMSHM: "vmsumshm", - VMSUMSHS: "vmsumshs", - VMSUMUHM: "vmsumuhm", - VMSUMUHS: "vmsumuhs", - VSUMSWS: "vsumsws", - VSUM2SWS: "vsum2sws", - VSUM4SBS: "vsum4sbs", - VSUM4SHS: "vsum4shs", - VSUM4UBS: "vsum4ubs", - VAVGSB: "vavgsb", - VAVGSH: "vavgsh", - VAVGSW: "vavgsw", - VAVGUB: "vavgub", - VAVGUW: "vavguw", - VAVGUH: "vavguh", - VMAXSB: "vmaxsb", - VMAXSD: "vmaxsd", - VMAXUB: "vmaxub", - VMAXUD: "vmaxud", - VMAXSH: "vmaxsh", - VMAXSW: "vmaxsw", - VMAXUH: "vmaxuh", - VMAXUW: "vmaxuw", - VMINSB: "vminsb", - VMINSD: "vminsd", - VMINUB: "vminub", - VMINUD: "vminud", - VMINSH: "vminsh", - VMINSW: "vminsw", - VMINUH: "vminuh", - VMINUW: "vminuw", - VCMPEQUB: "vcmpequb", - VCMPEQUBCC: "vcmpequb.", - VCMPEQUH: "vcmpequh", - VCMPEQUHCC: "vcmpequh.", - VCMPEQUW: "vcmpequw", - VCMPEQUWCC: "vcmpequw.", - VCMPEQUD: "vcmpequd", - VCMPEQUDCC: "vcmpequd.", - VCMPGTSB: "vcmpgtsb", - VCMPGTSBCC: "vcmpgtsb.", - VCMPGTSD: "vcmpgtsd", - VCMPGTSDCC: "vcmpgtsd.", - VCMPGTSH: "vcmpgtsh", - VCMPGTSHCC: "vcmpgtsh.", - VCMPGTSW: "vcmpgtsw", - VCMPGTSWCC: "vcmpgtsw.", - VCMPGTUB: "vcmpgtub", - VCMPGTUBCC: "vcmpgtub.", - VCMPGTUD: "vcmpgtud", - VCMPGTUDCC: "vcmpgtud.", - VCMPGTUH: "vcmpgtuh", - VCMPGTUHCC: "vcmpgtuh.", - VCMPGTUW: "vcmpgtuw", - VCMPGTUWCC: "vcmpgtuw.", - VAND: "vand", - VANDC: "vandc", - VEQV: "veqv", - VNAND: "vnand", - VORC: "vorc", - VNOR: "vnor", - VOR: "vor", - VXOR: "vxor", - VRLB: "vrlb", - VRLH: "vrlh", - VRLW: "vrlw", - VRLD: "vrld", - VSLB: "vslb", - VSLH: "vslh", - VSLW: "vslw", - VSLD: "vsld", - VSRB: "vsrb", - VSRH: "vsrh", - VSRW: "vsrw", - VSRD: "vsrd", - VSRAB: "vsrab", - VSRAH: "vsrah", - VSRAW: "vsraw", - VSRAD: "vsrad", - VADDFP: "vaddfp", - VSUBFP: "vsubfp", - VMADDFP: "vmaddfp", - VNMSUBFP: "vnmsubfp", - VMAXFP: "vmaxfp", - VMINFP: "vminfp", - VCTSXS: "vctsxs", - VCTUXS: "vctuxs", - VCFSX: "vcfsx", - VCFUX: "vcfux", - VRFIM: "vrfim", - VRFIN: "vrfin", - VRFIP: "vrfip", - VRFIZ: "vrfiz", - VCMPBFP: "vcmpbfp", - VCMPBFPCC: "vcmpbfp.", - VCMPEQFP: "vcmpeqfp", - VCMPEQFPCC: "vcmpeqfp.", - VCMPGEFP: "vcmpgefp", - VCMPGEFPCC: "vcmpgefp.", - VCMPGTFP: "vcmpgtfp", - VCMPGTFPCC: "vcmpgtfp.", - VEXPTEFP: "vexptefp", - VLOGEFP: "vlogefp", - VREFP: "vrefp", - VRSQRTEFP: "vrsqrtefp", - VCIPHER: "vcipher", - VCIPHERLAST: "vcipherlast", - VNCIPHER: "vncipher", - VNCIPHERLAST: "vncipherlast", - VSBOX: "vsbox", - VSHASIGMAD: "vshasigmad", - VSHASIGMAW: "vshasigmaw", - VPMSUMB: "vpmsumb", - VPMSUMD: "vpmsumd", - VPMSUMH: "vpmsumh", - VPMSUMW: "vpmsumw", - VPERMXOR: "vpermxor", - VGBBD: "vgbbd", - VCLZB: "vclzb", - VCLZH: "vclzh", - VCLZW: "vclzw", - VCLZD: "vclzd", - VPOPCNTB: "vpopcntb", - VPOPCNTD: "vpopcntd", - VPOPCNTH: "vpopcnth", - VPOPCNTW: "vpopcntw", - VBPERMQ: "vbpermq", - BCDADDCC: "bcdadd.", - BCDSUBCC: "bcdsub.", - MTVSCR: "mtvscr", - MFVSCR: "mfvscr", - DADD: "dadd", - DADDCC: "dadd.", - DSUB: "dsub", - DSUBCC: "dsub.", - DMUL: "dmul", - DMULCC: "dmul.", - DDIV: "ddiv", - DDIVCC: "ddiv.", - DCMPU: "dcmpu", - DCMPO: "dcmpo", - DTSTDC: "dtstdc", - DTSTDG: "dtstdg", - DTSTEX: "dtstex", - DTSTSF: "dtstsf", - DQUAI: "dquai", - DQUAICC: "dquai.", - DQUA: "dqua", - DQUACC: "dqua.", - DRRND: "drrnd", - DRRNDCC: "drrnd.", - DRINTX: "drintx", - DRINTXCC: "drintx.", - DRINTN: "drintn", - DRINTNCC: "drintn.", - DCTDP: "dctdp", - DCTDPCC: "dctdp.", - DCTQPQ: "dctqpq", - DCTQPQCC: "dctqpq.", - DRSP: "drsp", - DRSPCC: "drsp.", - DRDPQ: "drdpq", - DRDPQCC: "drdpq.", - DCFFIX: "dcffix", - DCFFIXCC: "dcffix.", - DCFFIXQ: "dcffixq", - DCFFIXQCC: "dcffixq.", - DCTFIX: "dctfix", - DCTFIXCC: "dctfix.", - DDEDPD: "ddedpd", - DDEDPDCC: "ddedpd.", - DENBCD: "denbcd", - DENBCDCC: "denbcd.", - DXEX: "dxex", - DXEXCC: "dxex.", - DIEX: "diex", - DIEXCC: "diex.", - DSCLI: "dscli", - DSCLICC: "dscli.", - DSCRI: "dscri", - DSCRICC: "dscri.", - LXSDX: "lxsdx", - LXSIWAX: "lxsiwax", - LXSIWZX: "lxsiwzx", - LXSSPX: "lxsspx", - LXVD2X: "lxvd2x", - LXVDSX: "lxvdsx", - LXVW4X: "lxvw4x", - STXSDX: "stxsdx", - STXSIWX: "stxsiwx", - STXSSPX: "stxsspx", - STXVD2X: "stxvd2x", - STXVW4X: "stxvw4x", - XSABSDP: "xsabsdp", - XSADDDP: "xsadddp", - XSADDSP: "xsaddsp", - XSCMPODP: "xscmpodp", - XSCMPUDP: "xscmpudp", - XSCPSGNDP: "xscpsgndp", - XSCVDPSP: "xscvdpsp", - XSCVDPSPN: "xscvdpspn", - XSCVDPSXDS: "xscvdpsxds", - XSCVDPSXWS: "xscvdpsxws", - XSCVDPUXDS: "xscvdpuxds", - XSCVDPUXWS: "xscvdpuxws", - XSCVSPDP: "xscvspdp", - XSCVSPDPN: "xscvspdpn", - XSCVSXDDP: "xscvsxddp", - XSCVSXDSP: "xscvsxdsp", - XSCVUXDDP: "xscvuxddp", - XSCVUXDSP: "xscvuxdsp", - XSDIVDP: "xsdivdp", - XSDIVSP: "xsdivsp", - XSMADDADP: "xsmaddadp", - XSMADDASP: "xsmaddasp", - XSMAXDP: "xsmaxdp", - XSMINDP: "xsmindp", - XSMSUBADP: "xsmsubadp", - XSMSUBASP: "xsmsubasp", - XSMULDP: "xsmuldp", - XSMULSP: "xsmulsp", - XSNABSDP: "xsnabsdp", - XSNEGDP: "xsnegdp", - XSNMADDADP: "xsnmaddadp", - XSNMADDASP: "xsnmaddasp", - XSNMSUBADP: "xsnmsubadp", - XSNMSUBASP: "xsnmsubasp", - XSRDPI: "xsrdpi", - XSRDPIC: "xsrdpic", - XSRDPIM: "xsrdpim", - XSRDPIP: "xsrdpip", - XSRDPIZ: "xsrdpiz", - XSREDP: "xsredp", - XSRESP: "xsresp", - XSRSP: "xsrsp", - XSRSQRTEDP: "xsrsqrtedp", - XSRSQRTESP: "xsrsqrtesp", - XSSQRTDP: "xssqrtdp", - XSSQRTSP: "xssqrtsp", - XSSUBDP: "xssubdp", - XSSUBSP: "xssubsp", - XSTDIVDP: "xstdivdp", - XSTSQRTDP: "xstsqrtdp", - XVABSDP: "xvabsdp", - XVABSSP: "xvabssp", - XVADDDP: "xvadddp", - XVADDSP: "xvaddsp", - XVCMPEQDP: "xvcmpeqdp", - XVCMPEQDPCC: "xvcmpeqdp.", - XVCMPEQSP: "xvcmpeqsp", - XVCMPEQSPCC: "xvcmpeqsp.", - XVCMPGEDP: "xvcmpgedp", - XVCMPGEDPCC: "xvcmpgedp.", - XVCMPGESP: "xvcmpgesp", - XVCMPGESPCC: "xvcmpgesp.", - XVCMPGTDP: "xvcmpgtdp", - XVCMPGTDPCC: "xvcmpgtdp.", - XVCMPGTSP: "xvcmpgtsp", - XVCMPGTSPCC: "xvcmpgtsp.", - XVCPSGNDP: "xvcpsgndp", - XVCPSGNSP: "xvcpsgnsp", - XVCVDPSP: "xvcvdpsp", - XVCVDPSXDS: "xvcvdpsxds", - XVCVDPSXWS: "xvcvdpsxws", - XVCVDPUXDS: "xvcvdpuxds", - XVCVDPUXWS: "xvcvdpuxws", - XVCVSPDP: "xvcvspdp", - XVCVSPSXDS: "xvcvspsxds", - XVCVSPSXWS: "xvcvspsxws", - XVCVSPUXDS: "xvcvspuxds", - XVCVSPUXWS: "xvcvspuxws", - XVCVSXDDP: "xvcvsxddp", - XVCVSXDSP: "xvcvsxdsp", - XVCVSXWDP: "xvcvsxwdp", - XVCVSXWSP: "xvcvsxwsp", - XVCVUXDDP: "xvcvuxddp", - XVCVUXDSP: "xvcvuxdsp", - XVCVUXWDP: "xvcvuxwdp", - XVCVUXWSP: "xvcvuxwsp", - XVDIVDP: "xvdivdp", - XVDIVSP: "xvdivsp", - XVMADDADP: "xvmaddadp", - XVMADDASP: "xvmaddasp", - XVMAXDP: "xvmaxdp", - XVMAXSP: "xvmaxsp", - XVMINDP: "xvmindp", - XVMINSP: "xvminsp", - XVMSUBADP: "xvmsubadp", - XVMSUBASP: "xvmsubasp", - XVMULDP: "xvmuldp", - XVMULSP: "xvmulsp", - XVNABSDP: "xvnabsdp", - XVNABSSP: "xvnabssp", - XVNEGDP: "xvnegdp", - XVNEGSP: "xvnegsp", - XVNMADDADP: "xvnmaddadp", - XVNMADDASP: "xvnmaddasp", - XVNMSUBADP: "xvnmsubadp", - XVNMSUBASP: "xvnmsubasp", - XVRDPI: "xvrdpi", - XVRDPIC: "xvrdpic", - XVRDPIM: "xvrdpim", - XVRDPIP: "xvrdpip", - XVRDPIZ: "xvrdpiz", - XVREDP: "xvredp", - XVRESP: "xvresp", - XVRSPI: "xvrspi", - XVRSPIC: "xvrspic", - XVRSPIM: "xvrspim", - XVRSPIP: "xvrspip", - XVRSPIZ: "xvrspiz", - XVRSQRTEDP: "xvrsqrtedp", - XVRSQRTESP: "xvrsqrtesp", - XVSQRTDP: "xvsqrtdp", - XVSQRTSP: "xvsqrtsp", - XVSUBDP: "xvsubdp", - XVSUBSP: "xvsubsp", - XVTDIVDP: "xvtdivdp", - XVTDIVSP: "xvtdivsp", - XVTSQRTDP: "xvtsqrtdp", - XVTSQRTSP: "xvtsqrtsp", - XXLAND: "xxland", - XXLANDC: "xxlandc", - XXLEQV: "xxleqv", - XXLNAND: "xxlnand", - XXLORC: "xxlorc", - XXLNOR: "xxlnor", - XXLOR: "xxlor", - XXLXOR: "xxlxor", - XXMRGHW: "xxmrghw", - XXMRGLW: "xxmrglw", - XXPERMDI: "xxpermdi", - XXSEL: "xxsel", - XXSLDWI: "xxsldwi", - XXSPLTW: "xxspltw", - BRINC: "brinc", - EVABS: "evabs", - EVADDIW: "evaddiw", - EVADDSMIAAW: "evaddsmiaaw", - EVADDSSIAAW: "evaddssiaaw", - EVADDUMIAAW: "evaddumiaaw", - EVADDUSIAAW: "evaddusiaaw", - EVADDW: "evaddw", - EVAND: "evand", - EVCMPEQ: "evcmpeq", - EVANDC: "evandc", - EVCMPGTS: "evcmpgts", - EVCMPGTU: "evcmpgtu", - EVCMPLTU: "evcmpltu", - EVCMPLTS: "evcmplts", - EVCNTLSW: "evcntlsw", - EVCNTLZW: "evcntlzw", - EVDIVWS: "evdivws", - EVDIVWU: "evdivwu", - EVEQV: "eveqv", - EVEXTSB: "evextsb", - EVEXTSH: "evextsh", - EVLDD: "evldd", - EVLDH: "evldh", - EVLDDX: "evlddx", - EVLDHX: "evldhx", - EVLDW: "evldw", - EVLHHESPLAT: "evlhhesplat", - EVLDWX: "evldwx", - EVLHHESPLATX: "evlhhesplatx", - EVLHHOSSPLAT: "evlhhossplat", - EVLHHOUSPLAT: "evlhhousplat", - EVLHHOSSPLATX: "evlhhossplatx", - EVLHHOUSPLATX: "evlhhousplatx", - EVLWHE: "evlwhe", - EVLWHOS: "evlwhos", - EVLWHEX: "evlwhex", - EVLWHOSX: "evlwhosx", - EVLWHOU: "evlwhou", - EVLWHSPLAT: "evlwhsplat", - EVLWHOUX: "evlwhoux", - EVLWHSPLATX: "evlwhsplatx", - EVLWWSPLAT: "evlwwsplat", - EVMERGEHI: "evmergehi", - EVLWWSPLATX: "evlwwsplatx", - EVMERGELO: "evmergelo", - EVMERGEHILO: "evmergehilo", - EVMHEGSMFAA: "evmhegsmfaa", - EVMERGELOHI: "evmergelohi", - EVMHEGSMFAN: "evmhegsmfan", - EVMHEGSMIAA: "evmhegsmiaa", - EVMHEGUMIAA: "evmhegumiaa", - EVMHEGSMIAN: "evmhegsmian", - EVMHEGUMIAN: "evmhegumian", - EVMHESMF: "evmhesmf", - EVMHESMFAAW: "evmhesmfaaw", - EVMHESMFA: "evmhesmfa", - EVMHESMFANW: "evmhesmfanw", - EVMHESMI: "evmhesmi", - EVMHESMIAAW: "evmhesmiaaw", - EVMHESMIA: "evmhesmia", - EVMHESMIANW: "evmhesmianw", - EVMHESSF: "evmhessf", - EVMHESSFA: "evmhessfa", - EVMHESSFAAW: "evmhessfaaw", - EVMHESSFANW: "evmhessfanw", - EVMHESSIAAW: "evmhessiaaw", - EVMHESSIANW: "evmhessianw", - EVMHEUMI: "evmheumi", - EVMHEUMIAAW: "evmheumiaaw", - EVMHEUMIA: "evmheumia", - EVMHEUMIANW: "evmheumianw", - EVMHEUSIAAW: "evmheusiaaw", - EVMHEUSIANW: "evmheusianw", - EVMHOGSMFAA: "evmhogsmfaa", - EVMHOGSMIAA: "evmhogsmiaa", - EVMHOGSMFAN: "evmhogsmfan", - EVMHOGSMIAN: "evmhogsmian", - EVMHOGUMIAA: "evmhogumiaa", - EVMHOSMF: "evmhosmf", - EVMHOGUMIAN: "evmhogumian", - EVMHOSMFA: "evmhosmfa", - EVMHOSMFAAW: "evmhosmfaaw", - EVMHOSMI: "evmhosmi", - EVMHOSMFANW: "evmhosmfanw", - EVMHOSMIA: "evmhosmia", - EVMHOSMIAAW: "evmhosmiaaw", - EVMHOSMIANW: "evmhosmianw", - EVMHOSSF: "evmhossf", - EVMHOSSFA: "evmhossfa", - EVMHOSSFAAW: "evmhossfaaw", - EVMHOSSFANW: "evmhossfanw", - EVMHOSSIAAW: "evmhossiaaw", - EVMHOUMI: "evmhoumi", - EVMHOSSIANW: "evmhossianw", - EVMHOUMIA: "evmhoumia", - EVMHOUMIAAW: "evmhoumiaaw", - EVMHOUSIAAW: "evmhousiaaw", - EVMHOUMIANW: "evmhoumianw", - EVMHOUSIANW: "evmhousianw", - EVMRA: "evmra", - EVMWHSMF: "evmwhsmf", - EVMWHSMI: "evmwhsmi", - EVMWHSMFA: "evmwhsmfa", - EVMWHSMIA: "evmwhsmia", - EVMWHSSF: "evmwhssf", - EVMWHUMI: "evmwhumi", - EVMWHSSFA: "evmwhssfa", - EVMWHUMIA: "evmwhumia", - EVMWLSMIAAW: "evmwlsmiaaw", - EVMWLSSIAAW: "evmwlssiaaw", - EVMWLSMIANW: "evmwlsmianw", - EVMWLSSIANW: "evmwlssianw", - EVMWLUMI: "evmwlumi", - EVMWLUMIAAW: "evmwlumiaaw", - EVMWLUMIA: "evmwlumia", - EVMWLUMIANW: "evmwlumianw", - EVMWLUSIAAW: "evmwlusiaaw", - EVMWSMF: "evmwsmf", - EVMWLUSIANW: "evmwlusianw", - EVMWSMFA: "evmwsmfa", - EVMWSMFAA: "evmwsmfaa", - EVMWSMI: "evmwsmi", - EVMWSMIAA: "evmwsmiaa", - EVMWSMFAN: "evmwsmfan", - EVMWSMIA: "evmwsmia", - EVMWSMIAN: "evmwsmian", - EVMWSSF: "evmwssf", - EVMWSSFA: "evmwssfa", - EVMWSSFAA: "evmwssfaa", - EVMWUMI: "evmwumi", - EVMWSSFAN: "evmwssfan", - EVMWUMIA: "evmwumia", - EVMWUMIAA: "evmwumiaa", - EVNAND: "evnand", - EVMWUMIAN: "evmwumian", - EVNEG: "evneg", - EVNOR: "evnor", - EVORC: "evorc", - EVOR: "evor", - EVRLW: "evrlw", - EVRLWI: "evrlwi", - EVSEL: "evsel", - EVRNDW: "evrndw", - EVSLW: "evslw", - EVSPLATFI: "evsplatfi", - EVSRWIS: "evsrwis", - EVSLWI: "evslwi", - EVSPLATI: "evsplati", - EVSRWIU: "evsrwiu", - EVSRWS: "evsrws", - EVSTDD: "evstdd", - EVSRWU: "evsrwu", - EVSTDDX: "evstddx", - EVSTDH: "evstdh", - EVSTDW: "evstdw", - EVSTDHX: "evstdhx", - EVSTDWX: "evstdwx", - EVSTWHE: "evstwhe", - EVSTWHO: "evstwho", - EVSTWWE: "evstwwe", - EVSTWHEX: "evstwhex", - EVSTWHOX: "evstwhox", - EVSTWWEX: "evstwwex", - EVSTWWO: "evstwwo", - EVSUBFSMIAAW: "evsubfsmiaaw", - EVSTWWOX: "evstwwox", - EVSUBFSSIAAW: "evsubfssiaaw", - EVSUBFUMIAAW: "evsubfumiaaw", - EVSUBFUSIAAW: "evsubfusiaaw", - EVSUBFW: "evsubfw", - EVSUBIFW: "evsubifw", - EVXOR: "evxor", - EVFSABS: "evfsabs", - EVFSNABS: "evfsnabs", - EVFSNEG: "evfsneg", - EVFSADD: "evfsadd", - EVFSMUL: "evfsmul", - EVFSSUB: "evfssub", - EVFSDIV: "evfsdiv", - EVFSCMPGT: "evfscmpgt", - EVFSCMPLT: "evfscmplt", - EVFSCMPEQ: "evfscmpeq", - EVFSTSTGT: "evfststgt", - EVFSTSTLT: "evfststlt", - EVFSTSTEQ: "evfststeq", - EVFSCFSI: "evfscfsi", - EVFSCFSF: "evfscfsf", - EVFSCFUI: "evfscfui", - EVFSCFUF: "evfscfuf", - EVFSCTSI: "evfsctsi", - EVFSCTUI: "evfsctui", - EVFSCTSIZ: "evfsctsiz", - EVFSCTUIZ: "evfsctuiz", - EVFSCTSF: "evfsctsf", - EVFSCTUF: "evfsctuf", - EFSABS: "efsabs", - EFSNEG: "efsneg", - EFSNABS: "efsnabs", - EFSADD: "efsadd", - EFSMUL: "efsmul", - EFSSUB: "efssub", - EFSDIV: "efsdiv", - EFSCMPGT: "efscmpgt", - EFSCMPLT: "efscmplt", - EFSCMPEQ: "efscmpeq", - EFSTSTGT: "efststgt", - EFSTSTLT: "efststlt", - EFSTSTEQ: "efststeq", - EFSCFSI: "efscfsi", - EFSCFSF: "efscfsf", - EFSCTSI: "efsctsi", - EFSCFUI: "efscfui", - EFSCFUF: "efscfuf", - EFSCTUI: "efsctui", - EFSCTSIZ: "efsctsiz", - EFSCTSF: "efsctsf", - EFSCTUIZ: "efsctuiz", - EFSCTUF: "efsctuf", - EFDABS: "efdabs", - EFDNEG: "efdneg", - EFDNABS: "efdnabs", - EFDADD: "efdadd", - EFDMUL: "efdmul", - EFDSUB: "efdsub", - EFDDIV: "efddiv", - EFDCMPGT: "efdcmpgt", - EFDCMPEQ: "efdcmpeq", - EFDCMPLT: "efdcmplt", - EFDTSTGT: "efdtstgt", - EFDTSTLT: "efdtstlt", - EFDCFSI: "efdcfsi", - EFDTSTEQ: "efdtsteq", - EFDCFUI: "efdcfui", - EFDCFSID: "efdcfsid", - EFDCFSF: "efdcfsf", - EFDCFUF: "efdcfuf", - EFDCFUID: "efdcfuid", - EFDCTSI: "efdctsi", - EFDCTUI: "efdctui", - EFDCTSIDZ: "efdctsidz", - EFDCTUIDZ: "efdctuidz", - EFDCTSIZ: "efdctsiz", - EFDCTSF: "efdctsf", - EFDCTUF: "efdctuf", - EFDCTUIZ: "efdctuiz", - EFDCFS: "efdcfs", - EFSCFD: "efscfd", - DLMZB: "dlmzb", - DLMZBCC: "dlmzb.", - MACCHW: "macchw", - MACCHWCC: "macchw.", - MACCHWO: "macchwo", - MACCHWOCC: "macchwo.", - MACCHWS: "macchws", - MACCHWSCC: "macchws.", - MACCHWSO: "macchwso", - MACCHWSOCC: "macchwso.", - MACCHWU: "macchwu", - MACCHWUCC: "macchwu.", - MACCHWUO: "macchwuo", - MACCHWUOCC: "macchwuo.", - MACCHWSU: "macchwsu", - MACCHWSUCC: "macchwsu.", - MACCHWSUO: "macchwsuo", - MACCHWSUOCC: "macchwsuo.", - MACHHW: "machhw", - MACHHWCC: "machhw.", - MACHHWO: "machhwo", - MACHHWOCC: "machhwo.", - MACHHWS: "machhws", - MACHHWSCC: "machhws.", - MACHHWSO: "machhwso", - MACHHWSOCC: "machhwso.", - MACHHWU: "machhwu", - MACHHWUCC: "machhwu.", - MACHHWUO: "machhwuo", - MACHHWUOCC: "machhwuo.", - MACHHWSU: "machhwsu", - MACHHWSUCC: "machhwsu.", - MACHHWSUO: "machhwsuo", - MACHHWSUOCC: "machhwsuo.", - MACLHW: "maclhw", - MACLHWCC: "maclhw.", - MACLHWO: "maclhwo", - MACLHWOCC: "maclhwo.", - MACLHWS: "maclhws", - MACLHWSCC: "maclhws.", - MACLHWSO: "maclhwso", - MACLHWSOCC: "maclhwso.", - MACLHWU: "maclhwu", - MACLHWUCC: "maclhwu.", - MACLHWUO: "maclhwuo", - MACLHWUOCC: "maclhwuo.", - MULCHW: "mulchw", - MULCHWCC: "mulchw.", - MACLHWSU: "maclhwsu", - MACLHWSUCC: "maclhwsu.", - MACLHWSUO: "maclhwsuo", - MACLHWSUOCC: "maclhwsuo.", - MULCHWU: "mulchwu", - MULCHWUCC: "mulchwu.", - MULHHW: "mulhhw", - MULHHWCC: "mulhhw.", - MULLHW: "mullhw", - MULLHWCC: "mullhw.", - MULHHWU: "mulhhwu", - MULHHWUCC: "mulhhwu.", - MULLHWU: "mullhwu", - MULLHWUCC: "mullhwu.", - NMACCHW: "nmacchw", - NMACCHWCC: "nmacchw.", - NMACCHWO: "nmacchwo", - NMACCHWOCC: "nmacchwo.", - NMACCHWS: "nmacchws", - NMACCHWSCC: "nmacchws.", - NMACCHWSO: "nmacchwso", - NMACCHWSOCC: "nmacchwso.", - NMACHHW: "nmachhw", - NMACHHWCC: "nmachhw.", - NMACHHWO: "nmachhwo", - NMACHHWOCC: "nmachhwo.", - NMACHHWS: "nmachhws", - NMACHHWSCC: "nmachhws.", - NMACHHWSO: "nmachhwso", - NMACHHWSOCC: "nmachhwso.", - NMACLHW: "nmaclhw", - NMACLHWCC: "nmaclhw.", - NMACLHWO: "nmaclhwo", - NMACLHWOCC: "nmaclhwo.", - NMACLHWS: "nmaclhws", - NMACLHWSCC: "nmaclhws.", - NMACLHWSO: "nmaclhwso", - NMACLHWSOCC: "nmaclhwso.", - ICBI: "icbi", - ICBT: "icbt", - DCBA: "dcba", - DCBT: "dcbt", - DCBTST: "dcbtst", - DCBZ: "dcbz", - DCBST: "dcbst", - DCBF: "dcbf", - ISYNC: "isync", - LBARX: "lbarx", - LHARX: "lharx", - LWARX: "lwarx", - STBCXCC: "stbcx.", - STHCXCC: "sthcx.", - STWCXCC: "stwcx.", - LDARX: "ldarx", - STDCXCC: "stdcx.", - LQARX: "lqarx", - STQCXCC: "stqcx.", - SYNC: "sync", - EIEIO: "eieio", - MBAR: "mbar", - WAIT: "wait", - TBEGINCC: "tbegin.", - TENDCC: "tend.", - TABORTCC: "tabort.", - TABORTWCCC: "tabortwc.", - TABORTWCICC: "tabortwci.", - TABORTDCCC: "tabortdc.", - TABORTDCICC: "tabortdci.", - TSRCC: "tsr.", - TCHECK: "tcheck", - MFTB: "mftb", - RFEBB: "rfebb", - LBDX: "lbdx", - LHDX: "lhdx", - LWDX: "lwdx", - LDDX: "lddx", - LFDDX: "lfddx", - STBDX: "stbdx", - STHDX: "sthdx", - STWDX: "stwdx", - STDDX: "stddx", - STFDDX: "stfddx", - DSN: "dsn", - ECIWX: "eciwx", - ECOWX: "ecowx", - RFID: "rfid", - HRFID: "hrfid", - DOZE: "doze", - NAP: "nap", - SLEEP: "sleep", - RVWINKLE: "rvwinkle", - LBZCIX: "lbzcix", - LWZCIX: "lwzcix", - LHZCIX: "lhzcix", - LDCIX: "ldcix", - STBCIX: "stbcix", - STWCIX: "stwcix", - STHCIX: "sthcix", - STDCIX: "stdcix", - TRECLAIMCC: "treclaim.", - TRECHKPTCC: "trechkpt.", - MTMSR: "mtmsr", - MTMSRD: "mtmsrd", - MFMSR: "mfmsr", - SLBIE: "slbie", - SLBIA: "slbia", - SLBMTE: "slbmte", - SLBMFEV: "slbmfev", - SLBMFEE: "slbmfee", - SLBFEECC: "slbfee.", - MTSR: "mtsr", - MTSRIN: "mtsrin", - MFSR: "mfsr", - MFSRIN: "mfsrin", - TLBIE: "tlbie", - TLBIEL: "tlbiel", - TLBIA: "tlbia", - TLBSYNC: "tlbsync", - MSGSND: "msgsnd", - MSGCLR: "msgclr", - MSGSNDP: "msgsndp", - MSGCLRP: "msgclrp", - MTTMR: "mttmr", - RFI: "rfi", - RFCI: "rfci", - RFDI: "rfdi", - RFMCI: "rfmci", - RFGI: "rfgi", - EHPRIV: "ehpriv", - MTDCR: "mtdcr", - MTDCRX: "mtdcrx", - MFDCR: "mfdcr", - MFDCRX: "mfdcrx", - WRTEE: "wrtee", - WRTEEI: "wrteei", - LBEPX: "lbepx", - LHEPX: "lhepx", - LWEPX: "lwepx", - LDEPX: "ldepx", - STBEPX: "stbepx", - STHEPX: "sthepx", - STWEPX: "stwepx", - STDEPX: "stdepx", - DCBSTEP: "dcbstep", - DCBTEP: "dcbtep", - DCBFEP: "dcbfep", - DCBTSTEP: "dcbtstep", - ICBIEP: "icbiep", - DCBZEP: "dcbzep", - LFDEPX: "lfdepx", - STFDEPX: "stfdepx", - EVLDDEPX: "evlddepx", - EVSTDDEPX: "evstddepx", - LVEPX: "lvepx", - LVEPXL: "lvepxl", - STVEPX: "stvepx", - STVEPXL: "stvepxl", - DCBI: "dcbi", - DCBLQCC: "dcblq.", - ICBLQCC: "icblq.", - DCBTLS: "dcbtls", - DCBTSTLS: "dcbtstls", - ICBTLS: "icbtls", - ICBLC: "icblc", - DCBLC: "dcblc", - TLBIVAX: "tlbivax", - TLBILX: "tlbilx", - TLBSX: "tlbsx", - TLBSRXCC: "tlbsrx.", - TLBRE: "tlbre", - TLBWE: "tlbwe", - DNH: "dnh", - DCI: "dci", - ICI: "ici", - DCREAD: "dcread", - ICREAD: "icread", - MFPMR: "mfpmr", - MTPMR: "mtpmr", - ADDEX: "addex", - DARN: "darn", - MADDHD: "maddhd", - MADDHDU: "maddhdu", - MADDLD: "maddld", - CMPRB: "cmprb", - CMPEQB: "cmpeqb", - EXTSWSLI: "extswsli", - EXTSWSLICC: "extswsli.", - MFVSRLD: "mfvsrld", - MTVSRDD: "mtvsrdd", - MTVSRWS: "mtvsrws", - MCRXRX: "mcrxrx", - COPY: "copy", - PASTECC: "paste.", + HASHCHK: "hashchk", + HASHCHKP: "hashchkp", + HASHST: "hashst", + HASHSTP: "hashstp", + BRD: "brd", + BRH: "brh", + BRW: "brw", + CFUGED: "cfuged", + CNTLZDM: "cntlzdm", + CNTTZDM: "cnttzdm", + DCFFIXQQ: "dcffixqq", + DCTFIXQQ: "dctfixqq", + LXVKQ: "lxvkq", + LXVP: "lxvp", + LXVPX: "lxvpx", + LXVRBX: "lxvrbx", + LXVRDX: "lxvrdx", + LXVRHX: "lxvrhx", + LXVRWX: "lxvrwx", + MTVSRBM: "mtvsrbm", + MTVSRBMI: "mtvsrbmi", + MTVSRDM: "mtvsrdm", + MTVSRHM: "mtvsrhm", + MTVSRQM: "mtvsrqm", + MTVSRWM: "mtvsrwm", + PADDI: "paddi", + PDEPD: "pdepd", + PEXTD: "pextd", + PLBZ: "plbz", + PLD: "pld", + PLFD: "plfd", + PLFS: "plfs", + PLHA: "plha", + PLHZ: "plhz", + PLQ: "plq", + PLWA: "plwa", + PLWZ: "plwz", + PLXSD: "plxsd", + PLXSSP: "plxssp", + PLXV: "plxv", + PLXVP: "plxvp", + PMXVBF16GER2: "pmxvbf16ger2", + PMXVBF16GER2NN: "pmxvbf16ger2nn", + PMXVBF16GER2NP: "pmxvbf16ger2np", + PMXVBF16GER2PN: "pmxvbf16ger2pn", + PMXVBF16GER2PP: "pmxvbf16ger2pp", + PMXVF16GER2: "pmxvf16ger2", + PMXVF16GER2NN: "pmxvf16ger2nn", + PMXVF16GER2NP: "pmxvf16ger2np", + PMXVF16GER2PN: "pmxvf16ger2pn", + PMXVF16GER2PP: "pmxvf16ger2pp", + PMXVF32GER: "pmxvf32ger", + PMXVF32GERNN: "pmxvf32gernn", + PMXVF32GERNP: "pmxvf32gernp", + PMXVF32GERPN: "pmxvf32gerpn", + PMXVF32GERPP: "pmxvf32gerpp", + PMXVF64GER: "pmxvf64ger", + PMXVF64GERNN: "pmxvf64gernn", + PMXVF64GERNP: "pmxvf64gernp", + PMXVF64GERPN: "pmxvf64gerpn", + PMXVF64GERPP: "pmxvf64gerpp", + PMXVI16GER2: "pmxvi16ger2", + PMXVI16GER2PP: "pmxvi16ger2pp", + PMXVI16GER2S: "pmxvi16ger2s", + PMXVI16GER2SPP: "pmxvi16ger2spp", + PMXVI4GER8: "pmxvi4ger8", + PMXVI4GER8PP: "pmxvi4ger8pp", + PMXVI8GER4: "pmxvi8ger4", + PMXVI8GER4PP: "pmxvi8ger4pp", + PMXVI8GER4SPP: "pmxvi8ger4spp", + PNOP: "pnop", + PSTB: "pstb", + PSTD: "pstd", + PSTFD: "pstfd", + PSTFS: "pstfs", + PSTH: "psth", + PSTQ: "pstq", + PSTW: "pstw", + PSTXSD: "pstxsd", + PSTXSSP: "pstxssp", + PSTXV: "pstxv", + PSTXVP: "pstxvp", + SETBC: "setbc", + SETBCR: "setbcr", + SETNBC: "setnbc", + SETNBCR: "setnbcr", + STXVP: "stxvp", + STXVPX: "stxvpx", + STXVRBX: "stxvrbx", + STXVRDX: "stxvrdx", + STXVRHX: "stxvrhx", + STXVRWX: "stxvrwx", + VCFUGED: "vcfuged", + VCLRLB: "vclrlb", + VCLRRB: "vclrrb", + VCLZDM: "vclzdm", + VCMPEQUQ: "vcmpequq", + VCMPEQUQCC: "vcmpequq.", + VCMPGTSQ: "vcmpgtsq", + VCMPGTSQCC: "vcmpgtsq.", + VCMPGTUQ: "vcmpgtuq", + VCMPGTUQCC: "vcmpgtuq.", + VCMPSQ: "vcmpsq", + VCMPUQ: "vcmpuq", + VCNTMBB: "vcntmbb", + VCNTMBD: "vcntmbd", + VCNTMBH: "vcntmbh", + VCNTMBW: "vcntmbw", + VCTZDM: "vctzdm", + VDIVESD: "vdivesd", + VDIVESQ: "vdivesq", + VDIVESW: "vdivesw", + VDIVEUD: "vdiveud", + VDIVEUQ: "vdiveuq", + VDIVEUW: "vdiveuw", + VDIVSD: "vdivsd", + VDIVSQ: "vdivsq", + VDIVSW: "vdivsw", + VDIVUD: "vdivud", + VDIVUQ: "vdivuq", + VDIVUW: "vdivuw", + VEXPANDBM: "vexpandbm", + VEXPANDDM: "vexpanddm", + VEXPANDHM: "vexpandhm", + VEXPANDQM: "vexpandqm", + VEXPANDWM: "vexpandwm", + VEXTDDVLX: "vextddvlx", + VEXTDDVRX: "vextddvrx", + VEXTDUBVLX: "vextdubvlx", + VEXTDUBVRX: "vextdubvrx", + VEXTDUHVLX: "vextduhvlx", + VEXTDUHVRX: "vextduhvrx", + VEXTDUWVLX: "vextduwvlx", + VEXTDUWVRX: "vextduwvrx", + VEXTRACTBM: "vextractbm", + VEXTRACTDM: "vextractdm", + VEXTRACTHM: "vextracthm", + VEXTRACTQM: "vextractqm", + VEXTRACTWM: "vextractwm", + VEXTSD2Q: "vextsd2q", + VGNB: "vgnb", + VINSBLX: "vinsblx", + VINSBRX: "vinsbrx", + VINSBVLX: "vinsbvlx", + VINSBVRX: "vinsbvrx", + VINSD: "vinsd", + VINSDLX: "vinsdlx", + VINSDRX: "vinsdrx", + VINSHLX: "vinshlx", + VINSHRX: "vinshrx", + VINSHVLX: "vinshvlx", + VINSHVRX: "vinshvrx", + VINSW: "vinsw", + VINSWLX: "vinswlx", + VINSWRX: "vinswrx", + VINSWVLX: "vinswvlx", + VINSWVRX: "vinswvrx", + VMODSD: "vmodsd", + VMODSQ: "vmodsq", + VMODSW: "vmodsw", + VMODUD: "vmodud", + VMODUQ: "vmoduq", + VMODUW: "vmoduw", + VMSUMCUD: "vmsumcud", + VMULESD: "vmulesd", + VMULEUD: "vmuleud", + VMULHSD: "vmulhsd", + VMULHSW: "vmulhsw", + VMULHUD: "vmulhud", + VMULHUW: "vmulhuw", + VMULLD: "vmulld", + VMULOSD: "vmulosd", + VMULOUD: "vmuloud", + VPDEPD: "vpdepd", + VPEXTD: "vpextd", + VRLQ: "vrlq", + VRLQMI: "vrlqmi", + VRLQNM: "vrlqnm", + VSLDBI: "vsldbi", + VSLQ: "vslq", + VSRAQ: "vsraq", + VSRDBI: "vsrdbi", + VSRQ: "vsrq", + VSTRIBL: "vstribl", + VSTRIBLCC: "vstribl.", + VSTRIBR: "vstribr", + VSTRIBRCC: "vstribr.", + VSTRIHL: "vstrihl", + VSTRIHLCC: "vstrihl.", + VSTRIHR: "vstrihr", + VSTRIHRCC: "vstrihr.", + XSCMPEQQP: "xscmpeqqp", + XSCMPGEQP: "xscmpgeqp", + XSCMPGTQP: "xscmpgtqp", + XSCVQPSQZ: "xscvqpsqz", + XSCVQPUQZ: "xscvqpuqz", + XSCVSQQP: "xscvsqqp", + XSCVUQQP: "xscvuqqp", + XSMAXCQP: "xsmaxcqp", + XSMINCQP: "xsmincqp", + XVBF16GER2: "xvbf16ger2", + XVBF16GER2NN: "xvbf16ger2nn", + XVBF16GER2NP: "xvbf16ger2np", + XVBF16GER2PN: "xvbf16ger2pn", + XVBF16GER2PP: "xvbf16ger2pp", + XVCVBF16SPN: "xvcvbf16spn", + XVCVSPBF16: "xvcvspbf16", + XVF16GER2: "xvf16ger2", + XVF16GER2NN: "xvf16ger2nn", + XVF16GER2NP: "xvf16ger2np", + XVF16GER2PN: "xvf16ger2pn", + XVF16GER2PP: "xvf16ger2pp", + XVF32GER: "xvf32ger", + XVF32GERNN: "xvf32gernn", + XVF32GERNP: "xvf32gernp", + XVF32GERPN: "xvf32gerpn", + XVF32GERPP: "xvf32gerpp", + XVF64GER: "xvf64ger", + XVF64GERNN: "xvf64gernn", + XVF64GERNP: "xvf64gernp", + XVF64GERPN: "xvf64gerpn", + XVF64GERPP: "xvf64gerpp", + XVI16GER2: "xvi16ger2", + XVI16GER2PP: "xvi16ger2pp", + XVI16GER2S: "xvi16ger2s", + XVI16GER2SPP: "xvi16ger2spp", + XVI4GER8: "xvi4ger8", + XVI4GER8PP: "xvi4ger8pp", + XVI8GER4: "xvi8ger4", + XVI8GER4PP: "xvi8ger4pp", + XVI8GER4SPP: "xvi8ger4spp", + XVTLSBB: "xvtlsbb", + XXBLENDVB: "xxblendvb", + XXBLENDVD: "xxblendvd", + XXBLENDVH: "xxblendvh", + XXBLENDVW: "xxblendvw", + XXEVAL: "xxeval", + XXGENPCVBM: "xxgenpcvbm", + XXGENPCVDM: "xxgenpcvdm", + XXGENPCVHM: "xxgenpcvhm", + XXGENPCVWM: "xxgenpcvwm", + XXMFACC: "xxmfacc", + XXMTACC: "xxmtacc", + XXPERMX: "xxpermx", + XXSETACCZ: "xxsetaccz", + XXSPLTI32DX: "xxsplti32dx", + XXSPLTIDP: "xxspltidp", + XXSPLTIW: "xxspltiw", + MSGCLRU: "msgclru", + MSGSNDU: "msgsndu", + URFID: "urfid", + ADDEX: "addex", + MFFSCDRN: "mffscdrn", + MFFSCDRNI: "mffscdrni", + MFFSCE: "mffsce", + MFFSCRN: "mffscrn", + MFFSCRNI: "mffscrni", + MFFSL: "mffsl", + SLBIAG: "slbiag", + VMSUMUDM: "vmsumudm", + ADDPCIS: "addpcis", + BCDCFNCC: "bcdcfn.", + BCDCFSQCC: "bcdcfsq.", + BCDCFZCC: "bcdcfz.", + BCDCPSGNCC: "bcdcpsgn.", + BCDCTNCC: "bcdctn.", + BCDCTSQCC: "bcdctsq.", + BCDCTZCC: "bcdctz.", + BCDSCC: "bcds.", + BCDSETSGNCC: "bcdsetsgn.", + BCDSRCC: "bcdsr.", + BCDTRUNCCC: "bcdtrunc.", + BCDUSCC: "bcdus.", + BCDUTRUNCCC: "bcdutrunc.", + CMPEQB: "cmpeqb", + CMPRB: "cmprb", + CNTTZD: "cnttzd", + CNTTZDCC: "cnttzd.", + CNTTZW: "cnttzw", + CNTTZWCC: "cnttzw.", + COPY: "copy", + CPABORT: "cpabort", + DARN: "darn", + DTSTSFI: "dtstsfi", + DTSTSFIQ: "dtstsfiq", + EXTSWSLI: "extswsli", + EXTSWSLICC: "extswsli.", + LDAT: "ldat", + LWAT: "lwat", + LXSD: "lxsd", + LXSIBZX: "lxsibzx", + LXSIHZX: "lxsihzx", + LXSSP: "lxssp", + LXV: "lxv", + LXVB16X: "lxvb16x", + LXVH8X: "lxvh8x", + LXVL: "lxvl", + LXVLL: "lxvll", + LXVWSX: "lxvwsx", + LXVX: "lxvx", + MADDHD: "maddhd", + MADDHDU: "maddhdu", + MADDLD: "maddld", + MCRXRX: "mcrxrx", + MFVSRLD: "mfvsrld", + MODSD: "modsd", + MODSW: "modsw", + MODUD: "modud", + MODUW: "moduw", + MSGSYNC: "msgsync", + MTVSRDD: "mtvsrdd", + MTVSRWS: "mtvsrws", + PASTECC: "paste.", + SETB: "setb", + SLBIEG: "slbieg", + SLBSYNC: "slbsync", + STDAT: "stdat", + STOP: "stop", + STWAT: "stwat", + STXSD: "stxsd", + STXSIBX: "stxsibx", + STXSIHX: "stxsihx", + STXSSP: "stxssp", + STXV: "stxv", + STXVB16X: "stxvb16x", + STXVH8X: "stxvh8x", + STXVL: "stxvl", + STXVLL: "stxvll", + STXVX: "stxvx", + VABSDUB: "vabsdub", + VABSDUH: "vabsduh", + VABSDUW: "vabsduw", + VBPERMD: "vbpermd", + VCLZLSBB: "vclzlsbb", + VCMPNEB: "vcmpneb", + VCMPNEBCC: "vcmpneb.", + VCMPNEH: "vcmpneh", + VCMPNEHCC: "vcmpneh.", + VCMPNEW: "vcmpnew", + VCMPNEWCC: "vcmpnew.", + VCMPNEZB: "vcmpnezb", + VCMPNEZBCC: "vcmpnezb.", + VCMPNEZH: "vcmpnezh", + VCMPNEZHCC: "vcmpnezh.", + VCMPNEZW: "vcmpnezw", + VCMPNEZWCC: "vcmpnezw.", + VCTZB: "vctzb", + VCTZD: "vctzd", + VCTZH: "vctzh", + VCTZLSBB: "vctzlsbb", + VCTZW: "vctzw", + VEXTRACTD: "vextractd", + VEXTRACTUB: "vextractub", + VEXTRACTUH: "vextractuh", + VEXTRACTUW: "vextractuw", + VEXTSB2D: "vextsb2d", + VEXTSB2W: "vextsb2w", + VEXTSH2D: "vextsh2d", + VEXTSH2W: "vextsh2w", + VEXTSW2D: "vextsw2d", + VEXTUBLX: "vextublx", + VEXTUBRX: "vextubrx", + VEXTUHLX: "vextuhlx", + VEXTUHRX: "vextuhrx", + VEXTUWLX: "vextuwlx", + VEXTUWRX: "vextuwrx", + VINSERTB: "vinsertb", + VINSERTD: "vinsertd", + VINSERTH: "vinserth", + VINSERTW: "vinsertw", + VMUL10CUQ: "vmul10cuq", + VMUL10ECUQ: "vmul10ecuq", + VMUL10EUQ: "vmul10euq", + VMUL10UQ: "vmul10uq", + VNEGD: "vnegd", + VNEGW: "vnegw", + VPERMR: "vpermr", + VPRTYBD: "vprtybd", + VPRTYBQ: "vprtybq", + VPRTYBW: "vprtybw", + VRLDMI: "vrldmi", + VRLDNM: "vrldnm", + VRLWMI: "vrlwmi", + VRLWNM: "vrlwnm", + VSLV: "vslv", + VSRV: "vsrv", + WAIT: "wait", + XSABSQP: "xsabsqp", + XSADDQP: "xsaddqp", + XSADDQPO: "xsaddqpo", + XSCMPEQDP: "xscmpeqdp", + XSCMPEXPDP: "xscmpexpdp", + XSCMPEXPQP: "xscmpexpqp", + XSCMPGEDP: "xscmpgedp", + XSCMPGTDP: "xscmpgtdp", + XSCMPOQP: "xscmpoqp", + XSCMPUQP: "xscmpuqp", + XSCPSGNQP: "xscpsgnqp", + XSCVDPHP: "xscvdphp", + XSCVDPQP: "xscvdpqp", + XSCVHPDP: "xscvhpdp", + XSCVQPDP: "xscvqpdp", + XSCVQPDPO: "xscvqpdpo", + XSCVQPSDZ: "xscvqpsdz", + XSCVQPSWZ: "xscvqpswz", + XSCVQPUDZ: "xscvqpudz", + XSCVQPUWZ: "xscvqpuwz", + XSCVSDQP: "xscvsdqp", + XSCVUDQP: "xscvudqp", + XSDIVQP: "xsdivqp", + XSDIVQPO: "xsdivqpo", + XSIEXPDP: "xsiexpdp", + XSIEXPQP: "xsiexpqp", + XSMADDQP: "xsmaddqp", + XSMADDQPO: "xsmaddqpo", + XSMAXCDP: "xsmaxcdp", + XSMAXJDP: "xsmaxjdp", + XSMINCDP: "xsmincdp", + XSMINJDP: "xsminjdp", + XSMSUBQP: "xsmsubqp", + XSMSUBQPO: "xsmsubqpo", + XSMULQP: "xsmulqp", + XSMULQPO: "xsmulqpo", + XSNABSQP: "xsnabsqp", + XSNEGQP: "xsnegqp", + XSNMADDQP: "xsnmaddqp", + XSNMADDQPO: "xsnmaddqpo", + XSNMSUBQP: "xsnmsubqp", + XSNMSUBQPO: "xsnmsubqpo", + XSRQPI: "xsrqpi", + XSRQPIX: "xsrqpix", + XSRQPXP: "xsrqpxp", + XSSQRTQP: "xssqrtqp", + XSSQRTQPO: "xssqrtqpo", + XSSUBQP: "xssubqp", + XSSUBQPO: "xssubqpo", + XSTSTDCDP: "xststdcdp", + XSTSTDCQP: "xststdcqp", + XSTSTDCSP: "xststdcsp", + XSXEXPDP: "xsxexpdp", + XSXEXPQP: "xsxexpqp", + XSXSIGDP: "xsxsigdp", + XSXSIGQP: "xsxsigqp", + XVCVHPSP: "xvcvhpsp", + XVCVSPHP: "xvcvsphp", + XVIEXPDP: "xviexpdp", + XVIEXPSP: "xviexpsp", + XVTSTDCDP: "xvtstdcdp", + XVTSTDCSP: "xvtstdcsp", + XVXEXPDP: "xvxexpdp", + XVXEXPSP: "xvxexpsp", + XVXSIGDP: "xvxsigdp", + XVXSIGSP: "xvxsigsp", + XXBRD: "xxbrd", + XXBRH: "xxbrh", + XXBRQ: "xxbrq", + XXBRW: "xxbrw", + XXEXTRACTUW: "xxextractuw", + XXINSERTW: "xxinsertw", + XXPERM: "xxperm", + XXPERMR: "xxpermr", + XXSPLTIB: "xxspltib", + BCDADDCC: "bcdadd.", + BCDSUBCC: "bcdsub.", + BCTAR: "bctar", + BCTARL: "bctarl", + CLRBHRB: "clrbhrb", + FMRGEW: "fmrgew", + FMRGOW: "fmrgow", + ICBT: "icbt", + LQARX: "lqarx", + LXSIWAX: "lxsiwax", + LXSIWZX: "lxsiwzx", + LXSSPX: "lxsspx", + MFBHRBE: "mfbhrbe", + MFVSRD: "mfvsrd", + MFVSRWZ: "mfvsrwz", + MSGCLR: "msgclr", + MSGCLRP: "msgclrp", + MSGSND: "msgsnd", + MSGSNDP: "msgsndp", + MTVSRD: "mtvsrd", + MTVSRWA: "mtvsrwa", + MTVSRWZ: "mtvsrwz", + RFEBB: "rfebb", + STQCXCC: "stqcx.", + STXSIWX: "stxsiwx", + STXSSPX: "stxsspx", + VADDCUQ: "vaddcuq", + VADDECUQ: "vaddecuq", + VADDEUQM: "vaddeuqm", + VADDUDM: "vaddudm", + VADDUQM: "vadduqm", + VBPERMQ: "vbpermq", + VCIPHER: "vcipher", + VCIPHERLAST: "vcipherlast", + VCLZB: "vclzb", + VCLZD: "vclzd", + VCLZH: "vclzh", + VCLZW: "vclzw", + VCMPEQUD: "vcmpequd", + VCMPEQUDCC: "vcmpequd.", + VCMPGTSD: "vcmpgtsd", + VCMPGTSDCC: "vcmpgtsd.", + VCMPGTUD: "vcmpgtud", + VCMPGTUDCC: "vcmpgtud.", + VEQV: "veqv", + VGBBD: "vgbbd", + VMAXSD: "vmaxsd", + VMAXUD: "vmaxud", + VMINSD: "vminsd", + VMINUD: "vminud", + VMRGEW: "vmrgew", + VMRGOW: "vmrgow", + VMULESW: "vmulesw", + VMULEUW: "vmuleuw", + VMULOSW: "vmulosw", + VMULOUW: "vmulouw", + VMULUWM: "vmuluwm", + VNAND: "vnand", + VNCIPHER: "vncipher", + VNCIPHERLAST: "vncipherlast", + VORC: "vorc", + VPERMXOR: "vpermxor", + VPKSDSS: "vpksdss", + VPKSDUS: "vpksdus", + VPKUDUM: "vpkudum", + VPKUDUS: "vpkudus", + VPMSUMB: "vpmsumb", + VPMSUMD: "vpmsumd", + VPMSUMH: "vpmsumh", + VPMSUMW: "vpmsumw", + VPOPCNTB: "vpopcntb", + VPOPCNTD: "vpopcntd", + VPOPCNTH: "vpopcnth", + VPOPCNTW: "vpopcntw", + VRLD: "vrld", + VSBOX: "vsbox", + VSHASIGMAD: "vshasigmad", + VSHASIGMAW: "vshasigmaw", + VSLD: "vsld", + VSRAD: "vsrad", + VSRD: "vsrd", + VSUBCUQ: "vsubcuq", + VSUBECUQ: "vsubecuq", + VSUBEUQM: "vsubeuqm", + VSUBUDM: "vsubudm", + VSUBUQM: "vsubuqm", + VUPKHSW: "vupkhsw", + VUPKLSW: "vupklsw", + XSADDSP: "xsaddsp", + XSCVDPSPN: "xscvdpspn", + XSCVSPDPN: "xscvspdpn", + XSCVSXDSP: "xscvsxdsp", + XSCVUXDSP: "xscvuxdsp", + XSDIVSP: "xsdivsp", + XSMADDASP: "xsmaddasp", + XSMADDMSP: "xsmaddmsp", + XSMSUBASP: "xsmsubasp", + XSMSUBMSP: "xsmsubmsp", + XSMULSP: "xsmulsp", + XSNMADDASP: "xsnmaddasp", + XSNMADDMSP: "xsnmaddmsp", + XSNMSUBASP: "xsnmsubasp", + XSNMSUBMSP: "xsnmsubmsp", + XSRESP: "xsresp", + XSRSP: "xsrsp", + XSRSQRTESP: "xsrsqrtesp", + XSSQRTSP: "xssqrtsp", + XSSUBSP: "xssubsp", + XXLEQV: "xxleqv", + XXLNAND: "xxlnand", + XXLORC: "xxlorc", + ADDG6S: "addg6s", + BPERMD: "bpermd", + CBCDTD: "cbcdtd", + CDTBCD: "cdtbcd", + DCFFIX: "dcffix", + DCFFIXCC: "dcffix.", + DIVDE: "divde", + DIVDECC: "divde.", + DIVDEO: "divdeo", + DIVDEOCC: "divdeo.", + DIVDEU: "divdeu", + DIVDEUCC: "divdeu.", + DIVDEUO: "divdeuo", + DIVDEUOCC: "divdeuo.", + DIVWE: "divwe", + DIVWECC: "divwe.", + DIVWEO: "divweo", + DIVWEOCC: "divweo.", + DIVWEU: "divweu", + DIVWEUCC: "divweu.", + DIVWEUO: "divweuo", + DIVWEUOCC: "divweuo.", + FCFIDS: "fcfids", + FCFIDSCC: "fcfids.", + FCFIDU: "fcfidu", + FCFIDUCC: "fcfidu.", + FCFIDUS: "fcfidus", + FCFIDUSCC: "fcfidus.", + FCTIDU: "fctidu", + FCTIDUCC: "fctidu.", + FCTIDUZ: "fctiduz", + FCTIDUZCC: "fctiduz.", + FCTIWU: "fctiwu", + FCTIWUCC: "fctiwu.", + FCTIWUZ: "fctiwuz", + FCTIWUZCC: "fctiwuz.", + FTDIV: "ftdiv", + FTSQRT: "ftsqrt", + LBARX: "lbarx", + LDBRX: "ldbrx", + LFIWZX: "lfiwzx", + LHARX: "lharx", + LXSDX: "lxsdx", + LXVD2X: "lxvd2x", + LXVDSX: "lxvdsx", + LXVW4X: "lxvw4x", + POPCNTD: "popcntd", + POPCNTW: "popcntw", + STBCXCC: "stbcx.", + STDBRX: "stdbrx", + STHCXCC: "sthcx.", + STXSDX: "stxsdx", + STXVD2X: "stxvd2x", + STXVW4X: "stxvw4x", + XSABSDP: "xsabsdp", + XSADDDP: "xsadddp", + XSCMPODP: "xscmpodp", + XSCMPUDP: "xscmpudp", + XSCPSGNDP: "xscpsgndp", + XSCVDPSP: "xscvdpsp", + XSCVDPSXDS: "xscvdpsxds", + XSCVDPSXWS: "xscvdpsxws", + XSCVDPUXDS: "xscvdpuxds", + XSCVDPUXWS: "xscvdpuxws", + XSCVSPDP: "xscvspdp", + XSCVSXDDP: "xscvsxddp", + XSCVUXDDP: "xscvuxddp", + XSDIVDP: "xsdivdp", + XSMADDADP: "xsmaddadp", + XSMADDMDP: "xsmaddmdp", + XSMAXDP: "xsmaxdp", + XSMINDP: "xsmindp", + XSMSUBADP: "xsmsubadp", + XSMSUBMDP: "xsmsubmdp", + XSMULDP: "xsmuldp", + XSNABSDP: "xsnabsdp", + XSNEGDP: "xsnegdp", + XSNMADDADP: "xsnmaddadp", + XSNMADDMDP: "xsnmaddmdp", + XSNMSUBADP: "xsnmsubadp", + XSNMSUBMDP: "xsnmsubmdp", + XSRDPI: "xsrdpi", + XSRDPIC: "xsrdpic", + XSRDPIM: "xsrdpim", + XSRDPIP: "xsrdpip", + XSRDPIZ: "xsrdpiz", + XSREDP: "xsredp", + XSRSQRTEDP: "xsrsqrtedp", + XSSQRTDP: "xssqrtdp", + XSSUBDP: "xssubdp", + XSTDIVDP: "xstdivdp", + XSTSQRTDP: "xstsqrtdp", + XVABSDP: "xvabsdp", + XVABSSP: "xvabssp", + XVADDDP: "xvadddp", + XVADDSP: "xvaddsp", + XVCMPEQDP: "xvcmpeqdp", + XVCMPEQDPCC: "xvcmpeqdp.", + XVCMPEQSP: "xvcmpeqsp", + XVCMPEQSPCC: "xvcmpeqsp.", + XVCMPGEDP: "xvcmpgedp", + XVCMPGEDPCC: "xvcmpgedp.", + XVCMPGESP: "xvcmpgesp", + XVCMPGESPCC: "xvcmpgesp.", + XVCMPGTDP: "xvcmpgtdp", + XVCMPGTDPCC: "xvcmpgtdp.", + XVCMPGTSP: "xvcmpgtsp", + XVCMPGTSPCC: "xvcmpgtsp.", + XVCPSGNDP: "xvcpsgndp", + XVCPSGNSP: "xvcpsgnsp", + XVCVDPSP: "xvcvdpsp", + XVCVDPSXDS: "xvcvdpsxds", + XVCVDPSXWS: "xvcvdpsxws", + XVCVDPUXDS: "xvcvdpuxds", + XVCVDPUXWS: "xvcvdpuxws", + XVCVSPDP: "xvcvspdp", + XVCVSPSXDS: "xvcvspsxds", + XVCVSPSXWS: "xvcvspsxws", + XVCVSPUXDS: "xvcvspuxds", + XVCVSPUXWS: "xvcvspuxws", + XVCVSXDDP: "xvcvsxddp", + XVCVSXDSP: "xvcvsxdsp", + XVCVSXWDP: "xvcvsxwdp", + XVCVSXWSP: "xvcvsxwsp", + XVCVUXDDP: "xvcvuxddp", + XVCVUXDSP: "xvcvuxdsp", + XVCVUXWDP: "xvcvuxwdp", + XVCVUXWSP: "xvcvuxwsp", + XVDIVDP: "xvdivdp", + XVDIVSP: "xvdivsp", + XVMADDADP: "xvmaddadp", + XVMADDASP: "xvmaddasp", + XVMADDMDP: "xvmaddmdp", + XVMADDMSP: "xvmaddmsp", + XVMAXDP: "xvmaxdp", + XVMAXSP: "xvmaxsp", + XVMINDP: "xvmindp", + XVMINSP: "xvminsp", + XVMSUBADP: "xvmsubadp", + XVMSUBASP: "xvmsubasp", + XVMSUBMDP: "xvmsubmdp", + XVMSUBMSP: "xvmsubmsp", + XVMULDP: "xvmuldp", + XVMULSP: "xvmulsp", + XVNABSDP: "xvnabsdp", + XVNABSSP: "xvnabssp", + XVNEGDP: "xvnegdp", + XVNEGSP: "xvnegsp", + XVNMADDADP: "xvnmaddadp", + XVNMADDASP: "xvnmaddasp", + XVNMADDMDP: "xvnmaddmdp", + XVNMADDMSP: "xvnmaddmsp", + XVNMSUBADP: "xvnmsubadp", + XVNMSUBASP: "xvnmsubasp", + XVNMSUBMDP: "xvnmsubmdp", + XVNMSUBMSP: "xvnmsubmsp", + XVRDPI: "xvrdpi", + XVRDPIC: "xvrdpic", + XVRDPIM: "xvrdpim", + XVRDPIP: "xvrdpip", + XVRDPIZ: "xvrdpiz", + XVREDP: "xvredp", + XVRESP: "xvresp", + XVRSPI: "xvrspi", + XVRSPIC: "xvrspic", + XVRSPIM: "xvrspim", + XVRSPIP: "xvrspip", + XVRSPIZ: "xvrspiz", + XVRSQRTEDP: "xvrsqrtedp", + XVRSQRTESP: "xvrsqrtesp", + XVSQRTDP: "xvsqrtdp", + XVSQRTSP: "xvsqrtsp", + XVSUBDP: "xvsubdp", + XVSUBSP: "xvsubsp", + XVTDIVDP: "xvtdivdp", + XVTDIVSP: "xvtdivsp", + XVTSQRTDP: "xvtsqrtdp", + XVTSQRTSP: "xvtsqrtsp", + XXLAND: "xxland", + XXLANDC: "xxlandc", + XXLNOR: "xxlnor", + XXLOR: "xxlor", + XXLXOR: "xxlxor", + XXMRGHW: "xxmrghw", + XXMRGLW: "xxmrglw", + XXPERMDI: "xxpermdi", + XXSEL: "xxsel", + XXSLDWI: "xxsldwi", + XXSPLTW: "xxspltw", + CMPB: "cmpb", + DADD: "dadd", + DADDCC: "dadd.", + DADDQ: "daddq", + DADDQCC: "daddq.", + DCFFIXQ: "dcffixq", + DCFFIXQCC: "dcffixq.", + DCMPO: "dcmpo", + DCMPOQ: "dcmpoq", + DCMPU: "dcmpu", + DCMPUQ: "dcmpuq", + DCTDP: "dctdp", + DCTDPCC: "dctdp.", + DCTFIX: "dctfix", + DCTFIXCC: "dctfix.", + DCTFIXQ: "dctfixq", + DCTFIXQCC: "dctfixq.", + DCTQPQ: "dctqpq", + DCTQPQCC: "dctqpq.", + DDEDPD: "ddedpd", + DDEDPDCC: "ddedpd.", + DDEDPDQ: "ddedpdq", + DDEDPDQCC: "ddedpdq.", + DDIV: "ddiv", + DDIVCC: "ddiv.", + DDIVQ: "ddivq", + DDIVQCC: "ddivq.", + DENBCD: "denbcd", + DENBCDCC: "denbcd.", + DENBCDQ: "denbcdq", + DENBCDQCC: "denbcdq.", + DIEX: "diex", + DIEXCC: "diex.", + DIEXQCC: "diexq.", + DIEXQ: "diexq", + DMUL: "dmul", + DMULCC: "dmul.", + DMULQ: "dmulq", + DMULQCC: "dmulq.", + DQUA: "dqua", + DQUACC: "dqua.", + DQUAI: "dquai", + DQUAICC: "dquai.", + DQUAIQ: "dquaiq", + DQUAIQCC: "dquaiq.", + DQUAQ: "dquaq", + DQUAQCC: "dquaq.", + DRDPQ: "drdpq", + DRDPQCC: "drdpq.", + DRINTN: "drintn", + DRINTNCC: "drintn.", + DRINTNQ: "drintnq", + DRINTNQCC: "drintnq.", + DRINTX: "drintx", + DRINTXCC: "drintx.", + DRINTXQ: "drintxq", + DRINTXQCC: "drintxq.", + DRRND: "drrnd", + DRRNDCC: "drrnd.", + DRRNDQ: "drrndq", + DRRNDQCC: "drrndq.", + DRSP: "drsp", + DRSPCC: "drsp.", + DSCLI: "dscli", + DSCLICC: "dscli.", + DSCLIQ: "dscliq", + DSCLIQCC: "dscliq.", + DSCRI: "dscri", + DSCRICC: "dscri.", + DSCRIQ: "dscriq", + DSCRIQCC: "dscriq.", + DSUB: "dsub", + DSUBCC: "dsub.", + DSUBQ: "dsubq", + DSUBQCC: "dsubq.", + DTSTDC: "dtstdc", + DTSTDCQ: "dtstdcq", + DTSTDG: "dtstdg", + DTSTDGQ: "dtstdgq", + DTSTEX: "dtstex", + DTSTEXQ: "dtstexq", + DTSTSF: "dtstsf", + DTSTSFQ: "dtstsfq", + DXEX: "dxex", + DXEXCC: "dxex.", + DXEXQ: "dxexq", + DXEXQCC: "dxexq.", + FCPSGN: "fcpsgn", + FCPSGNCC: "fcpsgn.", + LBZCIX: "lbzcix", + LDCIX: "ldcix", + LFDP: "lfdp", + LFDPX: "lfdpx", + LFIWAX: "lfiwax", + LHZCIX: "lhzcix", + LWZCIX: "lwzcix", + PRTYD: "prtyd", + PRTYW: "prtyw", + SLBFEECC: "slbfee.", + STBCIX: "stbcix", + STDCIX: "stdcix", + STFDP: "stfdp", + STFDPX: "stfdpx", + STHCIX: "sthcix", + STWCIX: "stwcix", + ISEL: "isel", + LVEBX: "lvebx", + LVEHX: "lvehx", + LVEWX: "lvewx", + LVSL: "lvsl", + LVSR: "lvsr", + LVX: "lvx", + LVXL: "lvxl", + MFVSCR: "mfvscr", + MTVSCR: "mtvscr", + STVEBX: "stvebx", + STVEHX: "stvehx", + STVEWX: "stvewx", + STVX: "stvx", + STVXL: "stvxl", + TLBIEL: "tlbiel", + VADDCUW: "vaddcuw", + VADDFP: "vaddfp", + VADDSBS: "vaddsbs", + VADDSHS: "vaddshs", + VADDSWS: "vaddsws", + VADDUBM: "vaddubm", + VADDUBS: "vaddubs", + VADDUHM: "vadduhm", + VADDUHS: "vadduhs", + VADDUWM: "vadduwm", + VADDUWS: "vadduws", + VAND: "vand", + VANDC: "vandc", + VAVGSB: "vavgsb", + VAVGSH: "vavgsh", + VAVGSW: "vavgsw", + VAVGUB: "vavgub", + VAVGUH: "vavguh", + VAVGUW: "vavguw", + VCFSX: "vcfsx", + VCFUX: "vcfux", + VCMPBFP: "vcmpbfp", + VCMPBFPCC: "vcmpbfp.", + VCMPEQFP: "vcmpeqfp", + VCMPEQFPCC: "vcmpeqfp.", + VCMPEQUB: "vcmpequb", + VCMPEQUBCC: "vcmpequb.", + VCMPEQUH: "vcmpequh", + VCMPEQUHCC: "vcmpequh.", + VCMPEQUW: "vcmpequw", + VCMPEQUWCC: "vcmpequw.", + VCMPGEFP: "vcmpgefp", + VCMPGEFPCC: "vcmpgefp.", + VCMPGTFP: "vcmpgtfp", + VCMPGTFPCC: "vcmpgtfp.", + VCMPGTSB: "vcmpgtsb", + VCMPGTSBCC: "vcmpgtsb.", + VCMPGTSH: "vcmpgtsh", + VCMPGTSHCC: "vcmpgtsh.", + VCMPGTSW: "vcmpgtsw", + VCMPGTSWCC: "vcmpgtsw.", + VCMPGTUB: "vcmpgtub", + VCMPGTUBCC: "vcmpgtub.", + VCMPGTUH: "vcmpgtuh", + VCMPGTUHCC: "vcmpgtuh.", + VCMPGTUW: "vcmpgtuw", + VCMPGTUWCC: "vcmpgtuw.", + VCTSXS: "vctsxs", + VCTUXS: "vctuxs", + VEXPTEFP: "vexptefp", + VLOGEFP: "vlogefp", + VMADDFP: "vmaddfp", + VMAXFP: "vmaxfp", + VMAXSB: "vmaxsb", + VMAXSH: "vmaxsh", + VMAXSW: "vmaxsw", + VMAXUB: "vmaxub", + VMAXUH: "vmaxuh", + VMAXUW: "vmaxuw", + VMHADDSHS: "vmhaddshs", + VMHRADDSHS: "vmhraddshs", + VMINFP: "vminfp", + VMINSB: "vminsb", + VMINSH: "vminsh", + VMINSW: "vminsw", + VMINUB: "vminub", + VMINUH: "vminuh", + VMINUW: "vminuw", + VMLADDUHM: "vmladduhm", + VMRGHB: "vmrghb", + VMRGHH: "vmrghh", + VMRGHW: "vmrghw", + VMRGLB: "vmrglb", + VMRGLH: "vmrglh", + VMRGLW: "vmrglw", + VMSUMMBM: "vmsummbm", + VMSUMSHM: "vmsumshm", + VMSUMSHS: "vmsumshs", + VMSUMUBM: "vmsumubm", + VMSUMUHM: "vmsumuhm", + VMSUMUHS: "vmsumuhs", + VMULESB: "vmulesb", + VMULESH: "vmulesh", + VMULEUB: "vmuleub", + VMULEUH: "vmuleuh", + VMULOSB: "vmulosb", + VMULOSH: "vmulosh", + VMULOUB: "vmuloub", + VMULOUH: "vmulouh", + VNMSUBFP: "vnmsubfp", + VNOR: "vnor", + VOR: "vor", + VPERM: "vperm", + VPKPX: "vpkpx", + VPKSHSS: "vpkshss", + VPKSHUS: "vpkshus", + VPKSWSS: "vpkswss", + VPKSWUS: "vpkswus", + VPKUHUM: "vpkuhum", + VPKUHUS: "vpkuhus", + VPKUWUM: "vpkuwum", + VPKUWUS: "vpkuwus", + VREFP: "vrefp", + VRFIM: "vrfim", + VRFIN: "vrfin", + VRFIP: "vrfip", + VRFIZ: "vrfiz", + VRLB: "vrlb", + VRLH: "vrlh", + VRLW: "vrlw", + VRSQRTEFP: "vrsqrtefp", + VSEL: "vsel", + VSL: "vsl", + VSLB: "vslb", + VSLDOI: "vsldoi", + VSLH: "vslh", + VSLO: "vslo", + VSLW: "vslw", + VSPLTB: "vspltb", + VSPLTH: "vsplth", + VSPLTISB: "vspltisb", + VSPLTISH: "vspltish", + VSPLTISW: "vspltisw", + VSPLTW: "vspltw", + VSR: "vsr", + VSRAB: "vsrab", + VSRAH: "vsrah", + VSRAW: "vsraw", + VSRB: "vsrb", + VSRH: "vsrh", + VSRO: "vsro", + VSRW: "vsrw", + VSUBCUW: "vsubcuw", + VSUBFP: "vsubfp", + VSUBSBS: "vsubsbs", + VSUBSHS: "vsubshs", + VSUBSWS: "vsubsws", + VSUBUBM: "vsububm", + VSUBUBS: "vsububs", + VSUBUHM: "vsubuhm", + VSUBUHS: "vsubuhs", + VSUBUWM: "vsubuwm", + VSUBUWS: "vsubuws", + VSUM2SWS: "vsum2sws", + VSUM4SBS: "vsum4sbs", + VSUM4SHS: "vsum4shs", + VSUM4UBS: "vsum4ubs", + VSUMSWS: "vsumsws", + VUPKHPX: "vupkhpx", + VUPKHSB: "vupkhsb", + VUPKHSH: "vupkhsh", + VUPKLPX: "vupklpx", + VUPKLSB: "vupklsb", + VUPKLSH: "vupklsh", + VXOR: "vxor", + FRE: "fre", + FRECC: "fre.", + FRIM: "frim", + FRIMCC: "frim.", + FRIN: "frin", + FRINCC: "frin.", + FRIP: "frip", + FRIPCC: "frip.", + FRIZ: "friz", + FRIZCC: "friz.", + FRSQRTES: "frsqrtes", + FRSQRTESCC: "frsqrtes.", + HRFID: "hrfid", + POPCNTB: "popcntb", + MFOCRF: "mfocrf", + MTOCRF: "mtocrf", + SLBMFEE: "slbmfee", + SLBMFEV: "slbmfev", + SLBMTE: "slbmte", + RFSCV: "rfscv", + SCV: "scv", + LQ: "lq", + STQ: "stq", + CNTLZD: "cntlzd", + CNTLZDCC: "cntlzd.", + DCBF: "dcbf", + DCBST: "dcbst", + DCBT: "dcbt", + DCBTST: "dcbtst", + DIVD: "divd", + DIVDCC: "divd.", + DIVDO: "divdo", + DIVDOCC: "divdo.", + DIVDU: "divdu", + DIVDUCC: "divdu.", + DIVDUO: "divduo", + DIVDUOCC: "divduo.", + DIVW: "divw", + DIVWCC: "divw.", + DIVWO: "divwo", + DIVWOCC: "divwo.", + DIVWU: "divwu", + DIVWUCC: "divwu.", + DIVWUO: "divwuo", + DIVWUOCC: "divwuo.", + EIEIO: "eieio", + EXTSB: "extsb", + EXTSBCC: "extsb.", + EXTSW: "extsw", + EXTSWCC: "extsw.", + FADDS: "fadds", + FADDSCC: "fadds.", + FCFID: "fcfid", + FCFIDCC: "fcfid.", + FCTID: "fctid", + FCTIDCC: "fctid.", + FCTIDZ: "fctidz", + FCTIDZCC: "fctidz.", + FDIVS: "fdivs", + FDIVSCC: "fdivs.", + FMADDS: "fmadds", + FMADDSCC: "fmadds.", + FMSUBS: "fmsubs", + FMSUBSCC: "fmsubs.", + FMULS: "fmuls", + FMULSCC: "fmuls.", + FNMADDS: "fnmadds", + FNMADDSCC: "fnmadds.", + FNMSUBS: "fnmsubs", + FNMSUBSCC: "fnmsubs.", + FRES: "fres", + FRESCC: "fres.", + FRSQRTE: "frsqrte", + FRSQRTECC: "frsqrte.", + FSEL: "fsel", + FSELCC: "fsel.", + FSQRTS: "fsqrts", + FSQRTSCC: "fsqrts.", + FSUBS: "fsubs", + FSUBSCC: "fsubs.", + ICBI: "icbi", + LD: "ld", + LDARX: "ldarx", + LDU: "ldu", + LDUX: "ldux", + LDX: "ldx", + LWA: "lwa", + LWARX: "lwarx", + LWAUX: "lwaux", + LWAX: "lwax", + MFTB: "mftb", + MTMSRD: "mtmsrd", + MULHD: "mulhd", + MULHDCC: "mulhd.", + MULHDU: "mulhdu", + MULHDUCC: "mulhdu.", + MULHW: "mulhw", + MULHWCC: "mulhw.", + MULHWU: "mulhwu", + MULHWUCC: "mulhwu.", + MULLD: "mulld", + MULLDCC: "mulld.", + MULLDO: "mulldo", + MULLDOCC: "mulldo.", + RFID: "rfid", + RLDCL: "rldcl", + RLDCLCC: "rldcl.", + RLDCR: "rldcr", + RLDCRCC: "rldcr.", + RLDIC: "rldic", + RLDICCC: "rldic.", + RLDICL: "rldicl", + RLDICLCC: "rldicl.", + RLDICR: "rldicr", + RLDICRCC: "rldicr.", + RLDIMI: "rldimi", + RLDIMICC: "rldimi.", + SC: "sc", + SLBIA: "slbia", + SLBIE: "slbie", + SLD: "sld", + SLDCC: "sld.", + SRAD: "srad", + SRADCC: "srad.", + SRADI: "sradi", + SRADICC: "sradi.", + SRD: "srd", + SRDCC: "srd.", + STD: "std", + STDCXCC: "stdcx.", + STDU: "stdu", + STDUX: "stdux", + STDX: "stdx", + STFIWX: "stfiwx", + STWCXCC: "stwcx.", + SUBF: "subf", + SUBFCC: "subf.", + SUBFO: "subfo", + SUBFOCC: "subfo.", + TD: "td", + TDI: "tdi", + TLBSYNC: "tlbsync", + FCTIW: "fctiw", + FCTIWCC: "fctiw.", + FCTIWZ: "fctiwz", + FCTIWZCC: "fctiwz.", + FSQRT: "fsqrt", + FSQRTCC: "fsqrt.", + ADD: "add", + ADDCC: "add.", + ADDO: "addo", + ADDOCC: "addo.", + ADDC: "addc", + ADDCCC: "addc.", + ADDCO: "addco", + ADDCOCC: "addco.", + ADDE: "adde", + ADDECC: "adde.", + ADDEO: "addeo", + ADDEOCC: "addeo.", + LI: "li", + ADDI: "addi", + ADDIC: "addic", + ADDICCC: "addic.", + LIS: "lis", + ADDIS: "addis", + ADDME: "addme", + ADDMECC: "addme.", + ADDMEO: "addmeo", + ADDMEOCC: "addmeo.", + ADDZE: "addze", + ADDZECC: "addze.", + ADDZEO: "addzeo", + ADDZEOCC: "addzeo.", + AND: "and", + ANDCC: "and.", + ANDC: "andc", + ANDCCC: "andc.", + ANDICC: "andi.", + ANDISCC: "andis.", + B: "b", + BA: "ba", + BL: "bl", + BLA: "bla", + BC: "bc", + BCA: "bca", + BCL: "bcl", + BCLA: "bcla", + BCCTR: "bcctr", + BCCTRL: "bcctrl", + BCLR: "bclr", + BCLRL: "bclrl", + CMPW: "cmpw", + CMPD: "cmpd", + CMP: "cmp", + CMPWI: "cmpwi", + CMPDI: "cmpdi", + CMPI: "cmpi", + CMPLW: "cmplw", + CMPLD: "cmpld", + CMPL: "cmpl", + CMPLWI: "cmplwi", + CMPLDI: "cmpldi", + CMPLI: "cmpli", + CNTLZW: "cntlzw", + CNTLZWCC: "cntlzw.", + CRAND: "crand", + CRANDC: "crandc", + CREQV: "creqv", + CRNAND: "crnand", + CRNOR: "crnor", + CROR: "cror", + CRORC: "crorc", + CRXOR: "crxor", + DCBZ: "dcbz", + EQV: "eqv", + EQVCC: "eqv.", + EXTSH: "extsh", + EXTSHCC: "extsh.", + FABS: "fabs", + FABSCC: "fabs.", + FADD: "fadd", + FADDCC: "fadd.", + FCMPO: "fcmpo", + FCMPU: "fcmpu", + FDIV: "fdiv", + FDIVCC: "fdiv.", + FMADD: "fmadd", + FMADDCC: "fmadd.", + FMR: "fmr", + FMRCC: "fmr.", + FMSUB: "fmsub", + FMSUBCC: "fmsub.", + FMUL: "fmul", + FMULCC: "fmul.", + FNABS: "fnabs", + FNABSCC: "fnabs.", + FNEG: "fneg", + FNEGCC: "fneg.", + FNMADD: "fnmadd", + FNMADDCC: "fnmadd.", + FNMSUB: "fnmsub", + FNMSUBCC: "fnmsub.", + FRSP: "frsp", + FRSPCC: "frsp.", + FSUB: "fsub", + FSUBCC: "fsub.", + ISYNC: "isync", + LBZ: "lbz", + LBZU: "lbzu", + LBZUX: "lbzux", + LBZX: "lbzx", + LFD: "lfd", + LFDU: "lfdu", + LFDUX: "lfdux", + LFDX: "lfdx", + LFS: "lfs", + LFSU: "lfsu", + LFSUX: "lfsux", + LFSX: "lfsx", + LHA: "lha", + LHAU: "lhau", + LHAUX: "lhaux", + LHAX: "lhax", + LHBRX: "lhbrx", + LHZ: "lhz", + LHZU: "lhzu", + LHZUX: "lhzux", + LHZX: "lhzx", + LMW: "lmw", + LSWI: "lswi", + LSWX: "lswx", + LWBRX: "lwbrx", + LWZ: "lwz", + LWZU: "lwzu", + LWZUX: "lwzux", + LWZX: "lwzx", + MCRF: "mcrf", + MCRFS: "mcrfs", + MFCR: "mfcr", + MFFS: "mffs", + MFFSCC: "mffs.", + MFMSR: "mfmsr", + MFSPR: "mfspr", + MTCRF: "mtcrf", + MTFSB0: "mtfsb0", + MTFSB0CC: "mtfsb0.", + MTFSB1: "mtfsb1", + MTFSB1CC: "mtfsb1.", + MTFSF: "mtfsf", + MTFSFCC: "mtfsf.", + MTFSFI: "mtfsfi", + MTFSFICC: "mtfsfi.", + MTMSR: "mtmsr", + MTSPR: "mtspr", + MULLI: "mulli", + MULLW: "mullw", + MULLWCC: "mullw.", + MULLWO: "mullwo", + MULLWOCC: "mullwo.", + NAND: "nand", + NANDCC: "nand.", + NEG: "neg", + NEGCC: "neg.", + NEGO: "nego", + NEGOCC: "nego.", + NOR: "nor", + NORCC: "nor.", + OR: "or", + ORCC: "or.", + ORC: "orc", + ORCCC: "orc.", + NOP: "nop", + ORI: "ori", + ORIS: "oris", + RLWIMI: "rlwimi", + RLWIMICC: "rlwimi.", + RLWINM: "rlwinm", + RLWINMCC: "rlwinm.", + RLWNM: "rlwnm", + RLWNMCC: "rlwnm.", + SLW: "slw", + SLWCC: "slw.", + SRAW: "sraw", + SRAWCC: "sraw.", + SRAWI: "srawi", + SRAWICC: "srawi.", + SRW: "srw", + SRWCC: "srw.", + STB: "stb", + STBU: "stbu", + STBUX: "stbux", + STBX: "stbx", + STFD: "stfd", + STFDU: "stfdu", + STFDUX: "stfdux", + STFDX: "stfdx", + STFS: "stfs", + STFSU: "stfsu", + STFSUX: "stfsux", + STFSX: "stfsx", + STH: "sth", + STHBRX: "sthbrx", + STHU: "sthu", + STHUX: "sthux", + STHX: "sthx", + STMW: "stmw", + STSWI: "stswi", + STSWX: "stswx", + STW: "stw", + STWBRX: "stwbrx", + STWU: "stwu", + STWUX: "stwux", + STWX: "stwx", + SUBFC: "subfc", + SUBFCCC: "subfc.", + SUBFCO: "subfco", + SUBFCOCC: "subfco.", + SUBFE: "subfe", + SUBFECC: "subfe.", + SUBFEO: "subfeo", + SUBFEOCC: "subfeo.", + SUBFIC: "subfic", + SUBFME: "subfme", + SUBFMECC: "subfme.", + SUBFMEO: "subfmeo", + SUBFMEOCC: "subfmeo.", + SUBFZE: "subfze", + SUBFZECC: "subfze.", + SUBFZEO: "subfzeo", + SUBFZEOCC: "subfzeo.", + SYNC: "sync", + TLBIE: "tlbie", + TW: "tw", + TWI: "twi", + XOR: "xor", + XORCC: "xor.", + XORI: "xori", + XORIS: "xoris", } var ( - ap_Reg_11_15 = &argField{Type: TypeReg, Shift: 0, BitFields: BitFields{{11, 5}}} - ap_Reg_6_10 = &argField{Type: TypeReg, Shift: 0, BitFields: BitFields{{6, 5}}} - ap_PCRel_6_29_shift2 = &argField{Type: TypePCRel, Shift: 2, BitFields: BitFields{{6, 24}}} - ap_Label_6_29_shift2 = &argField{Type: TypeLabel, Shift: 2, BitFields: BitFields{{6, 24}}} - ap_ImmUnsigned_6_10 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{6, 5}}} - ap_CondRegBit_11_15 = &argField{Type: TypeCondRegBit, Shift: 0, BitFields: BitFields{{11, 5}}} - ap_PCRel_16_29_shift2 = &argField{Type: TypePCRel, Shift: 2, BitFields: BitFields{{16, 14}}} - ap_Label_16_29_shift2 = &argField{Type: TypeLabel, Shift: 2, BitFields: BitFields{{16, 14}}} - ap_ImmUnsigned_19_20 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{19, 2}}} - ap_CondRegBit_6_10 = &argField{Type: TypeCondRegBit, Shift: 0, BitFields: BitFields{{6, 5}}} - ap_CondRegBit_16_20 = &argField{Type: TypeCondRegBit, Shift: 0, BitFields: BitFields{{16, 5}}} - ap_CondRegField_6_8 = &argField{Type: TypeCondRegField, Shift: 0, BitFields: BitFields{{6, 3}}} - ap_CondRegField_11_13 = &argField{Type: TypeCondRegField, Shift: 0, BitFields: BitFields{{11, 3}}} - ap_ImmUnsigned_20_26 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{20, 7}}} - ap_SpReg_11_20 = &argField{Type: TypeSpReg, Shift: 0, BitFields: BitFields{{11, 10}}} - ap_Offset_16_31 = &argField{Type: TypeOffset, Shift: 0, BitFields: BitFields{{16, 16}}} - ap_Reg_16_20 = &argField{Type: TypeReg, Shift: 0, BitFields: BitFields{{16, 5}}} - ap_Offset_16_29_shift2 = &argField{Type: TypeOffset, Shift: 2, BitFields: BitFields{{16, 14}}} - ap_Offset_16_27_shift4 = &argField{Type: TypeOffset, Shift: 4, BitFields: BitFields{{16, 12}}} - ap_ImmUnsigned_16_20 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{16, 5}}} - ap_ImmSigned_16_31 = &argField{Type: TypeImmSigned, Shift: 0, BitFields: BitFields{{16, 16}}} - ap_ImmUnsigned_16_31 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{16, 16}}} - ap_CondRegBit_21_25 = &argField{Type: TypeCondRegBit, Shift: 0, BitFields: BitFields{{21, 5}}} - ap_ImmUnsigned_21_25 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{21, 5}}} - ap_ImmUnsigned_26_30 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{26, 5}}} - ap_ImmUnsigned_30_30_16_20 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{30, 1}, {16, 5}}} - ap_ImmUnsigned_26_26_21_25 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{26, 1}, {21, 5}}} - ap_SpReg_16_20_11_15 = &argField{Type: TypeSpReg, Shift: 0, BitFields: BitFields{{16, 5}, {11, 5}}} - ap_ImmUnsigned_12_19 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{12, 8}}} - ap_ImmUnsigned_10_10 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{10, 1}}} - ap_VecSReg_31_31_6_10 = &argField{Type: TypeVecSReg, Shift: 0, BitFields: BitFields{{31, 1}, {6, 5}}} - ap_FPReg_6_10 = &argField{Type: TypeFPReg, Shift: 0, BitFields: BitFields{{6, 5}}} - ap_FPReg_16_20 = &argField{Type: TypeFPReg, Shift: 0, BitFields: BitFields{{16, 5}}} - ap_FPReg_11_15 = &argField{Type: TypeFPReg, Shift: 0, BitFields: BitFields{{11, 5}}} - ap_FPReg_21_25 = &argField{Type: TypeFPReg, Shift: 0, BitFields: BitFields{{21, 5}}} - ap_ImmUnsigned_16_19 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{16, 4}}} - ap_ImmUnsigned_15_15 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{15, 1}}} - ap_ImmUnsigned_7_14 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{7, 8}}} - ap_ImmUnsigned_6_6 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{6, 1}}} - ap_VecReg_6_10 = &argField{Type: TypeVecReg, Shift: 0, BitFields: BitFields{{6, 5}}} - ap_VecReg_11_15 = &argField{Type: TypeVecReg, Shift: 0, BitFields: BitFields{{11, 5}}} - ap_VecReg_16_20 = &argField{Type: TypeVecReg, Shift: 0, BitFields: BitFields{{16, 5}}} - ap_ImmUnsigned_12_15 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{12, 4}}} - ap_ImmUnsigned_13_15 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{13, 3}}} - ap_ImmUnsigned_14_15 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{14, 2}}} - ap_ImmSigned_11_15 = &argField{Type: TypeImmSigned, Shift: 0, BitFields: BitFields{{11, 5}}} - ap_VecReg_21_25 = &argField{Type: TypeVecReg, Shift: 0, BitFields: BitFields{{21, 5}}} - ap_ImmUnsigned_22_25 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{22, 4}}} - ap_ImmUnsigned_11_15 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{11, 5}}} - ap_ImmUnsigned_16_16 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{16, 1}}} - ap_ImmUnsigned_17_20 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{17, 4}}} - ap_ImmUnsigned_22_22 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{22, 1}}} - ap_ImmUnsigned_16_21 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{16, 6}}} - ap_ImmUnsigned_21_22 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{21, 2}}} - ap_ImmUnsigned_11_12 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{11, 2}}} - ap_ImmUnsigned_11_11 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{11, 1}}} - ap_VecSReg_30_30_16_20 = &argField{Type: TypeVecSReg, Shift: 0, BitFields: BitFields{{30, 1}, {16, 5}}} - ap_VecSReg_29_29_11_15 = &argField{Type: TypeVecSReg, Shift: 0, BitFields: BitFields{{29, 1}, {11, 5}}} - ap_ImmUnsigned_22_23 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{22, 2}}} - ap_VecSReg_28_28_21_25 = &argField{Type: TypeVecSReg, Shift: 0, BitFields: BitFields{{28, 1}, {21, 5}}} - ap_CondRegField_29_31 = &argField{Type: TypeCondRegField, Shift: 0, BitFields: BitFields{{29, 3}}} - ap_ImmUnsigned_7_10 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{7, 4}}} - ap_ImmUnsigned_9_10 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{9, 2}}} - ap_ImmUnsigned_31_31 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{31, 1}}} - ap_ImmSigned_16_20 = &argField{Type: TypeImmSigned, Shift: 0, BitFields: BitFields{{16, 5}}} - ap_ImmUnsigned_20_20 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{20, 1}}} - ap_ImmUnsigned_8_10 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{8, 3}}} - ap_SpReg_12_15 = &argField{Type: TypeSpReg, Shift: 0, BitFields: BitFields{{12, 4}}} - ap_ImmUnsigned_6_20 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{6, 15}}} - ap_ImmUnsigned_11_20 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{11, 10}}} - ap_Reg_21_25 = &argField{Type: TypeReg, Shift: 0, BitFields: BitFields{{21, 5}}} + ap_Reg_16_20 = &argField{Type: TypeReg, Shift: 0, BitFields: BitFields{{16, 5, 0}}} + ap_NegOffset_31_31_6_10_shift3 = &argField{Type: TypeNegOffset, Shift: 3, BitFields: BitFields{{31, 1, 0}, {6, 5, 0}}} + ap_Reg_11_15 = &argField{Type: TypeReg, Shift: 0, BitFields: BitFields{{11, 5, 0}}} + ap_Reg_6_10 = &argField{Type: TypeReg, Shift: 0, BitFields: BitFields{{6, 5, 0}}} + ap_FPReg_6_10 = &argField{Type: TypeFPReg, Shift: 0, BitFields: BitFields{{6, 5, 0}}} + ap_VecReg_16_20 = &argField{Type: TypeVecReg, Shift: 0, BitFields: BitFields{{16, 5, 0}}} + ap_VecReg_6_10 = &argField{Type: TypeVecReg, Shift: 0, BitFields: BitFields{{6, 5, 0}}} + ap_FPReg_16_20 = &argField{Type: TypeFPReg, Shift: 0, BitFields: BitFields{{16, 5, 0}}} + ap_VecSReg_31_31_6_10 = &argField{Type: TypeVecSReg, Shift: 0, BitFields: BitFields{{31, 1, 0}, {6, 5, 0}}} + ap_ImmUnsigned_16_20 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{16, 5, 0}}} + ap_VecSpReg_10_10_6_9 = &argField{Type: TypeVecSpReg, Shift: 0, BitFields: BitFields{{10, 1, 0}, {6, 4, 0}}} + ap_Offset_16_27_shift4 = &argField{Type: TypeOffset, Shift: 4, BitFields: BitFields{{16, 12, 0}}} + ap_ImmUnsigned_16_25_11_15_31_31 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{16, 10, 0}, {11, 5, 0}, {31, 1, 0}}} + ap_Reg_38_42 = &argField{Type: TypeReg, Shift: 0, BitFields: BitFields{{6, 5, 1}}} + ap_Reg_43_47 = &argField{Type: TypeReg, Shift: 0, BitFields: BitFields{{11, 5, 1}}} + ap_ImmSigned_14_31_48_63 = &argField{Type: TypeImmSigned, Shift: 0, BitFields: BitFields{{14, 18, 0}, {16, 16, 1}}} + ap_ImmUnsigned_11_11 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{11, 1, 0}}} + ap_Offset_14_31_48_63 = &argField{Type: TypeOffset, Shift: 0, BitFields: BitFields{{14, 18, 0}, {16, 16, 1}}} + ap_FPReg_38_42 = &argField{Type: TypeFPReg, Shift: 0, BitFields: BitFields{{6, 5, 1}}} + ap_VecReg_38_42 = &argField{Type: TypeVecReg, Shift: 0, BitFields: BitFields{{6, 5, 1}}} + ap_VecSReg_37_37_38_42 = &argField{Type: TypeVecSReg, Shift: 0, BitFields: BitFields{{5, 1, 1}, {6, 5, 1}}} + ap_VecSpReg_42_42_38_41 = &argField{Type: TypeVecSpReg, Shift: 0, BitFields: BitFields{{10, 1, 1}, {6, 4, 1}}} + ap_MMAReg_38_40 = &argField{Type: TypeMMAReg, Shift: 0, BitFields: BitFields{{6, 3, 1}}} + ap_VecSReg_61_61_43_47 = &argField{Type: TypeVecSReg, Shift: 0, BitFields: BitFields{{29, 1, 1}, {11, 5, 1}}} + ap_VecSReg_62_62_48_52 = &argField{Type: TypeVecSReg, Shift: 0, BitFields: BitFields{{30, 1, 1}, {16, 5, 1}}} + ap_ImmUnsigned_24_27 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{24, 4, 0}}} + ap_ImmUnsigned_28_31 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{28, 4, 0}}} + ap_ImmUnsigned_16_17 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{16, 2, 0}}} + ap_ImmUnsigned_28_29 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{28, 2, 0}}} + ap_ImmUnsigned_16_23 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{16, 8, 0}}} + ap_ImmUnsigned_16_19 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{16, 4, 0}}} + ap_CondRegBit_11_15 = &argField{Type: TypeCondRegBit, Shift: 0, BitFields: BitFields{{11, 5, 0}}} + ap_VecReg_11_15 = &argField{Type: TypeVecReg, Shift: 0, BitFields: BitFields{{11, 5, 0}}} + ap_CondRegField_6_8 = &argField{Type: TypeCondRegField, Shift: 0, BitFields: BitFields{{6, 3, 0}}} + ap_ImmUnsigned_15_15 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{15, 1, 0}}} + ap_Reg_21_25 = &argField{Type: TypeReg, Shift: 0, BitFields: BitFields{{21, 5, 0}}} + ap_ImmUnsigned_13_15 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{13, 3, 0}}} + ap_ImmUnsigned_12_15 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{12, 4, 0}}} + ap_VecReg_21_25 = &argField{Type: TypeVecReg, Shift: 0, BitFields: BitFields{{21, 5, 0}}} + ap_ImmUnsigned_23_25 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{23, 3, 0}}} + ap_MMAReg_6_8 = &argField{Type: TypeMMAReg, Shift: 0, BitFields: BitFields{{6, 3, 0}}} + ap_VecSReg_29_29_11_15 = &argField{Type: TypeVecSReg, Shift: 0, BitFields: BitFields{{29, 1, 0}, {11, 5, 0}}} + ap_VecSReg_30_30_16_20 = &argField{Type: TypeVecSReg, Shift: 0, BitFields: BitFields{{30, 1, 0}, {16, 5, 0}}} + ap_VecSReg_63_63_38_42 = &argField{Type: TypeVecSReg, Shift: 0, BitFields: BitFields{{31, 1, 1}, {6, 5, 1}}} + ap_VecSReg_60_60_53_57 = &argField{Type: TypeVecSReg, Shift: 0, BitFields: BitFields{{28, 1, 1}, {21, 5, 1}}} + ap_ImmUnsigned_24_31 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{24, 8, 0}}} + ap_ImmUnsigned_11_15 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{11, 5, 0}}} + ap_ImmUnsigned_29_31 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{29, 3, 0}}} + ap_VecSReg_47_47_38_42 = &argField{Type: TypeVecSReg, Shift: 0, BitFields: BitFields{{15, 1, 1}, {6, 5, 1}}} + ap_ImmUnsigned_46_46 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{14, 1, 1}}} + ap_ImmUnsigned_16_31_48_63 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{16, 16, 0}, {16, 16, 1}}} + ap_ImmUnsigned_21_22 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{21, 2, 0}}} + ap_ImmUnsigned_18_20 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{18, 3, 0}}} + ap_ImmUnsigned_19_20 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{19, 2, 0}}} + ap_ImmSigned_16_25_11_15_31_31 = &argField{Type: TypeImmSigned, Shift: 0, BitFields: BitFields{{16, 10, 0}, {11, 5, 0}, {31, 1, 0}}} + ap_ImmUnsigned_22_22 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{22, 1, 0}}} + ap_ImmUnsigned_10_10 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{10, 1, 0}}} + ap_ImmUnsigned_14_15 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{14, 2, 0}}} + ap_ImmUnsigned_10_15 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{10, 6, 0}}} + ap_ImmUnsigned_30_30_16_20 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{30, 1, 0}, {16, 5, 0}}} + ap_Offset_16_29_shift2 = &argField{Type: TypeOffset, Shift: 2, BitFields: BitFields{{16, 14, 0}}} + ap_VecSReg_28_28_6_10 = &argField{Type: TypeVecSReg, Shift: 0, BitFields: BitFields{{28, 1, 0}, {6, 5, 0}}} + ap_CondRegField_11_13 = &argField{Type: TypeCondRegField, Shift: 0, BitFields: BitFields{{11, 3, 0}}} + ap_ImmUnsigned_9_10 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{9, 2, 0}}} + ap_ImmUnsigned_9_15 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{9, 7, 0}}} + ap_ImmUnsigned_25_25_29_29_11_15 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{25, 1, 0}, {29, 1, 0}, {11, 5, 0}}} + ap_ImmUnsigned_13_20 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{13, 8, 0}}} + ap_ImmUnsigned_6_10 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{6, 5, 0}}} + ap_FPReg_11_15 = &argField{Type: TypeFPReg, Shift: 0, BitFields: BitFields{{11, 5, 0}}} + ap_ImmUnsigned_7_10 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{7, 4, 0}}} + ap_ImmUnsigned_31_31 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{31, 1, 0}}} + ap_ImmUnsigned_11_20 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{11, 10, 0}}} + ap_ImmUnsigned_20_20 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{20, 1, 0}}} + ap_ImmUnsigned_16_16 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{16, 1, 0}}} + ap_ImmUnsigned_17_20 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{17, 4, 0}}} + ap_ImmUnsigned_22_23 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{22, 2, 0}}} + ap_VecSReg_28_28_21_25 = &argField{Type: TypeVecSReg, Shift: 0, BitFields: BitFields{{28, 1, 0}, {21, 5, 0}}} + ap_ImmUnsigned_11_12 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{11, 2, 0}}} + ap_ImmSigned_11_15 = &argField{Type: TypeImmSigned, Shift: 0, BitFields: BitFields{{11, 5, 0}}} + ap_ImmUnsigned_16_21 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{16, 6, 0}}} + ap_CondRegBit_21_25 = &argField{Type: TypeCondRegBit, Shift: 0, BitFields: BitFields{{21, 5, 0}}} + ap_ImmUnsigned_12_13 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{12, 2, 0}}} + ap_ImmUnsigned_14_14 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{14, 1, 0}}} + ap_ImmUnsigned_22_25 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{22, 4, 0}}} + ap_ImmUnsigned_12_19 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{12, 8, 0}}} + ap_ImmUnsigned_20_26 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{20, 7, 0}}} + ap_ImmUnsigned_8_10 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{8, 3, 0}}} + ap_FPReg_21_25 = &argField{Type: TypeFPReg, Shift: 0, BitFields: BitFields{{21, 5, 0}}} + ap_SpReg_16_20_11_15 = &argField{Type: TypeSpReg, Shift: 0, BitFields: BitFields{{16, 5, 0}, {11, 5, 0}}} + ap_ImmUnsigned_26_26_21_25 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{26, 1, 0}, {21, 5, 0}}} + ap_ImmSigned_16_31 = &argField{Type: TypeImmSigned, Shift: 0, BitFields: BitFields{{16, 16, 0}}} + ap_ImmUnsigned_16_31 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{16, 16, 0}}} + ap_PCRel_6_29_shift2 = &argField{Type: TypePCRel, Shift: 2, BitFields: BitFields{{6, 24, 0}}} + ap_Label_6_29_shift2 = &argField{Type: TypeLabel, Shift: 2, BitFields: BitFields{{6, 24, 0}}} + ap_PCRel_16_29_shift2 = &argField{Type: TypePCRel, Shift: 2, BitFields: BitFields{{16, 14, 0}}} + ap_Label_16_29_shift2 = &argField{Type: TypeLabel, Shift: 2, BitFields: BitFields{{16, 14, 0}}} + ap_CondRegBit_6_10 = &argField{Type: TypeCondRegBit, Shift: 0, BitFields: BitFields{{6, 5, 0}}} + ap_CondRegBit_16_20 = &argField{Type: TypeCondRegBit, Shift: 0, BitFields: BitFields{{16, 5, 0}}} + ap_Offset_16_31 = &argField{Type: TypeOffset, Shift: 0, BitFields: BitFields{{16, 16, 0}}} + ap_ImmUnsigned_7_14 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{7, 8, 0}}} + ap_ImmUnsigned_6_6 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{6, 1, 0}}} + ap_ImmUnsigned_6_8 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{6, 3, 0}}} + ap_ImmUnsigned_21_25 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{21, 5, 0}}} + ap_ImmUnsigned_26_30 = &argField{Type: TypeImmUnsigned, Shift: 0, BitFields: BitFields{{26, 5, 0}}} ) var instFormats = [...]instFormat{ - {CNTLZW, 0xfc0007ff, 0x7c000034, 0xf800, // Count Leading Zeros Word X-form (cntlzw RA, RS) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10}}, - {CNTLZWCC, 0xfc0007ff, 0x7c000035, 0xf800, // Count Leading Zeros Word X-form (cntlzw. RA, RS) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10}}, - {B, 0xfc000003, 0x48000000, 0x0, // Branch I-form (b target_addr) - [5]*argField{ap_PCRel_6_29_shift2}}, - {BA, 0xfc000003, 0x48000002, 0x0, // Branch I-form (ba target_addr) - [5]*argField{ap_Label_6_29_shift2}}, - {BL, 0xfc000003, 0x48000001, 0x0, // Branch I-form (bl target_addr) - [5]*argField{ap_PCRel_6_29_shift2}}, - {BLA, 0xfc000003, 0x48000003, 0x0, // Branch I-form (bla target_addr) - [5]*argField{ap_Label_6_29_shift2}}, - {BC, 0xfc000003, 0x40000000, 0x0, // Branch Conditional B-form (bc BO,BI,target_addr) - [5]*argField{ap_ImmUnsigned_6_10, ap_CondRegBit_11_15, ap_PCRel_16_29_shift2}}, - {BCA, 0xfc000003, 0x40000002, 0x0, // Branch Conditional B-form (bca BO,BI,target_addr) - [5]*argField{ap_ImmUnsigned_6_10, ap_CondRegBit_11_15, ap_Label_16_29_shift2}}, - {BCL, 0xfc000003, 0x40000001, 0x0, // Branch Conditional B-form (bcl BO,BI,target_addr) - [5]*argField{ap_ImmUnsigned_6_10, ap_CondRegBit_11_15, ap_PCRel_16_29_shift2}}, - {BCLA, 0xfc000003, 0x40000003, 0x0, // Branch Conditional B-form (bcla BO,BI,target_addr) - [5]*argField{ap_ImmUnsigned_6_10, ap_CondRegBit_11_15, ap_Label_16_29_shift2}}, - {BCLR, 0xfc0007ff, 0x4c000020, 0xe000, // Branch Conditional to Link Register XL-form (bclr BO,BI,BH) - [5]*argField{ap_ImmUnsigned_6_10, ap_CondRegBit_11_15, ap_ImmUnsigned_19_20}}, - {BCLRL, 0xfc0007ff, 0x4c000021, 0xe000, // Branch Conditional to Link Register XL-form (bclrl BO,BI,BH) - [5]*argField{ap_ImmUnsigned_6_10, ap_CondRegBit_11_15, ap_ImmUnsigned_19_20}}, - {BCCTR, 0xfc0007ff, 0x4c000420, 0xe000, // Branch Conditional to Count Register XL-form (bcctr BO,BI,BH) - [5]*argField{ap_ImmUnsigned_6_10, ap_CondRegBit_11_15, ap_ImmUnsigned_19_20}}, - {BCCTRL, 0xfc0007ff, 0x4c000421, 0xe000, // Branch Conditional to Count Register XL-form (bcctrl BO,BI,BH) - [5]*argField{ap_ImmUnsigned_6_10, ap_CondRegBit_11_15, ap_ImmUnsigned_19_20}}, - {BCTAR, 0xfc0007ff, 0x4c000460, 0xe000, // Branch Conditional to Branch Target Address Register XL-form (bctar BO,BI,BH) - [5]*argField{ap_ImmUnsigned_6_10, ap_CondRegBit_11_15, ap_ImmUnsigned_19_20}}, - {BCTARL, 0xfc0007ff, 0x4c000461, 0xe000, // Branch Conditional to Branch Target Address Register XL-form (bctarl BO,BI,BH) - [5]*argField{ap_ImmUnsigned_6_10, ap_CondRegBit_11_15, ap_ImmUnsigned_19_20}}, - {CRAND, 0xfc0007fe, 0x4c000202, 0x1, // Condition Register AND XL-form (crand BT,BA,BB) - [5]*argField{ap_CondRegBit_6_10, ap_CondRegBit_11_15, ap_CondRegBit_16_20}}, - {CROR, 0xfc0007fe, 0x4c000382, 0x1, // Condition Register OR XL-form (cror BT,BA,BB) - [5]*argField{ap_CondRegBit_6_10, ap_CondRegBit_11_15, ap_CondRegBit_16_20}}, - {CRNAND, 0xfc0007fe, 0x4c0001c2, 0x1, // Condition Register NAND XL-form (crnand BT,BA,BB) - [5]*argField{ap_CondRegBit_6_10, ap_CondRegBit_11_15, ap_CondRegBit_16_20}}, - {CRXOR, 0xfc0007fe, 0x4c000182, 0x1, // Condition Register XOR XL-form (crxor BT,BA,BB) - [5]*argField{ap_CondRegBit_6_10, ap_CondRegBit_11_15, ap_CondRegBit_16_20}}, - {CRNOR, 0xfc0007fe, 0x4c000042, 0x1, // Condition Register NOR XL-form (crnor BT,BA,BB) - [5]*argField{ap_CondRegBit_6_10, ap_CondRegBit_11_15, ap_CondRegBit_16_20}}, - {CRANDC, 0xfc0007fe, 0x4c000102, 0x1, // Condition Register AND with Complement XL-form (crandc BT,BA,BB) - [5]*argField{ap_CondRegBit_6_10, ap_CondRegBit_11_15, ap_CondRegBit_16_20}}, - {MCRF, 0xfc0007fe, 0x4c000000, 0x63f801, // Move Condition Register Field XL-form (mcrf BF,BFA) - [5]*argField{ap_CondRegField_6_8, ap_CondRegField_11_13}}, - {CREQV, 0xfc0007fe, 0x4c000242, 0x1, // Condition Register Equivalent XL-form (creqv BT,BA,BB) - [5]*argField{ap_CondRegBit_6_10, ap_CondRegBit_11_15, ap_CondRegBit_16_20}}, - {CRORC, 0xfc0007fe, 0x4c000342, 0x1, // Condition Register OR with Complement XL-form (crorc BT,BA,BB) - [5]*argField{ap_CondRegBit_6_10, ap_CondRegBit_11_15, ap_CondRegBit_16_20}}, - {SC, 0xfc000002, 0x44000002, 0x3fff01d, // System Call SC-form (sc LEV) - [5]*argField{ap_ImmUnsigned_20_26}}, - {CLRBHRB, 0xfc0007fe, 0x7c00035c, 0x3fff801, // Clear BHRB X-form (clrbhrb) - [5]*argField{}}, - {MFBHRBE, 0xfc0007fe, 0x7c00025c, 0x1, // Move From Branch History Rolling Buffer XFX-form (mfbhrbe RT,BHRBE) - [5]*argField{ap_Reg_6_10, ap_SpReg_11_20}}, - {LBZ, 0xfc000000, 0x88000000, 0x0, // Load Byte and Zero D-form (lbz RT,D(RA)) - [5]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, - {LBZU, 0xfc000000, 0x8c000000, 0x0, // Load Byte and Zero with Update D-form (lbzu RT,D(RA)) - [5]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, - {LBZX, 0xfc0007fe, 0x7c0000ae, 0x1, // Load Byte and Zero Indexed X-form (lbzx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LBZUX, 0xfc0007fe, 0x7c0000ee, 0x1, // Load Byte and Zero with Update Indexed X-form (lbzux RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LHZ, 0xfc000000, 0xa0000000, 0x0, // Load Halfword and Zero D-form (lhz RT,D(RA)) - [5]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, - {LHZU, 0xfc000000, 0xa4000000, 0x0, // Load Halfword and Zero with Update D-form (lhzu RT,D(RA)) - [5]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, - {LHZX, 0xfc0007fe, 0x7c00022e, 0x1, // Load Halfword and Zero Indexed X-form (lhzx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LHZUX, 0xfc0007fe, 0x7c00026e, 0x1, // Load Halfword and Zero with Update Indexed X-form (lhzux RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LHA, 0xfc000000, 0xa8000000, 0x0, // Load Halfword Algebraic D-form (lha RT,D(RA)) - [5]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, - {LHAU, 0xfc000000, 0xac000000, 0x0, // Load Halfword Algebraic with Update D-form (lhau RT,D(RA)) - [5]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, - {LHAX, 0xfc0007fe, 0x7c0002ae, 0x1, // Load Halfword Algebraic Indexed X-form (lhax RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LHAUX, 0xfc0007fe, 0x7c0002ee, 0x1, // Load Halfword Algebraic with Update Indexed X-form (lhaux RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LWZ, 0xfc000000, 0x80000000, 0x0, // Load Word and Zero D-form (lwz RT,D(RA)) - [5]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, - {LWZU, 0xfc000000, 0x84000000, 0x0, // Load Word and Zero with Update D-form (lwzu RT,D(RA)) - [5]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, - {LWZX, 0xfc0007fe, 0x7c00002e, 0x1, // Load Word and Zero Indexed X-form (lwzx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LWZUX, 0xfc0007fe, 0x7c00006e, 0x1, // Load Word and Zero with Update Indexed X-form (lwzux RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LWA, 0xfc000003, 0xe8000002, 0x0, // Load Word Algebraic DS-form (lwa RT,DS(RA)) - [5]*argField{ap_Reg_6_10, ap_Offset_16_29_shift2, ap_Reg_11_15}}, - {LWAX, 0xfc0007fe, 0x7c0002aa, 0x1, // Load Word Algebraic Indexed X-form (lwax RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LWAUX, 0xfc0007fe, 0x7c0002ea, 0x1, // Load Word Algebraic with Update Indexed X-form (lwaux RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LD, 0xfc000003, 0xe8000000, 0x0, // Load Doubleword DS-form (ld RT,DS(RA)) - [5]*argField{ap_Reg_6_10, ap_Offset_16_29_shift2, ap_Reg_11_15}}, - {LDU, 0xfc000003, 0xe8000001, 0x0, // Load Doubleword with Update DS-form (ldu RT,DS(RA)) - [5]*argField{ap_Reg_6_10, ap_Offset_16_29_shift2, ap_Reg_11_15}}, - {LDX, 0xfc0007fe, 0x7c00002a, 0x1, // Load Doubleword Indexed X-form (ldx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LDUX, 0xfc0007fe, 0x7c00006a, 0x1, // Load Doubleword with Update Indexed X-form (ldux RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STB, 0xfc000000, 0x98000000, 0x0, // Store Byte D-form (stb RS,D(RA)) - [5]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, - {STBU, 0xfc000000, 0x9c000000, 0x0, // Store Byte with Update D-form (stbu RS,D(RA)) - [5]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, - {STBX, 0xfc0007fe, 0x7c0001ae, 0x1, // Store Byte Indexed X-form (stbx RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STBUX, 0xfc0007fe, 0x7c0001ee, 0x1, // Store Byte with Update Indexed X-form (stbux RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STH, 0xfc000000, 0xb0000000, 0x0, // Store Halfword D-form (sth RS,D(RA)) - [5]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, - {STHU, 0xfc000000, 0xb4000000, 0x0, // Store Halfword with Update D-form (sthu RS,D(RA)) - [5]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, - {STHX, 0xfc0007fe, 0x7c00032e, 0x1, // Store Halfword Indexed X-form (sthx RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STHUX, 0xfc0007fe, 0x7c00036e, 0x1, // Store Halfword with Update Indexed X-form (sthux RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STW, 0xfc000000, 0x90000000, 0x0, // Store Word D-form (stw RS,D(RA)) - [5]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, - {STWU, 0xfc000000, 0x94000000, 0x0, // Store Word with Update D-form (stwu RS,D(RA)) - [5]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, - {STWX, 0xfc0007fe, 0x7c00012e, 0x1, // Store Word Indexed X-form (stwx RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STWUX, 0xfc0007fe, 0x7c00016e, 0x1, // Store Word with Update Indexed X-form (stwux RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STD, 0xfc000003, 0xf8000000, 0x0, // Store Doubleword DS-form (std RS,DS(RA)) - [5]*argField{ap_Reg_6_10, ap_Offset_16_29_shift2, ap_Reg_11_15}}, - {STDU, 0xfc000003, 0xf8000001, 0x0, // Store Doubleword with Update DS-form (stdu RS,DS(RA)) - [5]*argField{ap_Reg_6_10, ap_Offset_16_29_shift2, ap_Reg_11_15}}, - {STDX, 0xfc0007fe, 0x7c00012a, 0x1, // Store Doubleword Indexed X-form (stdx RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STDUX, 0xfc0007fe, 0x7c00016a, 0x1, // Store Doubleword with Update Indexed X-form (stdux RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LQ, 0xfc000000, 0xe0000000, 0xf, // Load Quadword DQ-form (lq RTp,DQ(RA)) - [5]*argField{ap_Reg_6_10, ap_Offset_16_27_shift4, ap_Reg_11_15}}, - {STQ, 0xfc000003, 0xf8000002, 0x0, // Store Quadword DS-form (stq RSp,DS(RA)) - [5]*argField{ap_Reg_6_10, ap_Offset_16_29_shift2, ap_Reg_11_15}}, - {LHBRX, 0xfc0007fe, 0x7c00062c, 0x1, // Load Halfword Byte-Reverse Indexed X-form (lhbrx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LWBRX, 0xfc0007fe, 0x7c00042c, 0x1, // Load Word Byte-Reverse Indexed X-form (lwbrx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STHBRX, 0xfc0007fe, 0x7c00072c, 0x1, // Store Halfword Byte-Reverse Indexed X-form (sthbrx RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STWBRX, 0xfc0007fe, 0x7c00052c, 0x1, // Store Word Byte-Reverse Indexed X-form (stwbrx RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LDBRX, 0xfc0007fe, 0x7c000428, 0x1, // Load Doubleword Byte-Reverse Indexed X-form (ldbrx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STDBRX, 0xfc0007fe, 0x7c000528, 0x1, // Store Doubleword Byte-Reverse Indexed X-form (stdbrx RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LMW, 0xfc000000, 0xb8000000, 0x0, // Load Multiple Word D-form (lmw RT,D(RA)) - [5]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, - {STMW, 0xfc000000, 0xbc000000, 0x0, // Store Multiple Word D-form (stmw RS,D(RA)) - [5]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, - {LSWI, 0xfc0007fe, 0x7c0004aa, 0x1, // Load String Word Immediate X-form (lswi RT,RA,NB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_ImmUnsigned_16_20}}, - {LSWX, 0xfc0007fe, 0x7c00042a, 0x1, // Load String Word Indexed X-form (lswx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STSWI, 0xfc0007fe, 0x7c0005aa, 0x1, // Store String Word Immediate X-form (stswi RS,RA,NB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_ImmUnsigned_16_20}}, - {STSWX, 0xfc0007fe, 0x7c00052a, 0x1, // Store String Word Indexed X-form (stswx RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LI, 0xfc1f0000, 0x38000000, 0x0, // Add Immediate D-form (li RT,SI) - [5]*argField{ap_Reg_6_10, ap_ImmSigned_16_31}}, - {ADDI, 0xfc000000, 0x38000000, 0x0, // Add Immediate D-form (addi RT,RA,SI) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_ImmSigned_16_31}}, - {LIS, 0xfc1f0000, 0x3c000000, 0x0, // Add Immediate Shifted D-form (lis RT, SI) - [5]*argField{ap_Reg_6_10, ap_ImmSigned_16_31}}, - {ADDIS, 0xfc000000, 0x3c000000, 0x0, // Add Immediate Shifted D-form (addis RT,RA,SI) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_ImmSigned_16_31}}, - {ADD, 0xfc0007ff, 0x7c000214, 0x0, // Add XO-form (add RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {ADDCC, 0xfc0007ff, 0x7c000215, 0x0, // Add XO-form (add. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {ADDO, 0xfc0007ff, 0x7c000614, 0x0, // Add XO-form (addo RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {ADDOCC, 0xfc0007ff, 0x7c000615, 0x0, // Add XO-form (addo. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {ADDIC, 0xfc000000, 0x30000000, 0x0, // Add Immediate Carrying D-form (addic RT,RA,SI) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_ImmSigned_16_31}}, - {SUBF, 0xfc0007ff, 0x7c000050, 0x0, // Subtract From XO-form (subf RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {SUBFCC, 0xfc0007ff, 0x7c000051, 0x0, // Subtract From XO-form (subf. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {SUBFO, 0xfc0007ff, 0x7c000450, 0x0, // Subtract From XO-form (subfo RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {SUBFOCC, 0xfc0007ff, 0x7c000451, 0x0, // Subtract From XO-form (subfo. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {ADDICCC, 0xfc000000, 0x34000000, 0x0, // Add Immediate Carrying and Record D-form (addic. RT,RA,SI) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_ImmSigned_16_31}}, - {SUBFIC, 0xfc000000, 0x20000000, 0x0, // Subtract From Immediate Carrying D-form (subfic RT,RA,SI) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_ImmSigned_16_31}}, - {ADDC, 0xfc0007ff, 0x7c000014, 0x0, // Add Carrying XO-form (addc RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {ADDCCC, 0xfc0007ff, 0x7c000015, 0x0, // Add Carrying XO-form (addc. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {ADDCO, 0xfc0007ff, 0x7c000414, 0x0, // Add Carrying XO-form (addco RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {ADDCOCC, 0xfc0007ff, 0x7c000415, 0x0, // Add Carrying XO-form (addco. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {SUBFC, 0xfc0007ff, 0x7c000010, 0x0, // Subtract From Carrying XO-form (subfc RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {SUBFCCC, 0xfc0007ff, 0x7c000011, 0x0, // Subtract From Carrying XO-form (subfc. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {SUBFCO, 0xfc0007ff, 0x7c000410, 0x0, // Subtract From Carrying XO-form (subfco RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {SUBFCOCC, 0xfc0007ff, 0x7c000411, 0x0, // Subtract From Carrying XO-form (subfco. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {ADDE, 0xfc0007ff, 0x7c000114, 0x0, // Add Extended XO-form (adde RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {ADDECC, 0xfc0007ff, 0x7c000115, 0x0, // Add Extended XO-form (adde. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {ADDEO, 0xfc0007ff, 0x7c000514, 0x0, // Add Extended XO-form (addeo RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {ADDEOCC, 0xfc0007ff, 0x7c000515, 0x0, // Add Extended XO-form (addeo. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {ADDME, 0xfc0007ff, 0x7c0001d4, 0xf800, // Add to Minus One Extended XO-form (addme RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {ADDMECC, 0xfc0007ff, 0x7c0001d5, 0xf800, // Add to Minus One Extended XO-form (addme. RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {ADDMEO, 0xfc0007ff, 0x7c0005d4, 0xf800, // Add to Minus One Extended XO-form (addmeo RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {ADDMEOCC, 0xfc0007ff, 0x7c0005d5, 0xf800, // Add to Minus One Extended XO-form (addmeo. RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {SUBFE, 0xfc0007ff, 0x7c000110, 0x0, // Subtract From Extended XO-form (subfe RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {SUBFECC, 0xfc0007ff, 0x7c000111, 0x0, // Subtract From Extended XO-form (subfe. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {SUBFEO, 0xfc0007ff, 0x7c000510, 0x0, // Subtract From Extended XO-form (subfeo RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {SUBFEOCC, 0xfc0007ff, 0x7c000511, 0x0, // Subtract From Extended XO-form (subfeo. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {SUBFME, 0xfc0007ff, 0x7c0001d0, 0xf800, // Subtract From Minus One Extended XO-form (subfme RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {SUBFMECC, 0xfc0007ff, 0x7c0001d1, 0xf800, // Subtract From Minus One Extended XO-form (subfme. RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {SUBFMEO, 0xfc0007ff, 0x7c0005d0, 0xf800, // Subtract From Minus One Extended XO-form (subfmeo RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {SUBFMEOCC, 0xfc0007ff, 0x7c0005d1, 0xf800, // Subtract From Minus One Extended XO-form (subfmeo. RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {ADDZE, 0xfc0007ff, 0x7c000194, 0xf800, // Add to Zero Extended XO-form (addze RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {ADDZECC, 0xfc0007ff, 0x7c000195, 0xf800, // Add to Zero Extended XO-form (addze. RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {ADDZEO, 0xfc0007ff, 0x7c000594, 0xf800, // Add to Zero Extended XO-form (addzeo RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {ADDZEOCC, 0xfc0007ff, 0x7c000595, 0xf800, // Add to Zero Extended XO-form (addzeo. RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {SUBFZE, 0xfc0007ff, 0x7c000190, 0xf800, // Subtract From Zero Extended XO-form (subfze RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {SUBFZECC, 0xfc0007ff, 0x7c000191, 0xf800, // Subtract From Zero Extended XO-form (subfze. RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {SUBFZEO, 0xfc0007ff, 0x7c000590, 0xf800, // Subtract From Zero Extended XO-form (subfzeo RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {SUBFZEOCC, 0xfc0007ff, 0x7c000591, 0xf800, // Subtract From Zero Extended XO-form (subfzeo. RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {NEG, 0xfc0007ff, 0x7c0000d0, 0xf800, // Negate XO-form (neg RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {NEGCC, 0xfc0007ff, 0x7c0000d1, 0xf800, // Negate XO-form (neg. RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {NEGO, 0xfc0007ff, 0x7c0004d0, 0xf800, // Negate XO-form (nego RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {NEGOCC, 0xfc0007ff, 0x7c0004d1, 0xf800, // Negate XO-form (nego. RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {MULLI, 0xfc000000, 0x1c000000, 0x0, // Multiply Low Immediate D-form (mulli RT,RA,SI) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_ImmSigned_16_31}}, - {MULLW, 0xfc0007ff, 0x7c0001d6, 0x0, // Multiply Low Word XO-form (mullw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MULLWCC, 0xfc0007ff, 0x7c0001d7, 0x0, // Multiply Low Word XO-form (mullw. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MULLWO, 0xfc0007ff, 0x7c0005d6, 0x0, // Multiply Low Word XO-form (mullwo RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MULLWOCC, 0xfc0007ff, 0x7c0005d7, 0x0, // Multiply Low Word XO-form (mullwo. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MULHW, 0xfc0003ff, 0x7c000096, 0x400, // Multiply High Word XO-form (mulhw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MULHWCC, 0xfc0003ff, 0x7c000097, 0x400, // Multiply High Word XO-form (mulhw. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MULHWU, 0xfc0003ff, 0x7c000016, 0x400, // Multiply High Word Unsigned XO-form (mulhwu RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MULHWUCC, 0xfc0003ff, 0x7c000017, 0x400, // Multiply High Word Unsigned XO-form (mulhwu. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVW, 0xfc0007ff, 0x7c0003d6, 0x0, // Divide Word XO-form (divw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVWCC, 0xfc0007ff, 0x7c0003d7, 0x0, // Divide Word XO-form (divw. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVWO, 0xfc0007ff, 0x7c0007d6, 0x0, // Divide Word XO-form (divwo RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVWOCC, 0xfc0007ff, 0x7c0007d7, 0x0, // Divide Word XO-form (divwo. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVWU, 0xfc0007ff, 0x7c000396, 0x0, // Divide Word Unsigned XO-form (divwu RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVWUCC, 0xfc0007ff, 0x7c000397, 0x0, // Divide Word Unsigned XO-form (divwu. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVWUO, 0xfc0007ff, 0x7c000796, 0x0, // Divide Word Unsigned XO-form (divwuo RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVWUOCC, 0xfc0007ff, 0x7c000797, 0x0, // Divide Word Unsigned XO-form (divwuo. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVWE, 0xfc0007ff, 0x7c000356, 0x0, // Divide Word Extended XO-form (divwe RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVWECC, 0xfc0007ff, 0x7c000357, 0x0, // Divide Word Extended XO-form (divwe. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVWEO, 0xfc0007ff, 0x7c000756, 0x0, // Divide Word Extended XO-form (divweo RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVWEOCC, 0xfc0007ff, 0x7c000757, 0x0, // Divide Word Extended XO-form (divweo. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVWEU, 0xfc0007ff, 0x7c000316, 0x0, // Divide Word Extended Unsigned XO-form (divweu RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVWEUCC, 0xfc0007ff, 0x7c000317, 0x0, // Divide Word Extended Unsigned XO-form (divweu. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVWEUO, 0xfc0007ff, 0x7c000716, 0x0, // Divide Word Extended Unsigned XO-form (divweuo RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVWEUOCC, 0xfc0007ff, 0x7c000717, 0x0, // Divide Word Extended Unsigned XO-form (divweuo. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MULLD, 0xfc0007ff, 0x7c0001d2, 0x0, // Multiply Low Doubleword XO-form (mulld RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MULLDCC, 0xfc0007ff, 0x7c0001d3, 0x0, // Multiply Low Doubleword XO-form (mulld. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MULLDO, 0xfc0007ff, 0x7c0005d2, 0x0, // Multiply Low Doubleword XO-form (mulldo RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MULLDOCC, 0xfc0007ff, 0x7c0005d3, 0x0, // Multiply Low Doubleword XO-form (mulldo. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MULHDU, 0xfc0003ff, 0x7c000012, 0x400, // Multiply High Doubleword Unsigned XO-form (mulhdu RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MULHDUCC, 0xfc0003ff, 0x7c000013, 0x400, // Multiply High Doubleword Unsigned XO-form (mulhdu. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MULHD, 0xfc0003ff, 0x7c000092, 0x400, // Multiply High Doubleword XO-form (mulhd RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MULHDCC, 0xfc0003ff, 0x7c000093, 0x400, // Multiply High Doubleword XO-form (mulhd. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVD, 0xfc0007ff, 0x7c0003d2, 0x0, // Divide Doubleword XO-form (divd RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVDCC, 0xfc0007ff, 0x7c0003d3, 0x0, // Divide Doubleword XO-form (divd. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVDO, 0xfc0007ff, 0x7c0007d2, 0x0, // Divide Doubleword XO-form (divdo RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVDOCC, 0xfc0007ff, 0x7c0007d3, 0x0, // Divide Doubleword XO-form (divdo. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVDU, 0xfc0007ff, 0x7c000392, 0x0, // Divide Doubleword Unsigned XO-form (divdu RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVDUCC, 0xfc0007ff, 0x7c000393, 0x0, // Divide Doubleword Unsigned XO-form (divdu. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVDUO, 0xfc0007ff, 0x7c000792, 0x0, // Divide Doubleword Unsigned XO-form (divduo RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVDUOCC, 0xfc0007ff, 0x7c000793, 0x0, // Divide Doubleword Unsigned XO-form (divduo. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVDE, 0xfc0007ff, 0x7c000352, 0x0, // Divide Doubleword Extended XO-form (divde RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVDECC, 0xfc0007ff, 0x7c000353, 0x0, // Divide Doubleword Extended XO-form (divde. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVDEO, 0xfc0007ff, 0x7c000752, 0x0, // Divide Doubleword Extended XO-form (divdeo RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVDEOCC, 0xfc0007ff, 0x7c000753, 0x0, // Divide Doubleword Extended XO-form (divdeo. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVDEU, 0xfc0007ff, 0x7c000312, 0x0, // Divide Doubleword Extended Unsigned XO-form (divdeu RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVDEUCC, 0xfc0007ff, 0x7c000313, 0x0, // Divide Doubleword Extended Unsigned XO-form (divdeu. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVDEUO, 0xfc0007ff, 0x7c000712, 0x0, // Divide Doubleword Extended Unsigned XO-form (divdeuo RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DIVDEUOCC, 0xfc0007ff, 0x7c000713, 0x0, // Divide Doubleword Extended Unsigned XO-form (divdeuo. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {CMPWI, 0xfc200000, 0x2c000000, 0x400000, // Compare Immediate D-form (cmpwi BF,RA,SI) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_ImmSigned_16_31}}, - {CMPDI, 0xfc200000, 0x2c200000, 0x400000, // Compare Immediate D-form (cmpdi BF,RA,SI) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_ImmSigned_16_31}}, - {CMPW, 0xfc2007fe, 0x7c000000, 0x400001, // Compare X-form (cmpw BF,RA,RB) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, - {CMPD, 0xfc2007fe, 0x7c200000, 0x400001, // Compare X-form (cmpd BF,RA,RB) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, - {CMPLWI, 0xfc200000, 0x28000000, 0x400000, // Compare Logical Immediate D-form (cmplwi BF,RA,UI) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_ImmUnsigned_16_31}}, - {CMPLDI, 0xfc200000, 0x28200000, 0x400000, // Compare Logical Immediate D-form (cmpldi BF,RA,UI) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_ImmUnsigned_16_31}}, - {CMPLW, 0xfc2007fe, 0x7c000040, 0x400001, // Compare Logical X-form (cmplw BF,RA,RB) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, - {CMPLD, 0xfc2007fe, 0x7c200040, 0x400001, // Compare Logical X-form (cmpld BF,RA,RB) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, - {TWI, 0xfc000000, 0xc000000, 0x0, // Trap Word Immediate D-form (twi TO,RA,SI) - [5]*argField{ap_ImmUnsigned_6_10, ap_Reg_11_15, ap_ImmSigned_16_31}}, - {TW, 0xfc0007fe, 0x7c000008, 0x1, // Trap Word X-form (tw TO,RA,RB) - [5]*argField{ap_ImmUnsigned_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {TDI, 0xfc000000, 0x8000000, 0x0, // Trap Doubleword Immediate D-form (tdi TO,RA,SI) - [5]*argField{ap_ImmUnsigned_6_10, ap_Reg_11_15, ap_ImmSigned_16_31}}, - {ISEL, 0xfc00003e, 0x7c00001e, 0x1, // Integer Select A-form (isel RT,RA,RB,BC) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20, ap_CondRegBit_21_25}}, - {TD, 0xfc0007fe, 0x7c000088, 0x1, // Trap Doubleword X-form (td TO,RA,RB) - [5]*argField{ap_ImmUnsigned_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {ANDICC, 0xfc000000, 0x70000000, 0x0, // AND Immediate D-form (andi. RA,RS,UI) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_16_31}}, - {ANDISCC, 0xfc000000, 0x74000000, 0x0, // AND Immediate Shifted D-form (andis. RA,RS,UI) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_16_31}}, - {ORI, 0xfc000000, 0x60000000, 0x0, // OR Immediate D-form (ori RA,RS,UI) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_16_31}}, - {ORIS, 0xfc000000, 0x64000000, 0x0, // OR Immediate Shifted D-form (oris RA,RS,UI) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_16_31}}, - {XORI, 0xfc000000, 0x68000000, 0x0, // XOR Immediate D-form (xori RA,RS,UI) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_16_31}}, - {XORIS, 0xfc000000, 0x6c000000, 0x0, // XOR Immediate Shifted D-form (xoris RA,RS,UI) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_16_31}}, - {AND, 0xfc0007ff, 0x7c000038, 0x0, // AND X-form (and RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {ANDCC, 0xfc0007ff, 0x7c000039, 0x0, // AND X-form (and. RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {XOR, 0xfc0007ff, 0x7c000278, 0x0, // XOR X-form (xor RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {XORCC, 0xfc0007ff, 0x7c000279, 0x0, // XOR X-form (xor. RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {NAND, 0xfc0007ff, 0x7c0003b8, 0x0, // NAND X-form (nand RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {NANDCC, 0xfc0007ff, 0x7c0003b9, 0x0, // NAND X-form (nand. RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {OR, 0xfc0007ff, 0x7c000378, 0x0, // OR X-form (or RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {ORCC, 0xfc0007ff, 0x7c000379, 0x0, // OR X-form (or. RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {NOR, 0xfc0007ff, 0x7c0000f8, 0x0, // NOR X-form (nor RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {NORCC, 0xfc0007ff, 0x7c0000f9, 0x0, // NOR X-form (nor. RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {ANDC, 0xfc0007ff, 0x7c000078, 0x0, // AND with Complement X-form (andc RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {ANDCCC, 0xfc0007ff, 0x7c000079, 0x0, // AND with Complement X-form (andc. RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {EXTSB, 0xfc0007ff, 0x7c000774, 0xf800, // Extend Sign Byte X-form (extsb RA,RS) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10}}, - {EXTSBCC, 0xfc0007ff, 0x7c000775, 0xf800, // Extend Sign Byte X-form (extsb. RA,RS) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10}}, - {EQV, 0xfc0007ff, 0x7c000238, 0x0, // Equivalent X-form (eqv RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {EQVCC, 0xfc0007ff, 0x7c000239, 0x0, // Equivalent X-form (eqv. RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {ORC, 0xfc0007ff, 0x7c000338, 0x0, // OR with Complement X-form (orc RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {ORCCC, 0xfc0007ff, 0x7c000339, 0x0, // OR with Complement X-form (orc. RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {EXTSH, 0xfc0007ff, 0x7c000734, 0xf800, // Extend Sign Halfword X-form (extsh RA,RS) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10}}, - {EXTSHCC, 0xfc0007ff, 0x7c000735, 0xf800, // Extend Sign Halfword X-form (extsh. RA,RS) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10}}, - {CMPB, 0xfc0007fe, 0x7c0003f8, 0x1, // Compare Bytes X-form (cmpb RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {POPCNTB, 0xfc0007fe, 0x7c0000f4, 0xf801, // Population Count Bytes X-form (popcntb RA, RS) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10}}, - {POPCNTW, 0xfc0007fe, 0x7c0002f4, 0xf801, // Population Count Words X-form (popcntw RA, RS) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10}}, - {PRTYD, 0xfc0007fe, 0x7c000174, 0xf801, // Parity Doubleword X-form (prtyd RA,RS) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10}}, - {PRTYW, 0xfc0007fe, 0x7c000134, 0xf801, // Parity Word X-form (prtyw RA,RS) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10}}, - {EXTSW, 0xfc0007ff, 0x7c0007b4, 0xf800, // Extend Sign Word X-form (extsw RA,RS) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10}}, - {EXTSWCC, 0xfc0007ff, 0x7c0007b5, 0xf800, // Extend Sign Word X-form (extsw. RA,RS) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10}}, - {CNTLZD, 0xfc0007ff, 0x7c000074, 0xf800, // Count Leading Zeros Doubleword X-form (cntlzd RA,RS) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10}}, - {CNTLZDCC, 0xfc0007ff, 0x7c000075, 0xf800, // Count Leading Zeros Doubleword X-form (cntlzd. RA,RS) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10}}, - {POPCNTD, 0xfc0007fe, 0x7c0003f4, 0xf801, // Population Count Doubleword X-form (popcntd RA, RS) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10}}, - {BPERMD, 0xfc0007fe, 0x7c0001f8, 0x1, // Bit Permute Doubleword X-form (bpermd RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {RLWINM, 0xfc000001, 0x54000000, 0x0, // Rotate Left Word Immediate then AND with Mask M-form (rlwinm RA,RS,SH,MB,ME) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_16_20, ap_ImmUnsigned_21_25, ap_ImmUnsigned_26_30}}, - {RLWINMCC, 0xfc000001, 0x54000001, 0x0, // Rotate Left Word Immediate then AND with Mask M-form (rlwinm. RA,RS,SH,MB,ME) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_16_20, ap_ImmUnsigned_21_25, ap_ImmUnsigned_26_30}}, - {RLWNM, 0xfc000001, 0x5c000000, 0x0, // Rotate Left Word then AND with Mask M-form (rlwnm RA,RS,RB,MB,ME) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20, ap_ImmUnsigned_21_25, ap_ImmUnsigned_26_30}}, - {RLWNMCC, 0xfc000001, 0x5c000001, 0x0, // Rotate Left Word then AND with Mask M-form (rlwnm. RA,RS,RB,MB,ME) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20, ap_ImmUnsigned_21_25, ap_ImmUnsigned_26_30}}, - {RLWIMI, 0xfc000001, 0x50000000, 0x0, // Rotate Left Word Immediate then Mask Insert M-form (rlwimi RA,RS,SH,MB,ME) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_16_20, ap_ImmUnsigned_21_25, ap_ImmUnsigned_26_30}}, - {RLWIMICC, 0xfc000001, 0x50000001, 0x0, // Rotate Left Word Immediate then Mask Insert M-form (rlwimi. RA,RS,SH,MB,ME) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_16_20, ap_ImmUnsigned_21_25, ap_ImmUnsigned_26_30}}, - {RLDICL, 0xfc00001d, 0x78000000, 0x0, // Rotate Left Doubleword Immediate then Clear Left MD-form (rldicl RA,RS,SH,MB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_30_30_16_20, ap_ImmUnsigned_26_26_21_25}}, - {RLDICLCC, 0xfc00001d, 0x78000001, 0x0, // Rotate Left Doubleword Immediate then Clear Left MD-form (rldicl. RA,RS,SH,MB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_30_30_16_20, ap_ImmUnsigned_26_26_21_25}}, - {RLDICR, 0xfc00001d, 0x78000004, 0x0, // Rotate Left Doubleword Immediate then Clear Right MD-form (rldicr RA,RS,SH,ME) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_30_30_16_20, ap_ImmUnsigned_26_26_21_25}}, - {RLDICRCC, 0xfc00001d, 0x78000005, 0x0, // Rotate Left Doubleword Immediate then Clear Right MD-form (rldicr. RA,RS,SH,ME) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_30_30_16_20, ap_ImmUnsigned_26_26_21_25}}, - {RLDIC, 0xfc00001d, 0x78000008, 0x0, // Rotate Left Doubleword Immediate then Clear MD-form (rldic RA,RS,SH,MB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_30_30_16_20, ap_ImmUnsigned_26_26_21_25}}, - {RLDICCC, 0xfc00001d, 0x78000009, 0x0, // Rotate Left Doubleword Immediate then Clear MD-form (rldic. RA,RS,SH,MB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_30_30_16_20, ap_ImmUnsigned_26_26_21_25}}, - {RLDCL, 0xfc00001f, 0x78000010, 0x0, // Rotate Left Doubleword then Clear Left MDS-form (rldcl RA,RS,RB,MB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20, ap_ImmUnsigned_26_26_21_25}}, - {RLDCLCC, 0xfc00001f, 0x78000011, 0x0, // Rotate Left Doubleword then Clear Left MDS-form (rldcl. RA,RS,RB,MB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20, ap_ImmUnsigned_26_26_21_25}}, - {RLDCR, 0xfc00001f, 0x78000012, 0x0, // Rotate Left Doubleword then Clear Right MDS-form (rldcr RA,RS,RB,ME) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20, ap_ImmUnsigned_26_26_21_25}}, - {RLDCRCC, 0xfc00001f, 0x78000013, 0x0, // Rotate Left Doubleword then Clear Right MDS-form (rldcr. RA,RS,RB,ME) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20, ap_ImmUnsigned_26_26_21_25}}, - {RLDIMI, 0xfc00001d, 0x7800000c, 0x0, // Rotate Left Doubleword Immediate then Mask Insert MD-form (rldimi RA,RS,SH,MB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_30_30_16_20, ap_ImmUnsigned_26_26_21_25}}, - {RLDIMICC, 0xfc00001d, 0x7800000d, 0x0, // Rotate Left Doubleword Immediate then Mask Insert MD-form (rldimi. RA,RS,SH,MB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_30_30_16_20, ap_ImmUnsigned_26_26_21_25}}, - {SLW, 0xfc0007ff, 0x7c000030, 0x0, // Shift Left Word X-form (slw RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {SLWCC, 0xfc0007ff, 0x7c000031, 0x0, // Shift Left Word X-form (slw. RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {SRW, 0xfc0007ff, 0x7c000430, 0x0, // Shift Right Word X-form (srw RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {SRWCC, 0xfc0007ff, 0x7c000431, 0x0, // Shift Right Word X-form (srw. RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {SRAWI, 0xfc0007ff, 0x7c000670, 0x0, // Shift Right Algebraic Word Immediate X-form (srawi RA,RS,SH) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_16_20}}, - {SRAWICC, 0xfc0007ff, 0x7c000671, 0x0, // Shift Right Algebraic Word Immediate X-form (srawi. RA,RS,SH) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_16_20}}, - {SRAW, 0xfc0007ff, 0x7c000630, 0x0, // Shift Right Algebraic Word X-form (sraw RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {SRAWCC, 0xfc0007ff, 0x7c000631, 0x0, // Shift Right Algebraic Word X-form (sraw. RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {SLD, 0xfc0007ff, 0x7c000036, 0x0, // Shift Left Doubleword X-form (sld RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {SLDCC, 0xfc0007ff, 0x7c000037, 0x0, // Shift Left Doubleword X-form (sld. RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {SRD, 0xfc0007ff, 0x7c000436, 0x0, // Shift Right Doubleword X-form (srd RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {SRDCC, 0xfc0007ff, 0x7c000437, 0x0, // Shift Right Doubleword X-form (srd. RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {SRADI, 0xfc0007fd, 0x7c000674, 0x0, // Shift Right Algebraic Doubleword Immediate XS-form (sradi RA,RS,SH) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_30_30_16_20}}, - {SRADICC, 0xfc0007fd, 0x7c000675, 0x0, // Shift Right Algebraic Doubleword Immediate XS-form (sradi. RA,RS,SH) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_30_30_16_20}}, - {SRAD, 0xfc0007ff, 0x7c000634, 0x0, // Shift Right Algebraic Doubleword X-form (srad RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {SRADCC, 0xfc0007ff, 0x7c000635, 0x0, // Shift Right Algebraic Doubleword X-form (srad. RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {CDTBCD, 0xfc0007fe, 0x7c000234, 0xf801, // Convert Declets To Binary Coded Decimal X-form (cdtbcd RA, RS) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10}}, - {CBCDTD, 0xfc0007fe, 0x7c000274, 0xf801, // Convert Binary Coded Decimal To Declets X-form (cbcdtd RA, RS) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10}}, - {ADDG6S, 0xfc0003fe, 0x7c000094, 0x401, // Add and Generate Sixes XO-form (addg6s RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MTSPR, 0xfc0007fe, 0x7c0003a6, 0x1, // Move To Special Purpose Register XFX-form (mtspr SPR,RS) - [5]*argField{ap_SpReg_16_20_11_15, ap_Reg_6_10}}, - {MFSPR, 0xfc0007fe, 0x7c0002a6, 0x1, // Move From Special Purpose Register XFX-form (mfspr RT,SPR) - [5]*argField{ap_Reg_6_10, ap_SpReg_16_20_11_15}}, - {MTCRF, 0xfc1007fe, 0x7c000120, 0x801, // Move To Condition Register Fields XFX-form (mtcrf FXM,RS) - [5]*argField{ap_ImmUnsigned_12_19, ap_Reg_6_10}}, - {MFCR, 0xfc1007fe, 0x7c000026, 0xff801, // Move From Condition Register XFX-form (mfcr RT) - [5]*argField{ap_Reg_6_10}}, - {MTSLE, 0xfc0007fe, 0x7c000126, 0x3dff801, // Move To Split Little Endian X-form (mtsle L) - [5]*argField{ap_ImmUnsigned_10_10}}, - {MFVSRD, 0xfc0007fe, 0x7c000066, 0xf800, // Move From VSR Doubleword XX1-form (mfvsrd RA,XS) - [5]*argField{ap_Reg_11_15, ap_VecSReg_31_31_6_10}}, - {MFVSRWZ, 0xfc0007fe, 0x7c0000e6, 0xf800, // Move From VSR Word and Zero XX1-form (mfvsrwz RA,XS) - [5]*argField{ap_Reg_11_15, ap_VecSReg_31_31_6_10}}, - {MTVSRD, 0xfc0007fe, 0x7c000166, 0xf800, // Move To VSR Doubleword XX1-form (mtvsrd XT,RA) - [5]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15}}, - {MTVSRWA, 0xfc0007fe, 0x7c0001a6, 0xf800, // Move To VSR Word Algebraic XX1-form (mtvsrwa XT,RA) - [5]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15}}, - {MTVSRWZ, 0xfc0007fe, 0x7c0001e6, 0xf800, // Move To VSR Word and Zero XX1-form (mtvsrwz XT,RA) - [5]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15}}, - {MTOCRF, 0xfc1007fe, 0x7c100120, 0x801, // Move To One Condition Register Field XFX-form (mtocrf FXM,RS) - [5]*argField{ap_ImmUnsigned_12_19, ap_Reg_6_10}}, - {MFOCRF, 0xfc1007fe, 0x7c100026, 0x801, // Move From One Condition Register Field XFX-form (mfocrf RT,FXM) - [5]*argField{ap_Reg_6_10, ap_ImmUnsigned_12_19}}, - {MCRXR, 0xfc0007fe, 0x7c000400, 0x7ff801, // Move to Condition Register from XER X-form (mcrxr BF) - [5]*argField{ap_CondRegField_6_8}}, - {MTDCRUX, 0xfc0007fe, 0x7c000346, 0xf801, // Move To Device Control Register User-mode Indexed X-form (mtdcrux RS,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {MFDCRUX, 0xfc0007fe, 0x7c000246, 0xf801, // Move From Device Control Register User-mode Indexed X-form (mfdcrux RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {LFS, 0xfc000000, 0xc0000000, 0x0, // Load Floating-Point Single D-form (lfs FRT,D(RA)) - [5]*argField{ap_FPReg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, - {LFSU, 0xfc000000, 0xc4000000, 0x0, // Load Floating-Point Single with Update D-form (lfsu FRT,D(RA)) - [5]*argField{ap_FPReg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, - {LFSX, 0xfc0007fe, 0x7c00042e, 0x1, // Load Floating-Point Single Indexed X-form (lfsx FRT,RA,RB) - [5]*argField{ap_FPReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LFSUX, 0xfc0007fe, 0x7c00046e, 0x1, // Load Floating-Point Single with Update Indexed X-form (lfsux FRT,RA,RB) - [5]*argField{ap_FPReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LFD, 0xfc000000, 0xc8000000, 0x0, // Load Floating-Point Double D-form (lfd FRT,D(RA)) - [5]*argField{ap_FPReg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, - {LFDU, 0xfc000000, 0xcc000000, 0x0, // Load Floating-Point Double with Update D-form (lfdu FRT,D(RA)) - [5]*argField{ap_FPReg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, - {LFDX, 0xfc0007fe, 0x7c0004ae, 0x1, // Load Floating-Point Double Indexed X-form (lfdx FRT,RA,RB) - [5]*argField{ap_FPReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LFDUX, 0xfc0007fe, 0x7c0004ee, 0x1, // Load Floating-Point Double with Update Indexed X-form (lfdux FRT,RA,RB) - [5]*argField{ap_FPReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LFIWAX, 0xfc0007fe, 0x7c0006ae, 0x1, // Load Floating-Point as Integer Word Algebraic Indexed X-form (lfiwax FRT,RA,RB) - [5]*argField{ap_FPReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LFIWZX, 0xfc0007fe, 0x7c0006ee, 0x1, // Load Floating-Point as Integer Word and Zero Indexed X-form (lfiwzx FRT,RA,RB) - [5]*argField{ap_FPReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STFS, 0xfc000000, 0xd0000000, 0x0, // Store Floating-Point Single D-form (stfs FRS,D(RA)) - [5]*argField{ap_FPReg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, - {STFSU, 0xfc000000, 0xd4000000, 0x0, // Store Floating-Point Single with Update D-form (stfsu FRS,D(RA)) - [5]*argField{ap_FPReg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, - {STFSX, 0xfc0007fe, 0x7c00052e, 0x1, // Store Floating-Point Single Indexed X-form (stfsx FRS,RA,RB) - [5]*argField{ap_FPReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STFSUX, 0xfc0007fe, 0x7c00056e, 0x1, // Store Floating-Point Single with Update Indexed X-form (stfsux FRS,RA,RB) - [5]*argField{ap_FPReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STFD, 0xfc000000, 0xd8000000, 0x0, // Store Floating-Point Double D-form (stfd FRS,D(RA)) - [5]*argField{ap_FPReg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, - {STFDU, 0xfc000000, 0xdc000000, 0x0, // Store Floating-Point Double with Update D-form (stfdu FRS,D(RA)) - [5]*argField{ap_FPReg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, - {STFDX, 0xfc0007fe, 0x7c0005ae, 0x1, // Store Floating-Point Double Indexed X-form (stfdx FRS,RA,RB) - [5]*argField{ap_FPReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STFDUX, 0xfc0007fe, 0x7c0005ee, 0x1, // Store Floating-Point Double with Update Indexed X-form (stfdux FRS,RA,RB) - [5]*argField{ap_FPReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STFIWX, 0xfc0007fe, 0x7c0007ae, 0x1, // Store Floating-Point as Integer Word Indexed X-form (stfiwx FRS,RA,RB) - [5]*argField{ap_FPReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LFDP, 0xfc000003, 0xe4000000, 0x0, // Load Floating-Point Double Pair DS-form (lfdp FRTp,DS(RA)) - [5]*argField{ap_FPReg_6_10, ap_Offset_16_29_shift2, ap_Reg_11_15}}, - {LFDPX, 0xfc0007fe, 0x7c00062e, 0x1, // Load Floating-Point Double Pair Indexed X-form (lfdpx FRTp,RA,RB) - [5]*argField{ap_FPReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STFDP, 0xfc000003, 0xf4000000, 0x0, // Store Floating-Point Double Pair DS-form (stfdp FRSp,DS(RA)) - [5]*argField{ap_FPReg_6_10, ap_Offset_16_29_shift2, ap_Reg_11_15}}, - {STFDPX, 0xfc0007fe, 0x7c00072e, 0x1, // Store Floating-Point Double Pair Indexed X-form (stfdpx FRSp,RA,RB) - [5]*argField{ap_FPReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {FMR, 0xfc0007ff, 0xfc000090, 0x1f0000, // Floating Move Register X-form (fmr FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FMRCC, 0xfc0007ff, 0xfc000091, 0x1f0000, // Floating Move Register X-form (fmr. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FABS, 0xfc0007ff, 0xfc000210, 0x1f0000, // Floating Absolute Value X-form (fabs FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FABSCC, 0xfc0007ff, 0xfc000211, 0x1f0000, // Floating Absolute Value X-form (fabs. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FNABS, 0xfc0007ff, 0xfc000110, 0x1f0000, // Floating Negative Absolute Value X-form (fnabs FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FNABSCC, 0xfc0007ff, 0xfc000111, 0x1f0000, // Floating Negative Absolute Value X-form (fnabs. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FNEG, 0xfc0007ff, 0xfc000050, 0x1f0000, // Floating Negate X-form (fneg FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FNEGCC, 0xfc0007ff, 0xfc000051, 0x1f0000, // Floating Negate X-form (fneg. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FCPSGN, 0xfc0007ff, 0xfc000010, 0x0, // Floating Copy Sign X-form (fcpsgn FRT, FRA, FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, - {FCPSGNCC, 0xfc0007ff, 0xfc000011, 0x0, // Floating Copy Sign X-form (fcpsgn. FRT, FRA, FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, - {FMRGEW, 0xfc0007fe, 0xfc00078c, 0x1, // Floating Merge Even Word X-form (fmrgew FRT,FRA,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, - {FMRGOW, 0xfc0007fe, 0xfc00068c, 0x1, // Floating Merge Odd Word X-form (fmrgow FRT,FRA,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, - {FADD, 0xfc00003f, 0xfc00002a, 0x7c0, // Floating Add [Single] A-form (fadd FRT,FRA,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, - {FADDCC, 0xfc00003f, 0xfc00002b, 0x7c0, // Floating Add [Single] A-form (fadd. FRT,FRA,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, - {FADDS, 0xfc00003f, 0xec00002a, 0x7c0, // Floating Add [Single] A-form (fadds FRT,FRA,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, - {FADDSCC, 0xfc00003f, 0xec00002b, 0x7c0, // Floating Add [Single] A-form (fadds. FRT,FRA,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, - {FSUB, 0xfc00003f, 0xfc000028, 0x7c0, // Floating Subtract [Single] A-form (fsub FRT,FRA,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, - {FSUBCC, 0xfc00003f, 0xfc000029, 0x7c0, // Floating Subtract [Single] A-form (fsub. FRT,FRA,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, - {FSUBS, 0xfc00003f, 0xec000028, 0x7c0, // Floating Subtract [Single] A-form (fsubs FRT,FRA,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, - {FSUBSCC, 0xfc00003f, 0xec000029, 0x7c0, // Floating Subtract [Single] A-form (fsubs. FRT,FRA,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, - {FMUL, 0xfc00003f, 0xfc000032, 0xf800, // Floating Multiply [Single] A-form (fmul FRT,FRA,FRC) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25}}, - {FMULCC, 0xfc00003f, 0xfc000033, 0xf800, // Floating Multiply [Single] A-form (fmul. FRT,FRA,FRC) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25}}, - {FMULS, 0xfc00003f, 0xec000032, 0xf800, // Floating Multiply [Single] A-form (fmuls FRT,FRA,FRC) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25}}, - {FMULSCC, 0xfc00003f, 0xec000033, 0xf800, // Floating Multiply [Single] A-form (fmuls. FRT,FRA,FRC) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25}}, - {FDIV, 0xfc00003f, 0xfc000024, 0x7c0, // Floating Divide [Single] A-form (fdiv FRT,FRA,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, - {FDIVCC, 0xfc00003f, 0xfc000025, 0x7c0, // Floating Divide [Single] A-form (fdiv. FRT,FRA,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, - {FDIVS, 0xfc00003f, 0xec000024, 0x7c0, // Floating Divide [Single] A-form (fdivs FRT,FRA,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, - {FDIVSCC, 0xfc00003f, 0xec000025, 0x7c0, // Floating Divide [Single] A-form (fdivs. FRT,FRA,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, - {FSQRT, 0xfc00003f, 0xfc00002c, 0x1f07c0, // Floating Square Root [Single] A-form (fsqrt FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FSQRTCC, 0xfc00003f, 0xfc00002d, 0x1f07c0, // Floating Square Root [Single] A-form (fsqrt. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FSQRTS, 0xfc00003f, 0xec00002c, 0x1f07c0, // Floating Square Root [Single] A-form (fsqrts FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FSQRTSCC, 0xfc00003f, 0xec00002d, 0x1f07c0, // Floating Square Root [Single] A-form (fsqrts. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FRE, 0xfc00003f, 0xfc000030, 0x1f07c0, // Floating Reciprocal Estimate [Single] A-form (fre FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FRECC, 0xfc00003f, 0xfc000031, 0x1f07c0, // Floating Reciprocal Estimate [Single] A-form (fre. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FRES, 0xfc00003f, 0xec000030, 0x1f07c0, // Floating Reciprocal Estimate [Single] A-form (fres FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FRESCC, 0xfc00003f, 0xec000031, 0x1f07c0, // Floating Reciprocal Estimate [Single] A-form (fres. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FRSQRTE, 0xfc00003f, 0xfc000034, 0x1f07c0, // Floating Reciprocal Square Root Estimate [Single] A-form (frsqrte FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FRSQRTECC, 0xfc00003f, 0xfc000035, 0x1f07c0, // Floating Reciprocal Square Root Estimate [Single] A-form (frsqrte. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FRSQRTES, 0xfc00003f, 0xec000034, 0x1f07c0, // Floating Reciprocal Square Root Estimate [Single] A-form (frsqrtes FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FRSQRTESCC, 0xfc00003f, 0xec000035, 0x1f07c0, // Floating Reciprocal Square Root Estimate [Single] A-form (frsqrtes. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FTDIV, 0xfc0007fe, 0xfc000100, 0x600001, // Floating Test for software Divide X-form (ftdiv BF,FRA,FRB) - [5]*argField{ap_CondRegField_6_8, ap_FPReg_11_15, ap_FPReg_16_20}}, - {FTSQRT, 0xfc0007fe, 0xfc000140, 0x7f0001, // Floating Test for software Square Root X-form (ftsqrt BF,FRB) - [5]*argField{ap_CondRegField_6_8, ap_FPReg_16_20}}, - {FMADD, 0xfc00003f, 0xfc00003a, 0x0, // Floating Multiply-Add [Single] A-form (fmadd FRT,FRA,FRC,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, - {FMADDCC, 0xfc00003f, 0xfc00003b, 0x0, // Floating Multiply-Add [Single] A-form (fmadd. FRT,FRA,FRC,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, - {FMADDS, 0xfc00003f, 0xec00003a, 0x0, // Floating Multiply-Add [Single] A-form (fmadds FRT,FRA,FRC,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, - {FMADDSCC, 0xfc00003f, 0xec00003b, 0x0, // Floating Multiply-Add [Single] A-form (fmadds. FRT,FRA,FRC,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, - {FMSUB, 0xfc00003f, 0xfc000038, 0x0, // Floating Multiply-Subtract [Single] A-form (fmsub FRT,FRA,FRC,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, - {FMSUBCC, 0xfc00003f, 0xfc000039, 0x0, // Floating Multiply-Subtract [Single] A-form (fmsub. FRT,FRA,FRC,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, - {FMSUBS, 0xfc00003f, 0xec000038, 0x0, // Floating Multiply-Subtract [Single] A-form (fmsubs FRT,FRA,FRC,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, - {FMSUBSCC, 0xfc00003f, 0xec000039, 0x0, // Floating Multiply-Subtract [Single] A-form (fmsubs. FRT,FRA,FRC,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, - {FNMADD, 0xfc00003f, 0xfc00003e, 0x0, // Floating Negative Multiply-Add [Single] A-form (fnmadd FRT,FRA,FRC,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, - {FNMADDCC, 0xfc00003f, 0xfc00003f, 0x0, // Floating Negative Multiply-Add [Single] A-form (fnmadd. FRT,FRA,FRC,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, - {FNMADDS, 0xfc00003f, 0xec00003e, 0x0, // Floating Negative Multiply-Add [Single] A-form (fnmadds FRT,FRA,FRC,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, - {FNMADDSCC, 0xfc00003f, 0xec00003f, 0x0, // Floating Negative Multiply-Add [Single] A-form (fnmadds. FRT,FRA,FRC,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, - {FNMSUB, 0xfc00003f, 0xfc00003c, 0x0, // Floating Negative Multiply-Subtract [Single] A-form (fnmsub FRT,FRA,FRC,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, - {FNMSUBCC, 0xfc00003f, 0xfc00003d, 0x0, // Floating Negative Multiply-Subtract [Single] A-form (fnmsub. FRT,FRA,FRC,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, - {FNMSUBS, 0xfc00003f, 0xec00003c, 0x0, // Floating Negative Multiply-Subtract [Single] A-form (fnmsubs FRT,FRA,FRC,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, - {FNMSUBSCC, 0xfc00003f, 0xec00003d, 0x0, // Floating Negative Multiply-Subtract [Single] A-form (fnmsubs. FRT,FRA,FRC,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, - {FRSP, 0xfc0007ff, 0xfc000018, 0x1f0000, // Floating Round to Single-Precision X-form (frsp FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FRSPCC, 0xfc0007ff, 0xfc000019, 0x1f0000, // Floating Round to Single-Precision X-form (frsp. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FCTID, 0xfc0007ff, 0xfc00065c, 0x1f0000, // Floating Convert To Integer Doubleword X-form (fctid FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FCTIDCC, 0xfc0007ff, 0xfc00065d, 0x1f0000, // Floating Convert To Integer Doubleword X-form (fctid. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FCTIDZ, 0xfc0007ff, 0xfc00065e, 0x1f0000, // Floating Convert To Integer Doubleword with round toward Zero X-form (fctidz FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FCTIDZCC, 0xfc0007ff, 0xfc00065f, 0x1f0000, // Floating Convert To Integer Doubleword with round toward Zero X-form (fctidz. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FCTIDU, 0xfc0007ff, 0xfc00075c, 0x1f0000, // Floating Convert To Integer Doubleword Unsigned X-form (fctidu FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FCTIDUCC, 0xfc0007ff, 0xfc00075d, 0x1f0000, // Floating Convert To Integer Doubleword Unsigned X-form (fctidu. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FCTIDUZ, 0xfc0007ff, 0xfc00075e, 0x1f0000, // Floating Convert To Integer Doubleword Unsigned with round toward Zero X-form (fctiduz FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FCTIDUZCC, 0xfc0007ff, 0xfc00075f, 0x1f0000, // Floating Convert To Integer Doubleword Unsigned with round toward Zero X-form (fctiduz. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FCTIW, 0xfc0007ff, 0xfc00001c, 0x1f0000, // Floating Convert To Integer Word X-form (fctiw FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FCTIWCC, 0xfc0007ff, 0xfc00001d, 0x1f0000, // Floating Convert To Integer Word X-form (fctiw. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FCTIWZ, 0xfc0007ff, 0xfc00001e, 0x1f0000, // Floating Convert To Integer Word with round toward Zero X-form (fctiwz FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FCTIWZCC, 0xfc0007ff, 0xfc00001f, 0x1f0000, // Floating Convert To Integer Word with round toward Zero X-form (fctiwz. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FCTIWU, 0xfc0007ff, 0xfc00011c, 0x1f0000, // Floating Convert To Integer Word Unsigned X-form (fctiwu FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FCTIWUCC, 0xfc0007ff, 0xfc00011d, 0x1f0000, // Floating Convert To Integer Word Unsigned X-form (fctiwu. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FCTIWUZ, 0xfc0007ff, 0xfc00011e, 0x1f0000, // Floating Convert To Integer Word Unsigned with round toward Zero X-form (fctiwuz FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FCTIWUZCC, 0xfc0007ff, 0xfc00011f, 0x1f0000, // Floating Convert To Integer Word Unsigned with round toward Zero X-form (fctiwuz. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FCFID, 0xfc0007ff, 0xfc00069c, 0x1f0000, // Floating Convert From Integer Doubleword X-form (fcfid FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FCFIDCC, 0xfc0007ff, 0xfc00069d, 0x1f0000, // Floating Convert From Integer Doubleword X-form (fcfid. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FCFIDU, 0xfc0007ff, 0xfc00079c, 0x1f0000, // Floating Convert From Integer Doubleword Unsigned X-form (fcfidu FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FCFIDUCC, 0xfc0007ff, 0xfc00079d, 0x1f0000, // Floating Convert From Integer Doubleword Unsigned X-form (fcfidu. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FCFIDS, 0xfc0007ff, 0xec00069c, 0x1f0000, // Floating Convert From Integer Doubleword Single X-form (fcfids FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FCFIDSCC, 0xfc0007ff, 0xec00069d, 0x1f0000, // Floating Convert From Integer Doubleword Single X-form (fcfids. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FCFIDUS, 0xfc0007ff, 0xec00079c, 0x1f0000, // Floating Convert From Integer Doubleword Unsigned Single X-form (fcfidus FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FCFIDUSCC, 0xfc0007ff, 0xec00079d, 0x1f0000, // Floating Convert From Integer Doubleword Unsigned Single X-form (fcfidus. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FRIN, 0xfc0007ff, 0xfc000310, 0x1f0000, // Floating Round to Integer Nearest X-form (frin FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FRINCC, 0xfc0007ff, 0xfc000311, 0x1f0000, // Floating Round to Integer Nearest X-form (frin. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FRIZ, 0xfc0007ff, 0xfc000350, 0x1f0000, // Floating Round to Integer Toward Zero X-form (friz FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FRIZCC, 0xfc0007ff, 0xfc000351, 0x1f0000, // Floating Round to Integer Toward Zero X-form (friz. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FRIP, 0xfc0007ff, 0xfc000390, 0x1f0000, // Floating Round to Integer Plus X-form (frip FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FRIPCC, 0xfc0007ff, 0xfc000391, 0x1f0000, // Floating Round to Integer Plus X-form (frip. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FRIM, 0xfc0007ff, 0xfc0003d0, 0x1f0000, // Floating Round to Integer Minus X-form (frim FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FRIMCC, 0xfc0007ff, 0xfc0003d1, 0x1f0000, // Floating Round to Integer Minus X-form (frim. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {FCMPU, 0xfc0007fe, 0xfc000000, 0x600001, // Floating Compare Unordered X-form (fcmpu BF,FRA,FRB) - [5]*argField{ap_CondRegField_6_8, ap_FPReg_11_15, ap_FPReg_16_20}}, - {FCMPO, 0xfc0007fe, 0xfc000040, 0x600001, // Floating Compare Ordered X-form (fcmpo BF,FRA,FRB) - [5]*argField{ap_CondRegField_6_8, ap_FPReg_11_15, ap_FPReg_16_20}}, - {FSEL, 0xfc00003f, 0xfc00002e, 0x0, // Floating Select A-form (fsel FRT,FRA,FRC,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, - {FSELCC, 0xfc00003f, 0xfc00002f, 0x0, // Floating Select A-form (fsel. FRT,FRA,FRC,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, - {MFFS, 0xfc0007ff, 0xfc00048e, 0x1ff800, // Move From FPSCR X-form (mffs FRT) - [5]*argField{ap_FPReg_6_10}}, - {MFFSCC, 0xfc0007ff, 0xfc00048f, 0x1ff800, // Move From FPSCR X-form (mffs. FRT) - [5]*argField{ap_FPReg_6_10}}, - {MCRFS, 0xfc0007fe, 0xfc000080, 0x63f801, // Move to Condition Register from FPSCR X-form (mcrfs BF,BFA) - [5]*argField{ap_CondRegField_6_8, ap_CondRegField_11_13}}, - {MTFSFI, 0xfc0007ff, 0xfc00010c, 0x7e0800, // Move To FPSCR Field Immediate X-form (mtfsfi BF,U,W) - [5]*argField{ap_CondRegField_6_8, ap_ImmUnsigned_16_19, ap_ImmUnsigned_15_15}}, - {MTFSFICC, 0xfc0007ff, 0xfc00010d, 0x7e0800, // Move To FPSCR Field Immediate X-form (mtfsfi. BF,U,W) - [5]*argField{ap_CondRegField_6_8, ap_ImmUnsigned_16_19, ap_ImmUnsigned_15_15}}, - {MTFSF, 0xfc0007ff, 0xfc00058e, 0x0, // Move To FPSCR Fields XFL-form (mtfsf FLM,FRB,L,W) - [5]*argField{ap_ImmUnsigned_7_14, ap_FPReg_16_20, ap_ImmUnsigned_6_6, ap_ImmUnsigned_15_15}}, - {MTFSFCC, 0xfc0007ff, 0xfc00058f, 0x0, // Move To FPSCR Fields XFL-form (mtfsf. FLM,FRB,L,W) - [5]*argField{ap_ImmUnsigned_7_14, ap_FPReg_16_20, ap_ImmUnsigned_6_6, ap_ImmUnsigned_15_15}}, - {MTFSB0, 0xfc0007ff, 0xfc00008c, 0x1ff800, // Move To FPSCR Bit 0 X-form (mtfsb0 BT) - [5]*argField{ap_CondRegBit_6_10}}, - {MTFSB0CC, 0xfc0007ff, 0xfc00008d, 0x1ff800, // Move To FPSCR Bit 0 X-form (mtfsb0. BT) - [5]*argField{ap_CondRegBit_6_10}}, - {MTFSB1, 0xfc0007ff, 0xfc00004c, 0x1ff800, // Move To FPSCR Bit 1 X-form (mtfsb1 BT) - [5]*argField{ap_CondRegBit_6_10}}, - {MTFSB1CC, 0xfc0007ff, 0xfc00004d, 0x1ff800, // Move To FPSCR Bit 1 X-form (mtfsb1. BT) - [5]*argField{ap_CondRegBit_6_10}}, - {LVEBX, 0xfc0007fe, 0x7c00000e, 0x1, // Load Vector Element Byte Indexed X-form (lvebx VRT,RA,RB) - [5]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LVEHX, 0xfc0007fe, 0x7c00004e, 0x1, // Load Vector Element Halfword Indexed X-form (lvehx VRT,RA,RB) - [5]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LVEWX, 0xfc0007fe, 0x7c00008e, 0x1, // Load Vector Element Word Indexed X-form (lvewx VRT,RA,RB) - [5]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LVX, 0xfc0007fe, 0x7c0000ce, 0x1, // Load Vector Indexed X-form (lvx VRT,RA,RB) - [5]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LVXL, 0xfc0007fe, 0x7c0002ce, 0x1, // Load Vector Indexed LRU X-form (lvxl VRT,RA,RB) - [5]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STVEBX, 0xfc0007fe, 0x7c00010e, 0x1, // Store Vector Element Byte Indexed X-form (stvebx VRS,RA,RB) - [5]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STVEHX, 0xfc0007fe, 0x7c00014e, 0x1, // Store Vector Element Halfword Indexed X-form (stvehx VRS,RA,RB) - [5]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STVEWX, 0xfc0007fe, 0x7c00018e, 0x1, // Store Vector Element Word Indexed X-form (stvewx VRS,RA,RB) - [5]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STVX, 0xfc0007fe, 0x7c0001ce, 0x1, // Store Vector Indexed X-form (stvx VRS,RA,RB) - [5]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STVXL, 0xfc0007fe, 0x7c0003ce, 0x1, // Store Vector Indexed LRU X-form (stvxl VRS,RA,RB) - [5]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LVSL, 0xfc0007fe, 0x7c00000c, 0x1, // Load Vector for Shift Left Indexed X-form (lvsl VRT,RA,RB) - [5]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LVSR, 0xfc0007fe, 0x7c00004c, 0x1, // Load Vector for Shift Right Indexed X-form (lvsr VRT,RA,RB) - [5]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {VPKPX, 0xfc0007ff, 0x1000030e, 0x0, // Vector Pack Pixel VX-form (vpkpx VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VPKSDSS, 0xfc0007ff, 0x100005ce, 0x0, // Vector Pack Signed Doubleword Signed Saturate VX-form (vpksdss VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VPKSDUS, 0xfc0007ff, 0x1000054e, 0x0, // Vector Pack Signed Doubleword Unsigned Saturate VX-form (vpksdus VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VPKSHSS, 0xfc0007ff, 0x1000018e, 0x0, // Vector Pack Signed Halfword Signed Saturate VX-form (vpkshss VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VPKSHUS, 0xfc0007ff, 0x1000010e, 0x0, // Vector Pack Signed Halfword Unsigned Saturate VX-form (vpkshus VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VPKSWSS, 0xfc0007ff, 0x100001ce, 0x0, // Vector Pack Signed Word Signed Saturate VX-form (vpkswss VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VPKSWUS, 0xfc0007ff, 0x1000014e, 0x0, // Vector Pack Signed Word Unsigned Saturate VX-form (vpkswus VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VPKUDUM, 0xfc0007ff, 0x1000044e, 0x0, // Vector Pack Unsigned Doubleword Unsigned Modulo VX-form (vpkudum VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VPKUDUS, 0xfc0007ff, 0x100004ce, 0x0, // Vector Pack Unsigned Doubleword Unsigned Saturate VX-form (vpkudus VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VPKUHUM, 0xfc0007ff, 0x1000000e, 0x0, // Vector Pack Unsigned Halfword Unsigned Modulo VX-form (vpkuhum VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VPKUHUS, 0xfc0007ff, 0x1000008e, 0x0, // Vector Pack Unsigned Halfword Unsigned Saturate VX-form (vpkuhus VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VPKUWUM, 0xfc0007ff, 0x1000004e, 0x0, // Vector Pack Unsigned Word Unsigned Modulo VX-form (vpkuwum VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VPKUWUS, 0xfc0007ff, 0x100000ce, 0x0, // Vector Pack Unsigned Word Unsigned Saturate VX-form (vpkuwus VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VUPKHPX, 0xfc0007ff, 0x1000034e, 0x1f0000, // Vector Unpack High Pixel VX-form (vupkhpx VRT,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, - {VUPKLPX, 0xfc0007ff, 0x100003ce, 0x1f0000, // Vector Unpack Low Pixel VX-form (vupklpx VRT,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, - {VUPKHSB, 0xfc0007ff, 0x1000020e, 0x1f0000, // Vector Unpack High Signed Byte VX-form (vupkhsb VRT,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, - {VUPKHSH, 0xfc0007ff, 0x1000024e, 0x1f0000, // Vector Unpack High Signed Halfword VX-form (vupkhsh VRT,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, - {VUPKHSW, 0xfc0007ff, 0x1000064e, 0x1f0000, // Vector Unpack High Signed Word VX-form (vupkhsw VRT,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, - {VUPKLSB, 0xfc0007ff, 0x1000028e, 0x1f0000, // Vector Unpack Low Signed Byte VX-form (vupklsb VRT,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, - {VUPKLSH, 0xfc0007ff, 0x100002ce, 0x1f0000, // Vector Unpack Low Signed Halfword VX-form (vupklsh VRT,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, - {VUPKLSW, 0xfc0007ff, 0x100006ce, 0x1f0000, // Vector Unpack Low Signed Word VX-form (vupklsw VRT,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, - {VMRGHB, 0xfc0007ff, 0x1000000c, 0x0, // Vector Merge High Byte VX-form (vmrghb VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMRGHH, 0xfc0007ff, 0x1000004c, 0x0, // Vector Merge High Halfword VX-form (vmrghh VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMRGLB, 0xfc0007ff, 0x1000010c, 0x0, // Vector Merge Low Byte VX-form (vmrglb VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMRGLH, 0xfc0007ff, 0x1000014c, 0x0, // Vector Merge Low Halfword VX-form (vmrglh VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMRGHW, 0xfc0007ff, 0x1000008c, 0x0, // Vector Merge High Word VX-form (vmrghw VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMRGLW, 0xfc0007ff, 0x1000018c, 0x0, // Vector Merge Low Word VX-form (vmrglw VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMRGEW, 0xfc0007ff, 0x1000078c, 0x0, // Vector Merge Even Word VX-form (vmrgew VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMRGOW, 0xfc0007ff, 0x1000068c, 0x0, // Vector Merge Odd Word VX-form (vmrgow VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSPLTB, 0xfc0007ff, 0x1000020c, 0x100000, // Vector Splat Byte VX-form (vspltb VRT,VRB,UIM) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_12_15}}, - {VSPLTH, 0xfc0007ff, 0x1000024c, 0x180000, // Vector Splat Halfword VX-form (vsplth VRT,VRB,UIM) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_13_15}}, - {VSPLTW, 0xfc0007ff, 0x1000028c, 0x1c0000, // Vector Splat Word VX-form (vspltw VRT,VRB,UIM) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_14_15}}, - {VSPLTISB, 0xfc0007ff, 0x1000030c, 0xf800, // Vector Splat Immediate Signed Byte VX-form (vspltisb VRT,SIM) - [5]*argField{ap_VecReg_6_10, ap_ImmSigned_11_15}}, - {VSPLTISH, 0xfc0007ff, 0x1000034c, 0xf800, // Vector Splat Immediate Signed Halfword VX-form (vspltish VRT,SIM) - [5]*argField{ap_VecReg_6_10, ap_ImmSigned_11_15}}, - {VSPLTISW, 0xfc0007ff, 0x1000038c, 0xf800, // Vector Splat Immediate Signed Word VX-form (vspltisw VRT,SIM) - [5]*argField{ap_VecReg_6_10, ap_ImmSigned_11_15}}, - {VPERM, 0xfc00003f, 0x1000002b, 0x0, // Vector Permute VA-form (vperm VRT,VRA,VRB,VRC) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, - {VSEL, 0xfc00003f, 0x1000002a, 0x0, // Vector Select VA-form (vsel VRT,VRA,VRB,VRC) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, - {VSL, 0xfc0007ff, 0x100001c4, 0x0, // Vector Shift Left VX-form (vsl VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSLDOI, 0xfc00003f, 0x1000002c, 0x400, // Vector Shift Left Double by Octet Immediate VA-form (vsldoi VRT,VRA,VRB,SHB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_ImmUnsigned_22_25}}, - {VSLO, 0xfc0007ff, 0x1000040c, 0x0, // Vector Shift Left by Octet VX-form (vslo VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSR, 0xfc0007ff, 0x100002c4, 0x0, // Vector Shift Right VX-form (vsr VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSRO, 0xfc0007ff, 0x1000044c, 0x0, // Vector Shift Right by Octet VX-form (vsro VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VADDCUW, 0xfc0007ff, 0x10000180, 0x0, // Vector Add and Write Carry-Out Unsigned Word VX-form (vaddcuw VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VADDSBS, 0xfc0007ff, 0x10000300, 0x0, // Vector Add Signed Byte Saturate VX-form (vaddsbs VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VADDSHS, 0xfc0007ff, 0x10000340, 0x0, // Vector Add Signed Halfword Saturate VX-form (vaddshs VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VADDSWS, 0xfc0007ff, 0x10000380, 0x0, // Vector Add Signed Word Saturate VX-form (vaddsws VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VADDUBM, 0xfc0007ff, 0x10000000, 0x0, // Vector Add Unsigned Byte Modulo VX-form (vaddubm VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VADDUDM, 0xfc0007ff, 0x100000c0, 0x0, // Vector Add Unsigned Doubleword Modulo VX-form (vaddudm VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VADDUHM, 0xfc0007ff, 0x10000040, 0x0, // Vector Add Unsigned Halfword Modulo VX-form (vadduhm VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VADDUWM, 0xfc0007ff, 0x10000080, 0x0, // Vector Add Unsigned Word Modulo VX-form (vadduwm VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VADDUBS, 0xfc0007ff, 0x10000200, 0x0, // Vector Add Unsigned Byte Saturate VX-form (vaddubs VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VADDUHS, 0xfc0007ff, 0x10000240, 0x0, // Vector Add Unsigned Halfword Saturate VX-form (vadduhs VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VADDUWS, 0xfc0007ff, 0x10000280, 0x0, // Vector Add Unsigned Word Saturate VX-form (vadduws VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VADDUQM, 0xfc0007ff, 0x10000100, 0x0, // Vector Add Unsigned Quadword Modulo VX-form (vadduqm VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VADDEUQM, 0xfc00003f, 0x1000003c, 0x0, // Vector Add Extended Unsigned Quadword Modulo VA-form (vaddeuqm VRT,VRA,VRB,VRC) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, - {VADDCUQ, 0xfc0007ff, 0x10000140, 0x0, // Vector Add & write Carry Unsigned Quadword VX-form (vaddcuq VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VADDECUQ, 0xfc00003f, 0x1000003d, 0x0, // Vector Add Extended & write Carry Unsigned Quadword VA-form (vaddecuq VRT,VRA,VRB,VRC) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, - {VSUBCUW, 0xfc0007ff, 0x10000580, 0x0, // Vector Subtract and Write Carry-Out Unsigned Word VX-form (vsubcuw VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSUBSBS, 0xfc0007ff, 0x10000700, 0x0, // Vector Subtract Signed Byte Saturate VX-form (vsubsbs VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSUBSHS, 0xfc0007ff, 0x10000740, 0x0, // Vector Subtract Signed Halfword Saturate VX-form (vsubshs VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSUBSWS, 0xfc0007ff, 0x10000780, 0x0, // Vector Subtract Signed Word Saturate VX-form (vsubsws VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSUBUBM, 0xfc0007ff, 0x10000400, 0x0, // Vector Subtract Unsigned Byte Modulo VX-form (vsububm VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSUBUDM, 0xfc0007ff, 0x100004c0, 0x0, // Vector Subtract Unsigned Doubleword Modulo VX-form (vsubudm VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSUBUHM, 0xfc0007ff, 0x10000440, 0x0, // Vector Subtract Unsigned Halfword Modulo VX-form (vsubuhm VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSUBUWM, 0xfc0007ff, 0x10000480, 0x0, // Vector Subtract Unsigned Word Modulo VX-form (vsubuwm VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSUBUBS, 0xfc0007ff, 0x10000600, 0x0, // Vector Subtract Unsigned Byte Saturate VX-form (vsububs VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSUBUHS, 0xfc0007ff, 0x10000640, 0x0, // Vector Subtract Unsigned Halfword Saturate VX-form (vsubuhs VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSUBUWS, 0xfc0007ff, 0x10000680, 0x0, // Vector Subtract Unsigned Word Saturate VX-form (vsubuws VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSUBUQM, 0xfc0007ff, 0x10000500, 0x0, // Vector Subtract Unsigned Quadword Modulo VX-form (vsubuqm VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSUBEUQM, 0xfc00003f, 0x1000003e, 0x0, // Vector Subtract Extended Unsigned Quadword Modulo VA-form (vsubeuqm VRT,VRA,VRB,VRC) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, - {VSUBCUQ, 0xfc0007ff, 0x10000540, 0x0, // Vector Subtract & write Carry Unsigned Quadword VX-form (vsubcuq VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSUBECUQ, 0xfc00003f, 0x1000003f, 0x0, // Vector Subtract Extended & write Carry Unsigned Quadword VA-form (vsubecuq VRT,VRA,VRB,VRC) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, - {VMULESB, 0xfc0007ff, 0x10000308, 0x0, // Vector Multiply Even Signed Byte VX-form (vmulesb VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMULEUB, 0xfc0007ff, 0x10000208, 0x0, // Vector Multiply Even Unsigned Byte VX-form (vmuleub VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMULOSB, 0xfc0007ff, 0x10000108, 0x0, // Vector Multiply Odd Signed Byte VX-form (vmulosb VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMULOUB, 0xfc0007ff, 0x10000008, 0x0, // Vector Multiply Odd Unsigned Byte VX-form (vmuloub VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMULESH, 0xfc0007ff, 0x10000348, 0x0, // Vector Multiply Even Signed Halfword VX-form (vmulesh VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMULEUH, 0xfc0007ff, 0x10000248, 0x0, // Vector Multiply Even Unsigned Halfword VX-form (vmuleuh VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMULOSH, 0xfc0007ff, 0x10000148, 0x0, // Vector Multiply Odd Signed Halfword VX-form (vmulosh VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMULOUH, 0xfc0007ff, 0x10000048, 0x0, // Vector Multiply Odd Unsigned Halfword VX-form (vmulouh VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMULESW, 0xfc0007ff, 0x10000388, 0x0, // Vector Multiply Even Signed Word VX-form (vmulesw VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMULEUW, 0xfc0007ff, 0x10000288, 0x0, // Vector Multiply Even Unsigned Word VX-form (vmuleuw VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMULOSW, 0xfc0007ff, 0x10000188, 0x0, // Vector Multiply Odd Signed Word VX-form (vmulosw VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMULOUW, 0xfc0007ff, 0x10000088, 0x0, // Vector Multiply Odd Unsigned Word VX-form (vmulouw VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMULUWM, 0xfc0007ff, 0x10000089, 0x0, // Vector Multiply Unsigned Word Modulo VX-form (vmuluwm VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMHADDSHS, 0xfc00003f, 0x10000020, 0x0, // Vector Multiply-High-Add Signed Halfword Saturate VA-form (vmhaddshs VRT,VRA,VRB,VRC) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, - {VMHRADDSHS, 0xfc00003f, 0x10000021, 0x0, // Vector Multiply-High-Round-Add Signed Halfword Saturate VA-form (vmhraddshs VRT,VRA,VRB,VRC) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, - {VMLADDUHM, 0xfc00003f, 0x10000022, 0x0, // Vector Multiply-Low-Add Unsigned Halfword Modulo VA-form (vmladduhm VRT,VRA,VRB,VRC) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, - {VMSUMUBM, 0xfc00003f, 0x10000024, 0x0, // Vector Multiply-Sum Unsigned Byte Modulo VA-form (vmsumubm VRT,VRA,VRB,VRC) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, - {VMSUMMBM, 0xfc00003f, 0x10000025, 0x0, // Vector Multiply-Sum Mixed Byte Modulo VA-form (vmsummbm VRT,VRA,VRB,VRC) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, - {VMSUMSHM, 0xfc00003f, 0x10000028, 0x0, // Vector Multiply-Sum Signed Halfword Modulo VA-form (vmsumshm VRT,VRA,VRB,VRC) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, - {VMSUMSHS, 0xfc00003f, 0x10000029, 0x0, // Vector Multiply-Sum Signed Halfword Saturate VA-form (vmsumshs VRT,VRA,VRB,VRC) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, - {VMSUMUHM, 0xfc00003f, 0x10000026, 0x0, // Vector Multiply-Sum Unsigned Halfword Modulo VA-form (vmsumuhm VRT,VRA,VRB,VRC) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, - {VMSUMUHS, 0xfc00003f, 0x10000027, 0x0, // Vector Multiply-Sum Unsigned Halfword Saturate VA-form (vmsumuhs VRT,VRA,VRB,VRC) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, - {VSUMSWS, 0xfc0007ff, 0x10000788, 0x0, // Vector Sum across Signed Word Saturate VX-form (vsumsws VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSUM2SWS, 0xfc0007ff, 0x10000688, 0x0, // Vector Sum across Half Signed Word Saturate VX-form (vsum2sws VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSUM4SBS, 0xfc0007ff, 0x10000708, 0x0, // Vector Sum across Quarter Signed Byte Saturate VX-form (vsum4sbs VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSUM4SHS, 0xfc0007ff, 0x10000648, 0x0, // Vector Sum across Quarter Signed Halfword Saturate VX-form (vsum4shs VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSUM4UBS, 0xfc0007ff, 0x10000608, 0x0, // Vector Sum across Quarter Unsigned Byte Saturate VX-form (vsum4ubs VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VAVGSB, 0xfc0007ff, 0x10000502, 0x0, // Vector Average Signed Byte VX-form (vavgsb VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VAVGSH, 0xfc0007ff, 0x10000542, 0x0, // Vector Average Signed Halfword VX-form (vavgsh VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VAVGSW, 0xfc0007ff, 0x10000582, 0x0, // Vector Average Signed Word VX-form (vavgsw VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VAVGUB, 0xfc0007ff, 0x10000402, 0x0, // Vector Average Unsigned Byte VX-form (vavgub VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VAVGUW, 0xfc0007ff, 0x10000482, 0x0, // Vector Average Unsigned Word VX-form (vavguw VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VAVGUH, 0xfc0007ff, 0x10000442, 0x0, // Vector Average Unsigned Halfword VX-form (vavguh VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMAXSB, 0xfc0007ff, 0x10000102, 0x0, // Vector Maximum Signed Byte VX-form (vmaxsb VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMAXSD, 0xfc0007ff, 0x100001c2, 0x0, // Vector Maximum Signed Doubleword VX-form (vmaxsd VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMAXUB, 0xfc0007ff, 0x10000002, 0x0, // Vector Maximum Unsigned Byte VX-form (vmaxub VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMAXUD, 0xfc0007ff, 0x100000c2, 0x0, // Vector Maximum Unsigned Doubleword VX-form (vmaxud VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMAXSH, 0xfc0007ff, 0x10000142, 0x0, // Vector Maximum Signed Halfword VX-form (vmaxsh VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMAXSW, 0xfc0007ff, 0x10000182, 0x0, // Vector Maximum Signed Word VX-form (vmaxsw VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMAXUH, 0xfc0007ff, 0x10000042, 0x0, // Vector Maximum Unsigned Halfword VX-form (vmaxuh VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMAXUW, 0xfc0007ff, 0x10000082, 0x0, // Vector Maximum Unsigned Word VX-form (vmaxuw VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMINSB, 0xfc0007ff, 0x10000302, 0x0, // Vector Minimum Signed Byte VX-form (vminsb VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMINSD, 0xfc0007ff, 0x100003c2, 0x0, // Vector Minimum Signed Doubleword VX-form (vminsd VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMINUB, 0xfc0007ff, 0x10000202, 0x0, // Vector Minimum Unsigned Byte VX-form (vminub VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMINUD, 0xfc0007ff, 0x100002c2, 0x0, // Vector Minimum Unsigned Doubleword VX-form (vminud VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMINSH, 0xfc0007ff, 0x10000342, 0x0, // Vector Minimum Signed Halfword VX-form (vminsh VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMINSW, 0xfc0007ff, 0x10000382, 0x0, // Vector Minimum Signed Word VX-form (vminsw VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMINUH, 0xfc0007ff, 0x10000242, 0x0, // Vector Minimum Unsigned Halfword VX-form (vminuh VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMINUW, 0xfc0007ff, 0x10000282, 0x0, // Vector Minimum Unsigned Word VX-form (vminuw VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPEQUB, 0xfc0007ff, 0x10000006, 0x0, // Vector Compare Equal To Unsigned Byte VC-form (vcmpequb VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPEQUBCC, 0xfc0007ff, 0x10000406, 0x0, // Vector Compare Equal To Unsigned Byte VC-form (vcmpequb. VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPEQUH, 0xfc0007ff, 0x10000046, 0x0, // Vector Compare Equal To Unsigned Halfword VC-form (vcmpequh VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPEQUHCC, 0xfc0007ff, 0x10000446, 0x0, // Vector Compare Equal To Unsigned Halfword VC-form (vcmpequh. VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPEQUW, 0xfc0007ff, 0x10000086, 0x0, // Vector Compare Equal To Unsigned Word VC-form (vcmpequw VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPEQUWCC, 0xfc0007ff, 0x10000486, 0x0, // Vector Compare Equal To Unsigned Word VC-form (vcmpequw. VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPEQUD, 0xfc0007ff, 0x100000c7, 0x0, // Vector Compare Equal To Unsigned Doubleword VX-form (vcmpequd VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPEQUDCC, 0xfc0007ff, 0x100004c7, 0x0, // Vector Compare Equal To Unsigned Doubleword VX-form (vcmpequd. VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPGTSB, 0xfc0007ff, 0x10000306, 0x0, // Vector Compare Greater Than Signed Byte VC-form (vcmpgtsb VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPGTSBCC, 0xfc0007ff, 0x10000706, 0x0, // Vector Compare Greater Than Signed Byte VC-form (vcmpgtsb. VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPGTSD, 0xfc0007ff, 0x100003c7, 0x0, // Vector Compare Greater Than Signed Doubleword VX-form (vcmpgtsd VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPGTSDCC, 0xfc0007ff, 0x100007c7, 0x0, // Vector Compare Greater Than Signed Doubleword VX-form (vcmpgtsd. VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPGTSH, 0xfc0007ff, 0x10000346, 0x0, // Vector Compare Greater Than Signed Halfword VC-form (vcmpgtsh VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPGTSHCC, 0xfc0007ff, 0x10000746, 0x0, // Vector Compare Greater Than Signed Halfword VC-form (vcmpgtsh. VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPGTSW, 0xfc0007ff, 0x10000386, 0x0, // Vector Compare Greater Than Signed Word VC-form (vcmpgtsw VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPGTSWCC, 0xfc0007ff, 0x10000786, 0x0, // Vector Compare Greater Than Signed Word VC-form (vcmpgtsw. VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPGTUB, 0xfc0007ff, 0x10000206, 0x0, // Vector Compare Greater Than Unsigned Byte VC-form (vcmpgtub VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPGTUBCC, 0xfc0007ff, 0x10000606, 0x0, // Vector Compare Greater Than Unsigned Byte VC-form (vcmpgtub. VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPGTUD, 0xfc0007ff, 0x100002c7, 0x0, // Vector Compare Greater Than Unsigned Doubleword VX-form (vcmpgtud VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPGTUDCC, 0xfc0007ff, 0x100006c7, 0x0, // Vector Compare Greater Than Unsigned Doubleword VX-form (vcmpgtud. VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPGTUH, 0xfc0007ff, 0x10000246, 0x0, // Vector Compare Greater Than Unsigned Halfword VC-form (vcmpgtuh VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPGTUHCC, 0xfc0007ff, 0x10000646, 0x0, // Vector Compare Greater Than Unsigned Halfword VC-form (vcmpgtuh. VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPGTUW, 0xfc0007ff, 0x10000286, 0x0, // Vector Compare Greater Than Unsigned Word VC-form (vcmpgtuw VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPGTUWCC, 0xfc0007ff, 0x10000686, 0x0, // Vector Compare Greater Than Unsigned Word VC-form (vcmpgtuw. VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VAND, 0xfc0007ff, 0x10000404, 0x0, // Vector Logical AND VX-form (vand VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VANDC, 0xfc0007ff, 0x10000444, 0x0, // Vector Logical AND with Complement VX-form (vandc VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VEQV, 0xfc0007ff, 0x10000684, 0x0, // Vector Logical Equivalent VX-form (veqv VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VNAND, 0xfc0007ff, 0x10000584, 0x0, // Vector Logical NAND VX-form (vnand VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VORC, 0xfc0007ff, 0x10000544, 0x0, // Vector Logical OR with Complement VX-form (vorc VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VNOR, 0xfc0007ff, 0x10000504, 0x0, // Vector Logical NOR VX-form (vnor VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VOR, 0xfc0007ff, 0x10000484, 0x0, // Vector Logical OR VX-form (vor VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VXOR, 0xfc0007ff, 0x100004c4, 0x0, // Vector Logical XOR VX-form (vxor VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VRLB, 0xfc0007ff, 0x10000004, 0x0, // Vector Rotate Left Byte VX-form (vrlb VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VRLH, 0xfc0007ff, 0x10000044, 0x0, // Vector Rotate Left Halfword VX-form (vrlh VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VRLW, 0xfc0007ff, 0x10000084, 0x0, // Vector Rotate Left Word VX-form (vrlw VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VRLD, 0xfc0007ff, 0x100000c4, 0x0, // Vector Rotate Left Doubleword VX-form (vrld VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSLB, 0xfc0007ff, 0x10000104, 0x0, // Vector Shift Left Byte VX-form (vslb VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSLH, 0xfc0007ff, 0x10000144, 0x0, // Vector Shift Left Halfword VX-form (vslh VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSLW, 0xfc0007ff, 0x10000184, 0x0, // Vector Shift Left Word VX-form (vslw VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSLD, 0xfc0007ff, 0x100005c4, 0x0, // Vector Shift Left Doubleword VX-form (vsld VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSRB, 0xfc0007ff, 0x10000204, 0x0, // Vector Shift Right Byte VX-form (vsrb VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSRH, 0xfc0007ff, 0x10000244, 0x0, // Vector Shift Right Halfword VX-form (vsrh VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSRW, 0xfc0007ff, 0x10000284, 0x0, // Vector Shift Right Word VX-form (vsrw VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSRD, 0xfc0007ff, 0x100006c4, 0x0, // Vector Shift Right Doubleword VX-form (vsrd VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSRAB, 0xfc0007ff, 0x10000304, 0x0, // Vector Shift Right Algebraic Byte VX-form (vsrab VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSRAH, 0xfc0007ff, 0x10000344, 0x0, // Vector Shift Right Algebraic Halfword VX-form (vsrah VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSRAW, 0xfc0007ff, 0x10000384, 0x0, // Vector Shift Right Algebraic Word VX-form (vsraw VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSRAD, 0xfc0007ff, 0x100003c4, 0x0, // Vector Shift Right Algebraic Doubleword VX-form (vsrad VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VADDFP, 0xfc0007ff, 0x1000000a, 0x0, // Vector Add Single-Precision VX-form (vaddfp VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSUBFP, 0xfc0007ff, 0x1000004a, 0x0, // Vector Subtract Single-Precision VX-form (vsubfp VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMADDFP, 0xfc00003f, 0x1000002e, 0x0, // Vector Multiply-Add Single-Precision VA-form (vmaddfp VRT,VRA,VRC,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_21_25, ap_VecReg_16_20}}, - {VNMSUBFP, 0xfc00003f, 0x1000002f, 0x0, // Vector Negative Multiply-Subtract Single-Precision VA-form (vnmsubfp VRT,VRA,VRC,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_21_25, ap_VecReg_16_20}}, - {VMAXFP, 0xfc0007ff, 0x1000040a, 0x0, // Vector Maximum Single-Precision VX-form (vmaxfp VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VMINFP, 0xfc0007ff, 0x1000044a, 0x0, // Vector Minimum Single-Precision VX-form (vminfp VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCTSXS, 0xfc0007ff, 0x100003ca, 0x0, // Vector Convert To Signed Fixed-Point Word Saturate VX-form (vctsxs VRT,VRB,UIM) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_11_15}}, - {VCTUXS, 0xfc0007ff, 0x1000038a, 0x0, // Vector Convert To Unsigned Fixed-Point Word Saturate VX-form (vctuxs VRT,VRB,UIM) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_11_15}}, - {VCFSX, 0xfc0007ff, 0x1000034a, 0x0, // Vector Convert From Signed Fixed-Point Word VX-form (vcfsx VRT,VRB,UIM) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_11_15}}, - {VCFUX, 0xfc0007ff, 0x1000030a, 0x0, // Vector Convert From Unsigned Fixed-Point Word VX-form (vcfux VRT,VRB,UIM) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_11_15}}, - {VRFIM, 0xfc0007ff, 0x100002ca, 0x1f0000, // Vector Round to Single-Precision Integer toward -Infinity VX-form (vrfim VRT,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, - {VRFIN, 0xfc0007ff, 0x1000020a, 0x1f0000, // Vector Round to Single-Precision Integer Nearest VX-form (vrfin VRT,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, - {VRFIP, 0xfc0007ff, 0x1000028a, 0x1f0000, // Vector Round to Single-Precision Integer toward +Infinity VX-form (vrfip VRT,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, - {VRFIZ, 0xfc0007ff, 0x1000024a, 0x1f0000, // Vector Round to Single-Precision Integer toward Zero VX-form (vrfiz VRT,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, - {VCMPBFP, 0xfc0007ff, 0x100003c6, 0x0, // Vector Compare Bounds Single-Precision VC-form (vcmpbfp VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPBFPCC, 0xfc0007ff, 0x100007c6, 0x0, // Vector Compare Bounds Single-Precision VC-form (vcmpbfp. VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPEQFP, 0xfc0007ff, 0x100000c6, 0x0, // Vector Compare Equal To Single-Precision VC-form (vcmpeqfp VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPEQFPCC, 0xfc0007ff, 0x100004c6, 0x0, // Vector Compare Equal To Single-Precision VC-form (vcmpeqfp. VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPGEFP, 0xfc0007ff, 0x100001c6, 0x0, // Vector Compare Greater Than or Equal To Single-Precision VC-form (vcmpgefp VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPGEFPCC, 0xfc0007ff, 0x100005c6, 0x0, // Vector Compare Greater Than or Equal To Single-Precision VC-form (vcmpgefp. VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPGTFP, 0xfc0007ff, 0x100002c6, 0x0, // Vector Compare Greater Than Single-Precision VC-form (vcmpgtfp VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCMPGTFPCC, 0xfc0007ff, 0x100006c6, 0x0, // Vector Compare Greater Than Single-Precision VC-form (vcmpgtfp. VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VEXPTEFP, 0xfc0007ff, 0x1000018a, 0x1f0000, // Vector 2 Raised to the Exponent Estimate Floating-Point VX-form (vexptefp VRT,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, - {VLOGEFP, 0xfc0007ff, 0x100001ca, 0x1f0000, // Vector Log Base 2 Estimate Floating-Point VX-form (vlogefp VRT,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, - {VREFP, 0xfc0007ff, 0x1000010a, 0x1f0000, // Vector Reciprocal Estimate Single-Precision VX-form (vrefp VRT,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, - {VRSQRTEFP, 0xfc0007ff, 0x1000014a, 0x1f0000, // Vector Reciprocal Square Root Estimate Single-Precision VX-form (vrsqrtefp VRT,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, - {VCIPHER, 0xfc0007ff, 0x10000508, 0x0, // Vector AES Cipher VX-form (vcipher VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VCIPHERLAST, 0xfc0007ff, 0x10000509, 0x0, // Vector AES Cipher Last VX-form (vcipherlast VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VNCIPHER, 0xfc0007ff, 0x10000548, 0x0, // Vector AES Inverse Cipher VX-form (vncipher VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VNCIPHERLAST, 0xfc0007ff, 0x10000549, 0x0, // Vector AES Inverse Cipher Last VX-form (vncipherlast VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VSBOX, 0xfc0007ff, 0x100005c8, 0xf800, // Vector AES SubBytes VX-form (vsbox VRT,VRA) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15}}, - {VSHASIGMAD, 0xfc0007ff, 0x100006c2, 0x0, // Vector SHA-512 Sigma Doubleword VX-form (vshasigmad VRT,VRA,ST,SIX) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_ImmUnsigned_16_16, ap_ImmUnsigned_17_20}}, - {VSHASIGMAW, 0xfc0007ff, 0x10000682, 0x0, // Vector SHA-256 Sigma Word VX-form (vshasigmaw VRT,VRA,ST,SIX) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_ImmUnsigned_16_16, ap_ImmUnsigned_17_20}}, - {VPMSUMB, 0xfc0007ff, 0x10000408, 0x0, // Vector Polynomial Multiply-Sum Byte VX-form (vpmsumb VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VPMSUMD, 0xfc0007ff, 0x100004c8, 0x0, // Vector Polynomial Multiply-Sum Doubleword VX-form (vpmsumd VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VPMSUMH, 0xfc0007ff, 0x10000448, 0x0, // Vector Polynomial Multiply-Sum Halfword VX-form (vpmsumh VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VPMSUMW, 0xfc0007ff, 0x10000488, 0x0, // Vector Polynomial Multiply-Sum Word VX-form (vpmsumw VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {VPERMXOR, 0xfc00003f, 0x1000002d, 0x0, // Vector Permute and Exclusive-OR VA-form (vpermxor VRT,VRA,VRB,VRC) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, - {VGBBD, 0xfc0007ff, 0x1000050c, 0x1f0000, // Vector Gather Bits by Bytes by Doubleword VX-form (vgbbd VRT,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, - {VCLZB, 0xfc0007ff, 0x10000702, 0x1f0000, // Vector Count Leading Zeros Byte VX-form (vclzb VRT,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, - {VCLZH, 0xfc0007ff, 0x10000742, 0x1f0000, // Vector Count Leading Zeros Halfword VX-form (vclzh VRT,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, - {VCLZW, 0xfc0007ff, 0x10000782, 0x1f0000, // Vector Count Leading Zeros Word VX-form (vclzw VRT,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, - {VCLZD, 0xfc0007ff, 0x100007c2, 0x1f0000, // Vector Count Leading Zeros Doubleword (vclzd VRT,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, - {VPOPCNTB, 0xfc0007ff, 0x10000703, 0x1f0000, // Vector Population Count Byte (vpopcntb VRT,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, - {VPOPCNTD, 0xfc0007ff, 0x100007c3, 0x1f0000, // Vector Population Count Doubleword (vpopcntd VRT,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, - {VPOPCNTH, 0xfc0007ff, 0x10000743, 0x1f0000, // Vector Population Count Halfword (vpopcnth VRT,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, - {VPOPCNTW, 0xfc0007ff, 0x10000783, 0x1f0000, // Vector Population Count Word (vpopcntw VRT,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, - {VBPERMQ, 0xfc0007ff, 0x1000054c, 0x0, // Vector Bit Permute Quadword VX-form (vbpermq VRT,VRA,VRB) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, - {BCDADDCC, 0xfc0005ff, 0x10000401, 0x0, // Decimal Add Modulo VX-form (bcdadd. VRT,VRA,VRB,PS) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_ImmUnsigned_22_22}}, - {BCDSUBCC, 0xfc0005ff, 0x10000441, 0x0, // Decimal Subtract Modulo VX-form (bcdsub. VRT,VRA,VRB,PS) - [5]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_ImmUnsigned_22_22}}, - {MTVSCR, 0xfc0007ff, 0x10000644, 0x3ff0000, // Move To Vector Status and Control Register VX-form (mtvscr VRB) - [5]*argField{ap_VecReg_16_20}}, - {MFVSCR, 0xfc0007ff, 0x10000604, 0x1ff800, // Move From Vector Status and Control Register VX-form (mfvscr VRT) - [5]*argField{ap_VecReg_6_10}}, - {DADD, 0xfc0007ff, 0xec000004, 0x0, // DFP Add [Quad] X-form (dadd FRT,FRA,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, - {DADDCC, 0xfc0007ff, 0xec000005, 0x0, // DFP Add [Quad] X-form (dadd. FRT,FRA,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, - {DSUB, 0xfc0007ff, 0xec000404, 0x0, // DFP Subtract [Quad] X-form (dsub FRT,FRA,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, - {DSUBCC, 0xfc0007ff, 0xec000405, 0x0, // DFP Subtract [Quad] X-form (dsub. FRT,FRA,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, - {DMUL, 0xfc0007ff, 0xec000044, 0x0, // DFP Multiply [Quad] X-form (dmul FRT,FRA,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, - {DMULCC, 0xfc0007ff, 0xec000045, 0x0, // DFP Multiply [Quad] X-form (dmul. FRT,FRA,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, - {DDIV, 0xfc0007ff, 0xec000444, 0x0, // DFP Divide [Quad] X-form (ddiv FRT,FRA,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, - {DDIVCC, 0xfc0007ff, 0xec000445, 0x0, // DFP Divide [Quad] X-form (ddiv. FRT,FRA,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, - {DCMPU, 0xfc0007fe, 0xec000504, 0x600001, // DFP Compare Unordered [Quad] X-form (dcmpu BF,FRA,FRB) - [5]*argField{ap_CondRegField_6_8, ap_FPReg_11_15, ap_FPReg_16_20}}, - {DCMPO, 0xfc0007fe, 0xec000104, 0x600001, // DFP Compare Ordered [Quad] X-form (dcmpo BF,FRA,FRB) - [5]*argField{ap_CondRegField_6_8, ap_FPReg_11_15, ap_FPReg_16_20}}, - {DTSTDC, 0xfc0003fe, 0xec000184, 0x600001, // DFP Test Data Class [Quad] Z22-form (dtstdc BF,FRA,DCM) - [5]*argField{ap_CondRegField_6_8, ap_FPReg_11_15, ap_ImmUnsigned_16_21}}, - {DTSTDG, 0xfc0003fe, 0xec0001c4, 0x600001, // DFP Test Data Group [Quad] Z22-form (dtstdg BF,FRA,DGM) - [5]*argField{ap_CondRegField_6_8, ap_FPReg_11_15, ap_ImmUnsigned_16_21}}, - {DTSTEX, 0xfc0007fe, 0xec000144, 0x600001, // DFP Test Exponent [Quad] X-form (dtstex BF,FRA,FRB) - [5]*argField{ap_CondRegField_6_8, ap_FPReg_11_15, ap_FPReg_16_20}}, - {DTSTSF, 0xfc0007fe, 0xec000544, 0x600001, // DFP Test Significance [Quad] X-form (dtstsf BF,FRA,FRB) - [5]*argField{ap_CondRegField_6_8, ap_FPReg_11_15, ap_FPReg_16_20}}, - {DQUAI, 0xfc0001ff, 0xec000086, 0x0, // DFP Quantize Immediate [Quad] Z23-form (dquai TE,FRT,FRB,RMC) - [5]*argField{ap_ImmSigned_11_15, ap_FPReg_6_10, ap_FPReg_16_20, ap_ImmUnsigned_21_22}}, - {DQUAICC, 0xfc0001ff, 0xec000087, 0x0, // DFP Quantize Immediate [Quad] Z23-form (dquai. TE,FRT,FRB,RMC) - [5]*argField{ap_ImmSigned_11_15, ap_FPReg_6_10, ap_FPReg_16_20, ap_ImmUnsigned_21_22}}, - {DQUA, 0xfc0001ff, 0xec000006, 0x0, // DFP Quantize [Quad] Z23-form (dqua FRT,FRA,FRB,RMC) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20, ap_ImmUnsigned_21_22}}, - {DQUACC, 0xfc0001ff, 0xec000007, 0x0, // DFP Quantize [Quad] Z23-form (dqua. FRT,FRA,FRB,RMC) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20, ap_ImmUnsigned_21_22}}, - {DRRND, 0xfc0001ff, 0xec000046, 0x0, // DFP Reround [Quad] Z23-form (drrnd FRT,FRA,FRB,RMC) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20, ap_ImmUnsigned_21_22}}, - {DRRNDCC, 0xfc0001ff, 0xec000047, 0x0, // DFP Reround [Quad] Z23-form (drrnd. FRT,FRA,FRB,RMC) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20, ap_ImmUnsigned_21_22}}, - {DRINTX, 0xfc0001ff, 0xec0000c6, 0x1e0000, // DFP Round To FP Integer With Inexact [Quad] Z23-form (drintx R,FRT,FRB,RMC) - [5]*argField{ap_ImmUnsigned_15_15, ap_FPReg_6_10, ap_FPReg_16_20, ap_ImmUnsigned_21_22}}, - {DRINTXCC, 0xfc0001ff, 0xec0000c7, 0x1e0000, // DFP Round To FP Integer With Inexact [Quad] Z23-form (drintx. R,FRT,FRB,RMC) - [5]*argField{ap_ImmUnsigned_15_15, ap_FPReg_6_10, ap_FPReg_16_20, ap_ImmUnsigned_21_22}}, - {DRINTN, 0xfc0001ff, 0xec0001c6, 0x1e0000, // DFP Round To FP Integer Without Inexact [Quad] Z23-form (drintn R,FRT,FRB,RMC) - [5]*argField{ap_ImmUnsigned_15_15, ap_FPReg_6_10, ap_FPReg_16_20, ap_ImmUnsigned_21_22}}, - {DRINTNCC, 0xfc0001ff, 0xec0001c7, 0x1e0000, // DFP Round To FP Integer Without Inexact [Quad] Z23-form (drintn. R,FRT,FRB,RMC) - [5]*argField{ap_ImmUnsigned_15_15, ap_FPReg_6_10, ap_FPReg_16_20, ap_ImmUnsigned_21_22}}, - {DCTDP, 0xfc0007ff, 0xec000204, 0x1f0000, // DFP Convert To DFP Long X-form (dctdp FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {DCTDPCC, 0xfc0007ff, 0xec000205, 0x1f0000, // DFP Convert To DFP Long X-form (dctdp. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {DCTQPQ, 0xfc0007ff, 0xfc000204, 0x1f0000, // DFP Convert To DFP Extended X-form (dctqpq FRTp,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {DCTQPQCC, 0xfc0007ff, 0xfc000205, 0x1f0000, // DFP Convert To DFP Extended X-form (dctqpq. FRTp,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {DRSP, 0xfc0007ff, 0xec000604, 0x1f0000, // DFP Round To DFP Short X-form (drsp FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {DRSPCC, 0xfc0007ff, 0xec000605, 0x1f0000, // DFP Round To DFP Short X-form (drsp. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {DRDPQ, 0xfc0007ff, 0xfc000604, 0x1f0000, // DFP Round To DFP Long X-form (drdpq FRTp,FRBp) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {DRDPQCC, 0xfc0007ff, 0xfc000605, 0x1f0000, // DFP Round To DFP Long X-form (drdpq. FRTp,FRBp) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {DCFFIX, 0xfc0007ff, 0xec000644, 0x1f0000, // DFP Convert From Fixed X-form (dcffix FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {DCFFIXCC, 0xfc0007ff, 0xec000645, 0x1f0000, // DFP Convert From Fixed X-form (dcffix. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {DCFFIXQ, 0xfc0007ff, 0xfc000644, 0x1f0000, // DFP Convert From Fixed Quad X-form (dcffixq FRTp,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {DCFFIXQCC, 0xfc0007ff, 0xfc000645, 0x1f0000, // DFP Convert From Fixed Quad X-form (dcffixq. FRTp,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {DCTFIX, 0xfc0007ff, 0xec000244, 0x1f0000, // DFP Convert To Fixed [Quad] X-form (dctfix FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {DCTFIXCC, 0xfc0007ff, 0xec000245, 0x1f0000, // DFP Convert To Fixed [Quad] X-form (dctfix. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {DDEDPD, 0xfc0007ff, 0xec000284, 0x70000, // DFP Decode DPD To BCD [Quad] X-form (ddedpd SP,FRT,FRB) - [5]*argField{ap_ImmUnsigned_11_12, ap_FPReg_6_10, ap_FPReg_16_20}}, - {DDEDPDCC, 0xfc0007ff, 0xec000285, 0x70000, // DFP Decode DPD To BCD [Quad] X-form (ddedpd. SP,FRT,FRB) - [5]*argField{ap_ImmUnsigned_11_12, ap_FPReg_6_10, ap_FPReg_16_20}}, - {DENBCD, 0xfc0007ff, 0xec000684, 0xf0000, // DFP Encode BCD To DPD [Quad] X-form (denbcd S,FRT,FRB) - [5]*argField{ap_ImmUnsigned_11_11, ap_FPReg_6_10, ap_FPReg_16_20}}, - {DENBCDCC, 0xfc0007ff, 0xec000685, 0xf0000, // DFP Encode BCD To DPD [Quad] X-form (denbcd. S,FRT,FRB) - [5]*argField{ap_ImmUnsigned_11_11, ap_FPReg_6_10, ap_FPReg_16_20}}, - {DXEX, 0xfc0007ff, 0xec0002c4, 0x1f0000, // DFP Extract Biased Exponent [Quad] X-form (dxex FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {DXEXCC, 0xfc0007ff, 0xec0002c5, 0x1f0000, // DFP Extract Biased Exponent [Quad] X-form (dxex. FRT,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, - {DIEX, 0xfc0007ff, 0xec0006c4, 0x0, // DFP Insert Biased Exponent [Quad] X-form (diex FRT,FRA,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, - {DIEXCC, 0xfc0007ff, 0xec0006c5, 0x0, // DFP Insert Biased Exponent [Quad] X-form (diex. FRT,FRA,FRB) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, - {DSCLI, 0xfc0003ff, 0xec000084, 0x0, // DFP Shift Significand Left Immediate [Quad] Z22-form (dscli FRT,FRA,SH) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_ImmUnsigned_16_21}}, - {DSCLICC, 0xfc0003ff, 0xec000085, 0x0, // DFP Shift Significand Left Immediate [Quad] Z22-form (dscli. FRT,FRA,SH) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_ImmUnsigned_16_21}}, - {DSCRI, 0xfc0003ff, 0xec0000c4, 0x0, // DFP Shift Significand Right Immediate [Quad] Z22-form (dscri FRT,FRA,SH) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_ImmUnsigned_16_21}}, - {DSCRICC, 0xfc0003ff, 0xec0000c5, 0x0, // DFP Shift Significand Right Immediate [Quad] Z22-form (dscri. FRT,FRA,SH) - [5]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_ImmUnsigned_16_21}}, - {LXSDX, 0xfc0007fe, 0x7c000498, 0x0, // Load VSX Scalar Doubleword Indexed XX1-form (lxsdx XT,RA,RB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LXSIWAX, 0xfc0007fe, 0x7c000098, 0x0, // Load VSX Scalar as Integer Word Algebraic Indexed XX1-form (lxsiwax XT,RA,RB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LXSIWZX, 0xfc0007fe, 0x7c000018, 0x0, // Load VSX Scalar as Integer Word and Zero Indexed XX1-form (lxsiwzx XT,RA,RB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LXSSPX, 0xfc0007fe, 0x7c000418, 0x0, // Load VSX Scalar Single-Precision Indexed XX1-form (lxsspx XT,RA,RB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LXVD2X, 0xfc0007fe, 0x7c000698, 0x0, // Load VSX Vector Doubleword*2 Indexed XX1-form (lxvd2x XT,RA,RB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LXVDSX, 0xfc0007fe, 0x7c000298, 0x0, // Load VSX Vector Doubleword & Splat Indexed XX1-form (lxvdsx XT,RA,RB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LXVW4X, 0xfc0007fe, 0x7c000618, 0x0, // Load VSX Vector Word*4 Indexed XX1-form (lxvw4x XT,RA,RB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STXSDX, 0xfc0007fe, 0x7c000598, 0x0, // Store VSX Scalar Doubleword Indexed XX1-form (stxsdx XS,RA,RB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STXSIWX, 0xfc0007fe, 0x7c000118, 0x0, // Store VSX Scalar as Integer Word Indexed XX1-form (stxsiwx XS,RA,RB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STXSSPX, 0xfc0007fe, 0x7c000518, 0x0, // Store VSX Scalar Single-Precision Indexed XX1-form (stxsspx XS,RA,RB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STXVD2X, 0xfc0007fe, 0x7c000798, 0x0, // Store VSX Vector Doubleword*2 Indexed XX1-form (stxvd2x XS,RA,RB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STXVW4X, 0xfc0007fe, 0x7c000718, 0x0, // Store VSX Vector Word*4 Indexed XX1-form (stxvw4x XS,RA,RB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {XSABSDP, 0xfc0007fc, 0xf0000564, 0x1f0000, // VSX Scalar Absolute Value Double-Precision XX2-form (xsabsdp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XSADDDP, 0xfc0007f8, 0xf0000100, 0x0, // VSX Scalar Add Double-Precision XX3-form (xsadddp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XSADDSP, 0xfc0007f8, 0xf0000000, 0x0, // VSX Scalar Add Single-Precision XX3-form (xsaddsp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XSCMPODP, 0xfc0007f8, 0xf0000158, 0x600001, // VSX Scalar Compare Ordered Double-Precision XX3-form (xscmpodp BF,XA,XB) - [5]*argField{ap_CondRegField_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XSCMPUDP, 0xfc0007f8, 0xf0000118, 0x600001, // VSX Scalar Compare Unordered Double-Precision XX3-form (xscmpudp BF,XA,XB) - [5]*argField{ap_CondRegField_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XSCPSGNDP, 0xfc0007f8, 0xf0000580, 0x0, // VSX Scalar Copy Sign Double-Precision XX3-form (xscpsgndp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XSCVDPSP, 0xfc0007fc, 0xf0000424, 0x1f0000, // VSX Scalar round Double-Precision to single-precision and Convert to Single-Precision format XX2-form (xscvdpsp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XSCVDPSPN, 0xfc0007fc, 0xf000042c, 0x1f0000, // VSX Scalar Convert Scalar Single-Precision to Vector Single-Precision format Non-signalling XX2-form (xscvdpspn XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XSCVDPSXDS, 0xfc0007fc, 0xf0000560, 0x1f0000, // VSX Scalar truncate Double-Precision to integer and Convert to Signed Integer Doubleword format with Saturate XX2-form (xscvdpsxds XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XSCVDPSXWS, 0xfc0007fc, 0xf0000160, 0x1f0000, // VSX Scalar truncate Double-Precision to integer and Convert to Signed Integer Word format with Saturate XX2-form (xscvdpsxws XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XSCVDPUXDS, 0xfc0007fc, 0xf0000520, 0x1f0000, // VSX Scalar truncate Double-Precision integer and Convert to Unsigned Integer Doubleword format with Saturate XX2-form (xscvdpuxds XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XSCVDPUXWS, 0xfc0007fc, 0xf0000120, 0x1f0000, // VSX Scalar truncate Double-Precision to integer and Convert to Unsigned Integer Word format with Saturate XX2-form (xscvdpuxws XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XSCVSPDP, 0xfc0007fc, 0xf0000524, 0x1f0000, // VSX Scalar Convert Single-Precision to Double-Precision format XX2-form (xscvspdp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XSCVSPDPN, 0xfc0007fc, 0xf000052c, 0x1f0000, // VSX Scalar Convert Single-Precision to Double-Precision format Non-signalling XX2-form (xscvspdpn XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XSCVSXDDP, 0xfc0007fc, 0xf00005e0, 0x1f0000, // VSX Scalar Convert Signed Integer Doubleword to floating-point format and round to Double-Precision format XX2-form (xscvsxddp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XSCVSXDSP, 0xfc0007fc, 0xf00004e0, 0x1f0000, // VSX Scalar Convert Signed Integer Doubleword to floating-point format and round to Single-Precision XX2-form (xscvsxdsp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XSCVUXDDP, 0xfc0007fc, 0xf00005a0, 0x1f0000, // VSX Scalar Convert Unsigned Integer Doubleword to floating-point format and round to Double-Precision format XX2-form (xscvuxddp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XSCVUXDSP, 0xfc0007fc, 0xf00004a0, 0x1f0000, // VSX Scalar Convert Unsigned Integer Doubleword to floating-point format and round to Single-Precision XX2-form (xscvuxdsp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XSDIVDP, 0xfc0007f8, 0xf00001c0, 0x0, // VSX Scalar Divide Double-Precision XX3-form (xsdivdp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XSDIVSP, 0xfc0007f8, 0xf00000c0, 0x0, // VSX Scalar Divide Single-Precision XX3-form (xsdivsp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XSMADDADP, 0xfc0007f8, 0xf0000108, 0x0, // VSX Scalar Multiply-Add Double-Precision XX3-form (xsmaddadp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XSMADDASP, 0xfc0007f8, 0xf0000008, 0x0, // VSX Scalar Multiply-Add Single-Precision XX3-form (xsmaddasp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XSMAXDP, 0xfc0007f8, 0xf0000500, 0x0, // VSX Scalar Maximum Double-Precision XX3-form (xsmaxdp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XSMINDP, 0xfc0007f8, 0xf0000540, 0x0, // VSX Scalar Minimum Double-Precision XX3-form (xsmindp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XSMSUBADP, 0xfc0007f8, 0xf0000188, 0x0, // VSX Scalar Multiply-Subtract Double-Precision XX3-form (xsmsubadp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XSMSUBASP, 0xfc0007f8, 0xf0000088, 0x0, // VSX Scalar Multiply-Subtract Single-Precision XX3-form (xsmsubasp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XSMULDP, 0xfc0007f8, 0xf0000180, 0x0, // VSX Scalar Multiply Double-Precision XX3-form (xsmuldp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XSMULSP, 0xfc0007f8, 0xf0000080, 0x0, // VSX Scalar Multiply Single-Precision XX3-form (xsmulsp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XSNABSDP, 0xfc0007fc, 0xf00005a4, 0x1f0000, // VSX Scalar Negative Absolute Value Double-Precision XX2-form (xsnabsdp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XSNEGDP, 0xfc0007fc, 0xf00005e4, 0x1f0000, // VSX Scalar Negate Double-Precision XX2-form (xsnegdp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XSNMADDADP, 0xfc0007f8, 0xf0000508, 0x0, // VSX Scalar Negative Multiply-Add Double-Precision XX3-form (xsnmaddadp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XSNMADDASP, 0xfc0007f8, 0xf0000408, 0x0, // VSX Scalar Negative Multiply-Add Single-Precision XX3-form (xsnmaddasp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XSNMSUBADP, 0xfc0007f8, 0xf0000588, 0x0, // VSX Scalar Negative Multiply-Subtract Double-Precision XX3-form (xsnmsubadp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XSNMSUBASP, 0xfc0007f8, 0xf0000488, 0x0, // VSX Scalar Negative Multiply-Subtract Single-Precision XX3-form (xsnmsubasp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XSRDPI, 0xfc0007fc, 0xf0000124, 0x1f0000, // VSX Scalar Round to Double-Precision Integer using round to Nearest Away XX2-form (xsrdpi XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XSRDPIC, 0xfc0007fc, 0xf00001ac, 0x1f0000, // VSX Scalar Round to Double-Precision Integer exact using Current rounding mode XX2-form (xsrdpic XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XSRDPIM, 0xfc0007fc, 0xf00001e4, 0x1f0000, // VSX Scalar Round to Double-Precision Integer using round toward -Infinity XX2-form (xsrdpim XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XSRDPIP, 0xfc0007fc, 0xf00001a4, 0x1f0000, // VSX Scalar Round to Double-Precision Integer using round toward +Infinity XX2-form (xsrdpip XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XSRDPIZ, 0xfc0007fc, 0xf0000164, 0x1f0000, // VSX Scalar Round to Double-Precision Integer using round toward Zero XX2-form (xsrdpiz XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XSREDP, 0xfc0007fc, 0xf0000168, 0x1f0000, // VSX Scalar Reciprocal Estimate Double-Precision XX2-form (xsredp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XSRESP, 0xfc0007fc, 0xf0000068, 0x1f0000, // VSX Scalar Reciprocal Estimate Single-Precision XX2-form (xsresp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XSRSP, 0xfc0007fc, 0xf0000464, 0x1f0000, // VSX Scalar Round to Single-Precision XX2-form (xsrsp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XSRSQRTEDP, 0xfc0007fc, 0xf0000128, 0x1f0000, // VSX Scalar Reciprocal Square Root Estimate Double-Precision XX2-form (xsrsqrtedp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XSRSQRTESP, 0xfc0007fc, 0xf0000028, 0x1f0000, // VSX Scalar Reciprocal Square Root Estimate Single-Precision XX2-form (xsrsqrtesp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XSSQRTDP, 0xfc0007fc, 0xf000012c, 0x1f0000, // VSX Scalar Square Root Double-Precision XX2-form (xssqrtdp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XSSQRTSP, 0xfc0007fc, 0xf000002c, 0x1f0000, // VSX Scalar Square Root Single-Precision XX-form (xssqrtsp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XSSUBDP, 0xfc0007f8, 0xf0000140, 0x0, // VSX Scalar Subtract Double-Precision XX3-form (xssubdp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XSSUBSP, 0xfc0007f8, 0xf0000040, 0x0, // VSX Scalar Subtract Single-Precision XX3-form (xssubsp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XSTDIVDP, 0xfc0007f8, 0xf00001e8, 0x600001, // VSX Scalar Test for software Divide Double-Precision XX3-form (xstdivdp BF,XA,XB) - [5]*argField{ap_CondRegField_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XSTSQRTDP, 0xfc0007fc, 0xf00001a8, 0x7f0001, // VSX Scalar Test for software Square Root Double-Precision XX2-form (xstsqrtdp BF,XB) - [5]*argField{ap_CondRegField_6_8, ap_VecSReg_30_30_16_20}}, - {XVABSDP, 0xfc0007fc, 0xf0000764, 0x1f0000, // VSX Vector Absolute Value Double-Precision XX2-form (xvabsdp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVABSSP, 0xfc0007fc, 0xf0000664, 0x1f0000, // VSX Vector Absolute Value Single-Precision XX2-form (xvabssp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVADDDP, 0xfc0007f8, 0xf0000300, 0x0, // VSX Vector Add Double-Precision XX3-form (xvadddp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVADDSP, 0xfc0007f8, 0xf0000200, 0x0, // VSX Vector Add Single-Precision XX3-form (xvaddsp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVCMPEQDP, 0xfc0007f8, 0xf0000318, 0x0, // VSX Vector Compare Equal To Double-Precision [ & Record ] XX3-form (xvcmpeqdp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVCMPEQDPCC, 0xfc0007f8, 0xf0000718, 0x0, // VSX Vector Compare Equal To Double-Precision [ & Record ] XX3-form (xvcmpeqdp. XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVCMPEQSP, 0xfc0007f8, 0xf0000218, 0x0, // VSX Vector Compare Equal To Single-Precision [ & Record ] XX3-form (xvcmpeqsp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVCMPEQSPCC, 0xfc0007f8, 0xf0000618, 0x0, // VSX Vector Compare Equal To Single-Precision [ & Record ] XX3-form (xvcmpeqsp. XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVCMPGEDP, 0xfc0007f8, 0xf0000398, 0x0, // VSX Vector Compare Greater Than or Equal To Double-Precision [ & Record ] XX3-form (xvcmpgedp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVCMPGEDPCC, 0xfc0007f8, 0xf0000798, 0x0, // VSX Vector Compare Greater Than or Equal To Double-Precision [ & Record ] XX3-form (xvcmpgedp. XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVCMPGESP, 0xfc0007f8, 0xf0000298, 0x0, // VSX Vector Compare Greater Than or Equal To Single-Precision [ & record CR6 ] XX3-form (xvcmpgesp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVCMPGESPCC, 0xfc0007f8, 0xf0000698, 0x0, // VSX Vector Compare Greater Than or Equal To Single-Precision [ & record CR6 ] XX3-form (xvcmpgesp. XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVCMPGTDP, 0xfc0007f8, 0xf0000358, 0x0, // VSX Vector Compare Greater Than Double-Precision [ & record CR6 ] XX3-form (xvcmpgtdp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVCMPGTDPCC, 0xfc0007f8, 0xf0000758, 0x0, // VSX Vector Compare Greater Than Double-Precision [ & record CR6 ] XX3-form (xvcmpgtdp. XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVCMPGTSP, 0xfc0007f8, 0xf0000258, 0x0, // VSX Vector Compare Greater Than Single-Precision [ & record CR6 ] XX3-form (xvcmpgtsp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVCMPGTSPCC, 0xfc0007f8, 0xf0000658, 0x0, // VSX Vector Compare Greater Than Single-Precision [ & record CR6 ] XX3-form (xvcmpgtsp. XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVCPSGNDP, 0xfc0007f8, 0xf0000780, 0x0, // VSX Vector Copy Sign Double-Precision XX3-form (xvcpsgndp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVCPSGNSP, 0xfc0007f8, 0xf0000680, 0x0, // VSX Vector Copy Sign Single-Precision XX3-form (xvcpsgnsp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVCVDPSP, 0xfc0007fc, 0xf0000624, 0x1f0000, // VSX Vector round Double-Precision to single-precision and Convert to Single-Precision format XX2-form (xvcvdpsp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVCVDPSXDS, 0xfc0007fc, 0xf0000760, 0x1f0000, // VSX Vector truncate Double-Precision to integer and Convert to Signed Integer Doubleword format with Saturate XX2-form (xvcvdpsxds XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVCVDPSXWS, 0xfc0007fc, 0xf0000360, 0x1f0000, // VSX Vector truncate Double-Precision to integer and Convert to Signed Integer Word format with Saturate XX2-form (xvcvdpsxws XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVCVDPUXDS, 0xfc0007fc, 0xf0000720, 0x1f0000, // VSX Vector truncate Double-Precision to integer and Convert to Unsigned Integer Doubleword format with Saturate XX2-form (xvcvdpuxds XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVCVDPUXWS, 0xfc0007fc, 0xf0000320, 0x1f0000, // VSX Vector truncate Double-Precision to integer and Convert to Unsigned Integer Word format with Saturate XX2-form (xvcvdpuxws XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVCVSPDP, 0xfc0007fc, 0xf0000724, 0x1f0000, // VSX Vector Convert Single-Precision to Double-Precision format XX2-form (xvcvspdp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVCVSPSXDS, 0xfc0007fc, 0xf0000660, 0x1f0000, // VSX Vector truncate Single-Precision to integer and Convert to Signed Integer Doubleword format with Saturate XX2-form (xvcvspsxds XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVCVSPSXWS, 0xfc0007fc, 0xf0000260, 0x1f0000, // VSX Vector truncate Single-Precision to integer and Convert to Signed Integer Word format with Saturate XX2-form (xvcvspsxws XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVCVSPUXDS, 0xfc0007fc, 0xf0000620, 0x1f0000, // VSX Vector truncate Single-Precision to integer and Convert to Unsigned Integer Doubleword format with Saturate XX2-form (xvcvspuxds XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVCVSPUXWS, 0xfc0007fc, 0xf0000220, 0x1f0000, // VSX Vector truncate Single-Precision to integer and Convert to Unsigned Integer Word format with Saturate XX2-form (xvcvspuxws XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVCVSXDDP, 0xfc0007fc, 0xf00007e0, 0x1f0000, // VSX Vector Convert and round Signed Integer Doubleword to Double-Precision format XX2-form (xvcvsxddp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVCVSXDSP, 0xfc0007fc, 0xf00006e0, 0x1f0000, // VSX Vector Convert and round Signed Integer Doubleword to Single-Precision format XX2-form (xvcvsxdsp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVCVSXWDP, 0xfc0007fc, 0xf00003e0, 0x1f0000, // VSX Vector Convert Signed Integer Word to Double-Precision format XX2-form (xvcvsxwdp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVCVSXWSP, 0xfc0007fc, 0xf00002e0, 0x1f0000, // VSX Vector Convert and round Signed Integer Word to Single-Precision format XX2-form (xvcvsxwsp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVCVUXDDP, 0xfc0007fc, 0xf00007a0, 0x1f0000, // VSX Vector Convert and round Unsigned Integer Doubleword to Double-Precision format XX2-form (xvcvuxddp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVCVUXDSP, 0xfc0007fc, 0xf00006a0, 0x1f0000, // VSX Vector Convert and round Unsigned Integer Doubleword to Single-Precision format XX2-form (xvcvuxdsp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVCVUXWDP, 0xfc0007fc, 0xf00003a0, 0x1f0000, // VSX Vector Convert and round Unsigned Integer Word to Double-Precision format XX2-form (xvcvuxwdp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVCVUXWSP, 0xfc0007fc, 0xf00002a0, 0x1f0000, // VSX Vector Convert and round Unsigned Integer Word to Single-Precision format XX2-form (xvcvuxwsp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVDIVDP, 0xfc0007f8, 0xf00003c0, 0x0, // VSX Vector Divide Double-Precision XX3-form (xvdivdp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVDIVSP, 0xfc0007f8, 0xf00002c0, 0x0, // VSX Vector Divide Single-Precision XX3-form (xvdivsp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVMADDADP, 0xfc0007f8, 0xf0000308, 0x0, // VSX Vector Multiply-Add Double-Precision XX3-form (xvmaddadp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVMADDASP, 0xfc0007f8, 0xf0000208, 0x0, // VSX Vector Multiply-Add Single-Precision XX3-form (xvmaddasp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVMAXDP, 0xfc0007f8, 0xf0000700, 0x0, // VSX Vector Maximum Double-Precision XX3-form (xvmaxdp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVMAXSP, 0xfc0007f8, 0xf0000600, 0x0, // VSX Vector Maximum Single-Precision XX3-form (xvmaxsp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVMINDP, 0xfc0007f8, 0xf0000740, 0x0, // VSX Vector Minimum Double-Precision XX3-form (xvmindp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVMINSP, 0xfc0007f8, 0xf0000640, 0x0, // VSX Vector Minimum Single-Precision XX3-form (xvminsp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVMSUBADP, 0xfc0007f8, 0xf0000388, 0x0, // VSX Vector Multiply-Subtract Double-Precision XX3-form (xvmsubadp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVMSUBASP, 0xfc0007f8, 0xf0000288, 0x0, // VSX Vector Multiply-Subtract Single-Precision XX3-form (xvmsubasp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVMULDP, 0xfc0007f8, 0xf0000380, 0x0, // VSX Vector Multiply Double-Precision XX3-form (xvmuldp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVMULSP, 0xfc0007f8, 0xf0000280, 0x0, // VSX Vector Multiply Single-Precision XX3-form (xvmulsp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVNABSDP, 0xfc0007fc, 0xf00007a4, 0x1f0000, // VSX Vector Negative Absolute Value Double-Precision XX2-form (xvnabsdp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVNABSSP, 0xfc0007fc, 0xf00006a4, 0x1f0000, // VSX Vector Negative Absolute Value Single-Precision XX2-form (xvnabssp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVNEGDP, 0xfc0007fc, 0xf00007e4, 0x1f0000, // VSX Vector Negate Double-Precision XX2-form (xvnegdp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVNEGSP, 0xfc0007fc, 0xf00006e4, 0x1f0000, // VSX Vector Negate Single-Precision XX2-form (xvnegsp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVNMADDADP, 0xfc0007f8, 0xf0000708, 0x0, // VSX Vector Negative Multiply-Add Double-Precision XX3-form (xvnmaddadp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVNMADDASP, 0xfc0007f8, 0xf0000608, 0x0, // VSX Vector Negative Multiply-Add Single-Precision XX3-form (xvnmaddasp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVNMSUBADP, 0xfc0007f8, 0xf0000788, 0x0, // VSX Vector Negative Multiply-Subtract Double-Precision XX3-form (xvnmsubadp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVNMSUBASP, 0xfc0007f8, 0xf0000688, 0x0, // VSX Vector Negative Multiply-Subtract Single-Precision XX3-form (xvnmsubasp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVRDPI, 0xfc0007fc, 0xf0000324, 0x1f0000, // VSX Vector Round to Double-Precision Integer using round to Nearest Away XX2-form (xvrdpi XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVRDPIC, 0xfc0007fc, 0xf00003ac, 0x1f0000, // VSX Vector Round to Double-Precision Integer Exact using Current rounding mode XX2-form (xvrdpic XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVRDPIM, 0xfc0007fc, 0xf00003e4, 0x1f0000, // VSX Vector Round to Double-Precision Integer using round toward -Infinity XX2-form (xvrdpim XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVRDPIP, 0xfc0007fc, 0xf00003a4, 0x1f0000, // VSX Vector Round to Double-Precision Integer using round toward +Infinity XX2-form (xvrdpip XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVRDPIZ, 0xfc0007fc, 0xf0000364, 0x1f0000, // VSX Vector Round to Double-Precision Integer using round toward Zero XX2-form (xvrdpiz XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVREDP, 0xfc0007fc, 0xf0000368, 0x1f0000, // VSX Vector Reciprocal Estimate Double-Precision XX2-form (xvredp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVRESP, 0xfc0007fc, 0xf0000268, 0x1f0000, // VSX Vector Reciprocal Estimate Single-Precision XX2-form (xvresp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVRSPI, 0xfc0007fc, 0xf0000224, 0x1f0000, // VSX Vector Round to Single-Precision Integer using round to Nearest Away XX2-form (xvrspi XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVRSPIC, 0xfc0007fc, 0xf00002ac, 0x1f0000, // VSX Vector Round to Single-Precision Integer Exact using Current rounding mode XX2-form (xvrspic XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVRSPIM, 0xfc0007fc, 0xf00002e4, 0x1f0000, // VSX Vector Round to Single-Precision Integer using round toward -Infinity XX2-form (xvrspim XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVRSPIP, 0xfc0007fc, 0xf00002a4, 0x1f0000, // VSX Vector Round to Single-Precision Integer using round toward +Infinity XX2-form (xvrspip XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVRSPIZ, 0xfc0007fc, 0xf0000264, 0x1f0000, // VSX Vector Round to Single-Precision Integer using round toward Zero XX2-form (xvrspiz XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVRSQRTEDP, 0xfc0007fc, 0xf0000328, 0x1f0000, // VSX Vector Reciprocal Square Root Estimate Double-Precision XX2-form (xvrsqrtedp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVRSQRTESP, 0xfc0007fc, 0xf0000228, 0x1f0000, // VSX Vector Reciprocal Square Root Estimate Single-Precision XX2-form (xvrsqrtesp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVSQRTDP, 0xfc0007fc, 0xf000032c, 0x1f0000, // VSX Vector Square Root Double-Precision XX2-form (xvsqrtdp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVSQRTSP, 0xfc0007fc, 0xf000022c, 0x1f0000, // VSX Vector Square Root Single-Precision XX2-form (xvsqrtsp XT,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, - {XVSUBDP, 0xfc0007f8, 0xf0000340, 0x0, // VSX Vector Subtract Double-Precision XX3-form (xvsubdp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVSUBSP, 0xfc0007f8, 0xf0000240, 0x0, // VSX Vector Subtract Single-Precision XX3-form (xvsubsp XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVTDIVDP, 0xfc0007f8, 0xf00003e8, 0x600001, // VSX Vector Test for software Divide Double-Precision XX3-form (xvtdivdp BF,XA,XB) - [5]*argField{ap_CondRegField_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVTDIVSP, 0xfc0007f8, 0xf00002e8, 0x600001, // VSX Vector Test for software Divide Single-Precision XX3-form (xvtdivsp BF,XA,XB) - [5]*argField{ap_CondRegField_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XVTSQRTDP, 0xfc0007fc, 0xf00003a8, 0x7f0001, // VSX Vector Test for software Square Root Double-Precision XX2-form (xvtsqrtdp BF,XB) - [5]*argField{ap_CondRegField_6_8, ap_VecSReg_30_30_16_20}}, - {XVTSQRTSP, 0xfc0007fc, 0xf00002a8, 0x7f0001, // VSX Vector Test for software Square Root Single-Precision XX2-form (xvtsqrtsp BF,XB) - [5]*argField{ap_CondRegField_6_8, ap_VecSReg_30_30_16_20}}, - {XXLAND, 0xfc0007f8, 0xf0000410, 0x0, // VSX Logical AND XX3-form (xxland XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XXLANDC, 0xfc0007f8, 0xf0000450, 0x0, // VSX Logical AND with Complement XX3-form (xxlandc XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XXLEQV, 0xfc0007f8, 0xf00005d0, 0x0, // VSX Logical Equivalence XX3-form (xxleqv XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XXLNAND, 0xfc0007f8, 0xf0000590, 0x0, // VSX Logical NAND XX3-form (xxlnand XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XXLORC, 0xfc0007f8, 0xf0000550, 0x0, // VSX Logical OR with Complement XX3-form (xxlorc XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XXLNOR, 0xfc0007f8, 0xf0000510, 0x0, // VSX Logical NOR XX3-form (xxlnor XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XXLOR, 0xfc0007f8, 0xf0000490, 0x0, // VSX Logical OR XX3-form (xxlor XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XXLXOR, 0xfc0007f8, 0xf00004d0, 0x0, // VSX Logical XOR XX3-form (xxlxor XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XXMRGHW, 0xfc0007f8, 0xf0000090, 0x0, // VSX Merge High Word XX3-form (xxmrghw XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XXMRGLW, 0xfc0007f8, 0xf0000190, 0x0, // VSX Merge Low Word XX3-form (xxmrglw XT,XA,XB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, - {XXPERMDI, 0xfc0004f8, 0xf0000050, 0x0, // VSX Permute Doubleword Immediate XX3-form (xxpermdi XT,XA,XB,DM) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20, ap_ImmUnsigned_22_23}}, - {XXSEL, 0xfc000030, 0xf0000030, 0x0, // VSX Select XX4-form (xxsel XT,XA,XB,XC) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20, ap_VecSReg_28_28_21_25}}, - {XXSLDWI, 0xfc0004f8, 0xf0000010, 0x0, // VSX Shift Left Double by Word Immediate XX3-form (xxsldwi XT,XA,XB,SHW) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20, ap_ImmUnsigned_22_23}}, - {XXSPLTW, 0xfc0007fc, 0xf0000290, 0x1c0000, // VSX Splat Word XX2-form (xxspltw XT,XB,UIM) - [5]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20, ap_ImmUnsigned_14_15}}, - {BRINC, 0xfc0007ff, 0x1000020f, 0x0, // Bit Reversed Increment EVX-form (brinc RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVABS, 0xfc0007ff, 0x10000208, 0xf800, // Vector Absolute Value EVX-form (evabs RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {EVADDIW, 0xfc0007ff, 0x10000202, 0x0, // Vector Add Immediate Word EVX-form (evaddiw RT,RB,UI) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20, ap_ImmUnsigned_11_15}}, - {EVADDSMIAAW, 0xfc0007ff, 0x100004c9, 0xf800, // Vector Add Signed, Modulo, Integer to Accumulator Word EVX-form (evaddsmiaaw RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {EVADDSSIAAW, 0xfc0007ff, 0x100004c1, 0xf800, // Vector Add Signed, Saturate, Integer to Accumulator Word EVX-form (evaddssiaaw RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {EVADDUMIAAW, 0xfc0007ff, 0x100004c8, 0xf800, // Vector Add Unsigned, Modulo, Integer to Accumulator Word EVX-form (evaddumiaaw RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {EVADDUSIAAW, 0xfc0007ff, 0x100004c0, 0xf800, // Vector Add Unsigned, Saturate, Integer to Accumulator Word EVX-form (evaddusiaaw RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {EVADDW, 0xfc0007ff, 0x10000200, 0x0, // Vector Add Word EVX-form (evaddw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVAND, 0xfc0007ff, 0x10000211, 0x0, // Vector AND EVX-form (evand RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVCMPEQ, 0xfc0007ff, 0x10000234, 0x600000, // Vector Compare Equal EVX-form (evcmpeq BF,RA,RB) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, - {EVANDC, 0xfc0007ff, 0x10000212, 0x0, // Vector AND with Complement EVX-form (evandc RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVCMPGTS, 0xfc0007ff, 0x10000231, 0x600000, // Vector Compare Greater Than Signed EVX-form (evcmpgts BF,RA,RB) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, - {EVCMPGTU, 0xfc0007ff, 0x10000230, 0x600000, // Vector Compare Greater Than Unsigned EVX-form (evcmpgtu BF,RA,RB) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, - {EVCMPLTU, 0xfc0007ff, 0x10000232, 0x600000, // Vector Compare Less Than Unsigned EVX-form (evcmpltu BF,RA,RB) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, - {EVCMPLTS, 0xfc0007ff, 0x10000233, 0x600000, // Vector Compare Less Than Signed EVX-form (evcmplts BF,RA,RB) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, - {EVCNTLSW, 0xfc0007ff, 0x1000020e, 0xf800, // Vector Count Leading Signed Bits Word EVX-form (evcntlsw RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {EVCNTLZW, 0xfc0007ff, 0x1000020d, 0xf800, // Vector Count Leading Zeros Word EVX-form (evcntlzw RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {EVDIVWS, 0xfc0007ff, 0x100004c6, 0x0, // Vector Divide Word Signed EVX-form (evdivws RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVDIVWU, 0xfc0007ff, 0x100004c7, 0x0, // Vector Divide Word Unsigned EVX-form (evdivwu RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVEQV, 0xfc0007ff, 0x10000219, 0x0, // Vector Equivalent EVX-form (eveqv RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVEXTSB, 0xfc0007ff, 0x1000020a, 0xf800, // Vector Extend Sign Byte EVX-form (evextsb RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {EVEXTSH, 0xfc0007ff, 0x1000020b, 0xf800, // Vector Extend Sign Halfword EVX-form (evextsh RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {EVLDD, 0xfc0007ff, 0x10000301, 0x0, // Vector Load Double Word into Double Word EVX-form (evldd RT,D(RA)) - [5]*argField{ap_Reg_6_10, ap_ImmUnsigned_16_20, ap_Reg_11_15}}, - {EVLDH, 0xfc0007ff, 0x10000305, 0x0, // Vector Load Double into Four Halfwords EVX-form (evldh RT,D(RA)) - [5]*argField{ap_Reg_6_10, ap_ImmUnsigned_16_20, ap_Reg_11_15}}, - {EVLDDX, 0xfc0007ff, 0x10000300, 0x0, // Vector Load Double Word into Double Word Indexed EVX-form (evlddx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVLDHX, 0xfc0007ff, 0x10000304, 0x0, // Vector Load Double into Four Halfwords Indexed EVX-form (evldhx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVLDW, 0xfc0007ff, 0x10000303, 0x0, // Vector Load Double into Two Words EVX-form (evldw RT,D(RA)) - [5]*argField{ap_Reg_6_10, ap_ImmUnsigned_16_20, ap_Reg_11_15}}, - {EVLHHESPLAT, 0xfc0007ff, 0x10000309, 0x0, // Vector Load Halfword into Halfwords Even and Splat EVX-form (evlhhesplat RT,D(RA)) - [5]*argField{ap_Reg_6_10, ap_ImmUnsigned_16_20, ap_Reg_11_15}}, - {EVLDWX, 0xfc0007ff, 0x10000302, 0x0, // Vector Load Double into Two Words Indexed EVX-form (evldwx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVLHHESPLATX, 0xfc0007ff, 0x10000308, 0x0, // Vector Load Halfword into Halfwords Even and Splat Indexed EVX-form (evlhhesplatx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVLHHOSSPLAT, 0xfc0007ff, 0x1000030f, 0x0, // Vector Load Halfword into Halfword Odd Signed and Splat EVX-form (evlhhossplat RT,D(RA)) - [5]*argField{ap_Reg_6_10, ap_ImmUnsigned_16_20, ap_Reg_11_15}}, - {EVLHHOUSPLAT, 0xfc0007ff, 0x1000030d, 0x0, // Vector Load Halfword into Halfword Odd Unsigned and Splat EVX-form (evlhhousplat RT,D(RA)) - [5]*argField{ap_Reg_6_10, ap_ImmUnsigned_16_20, ap_Reg_11_15}}, - {EVLHHOSSPLATX, 0xfc0007ff, 0x1000030e, 0x0, // Vector Load Halfword into Halfword Odd Signed and Splat Indexed EVX-form (evlhhossplatx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVLHHOUSPLATX, 0xfc0007ff, 0x1000030c, 0x0, // Vector Load Halfword into Halfword Odd Unsigned and Splat Indexed EVX-form (evlhhousplatx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVLWHE, 0xfc0007ff, 0x10000311, 0x0, // Vector Load Word into Two Halfwords Even EVX-form (evlwhe RT,D(RA)) - [5]*argField{ap_Reg_6_10, ap_ImmUnsigned_16_20, ap_Reg_11_15}}, - {EVLWHOS, 0xfc0007ff, 0x10000317, 0x0, // Vector Load Word into Two Halfwords Odd Signed (with sign extension) EVX-form (evlwhos RT,D(RA)) - [5]*argField{ap_Reg_6_10, ap_ImmUnsigned_16_20, ap_Reg_11_15}}, - {EVLWHEX, 0xfc0007ff, 0x10000310, 0x0, // Vector Load Word into Two Halfwords Even Indexed EVX-form (evlwhex RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVLWHOSX, 0xfc0007ff, 0x10000316, 0x0, // Vector Load Word into Two Halfwords Odd Signed Indexed (with sign extension) EVX-form (evlwhosx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVLWHOU, 0xfc0007ff, 0x10000315, 0x0, // Vector Load Word into Two Halfwords Odd Unsigned (zero-extended) EVX-form (evlwhou RT,D(RA)) - [5]*argField{ap_Reg_6_10, ap_ImmUnsigned_16_20, ap_Reg_11_15}}, - {EVLWHSPLAT, 0xfc0007ff, 0x1000031d, 0x0, // Vector Load Word into Two Halfwords and Splat EVX-form (evlwhsplat RT,D(RA)) - [5]*argField{ap_Reg_6_10, ap_ImmUnsigned_16_20, ap_Reg_11_15}}, - {EVLWHOUX, 0xfc0007ff, 0x10000314, 0x0, // Vector Load Word into Two Halfwords Odd Unsigned Indexed (zero-extended) EVX-form (evlwhoux RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVLWHSPLATX, 0xfc0007ff, 0x1000031c, 0x0, // Vector Load Word into Two Halfwords and Splat Indexed EVX-form (evlwhsplatx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVLWWSPLAT, 0xfc0007ff, 0x10000319, 0x0, // Vector Load Word into Word and Splat EVX-form (evlwwsplat RT,D(RA)) - [5]*argField{ap_Reg_6_10, ap_ImmUnsigned_16_20, ap_Reg_11_15}}, - {EVMERGEHI, 0xfc0007ff, 0x1000022c, 0x0, // Vector Merge High EVX-form (evmergehi RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVLWWSPLATX, 0xfc0007ff, 0x10000318, 0x0, // Vector Load Word into Word and Splat Indexed EVX-form (evlwwsplatx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMERGELO, 0xfc0007ff, 0x1000022d, 0x0, // Vector Merge Low EVX-form (evmergelo RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMERGEHILO, 0xfc0007ff, 0x1000022e, 0x0, // Vector Merge High/Low EVX-form (evmergehilo RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHEGSMFAA, 0xfc0007ff, 0x1000052b, 0x0, // Vector Multiply Halfwords, Even, Guarded, Signed, Modulo, Fractional and Accumulate EVX-form (evmhegsmfaa RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMERGELOHI, 0xfc0007ff, 0x1000022f, 0x0, // Vector Merge Low/High EVX-form (evmergelohi RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHEGSMFAN, 0xfc0007ff, 0x100005ab, 0x0, // Vector Multiply Halfwords, Even, Guarded, Signed, Modulo, Fractional and Accumulate Negative EVX-form (evmhegsmfan RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHEGSMIAA, 0xfc0007ff, 0x10000529, 0x0, // Vector Multiply Halfwords, Even, Guarded, Signed, Modulo, Integer and Accumulate EVX-form (evmhegsmiaa RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHEGUMIAA, 0xfc0007ff, 0x10000528, 0x0, // Vector Multiply Halfwords, Even, Guarded, Unsigned, Modulo, Integer and Accumulate EVX-form (evmhegumiaa RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHEGSMIAN, 0xfc0007ff, 0x100005a9, 0x0, // Vector Multiply Halfwords, Even, Guarded, Signed, Modulo, Integer and Accumulate Negative EVX-form (evmhegsmian RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHEGUMIAN, 0xfc0007ff, 0x100005a8, 0x0, // Vector Multiply Halfwords, Even, Guarded, Unsigned, Modulo, Integer and Accumulate Negative EVX-form (evmhegumian RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHESMF, 0xfc0007ff, 0x1000040b, 0x0, // Vector Multiply Halfwords, Even, Signed, Modulo, Fractional EVX-form (evmhesmf RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHESMFAAW, 0xfc0007ff, 0x1000050b, 0x0, // Vector Multiply Halfwords, Even, Signed, Modulo, Fractional and Accumulate into Words EVX-form (evmhesmfaaw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHESMFA, 0xfc0007ff, 0x1000042b, 0x0, // Vector Multiply Halfwords, Even, Signed, Modulo, Fractional to Accumulator EVX-form (evmhesmfa RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHESMFANW, 0xfc0007ff, 0x1000058b, 0x0, // Vector Multiply Halfwords, Even, Signed, Modulo, Fractional and Accumulate Negative into Words EVX-form (evmhesmfanw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHESMI, 0xfc0007ff, 0x10000409, 0x0, // Vector Multiply Halfwords, Even, Signed, Modulo, Integer EVX-form (evmhesmi RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHESMIAAW, 0xfc0007ff, 0x10000509, 0x0, // Vector Multiply Halfwords, Even, Signed, Modulo, Integer and Accumulate into Words EVX-form (evmhesmiaaw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHESMIA, 0xfc0007ff, 0x10000429, 0x0, // Vector Multiply Halfwords, Even, Signed, Modulo, Integer to Accumulator EVX-form (evmhesmia RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHESMIANW, 0xfc0007ff, 0x10000589, 0x0, // Vector Multiply Halfwords, Even, Signed, Modulo, Integer and Accumulate Negative into Words EVX-form (evmhesmianw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHESSF, 0xfc0007ff, 0x10000403, 0x0, // Vector Multiply Halfwords, Even, Signed, Saturate, Fractional EVX-form (evmhessf RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHESSFA, 0xfc0007ff, 0x10000423, 0x0, // Vector Multiply Halfwords, Even, Signed, Saturate, Fractional to Accumulator EVX-form (evmhessfa RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHESSFAAW, 0xfc0007ff, 0x10000503, 0x0, // Vector Multiply Halfwords, Even, Signed, Saturate, Fractional and Accumulate into Words EVX-form (evmhessfaaw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHESSFANW, 0xfc0007ff, 0x10000583, 0x0, // Vector Multiply Halfwords, Even, Signed, Saturate, Fractional and Accumulate Negative into Words EVX-form (evmhessfanw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHESSIAAW, 0xfc0007ff, 0x10000501, 0x0, // Vector Multiply Halfwords, Even, Signed, Saturate, Integer and Accumulate into Words EVX-form (evmhessiaaw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHESSIANW, 0xfc0007ff, 0x10000581, 0x0, // Vector Multiply Halfwords, Even, Signed, Saturate, Integer and Accumulate Negative into Words EVX-form (evmhessianw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHEUMI, 0xfc0007ff, 0x10000408, 0x0, // Vector Multiply Halfwords, Even, Unsigned, Modulo, Integer EVX-form (evmheumi RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHEUMIAAW, 0xfc0007ff, 0x10000508, 0x0, // Vector Multiply Halfwords, Even, Unsigned, Modulo, Integer and Accumulate into Words EVX-form (evmheumiaaw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHEUMIA, 0xfc0007ff, 0x10000428, 0x0, // Vector Multiply Halfwords, Even, Unsigned, Modulo, Integer to Accumulator EVX-form (evmheumia RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHEUMIANW, 0xfc0007ff, 0x10000588, 0x0, // Vector Multiply Halfwords, Even, Unsigned, Modulo, Integer and Accumulate Negative into Words EVX-form (evmheumianw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHEUSIAAW, 0xfc0007ff, 0x10000500, 0x0, // Vector Multiply Halfwords, Even, Unsigned, Saturate, Integer and Accumulate into Words EVX-form (evmheusiaaw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHEUSIANW, 0xfc0007ff, 0x10000580, 0x0, // Vector Multiply Halfwords, Even, Unsigned, Saturate, Integer and Accumulate Negative into Words EVX-form (evmheusianw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHOGSMFAA, 0xfc0007ff, 0x1000052f, 0x0, // Vector Multiply Halfwords, Odd, Guarded, Signed, Modulo, Fractional and Accumulate EVX-form (evmhogsmfaa RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHOGSMIAA, 0xfc0007ff, 0x1000052d, 0x0, // Vector Multiply Halfwords, Odd, Guarded, Signed, Modulo, Integer and Accumulate EVX-form (evmhogsmiaa RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHOGSMFAN, 0xfc0007ff, 0x100005af, 0x0, // Vector Multiply Halfwords, Odd, Guarded, Signed, Modulo, Fractional and Accumulate Negative EVX-form (evmhogsmfan RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHOGSMIAN, 0xfc0007ff, 0x100005ad, 0x0, // Vector Multiply Halfwords, Odd, Guarded, Signed, Modulo, Integer and Accumulate Negative EVX-form (evmhogsmian RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHOGUMIAA, 0xfc0007ff, 0x1000052c, 0x0, // Vector Multiply Halfwords, Odd, Guarded, Unsigned, Modulo, Integer and Accumulate EVX-form (evmhogumiaa RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHOSMF, 0xfc0007ff, 0x1000040f, 0x0, // Vector Multiply Halfwords, Odd, Signed, Modulo, Fractional EVX-form (evmhosmf RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHOGUMIAN, 0xfc0007ff, 0x100005ac, 0x0, // Vector Multiply Halfwords, Odd, Guarded, Unsigned, Modulo, Integer and Accumulate Negative EVX-form (evmhogumian RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHOSMFA, 0xfc0007ff, 0x1000042f, 0x0, // Vector Multiply Halfwords, Odd, Signed, Modulo, Fractional to Accumulator EVX-form (evmhosmfa RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHOSMFAAW, 0xfc0007ff, 0x1000050f, 0x0, // Vector Multiply Halfwords, Odd, Signed, Modulo, Fractional and Accumulate into Words EVX-form (evmhosmfaaw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHOSMI, 0xfc0007ff, 0x1000040d, 0x0, // Vector Multiply Halfwords, Odd, Signed, Modulo, Integer EVX-form (evmhosmi RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHOSMFANW, 0xfc0007ff, 0x1000058f, 0x0, // Vector Multiply Halfwords, Odd, Signed, Modulo, Fractional and Accumulate Negative into Words EVX-form (evmhosmfanw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHOSMIA, 0xfc0007ff, 0x1000042d, 0x0, // Vector Multiply Halfwords, Odd, Signed, Modulo, Integer to Accumulator EVX-form (evmhosmia RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHOSMIAAW, 0xfc0007ff, 0x1000050d, 0x0, // Vector Multiply Halfwords, Odd, Signed, Modulo, Integer and Accumulate into Words EVX-form (evmhosmiaaw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHOSMIANW, 0xfc0007ff, 0x1000058d, 0x0, // Vector Multiply Halfwords, Odd, Signed, Modulo, Integer and Accumulate Negative into Words EVX-form (evmhosmianw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHOSSF, 0xfc0007ff, 0x10000407, 0x0, // Vector Multiply Halfwords, Odd, Signed, Saturate, Fractional EVX-form (evmhossf RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHOSSFA, 0xfc0007ff, 0x10000427, 0x0, // Vector Multiply Halfwords, Odd, Signed, Saturate, Fractional to Accumulator EVX-form (evmhossfa RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHOSSFAAW, 0xfc0007ff, 0x10000507, 0x0, // Vector Multiply Halfwords, Odd, Signed, Saturate, Fractional and Accumulate into Words EVX-form (evmhossfaaw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHOSSFANW, 0xfc0007ff, 0x10000587, 0x0, // Vector Multiply Halfwords, Odd, Signed, Saturate, Fractional and Accumulate Negative into Words EVX-form (evmhossfanw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHOSSIAAW, 0xfc0007ff, 0x10000505, 0x0, // Vector Multiply Halfwords, Odd, Signed, Saturate, Integer and Accumulate into Words EVX-form (evmhossiaaw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHOUMI, 0xfc0007ff, 0x1000040c, 0x0, // Vector Multiply Halfwords, Odd, Unsigned, Modulo, Integer EVX-form (evmhoumi RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHOSSIANW, 0xfc0007ff, 0x10000585, 0x0, // Vector Multiply Halfwords, Odd, Signed, Saturate, Integer and Accumulate Negative into Words EVX-form (evmhossianw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHOUMIA, 0xfc0007ff, 0x1000042c, 0x0, // Vector Multiply Halfwords, Odd, Unsigned, Modulo, Integer to Accumulator EVX-form (evmhoumia RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHOUMIAAW, 0xfc0007ff, 0x1000050c, 0x0, // Vector Multiply Halfwords, Odd, Unsigned, Modulo, Integer and Accumulate into Words EVX-form (evmhoumiaaw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHOUSIAAW, 0xfc0007ff, 0x10000504, 0x0, // Vector Multiply Halfwords, Odd, Unsigned, Saturate, Integer and Accumulate into Words EVX-form (evmhousiaaw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHOUMIANW, 0xfc0007ff, 0x1000058c, 0x0, // Vector Multiply Halfwords, Odd, Unsigned, Modulo, Integer and Accumulate Negative into Words EVX-form (evmhoumianw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMHOUSIANW, 0xfc0007ff, 0x10000584, 0x0, // Vector Multiply Halfwords, Odd, Unsigned, Saturate, Integer and Accumulate Negative into Words EVX-form (evmhousianw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMRA, 0xfc0007ff, 0x100004c4, 0xf800, // Initialize Accumulator EVX-form (evmra RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {EVMWHSMF, 0xfc0007ff, 0x1000044f, 0x0, // Vector Multiply Word High Signed, Modulo, Fractional EVX-form (evmwhsmf RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWHSMI, 0xfc0007ff, 0x1000044d, 0x0, // Vector Multiply Word High Signed, Modulo, Integer EVX-form (evmwhsmi RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWHSMFA, 0xfc0007ff, 0x1000046f, 0x0, // Vector Multiply Word High Signed, Modulo, Fractional to Accumulator EVX-form (evmwhsmfa RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWHSMIA, 0xfc0007ff, 0x1000046d, 0x0, // Vector Multiply Word High Signed, Modulo, Integer to Accumulator EVX-form (evmwhsmia RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWHSSF, 0xfc0007ff, 0x10000447, 0x0, // Vector Multiply Word High Signed, Saturate, Fractional EVX-form (evmwhssf RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWHUMI, 0xfc0007ff, 0x1000044c, 0x0, // Vector Multiply Word High Unsigned, Modulo, Integer EVX-form (evmwhumi RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWHSSFA, 0xfc0007ff, 0x10000467, 0x0, // Vector Multiply Word High Signed, Saturate, Fractional to Accumulator EVX-form (evmwhssfa RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWHUMIA, 0xfc0007ff, 0x1000046c, 0x0, // Vector Multiply Word High Unsigned, Modulo, Integer to Accumulator EVX-form (evmwhumia RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWLSMIAAW, 0xfc0007ff, 0x10000549, 0x0, // Vector Multiply Word Low Signed, Modulo, Integer and Accumulate into Words EVX-form (evmwlsmiaaw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWLSSIAAW, 0xfc0007ff, 0x10000541, 0x0, // Vector Multiply Word Low Signed, Saturate, Integer and Accumulate into Words EVX-form (evmwlssiaaw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWLSMIANW, 0xfc0007ff, 0x100005c9, 0x0, // Vector Multiply Word Low Signed, Modulo, Integer and Accumulate Negative in Words EVX-form (evmwlsmianw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWLSSIANW, 0xfc0007ff, 0x100005c1, 0x0, // Vector Multiply Word Low Signed, Saturate, Integer and Accumulate Negative in Words EVX-form (evmwlssianw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWLUMI, 0xfc0007ff, 0x10000448, 0x0, // Vector Multiply Word Low Unsigned, Modulo, Integer EVX-form (evmwlumi RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWLUMIAAW, 0xfc0007ff, 0x10000548, 0x0, // Vector Multiply Word Low Unsigned, Modulo, Integer and Accumulate into Words EVX-form (evmwlumiaaw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWLUMIA, 0xfc0007ff, 0x10000468, 0x0, // Vector Multiply Word Low Unsigned, Modulo, Integer to Accumulator EVX-form (evmwlumia RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWLUMIANW, 0xfc0007ff, 0x100005c8, 0x0, // Vector Multiply Word Low Unsigned, Modulo, Integer and Accumulate Negative in Words EVX-form (evmwlumianw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWLUSIAAW, 0xfc0007ff, 0x10000540, 0x0, // Vector Multiply Word Low Unsigned, Saturate, Integer and Accumulate into Words EVX-form (evmwlusiaaw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWSMF, 0xfc0007ff, 0x1000045b, 0x0, // Vector Multiply Word Signed, Modulo, Fractional EVX-form (evmwsmf RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWLUSIANW, 0xfc0007ff, 0x100005c0, 0x0, // Vector Multiply Word Low Unsigned, Saturate, Integer and Accumulate Negative in Words EVX-form (evmwlusianw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWSMFA, 0xfc0007ff, 0x1000047b, 0x0, // Vector Multiply Word Signed, Modulo, Fractional to Accumulator EVX-form (evmwsmfa RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWSMFAA, 0xfc0007ff, 0x1000055b, 0x0, // Vector Multiply Word Signed, Modulo, Fractional and Accumulate EVX-form (evmwsmfaa RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWSMI, 0xfc0007ff, 0x10000459, 0x0, // Vector Multiply Word Signed, Modulo, Integer EVX-form (evmwsmi RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWSMIAA, 0xfc0007ff, 0x10000559, 0x0, // Vector Multiply Word Signed, Modulo, Integer and Accumulate EVX-form (evmwsmiaa RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWSMFAN, 0xfc0007ff, 0x100005db, 0x0, // Vector Multiply Word Signed, Modulo, Fractional and Accumulate Negative EVX-form (evmwsmfan RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWSMIA, 0xfc0007ff, 0x10000479, 0x0, // Vector Multiply Word Signed, Modulo, Integer to Accumulator EVX-form (evmwsmia RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWSMIAN, 0xfc0007ff, 0x100005d9, 0x0, // Vector Multiply Word Signed, Modulo, Integer and Accumulate Negative EVX-form (evmwsmian RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWSSF, 0xfc0007ff, 0x10000453, 0x0, // Vector Multiply Word Signed, Saturate, Fractional EVX-form (evmwssf RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWSSFA, 0xfc0007ff, 0x10000473, 0x0, // Vector Multiply Word Signed, Saturate, Fractional to Accumulator EVX-form (evmwssfa RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWSSFAA, 0xfc0007ff, 0x10000553, 0x0, // Vector Multiply Word Signed, Saturate, Fractional and Accumulate EVX-form (evmwssfaa RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWUMI, 0xfc0007ff, 0x10000458, 0x0, // Vector Multiply Word Unsigned, Modulo, Integer EVX-form (evmwumi RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWSSFAN, 0xfc0007ff, 0x100005d3, 0x0, // Vector Multiply Word Signed, Saturate, Fractional and Accumulate Negative EVX-form (evmwssfan RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWUMIA, 0xfc0007ff, 0x10000478, 0x0, // Vector Multiply Word Unsigned, Modulo, Integer to Accumulator EVX-form (evmwumia RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWUMIAA, 0xfc0007ff, 0x10000558, 0x0, // Vector Multiply Word Unsigned, Modulo, Integer and Accumulate EVX-form (evmwumiaa RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVNAND, 0xfc0007ff, 0x1000021e, 0x0, // Vector NAND EVX-form (evnand RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVMWUMIAN, 0xfc0007ff, 0x100005d8, 0x0, // Vector Multiply Word Unsigned, Modulo, Integer and Accumulate Negative EVX-form (evmwumian RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVNEG, 0xfc0007ff, 0x10000209, 0xf800, // Vector Negate EVX-form (evneg RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {EVNOR, 0xfc0007ff, 0x10000218, 0x0, // Vector NOR EVX-form (evnor RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVORC, 0xfc0007ff, 0x1000021b, 0x0, // Vector OR with Complement EVX-form (evorc RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVOR, 0xfc0007ff, 0x10000217, 0x0, // Vector OR EVX-form (evor RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVRLW, 0xfc0007ff, 0x10000228, 0x0, // Vector Rotate Left Word EVX-form (evrlw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVRLWI, 0xfc0007ff, 0x1000022a, 0x0, // Vector Rotate Left Word Immediate EVX-form (evrlwi RT,RA,UI) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_ImmUnsigned_16_20}}, - {EVSEL, 0xfc0007f8, 0x10000278, 0x0, // Vector Select EVS-form (evsel RT,RA,RB,BFA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20, ap_CondRegField_29_31}}, - {EVRNDW, 0xfc0007ff, 0x1000020c, 0xf800, // Vector Round Word EVX-form (evrndw RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {EVSLW, 0xfc0007ff, 0x10000224, 0x0, // Vector Shift Left Word EVX-form (evslw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVSPLATFI, 0xfc0007ff, 0x1000022b, 0xf800, // Vector Splat Fractional Immediate EVX-form (evsplatfi RT,SI) - [5]*argField{ap_Reg_6_10, ap_ImmSigned_11_15}}, - {EVSRWIS, 0xfc0007ff, 0x10000223, 0x0, // Vector Shift Right Word Immediate Signed EVX-form (evsrwis RT,RA,UI) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_ImmUnsigned_16_20}}, - {EVSLWI, 0xfc0007ff, 0x10000226, 0x0, // Vector Shift Left Word Immediate EVX-form (evslwi RT,RA,UI) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_ImmUnsigned_16_20}}, - {EVSPLATI, 0xfc0007ff, 0x10000229, 0xf800, // Vector Splat Immediate EVX-form (evsplati RT,SI) - [5]*argField{ap_Reg_6_10, ap_ImmSigned_11_15}}, - {EVSRWIU, 0xfc0007ff, 0x10000222, 0x0, // Vector Shift Right Word Immediate Unsigned EVX-form (evsrwiu RT,RA,UI) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_ImmUnsigned_16_20}}, - {EVSRWS, 0xfc0007ff, 0x10000221, 0x0, // Vector Shift Right Word Signed EVX-form (evsrws RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVSTDD, 0xfc0007ff, 0x10000321, 0x0, // Vector Store Double of Double EVX-form (evstdd RS,D(RA)) - [5]*argField{ap_Reg_6_10, ap_ImmUnsigned_16_20, ap_Reg_11_15}}, - {EVSRWU, 0xfc0007ff, 0x10000220, 0x0, // Vector Shift Right Word Unsigned EVX-form (evsrwu RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVSTDDX, 0xfc0007ff, 0x10000320, 0x0, // Vector Store Double of Double Indexed EVX-form (evstddx RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVSTDH, 0xfc0007ff, 0x10000325, 0x0, // Vector Store Double of Four Halfwords EVX-form (evstdh RS,D(RA)) - [5]*argField{ap_Reg_6_10, ap_ImmUnsigned_16_20, ap_Reg_11_15}}, - {EVSTDW, 0xfc0007ff, 0x10000323, 0x0, // Vector Store Double of Two Words EVX-form (evstdw RS,D(RA)) - [5]*argField{ap_Reg_6_10, ap_ImmUnsigned_16_20, ap_Reg_11_15}}, - {EVSTDHX, 0xfc0007ff, 0x10000324, 0x0, // Vector Store Double of Four Halfwords Indexed EVX-form (evstdhx RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVSTDWX, 0xfc0007ff, 0x10000322, 0x0, // Vector Store Double of Two Words Indexed EVX-form (evstdwx RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVSTWHE, 0xfc0007ff, 0x10000331, 0x0, // Vector Store Word of Two Halfwords from Even EVX-form (evstwhe RS,D(RA)) - [5]*argField{ap_Reg_6_10, ap_ImmUnsigned_16_20, ap_Reg_11_15}}, - {EVSTWHO, 0xfc0007ff, 0x10000335, 0x0, // Vector Store Word of Two Halfwords from Odd EVX-form (evstwho RS,D(RA)) - [5]*argField{ap_Reg_6_10, ap_ImmUnsigned_16_20, ap_Reg_11_15}}, - {EVSTWWE, 0xfc0007ff, 0x10000339, 0x0, // Vector Store Word of Word from Even EVX-form (evstwwe RS,D(RA)) - [5]*argField{ap_Reg_6_10, ap_ImmUnsigned_16_20, ap_Reg_11_15}}, - {EVSTWHEX, 0xfc0007ff, 0x10000330, 0x0, // Vector Store Word of Two Halfwords from Even Indexed EVX-form (evstwhex RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVSTWHOX, 0xfc0007ff, 0x10000334, 0x0, // Vector Store Word of Two Halfwords from Odd Indexed EVX-form (evstwhox RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVSTWWEX, 0xfc0007ff, 0x10000338, 0x0, // Vector Store Word of Word from Even Indexed EVX-form (evstwwex RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVSTWWO, 0xfc0007ff, 0x1000033d, 0x0, // Vector Store Word of Word from Odd EVX-form (evstwwo RS,D(RA)) - [5]*argField{ap_Reg_6_10, ap_ImmUnsigned_16_20, ap_Reg_11_15}}, - {EVSUBFSMIAAW, 0xfc0007ff, 0x100004cb, 0xf800, // Vector Subtract Signed, Modulo, Integer to Accumulator Word EVX-form (evsubfsmiaaw RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {EVSTWWOX, 0xfc0007ff, 0x1000033c, 0x0, // Vector Store Word of Word from Odd Indexed EVX-form (evstwwox RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVSUBFSSIAAW, 0xfc0007ff, 0x100004c3, 0xf800, // Vector Subtract Signed, Saturate, Integer to Accumulator Word EVX-form (evsubfssiaaw RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {EVSUBFUMIAAW, 0xfc0007ff, 0x100004ca, 0xf800, // Vector Subtract Unsigned, Modulo, Integer to Accumulator Word EVX-form (evsubfumiaaw RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {EVSUBFUSIAAW, 0xfc0007ff, 0x100004c2, 0xf800, // Vector Subtract Unsigned, Saturate, Integer to Accumulator Word EVX-form (evsubfusiaaw RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {EVSUBFW, 0xfc0007ff, 0x10000204, 0x0, // Vector Subtract from Word EVX-form (evsubfw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVSUBIFW, 0xfc0007ff, 0x10000206, 0x0, // Vector Subtract Immediate from Word EVX-form (evsubifw RT,UI,RB) - [5]*argField{ap_Reg_6_10, ap_ImmUnsigned_11_15, ap_Reg_16_20}}, - {EVXOR, 0xfc0007ff, 0x10000216, 0x0, // Vector XOR EVX-form (evxor RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVFSABS, 0xfc0007ff, 0x10000284, 0xf800, // Vector Floating-Point Single-Precision Absolute Value EVX-form (evfsabs RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {EVFSNABS, 0xfc0007ff, 0x10000285, 0xf800, // Vector Floating-Point Single-Precision Negative Absolute Value EVX-form (evfsnabs RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {EVFSNEG, 0xfc0007ff, 0x10000286, 0xf800, // Vector Floating-Point Single-Precision Negate EVX-form (evfsneg RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {EVFSADD, 0xfc0007ff, 0x10000280, 0x0, // Vector Floating-Point Single-Precision Add EVX-form (evfsadd RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVFSMUL, 0xfc0007ff, 0x10000288, 0x0, // Vector Floating-Point Single-Precision Multiply EVX-form (evfsmul RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVFSSUB, 0xfc0007ff, 0x10000281, 0x0, // Vector Floating-Point Single-Precision Subtract EVX-form (evfssub RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVFSDIV, 0xfc0007ff, 0x10000289, 0x0, // Vector Floating-Point Single-Precision Divide EVX-form (evfsdiv RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVFSCMPGT, 0xfc0007ff, 0x1000028c, 0x600000, // Vector Floating-Point Single-Precision Compare Greater Than EVX-form (evfscmpgt BF,RA,RB) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, - {EVFSCMPLT, 0xfc0007ff, 0x1000028d, 0x600000, // Vector Floating-Point Single-Precision Compare Less Than EVX-form (evfscmplt BF,RA,RB) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, - {EVFSCMPEQ, 0xfc0007ff, 0x1000028e, 0x600000, // Vector Floating-Point Single-Precision Compare Equal EVX-form (evfscmpeq BF,RA,RB) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, - {EVFSTSTGT, 0xfc0007ff, 0x1000029c, 0x600000, // Vector Floating-Point Single-Precision Test Greater Than EVX-form (evfststgt BF,RA,RB) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, - {EVFSTSTLT, 0xfc0007ff, 0x1000029d, 0x600000, // Vector Floating-Point Single-Precision Test Less Than EVX-form (evfststlt BF,RA,RB) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, - {EVFSTSTEQ, 0xfc0007ff, 0x1000029e, 0x600000, // Vector Floating-Point Single-Precision Test Equal EVX-form (evfststeq BF,RA,RB) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, - {EVFSCFSI, 0xfc0007ff, 0x10000291, 0x1f0000, // Vector Convert Floating-Point Single-Precision from Signed Integer EVX-form (evfscfsi RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EVFSCFSF, 0xfc0007ff, 0x10000293, 0x1f0000, // Vector Convert Floating-Point Single-Precision from Signed Fraction EVX-form (evfscfsf RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EVFSCFUI, 0xfc0007ff, 0x10000290, 0x1f0000, // Vector Convert Floating-Point Single-Precision from Unsigned Integer EVX-form (evfscfui RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EVFSCFUF, 0xfc0007ff, 0x10000292, 0x1f0000, // Vector Convert Floating-Point Single-Precision from Unsigned Fraction EVX-form (evfscfuf RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EVFSCTSI, 0xfc0007ff, 0x10000295, 0x1f0000, // Vector Convert Floating-Point Single-Precision to Signed Integer EVX-form (evfsctsi RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EVFSCTUI, 0xfc0007ff, 0x10000294, 0x1f0000, // Vector Convert Floating-Point Single-Precision to Unsigned Integer EVX-form (evfsctui RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EVFSCTSIZ, 0xfc0007ff, 0x1000029a, 0x1f0000, // Vector Convert Floating-Point Single-Precision to Signed Integer with Round toward Zero EVX-form (evfsctsiz RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EVFSCTUIZ, 0xfc0007ff, 0x10000298, 0x1f0000, // Vector Convert Floating-Point Single-Precision to Unsigned Integer with Round toward Zero EVX-form (evfsctuiz RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EVFSCTSF, 0xfc0007ff, 0x10000297, 0x1f0000, // Vector Convert Floating-Point Single-Precision to Signed Fraction EVX-form (evfsctsf RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EVFSCTUF, 0xfc0007ff, 0x10000296, 0x1f0000, // Vector Convert Floating-Point Single-Precision to Unsigned Fraction EVX-form (evfsctuf RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EFSABS, 0xfc0007ff, 0x100002c4, 0xf800, // Floating-Point Single-Precision Absolute Value EVX-form (efsabs RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {EFSNEG, 0xfc0007ff, 0x100002c6, 0xf800, // Floating-Point Single-Precision Negate EVX-form (efsneg RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {EFSNABS, 0xfc0007ff, 0x100002c5, 0xf800, // Floating-Point Single-Precision Negative Absolute Value EVX-form (efsnabs RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {EFSADD, 0xfc0007ff, 0x100002c0, 0x0, // Floating-Point Single-Precision Add EVX-form (efsadd RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EFSMUL, 0xfc0007ff, 0x100002c8, 0x0, // Floating-Point Single-Precision Multiply EVX-form (efsmul RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EFSSUB, 0xfc0007ff, 0x100002c1, 0x0, // Floating-Point Single-Precision Subtract EVX-form (efssub RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EFSDIV, 0xfc0007ff, 0x100002c9, 0x0, // Floating-Point Single-Precision Divide EVX-form (efsdiv RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EFSCMPGT, 0xfc0007ff, 0x100002cc, 0x600000, // Floating-Point Single-Precision Compare Greater Than EVX-form (efscmpgt BF,RA,RB) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, - {EFSCMPLT, 0xfc0007ff, 0x100002cd, 0x600000, // Floating-Point Single-Precision Compare Less Than EVX-form (efscmplt BF,RA,RB) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, - {EFSCMPEQ, 0xfc0007ff, 0x100002ce, 0x600000, // Floating-Point Single-Precision Compare Equal EVX-form (efscmpeq BF,RA,RB) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, - {EFSTSTGT, 0xfc0007ff, 0x100002dc, 0x600000, // Floating-Point Single-Precision Test Greater Than EVX-form (efststgt BF,RA,RB) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, - {EFSTSTLT, 0xfc0007ff, 0x100002dd, 0x600000, // Floating-Point Single-Precision Test Less Than EVX-form (efststlt BF,RA,RB) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, - {EFSTSTEQ, 0xfc0007ff, 0x100002de, 0x600000, // Floating-Point Single-Precision Test Equal EVX-form (efststeq BF,RA,RB) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, - {EFSCFSI, 0xfc0007ff, 0x100002d1, 0x1f0000, // Convert Floating-Point Single-Precision from Signed Integer EVX-form (efscfsi RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EFSCFSF, 0xfc0007ff, 0x100002d3, 0x1f0000, // Convert Floating-Point Single-Precision from Signed Fraction EVX-form (efscfsf RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EFSCTSI, 0xfc0007ff, 0x100002d5, 0x1f0000, // Convert Floating-Point Single-Precision to Signed Integer EVX-form (efsctsi RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EFSCFUI, 0xfc0007ff, 0x100002d0, 0x1f0000, // Convert Floating-Point Single-Precision from Unsigned Integer EVX-form (efscfui RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EFSCFUF, 0xfc0007ff, 0x100002d2, 0x1f0000, // Convert Floating-Point Single-Precision from Unsigned Fraction EVX-form (efscfuf RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EFSCTUI, 0xfc0007ff, 0x100002d4, 0x1f0000, // Convert Floating-Point Single-Precision to Unsigned Integer EVX-form (efsctui RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EFSCTSIZ, 0xfc0007ff, 0x100002da, 0x1f0000, // Convert Floating-Point Single-Precision to Signed Integer with Round toward Zero EVX-form (efsctsiz RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EFSCTSF, 0xfc0007ff, 0x100002d7, 0x1f0000, // Convert Floating-Point Single-Precision to Signed Fraction EVX-form (efsctsf RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EFSCTUIZ, 0xfc0007ff, 0x100002d8, 0x1f0000, // Convert Floating-Point Single-Precision to Unsigned Integer with Round toward Zero EVX-form (efsctuiz RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EFSCTUF, 0xfc0007ff, 0x100002d6, 0x1f0000, // Convert Floating-Point Single-Precision to Unsigned Fraction EVX-form (efsctuf RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EFDABS, 0xfc0007ff, 0x100002e4, 0xf800, // Floating-Point Double-Precision Absolute Value EVX-form (efdabs RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {EFDNEG, 0xfc0007ff, 0x100002e6, 0xf800, // Floating-Point Double-Precision Negate EVX-form (efdneg RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {EFDNABS, 0xfc0007ff, 0x100002e5, 0xf800, // Floating-Point Double-Precision Negative Absolute Value EVX-form (efdnabs RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {EFDADD, 0xfc0007ff, 0x100002e0, 0x0, // Floating-Point Double-Precision Add EVX-form (efdadd RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EFDMUL, 0xfc0007ff, 0x100002e8, 0x0, // Floating-Point Double-Precision Multiply EVX-form (efdmul RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EFDSUB, 0xfc0007ff, 0x100002e1, 0x0, // Floating-Point Double-Precision Subtract EVX-form (efdsub RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EFDDIV, 0xfc0007ff, 0x100002e9, 0x0, // Floating-Point Double-Precision Divide EVX-form (efddiv RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EFDCMPGT, 0xfc0007ff, 0x100002ec, 0x600000, // Floating-Point Double-Precision Compare Greater Than EVX-form (efdcmpgt BF,RA,RB) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, - {EFDCMPEQ, 0xfc0007ff, 0x100002ee, 0x600000, // Floating-Point Double-Precision Compare Equal EVX-form (efdcmpeq BF,RA,RB) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, - {EFDCMPLT, 0xfc0007ff, 0x100002ed, 0x600000, // Floating-Point Double-Precision Compare Less Than EVX-form (efdcmplt BF,RA,RB) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, - {EFDTSTGT, 0xfc0007ff, 0x100002fc, 0x600000, // Floating-Point Double-Precision Test Greater Than EVX-form (efdtstgt BF,RA,RB) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, - {EFDTSTLT, 0xfc0007ff, 0x100002fd, 0x600000, // Floating-Point Double-Precision Test Less Than EVX-form (efdtstlt BF,RA,RB) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, - {EFDCFSI, 0xfc0007ff, 0x100002f1, 0x1f0000, // Convert Floating-Point Double-Precision from Signed Integer EVX-form (efdcfsi RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EFDTSTEQ, 0xfc0007ff, 0x100002fe, 0x600000, // Floating-Point Double-Precision Test Equal EVX-form (efdtsteq BF,RA,RB) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, - {EFDCFUI, 0xfc0007ff, 0x100002f0, 0x1f0000, // Convert Floating-Point Double-Precision from Unsigned Integer EVX-form (efdcfui RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EFDCFSID, 0xfc0007ff, 0x100002e3, 0x1f0000, // Convert Floating-Point Double-Precision from Signed Integer Doubleword EVX-form (efdcfsid RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EFDCFSF, 0xfc0007ff, 0x100002f3, 0x1f0000, // Convert Floating-Point Double-Precision from Signed Fraction EVX-form (efdcfsf RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EFDCFUF, 0xfc0007ff, 0x100002f2, 0x1f0000, // Convert Floating-Point Double-Precision from Unsigned Fraction EVX-form (efdcfuf RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EFDCFUID, 0xfc0007ff, 0x100002e2, 0x1f0000, // Convert Floating-Point Double-Precision from Unsigned Integer Doubleword EVX-form (efdcfuid RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EFDCTSI, 0xfc0007ff, 0x100002f5, 0x1f0000, // Convert Floating-Point Double-Precision to Signed Integer EVX-form (efdctsi RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EFDCTUI, 0xfc0007ff, 0x100002f4, 0x1f0000, // Convert Floating-Point Double-Precision to Unsigned Integer EVX-form (efdctui RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EFDCTSIDZ, 0xfc0007ff, 0x100002eb, 0x1f0000, // Convert Floating-Point Double-Precision to Signed Integer Doubleword with Round toward Zero EVX-form (efdctsidz RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EFDCTUIDZ, 0xfc0007ff, 0x100002ea, 0x1f0000, // Convert Floating-Point Double-Precision to Unsigned Integer Doubleword with Round toward Zero EVX-form (efdctuidz RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EFDCTSIZ, 0xfc0007ff, 0x100002fa, 0x1f0000, // Convert Floating-Point Double-Precision to Signed Integer with Round toward Zero EVX-form (efdctsiz RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EFDCTSF, 0xfc0007ff, 0x100002f7, 0x1f0000, // Convert Floating-Point Double-Precision to Signed Fraction EVX-form (efdctsf RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EFDCTUF, 0xfc0007ff, 0x100002f6, 0x1f0000, // Convert Floating-Point Double-Precision to Unsigned Fraction EVX-form (efdctuf RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EFDCTUIZ, 0xfc0007ff, 0x100002f8, 0x1f0000, // Convert Floating-Point Double-Precision to Unsigned Integer with Round toward Zero EVX-form (efdctuiz RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EFDCFS, 0xfc0007ff, 0x100002ef, 0x1f0000, // Floating-Point Double-Precision Convert from Single-Precision EVX-form (efdcfs RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {EFSCFD, 0xfc0007ff, 0x100002cf, 0x1f0000, // Floating-Point Single-Precision Convert from Double-Precision EVX-form (efscfd RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {DLMZB, 0xfc0007ff, 0x7c00009c, 0x0, // Determine Leftmost Zero Byte X-form (dlmzb RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {DLMZBCC, 0xfc0007ff, 0x7c00009d, 0x0, // Determine Leftmost Zero Byte X-form (dlmzb. RA,RS,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {MACCHW, 0xfc0007ff, 0x10000158, 0x0, // Multiply Accumulate Cross Halfword to Word Modulo Signed XO-form (macchw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACCHWCC, 0xfc0007ff, 0x10000159, 0x0, // Multiply Accumulate Cross Halfword to Word Modulo Signed XO-form (macchw. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACCHWO, 0xfc0007ff, 0x10000558, 0x0, // Multiply Accumulate Cross Halfword to Word Modulo Signed XO-form (macchwo RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACCHWOCC, 0xfc0007ff, 0x10000559, 0x0, // Multiply Accumulate Cross Halfword to Word Modulo Signed XO-form (macchwo. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACCHWS, 0xfc0007ff, 0x100001d8, 0x0, // Multiply Accumulate Cross Halfword to Word Saturate Signed XO-form (macchws RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACCHWSCC, 0xfc0007ff, 0x100001d9, 0x0, // Multiply Accumulate Cross Halfword to Word Saturate Signed XO-form (macchws. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACCHWSO, 0xfc0007ff, 0x100005d8, 0x0, // Multiply Accumulate Cross Halfword to Word Saturate Signed XO-form (macchwso RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACCHWSOCC, 0xfc0007ff, 0x100005d9, 0x0, // Multiply Accumulate Cross Halfword to Word Saturate Signed XO-form (macchwso. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACCHWU, 0xfc0007ff, 0x10000118, 0x0, // Multiply Accumulate Cross Halfword to Word Modulo Unsigned XO-form (macchwu RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACCHWUCC, 0xfc0007ff, 0x10000119, 0x0, // Multiply Accumulate Cross Halfword to Word Modulo Unsigned XO-form (macchwu. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACCHWUO, 0xfc0007ff, 0x10000518, 0x0, // Multiply Accumulate Cross Halfword to Word Modulo Unsigned XO-form (macchwuo RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACCHWUOCC, 0xfc0007ff, 0x10000519, 0x0, // Multiply Accumulate Cross Halfword to Word Modulo Unsigned XO-form (macchwuo. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACCHWSU, 0xfc0007ff, 0x10000198, 0x0, // Multiply Accumulate Cross Halfword to Word Saturate Unsigned XO-form (macchwsu RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACCHWSUCC, 0xfc0007ff, 0x10000199, 0x0, // Multiply Accumulate Cross Halfword to Word Saturate Unsigned XO-form (macchwsu. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACCHWSUO, 0xfc0007ff, 0x10000598, 0x0, // Multiply Accumulate Cross Halfword to Word Saturate Unsigned XO-form (macchwsuo RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACCHWSUOCC, 0xfc0007ff, 0x10000599, 0x0, // Multiply Accumulate Cross Halfword to Word Saturate Unsigned XO-form (macchwsuo. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACHHW, 0xfc0007ff, 0x10000058, 0x0, // Multiply Accumulate High Halfword to Word Modulo Signed XO-form (machhw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACHHWCC, 0xfc0007ff, 0x10000059, 0x0, // Multiply Accumulate High Halfword to Word Modulo Signed XO-form (machhw. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACHHWO, 0xfc0007ff, 0x10000458, 0x0, // Multiply Accumulate High Halfword to Word Modulo Signed XO-form (machhwo RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACHHWOCC, 0xfc0007ff, 0x10000459, 0x0, // Multiply Accumulate High Halfword to Word Modulo Signed XO-form (machhwo. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACHHWS, 0xfc0007ff, 0x100000d8, 0x0, // Multiply Accumulate High Halfword to Word Saturate Signed XO-form (machhws RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACHHWSCC, 0xfc0007ff, 0x100000d9, 0x0, // Multiply Accumulate High Halfword to Word Saturate Signed XO-form (machhws. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACHHWSO, 0xfc0007ff, 0x100004d8, 0x0, // Multiply Accumulate High Halfword to Word Saturate Signed XO-form (machhwso RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACHHWSOCC, 0xfc0007ff, 0x100004d9, 0x0, // Multiply Accumulate High Halfword to Word Saturate Signed XO-form (machhwso. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACHHWU, 0xfc0007ff, 0x10000018, 0x0, // Multiply Accumulate High Halfword to Word Modulo Unsigned XO-form (machhwu RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACHHWUCC, 0xfc0007ff, 0x10000019, 0x0, // Multiply Accumulate High Halfword to Word Modulo Unsigned XO-form (machhwu. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACHHWUO, 0xfc0007ff, 0x10000418, 0x0, // Multiply Accumulate High Halfword to Word Modulo Unsigned XO-form (machhwuo RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACHHWUOCC, 0xfc0007ff, 0x10000419, 0x0, // Multiply Accumulate High Halfword to Word Modulo Unsigned XO-form (machhwuo. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACHHWSU, 0xfc0007ff, 0x10000098, 0x0, // Multiply Accumulate High Halfword to Word Saturate Unsigned XO-form (machhwsu RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACHHWSUCC, 0xfc0007ff, 0x10000099, 0x0, // Multiply Accumulate High Halfword to Word Saturate Unsigned XO-form (machhwsu. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACHHWSUO, 0xfc0007ff, 0x10000498, 0x0, // Multiply Accumulate High Halfword to Word Saturate Unsigned XO-form (machhwsuo RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACHHWSUOCC, 0xfc0007ff, 0x10000499, 0x0, // Multiply Accumulate High Halfword to Word Saturate Unsigned XO-form (machhwsuo. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACLHW, 0xfc0007ff, 0x10000358, 0x0, // Multiply Accumulate Low Halfword to Word Modulo Signed XO-form (maclhw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACLHWCC, 0xfc0007ff, 0x10000359, 0x0, // Multiply Accumulate Low Halfword to Word Modulo Signed XO-form (maclhw. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACLHWO, 0xfc0007ff, 0x10000758, 0x0, // Multiply Accumulate Low Halfword to Word Modulo Signed XO-form (maclhwo RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACLHWOCC, 0xfc0007ff, 0x10000759, 0x0, // Multiply Accumulate Low Halfword to Word Modulo Signed XO-form (maclhwo. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACLHWS, 0xfc0007ff, 0x100003d8, 0x0, // Multiply Accumulate Low Halfword to Word Saturate Signed XO-form (maclhws RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACLHWSCC, 0xfc0007ff, 0x100003d9, 0x0, // Multiply Accumulate Low Halfword to Word Saturate Signed XO-form (maclhws. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACLHWSO, 0xfc0007ff, 0x100007d8, 0x0, // Multiply Accumulate Low Halfword to Word Saturate Signed XO-form (maclhwso RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACLHWSOCC, 0xfc0007ff, 0x100007d9, 0x0, // Multiply Accumulate Low Halfword to Word Saturate Signed XO-form (maclhwso. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACLHWU, 0xfc0007ff, 0x10000318, 0x0, // Multiply Accumulate Low Halfword to Word Modulo Unsigned XO-form (maclhwu RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACLHWUCC, 0xfc0007ff, 0x10000319, 0x0, // Multiply Accumulate Low Halfword to Word Modulo Unsigned XO-form (maclhwu. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACLHWUO, 0xfc0007ff, 0x10000718, 0x0, // Multiply Accumulate Low Halfword to Word Modulo Unsigned XO-form (maclhwuo RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACLHWUOCC, 0xfc0007ff, 0x10000719, 0x0, // Multiply Accumulate Low Halfword to Word Modulo Unsigned XO-form (maclhwuo. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MULCHW, 0xfc0007ff, 0x10000150, 0x0, // Multiply Cross Halfword to Word Signed X-form (mulchw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MULCHWCC, 0xfc0007ff, 0x10000151, 0x0, // Multiply Cross Halfword to Word Signed X-form (mulchw. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACLHWSU, 0xfc0007ff, 0x10000398, 0x0, // Multiply Accumulate Low Halfword to Word Saturate Unsigned XO-form (maclhwsu RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACLHWSUCC, 0xfc0007ff, 0x10000399, 0x0, // Multiply Accumulate Low Halfword to Word Saturate Unsigned XO-form (maclhwsu. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACLHWSUO, 0xfc0007ff, 0x10000798, 0x0, // Multiply Accumulate Low Halfword to Word Saturate Unsigned XO-form (maclhwsuo RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MACLHWSUOCC, 0xfc0007ff, 0x10000799, 0x0, // Multiply Accumulate Low Halfword to Word Saturate Unsigned XO-form (maclhwsuo. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MULCHWU, 0xfc0007ff, 0x10000110, 0x0, // Multiply Cross Halfword to Word Unsigned X-form (mulchwu RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MULCHWUCC, 0xfc0007ff, 0x10000111, 0x0, // Multiply Cross Halfword to Word Unsigned X-form (mulchwu. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MULHHW, 0xfc0007ff, 0x10000050, 0x0, // Multiply High Halfword to Word Signed X-form (mulhhw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MULHHWCC, 0xfc0007ff, 0x10000051, 0x0, // Multiply High Halfword to Word Signed X-form (mulhhw. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MULLHW, 0xfc0007ff, 0x10000350, 0x0, // Multiply Low Halfword to Word Signed X-form (mullhw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MULLHWCC, 0xfc0007ff, 0x10000351, 0x0, // Multiply Low Halfword to Word Signed X-form (mullhw. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MULHHWU, 0xfc0007ff, 0x10000010, 0x0, // Multiply High Halfword to Word Unsigned X-form (mulhhwu RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MULHHWUCC, 0xfc0007ff, 0x10000011, 0x0, // Multiply High Halfword to Word Unsigned X-form (mulhhwu. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MULLHWU, 0xfc0007ff, 0x10000310, 0x0, // Multiply Low Halfword to Word Unsigned X-form (mullhwu RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MULLHWUCC, 0xfc0007ff, 0x10000311, 0x0, // Multiply Low Halfword to Word Unsigned X-form (mullhwu. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {NMACCHW, 0xfc0007ff, 0x1000015c, 0x0, // Negative Multiply Accumulate Cross Halfword to Word Modulo Signed XO-form (nmacchw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {NMACCHWCC, 0xfc0007ff, 0x1000015d, 0x0, // Negative Multiply Accumulate Cross Halfword to Word Modulo Signed XO-form (nmacchw. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {NMACCHWO, 0xfc0007ff, 0x1000055c, 0x0, // Negative Multiply Accumulate Cross Halfword to Word Modulo Signed XO-form (nmacchwo RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {NMACCHWOCC, 0xfc0007ff, 0x1000055d, 0x0, // Negative Multiply Accumulate Cross Halfword to Word Modulo Signed XO-form (nmacchwo. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {NMACCHWS, 0xfc0007ff, 0x100001dc, 0x0, // Negative Multiply Accumulate Cross Halfword to Word Saturate Signed XO-form (nmacchws RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {NMACCHWSCC, 0xfc0007ff, 0x100001dd, 0x0, // Negative Multiply Accumulate Cross Halfword to Word Saturate Signed XO-form (nmacchws. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {NMACCHWSO, 0xfc0007ff, 0x100005dc, 0x0, // Negative Multiply Accumulate Cross Halfword to Word Saturate Signed XO-form (nmacchwso RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {NMACCHWSOCC, 0xfc0007ff, 0x100005dd, 0x0, // Negative Multiply Accumulate Cross Halfword to Word Saturate Signed XO-form (nmacchwso. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {NMACHHW, 0xfc0007ff, 0x1000005c, 0x0, // Negative Multiply Accumulate High Halfword to Word Modulo Signed XO-form (nmachhw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {NMACHHWCC, 0xfc0007ff, 0x1000005d, 0x0, // Negative Multiply Accumulate High Halfword to Word Modulo Signed XO-form (nmachhw. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {NMACHHWO, 0xfc0007ff, 0x1000045c, 0x0, // Negative Multiply Accumulate High Halfword to Word Modulo Signed XO-form (nmachhwo RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {NMACHHWOCC, 0xfc0007ff, 0x1000045d, 0x0, // Negative Multiply Accumulate High Halfword to Word Modulo Signed XO-form (nmachhwo. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {NMACHHWS, 0xfc0007ff, 0x100000dc, 0x0, // Negative Multiply Accumulate High Halfword to Word Saturate Signed XO-form (nmachhws RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {NMACHHWSCC, 0xfc0007ff, 0x100000dd, 0x0, // Negative Multiply Accumulate High Halfword to Word Saturate Signed XO-form (nmachhws. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {NMACHHWSO, 0xfc0007ff, 0x100004dc, 0x0, // Negative Multiply Accumulate High Halfword to Word Saturate Signed XO-form (nmachhwso RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {NMACHHWSOCC, 0xfc0007ff, 0x100004dd, 0x0, // Negative Multiply Accumulate High Halfword to Word Saturate Signed XO-form (nmachhwso. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {NMACLHW, 0xfc0007ff, 0x1000035c, 0x0, // Negative Multiply Accumulate Low Halfword to Word Modulo Signed XO-form (nmaclhw RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {NMACLHWCC, 0xfc0007ff, 0x1000035d, 0x0, // Negative Multiply Accumulate Low Halfword to Word Modulo Signed XO-form (nmaclhw. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {NMACLHWO, 0xfc0007ff, 0x1000075c, 0x0, // Negative Multiply Accumulate Low Halfword to Word Modulo Signed XO-form (nmaclhwo RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {NMACLHWOCC, 0xfc0007ff, 0x1000075d, 0x0, // Negative Multiply Accumulate Low Halfword to Word Modulo Signed XO-form (nmaclhwo. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {NMACLHWS, 0xfc0007ff, 0x100003dc, 0x0, // Negative Multiply Accumulate Low Halfword to Word Saturate Signed XO-form (nmaclhws RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {NMACLHWSCC, 0xfc0007ff, 0x100003dd, 0x0, // Negative Multiply Accumulate Low Halfword to Word Saturate Signed XO-form (nmaclhws. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {NMACLHWSO, 0xfc0007ff, 0x100007dc, 0x0, // Negative Multiply Accumulate Low Halfword to Word Saturate Signed XO-form (nmaclhwso RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {NMACLHWSOCC, 0xfc0007ff, 0x100007dd, 0x0, // Negative Multiply Accumulate Low Halfword to Word Saturate Signed XO-form (nmaclhwso. RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {ICBI, 0xfc0007fe, 0x7c0007ac, 0x3e00001, // Instruction Cache Block Invalidate X-form (icbi RA,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_16_20}}, - {ICBT, 0xfc0007fe, 0x7c00002c, 0x2000001, // Instruction Cache Block Touch X-form (icbt CT, RA, RB) - [5]*argField{ap_ImmUnsigned_7_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DCBA, 0xfc0007fe, 0x7c0005ec, 0x3e00001, // Data Cache Block Allocate X-form (dcba RA,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_16_20}}, - {DCBT, 0xfc0007fe, 0x7c00022c, 0x1, // Data Cache Block Touch X-form (dcbt RA,RB,TH) - [5]*argField{ap_Reg_11_15, ap_Reg_16_20, ap_ImmUnsigned_6_10}}, - {DCBT, 0xfc0007fe, 0x7c00022c, 0x1, // Data Cache Block Touch X-form (dcbt TH,RA,RB) - [5]*argField{ap_ImmUnsigned_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DCBTST, 0xfc0007fe, 0x7c0001ec, 0x1, // Data Cache Block Touch for Store X-form (dcbtst RA,RB,TH) - [5]*argField{ap_Reg_11_15, ap_Reg_16_20, ap_ImmUnsigned_6_10}}, - {DCBTST, 0xfc0007fe, 0x7c0001ec, 0x1, // Data Cache Block Touch for Store X-form (dcbtst TH,RA,RB) - [5]*argField{ap_ImmUnsigned_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DCBZ, 0xfc0007fe, 0x7c0007ec, 0x3e00001, // Data Cache Block set to Zero X-form (dcbz RA,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_16_20}}, - {DCBST, 0xfc0007fe, 0x7c00006c, 0x3e00001, // Data Cache Block Store X-form (dcbst RA,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_16_20}}, - {DCBF, 0xfc0007fe, 0x7c0000ac, 0x3800001, // Data Cache Block Flush X-form (dcbf RA,RB,L) - [5]*argField{ap_Reg_11_15, ap_Reg_16_20, ap_ImmUnsigned_9_10}}, - {ISYNC, 0xfc0007fe, 0x4c00012c, 0x3fff801, // Instruction Synchronize XL-form (isync) - [5]*argField{}}, - {LBARX, 0xfc0007ff, 0x7c000068, 0x0, // Load Byte And Reserve Indexed X-form [Category: Phased-In] (lbarx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LBARX, 0xfc0007fe, 0x7c000068, 0x0, // Load Byte And Reserve Indexed X-form [Category: Phased-In] (lbarx RT,RA,RB,EH) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20, ap_ImmUnsigned_31_31}}, - {LHARX, 0xfc0007ff, 0x7c0000e8, 0x0, // Load Halfword And Reserve Indexed X-form [Category: Phased-In] (lharx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LHARX, 0xfc0007fe, 0x7c0000e8, 0x0, // Load Halfword And Reserve Indexed X-form [Category: Phased-In] (lharx RT,RA,RB,EH) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20, ap_ImmUnsigned_31_31}}, - {LWARX, 0xfc0007ff, 0x7c000028, 0x0, // Load Word And Reserve Indexed X-form (lwarx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LWARX, 0xfc0007ff, 0x7c000028, 0x0, // Load Word And Reserve Indexed X-form (lwarx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LWARX, 0xfc0007fe, 0x7c000028, 0x0, // Load Word And Reserve Indexed X-form (lwarx RT,RA,RB,EH) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20, ap_ImmUnsigned_31_31}}, - {STBCXCC, 0xfc0007ff, 0x7c00056d, 0x0, // Store Byte Conditional Indexed X-form [Category: Phased-In] (stbcx. RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STHCXCC, 0xfc0007ff, 0x7c0005ad, 0x0, // Store Halfword Conditional Indexed X-form [Category: Phased-In] (sthcx. RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STWCXCC, 0xfc0007ff, 0x7c00012d, 0x0, // Store Word Conditional Indexed X-form (stwcx. RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LDARX, 0xfc0007ff, 0x7c0000a8, 0x0, // Load Doubleword And Reserve Indexed X-form (ldarx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LDARX, 0xfc0007fe, 0x7c0000a8, 0x0, // Load Doubleword And Reserve Indexed X-form (ldarx RT,RA,RB,EH) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20, ap_ImmUnsigned_31_31}}, - {STDCXCC, 0xfc0007ff, 0x7c0001ad, 0x0, // Store Doubleword Conditional Indexed X-form (stdcx. RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LQARX, 0xfc0007ff, 0x7c000228, 0x0, // Load Quadword And Reserve Indexed X-form (lqarx RTp,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LQARX, 0xfc0007fe, 0x7c000228, 0x0, // Load Quadword And Reserve Indexed X-form (lqarx RTp,RA,RB,EH) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20, ap_ImmUnsigned_31_31}}, - {STQCXCC, 0xfc0007ff, 0x7c00016d, 0x0, // Store Quadword Conditional Indexed X-form (stqcx. RSp,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {SYNC, 0xfc0007fe, 0x7c0004ac, 0x390f801, // Synchronize X-form (sync L, E) - [5]*argField{ap_ImmUnsigned_9_10, ap_ImmUnsigned_12_15}}, - {EIEIO, 0xfc0007fe, 0x7c0006ac, 0x3fff801, // Enforce In-order Execution of I/O X-form (eieio) - [5]*argField{}}, - {MBAR, 0xfc0007fe, 0x7c0006ac, 0x1ff801, // Memory Barrier X-form (mbar MO) - [5]*argField{ap_ImmUnsigned_6_10}}, - {WAIT, 0xfc0007fe, 0x7c00007c, 0x39ff801, // Wait X-form (wait WC) - [5]*argField{ap_ImmUnsigned_9_10}}, - {TBEGINCC, 0xfc0007ff, 0x7c00051d, 0x1dff800, // Transaction Begin X-form (tbegin. R) - [5]*argField{ap_ImmUnsigned_10_10}}, - {TENDCC, 0xfc0007ff, 0x7c00055d, 0x1fff800, // Transaction End X-form (tend. A) - [5]*argField{ap_ImmUnsigned_6_6}}, - {TABORTCC, 0xfc0007ff, 0x7c00071d, 0x3e0f800, // Transaction Abort X-form (tabort. RA) - [5]*argField{ap_Reg_11_15}}, - {TABORTWCCC, 0xfc0007ff, 0x7c00061d, 0x0, // Transaction Abort Word Conditional X-form (tabortwc. TO,RA,RB) - [5]*argField{ap_ImmUnsigned_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {TABORTWCICC, 0xfc0007ff, 0x7c00069d, 0x0, // Transaction Abort Word Conditional Immediate X-form (tabortwci. TO,RA,SI) - [5]*argField{ap_ImmUnsigned_6_10, ap_Reg_11_15, ap_ImmSigned_16_20}}, - {TABORTDCCC, 0xfc0007ff, 0x7c00065d, 0x0, // Transaction Abort Doubleword Conditional X-form (tabortdc. TO,RA,RB) - [5]*argField{ap_ImmUnsigned_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {TABORTDCICC, 0xfc0007ff, 0x7c0006dd, 0x0, // Transaction Abort Doubleword Conditional Immediate X-form (tabortdci. TO,RA, SI) - [5]*argField{ap_ImmUnsigned_6_10, ap_Reg_11_15, ap_ImmSigned_16_20}}, - {TSRCC, 0xfc0007ff, 0x7c0005dd, 0x3dff800, // Transaction Suspend or Resume X-form (tsr. L) - [5]*argField{ap_ImmUnsigned_10_10}}, - {TCHECK, 0xfc0007fe, 0x7c00059c, 0x7ff801, // Transaction Check X-form (tcheck BF) - [5]*argField{ap_CondRegField_6_8}}, - {MFTB, 0xfc0007fe, 0x7c0002e6, 0x1, // Move From Time Base XFX-form (mftb RT,TBR) - [5]*argField{ap_Reg_6_10, ap_SpReg_16_20_11_15}}, - {RFEBB, 0xfc0007fe, 0x4c000124, 0x3fff001, // Return from Event-Based Branch XL-form (rfebb S) - [5]*argField{ap_ImmUnsigned_20_20}}, - {LBDX, 0xfc0007fe, 0x7c000406, 0x1, // Load Byte with Decoration Indexed X-form (lbdx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LHDX, 0xfc0007fe, 0x7c000446, 0x1, // Load Halfword with Decoration Indexed X-form (lhdx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LWDX, 0xfc0007fe, 0x7c000486, 0x1, // Load Word with Decoration Indexed X-form (lwdx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LDDX, 0xfc0007fe, 0x7c0004c6, 0x1, // Load Doubleword with Decoration Indexed X-form (lddx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LFDDX, 0xfc0007fe, 0x7c000646, 0x1, // Load Floating Doubleword with Decoration Indexed X-form (lfddx FRT,RA,RB) - [5]*argField{ap_FPReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STBDX, 0xfc0007fe, 0x7c000506, 0x1, // Store Byte with Decoration Indexed X-form (stbdx RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STHDX, 0xfc0007fe, 0x7c000546, 0x1, // Store Halfword with Decoration Indexed X-form (sthdx RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STWDX, 0xfc0007fe, 0x7c000586, 0x1, // Store Word with Decoration Indexed X-form (stwdx RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STDDX, 0xfc0007fe, 0x7c0005c6, 0x1, // Store Doubleword with Decoration Indexed X-form (stddx RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STFDDX, 0xfc0007fe, 0x7c000746, 0x1, // Store Floating Doubleword with Decoration Indexed X-form (stfddx FRS,RA,RB) - [5]*argField{ap_FPReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DSN, 0xfc0007fe, 0x7c0003c6, 0x3e00001, // Decorated Storage Notify X-form (dsn RA,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_16_20}}, - {ECIWX, 0xfc0007fe, 0x7c00026c, 0x1, // External Control In Word Indexed X-form (eciwx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {ECOWX, 0xfc0007fe, 0x7c00036c, 0x1, // External Control Out Word Indexed X-form (ecowx RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {SC, 0xfc000002, 0x44000002, 0x3fff01d, // System Call SC-form (sc LEV) - [5]*argField{ap_ImmUnsigned_20_26}}, - {RFID, 0xfc0007fe, 0x4c000024, 0x3fff801, // Return From Interrupt Doubleword XL-form (rfid) - [5]*argField{}}, - {HRFID, 0xfc0007fe, 0x4c000224, 0x3fff801, // Hypervisor Return From Interrupt Doubleword XL-form (hrfid) - [5]*argField{}}, - {DOZE, 0xfc0007fe, 0x4c000324, 0x3fff801, // Doze XL-form (doze) - [5]*argField{}}, - {NAP, 0xfc0007fe, 0x4c000364, 0x3fff801, // Nap XL-form (nap) - [5]*argField{}}, - {SLEEP, 0xfc0007fe, 0x4c0003a4, 0x3fff801, // Sleep XL-form (sleep) - [5]*argField{}}, - {RVWINKLE, 0xfc0007fe, 0x4c0003e4, 0x3fff801, // Rip Van Winkle XL-form (rvwinkle) - [5]*argField{}}, - {LBZCIX, 0xfc0007fe, 0x7c0006aa, 0x1, // Load Byte and Zero Caching Inhibited Indexed X-form (lbzcix RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LWZCIX, 0xfc0007fe, 0x7c00062a, 0x1, // Load Word and Zero Caching Inhibited Indexed X-form (lwzcix RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LHZCIX, 0xfc0007fe, 0x7c00066a, 0x1, // Load Halfword and Zero Caching Inhibited Indexed X-form (lhzcix RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LDCIX, 0xfc0007fe, 0x7c0006ea, 0x1, // Load Doubleword Caching Inhibited Indexed X-form (ldcix RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STBCIX, 0xfc0007fe, 0x7c0007aa, 0x1, // Store Byte Caching Inhibited Indexed X-form (stbcix RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STWCIX, 0xfc0007fe, 0x7c00072a, 0x1, // Store Word Caching Inhibited Indexed X-form (stwcix RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STHCIX, 0xfc0007fe, 0x7c00076a, 0x1, // Store Halfword Caching Inhibited Indexed X-form (sthcix RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STDCIX, 0xfc0007fe, 0x7c0007ea, 0x1, // Store Doubleword Caching Inhibited Indexed X-form (stdcix RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {TRECLAIMCC, 0xfc0007ff, 0x7c00075d, 0x3e0f800, // Transaction Reclaim X-form (treclaim. RA) - [5]*argField{ap_Reg_11_15}}, - {TRECHKPTCC, 0xfc0007ff, 0x7c0007dd, 0x3fff800, // Transaction Recheckpoint X-form (trechkpt.) - [5]*argField{}}, - {MTSPR, 0xfc0007fe, 0x7c0003a6, 0x1, // Move To Special Purpose Register XFX-form (mtspr SPR,RS) - [5]*argField{ap_SpReg_16_20_11_15, ap_Reg_6_10}}, - {MFSPR, 0xfc0007fe, 0x7c0002a6, 0x1, // Move From Special Purpose Register XFX-form (mfspr RT,SPR) - [5]*argField{ap_Reg_6_10, ap_SpReg_16_20_11_15}}, - {MTMSR, 0xfc0007fe, 0x7c000124, 0x1ef801, // Move To Machine State Register X-form (mtmsr RS,L) - [5]*argField{ap_Reg_6_10, ap_ImmUnsigned_15_15}}, - {MTMSRD, 0xfc0007fe, 0x7c000164, 0x1ef801, // Move To Machine State Register Doubleword X-form (mtmsrd RS,L) - [5]*argField{ap_Reg_6_10, ap_ImmUnsigned_15_15}}, - {MFMSR, 0xfc0007fe, 0x7c0000a6, 0x1ff801, // Move From Machine State Register X-form (mfmsr RT) - [5]*argField{ap_Reg_6_10}}, - {SLBIE, 0xfc0007fe, 0x7c000364, 0x3ff0001, // SLB Invalidate Entry X-form (slbie RB) - [5]*argField{ap_Reg_16_20}}, - {SLBIA, 0xfc0007fe, 0x7c0003e4, 0x31ff801, // SLB Invalidate All X-form (slbia IH) - [5]*argField{ap_ImmUnsigned_8_10}}, - {SLBMTE, 0xfc0007fe, 0x7c000324, 0x1f0001, // SLB Move To Entry X-form (slbmte RS,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {SLBMFEV, 0xfc0007fe, 0x7c0006a6, 0x1f0001, // SLB Move From Entry VSID X-form (slbmfev RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {SLBMFEE, 0xfc0007fe, 0x7c000726, 0x1f0001, // SLB Move From Entry ESID X-form (slbmfee RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {SLBFEECC, 0xfc0007ff, 0x7c0007a7, 0x1f0000, // SLB Find Entry ESID X-form (slbfee. RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {MTSR, 0xfc0007fe, 0x7c0001a4, 0x10f801, // Move To Segment Register X-form (mtsr SR,RS) - [5]*argField{ap_SpReg_12_15, ap_Reg_6_10}}, - {MTSRIN, 0xfc0007fe, 0x7c0001e4, 0x1f0001, // Move To Segment Register Indirect X-form (mtsrin RS,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {MFSR, 0xfc0007fe, 0x7c0004a6, 0x10f801, // Move From Segment Register X-form (mfsr RT,SR) - [5]*argField{ap_Reg_6_10, ap_SpReg_12_15}}, - {MFSRIN, 0xfc0007fe, 0x7c000526, 0x1f0001, // Move From Segment Register Indirect X-form (mfsrin RT,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_16_20}}, - {TLBIE, 0xfc0007fe, 0x7c000264, 0x1f0001, // TLB Invalidate Entry X-form (tlbie RB,RS) - [5]*argField{ap_Reg_16_20, ap_Reg_6_10}}, - {TLBIEL, 0xfc0007fe, 0x7c000224, 0x3ff0001, // TLB Invalidate Entry Local X-form (tlbiel RB) - [5]*argField{ap_Reg_16_20}}, - {TLBIA, 0xfc0007fe, 0x7c0002e4, 0x3fff801, // TLB Invalidate All X-form (tlbia) - [5]*argField{}}, - {TLBSYNC, 0xfc0007fe, 0x7c00046c, 0x3fff801, // TLB Synchronize X-form (tlbsync) - [5]*argField{}}, - {MSGSND, 0xfc0007fe, 0x7c00019c, 0x3ff0001, // Message Send X-form (msgsnd RB) - [5]*argField{ap_Reg_16_20}}, - {MSGCLR, 0xfc0007fe, 0x7c0001dc, 0x3ff0001, // Message Clear X-form (msgclr RB) - [5]*argField{ap_Reg_16_20}}, - {MSGSNDP, 0xfc0007fe, 0x7c00011c, 0x3ff0001, // Message Send Privileged X-form (msgsndp RB) - [5]*argField{ap_Reg_16_20}}, - {MSGCLRP, 0xfc0007fe, 0x7c00015c, 0x3ff0001, // Message Clear Privileged X-form (msgclrp RB) - [5]*argField{ap_Reg_16_20}}, - {MTTMR, 0xfc0007fe, 0x7c0003dc, 0x1, // Move To Thread Management Register XFX-form (mttmr TMR,RS) - [5]*argField{ap_SpReg_16_20_11_15, ap_Reg_6_10}}, - {SC, 0xfc000002, 0x44000002, 0x3fffffd, // System Call SC-form (sc) - [5]*argField{}}, - {RFI, 0xfc0007fe, 0x4c000064, 0x3fff801, // Return From Interrupt XL-form (rfi) - [5]*argField{}}, - {RFCI, 0xfc0007fe, 0x4c000066, 0x3fff801, // Return From Critical Interrupt XL-form (rfci) - [5]*argField{}}, - {RFDI, 0xfc0007fe, 0x4c00004e, 0x3fff801, // Return From Debug Interrupt X-form (rfdi) - [5]*argField{}}, - {RFMCI, 0xfc0007fe, 0x4c00004c, 0x3fff801, // Return From Machine Check Interrupt XL-form (rfmci) - [5]*argField{}}, - {RFGI, 0xfc0007fe, 0x4c0000cc, 0x3fff801, // Return From Guest Interrupt XL-form (rfgi) - [5]*argField{}}, - {EHPRIV, 0xfc0007fe, 0x7c00021c, 0x1, // Embedded Hypervisor Privilege XL-form (ehpriv OC) - [5]*argField{ap_ImmUnsigned_6_20}}, - {MTSPR, 0xfc0007fe, 0x7c0003a6, 0x1, // Move To Special Purpose Register XFX-form (mtspr SPR,RS) - [5]*argField{ap_SpReg_16_20_11_15, ap_Reg_6_10}}, - {MFSPR, 0xfc0007fe, 0x7c0002a6, 0x1, // Move From Special Purpose Register XFX-form (mfspr RT,SPR) - [5]*argField{ap_Reg_6_10, ap_SpReg_16_20_11_15}}, - {MTDCR, 0xfc0007fe, 0x7c000386, 0x1, // Move To Device Control Register XFX-form (mtdcr DCRN,RS) - [5]*argField{ap_SpReg_16_20_11_15, ap_Reg_6_10}}, - {MTDCRX, 0xfc0007fe, 0x7c000306, 0xf801, // Move To Device Control Register Indexed X-form (mtdcrx RA,RS) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10}}, - {MFDCR, 0xfc0007fe, 0x7c000286, 0x1, // Move From Device Control Register XFX-form (mfdcr RT,DCRN) - [5]*argField{ap_Reg_6_10, ap_SpReg_16_20_11_15}}, - {MFDCRX, 0xfc0007fe, 0x7c000206, 0xf801, // Move From Device Control Register Indexed X-form (mfdcrx RT,RA) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15}}, - {MTMSR, 0xfc0007fe, 0x7c000124, 0x1ff801, // Move To Machine State Register X-form (mtmsr RS) - [5]*argField{ap_Reg_6_10}}, - {MFMSR, 0xfc0007fe, 0x7c0000a6, 0x1ff801, // Move From Machine State Register X-form (mfmsr RT) - [5]*argField{ap_Reg_6_10}}, - {WRTEE, 0xfc0007fe, 0x7c000106, 0x1ff801, // Write MSR External Enable X-form (wrtee RS) - [5]*argField{ap_Reg_6_10}}, - {WRTEEI, 0xfc0007fe, 0x7c000146, 0x3ff7801, // Write MSR External Enable Immediate X-form (wrteei E) - [5]*argField{ap_ImmUnsigned_16_16}}, - {LBEPX, 0xfc0007fe, 0x7c0000be, 0x1, // Load Byte by External Process ID Indexed X-form (lbepx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LHEPX, 0xfc0007fe, 0x7c00023e, 0x1, // Load Halfword by External Process ID Indexed X-form (lhepx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LWEPX, 0xfc0007fe, 0x7c00003e, 0x1, // Load Word by External Process ID Indexed X-form (lwepx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LDEPX, 0xfc0007fe, 0x7c00003a, 0x1, // Load Doubleword by External Process ID Indexed X-form (ldepx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STBEPX, 0xfc0007fe, 0x7c0001be, 0x1, // Store Byte by External Process ID Indexed X-form (stbepx RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STHEPX, 0xfc0007fe, 0x7c00033e, 0x1, // Store Halfword by External Process ID Indexed X-form (sthepx RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STWEPX, 0xfc0007fe, 0x7c00013e, 0x1, // Store Word by External Process ID Indexed X-form (stwepx RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STDEPX, 0xfc0007fe, 0x7c00013a, 0x1, // Store Doubleword by External Process ID Indexed X-form (stdepx RS,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DCBSTEP, 0xfc0007fe, 0x7c00007e, 0x3e00001, // Data Cache Block Store by External PID X-form (dcbstep RA,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_16_20}}, - {DCBTEP, 0xfc0007fe, 0x7c00027e, 0x1, // Data Cache Block Touch by External PID X-form (dcbtep TH,RA,RB) - [5]*argField{ap_ImmUnsigned_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DCBFEP, 0xfc0007fe, 0x7c0000fe, 0x3800001, // Data Cache Block Flush by External PID X-form (dcbfep RA,RB,L) - [5]*argField{ap_Reg_11_15, ap_Reg_16_20, ap_ImmUnsigned_9_10}}, - {DCBTSTEP, 0xfc0007fe, 0x7c0001fe, 0x1, // Data Cache Block Touch for Store by External PID X-form (dcbtstep TH,RA,RB) - [5]*argField{ap_ImmUnsigned_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {ICBIEP, 0xfc0007fe, 0x7c0007be, 0x3e00001, // Instruction Cache Block Invalidate by External PID X-form (icbiep RA,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_16_20}}, - {DCBZEP, 0xfc0007fe, 0x7c0007fe, 0x3e00001, // Data Cache Block set to Zero by External PID X-form (dcbzep RA,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_16_20}}, - {LFDEPX, 0xfc0007fe, 0x7c0004be, 0x1, // Load Floating-Point Double by External Process ID Indexed X-form (lfdepx FRT,RA,RB) - [5]*argField{ap_FPReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STFDEPX, 0xfc0007fe, 0x7c0005be, 0x1, // Store Floating-Point Double by External Process ID Indexed X-form (stfdepx FRS,RA,RB) - [5]*argField{ap_FPReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVLDDEPX, 0xfc0007fe, 0x7c00063e, 0x1, // Vector Load Doubleword into Doubleword by External Process ID Indexed EVX-form (evlddepx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {EVSTDDEPX, 0xfc0007fe, 0x7c00073e, 0x1, // Vector Store Doubleword into Doubleword by External Process ID Indexed EVX-form (evstddepx RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LVEPX, 0xfc0007fe, 0x7c00024e, 0x1, // Load Vector by External Process ID Indexed X-form (lvepx VRT,RA,RB) - [5]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {LVEPXL, 0xfc0007fe, 0x7c00020e, 0x1, // Load Vector by External Process ID Indexed LRU X-form (lvepxl VRT,RA,RB) - [5]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STVEPX, 0xfc0007fe, 0x7c00064e, 0x1, // Store Vector by External Process ID Indexed X-form (stvepx VRS,RA,RB) - [5]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {STVEPXL, 0xfc0007fe, 0x7c00060e, 0x1, // Store Vector by External Process ID Indexed LRU X-form (stvepxl VRS,RA,RB) - [5]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DCBI, 0xfc0007fe, 0x7c0003ac, 0x3e00001, // Data Cache Block Invalidate X-form (dcbi RA,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_16_20}}, - {DCBLQCC, 0xfc0007ff, 0x7c00034d, 0x2000000, // Data Cache Block Lock Query X-form (dcblq. CT,RA,RB) - [5]*argField{ap_ImmUnsigned_7_10, ap_Reg_11_15, ap_Reg_16_20}}, - {ICBLQCC, 0xfc0007ff, 0x7c00018d, 0x2000000, // Instruction Cache Block Lock Query X-form (icblq. CT,RA,RB) - [5]*argField{ap_ImmUnsigned_7_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DCBTLS, 0xfc0007fe, 0x7c00014c, 0x2000001, // Data Cache Block Touch and Lock Set X-form (dcbtls CT,RA,RB) - [5]*argField{ap_ImmUnsigned_7_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DCBTSTLS, 0xfc0007fe, 0x7c00010c, 0x2000001, // Data Cache Block Touch for Store and Lock Set X-form (dcbtstls CT,RA,RB) - [5]*argField{ap_ImmUnsigned_7_10, ap_Reg_11_15, ap_Reg_16_20}}, - {ICBTLS, 0xfc0007fe, 0x7c0003cc, 0x2000001, // Instruction Cache Block Touch and Lock Set X-form (icbtls CT,RA,RB) - [5]*argField{ap_ImmUnsigned_7_10, ap_Reg_11_15, ap_Reg_16_20}}, - {ICBLC, 0xfc0007fe, 0x7c0001cc, 0x2000001, // Instruction Cache Block Lock Clear X-form (icblc CT,RA,RB) - [5]*argField{ap_ImmUnsigned_7_10, ap_Reg_11_15, ap_Reg_16_20}}, - {DCBLC, 0xfc0007fe, 0x7c00030c, 0x2000001, // Data Cache Block Lock Clear X-form (dcblc CT,RA,RB) - [5]*argField{ap_ImmUnsigned_7_10, ap_Reg_11_15, ap_Reg_16_20}}, - {TLBIVAX, 0xfc0007fe, 0x7c000624, 0x3e00001, // TLB Invalidate Virtual Address Indexed X-form (tlbivax RA,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_16_20}}, - {TLBILX, 0xfc0007fe, 0x7c000024, 0x3800001, // TLB Invalidate Local Indexed X-form (tlbilx RA,RB]) - [5]*argField{ap_Reg_11_15, ap_Reg_16_20}}, - {TLBSX, 0xfc0007fe, 0x7c000724, 0x3e00001, // TLB Search Indexed X-form (tlbsx RA,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_16_20}}, - {TLBSRXCC, 0xfc0007ff, 0x7c0006a5, 0x3e00000, // TLB Search and Reserve Indexed X-form (tlbsrx. RA,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_16_20}}, - {TLBRE, 0xfc0007fe, 0x7c000764, 0x3fff801, // TLB Read Entry X-form (tlbre) - [5]*argField{}}, - {TLBSYNC, 0xfc0007fe, 0x7c00046c, 0x3fff801, // TLB Synchronize X-form (tlbsync) - [5]*argField{}}, - {TLBWE, 0xfc0007fe, 0x7c0007a4, 0x3fff801, // TLB Write Entry X-form (tlbwe) - [5]*argField{}}, - {DNH, 0xfc0007fe, 0x4c00018c, 0x1, // Debugger Notify Halt XFX-form (dnh DUI,DUIS) - [5]*argField{ap_ImmUnsigned_6_10, ap_ImmUnsigned_11_20}}, - {MSGSND, 0xfc0007fe, 0x7c00019c, 0x3ff0001, // Message Send X-form (msgsnd RB) - [5]*argField{ap_Reg_16_20}}, - {MSGCLR, 0xfc0007fe, 0x7c0001dc, 0x3ff0001, // Message Clear X-form (msgclr RB) - [5]*argField{ap_Reg_16_20}}, - {DCI, 0xfc0007fe, 0x7c00038c, 0x21ff801, // Data Cache Invalidate X-form (dci CT) - [5]*argField{ap_ImmUnsigned_7_10}}, - {ICI, 0xfc0007fe, 0x7c00078c, 0x21ff801, // Instruction Cache Invalidate X-form (ici CT) - [5]*argField{ap_ImmUnsigned_7_10}}, - {DCREAD, 0xfc0007fe, 0x7c0003cc, 0x1, // Data Cache Read X-form (dcread RT,RA,RB) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {ICREAD, 0xfc0007fe, 0x7c0007cc, 0x3e00001, // Instruction Cache Read X-form (icread RA,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_16_20}}, - {MFPMR, 0xfc0007fe, 0x7c00029c, 0x1, // Move From Performance Monitor Register XFX-form (mfpmr RT,PMRN) - [5]*argField{ap_Reg_6_10, ap_SpReg_11_20}}, - {MTPMR, 0xfc0007fe, 0x7c00039c, 0x1, // Move To Performance Monitor Register XFX-form (mtpmr PMRN,RS) - [5]*argField{ap_SpReg_11_20, ap_Reg_6_10}}, - {ADDEX, 0xfc0001fe, 0x7c000154, 0x1, // Add Extended using alternate carry bit Z23-form (addex RT,RA,RB,CY) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20, ap_ImmUnsigned_21_22}}, - {DARN, 0xfc0007fe, 0x7c0005e6, 0x1cf801, // Deliver A Random Number X-form (darn RT,L) - [5]*argField{ap_Reg_6_10, ap_ImmUnsigned_14_15}}, - {MADDHD, 0xfc00003f, 0x10000030, 0x0, // Multiply-Add High Doubleword VA-form (maddhd RT,RA,RB,RC) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20, ap_Reg_21_25}}, - {MADDHDU, 0xfc00003f, 0x10000031, 0x0, // Multiply-Add High Doubleword Unsigned VA-form (maddhdu RT,RA,RB,RC) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20, ap_Reg_21_25}}, - {MADDLD, 0xfc00003f, 0x10000033, 0x0, // Multiply-Add Low Doubleword VA-form (maddld RT,RA,RB,RC) - [5]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20, ap_Reg_21_25}}, - {CMPRB, 0xfc0007fe, 0x7c000180, 0x400001, // Compare Ranged Byte X-form (cmprb BF,L,RA,RB) - [5]*argField{ap_CondRegField_6_8, ap_ImmUnsigned_10_10, ap_Reg_11_15, ap_Reg_16_20}}, - {CMPEQB, 0xfc0007fe, 0x7c0001c0, 0x600001, // Compare Equal Byte X-form (cmpeqb BF,RA,RB) - [5]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, - {BPERMD, 0xfc0007fe, 0x7c0001f8, 0x1, // Bit Permute Doubleword X-form (bpermd RA,RS,RB]) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, - {EXTSWSLI, 0xfc0007fd, 0x7c0006f4, 0x0, // Extend-Sign Word and Shift Left Immediate XS-form (extswsli RA,RS,SH) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_30_30_16_20}}, - {EXTSWSLICC, 0xfc0007fd, 0x7c0006f5, 0x0, // Extend-Sign Word and Shift Left Immediate XS-form (extswsli. RA,RS,SH) - [5]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_30_30_16_20}}, - {MFVSRD, 0xfc0007fe, 0x7c000066, 0xf800, // Move From VSR Doubleword X-form (mfvsrd RA,XS) - [5]*argField{ap_Reg_11_15, ap_VecSReg_31_31_6_10}}, - {MFVSRLD, 0xfc0007fe, 0x7c000266, 0xf800, // Move From VSR Lower Doubleword X-form (mfvsrld RA,XS) - [5]*argField{ap_Reg_11_15, ap_VecSReg_31_31_6_10}}, - {MFVSRWZ, 0xfc0007fe, 0x7c0000e6, 0xf800, // Move From VSR Word and Zero X-form (mfvsrwz RA,XS) - [5]*argField{ap_Reg_11_15, ap_VecSReg_31_31_6_10}}, - {MTVSRD, 0xfc0007fe, 0x7c000166, 0xf800, // Move To VSR Doubleword X-form (mtvsrd XT,RA) - [5]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15}}, - {MTVSRWA, 0xfc0007fe, 0x7c0001a6, 0xf800, // Move To VSR Word Algebraic X-form (mtvsrwa XT,RA) - [5]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15}}, - {MTVSRWZ, 0xfc0007fe, 0x7c0001e6, 0xf800, // Move To VSR Word and Zero X-form (mtvsrwz XT,RA) - [5]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15}}, - {MTVSRDD, 0xfc0007fe, 0x7c000366, 0x0, // Move To VSR Double Doubleword X-form (mtvsrdd XT,RA,RB) - [5]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, - {MTVSRWS, 0xfc0007fe, 0x7c000326, 0xf800, // Move To VSR Word & Splat X-form (mtvsrws XT,RA) - [5]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15}}, - {MCRXRX, 0xfc0007fe, 0x7c000480, 0x7ff801, // Move to CR from XER Extended X-form (mcrxrx BF) - [5]*argField{ap_CondRegField_6_8}}, - {COPY, 0xfc2007fe, 0x7c20060c, 0x3c00001, // Copy X-form (copy RA,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_16_20}}, - {PASTECC, 0xfc2007ff, 0x7c20070d, 0x3c00000, // Paste X-form (paste. RA,RB) - [5]*argField{ap_Reg_11_15, ap_Reg_16_20}}, + {HASHCHK, 0xfc0007fe00000000, 0x7c0005e400000000, 0x0, // Hash Check X-form (hashchk RB,offset(RA)) + [6]*argField{ap_Reg_16_20, ap_NegOffset_31_31_6_10_shift3, ap_Reg_11_15}}, + {HASHCHKP, 0xfc0007fe00000000, 0x7c00056400000000, 0x0, // Hash Check Privileged X-form (hashchkp RB,offset(RA)) + [6]*argField{ap_Reg_16_20, ap_NegOffset_31_31_6_10_shift3, ap_Reg_11_15}}, + {HASHST, 0xfc0007fe00000000, 0x7c0005a400000000, 0x0, // Hash Store X-form (hashst RB,offset(RA)) + [6]*argField{ap_Reg_16_20, ap_NegOffset_31_31_6_10_shift3, ap_Reg_11_15}}, + {HASHSTP, 0xfc0007fe00000000, 0x7c00052400000000, 0x0, // Hash Store Privileged X-form (hashstp RB,offset(RA)) + [6]*argField{ap_Reg_16_20, ap_NegOffset_31_31_6_10_shift3, ap_Reg_11_15}}, + {BRD, 0xfc0007fe00000000, 0x7c00017600000000, 0xf80100000000, // Byte-Reverse Doubleword X-form (brd RA,RS) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10}}, + {BRH, 0xfc0007fe00000000, 0x7c0001b600000000, 0xf80100000000, // Byte-Reverse Halfword X-form (brh RA,RS) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10}}, + {BRW, 0xfc0007fe00000000, 0x7c00013600000000, 0xf80100000000, // Byte-Reverse Word X-form (brw RA,RS) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10}}, + {CFUGED, 0xfc0007fe00000000, 0x7c0001b800000000, 0x100000000, // Centrifuge Doubleword X-form (cfuged RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {CNTLZDM, 0xfc0007fe00000000, 0x7c00007600000000, 0x100000000, // Count Leading Zeros Doubleword under bit Mask X-form (cntlzdm RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {CNTTZDM, 0xfc0007fe00000000, 0x7c00047600000000, 0x100000000, // Count Trailing Zeros Doubleword under bit Mask X-form (cnttzdm RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {DCFFIXQQ, 0xfc1f07fe00000000, 0xfc0007c400000000, 0x100000000, // DFP Convert From Fixed Quadword Quad X-form (dcffixqq FRTp,VRB) + [6]*argField{ap_FPReg_6_10, ap_VecReg_16_20}}, + {DCTFIXQQ, 0xfc1f07fe00000000, 0xfc0107c400000000, 0x100000000, // DFP Convert To Fixed Quadword Quad X-form (dctfixqq VRT,FRBp) + [6]*argField{ap_VecReg_6_10, ap_FPReg_16_20}}, + {LXVKQ, 0xfc1f07fe00000000, 0xf01f02d000000000, 0x0, // Load VSX Vector Special Value Quadword X-form (lxvkq XT,UIM) + [6]*argField{ap_VecSReg_31_31_6_10, ap_ImmUnsigned_16_20}}, + {LXVP, 0xfc00000f00000000, 0x1800000000000000, 0x0, // Load VSX Vector Paired DQ-form (lxvp XTp,DQ(RA)) + [6]*argField{ap_VecSpReg_10_10_6_9, ap_Offset_16_27_shift4, ap_Reg_11_15}}, + {LXVPX, 0xfc0007fe00000000, 0x7c00029a00000000, 0x100000000, // Load VSX Vector Paired Indexed X-form (lxvpx XTp,RA,RB) + [6]*argField{ap_VecSpReg_10_10_6_9, ap_Reg_11_15, ap_Reg_16_20}}, + {LXVRBX, 0xfc0007fe00000000, 0x7c00001a00000000, 0x0, // Load VSX Vector Rightmost Byte Indexed X-form (lxvrbx XT,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LXVRDX, 0xfc0007fe00000000, 0x7c0000da00000000, 0x0, // Load VSX Vector Rightmost Doubleword Indexed X-form (lxvrdx XT,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LXVRHX, 0xfc0007fe00000000, 0x7c00005a00000000, 0x0, // Load VSX Vector Rightmost Halfword Indexed X-form (lxvrhx XT,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LXVRWX, 0xfc0007fe00000000, 0x7c00009a00000000, 0x0, // Load VSX Vector Rightmost Word Indexed X-form (lxvrwx XT,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {MTVSRBM, 0xfc1f07ff00000000, 0x1010064200000000, 0x0, // Move to VSR Byte Mask VX-form (mtvsrbm VRT,RB) + [6]*argField{ap_VecReg_6_10, ap_Reg_16_20}}, + {MTVSRBMI, 0xfc00003e00000000, 0x1000001400000000, 0x0, // Move To VSR Byte Mask Immediate DX-form (mtvsrbmi VRT,bm) + [6]*argField{ap_VecReg_6_10, ap_ImmUnsigned_16_25_11_15_31_31}}, + {MTVSRDM, 0xfc1f07ff00000000, 0x1013064200000000, 0x0, // Move to VSR Doubleword Mask VX-form (mtvsrdm VRT,RB) + [6]*argField{ap_VecReg_6_10, ap_Reg_16_20}}, + {MTVSRHM, 0xfc1f07ff00000000, 0x1011064200000000, 0x0, // Move to VSR Halfword Mask VX-form (mtvsrhm VRT,RB) + [6]*argField{ap_VecReg_6_10, ap_Reg_16_20}}, + {MTVSRQM, 0xfc1f07ff00000000, 0x1014064200000000, 0x0, // Move to VSR Quadword Mask VX-form (mtvsrqm VRT,RB) + [6]*argField{ap_VecReg_6_10, ap_Reg_16_20}}, + {MTVSRWM, 0xfc1f07ff00000000, 0x1012064200000000, 0x0, // Move to VSR Word Mask VX-form (mtvsrwm VRT,RB) + [6]*argField{ap_VecReg_6_10, ap_Reg_16_20}}, + {PADDI, 0xff800000fc000000, 0x600000038000000, 0x6c000000000000, // Prefixed Add Immediate MLS:D-form (paddi RT,RA,SI,R) + [6]*argField{ap_Reg_38_42, ap_Reg_43_47, ap_ImmSigned_14_31_48_63, ap_ImmUnsigned_11_11}}, + {PDEPD, 0xfc0007fe00000000, 0x7c00013800000000, 0x100000000, // Parallel Bits Deposit Doubleword X-form (pdepd RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {PEXTD, 0xfc0007fe00000000, 0x7c00017800000000, 0x100000000, // Parallel Bits Extract Doubleword X-form (pextd RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {PLBZ, 0xff800000fc000000, 0x600000088000000, 0x6c000000000000, // Prefixed Load Byte and Zero MLS:D-form (plbz RT,D(RA),R) + [6]*argField{ap_Reg_38_42, ap_Offset_14_31_48_63, ap_Reg_43_47, ap_ImmUnsigned_11_11}}, + {PLD, 0xff800000fc000000, 0x4000000e4000000, 0x6c000000000000, // Prefixed Load Doubleword 8LS:D-form (pld RT,D(RA),R) + [6]*argField{ap_Reg_38_42, ap_Offset_14_31_48_63, ap_Reg_43_47, ap_ImmUnsigned_11_11}}, + {PLFD, 0xff800000fc000000, 0x6000000c8000000, 0x6c000000000000, // Prefixed Load Floating-Point Double MLS:D-form (plfd FRT,D(RA),R) + [6]*argField{ap_FPReg_38_42, ap_Offset_14_31_48_63, ap_Reg_43_47, ap_ImmUnsigned_11_11}}, + {PLFS, 0xff800000fc000000, 0x6000000c0000000, 0x6c000000000000, // Prefixed Load Floating-Point Single MLS:D-form (plfs FRT,D(RA),R) + [6]*argField{ap_FPReg_38_42, ap_Offset_14_31_48_63, ap_Reg_43_47, ap_ImmUnsigned_11_11}}, + {PLHA, 0xff800000fc000000, 0x6000000a8000000, 0x6c000000000000, // Prefixed Load Halfword Algebraic MLS:D-form (plha RT,D(RA),R) + [6]*argField{ap_Reg_38_42, ap_Offset_14_31_48_63, ap_Reg_43_47, ap_ImmUnsigned_11_11}}, + {PLHZ, 0xff800000fc000000, 0x6000000a0000000, 0x6c000000000000, // Prefixed Load Halfword and Zero MLS:D-form (plhz RT,D(RA),R) + [6]*argField{ap_Reg_38_42, ap_Offset_14_31_48_63, ap_Reg_43_47, ap_ImmUnsigned_11_11}}, + {PLQ, 0xff800000fc000000, 0x4000000e0000000, 0x6c000000000000, // Prefixed Load Quadword 8LS:D-form (plq RTp,D(RA),R) + [6]*argField{ap_Reg_38_42, ap_Offset_14_31_48_63, ap_Reg_43_47, ap_ImmUnsigned_11_11}}, + {PLWA, 0xff800000fc000000, 0x4000000a4000000, 0x6c000000000000, // Prefixed Load Word Algebraic 8LS:D-form (plwa RT,D(RA),R) + [6]*argField{ap_Reg_38_42, ap_Offset_14_31_48_63, ap_Reg_43_47, ap_ImmUnsigned_11_11}}, + {PLWZ, 0xff800000fc000000, 0x600000080000000, 0x6c000000000000, // Prefixed Load Word and Zero MLS:D-form (plwz RT,D(RA),R) + [6]*argField{ap_Reg_38_42, ap_Offset_14_31_48_63, ap_Reg_43_47, ap_ImmUnsigned_11_11}}, + {PLXSD, 0xff800000fc000000, 0x4000000a8000000, 0x6c000000000000, // Prefixed Load VSX Scalar Doubleword 8LS:D-form (plxsd VRT,D(RA),R) + [6]*argField{ap_VecReg_38_42, ap_Offset_14_31_48_63, ap_Reg_43_47, ap_ImmUnsigned_11_11}}, + {PLXSSP, 0xff800000fc000000, 0x4000000ac000000, 0x6c000000000000, // Prefixed Load VSX Scalar Single-Precision 8LS:D-form (plxssp VRT,D(RA),R) + [6]*argField{ap_VecReg_38_42, ap_Offset_14_31_48_63, ap_Reg_43_47, ap_ImmUnsigned_11_11}}, + {PLXV, 0xff800000f8000000, 0x4000000c8000000, 0x6c000000000000, // Prefixed Load VSX Vector 8LS:D-form (plxv XT,D(RA),R) + [6]*argField{ap_VecSReg_37_37_38_42, ap_Offset_14_31_48_63, ap_Reg_43_47, ap_ImmUnsigned_11_11}}, + {PLXVP, 0xff800000fc000000, 0x4000000e8000000, 0x6c000000000000, // Prefixed Load VSX Vector Paired 8LS:D-form (plxvp XTp,D(RA),R) + [6]*argField{ap_VecSpReg_42_42_38_41, ap_Offset_14_31_48_63, ap_Reg_43_47, ap_ImmUnsigned_11_11}}, + {PMXVBF16GER2, 0xfff00000fc0007f8, 0x7900000ec000198, 0xf3f0000000000, // Prefixed Masked VSX Vector bfloat16 GER (Rank-2 Update) MMIRR:XX3-form (pmxvbf16ger2 AT,XA,XB,XMSK,YMSK,PMSK) + [6]*argField{ap_MMAReg_38_40, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_ImmUnsigned_24_27, ap_ImmUnsigned_28_31, ap_ImmUnsigned_16_17}}, + {PMXVBF16GER2NN, 0xfff00000fc0007f8, 0x7900000ec000790, 0xf3f0000000000, // Prefixed Masked VSX Vector bfloat16 GER (Rank-2 Update) Negative multiply, Negative accumulate MMIRR:XX3-form (pmxvbf16ger2nn AT,XA,XB,XMSK,YMSK,PMSK) + [6]*argField{ap_MMAReg_38_40, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_ImmUnsigned_24_27, ap_ImmUnsigned_28_31, ap_ImmUnsigned_16_17}}, + {PMXVBF16GER2NP, 0xfff00000fc0007f8, 0x7900000ec000390, 0xf3f0000000000, // Prefixed Masked VSX Vector bfloat16 GER (Rank-2 Update) Negative multiply, Positive accumulate MMIRR:XX3-form (pmxvbf16ger2np AT,XA,XB,XMSK,YMSK,PMSK) + [6]*argField{ap_MMAReg_38_40, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_ImmUnsigned_24_27, ap_ImmUnsigned_28_31, ap_ImmUnsigned_16_17}}, + {PMXVBF16GER2PN, 0xfff00000fc0007f8, 0x7900000ec000590, 0xf3f0000000000, // Prefixed Masked VSX Vector bfloat16 GER (Rank-2 Update) Positive multiply, Negative accumulate MMIRR:XX3-form (pmxvbf16ger2pn AT,XA,XB,XMSK,YMSK,PMSK) + [6]*argField{ap_MMAReg_38_40, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_ImmUnsigned_24_27, ap_ImmUnsigned_28_31, ap_ImmUnsigned_16_17}}, + {PMXVBF16GER2PP, 0xfff00000fc0007f8, 0x7900000ec000190, 0xf3f0000000000, // Prefixed Masked VSX Vector bfloat16 GER (Rank-2 Update) Positive multiply, Positive accumulate MMIRR:XX3-form (pmxvbf16ger2pp AT,XA,XB,XMSK,YMSK,PMSK) + [6]*argField{ap_MMAReg_38_40, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_ImmUnsigned_24_27, ap_ImmUnsigned_28_31, ap_ImmUnsigned_16_17}}, + {PMXVF16GER2, 0xfff00000fc0007f8, 0x7900000ec000098, 0xf3f0000000000, // Prefixed Masked VSX Vector 16-bit Floating-Point GER (rank-2 update) MMIRR:XX3-form (pmxvf16ger2 AT,XA,XB,XMSK,YMSK,PMSK) + [6]*argField{ap_MMAReg_38_40, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_ImmUnsigned_24_27, ap_ImmUnsigned_28_31, ap_ImmUnsigned_16_17}}, + {PMXVF16GER2NN, 0xfff00000fc0007f8, 0x7900000ec000690, 0xf3f0000000000, // Prefixed Masked VSX Vector 16-bit Floating-Point GER (rank-2 update) Negative multiply, Negative accumulate MMIRR:XX3-form (pmxvf16ger2nn AT,XA,XB,XMSK,YMSK,PMSK) + [6]*argField{ap_MMAReg_38_40, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_ImmUnsigned_24_27, ap_ImmUnsigned_28_31, ap_ImmUnsigned_16_17}}, + {PMXVF16GER2NP, 0xfff00000fc0007f8, 0x7900000ec000290, 0xf3f0000000000, // Prefixed Masked VSX Vector 16-bit Floating-Point GER (rank-2 update) Negative multiply, Positive accumulate MMIRR:XX3-form (pmxvf16ger2np AT,XA,XB,XMSK,YMSK,PMSK) + [6]*argField{ap_MMAReg_38_40, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_ImmUnsigned_24_27, ap_ImmUnsigned_28_31, ap_ImmUnsigned_16_17}}, + {PMXVF16GER2PN, 0xfff00000fc0007f8, 0x7900000ec000490, 0xf3f0000000000, // Prefixed Masked VSX Vector 16-bit Floating-Point GER (rank-2 update) Positive multiply, Negative accumulate MMIRR:XX3-form (pmxvf16ger2pn AT,XA,XB,XMSK,YMSK,PMSK) + [6]*argField{ap_MMAReg_38_40, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_ImmUnsigned_24_27, ap_ImmUnsigned_28_31, ap_ImmUnsigned_16_17}}, + {PMXVF16GER2PP, 0xfff00000fc0007f8, 0x7900000ec000090, 0xf3f0000000000, // Prefixed Masked VSX Vector 16-bit Floating-Point GER (rank-2 update) Positive multiply, Positive accumulate MMIRR:XX3-form (pmxvf16ger2pp AT,XA,XB,XMSK,YMSK,PMSK) + [6]*argField{ap_MMAReg_38_40, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_ImmUnsigned_24_27, ap_ImmUnsigned_28_31, ap_ImmUnsigned_16_17}}, + {PMXVF32GER, 0xfff00000fc0007f8, 0x7900000ec0000d8, 0xfff0000000000, // Prefixed Masked VSX Vector 32-bit Floating-Point GER (rank-1 update) MMIRR:XX3-form (pmxvf32ger AT,XA,XB,XMSK,YMSK) + [6]*argField{ap_MMAReg_38_40, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_ImmUnsigned_24_27, ap_ImmUnsigned_28_31}}, + {PMXVF32GERNN, 0xfff00000fc0007f8, 0x7900000ec0006d0, 0xfff0000000000, // Prefixed Masked VSX Vector 32-bit Floating-Point GER (rank-1 update) Negative multiply, Negative accumulate MMIRR:XX3-form (pmxvf32gernn AT,XA,XB,XMSK,YMSK) + [6]*argField{ap_MMAReg_38_40, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_ImmUnsigned_24_27, ap_ImmUnsigned_28_31}}, + {PMXVF32GERNP, 0xfff00000fc0007f8, 0x7900000ec0002d0, 0xfff0000000000, // Prefixed Masked VSX Vector 32-bit Floating-Point GER (rank-1 update) Negative multiply, Positive accumulate MMIRR:XX3-form (pmxvf32gernp AT,XA,XB,XMSK,YMSK) + [6]*argField{ap_MMAReg_38_40, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_ImmUnsigned_24_27, ap_ImmUnsigned_28_31}}, + {PMXVF32GERPN, 0xfff00000fc0007f8, 0x7900000ec0004d0, 0xfff0000000000, // Prefixed Masked VSX Vector 32-bit Floating-Point GER (rank-1 update) Positive multiply, Negative accumulate MMIRR:XX3-form (pmxvf32gerpn AT,XA,XB,XMSK,YMSK) + [6]*argField{ap_MMAReg_38_40, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_ImmUnsigned_24_27, ap_ImmUnsigned_28_31}}, + {PMXVF32GERPP, 0xfff00000fc0007f8, 0x7900000ec0000d0, 0xfff0000000000, // Prefixed Masked VSX Vector 32-bit Floating-Point GER (rank-1 update) Positive multiply, Positive accumulate MMIRR:XX3-form (pmxvf32gerpp AT,XA,XB,XMSK,YMSK) + [6]*argField{ap_MMAReg_38_40, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_ImmUnsigned_24_27, ap_ImmUnsigned_28_31}}, + {PMXVF64GER, 0xfff00000fc0007f8, 0x7900000ec0001d8, 0xfff0300000000, // Prefixed Masked VSX Vector 64-bit Floating-Point GER (rank-1 update) MMIRR:XX3-form (pmxvf64ger AT,XAp,XB,XMSK,YMSK) + [6]*argField{ap_MMAReg_38_40, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_ImmUnsigned_24_27, ap_ImmUnsigned_28_29}}, + {PMXVF64GERNN, 0xfff00000fc0007f8, 0x7900000ec0007d0, 0xfff0300000000, // Prefixed Masked VSX Vector 64-bit Floating-Point GER (rank-1 update) Negative multiply, Negative accumulate MMIRR:XX3-form (pmxvf64gernn AT,XAp,XB,XMSK,YMSK) + [6]*argField{ap_MMAReg_38_40, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_ImmUnsigned_24_27, ap_ImmUnsigned_28_29}}, + {PMXVF64GERNP, 0xfff00000fc0007f8, 0x7900000ec0003d0, 0xfff0300000000, // Prefixed Masked VSX Vector 64-bit Floating-Point GER (rank-1 update) Negative multiply, Positive accumulate MMIRR:XX3-form (pmxvf64gernp AT,XAp,XB,XMSK,YMSK) + [6]*argField{ap_MMAReg_38_40, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_ImmUnsigned_24_27, ap_ImmUnsigned_28_29}}, + {PMXVF64GERPN, 0xfff00000fc0007f8, 0x7900000ec0005d0, 0xfff0300000000, // Prefixed Masked VSX Vector 64-bit Floating-Point GER (rank-1 update) Positive multiply, Negative accumulate MMIRR:XX3-form (pmxvf64gerpn AT,XAp,XB,XMSK,YMSK) + [6]*argField{ap_MMAReg_38_40, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_ImmUnsigned_24_27, ap_ImmUnsigned_28_29}}, + {PMXVF64GERPP, 0xfff00000fc0007f8, 0x7900000ec0001d0, 0xfff0300000000, // Prefixed Masked VSX Vector 64-bit Floating-Point GER (rank-1 update) Positive multiply, Positive accumulate MMIRR:XX3-form (pmxvf64gerpp AT,XAp,XB,XMSK,YMSK) + [6]*argField{ap_MMAReg_38_40, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_ImmUnsigned_24_27, ap_ImmUnsigned_28_29}}, + {PMXVI16GER2, 0xfff00000fc0007f8, 0x7900000ec000258, 0xf3f0000000000, // Prefixed Masked VSX Vector 16-bit Signed Integer GER (rank-2 update) MMIRR:XX3-form (pmxvi16ger2 AT,XA,XB,XMSK,YMSK,PMSK) + [6]*argField{ap_MMAReg_38_40, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_ImmUnsigned_24_27, ap_ImmUnsigned_28_31, ap_ImmUnsigned_16_17}}, + {PMXVI16GER2PP, 0xfff00000fc0007f8, 0x7900000ec000358, 0xf3f0000000000, // Prefixed Masked VSX Vector 16-bit Signed Integer GER (rank-2 update) Positive multiply, Positive accumulate MMIRR:XX3-form (pmxvi16ger2pp AT,XA,XB,XMSK,YMSK,PMSK) + [6]*argField{ap_MMAReg_38_40, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_ImmUnsigned_24_27, ap_ImmUnsigned_28_31, ap_ImmUnsigned_16_17}}, + {PMXVI16GER2S, 0xfff00000fc0007f8, 0x7900000ec000158, 0xf3f0000000000, // Prefixed Masked VSX Vector 16-bit Signed Integer GER (rank-2 update) with Saturation MMIRR:XX3-form (pmxvi16ger2s AT,XA,XB,XMSK,YMSK,PMSK) + [6]*argField{ap_MMAReg_38_40, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_ImmUnsigned_24_27, ap_ImmUnsigned_28_31, ap_ImmUnsigned_16_17}}, + {PMXVI16GER2SPP, 0xfff00000fc0007f8, 0x7900000ec000150, 0xf3f0000000000, // Prefixed Masked VSX Vector 16-bit Signed Integer GER (rank-2 update) with Saturation Positive multiply, Positive accumulate MMIRR:XX3-form (pmxvi16ger2spp AT,XA,XB,XMSK,YMSK,PMSK) + [6]*argField{ap_MMAReg_38_40, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_ImmUnsigned_24_27, ap_ImmUnsigned_28_31, ap_ImmUnsigned_16_17}}, + {PMXVI4GER8, 0xfff00000fc0007f8, 0x7900000ec000118, 0xf000000000000, // Prefixed Masked VSX Vector 4-bit Signed Integer GER (rank-8 update) MMIRR:XX3-form (pmxvi4ger8 AT,XA,XB,XMSK,YMSK,PMSK) + [6]*argField{ap_MMAReg_38_40, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_ImmUnsigned_24_27, ap_ImmUnsigned_28_31, ap_ImmUnsigned_16_23}}, + {PMXVI4GER8PP, 0xfff00000fc0007f8, 0x7900000ec000110, 0xf000000000000, // Prefixed Masked VSX Vector 4-bit Signed Integer GER (rank-8 update) Positive multiply, Positive accumulate MMIRR:XX3-form (pmxvi4ger8pp AT,XA,XB,XMSK,YMSK,PMSK) + [6]*argField{ap_MMAReg_38_40, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_ImmUnsigned_24_27, ap_ImmUnsigned_28_31, ap_ImmUnsigned_16_23}}, + {PMXVI8GER4, 0xfff00000fc0007f8, 0x7900000ec000018, 0xf0f0000000000, // Prefixed Masked VSX Vector 8-bit Signed/Unsigned Integer GER (rank-4 update) MMIRR:XX3-form (pmxvi8ger4 AT,XA,XB,XMSK,YMSK,PMSK) + [6]*argField{ap_MMAReg_38_40, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_ImmUnsigned_24_27, ap_ImmUnsigned_28_31, ap_ImmUnsigned_16_19}}, + {PMXVI8GER4PP, 0xfff00000fc0007f8, 0x7900000ec000010, 0xf0f0000000000, // Prefixed Masked VSX Vector 8-bit Signed/Unsigned Integer GER (rank-4 update) Positive multiply, Positive accumulate MMIRR:XX3-form (pmxvi8ger4pp AT,XA,XB,XMSK,YMSK,PMSK) + [6]*argField{ap_MMAReg_38_40, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_ImmUnsigned_24_27, ap_ImmUnsigned_28_31, ap_ImmUnsigned_16_19}}, + {PMXVI8GER4SPP, 0xfff00000fc0007f8, 0x7900000ec000318, 0xf0f0000000000, // Prefixed Masked VSX Vector 8-bit Signed/Unsigned Integer GER (rank-4 update) with Saturate Positive multiply, Positive accumulate MMIRR:XX3-form (pmxvi8ger4spp AT,XA,XB,XMSK,YMSK,PMSK) + [6]*argField{ap_MMAReg_38_40, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_ImmUnsigned_24_27, ap_ImmUnsigned_28_31, ap_ImmUnsigned_16_19}}, + {PNOP, 0xfff3fffe00000000, 0x700000000000000, 0xc000100000000, // Prefixed Nop MRR:*-form (pnop) + [6]*argField{}}, + {PSTB, 0xff800000fc000000, 0x600000098000000, 0x6c000000000000, // Prefixed Store Byte MLS:D-form (pstb RS,D(RA),R) + [6]*argField{ap_Reg_38_42, ap_Offset_14_31_48_63, ap_Reg_43_47, ap_ImmUnsigned_11_11}}, + {PSTD, 0xff800000fc000000, 0x4000000f4000000, 0x6c000000000000, // Prefixed Store Doubleword 8LS:D-form (pstd RS,D(RA),R) + [6]*argField{ap_Reg_38_42, ap_Offset_14_31_48_63, ap_Reg_43_47, ap_ImmUnsigned_11_11}}, + {PSTFD, 0xff800000fc000000, 0x6000000d8000000, 0x6c000000000000, // Prefixed Store Floating-Point Double MLS:D-form (pstfd FRS,D(RA),R) + [6]*argField{ap_FPReg_38_42, ap_Offset_14_31_48_63, ap_Reg_43_47, ap_ImmUnsigned_11_11}}, + {PSTFS, 0xff800000fc000000, 0x6000000d0000000, 0x6c000000000000, // Prefixed Store Floating-Point Single MLS:D-form (pstfs FRS,D(RA),R) + [6]*argField{ap_FPReg_38_42, ap_Offset_14_31_48_63, ap_Reg_43_47, ap_ImmUnsigned_11_11}}, + {PSTH, 0xff800000fc000000, 0x6000000b0000000, 0x6c000000000000, // Prefixed Store Halfword MLS:D-form (psth RS,D(RA),R) + [6]*argField{ap_Reg_38_42, ap_Offset_14_31_48_63, ap_Reg_43_47, ap_ImmUnsigned_11_11}}, + {PSTQ, 0xff800000fc000000, 0x4000000f0000000, 0x6c000000000000, // Prefixed Store Quadword 8LS:D-form (pstq RSp,D(RA),R) + [6]*argField{ap_Reg_38_42, ap_Offset_14_31_48_63, ap_Reg_43_47, ap_ImmUnsigned_11_11}}, + {PSTW, 0xff800000fc000000, 0x600000090000000, 0x6c000000000000, // Prefixed Store Word MLS:D-form (pstw RS,D(RA),R) + [6]*argField{ap_Reg_38_42, ap_Offset_14_31_48_63, ap_Reg_43_47, ap_ImmUnsigned_11_11}}, + {PSTXSD, 0xff800000fc000000, 0x4000000b8000000, 0x6c000000000000, // Prefixed Store VSX Scalar Doubleword 8LS:D-form (pstxsd VRS,D(RA),R) + [6]*argField{ap_VecReg_38_42, ap_Offset_14_31_48_63, ap_Reg_43_47, ap_ImmUnsigned_11_11}}, + {PSTXSSP, 0xff800000fc000000, 0x4000000bc000000, 0x6c000000000000, // Prefixed Store VSX Scalar Single-Precision 8LS:D-form (pstxssp VRS,D(RA),R) + [6]*argField{ap_VecReg_38_42, ap_Offset_14_31_48_63, ap_Reg_43_47, ap_ImmUnsigned_11_11}}, + {PSTXV, 0xff800000f8000000, 0x4000000d8000000, 0x6c000000000000, // Prefixed Store VSX Vector 8LS:D-form (pstxv XS,D(RA),R) + [6]*argField{ap_VecSReg_37_37_38_42, ap_Offset_14_31_48_63, ap_Reg_43_47, ap_ImmUnsigned_11_11}}, + {PSTXVP, 0xff800000fc000000, 0x4000000f8000000, 0x6c000000000000, // Prefixed Store VSX Vector Paired 8LS:D-form (pstxvp XSp,D(RA),R) + [6]*argField{ap_VecSpReg_42_42_38_41, ap_Offset_14_31_48_63, ap_Reg_43_47, ap_ImmUnsigned_11_11}}, + {SETBC, 0xfc0007fe00000000, 0x7c00030000000000, 0xf80100000000, // Set Boolean Condition X-form (setbc RT,BI) + [6]*argField{ap_Reg_6_10, ap_CondRegBit_11_15}}, + {SETBCR, 0xfc0007fe00000000, 0x7c00034000000000, 0xf80100000000, // Set Boolean Condition Reverse X-form (setbcr RT,BI) + [6]*argField{ap_Reg_6_10, ap_CondRegBit_11_15}}, + {SETNBC, 0xfc0007fe00000000, 0x7c00038000000000, 0xf80100000000, // Set Negative Boolean Condition X-form (setnbc RT,BI) + [6]*argField{ap_Reg_6_10, ap_CondRegBit_11_15}}, + {SETNBCR, 0xfc0007fe00000000, 0x7c0003c000000000, 0xf80100000000, // Set Negative Boolean Condition Reverse X-form (setnbcr RT,BI) + [6]*argField{ap_Reg_6_10, ap_CondRegBit_11_15}}, + {STXVP, 0xfc00000f00000000, 0x1800000100000000, 0x0, // Store VSX Vector Paired DQ-form (stxvp XSp,DQ(RA)) + [6]*argField{ap_VecSpReg_10_10_6_9, ap_Offset_16_27_shift4, ap_Reg_11_15}}, + {STXVPX, 0xfc0007fe00000000, 0x7c00039a00000000, 0x100000000, // Store VSX Vector Paired Indexed X-form (stxvpx XSp,RA,RB) + [6]*argField{ap_VecSpReg_10_10_6_9, ap_Reg_11_15, ap_Reg_16_20}}, + {STXVRBX, 0xfc0007fe00000000, 0x7c00011a00000000, 0x0, // Store VSX Vector Rightmost Byte Indexed X-form (stxvrbx XS,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STXVRDX, 0xfc0007fe00000000, 0x7c0001da00000000, 0x0, // Store VSX Vector Rightmost Doubleword Indexed X-form (stxvrdx XS,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STXVRHX, 0xfc0007fe00000000, 0x7c00015a00000000, 0x0, // Store VSX Vector Rightmost Halfword Indexed X-form (stxvrhx XS,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STXVRWX, 0xfc0007fe00000000, 0x7c00019a00000000, 0x0, // Store VSX Vector Rightmost Word Indexed X-form (stxvrwx XS,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {VCFUGED, 0xfc0007ff00000000, 0x1000054d00000000, 0x0, // Vector Centrifuge Doubleword VX-form (vcfuged VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCLRLB, 0xfc0007ff00000000, 0x1000018d00000000, 0x0, // Vector Clear Leftmost Bytes VX-form (vclrlb VRT,VRA,RB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_Reg_16_20}}, + {VCLRRB, 0xfc0007ff00000000, 0x100001cd00000000, 0x0, // Vector Clear Rightmost Bytes VX-form (vclrrb VRT,VRA,RB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_Reg_16_20}}, + {VCLZDM, 0xfc0007ff00000000, 0x1000078400000000, 0x0, // Vector Count Leading Zeros Doubleword under bit Mask VX-form (vclzdm VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPEQUQ, 0xfc0007ff00000000, 0x100001c700000000, 0x0, // Vector Compare Equal Quadword VC-form (vcmpequq VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPEQUQCC, 0xfc0007ff00000000, 0x100005c700000000, 0x0, // Vector Compare Equal Quadword VC-form (vcmpequq. VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPGTSQ, 0xfc0007ff00000000, 0x1000038700000000, 0x0, // Vector Compare Greater Than Signed Quadword VC-form (vcmpgtsq VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPGTSQCC, 0xfc0007ff00000000, 0x1000078700000000, 0x0, // Vector Compare Greater Than Signed Quadword VC-form (vcmpgtsq. VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPGTUQ, 0xfc0007ff00000000, 0x1000028700000000, 0x0, // Vector Compare Greater Than Unsigned Quadword VC-form (vcmpgtuq VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPGTUQCC, 0xfc0007ff00000000, 0x1000068700000000, 0x0, // Vector Compare Greater Than Unsigned Quadword VC-form (vcmpgtuq. VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPSQ, 0xfc0007ff00000000, 0x1000014100000000, 0x60000000000000, // Vector Compare Signed Quadword VX-form (vcmpsq BF,VRA,VRB) + [6]*argField{ap_CondRegField_6_8, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPUQ, 0xfc0007ff00000000, 0x1000010100000000, 0x60000000000000, // Vector Compare Unsigned Quadword VX-form (vcmpuq BF,VRA,VRB) + [6]*argField{ap_CondRegField_6_8, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCNTMBB, 0xfc1e07ff00000000, 0x1018064200000000, 0x0, // Vector Count Mask Bits Byte VX-form (vcntmbb RT,VRB,MP) + [6]*argField{ap_Reg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_15_15}}, + {VCNTMBD, 0xfc1e07ff00000000, 0x101e064200000000, 0x0, // Vector Count Mask Bits Doubleword VX-form (vcntmbd RT,VRB,MP) + [6]*argField{ap_Reg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_15_15}}, + {VCNTMBH, 0xfc1e07ff00000000, 0x101a064200000000, 0x0, // Vector Count Mask Bits Halfword VX-form (vcntmbh RT,VRB,MP) + [6]*argField{ap_Reg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_15_15}}, + {VCNTMBW, 0xfc1e07ff00000000, 0x101c064200000000, 0x0, // Vector Count Mask Bits Word VX-form (vcntmbw RT,VRB,MP) + [6]*argField{ap_Reg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_15_15}}, + {VCTZDM, 0xfc0007ff00000000, 0x100007c400000000, 0x0, // Vector Count Trailing Zeros Doubleword under bit Mask VX-form (vctzdm VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VDIVESD, 0xfc0007ff00000000, 0x100003cb00000000, 0x0, // Vector Divide Extended Signed Doubleword VX-form (vdivesd VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VDIVESQ, 0xfc0007ff00000000, 0x1000030b00000000, 0x0, // Vector Divide Extended Signed Quadword VX-form (vdivesq VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VDIVESW, 0xfc0007ff00000000, 0x1000038b00000000, 0x0, // Vector Divide Extended Signed Word VX-form (vdivesw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VDIVEUD, 0xfc0007ff00000000, 0x100002cb00000000, 0x0, // Vector Divide Extended Unsigned Doubleword VX-form (vdiveud VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VDIVEUQ, 0xfc0007ff00000000, 0x1000020b00000000, 0x0, // Vector Divide Extended Unsigned Quadword VX-form (vdiveuq VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VDIVEUW, 0xfc0007ff00000000, 0x1000028b00000000, 0x0, // Vector Divide Extended Unsigned Word VX-form (vdiveuw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VDIVSD, 0xfc0007ff00000000, 0x100001cb00000000, 0x0, // Vector Divide Signed Doubleword VX-form (vdivsd VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VDIVSQ, 0xfc0007ff00000000, 0x1000010b00000000, 0x0, // Vector Divide Signed Quadword VX-form (vdivsq VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VDIVSW, 0xfc0007ff00000000, 0x1000018b00000000, 0x0, // Vector Divide Signed Word VX-form (vdivsw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VDIVUD, 0xfc0007ff00000000, 0x100000cb00000000, 0x0, // Vector Divide Unsigned Doubleword VX-form (vdivud VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VDIVUQ, 0xfc0007ff00000000, 0x1000000b00000000, 0x0, // Vector Divide Unsigned Quadword VX-form (vdivuq VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VDIVUW, 0xfc0007ff00000000, 0x1000008b00000000, 0x0, // Vector Divide Unsigned Word VX-form (vdivuw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VEXPANDBM, 0xfc1f07ff00000000, 0x1000064200000000, 0x0, // Vector Expand Byte Mask VX-form (vexpandbm VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VEXPANDDM, 0xfc1f07ff00000000, 0x1003064200000000, 0x0, // Vector Expand Doubleword Mask VX-form (vexpanddm VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VEXPANDHM, 0xfc1f07ff00000000, 0x1001064200000000, 0x0, // Vector Expand Halfword Mask VX-form (vexpandhm VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VEXPANDQM, 0xfc1f07ff00000000, 0x1004064200000000, 0x0, // Vector Expand Quadword Mask VX-form (vexpandqm VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VEXPANDWM, 0xfc1f07ff00000000, 0x1002064200000000, 0x0, // Vector Expand Word Mask VX-form (vexpandwm VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VEXTDDVLX, 0xfc00003f00000000, 0x1000001e00000000, 0x0, // Vector Extract Double Doubleword to VSR using GPR-specified Left-Index VA-form (vextddvlx VRT,VRA,VRB,RC) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_Reg_21_25}}, + {VEXTDDVRX, 0xfc00003f00000000, 0x1000001f00000000, 0x0, // Vector Extract Double Doubleword to VSR using GPR-specified Right-Index VA-form (vextddvrx VRT,VRA,VRB,RC) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_Reg_21_25}}, + {VEXTDUBVLX, 0xfc00003f00000000, 0x1000001800000000, 0x0, // Vector Extract Double Unsigned Byte to VSR using GPR-specified Left-Index VA-form (vextdubvlx VRT,VRA,VRB,RC) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_Reg_21_25}}, + {VEXTDUBVRX, 0xfc00003f00000000, 0x1000001900000000, 0x0, // Vector Extract Double Unsigned Byte to VSR using GPR-specified Right-Index VA-form (vextdubvrx VRT,VRA,VRB,RC) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_Reg_21_25}}, + {VEXTDUHVLX, 0xfc00003f00000000, 0x1000001a00000000, 0x0, // Vector Extract Double Unsigned Halfword to VSR using GPR-specified Left-Index VA-form (vextduhvlx VRT,VRA,VRB,RC) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_Reg_21_25}}, + {VEXTDUHVRX, 0xfc00003f00000000, 0x1000001b00000000, 0x0, // Vector Extract Double Unsigned Halfword to VSR using GPR-specified Right-Index VA-form (vextduhvrx VRT,VRA,VRB,RC) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_Reg_21_25}}, + {VEXTDUWVLX, 0xfc00003f00000000, 0x1000001c00000000, 0x0, // Vector Extract Double Unsigned Word to VSR using GPR-specified Left-Index VA-form (vextduwvlx VRT,VRA,VRB,RC) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_Reg_21_25}}, + {VEXTDUWVRX, 0xfc00003f00000000, 0x1000001d00000000, 0x0, // Vector Extract Double Unsigned Word to VSR using GPR-specified Right-Index VA-form (vextduwvrx VRT,VRA,VRB,RC) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_Reg_21_25}}, + {VEXTRACTBM, 0xfc1f07ff00000000, 0x1008064200000000, 0x0, // Vector Extract Byte Mask VX-form (vextractbm RT,VRB) + [6]*argField{ap_Reg_6_10, ap_VecReg_16_20}}, + {VEXTRACTDM, 0xfc1f07ff00000000, 0x100b064200000000, 0x0, // Vector Extract Doubleword Mask VX-form (vextractdm RT,VRB) + [6]*argField{ap_Reg_6_10, ap_VecReg_16_20}}, + {VEXTRACTHM, 0xfc1f07ff00000000, 0x1009064200000000, 0x0, // Vector Extract Halfword Mask VX-form (vextracthm RT,VRB) + [6]*argField{ap_Reg_6_10, ap_VecReg_16_20}}, + {VEXTRACTQM, 0xfc1f07ff00000000, 0x100c064200000000, 0x0, // Vector Extract Quadword Mask VX-form (vextractqm RT,VRB) + [6]*argField{ap_Reg_6_10, ap_VecReg_16_20}}, + {VEXTRACTWM, 0xfc1f07ff00000000, 0x100a064200000000, 0x0, // Vector Extract Word Mask VX-form (vextractwm RT,VRB) + [6]*argField{ap_Reg_6_10, ap_VecReg_16_20}}, + {VEXTSD2Q, 0xfc1f07ff00000000, 0x101b060200000000, 0x0, // Vector Extend Sign Doubleword to Quadword VX-form (vextsd2q VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VGNB, 0xfc0007ff00000000, 0x100004cc00000000, 0x18000000000000, // Vector Gather every Nth Bit VX-form (vgnb RT,VRB,N) + [6]*argField{ap_Reg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_13_15}}, + {VINSBLX, 0xfc0007ff00000000, 0x1000020f00000000, 0x0, // Vector Insert Byte from GPR using GPR-specified Left-Index VX-form (vinsblx VRT,RA,RB) + [6]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {VINSBRX, 0xfc0007ff00000000, 0x1000030f00000000, 0x0, // Vector Insert Byte from GPR using GPR-specified Right-Index VX-form (vinsbrx VRT,RA,RB) + [6]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {VINSBVLX, 0xfc0007ff00000000, 0x1000000f00000000, 0x0, // Vector Insert Byte from VSR using GPR-specified Left-Index VX-form (vinsbvlx VRT,RA,VRB) + [6]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_VecReg_16_20}}, + {VINSBVRX, 0xfc0007ff00000000, 0x1000010f00000000, 0x0, // Vector Insert Byte from VSR using GPR-specified Right-Index VX-form (vinsbvrx VRT,RA,VRB) + [6]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_VecReg_16_20}}, + {VINSD, 0xfc0007ff00000000, 0x100001cf00000000, 0x10000000000000, // Vector Insert Doubleword from GPR using immediate-specified index VX-form (vinsd VRT,RB,UIM) + [6]*argField{ap_VecReg_6_10, ap_Reg_16_20, ap_ImmUnsigned_12_15}}, + {VINSDLX, 0xfc0007ff00000000, 0x100002cf00000000, 0x0, // Vector Insert Doubleword from GPR using GPR-specified Left-Index VX-form (vinsdlx VRT,RA,RB) + [6]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {VINSDRX, 0xfc0007ff00000000, 0x100003cf00000000, 0x0, // Vector Insert Doubleword from GPR using GPR-specified Right-Index VX-form (vinsdrx VRT,RA,RB) + [6]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {VINSHLX, 0xfc0007ff00000000, 0x1000024f00000000, 0x0, // Vector Insert Halfword from GPR using GPR-specified Left-Index VX-form (vinshlx VRT,RA,RB) + [6]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {VINSHRX, 0xfc0007ff00000000, 0x1000034f00000000, 0x0, // Vector Insert Halfword from GPR using GPR-specified Right-Index VX-form (vinshrx VRT,RA,RB) + [6]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {VINSHVLX, 0xfc0007ff00000000, 0x1000004f00000000, 0x0, // Vector Insert Halfword from VSR using GPR-specified Left-Index VX-form (vinshvlx VRT,RA,VRB) + [6]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_VecReg_16_20}}, + {VINSHVRX, 0xfc0007ff00000000, 0x1000014f00000000, 0x0, // Vector Insert Halfword from VSR using GPR-specified Right-Index VX-form (vinshvrx VRT,RA,VRB) + [6]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_VecReg_16_20}}, + {VINSW, 0xfc0007ff00000000, 0x100000cf00000000, 0x10000000000000, // Vector Insert Word from GPR using immediate-specified index VX-form (vinsw VRT,RB,UIM) + [6]*argField{ap_VecReg_6_10, ap_Reg_16_20, ap_ImmUnsigned_12_15}}, + {VINSWLX, 0xfc0007ff00000000, 0x1000028f00000000, 0x0, // Vector Insert Word from GPR using GPR-specified Left-Index VX-form (vinswlx VRT,RA,RB) + [6]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {VINSWRX, 0xfc0007ff00000000, 0x1000038f00000000, 0x0, // Vector Insert Word from GPR using GPR-specified Right-Index VX-form (vinswrx VRT,RA,RB) + [6]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {VINSWVLX, 0xfc0007ff00000000, 0x1000008f00000000, 0x0, // Vector Insert Word from VSR using GPR-specified Left-Index VX-form (vinswvlx VRT,RA,VRB) + [6]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_VecReg_16_20}}, + {VINSWVRX, 0xfc0007ff00000000, 0x1000018f00000000, 0x0, // Vector Insert Word from VSR using GPR-specified Left-Index VX-form (vinswvrx VRT,RA,VRB) + [6]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_VecReg_16_20}}, + {VMODSD, 0xfc0007ff00000000, 0x100007cb00000000, 0x0, // Vector Modulo Signed Doubleword VX-form (vmodsd VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMODSQ, 0xfc0007ff00000000, 0x1000070b00000000, 0x0, // Vector Modulo Signed Quadword VX-form (vmodsq VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMODSW, 0xfc0007ff00000000, 0x1000078b00000000, 0x0, // Vector Modulo Signed Word VX-form (vmodsw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMODUD, 0xfc0007ff00000000, 0x100006cb00000000, 0x0, // Vector Modulo Unsigned Doubleword VX-form (vmodud VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMODUQ, 0xfc0007ff00000000, 0x1000060b00000000, 0x0, // Vector Modulo Unsigned Quadword VX-form (vmoduq VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMODUW, 0xfc0007ff00000000, 0x1000068b00000000, 0x0, // Vector Modulo Unsigned Word VX-form (vmoduw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMSUMCUD, 0xfc00003f00000000, 0x1000001700000000, 0x0, // Vector Multiply-Sum & write Carry-out Unsigned Doubleword VA-form (vmsumcud VRT,VRA,VRB,VRC) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, + {VMULESD, 0xfc0007ff00000000, 0x100003c800000000, 0x0, // Vector Multiply Even Signed Doubleword VX-form (vmulesd VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMULEUD, 0xfc0007ff00000000, 0x100002c800000000, 0x0, // Vector Multiply Even Unsigned Doubleword VX-form (vmuleud VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMULHSD, 0xfc0007ff00000000, 0x100003c900000000, 0x0, // Vector Multiply High Signed Doubleword VX-form (vmulhsd VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMULHSW, 0xfc0007ff00000000, 0x1000038900000000, 0x0, // Vector Multiply High Signed Word VX-form (vmulhsw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMULHUD, 0xfc0007ff00000000, 0x100002c900000000, 0x0, // Vector Multiply High Unsigned Doubleword VX-form (vmulhud VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMULHUW, 0xfc0007ff00000000, 0x1000028900000000, 0x0, // Vector Multiply High Unsigned Word VX-form (vmulhuw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMULLD, 0xfc0007ff00000000, 0x100001c900000000, 0x0, // Vector Multiply Low Doubleword VX-form (vmulld VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMULOSD, 0xfc0007ff00000000, 0x100001c800000000, 0x0, // Vector Multiply Odd Signed Doubleword VX-form (vmulosd VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMULOUD, 0xfc0007ff00000000, 0x100000c800000000, 0x0, // Vector Multiply Odd Unsigned Doubleword VX-form (vmuloud VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VPDEPD, 0xfc0007ff00000000, 0x100005cd00000000, 0x0, // Vector Parallel Bits Deposit Doubleword VX-form (vpdepd VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VPEXTD, 0xfc0007ff00000000, 0x1000058d00000000, 0x0, // Vector Parallel Bits Extract Doubleword VX-form (vpextd VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VRLQ, 0xfc0007ff00000000, 0x1000000500000000, 0x0, // Vector Rotate Left Quadword VX-form (vrlq VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VRLQMI, 0xfc0007ff00000000, 0x1000004500000000, 0x0, // Vector Rotate Left Quadword then Mask Insert VX-form (vrlqmi VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VRLQNM, 0xfc0007ff00000000, 0x1000014500000000, 0x0, // Vector Rotate Left Quadword then AND with Mask VX-form (vrlqnm VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSLDBI, 0xfc00063f00000000, 0x1000001600000000, 0x0, // Vector Shift Left Double by Bit Immediate VN-form (vsldbi VRT,VRA,VRB,SH) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_ImmUnsigned_23_25}}, + {VSLQ, 0xfc0007ff00000000, 0x1000010500000000, 0x0, // Vector Shift Left Quadword VX-form (vslq VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSRAQ, 0xfc0007ff00000000, 0x1000030500000000, 0x0, // Vector Shift Right Algebraic Quadword VX-form (vsraq VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSRDBI, 0xfc00063f00000000, 0x1000021600000000, 0x0, // Vector Shift Right Double by Bit Immediate VN-form (vsrdbi VRT,VRA,VRB,SH) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_ImmUnsigned_23_25}}, + {VSRQ, 0xfc0007ff00000000, 0x1000020500000000, 0x0, // Vector Shift Right Quadword VX-form (vsrq VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSTRIBL, 0xfc1f07ff00000000, 0x1000000d00000000, 0x0, // Vector String Isolate Byte Left-justified VX-form (vstribl VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VSTRIBLCC, 0xfc1f07ff00000000, 0x1000040d00000000, 0x0, // Vector String Isolate Byte Left-justified VX-form (vstribl. VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VSTRIBR, 0xfc1f07ff00000000, 0x1001000d00000000, 0x0, // Vector String Isolate Byte Right-justified VX-form (vstribr VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VSTRIBRCC, 0xfc1f07ff00000000, 0x1001040d00000000, 0x0, // Vector String Isolate Byte Right-justified VX-form (vstribr. VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VSTRIHL, 0xfc1f07ff00000000, 0x1002000d00000000, 0x0, // Vector String Isolate Halfword Left-justified VX-form (vstrihl VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VSTRIHLCC, 0xfc1f07ff00000000, 0x1002040d00000000, 0x0, // Vector String Isolate Halfword Left-justified VX-form (vstrihl. VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VSTRIHR, 0xfc1f07ff00000000, 0x1003000d00000000, 0x0, // Vector String Isolate Halfword Right-justified VX-form (vstrihr VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VSTRIHRCC, 0xfc1f07ff00000000, 0x1003040d00000000, 0x0, // Vector String Isolate Halfword Right-justified VX-form (vstrihr. VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {XSCMPEQQP, 0xfc0007fe00000000, 0xfc00008800000000, 0x100000000, // VSX Scalar Compare Equal Quad-Precision X-form (xscmpeqqp VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {XSCMPGEQP, 0xfc0007fe00000000, 0xfc00018800000000, 0x100000000, // VSX Scalar Compare Greater Than or Equal Quad-Precision X-form (xscmpgeqp VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {XSCMPGTQP, 0xfc0007fe00000000, 0xfc0001c800000000, 0x100000000, // VSX Scalar Compare Greater Than Quad-Precision X-form (xscmpgtqp VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {XSCVQPSQZ, 0xfc1f07fe00000000, 0xfc08068800000000, 0x100000000, // VSX Scalar Convert with round to zero Quad-Precision to Signed Quadword X-form (xscvqpsqz VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {XSCVQPUQZ, 0xfc1f07fe00000000, 0xfc00068800000000, 0x100000000, // VSX Scalar Convert with round to zero Quad-Precision to Unsigned Quadword X-form (xscvqpuqz VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {XSCVSQQP, 0xfc1f07fe00000000, 0xfc0b068800000000, 0x100000000, // VSX Scalar Convert with round Signed Quadword to Quad-Precision X-form (xscvsqqp VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {XSCVUQQP, 0xfc1f07fe00000000, 0xfc03068800000000, 0x100000000, // VSX Scalar Convert with round Unsigned Quadword to Quad-Precision X-form (xscvuqqp VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {XSMAXCQP, 0xfc0007fe00000000, 0xfc00054800000000, 0x100000000, // VSX Scalar Maximum Type-C Quad-Precision X-form (xsmaxcqp VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {XSMINCQP, 0xfc0007fe00000000, 0xfc0005c800000000, 0x100000000, // VSX Scalar Minimum Type-C Quad-Precision X-form (xsmincqp VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {XVBF16GER2, 0xfc0007f800000000, 0xec00019800000000, 0x60000100000000, // VSX Vector bfloat16 GER (Rank-2 Update) XX3-form (xvbf16ger2 AT,XA,XB) + [6]*argField{ap_MMAReg_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVBF16GER2NN, 0xfc0007f800000000, 0xec00079000000000, 0x60000100000000, // VSX Vector bfloat16 GER (Rank-2 Update) Negative multiply, Negative accumulate XX3-form (xvbf16ger2nn AT,XA,XB) + [6]*argField{ap_MMAReg_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVBF16GER2NP, 0xfc0007f800000000, 0xec00039000000000, 0x60000100000000, // VSX Vector bfloat16 GER (Rank-2 Update) Negative multiply, Positive accumulate XX3-form (xvbf16ger2np AT,XA,XB) + [6]*argField{ap_MMAReg_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVBF16GER2PN, 0xfc0007f800000000, 0xec00059000000000, 0x60000100000000, // VSX Vector bfloat16 GER (Rank-2 Update) Positive multiply, Negative accumulate XX3-form (xvbf16ger2pn AT,XA,XB) + [6]*argField{ap_MMAReg_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVBF16GER2PP, 0xfc0007f800000000, 0xec00019000000000, 0x60000100000000, // VSX Vector bfloat16 GER (Rank-2 Update) Positive multiply, Positive accumulate XX3-form (xvbf16ger2pp AT,XA,XB) + [6]*argField{ap_MMAReg_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVCVBF16SPN, 0xfc1f07fc00000000, 0xf010076c00000000, 0x0, // VSX Vector Convert bfloat16 to Single-Precision format Non-signaling XX2-form (xvcvbf16spn XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVCVSPBF16, 0xfc1f07fc00000000, 0xf011076c00000000, 0x0, // VSX Vector Convert with round Single-Precision to bfloat16 format XX2-form (xvcvspbf16 XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVF16GER2, 0xfc0007f800000000, 0xec00009800000000, 0x60000100000000, // VSX Vector 16-bit Floating-Point GER (rank-2 update) XX3-form (xvf16ger2 AT,XA,XB) + [6]*argField{ap_MMAReg_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVF16GER2NN, 0xfc0007f800000000, 0xec00069000000000, 0x60000100000000, // VSX Vector 16-bit Floating-Point GER (rank-2 update) Negative multiply, Negative accumulate XX3-form (xvf16ger2nn AT,XA,XB) + [6]*argField{ap_MMAReg_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVF16GER2NP, 0xfc0007f800000000, 0xec00029000000000, 0x60000100000000, // VSX Vector 16-bit Floating-Point GER (rank-2 update) Negative multiply, Positive accumulate XX3-form (xvf16ger2np AT,XA,XB) + [6]*argField{ap_MMAReg_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVF16GER2PN, 0xfc0007f800000000, 0xec00049000000000, 0x60000100000000, // VSX Vector 16-bit Floating-Point GER (rank-2 update) Positive multiply, Negative accumulate XX3-form (xvf16ger2pn AT,XA,XB) + [6]*argField{ap_MMAReg_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVF16GER2PP, 0xfc0007f800000000, 0xec00009000000000, 0x60000100000000, // VSX Vector 16-bit Floating-Point GER (rank-2 update) Positive multiply, Positive accumulate XX3-form (xvf16ger2pp AT,XA,XB) + [6]*argField{ap_MMAReg_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVF32GER, 0xfc0007f800000000, 0xec0000d800000000, 0x60000100000000, // VSX Vector 32-bit Floating-Point GER (rank-1 update) XX3-form (xvf32ger AT,XA,XB) + [6]*argField{ap_MMAReg_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVF32GERNN, 0xfc0007f800000000, 0xec0006d000000000, 0x60000100000000, // VSX Vector 32-bit Floating-Point GER (rank-1 update) Negative multiply, Negative accumulate XX3-form (xvf32gernn AT,XA,XB) + [6]*argField{ap_MMAReg_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVF32GERNP, 0xfc0007f800000000, 0xec0002d000000000, 0x60000100000000, // VSX Vector 32-bit Floating-Point GER (rank-1 update) Negative multiply, Positive accumulate XX3-form (xvf32gernp AT,XA,XB) + [6]*argField{ap_MMAReg_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVF32GERPN, 0xfc0007f800000000, 0xec0004d000000000, 0x60000100000000, // VSX Vector 32-bit Floating-Point GER (rank-1 update) Positive multiply, Negative accumulate XX3-form (xvf32gerpn AT,XA,XB) + [6]*argField{ap_MMAReg_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVF32GERPP, 0xfc0007f800000000, 0xec0000d000000000, 0x60000100000000, // VSX Vector 32-bit Floating-Point GER (rank-1 update) Positive multiply, Positive accumulate XX3-form (xvf32gerpp AT,XA,XB) + [6]*argField{ap_MMAReg_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVF64GER, 0xfc0007f800000000, 0xec0001d800000000, 0x60000100000000, // VSX Vector 64-bit Floating-Point GER (rank-1 update) XX3-form (xvf64ger AT,XAp,XB) + [6]*argField{ap_MMAReg_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVF64GERNN, 0xfc0007f800000000, 0xec0007d000000000, 0x60000100000000, // VSX Vector 64-bit Floating-Point GER (rank-1 update) Negative multiply, Negative accumulate XX3-form (xvf64gernn AT,XAp,XB) + [6]*argField{ap_MMAReg_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVF64GERNP, 0xfc0007f800000000, 0xec0003d000000000, 0x60000100000000, // VSX Vector 64-bit Floating-Point GER (rank-1 update) Negative multiply, Positive accumulate XX3-form (xvf64gernp AT,XAp,XB) + [6]*argField{ap_MMAReg_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVF64GERPN, 0xfc0007f800000000, 0xec0005d000000000, 0x60000100000000, // VSX Vector 64-bit Floating-Point GER (rank-1 update) Positive multiply, Negative accumulate XX3-form (xvf64gerpn AT,XAp,XB) + [6]*argField{ap_MMAReg_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVF64GERPP, 0xfc0007f800000000, 0xec0001d000000000, 0x60000100000000, // VSX Vector 64-bit Floating-Point GER (rank-1 update) Positive multiply, Positive accumulate XX3-form (xvf64gerpp AT,XAp,XB) + [6]*argField{ap_MMAReg_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVI16GER2, 0xfc0007f800000000, 0xec00025800000000, 0x60000100000000, // VSX Vector 16-bit Signed Integer GER (rank-2 update) XX3-form (xvi16ger2 AT,XA,XB) + [6]*argField{ap_MMAReg_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVI16GER2PP, 0xfc0007f800000000, 0xec00035800000000, 0x60000100000000, // VSX Vector 16-bit Signed Integer GER (rank-2 update) Positive multiply, Positive accumulate XX3-form (xvi16ger2pp AT,XA,XB) + [6]*argField{ap_MMAReg_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVI16GER2S, 0xfc0007f800000000, 0xec00015800000000, 0x60000100000000, // VSX Vector 16-bit Signed Integer GER (rank-2 update) with Saturation XX3-form (xvi16ger2s AT,XA,XB) + [6]*argField{ap_MMAReg_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVI16GER2SPP, 0xfc0007f800000000, 0xec00015000000000, 0x60000100000000, // VSX Vector 16-bit Signed Integer GER (rank-2 update) with Saturation Positive multiply, Positive accumulate XX3-form (xvi16ger2spp AT,XA,XB) + [6]*argField{ap_MMAReg_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVI4GER8, 0xfc0007f800000000, 0xec00011800000000, 0x60000100000000, // VSX Vector 4-bit Signed Integer GER (rank-8 update) XX3-form (xvi4ger8 AT,XA,XB) + [6]*argField{ap_MMAReg_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVI4GER8PP, 0xfc0007f800000000, 0xec00011000000000, 0x60000100000000, // VSX Vector 4-bit Signed Integer GER (rank-8 update) Positive multiply, Positive accumulate XX3-form (xvi4ger8pp AT,XA,XB) + [6]*argField{ap_MMAReg_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVI8GER4, 0xfc0007f800000000, 0xec00001800000000, 0x60000100000000, // VSX Vector 8-bit Signed/Unsigned Integer GER (rank-4 update) XX3-form (xvi8ger4 AT,XA,XB) + [6]*argField{ap_MMAReg_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVI8GER4PP, 0xfc0007f800000000, 0xec00001000000000, 0x60000100000000, // VSX Vector 8-bit Signed/Unsigned Integer GER (rank-4 update) Positive multiply, Positive accumulate XX3-form (xvi8ger4pp AT,XA,XB) + [6]*argField{ap_MMAReg_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVI8GER4SPP, 0xfc0007f800000000, 0xec00031800000000, 0x60000100000000, // VSX Vector 8-bit Signed/Unsigned Integer GER (rank-4 update) with Saturate Positive multiply, Positive accumulate XX3-form (xvi8ger4spp AT,XA,XB) + [6]*argField{ap_MMAReg_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVTLSBB, 0xfc1f07fc00000000, 0xf002076c00000000, 0x60000100000000, // VSX Vector Test Least-Significant Bit by Byte XX2-form (xvtlsbb BF,XB) + [6]*argField{ap_CondRegField_6_8, ap_VecSReg_30_30_16_20}}, + {XXBLENDVB, 0xfff00000fc000030, 0x500000084000000, 0xfffff00000000, // VSX Vector Blend Variable Byte 8RR:XX4-form (xxblendvb XT,XA,XB,XC) + [6]*argField{ap_VecSReg_63_63_38_42, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_VecSReg_60_60_53_57}}, + {XXBLENDVD, 0xfff00000fc000030, 0x500000084000030, 0xfffff00000000, // VSX Vector Blend Variable Doubleword 8RR:XX4-form (xxblendvd XT,XA,XB,XC) + [6]*argField{ap_VecSReg_63_63_38_42, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_VecSReg_60_60_53_57}}, + {XXBLENDVH, 0xfff00000fc000030, 0x500000084000010, 0xfffff00000000, // VSX Vector Blend Variable Halfword 8RR:XX4-form (xxblendvh XT,XA,XB,XC) + [6]*argField{ap_VecSReg_63_63_38_42, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_VecSReg_60_60_53_57}}, + {XXBLENDVW, 0xfff00000fc000030, 0x500000084000020, 0xfffff00000000, // VSX Vector Blend Variable Word 8RR:XX4-form (xxblendvw XT,XA,XB,XC) + [6]*argField{ap_VecSReg_63_63_38_42, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_VecSReg_60_60_53_57}}, + {XXEVAL, 0xfff00000fc000030, 0x500000088000010, 0xfff0000000000, // VSX Vector Evaluate 8RR-XX4-form (xxeval XT,XA,XB,XC,IMM) + [6]*argField{ap_VecSReg_63_63_38_42, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_VecSReg_60_60_53_57, ap_ImmUnsigned_24_31}}, + {XXGENPCVBM, 0xfc0007fe00000000, 0xf000072800000000, 0x0, // VSX Vector Generate PCV from Byte Mask X-form (xxgenpcvbm XT,VRB,IMM) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecReg_16_20, ap_ImmUnsigned_11_15}}, + {XXGENPCVDM, 0xfc0007fe00000000, 0xf000076a00000000, 0x0, // VSX Vector Generate PCV from Doubleword Mask X-form (xxgenpcvdm XT,VRB,IMM) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecReg_16_20, ap_ImmUnsigned_11_15}}, + {XXGENPCVHM, 0xfc0007fe00000000, 0xf000072a00000000, 0x0, // VSX Vector Generate PCV from Halfword Mask X-form (xxgenpcvhm XT,VRB,IMM) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecReg_16_20, ap_ImmUnsigned_11_15}}, + {XXGENPCVWM, 0xfc0007fe00000000, 0xf000076800000000, 0x0, // VSX Vector Generate PCV from Word Mask X-form (xxgenpcvwm XT,VRB,IMM) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecReg_16_20, ap_ImmUnsigned_11_15}}, + {XXMFACC, 0xfc1f07fe00000000, 0x7c00016200000000, 0x60f80100000000, // VSX Move From Accumulator X-form (xxmfacc AS) + [6]*argField{ap_MMAReg_6_8}}, + {XXMTACC, 0xfc1f07fe00000000, 0x7c01016200000000, 0x60f80100000000, // VSX Move To Accumulator X-form (xxmtacc AT) + [6]*argField{ap_MMAReg_6_8}}, + {XXPERMX, 0xfff00000fc000030, 0x500000088000000, 0xffff800000000, // VSX Vector Permute Extended 8RR:XX4-form (xxpermx XT,XA,XB,XC,UIM) + [6]*argField{ap_VecSReg_63_63_38_42, ap_VecSReg_61_61_43_47, ap_VecSReg_62_62_48_52, ap_VecSReg_60_60_53_57, ap_ImmUnsigned_29_31}}, + {XXSETACCZ, 0xfc1f07fe00000000, 0x7c03016200000000, 0x60f80100000000, // VSX Set Accumulator to Zero X-form (xxsetaccz AT) + [6]*argField{ap_MMAReg_6_8}}, + {XXSPLTI32DX, 0xfff00000fc1c0000, 0x500000080000000, 0xf000000000000, // VSX Vector Splat Immediate32 Doubleword Indexed 8RR:D-form (xxsplti32dx XT,IX,IMM32) + [6]*argField{ap_VecSReg_47_47_38_42, ap_ImmUnsigned_46_46, ap_ImmUnsigned_16_31_48_63}}, + {XXSPLTIDP, 0xfff00000fc1e0000, 0x500000080040000, 0xf000000000000, // VSX Vector Splat Immediate Double-Precision 8RR:D-form (xxspltidp XT,IMM32) + [6]*argField{ap_VecSReg_47_47_38_42, ap_ImmUnsigned_16_31_48_63}}, + {XXSPLTIW, 0xfff00000fc1e0000, 0x500000080060000, 0xf000000000000, // VSX Vector Splat Immediate Word 8RR:D-form (xxspltiw XT,IMM32) + [6]*argField{ap_VecSReg_47_47_38_42, ap_ImmUnsigned_16_31_48_63}}, + {MSGCLRU, 0xfc0007fe00000000, 0x7c0000dc00000000, 0x3ff000100000000, // Ultravisor Message Clear X-form (msgclru RB) + [6]*argField{ap_Reg_16_20}}, + {MSGSNDU, 0xfc0007fe00000000, 0x7c00009c00000000, 0x3ff000100000000, // Ultravisor Message SendX-form (msgsndu RB) + [6]*argField{ap_Reg_16_20}}, + {URFID, 0xfc0007fe00000000, 0x4c00026400000000, 0x3fff80100000000, // Ultravisor Return From Interrupt Doubleword XL-form (urfid) + [6]*argField{}}, + {ADDEX, 0xfc0001fe00000000, 0x7c00015400000000, 0x100000000, // Add Extended using alternate carry bit Z23-form (addex RT,RA,RB,CY) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20, ap_ImmUnsigned_21_22}}, + {MFFSCDRN, 0xfc1f07fe00000000, 0xfc14048e00000000, 0x100000000, // Move From FPSCR Control & Set DRN X-form (mffscdrn FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {MFFSCDRNI, 0xfc1f07fe00000000, 0xfc15048e00000000, 0xc00100000000, // Move From FPSCR Control & Set DRN Immediate X-form (mffscdrni FRT,DRM) + [6]*argField{ap_FPReg_6_10, ap_ImmUnsigned_18_20}}, + {MFFSCE, 0xfc1f07fe00000000, 0xfc01048e00000000, 0xf80100000000, // Move From FPSCR & Clear Enables X-form (mffsce FRT) + [6]*argField{ap_FPReg_6_10}}, + {MFFSCRN, 0xfc1f07fe00000000, 0xfc16048e00000000, 0x100000000, // Move From FPSCR Control & Set RN X-form (mffscrn FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {MFFSCRNI, 0xfc1f07fe00000000, 0xfc17048e00000000, 0xe00100000000, // Move From FPSCR Control & Set RN Immediate X-form (mffscrni FRT,RM) + [6]*argField{ap_FPReg_6_10, ap_ImmUnsigned_19_20}}, + {MFFSL, 0xfc1f07fe00000000, 0xfc18048e00000000, 0xf80100000000, // Move From FPSCR Lightweight X-form (mffsl FRT) + [6]*argField{ap_FPReg_6_10}}, + {SLBIAG, 0xfc0007fe00000000, 0x7c0006a400000000, 0x1ef80100000000, // SLB Invalidate All Global X-form (slbiag RS, L) + [6]*argField{ap_Reg_6_10, ap_ImmUnsigned_15_15}}, + {VMSUMUDM, 0xfc00003f00000000, 0x1000002300000000, 0x0, // Vector Multiply-Sum Unsigned Doubleword Modulo VA-form (vmsumudm VRT,VRA,VRB,VRC) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, + {ADDPCIS, 0xfc00003e00000000, 0x4c00000400000000, 0x0, // Add PC Immediate Shifted DX-form (addpcis RT,D) + [6]*argField{ap_Reg_6_10, ap_ImmSigned_16_25_11_15_31_31}}, + {BCDCFNCC, 0xfc1f05ff00000000, 0x1007058100000000, 0x0, // Decimal Convert From National VX-form (bcdcfn. VRT,VRB,PS) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_22_22}}, + {BCDCFSQCC, 0xfc1f05ff00000000, 0x1002058100000000, 0x0, // Decimal Convert From Signed Quadword VX-form (bcdcfsq. VRT,VRB,PS) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_22_22}}, + {BCDCFZCC, 0xfc1f05ff00000000, 0x1006058100000000, 0x0, // Decimal Convert From Zoned VX-form (bcdcfz. VRT,VRB,PS) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_22_22}}, + {BCDCPSGNCC, 0xfc0007ff00000000, 0x1000034100000000, 0x0, // Decimal Copy Sign VX-form (bcdcpsgn. VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {BCDCTNCC, 0xfc1f05ff00000000, 0x1005058100000000, 0x20000000000, // Decimal Convert To National VX-form (bcdctn. VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {BCDCTSQCC, 0xfc1f05ff00000000, 0x1000058100000000, 0x20000000000, // Decimal Convert To Signed Quadword VX-form (bcdctsq. VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {BCDCTZCC, 0xfc1f05ff00000000, 0x1004058100000000, 0x0, // Decimal Convert To Zoned VX-form (bcdctz. VRT,VRB,PS) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_22_22}}, + {BCDSCC, 0xfc0005ff00000000, 0x100004c100000000, 0x0, // Decimal Shift VX-form (bcds. VRT,VRA,VRB,PS) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_ImmUnsigned_22_22}}, + {BCDSETSGNCC, 0xfc1f05ff00000000, 0x101f058100000000, 0x0, // Decimal Set Sign VX-form (bcdsetsgn. VRT,VRB,PS) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_22_22}}, + {BCDSRCC, 0xfc0005ff00000000, 0x100005c100000000, 0x0, // Decimal Shift and Round VX-form (bcdsr. VRT,VRA,VRB,PS) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_ImmUnsigned_22_22}}, + {BCDTRUNCCC, 0xfc0005ff00000000, 0x1000050100000000, 0x0, // Decimal Truncate VX-form (bcdtrunc. VRT,VRA,VRB,PS) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_ImmUnsigned_22_22}}, + {BCDUSCC, 0xfc0005ff00000000, 0x1000048100000000, 0x20000000000, // Decimal Unsigned Shift VX-form (bcdus. VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {BCDUTRUNCCC, 0xfc0005ff00000000, 0x1000054100000000, 0x20000000000, // Decimal Unsigned Truncate VX-form (bcdutrunc. VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {CMPEQB, 0xfc0007fe00000000, 0x7c0001c000000000, 0x60000100000000, // Compare Equal Byte X-form (cmpeqb BF,RA,RB) + [6]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, + {CMPRB, 0xfc0007fe00000000, 0x7c00018000000000, 0x40000100000000, // Compare Ranged Byte X-form (cmprb BF,L,RA,RB) + [6]*argField{ap_CondRegField_6_8, ap_ImmUnsigned_10_10, ap_Reg_11_15, ap_Reg_16_20}}, + {CNTTZD, 0xfc0007ff00000000, 0x7c00047400000000, 0xf80000000000, // Count Trailing Zeros Doubleword X-form (cnttzd RA,RS) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10}}, + {CNTTZDCC, 0xfc0007ff00000000, 0x7c00047500000000, 0xf80000000000, // Count Trailing Zeros Doubleword X-form (cnttzd. RA,RS) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10}}, + {CNTTZW, 0xfc0007ff00000000, 0x7c00043400000000, 0xf80000000000, // Count Trailing Zeros Word X-form (cnttzw RA,RS) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10}}, + {CNTTZWCC, 0xfc0007ff00000000, 0x7c00043500000000, 0xf80000000000, // Count Trailing Zeros Word X-form (cnttzw. RA,RS) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10}}, + {COPY, 0xfc2007fe00000000, 0x7c20060c00000000, 0x3c0000100000000, // Copy X-form (copy RA,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_16_20}}, + {CPABORT, 0xfc0007fe00000000, 0x7c00068c00000000, 0x3fff80100000000, // Copy-Paste Abort X-form (cpabort) + [6]*argField{}}, + {DARN, 0xfc0007fe00000000, 0x7c0005e600000000, 0x1cf80100000000, // Deliver A Random Number X-form (darn RT,L) + [6]*argField{ap_Reg_6_10, ap_ImmUnsigned_14_15}}, + {DTSTSFI, 0xfc0007fe00000000, 0xec00054600000000, 0x40000100000000, // DFP Test Significance Immediate X-form (dtstsfi BF,UIM,FRB) + [6]*argField{ap_CondRegField_6_8, ap_ImmUnsigned_10_15, ap_FPReg_16_20}}, + {DTSTSFIQ, 0xfc0007fe00000000, 0xfc00054600000000, 0x40000100000000, // DFP Test Significance Immediate Quad X-form (dtstsfiq BF,UIM,FRBp) + [6]*argField{ap_CondRegField_6_8, ap_ImmUnsigned_10_15, ap_FPReg_16_20}}, + {EXTSWSLI, 0xfc0007fd00000000, 0x7c0006f400000000, 0x0, // Extend Sign Word and Shift Left Immediate XS-form (extswsli RA,RS,SH) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_30_30_16_20}}, + {EXTSWSLICC, 0xfc0007fd00000000, 0x7c0006f500000000, 0x0, // Extend Sign Word and Shift Left Immediate XS-form (extswsli. RA,RS,SH) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_30_30_16_20}}, + {LDAT, 0xfc0007fe00000000, 0x7c0004cc00000000, 0x100000000, // Load Doubleword ATomic X-form (ldat RT,RA,FC) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_ImmUnsigned_16_20}}, + {LWAT, 0xfc0007fe00000000, 0x7c00048c00000000, 0x100000000, // Load Word ATomic X-form (lwat RT,RA,FC) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_ImmUnsigned_16_20}}, + {LXSD, 0xfc00000300000000, 0xe400000200000000, 0x0, // Load VSX Scalar Doubleword DS-form (lxsd VRT,DS(RA)) + [6]*argField{ap_VecReg_6_10, ap_Offset_16_29_shift2, ap_Reg_11_15}}, + {LXSIBZX, 0xfc0007fe00000000, 0x7c00061a00000000, 0x0, // Load VSX Scalar as Integer Byte & Zero Indexed X-form (lxsibzx XT,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LXSIHZX, 0xfc0007fe00000000, 0x7c00065a00000000, 0x0, // Load VSX Scalar as Integer Halfword & Zero Indexed X-form (lxsihzx XT,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LXSSP, 0xfc00000300000000, 0xe400000300000000, 0x0, // Load VSX Scalar Single-Precision DS-form (lxssp VRT,DS(RA)) + [6]*argField{ap_VecReg_6_10, ap_Offset_16_29_shift2, ap_Reg_11_15}}, + {LXV, 0xfc00000700000000, 0xf400000100000000, 0x0, // Load VSX Vector DQ-form (lxv XT,DQ(RA)) + [6]*argField{ap_VecSReg_28_28_6_10, ap_Offset_16_27_shift4, ap_Reg_11_15}}, + {LXVB16X, 0xfc0007fe00000000, 0x7c0006d800000000, 0x0, // Load VSX Vector Byte*16 Indexed X-form (lxvb16x XT,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LXVH8X, 0xfc0007fe00000000, 0x7c00065800000000, 0x0, // Load VSX Vector Halfword*8 Indexed X-form (lxvh8x XT,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LXVL, 0xfc0007fe00000000, 0x7c00021a00000000, 0x0, // Load VSX Vector with Length X-form (lxvl XT,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LXVLL, 0xfc0007fe00000000, 0x7c00025a00000000, 0x0, // Load VSX Vector with Length Left-justified X-form (lxvll XT,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LXVWSX, 0xfc0007fe00000000, 0x7c0002d800000000, 0x0, // Load VSX Vector Word & Splat Indexed X-form (lxvwsx XT,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LXVX, 0xfc0007be00000000, 0x7c00021800000000, 0x4000000000, // Load VSX Vector Indexed X-form (lxvx XT,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {MADDHD, 0xfc00003f00000000, 0x1000003000000000, 0x0, // Multiply-Add High Doubleword VA-form (maddhd RT,RA,RB,RC) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20, ap_Reg_21_25}}, + {MADDHDU, 0xfc00003f00000000, 0x1000003100000000, 0x0, // Multiply-Add High Doubleword Unsigned VA-form (maddhdu RT,RA,RB,RC) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20, ap_Reg_21_25}}, + {MADDLD, 0xfc00003f00000000, 0x1000003300000000, 0x0, // Multiply-Add Low Doubleword VA-form (maddld RT,RA,RB,RC) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20, ap_Reg_21_25}}, + {MCRXRX, 0xfc0007fe00000000, 0x7c00048000000000, 0x7ff80100000000, // Move to CR from XER Extended X-form (mcrxrx BF) + [6]*argField{ap_CondRegField_6_8}}, + {MFVSRLD, 0xfc0007fe00000000, 0x7c00026600000000, 0xf80000000000, // Move From VSR Lower Doubleword X-form (mfvsrld RA,XS) + [6]*argField{ap_Reg_11_15, ap_VecSReg_31_31_6_10}}, + {MODSD, 0xfc0007fe00000000, 0x7c00061200000000, 0x100000000, // Modulo Signed Doubleword X-form (modsd RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {MODSW, 0xfc0007fe00000000, 0x7c00061600000000, 0x100000000, // Modulo Signed Word X-form (modsw RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {MODUD, 0xfc0007fe00000000, 0x7c00021200000000, 0x100000000, // Modulo Unsigned Doubleword X-form (modud RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {MODUW, 0xfc0007fe00000000, 0x7c00021600000000, 0x100000000, // Modulo Unsigned Word X-form (moduw RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {MSGSYNC, 0xfc0007fe00000000, 0x7c0006ec00000000, 0x3fff80100000000, // Message Synchronize X-form (msgsync) + [6]*argField{}}, + {MTVSRDD, 0xfc0007fe00000000, 0x7c00036600000000, 0x0, // Move To VSR Double Doubleword X-form (mtvsrdd XT,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {MTVSRWS, 0xfc0007fe00000000, 0x7c00032600000000, 0xf80000000000, // Move To VSR Word & Splat X-form (mtvsrws XT,RA) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15}}, + {PASTECC, 0xfc0007ff00000000, 0x7c00070d00000000, 0x3c0000000000000, // Paste X-form (paste. RA,RB,L) + [6]*argField{ap_Reg_11_15, ap_Reg_16_20, ap_ImmUnsigned_10_10}}, + {SETB, 0xfc0007fe00000000, 0x7c00010000000000, 0x3f80100000000, // Set Boolean X-form (setb RT,BFA) + [6]*argField{ap_Reg_6_10, ap_CondRegField_11_13}}, + {SLBIEG, 0xfc0007fe00000000, 0x7c0003a400000000, 0x1f000100000000, // SLB Invalidate Entry Global X-form (slbieg RS,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_16_20}}, + {SLBSYNC, 0xfc0007fe00000000, 0x7c0002a400000000, 0x3fff80100000000, // SLB Synchronize X-form (slbsync) + [6]*argField{}}, + {STDAT, 0xfc0007fe00000000, 0x7c0005cc00000000, 0x100000000, // Store Doubleword ATomic X-form (stdat RS,RA,FC) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_ImmUnsigned_16_20}}, + {STOP, 0xfc0007fe00000000, 0x4c0002e400000000, 0x3fff80100000000, // Stop XL-form (stop) + [6]*argField{}}, + {STWAT, 0xfc0007fe00000000, 0x7c00058c00000000, 0x100000000, // Store Word ATomic X-form (stwat RS,RA,FC) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_ImmUnsigned_16_20}}, + {STXSD, 0xfc00000300000000, 0xf400000200000000, 0x0, // Store VSX Scalar Doubleword DS-form (stxsd VRS,DS(RA)) + [6]*argField{ap_VecReg_6_10, ap_Offset_16_29_shift2, ap_Reg_11_15}}, + {STXSIBX, 0xfc0007fe00000000, 0x7c00071a00000000, 0x0, // Store VSX Scalar as Integer Byte Indexed X-form (stxsibx XS,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STXSIHX, 0xfc0007fe00000000, 0x7c00075a00000000, 0x0, // Store VSX Scalar as Integer Halfword Indexed X-form (stxsihx XS,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STXSSP, 0xfc00000300000000, 0xf400000300000000, 0x0, // Store VSX Scalar Single DS-form (stxssp VRS,DS(RA)) + [6]*argField{ap_VecReg_6_10, ap_Offset_16_29_shift2, ap_Reg_11_15}}, + {STXV, 0xfc00000700000000, 0xf400000500000000, 0x0, // Store VSX Vector DQ-form (stxv XS,DQ(RA)) + [6]*argField{ap_VecSReg_28_28_6_10, ap_Offset_16_27_shift4, ap_Reg_11_15}}, + {STXVB16X, 0xfc0007fe00000000, 0x7c0007d800000000, 0x0, // Store VSX Vector Byte*16 Indexed X-form (stxvb16x XS,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STXVH8X, 0xfc0007fe00000000, 0x7c00075800000000, 0x0, // Store VSX Vector Halfword*8 Indexed X-form (stxvh8x XS,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STXVL, 0xfc0007fe00000000, 0x7c00031a00000000, 0x0, // Store VSX Vector with Length X-form (stxvl XS,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STXVLL, 0xfc0007fe00000000, 0x7c00035a00000000, 0x0, // Store VSX Vector with Length Left-justified X-form (stxvll XS,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STXVX, 0xfc0007fe00000000, 0x7c00031800000000, 0x0, // Store VSX Vector Indexed X-form (stxvx XS,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {VABSDUB, 0xfc0007ff00000000, 0x1000040300000000, 0x0, // Vector Absolute Difference Unsigned Byte VX-form (vabsdub VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VABSDUH, 0xfc0007ff00000000, 0x1000044300000000, 0x0, // Vector Absolute Difference Unsigned Halfword VX-form (vabsduh VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VABSDUW, 0xfc0007ff00000000, 0x1000048300000000, 0x0, // Vector Absolute Difference Unsigned Word VX-form (vabsduw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VBPERMD, 0xfc0007ff00000000, 0x100005cc00000000, 0x0, // Vector Bit Permute Doubleword VX-form (vbpermd VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCLZLSBB, 0xfc1f07ff00000000, 0x1000060200000000, 0x0, // Vector Count Leading Zero Least-Significant Bits Byte VX-form (vclzlsbb RT,VRB) + [6]*argField{ap_Reg_6_10, ap_VecReg_16_20}}, + {VCMPNEB, 0xfc0007ff00000000, 0x1000000700000000, 0x0, // Vector Compare Not Equal Byte VC-form (vcmpneb VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPNEBCC, 0xfc0007ff00000000, 0x1000040700000000, 0x0, // Vector Compare Not Equal Byte VC-form (vcmpneb. VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPNEH, 0xfc0007ff00000000, 0x1000004700000000, 0x0, // Vector Compare Not Equal Halfword VC-form (vcmpneh VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPNEHCC, 0xfc0007ff00000000, 0x1000044700000000, 0x0, // Vector Compare Not Equal Halfword VC-form (vcmpneh. VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPNEW, 0xfc0007ff00000000, 0x1000008700000000, 0x0, // Vector Compare Not Equal Word VC-form (vcmpnew VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPNEWCC, 0xfc0007ff00000000, 0x1000048700000000, 0x0, // Vector Compare Not Equal Word VC-form (vcmpnew. VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPNEZB, 0xfc0007ff00000000, 0x1000010700000000, 0x0, // Vector Compare Not Equal or Zero Byte VC-form (vcmpnezb VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPNEZBCC, 0xfc0007ff00000000, 0x1000050700000000, 0x0, // Vector Compare Not Equal or Zero Byte VC-form (vcmpnezb. VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPNEZH, 0xfc0007ff00000000, 0x1000014700000000, 0x0, // Vector Compare Not Equal or Zero Halfword VC-form (vcmpnezh VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPNEZHCC, 0xfc0007ff00000000, 0x1000054700000000, 0x0, // Vector Compare Not Equal or Zero Halfword VC-form (vcmpnezh. VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPNEZW, 0xfc0007ff00000000, 0x1000018700000000, 0x0, // Vector Compare Not Equal or Zero Word VC-form (vcmpnezw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPNEZWCC, 0xfc0007ff00000000, 0x1000058700000000, 0x0, // Vector Compare Not Equal or Zero Word VC-form (vcmpnezw. VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCTZB, 0xfc1f07ff00000000, 0x101c060200000000, 0x0, // Vector Count Trailing Zeros Byte VX-form (vctzb VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VCTZD, 0xfc1f07ff00000000, 0x101f060200000000, 0x0, // Vector Count Trailing Zeros Doubleword VX-form (vctzd VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VCTZH, 0xfc1f07ff00000000, 0x101d060200000000, 0x0, // Vector Count Trailing Zeros Halfword VX-form (vctzh VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VCTZLSBB, 0xfc1f07ff00000000, 0x1001060200000000, 0x0, // Vector Count Trailing Zero Least-Significant Bits Byte VX-form (vctzlsbb RT,VRB) + [6]*argField{ap_Reg_6_10, ap_VecReg_16_20}}, + {VCTZW, 0xfc1f07ff00000000, 0x101e060200000000, 0x0, // Vector Count Trailing Zeros Word VX-form (vctzw VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VEXTRACTD, 0xfc0007ff00000000, 0x100002cd00000000, 0x10000000000000, // Vector Extract Doubleword to VSR using immediate-specified index VX-form (vextractd VRT,VRB,UIM) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_12_15}}, + {VEXTRACTUB, 0xfc0007ff00000000, 0x1000020d00000000, 0x10000000000000, // Vector Extract Unsigned Byte to VSR using immediate-specified index VX-form (vextractub VRT,VRB,UIM) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_12_15}}, + {VEXTRACTUH, 0xfc0007ff00000000, 0x1000024d00000000, 0x10000000000000, // Vector Extract Unsigned Halfword to VSR using immediate-specified index VX-form (vextractuh VRT,VRB,UIM) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_12_15}}, + {VEXTRACTUW, 0xfc0007ff00000000, 0x1000028d00000000, 0x10000000000000, // Vector Extract Unsigned Word to VSR using immediate-specified index VX-form (vextractuw VRT,VRB,UIM) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_12_15}}, + {VEXTSB2D, 0xfc1f07ff00000000, 0x1018060200000000, 0x0, // Vector Extend Sign Byte To Doubleword VX-form (vextsb2d VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VEXTSB2W, 0xfc1f07ff00000000, 0x1010060200000000, 0x0, // Vector Extend Sign Byte To Word VX-form (vextsb2w VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VEXTSH2D, 0xfc1f07ff00000000, 0x1019060200000000, 0x0, // Vector Extend Sign Halfword To Doubleword VX-form (vextsh2d VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VEXTSH2W, 0xfc1f07ff00000000, 0x1011060200000000, 0x0, // Vector Extend Sign Halfword To Word VX-form (vextsh2w VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VEXTSW2D, 0xfc1f07ff00000000, 0x101a060200000000, 0x0, // Vector Extend Sign Word To Doubleword VX-form (vextsw2d VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VEXTUBLX, 0xfc0007ff00000000, 0x1000060d00000000, 0x0, // Vector Extract Unsigned Byte to GPR using GPR-specified Left-Index VX-form (vextublx RT,RA,VRB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_VecReg_16_20}}, + {VEXTUBRX, 0xfc0007ff00000000, 0x1000070d00000000, 0x0, // Vector Extract Unsigned Byte to GPR using GPR-specified Right-Index VX-form (vextubrx RT,RA,VRB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_VecReg_16_20}}, + {VEXTUHLX, 0xfc0007ff00000000, 0x1000064d00000000, 0x0, // Vector Extract Unsigned Halfword to GPR using GPR-specified Left-Index VX-form (vextuhlx RT,RA,VRB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_VecReg_16_20}}, + {VEXTUHRX, 0xfc0007ff00000000, 0x1000074d00000000, 0x0, // Vector Extract Unsigned Halfword to GPR using GPR-specified Right-Index VX-form (vextuhrx RT,RA,VRB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_VecReg_16_20}}, + {VEXTUWLX, 0xfc0007ff00000000, 0x1000068d00000000, 0x0, // Vector Extract Unsigned Word to GPR using GPR-specified Left-Index VX-form (vextuwlx RT,RA,VRB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_VecReg_16_20}}, + {VEXTUWRX, 0xfc0007ff00000000, 0x1000078d00000000, 0x0, // Vector Extract Unsigned Word to GPR using GPR-specified Right-Index VX-form (vextuwrx RT,RA,VRB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_VecReg_16_20}}, + {VINSERTB, 0xfc0007ff00000000, 0x1000030d00000000, 0x10000000000000, // Vector Insert Byte from VSR using immediate-specified index VX-form (vinsertb VRT,VRB,UIM) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_12_15}}, + {VINSERTD, 0xfc0007ff00000000, 0x100003cd00000000, 0x10000000000000, // Vector Insert Doubleword from VSR using immediate-specified index VX-form (vinsertd VRT,VRB,UIM) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_12_15}}, + {VINSERTH, 0xfc0007ff00000000, 0x1000034d00000000, 0x10000000000000, // Vector Insert Halfword from VSR using immediate-specified index VX-form (vinserth VRT,VRB,UIM) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_12_15}}, + {VINSERTW, 0xfc0007ff00000000, 0x1000038d00000000, 0x10000000000000, // Vector Insert Word from VSR using immediate-specified index VX-form (vinsertw VRT,VRB,UIM) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_12_15}}, + {VMUL10CUQ, 0xfc0007ff00000000, 0x1000000100000000, 0xf80000000000, // Vector Multiply-by-10 & write Carry-out Unsigned Quadword VX-form (vmul10cuq VRT,VRA) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15}}, + {VMUL10ECUQ, 0xfc0007ff00000000, 0x1000004100000000, 0x0, // Vector Multiply-by-10 Extended & write Carry-out Unsigned Quadword VX-form (vmul10ecuq VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMUL10EUQ, 0xfc0007ff00000000, 0x1000024100000000, 0x0, // Vector Multiply-by-10 Extended Unsigned Quadword VX-form (vmul10euq VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMUL10UQ, 0xfc0007ff00000000, 0x1000020100000000, 0xf80000000000, // Vector Multiply-by-10 Unsigned Quadword VX-form (vmul10uq VRT,VRA) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15}}, + {VNEGD, 0xfc1f07ff00000000, 0x1007060200000000, 0x0, // Vector Negate Doubleword VX-form (vnegd VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VNEGW, 0xfc1f07ff00000000, 0x1006060200000000, 0x0, // Vector Negate Word VX-form (vnegw VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VPERMR, 0xfc00003f00000000, 0x1000003b00000000, 0x0, // Vector Permute Right-indexed VA-form (vpermr VRT,VRA,VRB,VRC) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, + {VPRTYBD, 0xfc1f07ff00000000, 0x1009060200000000, 0x0, // Vector Parity Byte Doubleword VX-form (vprtybd VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VPRTYBQ, 0xfc1f07ff00000000, 0x100a060200000000, 0x0, // Vector Parity Byte Quadword VX-form (vprtybq VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VPRTYBW, 0xfc1f07ff00000000, 0x1008060200000000, 0x0, // Vector Parity Byte Word VX-form (vprtybw VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VRLDMI, 0xfc0007ff00000000, 0x100000c500000000, 0x0, // Vector Rotate Left Doubleword then Mask Insert VX-form (vrldmi VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VRLDNM, 0xfc0007ff00000000, 0x100001c500000000, 0x0, // Vector Rotate Left Doubleword then AND with Mask VX-form (vrldnm VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VRLWMI, 0xfc0007ff00000000, 0x1000008500000000, 0x0, // Vector Rotate Left Word then Mask Insert VX-form (vrlwmi VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VRLWNM, 0xfc0007ff00000000, 0x1000018500000000, 0x0, // Vector Rotate Left Word then AND with Mask VX-form (vrlwnm VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSLV, 0xfc0007ff00000000, 0x1000074400000000, 0x0, // Vector Shift Left Variable VX-form (vslv VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSRV, 0xfc0007ff00000000, 0x1000070400000000, 0x0, // Vector Shift Right Variable VX-form (vsrv VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {WAIT, 0xfc0007fe00000000, 0x7c00003c00000000, 0x9cf80100000000, // Wait X-form (wait WC,PL) + [6]*argField{ap_ImmUnsigned_9_10, ap_ImmUnsigned_14_15}}, + {XSABSQP, 0xfc1f07fe00000000, 0xfc00064800000000, 0x100000000, // VSX Scalar Absolute Quad-Precision X-form (xsabsqp VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {XSADDQP, 0xfc0007ff00000000, 0xfc00000800000000, 0x0, // VSX Scalar Add Quad-Precision [using round to Odd] X-form (xsaddqp VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {XSADDQPO, 0xfc0007ff00000000, 0xfc00000900000000, 0x0, // VSX Scalar Add Quad-Precision [using round to Odd] X-form (xsaddqpo VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {XSCMPEQDP, 0xfc0007f800000000, 0xf000001800000000, 0x0, // VSX Scalar Compare Equal Double-Precision XX3-form (xscmpeqdp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSCMPEXPDP, 0xfc0007f800000000, 0xf00001d800000000, 0x60000100000000, // VSX Scalar Compare Exponents Double-Precision XX3-form (xscmpexpdp BF,XA,XB) + [6]*argField{ap_CondRegField_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSCMPEXPQP, 0xfc0007fe00000000, 0xfc00014800000000, 0x60000100000000, // VSX Scalar Compare Exponents Quad-Precision X-form (xscmpexpqp BF,VRA,VRB) + [6]*argField{ap_CondRegField_6_8, ap_VecReg_11_15, ap_VecReg_16_20}}, + {XSCMPGEDP, 0xfc0007f800000000, 0xf000009800000000, 0x0, // VSX Scalar Compare Greater Than or Equal Double-Precision XX3-form (xscmpgedp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSCMPGTDP, 0xfc0007f800000000, 0xf000005800000000, 0x0, // VSX Scalar Compare Greater Than Double-Precision XX3-form (xscmpgtdp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSCMPOQP, 0xfc0007fe00000000, 0xfc00010800000000, 0x60000100000000, // VSX Scalar Compare Ordered Quad-Precision X-form (xscmpoqp BF,VRA,VRB) + [6]*argField{ap_CondRegField_6_8, ap_VecReg_11_15, ap_VecReg_16_20}}, + {XSCMPUQP, 0xfc0007fe00000000, 0xfc00050800000000, 0x60000100000000, // VSX Scalar Compare Unordered Quad-Precision X-form (xscmpuqp BF,VRA,VRB) + [6]*argField{ap_CondRegField_6_8, ap_VecReg_11_15, ap_VecReg_16_20}}, + {XSCPSGNQP, 0xfc0007fe00000000, 0xfc0000c800000000, 0x100000000, // VSX Scalar Copy Sign Quad-Precision X-form (xscpsgnqp VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {XSCVDPHP, 0xfc1f07fc00000000, 0xf011056c00000000, 0x0, // VSX Scalar Convert with round Double-Precision to Half-Precision format XX2-form (xscvdphp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XSCVDPQP, 0xfc1f07fe00000000, 0xfc16068800000000, 0x100000000, // VSX Scalar Convert Double-Precision to Quad-Precision format X-form (xscvdpqp VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {XSCVHPDP, 0xfc1f07fc00000000, 0xf010056c00000000, 0x0, // VSX Scalar Convert Half-Precision to Double-Precision format XX2-form (xscvhpdp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XSCVQPDP, 0xfc1f07ff00000000, 0xfc14068800000000, 0x0, // VSX Scalar Convert with round Quad-Precision to Double-Precision format [using round to Odd] X-form (xscvqpdp VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {XSCVQPDPO, 0xfc1f07ff00000000, 0xfc14068900000000, 0x0, // VSX Scalar Convert with round Quad-Precision to Double-Precision format [using round to Odd] X-form (xscvqpdpo VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {XSCVQPSDZ, 0xfc1f07fe00000000, 0xfc19068800000000, 0x100000000, // VSX Scalar Convert with round to zero Quad-Precision to Signed Doubleword format X-form (xscvqpsdz VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {XSCVQPSWZ, 0xfc1f07fe00000000, 0xfc09068800000000, 0x100000000, // VSX Scalar Convert with round to zero Quad-Precision to Signed Word format X-form (xscvqpswz VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {XSCVQPUDZ, 0xfc1f07fe00000000, 0xfc11068800000000, 0x100000000, // VSX Scalar Convert with round to zero Quad-Precision to Unsigned Doubleword format X-form (xscvqpudz VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {XSCVQPUWZ, 0xfc1f07fe00000000, 0xfc01068800000000, 0x100000000, // VSX Scalar Convert with round to zero Quad-Precision to Unsigned Word format X-form (xscvqpuwz VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {XSCVSDQP, 0xfc1f07fe00000000, 0xfc0a068800000000, 0x100000000, // VSX Scalar Convert Signed Doubleword to Quad-Precision format X-form (xscvsdqp VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {XSCVUDQP, 0xfc1f07fe00000000, 0xfc02068800000000, 0x100000000, // VSX Scalar Convert Unsigned Doubleword to Quad-Precision format X-form (xscvudqp VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {XSDIVQP, 0xfc0007ff00000000, 0xfc00044800000000, 0x0, // VSX Scalar Divide Quad-Precision [using round to Odd] X-form (xsdivqp VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {XSDIVQPO, 0xfc0007ff00000000, 0xfc00044900000000, 0x0, // VSX Scalar Divide Quad-Precision [using round to Odd] X-form (xsdivqpo VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {XSIEXPDP, 0xfc0007fe00000000, 0xf000072c00000000, 0x0, // VSX Scalar Insert Exponent Double-Precision X-form (xsiexpdp XT,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {XSIEXPQP, 0xfc0007fe00000000, 0xfc0006c800000000, 0x100000000, // VSX Scalar Insert Exponent Quad-Precision X-form (xsiexpqp VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {XSMADDQP, 0xfc0007ff00000000, 0xfc00030800000000, 0x0, // VSX Scalar Multiply-Add Quad-Precision [using round to Odd] X-form (xsmaddqp VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {XSMADDQPO, 0xfc0007ff00000000, 0xfc00030900000000, 0x0, // VSX Scalar Multiply-Add Quad-Precision [using round to Odd] X-form (xsmaddqpo VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {XSMAXCDP, 0xfc0007f800000000, 0xf000040000000000, 0x0, // VSX Scalar Maximum Type-C Double-Precision XX3-form (xsmaxcdp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSMAXJDP, 0xfc0007f800000000, 0xf000048000000000, 0x0, // VSX Scalar Maximum Type-J Double-Precision XX3-form (xsmaxjdp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSMINCDP, 0xfc0007f800000000, 0xf000044000000000, 0x0, // VSX Scalar Minimum Type-C Double-Precision XX3-form (xsmincdp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSMINJDP, 0xfc0007f800000000, 0xf00004c000000000, 0x0, // VSX Scalar Minimum Type-J Double-Precision XX3-form (xsminjdp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSMSUBQP, 0xfc0007ff00000000, 0xfc00034800000000, 0x0, // VSX Scalar Multiply-Subtract Quad-Precision [using round to Odd] X-form (xsmsubqp VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {XSMSUBQPO, 0xfc0007ff00000000, 0xfc00034900000000, 0x0, // VSX Scalar Multiply-Subtract Quad-Precision [using round to Odd] X-form (xsmsubqpo VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {XSMULQP, 0xfc0007ff00000000, 0xfc00004800000000, 0x0, // VSX Scalar Multiply Quad-Precision [using round to Odd] X-form (xsmulqp VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {XSMULQPO, 0xfc0007ff00000000, 0xfc00004900000000, 0x0, // VSX Scalar Multiply Quad-Precision [using round to Odd] X-form (xsmulqpo VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {XSNABSQP, 0xfc1f07fe00000000, 0xfc08064800000000, 0x0, // VSX Scalar Negative Absolute Quad-Precision X-form (xsnabsqp VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {XSNEGQP, 0xfc1f07fe00000000, 0xfc10064800000000, 0x100000000, // VSX Scalar Negate Quad-Precision X-form (xsnegqp VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {XSNMADDQP, 0xfc0007ff00000000, 0xfc00038800000000, 0x0, // VSX Scalar Negative Multiply-Add Quad-Precision [using round to Odd] X-form (xsnmaddqp VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {XSNMADDQPO, 0xfc0007ff00000000, 0xfc00038900000000, 0x0, // VSX Scalar Negative Multiply-Add Quad-Precision [using round to Odd] X-form (xsnmaddqpo VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {XSNMSUBQP, 0xfc0007ff00000000, 0xfc0003c800000000, 0x0, // VSX Scalar Negative Multiply-Subtract Quad-Precision [using round to Odd] X-form (xsnmsubqp VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {XSNMSUBQPO, 0xfc0007ff00000000, 0xfc0003c900000000, 0x0, // VSX Scalar Negative Multiply-Subtract Quad-Precision [using round to Odd] X-form (xsnmsubqpo VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {XSRQPI, 0xfc0001ff00000000, 0xfc00000a00000000, 0x1e000000000000, // VSX Scalar Round to Quad-Precision Integer [with Inexact] Z23-form (xsrqpi R,VRT,VRB,RMC) + [6]*argField{ap_ImmUnsigned_15_15, ap_VecReg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_21_22}}, + {XSRQPIX, 0xfc0001ff00000000, 0xfc00000b00000000, 0x1e000000000000, // VSX Scalar Round to Quad-Precision Integer [with Inexact] Z23-form (xsrqpix R,VRT,VRB,RMC) + [6]*argField{ap_ImmUnsigned_15_15, ap_VecReg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_21_22}}, + {XSRQPXP, 0xfc0001fe00000000, 0xfc00004a00000000, 0x1e000100000000, // VSX Scalar Round Quad-Precision to Double-Extended Precision Z23-form (xsrqpxp R,VRT,VRB,RMC) + [6]*argField{ap_ImmUnsigned_15_15, ap_VecReg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_21_22}}, + {XSSQRTQP, 0xfc1f07ff00000000, 0xfc1b064800000000, 0x0, // VSX Scalar Square Root Quad-Precision [using round to Odd] X-form (xssqrtqp VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {XSSQRTQPO, 0xfc1f07ff00000000, 0xfc1b064900000000, 0x0, // VSX Scalar Square Root Quad-Precision [using round to Odd] X-form (xssqrtqpo VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {XSSUBQP, 0xfc0007ff00000000, 0xfc00040800000000, 0x0, // VSX Scalar Subtract Quad-Precision [using round to Odd] X-form (xssubqp VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {XSSUBQPO, 0xfc0007ff00000000, 0xfc00040900000000, 0x0, // VSX Scalar Subtract Quad-Precision [using round to Odd] X-form (xssubqpo VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {XSTSTDCDP, 0xfc0007fc00000000, 0xf00005a800000000, 0x100000000, // VSX Scalar Test Data Class Double-Precision XX2-form (xststdcdp BF,XB,DCMX) + [6]*argField{ap_CondRegField_6_8, ap_VecSReg_30_30_16_20, ap_ImmUnsigned_9_15}}, + {XSTSTDCQP, 0xfc0007fe00000000, 0xfc00058800000000, 0x100000000, // VSX Scalar Test Data Class Quad-Precision X-form (xststdcqp BF,VRB,DCMX) + [6]*argField{ap_CondRegField_6_8, ap_VecReg_16_20, ap_ImmUnsigned_9_15}}, + {XSTSTDCSP, 0xfc0007fc00000000, 0xf00004a800000000, 0x100000000, // VSX Scalar Test Data Class Single-Precision XX2-form (xststdcsp BF,XB,DCMX) + [6]*argField{ap_CondRegField_6_8, ap_VecSReg_30_30_16_20, ap_ImmUnsigned_9_15}}, + {XSXEXPDP, 0xfc1f07fc00000000, 0xf000056c00000000, 0x100000000, // VSX Scalar Extract Exponent Double-Precision XX2-form (xsxexpdp RT,XB) + [6]*argField{ap_Reg_6_10, ap_VecSReg_30_30_16_20}}, + {XSXEXPQP, 0xfc1f07fe00000000, 0xfc02064800000000, 0x100000000, // VSX Scalar Extract Exponent Quad-Precision X-form (xsxexpqp VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {XSXSIGDP, 0xfc1f07fc00000000, 0xf001056c00000000, 0x100000000, // VSX Scalar Extract Significand Double-Precision XX2-form (xsxsigdp RT,XB) + [6]*argField{ap_Reg_6_10, ap_VecSReg_30_30_16_20}}, + {XSXSIGQP, 0xfc1f07fe00000000, 0xfc12064800000000, 0x100000000, // VSX Scalar Extract Significand Quad-Precision X-form (xsxsigqp VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {XVCVHPSP, 0xfc1f07fc00000000, 0xf018076c00000000, 0x0, // VSX Vector Convert Half-Precision to Single-Precision format XX2-form (xvcvhpsp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVCVSPHP, 0xfc1f07fc00000000, 0xf019076c00000000, 0x0, // VSX Vector Convert with round Single-Precision to Half-Precision format XX2-form (xvcvsphp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVIEXPDP, 0xfc0007f800000000, 0xf00007c000000000, 0x0, // VSX Vector Insert Exponent Double-Precision XX3-form (xviexpdp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVIEXPSP, 0xfc0007f800000000, 0xf00006c000000000, 0x0, // VSX Vector Insert Exponent Single-Precision XX3-form (xviexpsp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVTSTDCDP, 0xfc0007b800000000, 0xf00007a800000000, 0x0, // VSX Vector Test Data Class Double-Precision XX2-form (xvtstdcdp XT,XB,DCMX) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20, ap_ImmUnsigned_25_25_29_29_11_15}}, + {XVTSTDCSP, 0xfc0007b800000000, 0xf00006a800000000, 0x0, // VSX Vector Test Data Class Single-Precision XX2-form (xvtstdcsp XT,XB,DCMX) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20, ap_ImmUnsigned_25_25_29_29_11_15}}, + {XVXEXPDP, 0xfc1f07fc00000000, 0xf000076c00000000, 0x0, // VSX Vector Extract Exponent Double-Precision XX2-form (xvxexpdp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVXEXPSP, 0xfc1f07fc00000000, 0xf008076c00000000, 0x0, // VSX Vector Extract Exponent Single-Precision XX2-form (xvxexpsp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVXSIGDP, 0xfc1f07fc00000000, 0xf001076c00000000, 0x0, // VSX Vector Extract Significand Double-Precision XX2-form (xvxsigdp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVXSIGSP, 0xfc1f07fc00000000, 0xf009076c00000000, 0x0, // VSX Vector Extract Significand Single-Precision XX2-form (xvxsigsp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XXBRD, 0xfc1f07fc00000000, 0xf017076c00000000, 0x0, // VSX Vector Byte-Reverse Doubleword XX2-form (xxbrd XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XXBRH, 0xfc1f07fc00000000, 0xf007076c00000000, 0x0, // VSX Vector Byte-Reverse Halfword XX2-form (xxbrh XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XXBRQ, 0xfc1f07fc00000000, 0xf01f076c00000000, 0x0, // VSX Vector Byte-Reverse Quadword XX2-form (xxbrq XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XXBRW, 0xfc1f07fc00000000, 0xf00f076c00000000, 0x0, // VSX Vector Byte-Reverse Word XX2-form (xxbrw XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XXEXTRACTUW, 0xfc0007fc00000000, 0xf000029400000000, 0x10000000000000, // VSX Vector Extract Unsigned Word XX2-form (xxextractuw XT,XB,UIM) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20, ap_ImmUnsigned_12_15}}, + {XXINSERTW, 0xfc0007fc00000000, 0xf00002d400000000, 0x10000000000000, // VSX Vector Insert Word XX2-form (xxinsertw XT,XB,UIM) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20, ap_ImmUnsigned_12_15}}, + {XXPERM, 0xfc0007f800000000, 0xf00000d000000000, 0x0, // VSX Vector Permute XX3-form (xxperm XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XXPERMR, 0xfc0007f800000000, 0xf00001d000000000, 0x0, // VSX Vector Permute Right-indexed XX3-form (xxpermr XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XXSPLTIB, 0xfc1807fe00000000, 0xf00002d000000000, 0x0, // VSX Vector Splat Immediate Byte X-form (xxspltib XT,IMM8) + [6]*argField{ap_VecSReg_31_31_6_10, ap_ImmUnsigned_13_20}}, + {BCDADDCC, 0xfc0005ff00000000, 0x1000040100000000, 0x0, // Decimal Add Modulo VX-form (bcdadd. VRT,VRA,VRB,PS) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_ImmUnsigned_22_22}}, + {BCDSUBCC, 0xfc0005ff00000000, 0x1000044100000000, 0x0, // Decimal Subtract Modulo VX-form (bcdsub. VRT,VRA,VRB,PS) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_ImmUnsigned_22_22}}, + {BCTAR, 0xfc0007ff00000000, 0x4c00046000000000, 0xe00000000000, // Branch Conditional to Branch Target Address Register XL-form (bctar BO,BI,BH) + [6]*argField{ap_ImmUnsigned_6_10, ap_CondRegBit_11_15, ap_ImmUnsigned_19_20}}, + {BCTARL, 0xfc0007ff00000000, 0x4c00046100000000, 0xe00000000000, // Branch Conditional to Branch Target Address Register XL-form (bctarl BO,BI,BH) + [6]*argField{ap_ImmUnsigned_6_10, ap_CondRegBit_11_15, ap_ImmUnsigned_19_20}}, + {CLRBHRB, 0xfc0007fe00000000, 0x7c00035c00000000, 0x3fff80100000000, // Clear BHRB X-form (clrbhrb) + [6]*argField{}}, + {FMRGEW, 0xfc0007fe00000000, 0xfc00078c00000000, 0x100000000, // Floating Merge Even Word X-form (fmrgew FRT,FRA,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {FMRGOW, 0xfc0007fe00000000, 0xfc00068c00000000, 0x100000000, // Floating Merge Odd Word X-form (fmrgow FRT,FRA,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {ICBT, 0xfc0007fe00000000, 0x7c00002c00000000, 0x200000100000000, // Instruction Cache Block Touch X-form (icbt CT, RA, RB) + [6]*argField{ap_ImmUnsigned_7_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LQARX, 0xfc0007fe00000000, 0x7c00022800000000, 0x0, // Load Quadword And Reserve Indexed X-form (lqarx RTp,RA,RB,EH) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20, ap_ImmUnsigned_31_31}}, + {LXSIWAX, 0xfc0007fe00000000, 0x7c00009800000000, 0x0, // Load VSX Scalar as Integer Word Algebraic Indexed X-form (lxsiwax XT,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LXSIWZX, 0xfc0007fe00000000, 0x7c00001800000000, 0x0, // Load VSX Scalar as Integer Word & Zero Indexed X-form (lxsiwzx XT,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LXSSPX, 0xfc0007fe00000000, 0x7c00041800000000, 0x0, // Load VSX Scalar Single-Precision Indexed X-form (lxsspx XT,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {MFBHRBE, 0xfc0007fe00000000, 0x7c00025c00000000, 0x100000000, // Move From BHRB XFX-form (mfbhrbe RT,BHRBE) + [6]*argField{ap_Reg_6_10, ap_ImmUnsigned_11_20}}, + {MFVSRD, 0xfc0007fe00000000, 0x7c00006600000000, 0xf80000000000, // Move From VSR Doubleword X-form (mfvsrd RA,XS) + [6]*argField{ap_Reg_11_15, ap_VecSReg_31_31_6_10}}, + {MFVSRWZ, 0xfc0007fe00000000, 0x7c0000e600000000, 0xf80000000000, // Move From VSR Word and Zero X-form (mfvsrwz RA,XS) + [6]*argField{ap_Reg_11_15, ap_VecSReg_31_31_6_10}}, + {MSGCLR, 0xfc0007fe00000000, 0x7c0001dc00000000, 0x3ff000100000000, // Message Clear X-form (msgclr RB) + [6]*argField{ap_Reg_16_20}}, + {MSGCLRP, 0xfc0007fe00000000, 0x7c00015c00000000, 0x3ff000100000000, // Message Clear Privileged X-form (msgclrp RB) + [6]*argField{ap_Reg_16_20}}, + {MSGSND, 0xfc0007fe00000000, 0x7c00019c00000000, 0x3ff000100000000, // Message Send X-form (msgsnd RB) + [6]*argField{ap_Reg_16_20}}, + {MSGSNDP, 0xfc0007fe00000000, 0x7c00011c00000000, 0x3ff000100000000, // Message Send Privileged X-form (msgsndp RB) + [6]*argField{ap_Reg_16_20}}, + {MTVSRD, 0xfc0007fe00000000, 0x7c00016600000000, 0xf80000000000, // Move To VSR Doubleword X-form (mtvsrd XT,RA) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15}}, + {MTVSRWA, 0xfc0007fe00000000, 0x7c0001a600000000, 0xf80000000000, // Move To VSR Word Algebraic X-form (mtvsrwa XT,RA) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15}}, + {MTVSRWZ, 0xfc0007fe00000000, 0x7c0001e600000000, 0xf80000000000, // Move To VSR Word and Zero X-form (mtvsrwz XT,RA) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15}}, + {RFEBB, 0xfc0007fe00000000, 0x4c00012400000000, 0x3fff00100000000, // Return from Event Based Branch XL-form (rfebb S) + [6]*argField{ap_ImmUnsigned_20_20}}, + {STQCXCC, 0xfc0007ff00000000, 0x7c00016d00000000, 0x0, // Store Quadword Conditional Indexed X-form (stqcx. RSp,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STXSIWX, 0xfc0007fe00000000, 0x7c00011800000000, 0x0, // Store VSX Scalar as Integer Word Indexed X-form (stxsiwx XS,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STXSSPX, 0xfc0007fe00000000, 0x7c00051800000000, 0x0, // Store VSX Scalar Single-Precision Indexed X-form (stxsspx XS,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {VADDCUQ, 0xfc0007ff00000000, 0x1000014000000000, 0x0, // Vector Add & write Carry Unsigned Quadword VX-form (vaddcuq VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VADDECUQ, 0xfc00003f00000000, 0x1000003d00000000, 0x0, // Vector Add Extended & write Carry Unsigned Quadword VA-form (vaddecuq VRT,VRA,VRB,VRC) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, + {VADDEUQM, 0xfc00003f00000000, 0x1000003c00000000, 0x0, // Vector Add Extended Unsigned Quadword Modulo VA-form (vaddeuqm VRT,VRA,VRB,VRC) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, + {VADDUDM, 0xfc0007ff00000000, 0x100000c000000000, 0x0, // Vector Add Unsigned Doubleword Modulo VX-form (vaddudm VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VADDUQM, 0xfc0007ff00000000, 0x1000010000000000, 0x0, // Vector Add Unsigned Quadword Modulo VX-form (vadduqm VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VBPERMQ, 0xfc0007ff00000000, 0x1000054c00000000, 0x0, // Vector Bit Permute Quadword VX-form (vbpermq VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCIPHER, 0xfc0007ff00000000, 0x1000050800000000, 0x0, // Vector AES Cipher VX-form (vcipher VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCIPHERLAST, 0xfc0007ff00000000, 0x1000050900000000, 0x0, // Vector AES Cipher Last VX-form (vcipherlast VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCLZB, 0xfc0007ff00000000, 0x1000070200000000, 0x1f000000000000, // Vector Count Leading Zeros Byte VX-form (vclzb VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VCLZD, 0xfc0007ff00000000, 0x100007c200000000, 0x1f000000000000, // Vector Count Leading Zeros Doubleword VX-form (vclzd VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VCLZH, 0xfc0007ff00000000, 0x1000074200000000, 0x1f000000000000, // Vector Count Leading Zeros Halfword VX-form (vclzh VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VCLZW, 0xfc0007ff00000000, 0x1000078200000000, 0x1f000000000000, // Vector Count Leading Zeros Word VX-form (vclzw VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VCMPEQUD, 0xfc0007ff00000000, 0x100000c700000000, 0x0, // Vector Compare Equal Unsigned Doubleword VC-form (vcmpequd VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPEQUDCC, 0xfc0007ff00000000, 0x100004c700000000, 0x0, // Vector Compare Equal Unsigned Doubleword VC-form (vcmpequd. VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPGTSD, 0xfc0007ff00000000, 0x100003c700000000, 0x0, // Vector Compare Greater Than Signed Doubleword VC-form (vcmpgtsd VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPGTSDCC, 0xfc0007ff00000000, 0x100007c700000000, 0x0, // Vector Compare Greater Than Signed Doubleword VC-form (vcmpgtsd. VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPGTUD, 0xfc0007ff00000000, 0x100002c700000000, 0x0, // Vector Compare Greater Than Unsigned Doubleword VC-form (vcmpgtud VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPGTUDCC, 0xfc0007ff00000000, 0x100006c700000000, 0x0, // Vector Compare Greater Than Unsigned Doubleword VC-form (vcmpgtud. VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VEQV, 0xfc0007ff00000000, 0x1000068400000000, 0x0, // Vector Logical Equivalence VX-form (veqv VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VGBBD, 0xfc0007ff00000000, 0x1000050c00000000, 0x1f000000000000, // Vector Gather Bits by Bytes by Doubleword VX-form (vgbbd VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VMAXSD, 0xfc0007ff00000000, 0x100001c200000000, 0x0, // Vector Maximum Signed Doubleword VX-form (vmaxsd VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMAXUD, 0xfc0007ff00000000, 0x100000c200000000, 0x0, // Vector Maximum Unsigned Doubleword VX-form (vmaxud VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMINSD, 0xfc0007ff00000000, 0x100003c200000000, 0x0, // Vector Minimum Signed Doubleword VX-form (vminsd VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMINUD, 0xfc0007ff00000000, 0x100002c200000000, 0x0, // Vector Minimum Unsigned Doubleword VX-form (vminud VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMRGEW, 0xfc0007ff00000000, 0x1000078c00000000, 0x0, // Vector Merge Even Word VX-form (vmrgew VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMRGOW, 0xfc0007ff00000000, 0x1000068c00000000, 0x0, // Vector Merge Odd Word VX-form (vmrgow VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMULESW, 0xfc0007ff00000000, 0x1000038800000000, 0x0, // Vector Multiply Even Signed Word VX-form (vmulesw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMULEUW, 0xfc0007ff00000000, 0x1000028800000000, 0x0, // Vector Multiply Even Unsigned Word VX-form (vmuleuw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMULOSW, 0xfc0007ff00000000, 0x1000018800000000, 0x0, // Vector Multiply Odd Signed Word VX-form (vmulosw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMULOUW, 0xfc0007ff00000000, 0x1000008800000000, 0x0, // Vector Multiply Odd Unsigned Word VX-form (vmulouw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMULUWM, 0xfc0007ff00000000, 0x1000008900000000, 0x0, // Vector Multiply Unsigned Word Modulo VX-form (vmuluwm VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VNAND, 0xfc0007ff00000000, 0x1000058400000000, 0x0, // Vector Logical NAND VX-form (vnand VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VNCIPHER, 0xfc0007ff00000000, 0x1000054800000000, 0x0, // Vector AES Inverse Cipher VX-form (vncipher VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VNCIPHERLAST, 0xfc0007ff00000000, 0x1000054900000000, 0x0, // Vector AES Inverse Cipher Last VX-form (vncipherlast VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VORC, 0xfc0007ff00000000, 0x1000054400000000, 0x0, // Vector Logical OR with Complement VX-form (vorc VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VPERMXOR, 0xfc00003f00000000, 0x1000002d00000000, 0x0, // Vector Permute & Exclusive-OR VA-form (vpermxor VRT,VRA,VRB,VRC) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, + {VPKSDSS, 0xfc0007ff00000000, 0x100005ce00000000, 0x0, // Vector Pack Signed Doubleword Signed Saturate VX-form (vpksdss VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VPKSDUS, 0xfc0007ff00000000, 0x1000054e00000000, 0x0, // Vector Pack Signed Doubleword Unsigned Saturate VX-form (vpksdus VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VPKUDUM, 0xfc0007ff00000000, 0x1000044e00000000, 0x0, // Vector Pack Unsigned Doubleword Unsigned Modulo VX-form (vpkudum VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VPKUDUS, 0xfc0007ff00000000, 0x100004ce00000000, 0x0, // Vector Pack Unsigned Doubleword Unsigned Saturate VX-form (vpkudus VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VPMSUMB, 0xfc0007ff00000000, 0x1000040800000000, 0x0, // Vector Polynomial Multiply-Sum Byte VX-form (vpmsumb VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VPMSUMD, 0xfc0007ff00000000, 0x100004c800000000, 0x0, // Vector Polynomial Multiply-Sum Doubleword VX-form (vpmsumd VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VPMSUMH, 0xfc0007ff00000000, 0x1000044800000000, 0x0, // Vector Polynomial Multiply-Sum Halfword VX-form (vpmsumh VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VPMSUMW, 0xfc0007ff00000000, 0x1000048800000000, 0x0, // Vector Polynomial Multiply-Sum Word VX-form (vpmsumw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VPOPCNTB, 0xfc0007ff00000000, 0x1000070300000000, 0x1f000000000000, // Vector Population Count Byte VX-form (vpopcntb VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VPOPCNTD, 0xfc0007ff00000000, 0x100007c300000000, 0x1f000000000000, // Vector Population Count Doubleword VX-form (vpopcntd VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VPOPCNTH, 0xfc0007ff00000000, 0x1000074300000000, 0x1f000000000000, // Vector Population Count Halfword VX-form (vpopcnth VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VPOPCNTW, 0xfc0007ff00000000, 0x1000078300000000, 0x1f000000000000, // Vector Population Count Word VX-form (vpopcntw VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VRLD, 0xfc0007ff00000000, 0x100000c400000000, 0x0, // Vector Rotate Left Doubleword VX-form (vrld VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSBOX, 0xfc0007ff00000000, 0x100005c800000000, 0xf80000000000, // Vector AES SubBytes VX-form (vsbox VRT,VRA) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15}}, + {VSHASIGMAD, 0xfc0007ff00000000, 0x100006c200000000, 0x0, // Vector SHA-512 Sigma Doubleword VX-form (vshasigmad VRT,VRA,ST,SIX) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_ImmUnsigned_16_16, ap_ImmUnsigned_17_20}}, + {VSHASIGMAW, 0xfc0007ff00000000, 0x1000068200000000, 0x0, // Vector SHA-256 Sigma Word VX-form (vshasigmaw VRT,VRA,ST,SIX) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_ImmUnsigned_16_16, ap_ImmUnsigned_17_20}}, + {VSLD, 0xfc0007ff00000000, 0x100005c400000000, 0x0, // Vector Shift Left Doubleword VX-form (vsld VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSRAD, 0xfc0007ff00000000, 0x100003c400000000, 0x0, // Vector Shift Right Algebraic Doubleword VX-form (vsrad VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSRD, 0xfc0007ff00000000, 0x100006c400000000, 0x0, // Vector Shift Right Doubleword VX-form (vsrd VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSUBCUQ, 0xfc0007ff00000000, 0x1000054000000000, 0x0, // Vector Subtract & write Carry-out Unsigned Quadword VX-form (vsubcuq VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSUBECUQ, 0xfc00003f00000000, 0x1000003f00000000, 0x0, // Vector Subtract Extended & write Carry-out Unsigned Quadword VA-form (vsubecuq VRT,VRA,VRB,VRC) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, + {VSUBEUQM, 0xfc00003f00000000, 0x1000003e00000000, 0x0, // Vector Subtract Extended Unsigned Quadword Modulo VA-form (vsubeuqm VRT,VRA,VRB,VRC) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, + {VSUBUDM, 0xfc0007ff00000000, 0x100004c000000000, 0x0, // Vector Subtract Unsigned Doubleword Modulo VX-form (vsubudm VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSUBUQM, 0xfc0007ff00000000, 0x1000050000000000, 0x0, // Vector Subtract Unsigned Quadword Modulo VX-form (vsubuqm VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VUPKHSW, 0xfc0007ff00000000, 0x1000064e00000000, 0x1f000000000000, // Vector Unpack High Signed Word VX-form (vupkhsw VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VUPKLSW, 0xfc0007ff00000000, 0x100006ce00000000, 0x1f000000000000, // Vector Unpack Low Signed Word VX-form (vupklsw VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {XSADDSP, 0xfc0007f800000000, 0xf000000000000000, 0x0, // VSX Scalar Add Single-Precision XX3-form (xsaddsp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSCVDPSPN, 0xfc0007fc00000000, 0xf000042c00000000, 0x1f000000000000, // VSX Scalar Convert Scalar Single-Precision to Vector Single-Precision format Non-signalling XX2-form (xscvdpspn XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XSCVSPDPN, 0xfc0007fc00000000, 0xf000052c00000000, 0x1f000000000000, // VSX Scalar Convert Single-Precision to Double-Precision format Non-signalling XX2-form (xscvspdpn XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XSCVSXDSP, 0xfc0007fc00000000, 0xf00004e000000000, 0x1f000000000000, // VSX Scalar Convert with round Signed Doubleword to Single-Precision format XX2-form (xscvsxdsp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XSCVUXDSP, 0xfc0007fc00000000, 0xf00004a000000000, 0x1f000000000000, // VSX Scalar Convert with round Unsigned Doubleword to Single-Precision XX2-form (xscvuxdsp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XSDIVSP, 0xfc0007f800000000, 0xf00000c000000000, 0x0, // VSX Scalar Divide Single-Precision XX3-form (xsdivsp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSMADDASP, 0xfc0007f800000000, 0xf000000800000000, 0x0, // VSX Scalar Multiply-Add Type-A Single-Precision XX3-form (xsmaddasp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSMADDMSP, 0xfc0007f800000000, 0xf000004800000000, 0x0, // VSX Scalar Multiply-Add Type-M Single-Precision XX3-form (xsmaddmsp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSMSUBASP, 0xfc0007f800000000, 0xf000008800000000, 0x0, // VSX Scalar Multiply-Subtract Type-A Single-Precision XX3-form (xsmsubasp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSMSUBMSP, 0xfc0007f800000000, 0xf00000c800000000, 0x0, // VSX Scalar Multiply-Subtract Type-M Single-Precision XX3-form (xsmsubmsp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSMULSP, 0xfc0007f800000000, 0xf000008000000000, 0x0, // VSX Scalar Multiply Single-Precision XX3-form (xsmulsp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSNMADDASP, 0xfc0007f800000000, 0xf000040800000000, 0x0, // VSX Scalar Negative Multiply-Add Type-A Single-Precision XX3-form (xsnmaddasp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSNMADDMSP, 0xfc0007f800000000, 0xf000044800000000, 0x0, // VSX Scalar Negative Multiply-Add Type-M Single-Precision XX3-form (xsnmaddmsp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSNMSUBASP, 0xfc0007f800000000, 0xf000048800000000, 0x0, // VSX Scalar Negative Multiply-Subtract Type-A Single-Precision XX3-form (xsnmsubasp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSNMSUBMSP, 0xfc0007f800000000, 0xf00004c800000000, 0x0, // VSX Scalar Negative Multiply-Subtract Type-M Single-Precision XX3-form (xsnmsubmsp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSRESP, 0xfc0007fc00000000, 0xf000006800000000, 0x1f000000000000, // VSX Scalar Reciprocal Estimate Single-Precision XX2-form (xsresp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XSRSP, 0xfc0007fc00000000, 0xf000046400000000, 0x1f000000000000, // VSX Scalar Round to Single-Precision XX2-form (xsrsp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XSRSQRTESP, 0xfc0007fc00000000, 0xf000002800000000, 0x1f000000000000, // VSX Scalar Reciprocal Square Root Estimate Single-Precision XX2-form (xsrsqrtesp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XSSQRTSP, 0xfc0007fc00000000, 0xf000002c00000000, 0x1f000000000000, // VSX Scalar Square Root Single-Precision XX2-form (xssqrtsp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XSSUBSP, 0xfc0007f800000000, 0xf000004000000000, 0x0, // VSX Scalar Subtract Single-Precision XX3-form (xssubsp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XXLEQV, 0xfc0007f800000000, 0xf00005d000000000, 0x0, // VSX Vector Logical Equivalence XX3-form (xxleqv XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XXLNAND, 0xfc0007f800000000, 0xf000059000000000, 0x0, // VSX Vector Logical NAND XX3-form (xxlnand XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XXLORC, 0xfc0007f800000000, 0xf000055000000000, 0x0, // VSX Vector Logical OR with Complement XX3-form (xxlorc XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {ADDG6S, 0xfc0003fe00000000, 0x7c00009400000000, 0x40100000000, // Add and Generate Sixes XO-form (addg6s RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {BPERMD, 0xfc0007fe00000000, 0x7c0001f800000000, 0x100000000, // Bit Permute Doubleword X-form (bpermd RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {CBCDTD, 0xfc0007fe00000000, 0x7c00027400000000, 0xf80100000000, // Convert Binary Coded Decimal To Declets X-form (cbcdtd RA, RS) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10}}, + {CDTBCD, 0xfc0007fe00000000, 0x7c00023400000000, 0xf80100000000, // Convert Declets To Binary Coded Decimal X-form (cdtbcd RA, RS) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10}}, + {DCFFIX, 0xfc0007ff00000000, 0xec00064400000000, 0x1f000000000000, // DFP Convert From Fixed X-form (dcffix FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {DCFFIXCC, 0xfc0007ff00000000, 0xec00064500000000, 0x1f000000000000, // DFP Convert From Fixed X-form (dcffix. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {DIVDE, 0xfc0007ff00000000, 0x7c00035200000000, 0x0, // Divide Doubleword Extended XO-form (divde RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {DIVDECC, 0xfc0007ff00000000, 0x7c00035300000000, 0x0, // Divide Doubleword Extended XO-form (divde. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {DIVDEO, 0xfc0007ff00000000, 0x7c00075200000000, 0x0, // Divide Doubleword Extended XO-form (divdeo RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {DIVDEOCC, 0xfc0007ff00000000, 0x7c00075300000000, 0x0, // Divide Doubleword Extended XO-form (divdeo. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {DIVDEU, 0xfc0007ff00000000, 0x7c00031200000000, 0x0, // Divide Doubleword Extended Unsigned XO-form (divdeu RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {DIVDEUCC, 0xfc0007ff00000000, 0x7c00031300000000, 0x0, // Divide Doubleword Extended Unsigned XO-form (divdeu. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {DIVDEUO, 0xfc0007ff00000000, 0x7c00071200000000, 0x0, // Divide Doubleword Extended Unsigned XO-form (divdeuo RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {DIVDEUOCC, 0xfc0007ff00000000, 0x7c00071300000000, 0x0, // Divide Doubleword Extended Unsigned XO-form (divdeuo. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {DIVWE, 0xfc0007ff00000000, 0x7c00035600000000, 0x0, // Divide Word Extended XO-form (divwe RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {DIVWECC, 0xfc0007ff00000000, 0x7c00035700000000, 0x0, // Divide Word Extended XO-form (divwe. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {DIVWEO, 0xfc0007ff00000000, 0x7c00075600000000, 0x0, // Divide Word Extended XO-form (divweo RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {DIVWEOCC, 0xfc0007ff00000000, 0x7c00075700000000, 0x0, // Divide Word Extended XO-form (divweo. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {DIVWEU, 0xfc0007ff00000000, 0x7c00031600000000, 0x0, // Divide Word Extended Unsigned XO-form (divweu RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {DIVWEUCC, 0xfc0007ff00000000, 0x7c00031700000000, 0x0, // Divide Word Extended Unsigned XO-form (divweu. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {DIVWEUO, 0xfc0007ff00000000, 0x7c00071600000000, 0x0, // Divide Word Extended Unsigned XO-form (divweuo RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {DIVWEUOCC, 0xfc0007ff00000000, 0x7c00071700000000, 0x0, // Divide Word Extended Unsigned XO-form (divweuo. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {FCFIDS, 0xfc0007ff00000000, 0xec00069c00000000, 0x1f000000000000, // Floating Convert with round Signed Doubleword to Single-Precision format X-form (fcfids FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FCFIDSCC, 0xfc0007ff00000000, 0xec00069d00000000, 0x1f000000000000, // Floating Convert with round Signed Doubleword to Single-Precision format X-form (fcfids. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FCFIDU, 0xfc0007ff00000000, 0xfc00079c00000000, 0x1f000000000000, // Floating Convert with round Unsigned Doubleword to Double-Precision format X-form (fcfidu FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FCFIDUCC, 0xfc0007ff00000000, 0xfc00079d00000000, 0x1f000000000000, // Floating Convert with round Unsigned Doubleword to Double-Precision format X-form (fcfidu. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FCFIDUS, 0xfc0007ff00000000, 0xec00079c00000000, 0x1f000000000000, // Floating Convert with round Unsigned Doubleword to Single-Precision format X-form (fcfidus FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FCFIDUSCC, 0xfc0007ff00000000, 0xec00079d00000000, 0x1f000000000000, // Floating Convert with round Unsigned Doubleword to Single-Precision format X-form (fcfidus. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FCTIDU, 0xfc0007ff00000000, 0xfc00075c00000000, 0x1f000000000000, // Floating Convert with round Double-Precision To Unsigned Doubleword format X-form (fctidu FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FCTIDUCC, 0xfc0007ff00000000, 0xfc00075d00000000, 0x1f000000000000, // Floating Convert with round Double-Precision To Unsigned Doubleword format X-form (fctidu. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FCTIDUZ, 0xfc0007ff00000000, 0xfc00075e00000000, 0x1f000000000000, // Floating Convert with truncate Double-Precision To Unsigned Doubleword format X-form (fctiduz FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FCTIDUZCC, 0xfc0007ff00000000, 0xfc00075f00000000, 0x1f000000000000, // Floating Convert with truncate Double-Precision To Unsigned Doubleword format X-form (fctiduz. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FCTIWU, 0xfc0007ff00000000, 0xfc00011c00000000, 0x1f000000000000, // Floating Convert with round Double-Precision To Unsigned Word format X-form (fctiwu FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FCTIWUCC, 0xfc0007ff00000000, 0xfc00011d00000000, 0x1f000000000000, // Floating Convert with round Double-Precision To Unsigned Word format X-form (fctiwu. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FCTIWUZ, 0xfc0007ff00000000, 0xfc00011e00000000, 0x1f000000000000, // Floating Convert with truncate Double-Precision To Unsigned Word format X-form (fctiwuz FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FCTIWUZCC, 0xfc0007ff00000000, 0xfc00011f00000000, 0x1f000000000000, // Floating Convert with truncate Double-Precision To Unsigned Word format X-form (fctiwuz. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FTDIV, 0xfc0007fe00000000, 0xfc00010000000000, 0x60000100000000, // Floating Test for software Divide X-form (ftdiv BF,FRA,FRB) + [6]*argField{ap_CondRegField_6_8, ap_FPReg_11_15, ap_FPReg_16_20}}, + {FTSQRT, 0xfc0007fe00000000, 0xfc00014000000000, 0x7f000100000000, // Floating Test for software Square Root X-form (ftsqrt BF,FRB) + [6]*argField{ap_CondRegField_6_8, ap_FPReg_16_20}}, + {LBARX, 0xfc0007fe00000000, 0x7c00006800000000, 0x0, // Load Byte And Reserve Indexed X-form (lbarx RT,RA,RB,EH) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20, ap_ImmUnsigned_31_31}}, + {LDBRX, 0xfc0007fe00000000, 0x7c00042800000000, 0x100000000, // Load Doubleword Byte-Reverse Indexed X-form (ldbrx RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LFIWZX, 0xfc0007fe00000000, 0x7c0006ee00000000, 0x100000000, // Load Floating-Point as Integer Word & Zero Indexed X-form (lfiwzx FRT,RA,RB) + [6]*argField{ap_FPReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LHARX, 0xfc0007fe00000000, 0x7c0000e800000000, 0x0, // Load Halfword And Reserve Indexed Xform (lharx RT,RA,RB,EH) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20, ap_ImmUnsigned_31_31}}, + {LXSDX, 0xfc0007fe00000000, 0x7c00049800000000, 0x0, // Load VSX Scalar Doubleword Indexed X-form (lxsdx XT,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LXVD2X, 0xfc0007fe00000000, 0x7c00069800000000, 0x0, // Load VSX Vector Doubleword*2 Indexed X-form (lxvd2x XT,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LXVDSX, 0xfc0007fe00000000, 0x7c00029800000000, 0x0, // Load VSX Vector Doubleword & Splat Indexed X-form (lxvdsx XT,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LXVW4X, 0xfc0007fe00000000, 0x7c00061800000000, 0x0, // Load VSX Vector Word*4 Indexed X-form (lxvw4x XT,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {POPCNTD, 0xfc0007fe00000000, 0x7c0003f400000000, 0xf80100000000, // Population Count Doubleword X-form (popcntd RA, RS) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10}}, + {POPCNTW, 0xfc0007fe00000000, 0x7c0002f400000000, 0xf80100000000, // Population Count Words X-form (popcntw RA, RS) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10}}, + {STBCXCC, 0xfc0007ff00000000, 0x7c00056d00000000, 0x0, // Store Byte Conditional Indexed X-form (stbcx. RS,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STDBRX, 0xfc0007fe00000000, 0x7c00052800000000, 0x100000000, // Store Doubleword Byte-Reverse Indexed X-form (stdbrx RS,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STHCXCC, 0xfc0007ff00000000, 0x7c0005ad00000000, 0x0, // Store Halfword Conditional Indexed X-form (sthcx. RS,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STXSDX, 0xfc0007fe00000000, 0x7c00059800000000, 0x0, // Store VSX Scalar Doubleword Indexed X-form (stxsdx XS,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STXVD2X, 0xfc0007fe00000000, 0x7c00079800000000, 0x0, // Store VSX Vector Doubleword*2 Indexed X-form (stxvd2x XS,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STXVW4X, 0xfc0007fe00000000, 0x7c00071800000000, 0x0, // Store VSX Vector Word*4 Indexed X-form (stxvw4x XS,RA,RB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {XSABSDP, 0xfc0007fc00000000, 0xf000056400000000, 0x1f000000000000, // VSX Scalar Absolute Double-Precision XX2-form (xsabsdp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XSADDDP, 0xfc0007f800000000, 0xf000010000000000, 0x0, // VSX Scalar Add Double-Precision XX3-form (xsadddp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSCMPODP, 0xfc0007f800000000, 0xf000015800000000, 0x60000100000000, // VSX Scalar Compare Ordered Double-Precision XX3-form (xscmpodp BF,XA,XB) + [6]*argField{ap_CondRegField_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSCMPUDP, 0xfc0007f800000000, 0xf000011800000000, 0x60000100000000, // VSX Scalar Compare Unordered Double-Precision XX3-form (xscmpudp BF,XA,XB) + [6]*argField{ap_CondRegField_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSCPSGNDP, 0xfc0007f800000000, 0xf000058000000000, 0x0, // VSX Scalar Copy Sign Double-Precision XX3-form (xscpsgndp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSCVDPSP, 0xfc0007fc00000000, 0xf000042400000000, 0x1f000000000000, // VSX Scalar Convert with round Double-Precision to Single-Precision format XX2-form (xscvdpsp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XSCVDPSXDS, 0xfc0007fc00000000, 0xf000056000000000, 0x1f000000000000, // VSX Scalar Convert with round to zero Double-Precision to Signed Doubleword format XX2-form (xscvdpsxds XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XSCVDPSXWS, 0xfc0007fc00000000, 0xf000016000000000, 0x1f000000000000, // VSX Scalar Convert with round to zero Double-Precision to Signed Word format XX2-form (xscvdpsxws XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XSCVDPUXDS, 0xfc0007fc00000000, 0xf000052000000000, 0x1f000000000000, // VSX Scalar Convert with round to zero Double-Precision to Unsigned Doubleword format XX2-form (xscvdpuxds XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XSCVDPUXWS, 0xfc0007fc00000000, 0xf000012000000000, 0x1f000000000000, // VSX Scalar Convert with round to zero Double-Precision to Unsigned Word format XX2-form (xscvdpuxws XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XSCVSPDP, 0xfc0007fc00000000, 0xf000052400000000, 0x1f000000000000, // VSX Scalar Convert Single-Precision to Double-Precision format XX2-form (xscvspdp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XSCVSXDDP, 0xfc0007fc00000000, 0xf00005e000000000, 0x1f000000000000, // VSX Scalar Convert with round Signed Doubleword to Double-Precision format XX2-form (xscvsxddp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XSCVUXDDP, 0xfc0007fc00000000, 0xf00005a000000000, 0x1f000000000000, // VSX Scalar Convert with round Unsigned Doubleword to Double-Precision format XX2-form (xscvuxddp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XSDIVDP, 0xfc0007f800000000, 0xf00001c000000000, 0x0, // VSX Scalar Divide Double-Precision XX3-form (xsdivdp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSMADDADP, 0xfc0007f800000000, 0xf000010800000000, 0x0, // VSX Scalar Multiply-Add Type-A Double-Precision XX3-form (xsmaddadp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSMADDMDP, 0xfc0007f800000000, 0xf000014800000000, 0x0, // VSX Scalar Multiply-Add Type-M Double-Precision XX3-form (xsmaddmdp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSMAXDP, 0xfc0007f800000000, 0xf000050000000000, 0x0, // VSX Scalar Maximum Double-Precision XX3-form (xsmaxdp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSMINDP, 0xfc0007f800000000, 0xf000054000000000, 0x0, // VSX Scalar Minimum Double-Precision XX3-form (xsmindp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSMSUBADP, 0xfc0007f800000000, 0xf000018800000000, 0x0, // VSX Scalar Multiply-Subtract Type-A Double-Precision XX3-form (xsmsubadp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSMSUBMDP, 0xfc0007f800000000, 0xf00001c800000000, 0x0, // VSX Scalar Multiply-Subtract Type-M Double-Precision XX3-form (xsmsubmdp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSMULDP, 0xfc0007f800000000, 0xf000018000000000, 0x0, // VSX Scalar Multiply Double-Precision XX3-form (xsmuldp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSNABSDP, 0xfc0007fc00000000, 0xf00005a400000000, 0x1f000000000000, // VSX Scalar Negative Absolute Double-Precision XX2-form (xsnabsdp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XSNEGDP, 0xfc0007fc00000000, 0xf00005e400000000, 0x1f000000000000, // VSX Scalar Negate Double-Precision XX2-form (xsnegdp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XSNMADDADP, 0xfc0007f800000000, 0xf000050800000000, 0x0, // VSX Scalar Negative Multiply-Add Type-A Double-Precision XX3-form (xsnmaddadp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSNMADDMDP, 0xfc0007f800000000, 0xf000054800000000, 0x0, // VSX Scalar Negative Multiply-Add Type-M Double-Precision XX3-form (xsnmaddmdp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSNMSUBADP, 0xfc0007f800000000, 0xf000058800000000, 0x0, // VSX Scalar Negative Multiply-Subtract Type-A Double-Precision XX3-form (xsnmsubadp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSNMSUBMDP, 0xfc0007f800000000, 0xf00005c800000000, 0x0, // VSX Scalar Negative Multiply-Subtract Type-M Double-Precision XX3-form (xsnmsubmdp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSRDPI, 0xfc0007fc00000000, 0xf000012400000000, 0x1f000000000000, // VSX Scalar Round to Double-Precision Integer using round to Nearest Away XX2-form (xsrdpi XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XSRDPIC, 0xfc0007fc00000000, 0xf00001ac00000000, 0x1f000000000000, // VSX Scalar Round to Double-Precision Integer exact using Current rounding mode XX2-form (xsrdpic XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XSRDPIM, 0xfc0007fc00000000, 0xf00001e400000000, 0x1f000000000000, // VSX Scalar Round to Double-Precision Integer using round toward -Infinity XX2-form (xsrdpim XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XSRDPIP, 0xfc0007fc00000000, 0xf00001a400000000, 0x1f000000000000, // VSX Scalar Round to Double-Precision Integer using round toward +Infinity XX2-form (xsrdpip XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XSRDPIZ, 0xfc0007fc00000000, 0xf000016400000000, 0x1f000000000000, // VSX Scalar Round to Double-Precision Integer using round toward Zero XX2-form (xsrdpiz XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XSREDP, 0xfc0007fc00000000, 0xf000016800000000, 0x1f000000000000, // VSX Scalar Reciprocal Estimate Double-Precision XX2-form (xsredp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XSRSQRTEDP, 0xfc0007fc00000000, 0xf000012800000000, 0x1f000000000000, // VSX Scalar Reciprocal Square Root Estimate Double-Precision XX2-form (xsrsqrtedp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XSSQRTDP, 0xfc0007fc00000000, 0xf000012c00000000, 0x1f000000000000, // VSX Scalar Square Root Double-Precision XX2-form (xssqrtdp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XSSUBDP, 0xfc0007f800000000, 0xf000014000000000, 0x0, // VSX Scalar Subtract Double-Precision XX3-form (xssubdp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSTDIVDP, 0xfc0007f800000000, 0xf00001e800000000, 0x60000100000000, // VSX Scalar Test for software Divide Double-Precision XX3-form (xstdivdp BF,XA,XB) + [6]*argField{ap_CondRegField_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XSTSQRTDP, 0xfc0007fc00000000, 0xf00001a800000000, 0x7f000100000000, // VSX Scalar Test for software Square Root Double-Precision XX2-form (xstsqrtdp BF,XB) + [6]*argField{ap_CondRegField_6_8, ap_VecSReg_30_30_16_20}}, + {XVABSDP, 0xfc0007fc00000000, 0xf000076400000000, 0x1f000000000000, // VSX Vector Absolute Value Double-Precision XX2-form (xvabsdp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVABSSP, 0xfc0007fc00000000, 0xf000066400000000, 0x1f000000000000, // VSX Vector Absolute Value Single-Precision XX2-form (xvabssp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVADDDP, 0xfc0007f800000000, 0xf000030000000000, 0x0, // VSX Vector Add Double-Precision XX3-form (xvadddp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVADDSP, 0xfc0007f800000000, 0xf000020000000000, 0x0, // VSX Vector Add Single-Precision XX3-form (xvaddsp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVCMPEQDP, 0xfc0007f800000000, 0xf000031800000000, 0x0, // VSX Vector Compare Equal To Double-Precision XX3-form (xvcmpeqdp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVCMPEQDPCC, 0xfc0007f800000000, 0xf000071800000000, 0x0, // VSX Vector Compare Equal To Double-Precision XX3-form (xvcmpeqdp. XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVCMPEQSP, 0xfc0007f800000000, 0xf000021800000000, 0x0, // VSX Vector Compare Equal To Single-Precision XX3-form (xvcmpeqsp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVCMPEQSPCC, 0xfc0007f800000000, 0xf000061800000000, 0x0, // VSX Vector Compare Equal To Single-Precision XX3-form (xvcmpeqsp. XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVCMPGEDP, 0xfc0007f800000000, 0xf000039800000000, 0x0, // VSX Vector Compare Greater Than or Equal To Double-Precision XX3-form (xvcmpgedp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVCMPGEDPCC, 0xfc0007f800000000, 0xf000079800000000, 0x0, // VSX Vector Compare Greater Than or Equal To Double-Precision XX3-form (xvcmpgedp. XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVCMPGESP, 0xfc0007f800000000, 0xf000029800000000, 0x0, // VSX Vector Compare Greater Than or Equal To Single-Precision XX3-form (xvcmpgesp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVCMPGESPCC, 0xfc0007f800000000, 0xf000069800000000, 0x0, // VSX Vector Compare Greater Than or Equal To Single-Precision XX3-form (xvcmpgesp. XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVCMPGTDP, 0xfc0007f800000000, 0xf000035800000000, 0x0, // VSX Vector Compare Greater Than Double-Precision XX3-form (xvcmpgtdp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVCMPGTDPCC, 0xfc0007f800000000, 0xf000075800000000, 0x0, // VSX Vector Compare Greater Than Double-Precision XX3-form (xvcmpgtdp. XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVCMPGTSP, 0xfc0007f800000000, 0xf000025800000000, 0x0, // VSX Vector Compare Greater Than Single-Precision XX3-form (xvcmpgtsp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVCMPGTSPCC, 0xfc0007f800000000, 0xf000065800000000, 0x0, // VSX Vector Compare Greater Than Single-Precision XX3-form (xvcmpgtsp. XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVCPSGNDP, 0xfc0007f800000000, 0xf000078000000000, 0x0, // VSX Vector Copy Sign Double-Precision XX3-form (xvcpsgndp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVCPSGNSP, 0xfc0007f800000000, 0xf000068000000000, 0x0, // VSX Vector Copy Sign Single-Precision XX3-form (xvcpsgnsp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVCVDPSP, 0xfc0007fc00000000, 0xf000062400000000, 0x1f000000000000, // VSX Vector Convert with round Double-Precision to Single-Precision format XX2-form (xvcvdpsp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVCVDPSXDS, 0xfc0007fc00000000, 0xf000076000000000, 0x1f000000000000, // VSX Vector Convert with round to zero Double-Precision to Signed Doubleword format XX2-form (xvcvdpsxds XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVCVDPSXWS, 0xfc0007fc00000000, 0xf000036000000000, 0x1f000000000000, // VSX Vector Convert with round to zero Double-Precision to Signed Word format XX2-form (xvcvdpsxws XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVCVDPUXDS, 0xfc0007fc00000000, 0xf000072000000000, 0x1f000000000000, // VSX Vector Convert with round to zero Double-Precision to Unsigned Doubleword format XX2-form (xvcvdpuxds XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVCVDPUXWS, 0xfc0007fc00000000, 0xf000032000000000, 0x1f000000000000, // VSX Vector Convert with round to zero Double-Precision to Unsigned Word format XX2-form (xvcvdpuxws XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVCVSPDP, 0xfc0007fc00000000, 0xf000072400000000, 0x1f000000000000, // VSX Vector Convert Single-Precision to Double-Precision format XX2-form (xvcvspdp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVCVSPSXDS, 0xfc0007fc00000000, 0xf000066000000000, 0x1f000000000000, // VSX Vector Convert with round to zero Single-Precision to Signed Doubleword format XX2-form (xvcvspsxds XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVCVSPSXWS, 0xfc0007fc00000000, 0xf000026000000000, 0x1f000000000000, // VSX Vector Convert with round to zero Single-Precision to Signed Word format XX2-form (xvcvspsxws XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVCVSPUXDS, 0xfc0007fc00000000, 0xf000062000000000, 0x1f000000000000, // VSX Vector Convert with round to zero Single-Precision to Unsigned Doubleword format XX2-form (xvcvspuxds XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVCVSPUXWS, 0xfc0007fc00000000, 0xf000022000000000, 0x1f000000000000, // VSX Vector Convert with round to zero Single-Precision to Unsigned Word format XX2-form (xvcvspuxws XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVCVSXDDP, 0xfc0007fc00000000, 0xf00007e000000000, 0x1f000000000000, // VSX Vector Convert with round Signed Doubleword to Double-Precision format XX2-form (xvcvsxddp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVCVSXDSP, 0xfc0007fc00000000, 0xf00006e000000000, 0x1f000000000000, // VSX Vector Convert with round Signed Doubleword to Single-Precision format XX2-form (xvcvsxdsp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVCVSXWDP, 0xfc0007fc00000000, 0xf00003e000000000, 0x1f000000000000, // VSX Vector Convert Signed Word to Double-Precision format XX2-form (xvcvsxwdp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVCVSXWSP, 0xfc0007fc00000000, 0xf00002e000000000, 0x1f000000000000, // VSX Vector Convert with round Signed Word to Single-Precision format XX2-form (xvcvsxwsp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVCVUXDDP, 0xfc0007fc00000000, 0xf00007a000000000, 0x1f000000000000, // VSX Vector Convert with round Unsigned Doubleword to Double-Precision format XX2-form (xvcvuxddp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVCVUXDSP, 0xfc0007fc00000000, 0xf00006a000000000, 0x1f000000000000, // VSX Vector Convert with round Unsigned Doubleword to Single-Precision format XX2-form (xvcvuxdsp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVCVUXWDP, 0xfc0007fc00000000, 0xf00003a000000000, 0x1f000000000000, // VSX Vector Convert Unsigned Word to Double-Precision format XX2-form (xvcvuxwdp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVCVUXWSP, 0xfc0007fc00000000, 0xf00002a000000000, 0x1f000000000000, // VSX Vector Convert with round Unsigned Word to Single-Precision format XX2-form (xvcvuxwsp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVDIVDP, 0xfc0007f800000000, 0xf00003c000000000, 0x0, // VSX Vector Divide Double-Precision XX3-form (xvdivdp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVDIVSP, 0xfc0007f800000000, 0xf00002c000000000, 0x0, // VSX Vector Divide Single-Precision XX3-form (xvdivsp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVMADDADP, 0xfc0007f800000000, 0xf000030800000000, 0x0, // VSX Vector Multiply-Add Type-A Double-Precision XX3-form (xvmaddadp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVMADDASP, 0xfc0007f800000000, 0xf000020800000000, 0x0, // VSX Vector Multiply-Add Type-A Single-Precision XX3-form (xvmaddasp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVMADDMDP, 0xfc0007f800000000, 0xf000034800000000, 0x0, // VSX Vector Multiply-Add Type-M Double-Precision XX3-form (xvmaddmdp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVMADDMSP, 0xfc0007f800000000, 0xf000024800000000, 0x0, // VSX Vector Multiply-Add Type-M Single-Precision XX3-form (xvmaddmsp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVMAXDP, 0xfc0007f800000000, 0xf000070000000000, 0x0, // VSX Vector Maximum Double-Precision XX3-form (xvmaxdp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVMAXSP, 0xfc0007f800000000, 0xf000060000000000, 0x0, // VSX Vector Maximum Single-Precision XX3-form (xvmaxsp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVMINDP, 0xfc0007f800000000, 0xf000074000000000, 0x0, // VSX Vector Minimum Double-Precision XX3-form (xvmindp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVMINSP, 0xfc0007f800000000, 0xf000064000000000, 0x0, // VSX Vector Minimum Single-Precision XX3-form (xvminsp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVMSUBADP, 0xfc0007f800000000, 0xf000038800000000, 0x0, // VSX Vector Multiply-Subtract Type-A Double-Precision XX3-form (xvmsubadp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVMSUBASP, 0xfc0007f800000000, 0xf000028800000000, 0x0, // VSX Vector Multiply-Subtract Type-A Single-Precision XX3-form (xvmsubasp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVMSUBMDP, 0xfc0007f800000000, 0xf00003c800000000, 0x0, // VSX Vector Multiply-Subtract Type-M Double-Precision XX3-form (xvmsubmdp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVMSUBMSP, 0xfc0007f800000000, 0xf00002c800000000, 0x0, // VSX Vector Multiply-Subtract Type-M Single-Precision XX3-form (xvmsubmsp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVMULDP, 0xfc0007f800000000, 0xf000038000000000, 0x0, // VSX Vector Multiply Double-Precision XX3-form (xvmuldp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVMULSP, 0xfc0007f800000000, 0xf000028000000000, 0x0, // VSX Vector Multiply Single-Precision XX3-form (xvmulsp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVNABSDP, 0xfc0007fc00000000, 0xf00007a400000000, 0x1f000000000000, // VSX Vector Negative Absolute Double-Precision XX2-form (xvnabsdp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVNABSSP, 0xfc0007fc00000000, 0xf00006a400000000, 0x1f000000000000, // VSX Vector Negative Absolute Single-Precision XX2-form (xvnabssp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVNEGDP, 0xfc0007fc00000000, 0xf00007e400000000, 0x1f000000000000, // VSX Vector Negate Double-Precision XX2-form (xvnegdp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVNEGSP, 0xfc0007fc00000000, 0xf00006e400000000, 0x1f000000000000, // VSX Vector Negate Single-Precision XX2-form (xvnegsp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVNMADDADP, 0xfc0007f800000000, 0xf000070800000000, 0x0, // VSX Vector Negative Multiply-Add Type-A Double-Precision XX3-form (xvnmaddadp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVNMADDASP, 0xfc0007f800000000, 0xf000060800000000, 0x0, // VSX Vector Negative Multiply-Add Type-A Single-Precision XX3-form (xvnmaddasp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVNMADDMDP, 0xfc0007f800000000, 0xf000074800000000, 0x0, // VSX Vector Negative Multiply-Add Type-M Double-Precision XX3-form (xvnmaddmdp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVNMADDMSP, 0xfc0007f800000000, 0xf000064800000000, 0x0, // VSX Vector Negative Multiply-Add Type-M Single-Precision XX3-form (xvnmaddmsp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVNMSUBADP, 0xfc0007f800000000, 0xf000078800000000, 0x0, // VSX Vector Negative Multiply-Subtract Type-A Double-Precision XX3-form (xvnmsubadp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVNMSUBASP, 0xfc0007f800000000, 0xf000068800000000, 0x0, // VSX Vector Negative Multiply-Subtract Type-A Single-Precision XX3-form (xvnmsubasp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVNMSUBMDP, 0xfc0007f800000000, 0xf00007c800000000, 0x0, // VSX Vector Negative Multiply-Subtract Type-M Double-Precision XX3-form (xvnmsubmdp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVNMSUBMSP, 0xfc0007f800000000, 0xf00006c800000000, 0x0, // VSX Vector Negative Multiply-Subtract Type-M Single-Precision XX3-form (xvnmsubmsp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVRDPI, 0xfc0007fc00000000, 0xf000032400000000, 0x1f000000000000, // VSX Vector Round to Double-Precision Integer using round to Nearest Away XX2-form (xvrdpi XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVRDPIC, 0xfc0007fc00000000, 0xf00003ac00000000, 0x1f000000000000, // VSX Vector Round to Double-Precision Integer Exact using Current rounding mode XX2-form (xvrdpic XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVRDPIM, 0xfc0007fc00000000, 0xf00003e400000000, 0x1f000000000000, // VSX Vector Round to Double-Precision Integer using round toward -Infinity XX2-form (xvrdpim XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVRDPIP, 0xfc0007fc00000000, 0xf00003a400000000, 0x1f000000000000, // VSX Vector Round to Double-Precision Integer using round toward +Infinity XX2-form (xvrdpip XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVRDPIZ, 0xfc0007fc00000000, 0xf000036400000000, 0x1f000000000000, // VSX Vector Round to Double-Precision Integer using round toward Zero XX2-form (xvrdpiz XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVREDP, 0xfc0007fc00000000, 0xf000036800000000, 0x1f000000000000, // VSX Vector Reciprocal Estimate Double-Precision XX2-form (xvredp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVRESP, 0xfc0007fc00000000, 0xf000026800000000, 0x1f000000000000, // VSX Vector Reciprocal Estimate Single-Precision XX2-form (xvresp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVRSPI, 0xfc0007fc00000000, 0xf000022400000000, 0x1f000000000000, // VSX Vector Round to Single-Precision Integer using round to Nearest Away XX2-form (xvrspi XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVRSPIC, 0xfc0007fc00000000, 0xf00002ac00000000, 0x1f000000000000, // VSX Vector Round to Single-Precision Integer Exact using Current rounding mode XX2-form (xvrspic XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVRSPIM, 0xfc0007fc00000000, 0xf00002e400000000, 0x1f000000000000, // VSX Vector Round to Single-Precision Integer using round toward -Infinity XX2-form (xvrspim XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVRSPIP, 0xfc0007fc00000000, 0xf00002a400000000, 0x1f000000000000, // VSX Vector Round to Single-Precision Integer using round toward +Infinity XX2-form (xvrspip XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVRSPIZ, 0xfc0007fc00000000, 0xf000026400000000, 0x1f000000000000, // VSX Vector Round to Single-Precision Integer using round toward Zero XX2-form (xvrspiz XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVRSQRTEDP, 0xfc0007fc00000000, 0xf000032800000000, 0x1f000000000000, // VSX Vector Reciprocal Square Root Estimate Double-Precision XX2-form (xvrsqrtedp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVRSQRTESP, 0xfc0007fc00000000, 0xf000022800000000, 0x1f000000000000, // VSX Vector Reciprocal Square Root Estimate Single-Precision XX2-form (xvrsqrtesp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVSQRTDP, 0xfc0007fc00000000, 0xf000032c00000000, 0x1f000000000000, // VSX Vector Square Root Double-Precision XX2-form (xvsqrtdp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVSQRTSP, 0xfc0007fc00000000, 0xf000022c00000000, 0x1f000000000000, // VSX Vector Square Root Single-Precision XX2-form (xvsqrtsp XT,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20}}, + {XVSUBDP, 0xfc0007f800000000, 0xf000034000000000, 0x0, // VSX Vector Subtract Double-Precision XX3-form (xvsubdp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVSUBSP, 0xfc0007f800000000, 0xf000024000000000, 0x0, // VSX Vector Subtract Single-Precision XX3-form (xvsubsp XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVTDIVDP, 0xfc0007f800000000, 0xf00003e800000000, 0x60000100000000, // VSX Vector Test for software Divide Double-Precision XX3-form (xvtdivdp BF,XA,XB) + [6]*argField{ap_CondRegField_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVTDIVSP, 0xfc0007f800000000, 0xf00002e800000000, 0x60000100000000, // VSX Vector Test for software Divide Single-Precision XX3-form (xvtdivsp BF,XA,XB) + [6]*argField{ap_CondRegField_6_8, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XVTSQRTDP, 0xfc0007fc00000000, 0xf00003a800000000, 0x7f000100000000, // VSX Vector Test for software Square Root Double-Precision XX2-form (xvtsqrtdp BF,XB) + [6]*argField{ap_CondRegField_6_8, ap_VecSReg_30_30_16_20}}, + {XVTSQRTSP, 0xfc0007fc00000000, 0xf00002a800000000, 0x7f000100000000, // VSX Vector Test for software Square Root Single-Precision XX2-form (xvtsqrtsp BF,XB) + [6]*argField{ap_CondRegField_6_8, ap_VecSReg_30_30_16_20}}, + {XXLAND, 0xfc0007f800000000, 0xf000041000000000, 0x0, // VSX Vector Logical AND XX3-form (xxland XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XXLANDC, 0xfc0007f800000000, 0xf000045000000000, 0x0, // VSX Vector Logical AND with Complement XX3-form (xxlandc XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XXLNOR, 0xfc0007f800000000, 0xf000051000000000, 0x0, // VSX Vector Logical NOR XX3-form (xxlnor XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XXLOR, 0xfc0007f800000000, 0xf000049000000000, 0x0, // VSX Vector Logical OR XX3-form (xxlor XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XXLXOR, 0xfc0007f800000000, 0xf00004d000000000, 0x0, // VSX Vector Logical XOR XX3-form (xxlxor XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XXMRGHW, 0xfc0007f800000000, 0xf000009000000000, 0x0, // VSX Vector Merge High Word XX3-form (xxmrghw XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XXMRGLW, 0xfc0007f800000000, 0xf000019000000000, 0x0, // VSX Vector Merge Low Word XX3-form (xxmrglw XT,XA,XB) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20}}, + {XXPERMDI, 0xfc0004f800000000, 0xf000005000000000, 0x0, // VSX Vector Permute Doubleword Immediate XX3-form (xxpermdi XT,XA,XB,DM) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20, ap_ImmUnsigned_22_23}}, + {XXSEL, 0xfc00003000000000, 0xf000003000000000, 0x0, // VSX Vector Select XX4-form (xxsel XT,XA,XB,XC) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20, ap_VecSReg_28_28_21_25}}, + {XXSLDWI, 0xfc0004f800000000, 0xf000001000000000, 0x0, // VSX Vector Shift Left Double by Word Immediate XX3-form (xxsldwi XT,XA,XB,SHW) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_29_29_11_15, ap_VecSReg_30_30_16_20, ap_ImmUnsigned_22_23}}, + {XXSPLTW, 0xfc0007fc00000000, 0xf000029000000000, 0x1c000000000000, // VSX Vector Splat Word XX2-form (xxspltw XT,XB,UIM) + [6]*argField{ap_VecSReg_31_31_6_10, ap_VecSReg_30_30_16_20, ap_ImmUnsigned_14_15}}, + {CMPB, 0xfc0007fe00000000, 0x7c0003f800000000, 0x100000000, // Compare Bytes X-form (cmpb RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {DADD, 0xfc0007ff00000000, 0xec00000400000000, 0x0, // DFP Add X-form (dadd FRT,FRA,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {DADDCC, 0xfc0007ff00000000, 0xec00000500000000, 0x0, // DFP Add X-form (dadd. FRT,FRA,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {DADDQ, 0xfc0007ff00000000, 0xfc00000400000000, 0x0, // DFP Add Quad X-form (daddq FRTp,FRAp,FRBp) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {DADDQCC, 0xfc0007ff00000000, 0xfc00000500000000, 0x0, // DFP Add Quad X-form (daddq. FRTp,FRAp,FRBp) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {DCFFIXQ, 0xfc0007ff00000000, 0xfc00064400000000, 0x1f000000000000, // DFP Convert From Fixed Quad X-form (dcffixq FRTp,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {DCFFIXQCC, 0xfc0007ff00000000, 0xfc00064500000000, 0x1f000000000000, // DFP Convert From Fixed Quad X-form (dcffixq. FRTp,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {DCMPO, 0xfc0007fe00000000, 0xec00010400000000, 0x60000100000000, // DFP Compare Ordered X-form (dcmpo BF,FRA,FRB) + [6]*argField{ap_CondRegField_6_8, ap_FPReg_11_15, ap_FPReg_16_20}}, + {DCMPOQ, 0xfc0007fe00000000, 0xfc00010400000000, 0x60000100000000, // DFP Compare Ordered Quad X-form (dcmpoq BF,FRAp,FRBp) + [6]*argField{ap_CondRegField_6_8, ap_FPReg_11_15, ap_FPReg_16_20}}, + {DCMPU, 0xfc0007fe00000000, 0xec00050400000000, 0x60000100000000, // DFP Compare Unordered X-form (dcmpu BF,FRA,FRB) + [6]*argField{ap_CondRegField_6_8, ap_FPReg_11_15, ap_FPReg_16_20}}, + {DCMPUQ, 0xfc0007fe00000000, 0xfc00050400000000, 0x60000100000000, // DFP Compare Unordered Quad X-form (dcmpuq BF,FRAp,FRBp) + [6]*argField{ap_CondRegField_6_8, ap_FPReg_11_15, ap_FPReg_16_20}}, + {DCTDP, 0xfc0007ff00000000, 0xec00020400000000, 0x1f000000000000, // DFP Convert To DFP Long X-form (dctdp FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {DCTDPCC, 0xfc0007ff00000000, 0xec00020500000000, 0x1f000000000000, // DFP Convert To DFP Long X-form (dctdp. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {DCTFIX, 0xfc0007ff00000000, 0xec00024400000000, 0x1f000000000000, // DFP Convert To Fixed X-form (dctfix FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {DCTFIXCC, 0xfc0007ff00000000, 0xec00024500000000, 0x1f000000000000, // DFP Convert To Fixed X-form (dctfix. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {DCTFIXQ, 0xfc0007ff00000000, 0xfc00024400000000, 0x1f000000000000, // DFP Convert To Fixed Quad X-form (dctfixq FRT,FRBp) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {DCTFIXQCC, 0xfc0007ff00000000, 0xfc00024500000000, 0x1f000000000000, // DFP Convert To Fixed Quad X-form (dctfixq. FRT,FRBp) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {DCTQPQ, 0xfc0007ff00000000, 0xfc00020400000000, 0x1f000000000000, // DFP Convert To DFP Extended X-form (dctqpq FRTp,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {DCTQPQCC, 0xfc0007ff00000000, 0xfc00020500000000, 0x1f000000000000, // DFP Convert To DFP Extended X-form (dctqpq. FRTp,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {DDEDPD, 0xfc0007ff00000000, 0xec00028400000000, 0x7000000000000, // DFP Decode DPD To BCD X-form (ddedpd SP,FRT,FRB) + [6]*argField{ap_ImmUnsigned_11_12, ap_FPReg_6_10, ap_FPReg_16_20}}, + {DDEDPDCC, 0xfc0007ff00000000, 0xec00028500000000, 0x7000000000000, // DFP Decode DPD To BCD X-form (ddedpd. SP,FRT,FRB) + [6]*argField{ap_ImmUnsigned_11_12, ap_FPReg_6_10, ap_FPReg_16_20}}, + {DDEDPDQ, 0xfc0007ff00000000, 0xfc00028400000000, 0x7000000000000, // DFP Decode DPD To BCD Quad X-form (ddedpdq SP,FRTp,FRBp) + [6]*argField{ap_ImmUnsigned_11_12, ap_FPReg_6_10, ap_FPReg_16_20}}, + {DDEDPDQCC, 0xfc0007ff00000000, 0xfc00028500000000, 0x7000000000000, // DFP Decode DPD To BCD Quad X-form (ddedpdq. SP,FRTp,FRBp) + [6]*argField{ap_ImmUnsigned_11_12, ap_FPReg_6_10, ap_FPReg_16_20}}, + {DDIV, 0xfc0007ff00000000, 0xec00044400000000, 0x0, // DFP Divide X-form (ddiv FRT,FRA,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {DDIVCC, 0xfc0007ff00000000, 0xec00044500000000, 0x0, // DFP Divide X-form (ddiv. FRT,FRA,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {DDIVQ, 0xfc0007ff00000000, 0xfc00044400000000, 0x0, // DFP Divide Quad X-form (ddivq FRTp,FRAp,FRBp) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {DDIVQCC, 0xfc0007ff00000000, 0xfc00044500000000, 0x0, // DFP Divide Quad X-form (ddivq. FRTp,FRAp,FRBp) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {DENBCD, 0xfc0007ff00000000, 0xec00068400000000, 0xf000000000000, // DFP Encode BCD To DPD X-form (denbcd S,FRT,FRB) + [6]*argField{ap_ImmUnsigned_11_11, ap_FPReg_6_10, ap_FPReg_16_20}}, + {DENBCDCC, 0xfc0007ff00000000, 0xec00068500000000, 0xf000000000000, // DFP Encode BCD To DPD X-form (denbcd. S,FRT,FRB) + [6]*argField{ap_ImmUnsigned_11_11, ap_FPReg_6_10, ap_FPReg_16_20}}, + {DENBCDQ, 0xfc0007ff00000000, 0xfc00068400000000, 0xf000000000000, // DFP Encode BCD To DPD Quad X-form (denbcdq S,FRTp,FRBp) + [6]*argField{ap_ImmUnsigned_11_11, ap_FPReg_6_10, ap_FPReg_16_20}}, + {DENBCDQCC, 0xfc0007ff00000000, 0xfc00068500000000, 0xf000000000000, // DFP Encode BCD To DPD Quad X-form (denbcdq. S,FRTp,FRBp) + [6]*argField{ap_ImmUnsigned_11_11, ap_FPReg_6_10, ap_FPReg_16_20}}, + {DIEX, 0xfc0007ff00000000, 0xec0006c400000000, 0x0, // DFP Insert Biased Exponent X-form (diex FRT,FRA,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {DIEXCC, 0xfc0007ff00000000, 0xec0006c500000000, 0x0, // DFP Insert Biased Exponent X-form (diex. FRT,FRA,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {DIEXQCC, 0xfc0007ff00000000, 0xfc0006c500000000, 0x0, // DFP Insert Biased Exponent Quad X-form (diexq. FRTp,FRA,FRBp) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {DIEXQ, 0xfc0007fe00000000, 0xfc0006c400000000, 0x0, // DFP Insert Biased Exponent Quad X-form (diexq FRTp,FRA,FRBp) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {DMUL, 0xfc0007ff00000000, 0xec00004400000000, 0x0, // DFP Multiply X-form (dmul FRT,FRA,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {DMULCC, 0xfc0007ff00000000, 0xec00004500000000, 0x0, // DFP Multiply X-form (dmul. FRT,FRA,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {DMULQ, 0xfc0007ff00000000, 0xfc00004400000000, 0x0, // DFP Multiply Quad X-form (dmulq FRTp,FRAp,FRBp) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {DMULQCC, 0xfc0007ff00000000, 0xfc00004500000000, 0x0, // DFP Multiply Quad X-form (dmulq. FRTp,FRAp,FRBp) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {DQUA, 0xfc0001ff00000000, 0xec00000600000000, 0x0, // DFP Quantize Z23-form (dqua FRT,FRA,FRB,RMC) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20, ap_ImmUnsigned_21_22}}, + {DQUACC, 0xfc0001ff00000000, 0xec00000700000000, 0x0, // DFP Quantize Z23-form (dqua. FRT,FRA,FRB,RMC) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20, ap_ImmUnsigned_21_22}}, + {DQUAI, 0xfc0001ff00000000, 0xec00008600000000, 0x0, // DFP Quantize Immediate Z23-form (dquai TE,FRT,FRB,RMC) + [6]*argField{ap_ImmSigned_11_15, ap_FPReg_6_10, ap_FPReg_16_20, ap_ImmUnsigned_21_22}}, + {DQUAICC, 0xfc0001ff00000000, 0xec00008700000000, 0x0, // DFP Quantize Immediate Z23-form (dquai. TE,FRT,FRB,RMC) + [6]*argField{ap_ImmSigned_11_15, ap_FPReg_6_10, ap_FPReg_16_20, ap_ImmUnsigned_21_22}}, + {DQUAIQ, 0xfc0001ff00000000, 0xfc00008600000000, 0x0, // DFP Quantize Immediate Quad Z23-form (dquaiq TE,FRTp,FRBp,RMC) + [6]*argField{ap_ImmSigned_11_15, ap_FPReg_6_10, ap_FPReg_16_20, ap_ImmUnsigned_21_22}}, + {DQUAIQCC, 0xfc0001ff00000000, 0xfc00008700000000, 0x0, // DFP Quantize Immediate Quad Z23-form (dquaiq. TE,FRTp,FRBp,RMC) + [6]*argField{ap_ImmSigned_11_15, ap_FPReg_6_10, ap_FPReg_16_20, ap_ImmUnsigned_21_22}}, + {DQUAQ, 0xfc0001ff00000000, 0xfc00000600000000, 0x0, // DFP Quantize Quad Z23-form (dquaq FRTp,FRAp,FRBp,RMC) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20, ap_ImmUnsigned_21_22}}, + {DQUAQCC, 0xfc0001ff00000000, 0xfc00000700000000, 0x0, // DFP Quantize Quad Z23-form (dquaq. FRTp,FRAp,FRBp,RMC) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20, ap_ImmUnsigned_21_22}}, + {DRDPQ, 0xfc0007ff00000000, 0xfc00060400000000, 0x1f000000000000, // DFP Round To DFP Long X-form (drdpq FRTp,FRBp) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {DRDPQCC, 0xfc0007ff00000000, 0xfc00060500000000, 0x1f000000000000, // DFP Round To DFP Long X-form (drdpq. FRTp,FRBp) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {DRINTN, 0xfc0001ff00000000, 0xec0001c600000000, 0x1e000000000000, // DFP Round To FP Integer Without Inexact Z23-form (drintn R,FRT,FRB,RMC) + [6]*argField{ap_ImmUnsigned_15_15, ap_FPReg_6_10, ap_FPReg_16_20, ap_ImmUnsigned_21_22}}, + {DRINTNCC, 0xfc0001ff00000000, 0xec0001c700000000, 0x1e000000000000, // DFP Round To FP Integer Without Inexact Z23-form (drintn. R,FRT,FRB,RMC) + [6]*argField{ap_ImmUnsigned_15_15, ap_FPReg_6_10, ap_FPReg_16_20, ap_ImmUnsigned_21_22}}, + {DRINTNQ, 0xfc0001ff00000000, 0xfc0001c600000000, 0x1e000000000000, // DFP Round To FP Integer Without Inexact Quad Z23-form (drintnq R,FRTp,FRBp,RMC) + [6]*argField{ap_ImmUnsigned_15_15, ap_FPReg_6_10, ap_FPReg_16_20, ap_ImmUnsigned_21_22}}, + {DRINTNQCC, 0xfc0001ff00000000, 0xfc0001c700000000, 0x1e000000000000, // DFP Round To FP Integer Without Inexact Quad Z23-form (drintnq. R,FRTp,FRBp,RMC) + [6]*argField{ap_ImmUnsigned_15_15, ap_FPReg_6_10, ap_FPReg_16_20, ap_ImmUnsigned_21_22}}, + {DRINTX, 0xfc0001ff00000000, 0xec0000c600000000, 0x1e000000000000, // DFP Round To FP Integer With Inexact Z23-form (drintx R,FRT,FRB,RMC) + [6]*argField{ap_ImmUnsigned_15_15, ap_FPReg_6_10, ap_FPReg_16_20, ap_ImmUnsigned_21_22}}, + {DRINTXCC, 0xfc0001ff00000000, 0xec0000c700000000, 0x1e000000000000, // DFP Round To FP Integer With Inexact Z23-form (drintx. R,FRT,FRB,RMC) + [6]*argField{ap_ImmUnsigned_15_15, ap_FPReg_6_10, ap_FPReg_16_20, ap_ImmUnsigned_21_22}}, + {DRINTXQ, 0xfc0001ff00000000, 0xfc0000c600000000, 0x1e000000000000, // DFP Round To FP Integer With Inexact Quad Z23-form (drintxq R,FRTp,FRBp,RMC) + [6]*argField{ap_ImmUnsigned_15_15, ap_FPReg_6_10, ap_FPReg_16_20, ap_ImmUnsigned_21_22}}, + {DRINTXQCC, 0xfc0001ff00000000, 0xfc0000c700000000, 0x1e000000000000, // DFP Round To FP Integer With Inexact Quad Z23-form (drintxq. R,FRTp,FRBp,RMC) + [6]*argField{ap_ImmUnsigned_15_15, ap_FPReg_6_10, ap_FPReg_16_20, ap_ImmUnsigned_21_22}}, + {DRRND, 0xfc0001ff00000000, 0xec00004600000000, 0x0, // DFP Reround Z23-form (drrnd FRT,FRA,FRB,RMC) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20, ap_ImmUnsigned_21_22}}, + {DRRNDCC, 0xfc0001ff00000000, 0xec00004700000000, 0x0, // DFP Reround Z23-form (drrnd. FRT,FRA,FRB,RMC) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20, ap_ImmUnsigned_21_22}}, + {DRRNDQ, 0xfc0001ff00000000, 0xfc00004600000000, 0x0, // DFP Reround Quad Z23-form (drrndq FRTp,FRA,FRBp,RMC) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20, ap_ImmUnsigned_21_22}}, + {DRRNDQCC, 0xfc0001ff00000000, 0xfc00004700000000, 0x0, // DFP Reround Quad Z23-form (drrndq. FRTp,FRA,FRBp,RMC) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20, ap_ImmUnsigned_21_22}}, + {DRSP, 0xfc0007ff00000000, 0xec00060400000000, 0x1f000000000000, // DFP Round To DFP Short X-form (drsp FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {DRSPCC, 0xfc0007ff00000000, 0xec00060500000000, 0x1f000000000000, // DFP Round To DFP Short X-form (drsp. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {DSCLI, 0xfc0003ff00000000, 0xec00008400000000, 0x0, // DFP Shift Significand Left Immediate Z22-form (dscli FRT,FRA,SH) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_ImmUnsigned_16_21}}, + {DSCLICC, 0xfc0003ff00000000, 0xec00008500000000, 0x0, // DFP Shift Significand Left Immediate Z22-form (dscli. FRT,FRA,SH) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_ImmUnsigned_16_21}}, + {DSCLIQ, 0xfc0003ff00000000, 0xfc00008400000000, 0x0, // DFP Shift Significand Left Immediate Quad Z22-form (dscliq FRTp,FRAp,SH) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_ImmUnsigned_16_21}}, + {DSCLIQCC, 0xfc0003ff00000000, 0xfc00008500000000, 0x0, // DFP Shift Significand Left Immediate Quad Z22-form (dscliq. FRTp,FRAp,SH) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_ImmUnsigned_16_21}}, + {DSCRI, 0xfc0003ff00000000, 0xec0000c400000000, 0x0, // DFP Shift Significand Right Immediate Z22-form (dscri FRT,FRA,SH) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_ImmUnsigned_16_21}}, + {DSCRICC, 0xfc0003ff00000000, 0xec0000c500000000, 0x0, // DFP Shift Significand Right Immediate Z22-form (dscri. FRT,FRA,SH) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_ImmUnsigned_16_21}}, + {DSCRIQ, 0xfc0003ff00000000, 0xfc0000c400000000, 0x0, // DFP Shift Significand Right Immediate Quad Z22-form (dscriq FRTp,FRAp,SH) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_ImmUnsigned_16_21}}, + {DSCRIQCC, 0xfc0003ff00000000, 0xfc0000c500000000, 0x0, // DFP Shift Significand Right Immediate Quad Z22-form (dscriq. FRTp,FRAp,SH) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_ImmUnsigned_16_21}}, + {DSUB, 0xfc0007ff00000000, 0xec00040400000000, 0x0, // DFP Subtract X-form (dsub FRT,FRA,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {DSUBCC, 0xfc0007ff00000000, 0xec00040500000000, 0x0, // DFP Subtract X-form (dsub. FRT,FRA,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {DSUBQ, 0xfc0007ff00000000, 0xfc00040400000000, 0x0, // DFP Subtract Quad X-form (dsubq FRTp,FRAp,FRBp) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {DSUBQCC, 0xfc0007ff00000000, 0xfc00040500000000, 0x0, // DFP Subtract Quad X-form (dsubq. FRTp,FRAp,FRBp) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {DTSTDC, 0xfc0003fe00000000, 0xec00018400000000, 0x60000100000000, // DFP Test Data Class Z22-form (dtstdc BF,FRA,DCM) + [6]*argField{ap_CondRegField_6_8, ap_FPReg_11_15, ap_ImmUnsigned_16_21}}, + {DTSTDCQ, 0xfc0003fe00000000, 0xfc00018400000000, 0x60000100000000, // DFP Test Data Class Quad Z22-form (dtstdcq BF,FRAp,DCM) + [6]*argField{ap_CondRegField_6_8, ap_FPReg_11_15, ap_ImmUnsigned_16_21}}, + {DTSTDG, 0xfc0003fe00000000, 0xec0001c400000000, 0x60000100000000, // DFP Test Data Group Z22-form (dtstdg BF,FRA,DGM) + [6]*argField{ap_CondRegField_6_8, ap_FPReg_11_15, ap_ImmUnsigned_16_21}}, + {DTSTDGQ, 0xfc0003fe00000000, 0xfc0001c400000000, 0x60000100000000, // DFP Test Data Group Quad Z22-form (dtstdgq BF,FRAp,DGM) + [6]*argField{ap_CondRegField_6_8, ap_FPReg_11_15, ap_ImmUnsigned_16_21}}, + {DTSTEX, 0xfc0007fe00000000, 0xec00014400000000, 0x60000100000000, // DFP Test Exponent X-form (dtstex BF,FRA,FRB) + [6]*argField{ap_CondRegField_6_8, ap_FPReg_11_15, ap_FPReg_16_20}}, + {DTSTEXQ, 0xfc0007fe00000000, 0xfc00014400000000, 0x60000100000000, // DFP Test Exponent Quad X-form (dtstexq BF,FRAp,FRBp) + [6]*argField{ap_CondRegField_6_8, ap_FPReg_11_15, ap_FPReg_16_20}}, + {DTSTSF, 0xfc0007fe00000000, 0xec00054400000000, 0x60000100000000, // DFP Test Significance X-form (dtstsf BF,FRA,FRB) + [6]*argField{ap_CondRegField_6_8, ap_FPReg_11_15, ap_FPReg_16_20}}, + {DTSTSFQ, 0xfc0007fe00000000, 0xfc00054400000000, 0x60000100000000, // DFP Test Significance Quad X-form (dtstsfq BF,FRA,FRBp) + [6]*argField{ap_CondRegField_6_8, ap_FPReg_11_15, ap_FPReg_16_20}}, + {DXEX, 0xfc0007ff00000000, 0xec0002c400000000, 0x1f000000000000, // DFP Extract Biased Exponent X-form (dxex FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {DXEXCC, 0xfc0007ff00000000, 0xec0002c500000000, 0x1f000000000000, // DFP Extract Biased Exponent X-form (dxex. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {DXEXQ, 0xfc0007ff00000000, 0xfc0002c400000000, 0x1f000000000000, // DFP Extract Biased Exponent Quad X-form (dxexq FRT,FRBp) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {DXEXQCC, 0xfc0007ff00000000, 0xfc0002c500000000, 0x1f000000000000, // DFP Extract Biased Exponent Quad X-form (dxexq. FRT,FRBp) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FCPSGN, 0xfc0007ff00000000, 0xfc00001000000000, 0x0, // Floating Copy Sign X-form (fcpsgn FRT, FRA, FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {FCPSGNCC, 0xfc0007ff00000000, 0xfc00001100000000, 0x0, // Floating Copy Sign X-form (fcpsgn. FRT, FRA, FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {LBZCIX, 0xfc0007fe00000000, 0x7c0006aa00000000, 0x100000000, // Load Byte & Zero Caching Inhibited Indexed X-form (lbzcix RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LDCIX, 0xfc0007fe00000000, 0x7c0006ea00000000, 0x100000000, // Load Doubleword Caching Inhibited Indexed X-form (ldcix RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LFDP, 0xfc00000300000000, 0xe400000000000000, 0x0, // Load Floating-Point Double Pair DS-form (lfdp FRTp,DS(RA)) + [6]*argField{ap_FPReg_6_10, ap_Offset_16_29_shift2, ap_Reg_11_15}}, + {LFDPX, 0xfc0007fe00000000, 0x7c00062e00000000, 0x100000000, // Load Floating-Point Double Pair Indexed X-form (lfdpx FRTp,RA,RB) + [6]*argField{ap_FPReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LFIWAX, 0xfc0007fe00000000, 0x7c0006ae00000000, 0x100000000, // Load Floating-Point as Integer Word Algebraic Indexed X-form (lfiwax FRT,RA,RB) + [6]*argField{ap_FPReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LHZCIX, 0xfc0007fe00000000, 0x7c00066a00000000, 0x100000000, // Load Halfword & Zero Caching Inhibited Indexed X-form (lhzcix RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LWZCIX, 0xfc0007fe00000000, 0x7c00062a00000000, 0x100000000, // Load Word & Zero Caching Inhibited Indexed X-form (lwzcix RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {PRTYD, 0xfc0007fe00000000, 0x7c00017400000000, 0xf80100000000, // Parity Doubleword X-form (prtyd RA,RS) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10}}, + {PRTYW, 0xfc0007fe00000000, 0x7c00013400000000, 0xf80100000000, // Parity Word X-form (prtyw RA,RS) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10}}, + {SLBFEECC, 0xfc0007ff00000000, 0x7c0007a700000000, 0x1f000000000000, // SLB Find Entry ESID X-form (slbfee. RT,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_16_20}}, + {STBCIX, 0xfc0007fe00000000, 0x7c0007aa00000000, 0x100000000, // Store Byte Caching Inhibited Indexed X-form (stbcix RS,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STDCIX, 0xfc0007fe00000000, 0x7c0007ea00000000, 0x100000000, // Store Doubleword Caching Inhibited Indexed X-form (stdcix RS,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STFDP, 0xfc00000300000000, 0xf400000000000000, 0x0, // Store Floating-Point Double Pair DS-form (stfdp FRSp,DS(RA)) + [6]*argField{ap_FPReg_6_10, ap_Offset_16_29_shift2, ap_Reg_11_15}}, + {STFDPX, 0xfc0007fe00000000, 0x7c00072e00000000, 0x100000000, // Store Floating-Point Double Pair Indexed X-form (stfdpx FRSp,RA,RB) + [6]*argField{ap_FPReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STHCIX, 0xfc0007fe00000000, 0x7c00076a00000000, 0x100000000, // Store Halfword Caching Inhibited Indexed X-form (sthcix RS,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STWCIX, 0xfc0007fe00000000, 0x7c00072a00000000, 0x100000000, // Store Word Caching Inhibited Indexed X-form (stwcix RS,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {ISEL, 0xfc00003e00000000, 0x7c00001e00000000, 0x100000000, // Integer Select A-form (isel RT,RA,RB,BC) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20, ap_CondRegBit_21_25}}, + {LVEBX, 0xfc0007fe00000000, 0x7c00000e00000000, 0x100000000, // Load Vector Element Byte Indexed X-form (lvebx VRT,RA,RB) + [6]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LVEHX, 0xfc0007fe00000000, 0x7c00004e00000000, 0x100000000, // Load Vector Element Halfword Indexed X-form (lvehx VRT,RA,RB) + [6]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LVEWX, 0xfc0007fe00000000, 0x7c00008e00000000, 0x100000000, // Load Vector Element Word Indexed X-form (lvewx VRT,RA,RB) + [6]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LVSL, 0xfc0007fe00000000, 0x7c00000c00000000, 0x100000000, // Load Vector for Shift Left Indexed X-form (lvsl VRT,RA,RB) + [6]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LVSR, 0xfc0007fe00000000, 0x7c00004c00000000, 0x100000000, // Load Vector for Shift Right Indexed X-form (lvsr VRT,RA,RB) + [6]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LVX, 0xfc0007fe00000000, 0x7c0000ce00000000, 0x100000000, // Load Vector Indexed X-form (lvx VRT,RA,RB) + [6]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LVXL, 0xfc0007fe00000000, 0x7c0002ce00000000, 0x100000000, // Load Vector Indexed Last X-form (lvxl VRT,RA,RB) + [6]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {MFVSCR, 0xfc0007ff00000000, 0x1000060400000000, 0x1ff80000000000, // Move From Vector Status and Control Register VX-form (mfvscr VRT) + [6]*argField{ap_VecReg_6_10}}, + {MTVSCR, 0xfc0007ff00000000, 0x1000064400000000, 0x3ff000000000000, // Move To Vector Status and Control Register VX-form (mtvscr VRB) + [6]*argField{ap_VecReg_16_20}}, + {STVEBX, 0xfc0007fe00000000, 0x7c00010e00000000, 0x100000000, // Store Vector Element Byte Indexed X-form (stvebx VRS,RA,RB) + [6]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STVEHX, 0xfc0007fe00000000, 0x7c00014e00000000, 0x100000000, // Store Vector Element Halfword Indexed X-form (stvehx VRS,RA,RB) + [6]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STVEWX, 0xfc0007fe00000000, 0x7c00018e00000000, 0x100000000, // Store Vector Element Word Indexed X-form (stvewx VRS,RA,RB) + [6]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STVX, 0xfc0007fe00000000, 0x7c0001ce00000000, 0x100000000, // Store Vector Indexed X-form (stvx VRS,RA,RB) + [6]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STVXL, 0xfc0007fe00000000, 0x7c0003ce00000000, 0x100000000, // Store Vector Indexed Last X-form (stvxl VRS,RA,RB) + [6]*argField{ap_VecReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {TLBIEL, 0xfc0007fe00000000, 0x7c00022400000000, 0x10000100000000, // TLB Invalidate Entry Local X-form (tlbiel RB,RS,RIC,PRS,R) + [6]*argField{ap_Reg_16_20, ap_Reg_6_10, ap_ImmUnsigned_12_13, ap_ImmUnsigned_14_14, ap_ImmUnsigned_15_15}}, + {VADDCUW, 0xfc0007ff00000000, 0x1000018000000000, 0x0, // Vector Add & write Carry Unsigned Word VX-form (vaddcuw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VADDFP, 0xfc0007ff00000000, 0x1000000a00000000, 0x0, // Vector Add Floating-Point VX-form (vaddfp VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VADDSBS, 0xfc0007ff00000000, 0x1000030000000000, 0x0, // Vector Add Signed Byte Saturate VX-form (vaddsbs VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VADDSHS, 0xfc0007ff00000000, 0x1000034000000000, 0x0, // Vector Add Signed Halfword Saturate VX-form (vaddshs VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VADDSWS, 0xfc0007ff00000000, 0x1000038000000000, 0x0, // Vector Add Signed Word Saturate VX-form (vaddsws VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VADDUBM, 0xfc0007ff00000000, 0x1000000000000000, 0x0, // Vector Add Unsigned Byte Modulo VX-form (vaddubm VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VADDUBS, 0xfc0007ff00000000, 0x1000020000000000, 0x0, // Vector Add Unsigned Byte Saturate VX-form (vaddubs VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VADDUHM, 0xfc0007ff00000000, 0x1000004000000000, 0x0, // Vector Add Unsigned Halfword Modulo VX-form (vadduhm VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VADDUHS, 0xfc0007ff00000000, 0x1000024000000000, 0x0, // Vector Add Unsigned Halfword Saturate VX-form (vadduhs VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VADDUWM, 0xfc0007ff00000000, 0x1000008000000000, 0x0, // Vector Add Unsigned Word Modulo VX-form (vadduwm VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VADDUWS, 0xfc0007ff00000000, 0x1000028000000000, 0x0, // Vector Add Unsigned Word Saturate VX-form (vadduws VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VAND, 0xfc0007ff00000000, 0x1000040400000000, 0x0, // Vector Logical AND VX-form (vand VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VANDC, 0xfc0007ff00000000, 0x1000044400000000, 0x0, // Vector Logical AND with Complement VX-form (vandc VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VAVGSB, 0xfc0007ff00000000, 0x1000050200000000, 0x0, // Vector Average Signed Byte VX-form (vavgsb VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VAVGSH, 0xfc0007ff00000000, 0x1000054200000000, 0x0, // Vector Average Signed Halfword VX-form (vavgsh VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VAVGSW, 0xfc0007ff00000000, 0x1000058200000000, 0x0, // Vector Average Signed Word VX-form (vavgsw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VAVGUB, 0xfc0007ff00000000, 0x1000040200000000, 0x0, // Vector Average Unsigned Byte VX-form (vavgub VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VAVGUH, 0xfc0007ff00000000, 0x1000044200000000, 0x0, // Vector Average Unsigned Halfword VX-form (vavguh VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VAVGUW, 0xfc0007ff00000000, 0x1000048200000000, 0x0, // Vector Average Unsigned Word VX-form (vavguw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCFSX, 0xfc0007ff00000000, 0x1000034a00000000, 0x0, // Vector Convert with round to nearest From Signed Word to floating-point format VX-form (vcfsx VRT,VRB,UIM) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_11_15}}, + {VCFUX, 0xfc0007ff00000000, 0x1000030a00000000, 0x0, // Vector Convert with round to nearest From Unsigned Word to floating-point format VX-form (vcfux VRT,VRB,UIM) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_11_15}}, + {VCMPBFP, 0xfc0007ff00000000, 0x100003c600000000, 0x0, // Vector Compare Bounds Floating-Point VC-form (vcmpbfp VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPBFPCC, 0xfc0007ff00000000, 0x100007c600000000, 0x0, // Vector Compare Bounds Floating-Point VC-form (vcmpbfp. VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPEQFP, 0xfc0007ff00000000, 0x100000c600000000, 0x0, // Vector Compare Equal Floating-Point VC-form (vcmpeqfp VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPEQFPCC, 0xfc0007ff00000000, 0x100004c600000000, 0x0, // Vector Compare Equal Floating-Point VC-form (vcmpeqfp. VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPEQUB, 0xfc0007ff00000000, 0x1000000600000000, 0x0, // Vector Compare Equal Unsigned Byte VC-form (vcmpequb VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPEQUBCC, 0xfc0007ff00000000, 0x1000040600000000, 0x0, // Vector Compare Equal Unsigned Byte VC-form (vcmpequb. VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPEQUH, 0xfc0007ff00000000, 0x1000004600000000, 0x0, // Vector Compare Equal Unsigned Halfword VC-form (vcmpequh VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPEQUHCC, 0xfc0007ff00000000, 0x1000044600000000, 0x0, // Vector Compare Equal Unsigned Halfword VC-form (vcmpequh. VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPEQUW, 0xfc0007ff00000000, 0x1000008600000000, 0x0, // Vector Compare Equal Unsigned Word VC-form (vcmpequw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPEQUWCC, 0xfc0007ff00000000, 0x1000048600000000, 0x0, // Vector Compare Equal Unsigned Word VC-form (vcmpequw. VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPGEFP, 0xfc0007ff00000000, 0x100001c600000000, 0x0, // Vector Compare Greater Than or Equal Floating-Point VC-form (vcmpgefp VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPGEFPCC, 0xfc0007ff00000000, 0x100005c600000000, 0x0, // Vector Compare Greater Than or Equal Floating-Point VC-form (vcmpgefp. VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPGTFP, 0xfc0007ff00000000, 0x100002c600000000, 0x0, // Vector Compare Greater Than Floating-Point VC-form (vcmpgtfp VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPGTFPCC, 0xfc0007ff00000000, 0x100006c600000000, 0x0, // Vector Compare Greater Than Floating-Point VC-form (vcmpgtfp. VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPGTSB, 0xfc0007ff00000000, 0x1000030600000000, 0x0, // Vector Compare Greater Than Signed Byte VC-form (vcmpgtsb VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPGTSBCC, 0xfc0007ff00000000, 0x1000070600000000, 0x0, // Vector Compare Greater Than Signed Byte VC-form (vcmpgtsb. VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPGTSH, 0xfc0007ff00000000, 0x1000034600000000, 0x0, // Vector Compare Greater Than Signed Halfword VC-form (vcmpgtsh VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPGTSHCC, 0xfc0007ff00000000, 0x1000074600000000, 0x0, // Vector Compare Greater Than Signed Halfword VC-form (vcmpgtsh. VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPGTSW, 0xfc0007ff00000000, 0x1000038600000000, 0x0, // Vector Compare Greater Than Signed Word VC-form (vcmpgtsw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPGTSWCC, 0xfc0007ff00000000, 0x1000078600000000, 0x0, // Vector Compare Greater Than Signed Word VC-form (vcmpgtsw. VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPGTUB, 0xfc0007ff00000000, 0x1000020600000000, 0x0, // Vector Compare Greater Than Unsigned Byte VC-form (vcmpgtub VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPGTUBCC, 0xfc0007ff00000000, 0x1000060600000000, 0x0, // Vector Compare Greater Than Unsigned Byte VC-form (vcmpgtub. VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPGTUH, 0xfc0007ff00000000, 0x1000024600000000, 0x0, // Vector Compare Greater Than Unsigned Halfword VC-form (vcmpgtuh VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPGTUHCC, 0xfc0007ff00000000, 0x1000064600000000, 0x0, // Vector Compare Greater Than Unsigned Halfword VC-form (vcmpgtuh. VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPGTUW, 0xfc0007ff00000000, 0x1000028600000000, 0x0, // Vector Compare Greater Than Unsigned Word VC-form (vcmpgtuw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCMPGTUWCC, 0xfc0007ff00000000, 0x1000068600000000, 0x0, // Vector Compare Greater Than Unsigned Word VC-form (vcmpgtuw. VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VCTSXS, 0xfc0007ff00000000, 0x100003ca00000000, 0x0, // Vector Convert with round to zero from floating-point To Signed Word format Saturate VX-form (vctsxs VRT,VRB,UIM) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_11_15}}, + {VCTUXS, 0xfc0007ff00000000, 0x1000038a00000000, 0x0, // Vector Convert with round to zero from floating-point To Unsigned Word format Saturate VX-form (vctuxs VRT,VRB,UIM) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_11_15}}, + {VEXPTEFP, 0xfc0007ff00000000, 0x1000018a00000000, 0x1f000000000000, // Vector 2 Raised to the Exponent Estimate Floating-Point VX-form (vexptefp VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VLOGEFP, 0xfc0007ff00000000, 0x100001ca00000000, 0x1f000000000000, // Vector Log Base 2 Estimate Floating-Point VX-form (vlogefp VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VMADDFP, 0xfc00003f00000000, 0x1000002e00000000, 0x0, // Vector Multiply-Add Floating-Point VA-form (vmaddfp VRT,VRA,VRC,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_21_25, ap_VecReg_16_20}}, + {VMAXFP, 0xfc0007ff00000000, 0x1000040a00000000, 0x0, // Vector Maximum Floating-Point VX-form (vmaxfp VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMAXSB, 0xfc0007ff00000000, 0x1000010200000000, 0x0, // Vector Maximum Signed Byte VX-form (vmaxsb VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMAXSH, 0xfc0007ff00000000, 0x1000014200000000, 0x0, // Vector Maximum Signed Halfword VX-form (vmaxsh VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMAXSW, 0xfc0007ff00000000, 0x1000018200000000, 0x0, // Vector Maximum Signed Word VX-form (vmaxsw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMAXUB, 0xfc0007ff00000000, 0x1000000200000000, 0x0, // Vector Maximum Unsigned Byte VX-form (vmaxub VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMAXUH, 0xfc0007ff00000000, 0x1000004200000000, 0x0, // Vector Maximum Unsigned Halfword VX-form (vmaxuh VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMAXUW, 0xfc0007ff00000000, 0x1000008200000000, 0x0, // Vector Maximum Unsigned Word VX-form (vmaxuw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMHADDSHS, 0xfc00003f00000000, 0x1000002000000000, 0x0, // Vector Multiply-High-Add Signed Halfword Saturate VA-form (vmhaddshs VRT,VRA,VRB,VRC) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, + {VMHRADDSHS, 0xfc00003f00000000, 0x1000002100000000, 0x0, // Vector Multiply-High-Round-Add Signed Halfword Saturate VA-form (vmhraddshs VRT,VRA,VRB,VRC) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, + {VMINFP, 0xfc0007ff00000000, 0x1000044a00000000, 0x0, // Vector Minimum Floating-Point VX-form (vminfp VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMINSB, 0xfc0007ff00000000, 0x1000030200000000, 0x0, // Vector Minimum Signed Byte VX-form (vminsb VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMINSH, 0xfc0007ff00000000, 0x1000034200000000, 0x0, // Vector Minimum Signed Halfword VX-form (vminsh VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMINSW, 0xfc0007ff00000000, 0x1000038200000000, 0x0, // Vector Minimum Signed Word VX-form (vminsw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMINUB, 0xfc0007ff00000000, 0x1000020200000000, 0x0, // Vector Minimum Unsigned Byte VX-form (vminub VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMINUH, 0xfc0007ff00000000, 0x1000024200000000, 0x0, // Vector Minimum Unsigned Halfword VX-form (vminuh VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMINUW, 0xfc0007ff00000000, 0x1000028200000000, 0x0, // Vector Minimum Unsigned Word VX-form (vminuw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMLADDUHM, 0xfc00003f00000000, 0x1000002200000000, 0x0, // Vector Multiply-Low-Add Unsigned Halfword Modulo VA-form (vmladduhm VRT,VRA,VRB,VRC) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, + {VMRGHB, 0xfc0007ff00000000, 0x1000000c00000000, 0x0, // Vector Merge High Byte VX-form (vmrghb VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMRGHH, 0xfc0007ff00000000, 0x1000004c00000000, 0x0, // Vector Merge High Halfword VX-form (vmrghh VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMRGHW, 0xfc0007ff00000000, 0x1000008c00000000, 0x0, // Vector Merge High Word VX-form (vmrghw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMRGLB, 0xfc0007ff00000000, 0x1000010c00000000, 0x0, // Vector Merge Low Byte VX-form (vmrglb VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMRGLH, 0xfc0007ff00000000, 0x1000014c00000000, 0x0, // Vector Merge Low Halfword VX-form (vmrglh VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMRGLW, 0xfc0007ff00000000, 0x1000018c00000000, 0x0, // Vector Merge Low Word VX-form (vmrglw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMSUMMBM, 0xfc00003f00000000, 0x1000002500000000, 0x0, // Vector Multiply-Sum Mixed Byte Modulo VA-form (vmsummbm VRT,VRA,VRB,VRC) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, + {VMSUMSHM, 0xfc00003f00000000, 0x1000002800000000, 0x0, // Vector Multiply-Sum Signed Halfword Modulo VA-form (vmsumshm VRT,VRA,VRB,VRC) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, + {VMSUMSHS, 0xfc00003f00000000, 0x1000002900000000, 0x0, // Vector Multiply-Sum Signed Halfword Saturate VA-form (vmsumshs VRT,VRA,VRB,VRC) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, + {VMSUMUBM, 0xfc00003f00000000, 0x1000002400000000, 0x0, // Vector Multiply-Sum Unsigned Byte Modulo VA-form (vmsumubm VRT,VRA,VRB,VRC) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, + {VMSUMUHM, 0xfc00003f00000000, 0x1000002600000000, 0x0, // Vector Multiply-Sum Unsigned Halfword Modulo VA-form (vmsumuhm VRT,VRA,VRB,VRC) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, + {VMSUMUHS, 0xfc00003f00000000, 0x1000002700000000, 0x0, // Vector Multiply-Sum Unsigned Halfword Saturate VA-form (vmsumuhs VRT,VRA,VRB,VRC) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, + {VMULESB, 0xfc0007ff00000000, 0x1000030800000000, 0x0, // Vector Multiply Even Signed Byte VX-form (vmulesb VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMULESH, 0xfc0007ff00000000, 0x1000034800000000, 0x0, // Vector Multiply Even Signed Halfword VX-form (vmulesh VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMULEUB, 0xfc0007ff00000000, 0x1000020800000000, 0x0, // Vector Multiply Even Unsigned Byte VX-form (vmuleub VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMULEUH, 0xfc0007ff00000000, 0x1000024800000000, 0x0, // Vector Multiply Even Unsigned Halfword VX-form (vmuleuh VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMULOSB, 0xfc0007ff00000000, 0x1000010800000000, 0x0, // Vector Multiply Odd Signed Byte VX-form (vmulosb VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMULOSH, 0xfc0007ff00000000, 0x1000014800000000, 0x0, // Vector Multiply Odd Signed Halfword VX-form (vmulosh VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMULOUB, 0xfc0007ff00000000, 0x1000000800000000, 0x0, // Vector Multiply Odd Unsigned Byte VX-form (vmuloub VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VMULOUH, 0xfc0007ff00000000, 0x1000004800000000, 0x0, // Vector Multiply Odd Unsigned Halfword VX-form (vmulouh VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VNMSUBFP, 0xfc00003f00000000, 0x1000002f00000000, 0x0, // Vector Negative Multiply-Subtract Floating-Point VA-form (vnmsubfp VRT,VRA,VRC,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_21_25, ap_VecReg_16_20}}, + {VNOR, 0xfc0007ff00000000, 0x1000050400000000, 0x0, // Vector Logical NOR VX-form (vnor VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VOR, 0xfc0007ff00000000, 0x1000048400000000, 0x0, // Vector Logical OR VX-form (vor VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VPERM, 0xfc00003f00000000, 0x1000002b00000000, 0x0, // Vector Permute VA-form (vperm VRT,VRA,VRB,VRC) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, + {VPKPX, 0xfc0007ff00000000, 0x1000030e00000000, 0x0, // Vector Pack Pixel VX-form (vpkpx VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VPKSHSS, 0xfc0007ff00000000, 0x1000018e00000000, 0x0, // Vector Pack Signed Halfword Signed Saturate VX-form (vpkshss VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VPKSHUS, 0xfc0007ff00000000, 0x1000010e00000000, 0x0, // Vector Pack Signed Halfword Unsigned Saturate VX-form (vpkshus VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VPKSWSS, 0xfc0007ff00000000, 0x100001ce00000000, 0x0, // Vector Pack Signed Word Signed Saturate VX-form (vpkswss VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VPKSWUS, 0xfc0007ff00000000, 0x1000014e00000000, 0x0, // Vector Pack Signed Word Unsigned Saturate VX-form (vpkswus VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VPKUHUM, 0xfc0007ff00000000, 0x1000000e00000000, 0x0, // Vector Pack Unsigned Halfword Unsigned Modulo VX-form (vpkuhum VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VPKUHUS, 0xfc0007ff00000000, 0x1000008e00000000, 0x0, // Vector Pack Unsigned Halfword Unsigned Saturate VX-form (vpkuhus VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VPKUWUM, 0xfc0007ff00000000, 0x1000004e00000000, 0x0, // Vector Pack Unsigned Word Unsigned Modulo VX-form (vpkuwum VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VPKUWUS, 0xfc0007ff00000000, 0x100000ce00000000, 0x0, // Vector Pack Unsigned Word Unsigned Saturate VX-form (vpkuwus VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VREFP, 0xfc0007ff00000000, 0x1000010a00000000, 0x1f000000000000, // Vector Reciprocal Estimate Floating-Point VX-form (vrefp VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VRFIM, 0xfc0007ff00000000, 0x100002ca00000000, 0x1f000000000000, // Vector Round to Floating-Point Integer toward -Infinity VX-form (vrfim VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VRFIN, 0xfc0007ff00000000, 0x1000020a00000000, 0x1f000000000000, // Vector Round to Floating-Point Integer Nearest VX-form (vrfin VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VRFIP, 0xfc0007ff00000000, 0x1000028a00000000, 0x1f000000000000, // Vector Round to Floating-Point Integer toward +Infinity VX-form (vrfip VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VRFIZ, 0xfc0007ff00000000, 0x1000024a00000000, 0x1f000000000000, // Vector Round to Floating-Point Integer toward Zero VX-form (vrfiz VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VRLB, 0xfc0007ff00000000, 0x1000000400000000, 0x0, // Vector Rotate Left Byte VX-form (vrlb VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VRLH, 0xfc0007ff00000000, 0x1000004400000000, 0x0, // Vector Rotate Left Halfword VX-form (vrlh VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VRLW, 0xfc0007ff00000000, 0x1000008400000000, 0x0, // Vector Rotate Left Word VX-form (vrlw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VRSQRTEFP, 0xfc0007ff00000000, 0x1000014a00000000, 0x1f000000000000, // Vector Reciprocal Square Root Estimate Floating-Point VX-form (vrsqrtefp VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VSEL, 0xfc00003f00000000, 0x1000002a00000000, 0x0, // Vector Select VA-form (vsel VRT,VRA,VRB,VRC) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_VecReg_21_25}}, + {VSL, 0xfc0007ff00000000, 0x100001c400000000, 0x0, // Vector Shift Left VX-form (vsl VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSLB, 0xfc0007ff00000000, 0x1000010400000000, 0x0, // Vector Shift Left Byte VX-form (vslb VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSLDOI, 0xfc00003f00000000, 0x1000002c00000000, 0x40000000000, // Vector Shift Left Double by Octet Immediate VA-form (vsldoi VRT,VRA,VRB,SHB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20, ap_ImmUnsigned_22_25}}, + {VSLH, 0xfc0007ff00000000, 0x1000014400000000, 0x0, // Vector Shift Left Halfword VX-form (vslh VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSLO, 0xfc0007ff00000000, 0x1000040c00000000, 0x0, // Vector Shift Left by Octet VX-form (vslo VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSLW, 0xfc0007ff00000000, 0x1000018400000000, 0x0, // Vector Shift Left Word VX-form (vslw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSPLTB, 0xfc0007ff00000000, 0x1000020c00000000, 0x10000000000000, // Vector Splat Byte VX-form (vspltb VRT,VRB,UIM) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_12_15}}, + {VSPLTH, 0xfc0007ff00000000, 0x1000024c00000000, 0x18000000000000, // Vector Splat Halfword VX-form (vsplth VRT,VRB,UIM) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_13_15}}, + {VSPLTISB, 0xfc0007ff00000000, 0x1000030c00000000, 0xf80000000000, // Vector Splat Immediate Signed Byte VX-form (vspltisb VRT,SIM) + [6]*argField{ap_VecReg_6_10, ap_ImmSigned_11_15}}, + {VSPLTISH, 0xfc0007ff00000000, 0x1000034c00000000, 0xf80000000000, // Vector Splat Immediate Signed Halfword VX-form (vspltish VRT,SIM) + [6]*argField{ap_VecReg_6_10, ap_ImmSigned_11_15}}, + {VSPLTISW, 0xfc0007ff00000000, 0x1000038c00000000, 0xf80000000000, // Vector Splat Immediate Signed Word VX-form (vspltisw VRT,SIM) + [6]*argField{ap_VecReg_6_10, ap_ImmSigned_11_15}}, + {VSPLTW, 0xfc0007ff00000000, 0x1000028c00000000, 0x1c000000000000, // Vector Splat Word VX-form (vspltw VRT,VRB,UIM) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20, ap_ImmUnsigned_14_15}}, + {VSR, 0xfc0007ff00000000, 0x100002c400000000, 0x0, // Vector Shift Right VX-form (vsr VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSRAB, 0xfc0007ff00000000, 0x1000030400000000, 0x0, // Vector Shift Right Algebraic Byte VX-form (vsrab VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSRAH, 0xfc0007ff00000000, 0x1000034400000000, 0x0, // Vector Shift Right Algebraic Halfword VX-form (vsrah VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSRAW, 0xfc0007ff00000000, 0x1000038400000000, 0x0, // Vector Shift Right Algebraic Word VX-form (vsraw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSRB, 0xfc0007ff00000000, 0x1000020400000000, 0x0, // Vector Shift Right Byte VX-form (vsrb VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSRH, 0xfc0007ff00000000, 0x1000024400000000, 0x0, // Vector Shift Right Halfword VX-form (vsrh VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSRO, 0xfc0007ff00000000, 0x1000044c00000000, 0x0, // Vector Shift Right by Octet VX-form (vsro VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSRW, 0xfc0007ff00000000, 0x1000028400000000, 0x0, // Vector Shift Right Word VX-form (vsrw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSUBCUW, 0xfc0007ff00000000, 0x1000058000000000, 0x0, // Vector Subtract & Write Carry-out Unsigned Word VX-form (vsubcuw VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSUBFP, 0xfc0007ff00000000, 0x1000004a00000000, 0x0, // Vector Subtract Floating-Point VX-form (vsubfp VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSUBSBS, 0xfc0007ff00000000, 0x1000070000000000, 0x0, // Vector Subtract Signed Byte Saturate VX-form (vsubsbs VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSUBSHS, 0xfc0007ff00000000, 0x1000074000000000, 0x0, // Vector Subtract Signed Halfword Saturate VX-form (vsubshs VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSUBSWS, 0xfc0007ff00000000, 0x1000078000000000, 0x0, // Vector Subtract Signed Word Saturate VX-form (vsubsws VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSUBUBM, 0xfc0007ff00000000, 0x1000040000000000, 0x0, // Vector Subtract Unsigned Byte Modulo VX-form (vsububm VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSUBUBS, 0xfc0007ff00000000, 0x1000060000000000, 0x0, // Vector Subtract Unsigned Byte Saturate VX-form (vsububs VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSUBUHM, 0xfc0007ff00000000, 0x1000044000000000, 0x0, // Vector Subtract Unsigned Halfword Modulo VX-form (vsubuhm VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSUBUHS, 0xfc0007ff00000000, 0x1000064000000000, 0x0, // Vector Subtract Unsigned Halfword Saturate VX-form (vsubuhs VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSUBUWM, 0xfc0007ff00000000, 0x1000048000000000, 0x0, // Vector Subtract Unsigned Word Modulo VX-form (vsubuwm VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSUBUWS, 0xfc0007ff00000000, 0x1000068000000000, 0x0, // Vector Subtract Unsigned Word Saturate VX-form (vsubuws VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSUM2SWS, 0xfc0007ff00000000, 0x1000068800000000, 0x0, // Vector Sum across Half Signed Word Saturate VX-form (vsum2sws VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSUM4SBS, 0xfc0007ff00000000, 0x1000070800000000, 0x0, // Vector Sum across Quarter Signed Byte Saturate VX-form (vsum4sbs VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSUM4SHS, 0xfc0007ff00000000, 0x1000064800000000, 0x0, // Vector Sum across Quarter Signed Halfword Saturate VX-form (vsum4shs VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSUM4UBS, 0xfc0007ff00000000, 0x1000060800000000, 0x0, // Vector Sum across Quarter Unsigned Byte Saturate VX-form (vsum4ubs VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VSUMSWS, 0xfc0007ff00000000, 0x1000078800000000, 0x0, // Vector Sum across Signed Word Saturate VX-form (vsumsws VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {VUPKHPX, 0xfc0007ff00000000, 0x1000034e00000000, 0x1f000000000000, // Vector Unpack High Pixel VX-form (vupkhpx VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VUPKHSB, 0xfc0007ff00000000, 0x1000020e00000000, 0x1f000000000000, // Vector Unpack High Signed Byte VX-form (vupkhsb VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VUPKHSH, 0xfc0007ff00000000, 0x1000024e00000000, 0x1f000000000000, // Vector Unpack High Signed Halfword VX-form (vupkhsh VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VUPKLPX, 0xfc0007ff00000000, 0x100003ce00000000, 0x1f000000000000, // Vector Unpack Low Pixel VX-form (vupklpx VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VUPKLSB, 0xfc0007ff00000000, 0x1000028e00000000, 0x1f000000000000, // Vector Unpack Low Signed Byte VX-form (vupklsb VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VUPKLSH, 0xfc0007ff00000000, 0x100002ce00000000, 0x1f000000000000, // Vector Unpack Low Signed Halfword VX-form (vupklsh VRT,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_16_20}}, + {VXOR, 0xfc0007ff00000000, 0x100004c400000000, 0x0, // Vector Logical XOR VX-form (vxor VRT,VRA,VRB) + [6]*argField{ap_VecReg_6_10, ap_VecReg_11_15, ap_VecReg_16_20}}, + {FRE, 0xfc00003f00000000, 0xfc00003000000000, 0x1f07c000000000, // Floating Reciprocal Estimate A-form (fre FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FRECC, 0xfc00003f00000000, 0xfc00003100000000, 0x1f07c000000000, // Floating Reciprocal Estimate A-form (fre. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FRIM, 0xfc0007ff00000000, 0xfc0003d000000000, 0x1f000000000000, // Floating Round to Integer Minus X-form (frim FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FRIMCC, 0xfc0007ff00000000, 0xfc0003d100000000, 0x1f000000000000, // Floating Round to Integer Minus X-form (frim. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FRIN, 0xfc0007ff00000000, 0xfc00031000000000, 0x1f000000000000, // Floating Round to Integer Nearest X-form (frin FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FRINCC, 0xfc0007ff00000000, 0xfc00031100000000, 0x1f000000000000, // Floating Round to Integer Nearest X-form (frin. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FRIP, 0xfc0007ff00000000, 0xfc00039000000000, 0x1f000000000000, // Floating Round to Integer Plus X-form (frip FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FRIPCC, 0xfc0007ff00000000, 0xfc00039100000000, 0x1f000000000000, // Floating Round to Integer Plus X-form (frip. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FRIZ, 0xfc0007ff00000000, 0xfc00035000000000, 0x1f000000000000, // Floating Round to Integer Toward Zero X-form (friz FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FRIZCC, 0xfc0007ff00000000, 0xfc00035100000000, 0x1f000000000000, // Floating Round to Integer Toward Zero X-form (friz. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FRSQRTES, 0xfc00003f00000000, 0xec00003400000000, 0x1f07c000000000, // Floating Reciprocal Square Root Estimate Single A-form (frsqrtes FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FRSQRTESCC, 0xfc00003f00000000, 0xec00003500000000, 0x1f07c000000000, // Floating Reciprocal Square Root Estimate Single A-form (frsqrtes. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {HRFID, 0xfc0007fe00000000, 0x4c00022400000000, 0x3fff80100000000, // Return From Interrupt Doubleword Hypervisor XL-form (hrfid) + [6]*argField{}}, + {POPCNTB, 0xfc0007fe00000000, 0x7c0000f400000000, 0xf80100000000, // Population Count Bytes X-form (popcntb RA, RS) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10}}, + {MFOCRF, 0xfc1007fe00000000, 0x7c10002600000000, 0x80100000000, // Move From One Condition Register Field XFX-form (mfocrf RT,FXM) + [6]*argField{ap_Reg_6_10, ap_ImmUnsigned_12_19}}, + {MTOCRF, 0xfc1007fe00000000, 0x7c10012000000000, 0x80100000000, // Move To One Condition Register Field XFX-form (mtocrf FXM,RS) + [6]*argField{ap_ImmUnsigned_12_19, ap_Reg_6_10}}, + {SLBMFEE, 0xfc0007fe00000000, 0x7c00072600000000, 0x1e000100000000, // SLB Move From Entry ESID X-form (slbmfee RT,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_16_20}}, + {SLBMFEV, 0xfc0007fe00000000, 0x7c0006a600000000, 0x1e000100000000, // SLB Move From Entry VSID X-form (slbmfev RT,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_16_20}}, + {SLBMTE, 0xfc0007fe00000000, 0x7c00032400000000, 0x1f000100000000, // SLB Move To Entry X-form (slbmte RS,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_16_20}}, + {RFSCV, 0xfc0007fe00000000, 0x4c0000a400000000, 0x3fff80100000000, // Return From System Call Vectored XL-form (rfscv) + [6]*argField{}}, + {SCV, 0xfc00000300000000, 0x4400000100000000, 0x3fff01c00000000, // System Call Vectored SC-form (scv LEV) + [6]*argField{ap_ImmUnsigned_20_26}}, + {LQ, 0xfc00000000000000, 0xe000000000000000, 0xf00000000, // Load Quadword DQ-form (lq RTp,DQ(RA)) + [6]*argField{ap_Reg_6_10, ap_Offset_16_27_shift4, ap_Reg_11_15}}, + {STQ, 0xfc00000300000000, 0xf800000200000000, 0x0, // Store Quadword DS-form (stq RSp,DS(RA)) + [6]*argField{ap_Reg_6_10, ap_Offset_16_29_shift2, ap_Reg_11_15}}, + {CNTLZD, 0xfc0007ff00000000, 0x7c00007400000000, 0xf80000000000, // Count Leading Zeros Doubleword X-form (cntlzd RA,RS) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10}}, + {CNTLZDCC, 0xfc0007ff00000000, 0x7c00007500000000, 0xf80000000000, // Count Leading Zeros Doubleword X-form (cntlzd. RA,RS) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10}}, + {DCBF, 0xfc0007fe00000000, 0x7c0000ac00000000, 0x300000100000000, // Data Cache Block Flush X-form (dcbf RA,RB,L) + [6]*argField{ap_Reg_11_15, ap_Reg_16_20, ap_ImmUnsigned_8_10}}, + {DCBST, 0xfc0007fe00000000, 0x7c00006c00000000, 0x3e0000100000000, // Data Cache Block Store X-form (dcbst RA,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_16_20}}, + {DCBT, 0xfc0007fe00000000, 0x7c00022c00000000, 0x100000000, // Data Cache Block Touch X-form (dcbt RA,RB,TH) + [6]*argField{ap_Reg_11_15, ap_Reg_16_20, ap_ImmUnsigned_6_10}}, + {DCBTST, 0xfc0007fe00000000, 0x7c0001ec00000000, 0x100000000, // Data Cache Block Touch for Store X-form (dcbtst RA,RB,TH) + [6]*argField{ap_Reg_11_15, ap_Reg_16_20, ap_ImmUnsigned_6_10}}, + {DIVD, 0xfc0007ff00000000, 0x7c0003d200000000, 0x0, // Divide Doubleword XO-form (divd RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {DIVDCC, 0xfc0007ff00000000, 0x7c0003d300000000, 0x0, // Divide Doubleword XO-form (divd. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {DIVDO, 0xfc0007ff00000000, 0x7c0007d200000000, 0x0, // Divide Doubleword XO-form (divdo RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {DIVDOCC, 0xfc0007ff00000000, 0x7c0007d300000000, 0x0, // Divide Doubleword XO-form (divdo. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {DIVDU, 0xfc0007ff00000000, 0x7c00039200000000, 0x0, // Divide Doubleword Unsigned XO-form (divdu RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {DIVDUCC, 0xfc0007ff00000000, 0x7c00039300000000, 0x0, // Divide Doubleword Unsigned XO-form (divdu. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {DIVDUO, 0xfc0007ff00000000, 0x7c00079200000000, 0x0, // Divide Doubleword Unsigned XO-form (divduo RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {DIVDUOCC, 0xfc0007ff00000000, 0x7c00079300000000, 0x0, // Divide Doubleword Unsigned XO-form (divduo. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {DIVW, 0xfc0007ff00000000, 0x7c0003d600000000, 0x0, // Divide Word XO-form (divw RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {DIVWCC, 0xfc0007ff00000000, 0x7c0003d700000000, 0x0, // Divide Word XO-form (divw. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {DIVWO, 0xfc0007ff00000000, 0x7c0007d600000000, 0x0, // Divide Word XO-form (divwo RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {DIVWOCC, 0xfc0007ff00000000, 0x7c0007d700000000, 0x0, // Divide Word XO-form (divwo. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {DIVWU, 0xfc0007ff00000000, 0x7c00039600000000, 0x0, // Divide Word Unsigned XO-form (divwu RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {DIVWUCC, 0xfc0007ff00000000, 0x7c00039700000000, 0x0, // Divide Word Unsigned XO-form (divwu. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {DIVWUO, 0xfc0007ff00000000, 0x7c00079600000000, 0x0, // Divide Word Unsigned XO-form (divwuo RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {DIVWUOCC, 0xfc0007ff00000000, 0x7c00079700000000, 0x0, // Divide Word Unsigned XO-form (divwuo. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {EIEIO, 0xfc0007fe00000000, 0x7c0006ac00000000, 0x3fff80100000000, // Enforce In-order Execution of I/O X-form (eieio) + [6]*argField{}}, + {EXTSB, 0xfc0007ff00000000, 0x7c00077400000000, 0xf80000000000, // Extend Sign Byte X-form (extsb RA,RS) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10}}, + {EXTSBCC, 0xfc0007ff00000000, 0x7c00077500000000, 0xf80000000000, // Extend Sign Byte X-form (extsb. RA,RS) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10}}, + {EXTSW, 0xfc0007ff00000000, 0x7c0007b400000000, 0xf80000000000, // Extend Sign Word X-form (extsw RA,RS) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10}}, + {EXTSWCC, 0xfc0007ff00000000, 0x7c0007b500000000, 0xf80000000000, // Extend Sign Word X-form (extsw. RA,RS) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10}}, + {FADDS, 0xfc00003f00000000, 0xec00002a00000000, 0x7c000000000, // Floating Add Single A-form (fadds FRT,FRA,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {FADDSCC, 0xfc00003f00000000, 0xec00002b00000000, 0x7c000000000, // Floating Add Single A-form (fadds. FRT,FRA,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {FCFID, 0xfc0007ff00000000, 0xfc00069c00000000, 0x1f000000000000, // Floating Convert with round Signed Doubleword to Double-Precision format X-form (fcfid FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FCFIDCC, 0xfc0007ff00000000, 0xfc00069d00000000, 0x1f000000000000, // Floating Convert with round Signed Doubleword to Double-Precision format X-form (fcfid. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FCTID, 0xfc0007ff00000000, 0xfc00065c00000000, 0x1f000000000000, // Floating Convert with round Double-Precision To Signed Doubleword format X-form (fctid FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FCTIDCC, 0xfc0007ff00000000, 0xfc00065d00000000, 0x1f000000000000, // Floating Convert with round Double-Precision To Signed Doubleword format X-form (fctid. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FCTIDZ, 0xfc0007ff00000000, 0xfc00065e00000000, 0x1f000000000000, // Floating Convert with truncate Double-Precision To Signed Doubleword format X-form (fctidz FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FCTIDZCC, 0xfc0007ff00000000, 0xfc00065f00000000, 0x1f000000000000, // Floating Convert with truncate Double-Precision To Signed Doubleword format X-form (fctidz. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FDIVS, 0xfc00003f00000000, 0xec00002400000000, 0x7c000000000, // Floating Divide Single A-form (fdivs FRT,FRA,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {FDIVSCC, 0xfc00003f00000000, 0xec00002500000000, 0x7c000000000, // Floating Divide Single A-form (fdivs. FRT,FRA,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {FMADDS, 0xfc00003f00000000, 0xec00003a00000000, 0x0, // Floating Multiply-Add Single A-form (fmadds FRT,FRA,FRC,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, + {FMADDSCC, 0xfc00003f00000000, 0xec00003b00000000, 0x0, // Floating Multiply-Add Single A-form (fmadds. FRT,FRA,FRC,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, + {FMSUBS, 0xfc00003f00000000, 0xec00003800000000, 0x0, // Floating Multiply-Subtract Single A-form (fmsubs FRT,FRA,FRC,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, + {FMSUBSCC, 0xfc00003f00000000, 0xec00003900000000, 0x0, // Floating Multiply-Subtract Single A-form (fmsubs. FRT,FRA,FRC,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, + {FMULS, 0xfc00003f00000000, 0xec00003200000000, 0xf80000000000, // Floating Multiply Single A-form (fmuls FRT,FRA,FRC) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25}}, + {FMULSCC, 0xfc00003f00000000, 0xec00003300000000, 0xf80000000000, // Floating Multiply Single A-form (fmuls. FRT,FRA,FRC) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25}}, + {FNMADDS, 0xfc00003f00000000, 0xec00003e00000000, 0x0, // Floating Negative Multiply-Add Single A-form (fnmadds FRT,FRA,FRC,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, + {FNMADDSCC, 0xfc00003f00000000, 0xec00003f00000000, 0x0, // Floating Negative Multiply-Add Single A-form (fnmadds. FRT,FRA,FRC,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, + {FNMSUBS, 0xfc00003f00000000, 0xec00003c00000000, 0x0, // Floating Negative Multiply-Subtract Single A-form (fnmsubs FRT,FRA,FRC,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, + {FNMSUBSCC, 0xfc00003f00000000, 0xec00003d00000000, 0x0, // Floating Negative Multiply-Subtract Single A-form (fnmsubs. FRT,FRA,FRC,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, + {FRES, 0xfc00003f00000000, 0xec00003000000000, 0x1f07c000000000, // Floating Reciprocal Estimate Single A-form (fres FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FRESCC, 0xfc00003f00000000, 0xec00003100000000, 0x1f07c000000000, // Floating Reciprocal Estimate Single A-form (fres. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FRSQRTE, 0xfc00003f00000000, 0xfc00003400000000, 0x1f07c000000000, // Floating Reciprocal Square Root Estimate A-form (frsqrte FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FRSQRTECC, 0xfc00003f00000000, 0xfc00003500000000, 0x1f07c000000000, // Floating Reciprocal Square Root Estimate A-form (frsqrte. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FSEL, 0xfc00003f00000000, 0xfc00002e00000000, 0x0, // Floating Select A-form (fsel FRT,FRA,FRC,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, + {FSELCC, 0xfc00003f00000000, 0xfc00002f00000000, 0x0, // Floating Select A-form (fsel. FRT,FRA,FRC,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, + {FSQRTS, 0xfc00003f00000000, 0xec00002c00000000, 0x1f07c000000000, // Floating Square Root Single A-form (fsqrts FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FSQRTSCC, 0xfc00003f00000000, 0xec00002d00000000, 0x1f07c000000000, // Floating Square Root Single A-form (fsqrts. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FSUBS, 0xfc00003f00000000, 0xec00002800000000, 0x7c000000000, // Floating Subtract Single A-form (fsubs FRT,FRA,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {FSUBSCC, 0xfc00003f00000000, 0xec00002900000000, 0x7c000000000, // Floating Subtract Single A-form (fsubs. FRT,FRA,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {ICBI, 0xfc0007fe00000000, 0x7c0007ac00000000, 0x3e0000100000000, // Instruction Cache Block Invalidate X-form (icbi RA,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_16_20}}, + {LD, 0xfc00000300000000, 0xe800000000000000, 0x0, // Load Doubleword DS-form (ld RT,DS(RA)) + [6]*argField{ap_Reg_6_10, ap_Offset_16_29_shift2, ap_Reg_11_15}}, + {LDARX, 0xfc0007fe00000000, 0x7c0000a800000000, 0x0, // Load Doubleword And Reserve Indexed X-form (ldarx RT,RA,RB,EH) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20, ap_ImmUnsigned_31_31}}, + {LDU, 0xfc00000300000000, 0xe800000100000000, 0x0, // Load Doubleword with Update DS-form (ldu RT,DS(RA)) + [6]*argField{ap_Reg_6_10, ap_Offset_16_29_shift2, ap_Reg_11_15}}, + {LDUX, 0xfc0007fe00000000, 0x7c00006a00000000, 0x100000000, // Load Doubleword with Update Indexed X-form (ldux RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LDX, 0xfc0007fe00000000, 0x7c00002a00000000, 0x100000000, // Load Doubleword Indexed X-form (ldx RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LWA, 0xfc00000300000000, 0xe800000200000000, 0x0, // Load Word Algebraic DS-form (lwa RT,DS(RA)) + [6]*argField{ap_Reg_6_10, ap_Offset_16_29_shift2, ap_Reg_11_15}}, + {LWARX, 0xfc0007fe00000000, 0x7c00002800000000, 0x0, // Load Word & Reserve Indexed X-form (lwarx RT,RA,RB,EH) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20, ap_ImmUnsigned_31_31}}, + {LWAUX, 0xfc0007fe00000000, 0x7c0002ea00000000, 0x100000000, // Load Word Algebraic with Update Indexed X-form (lwaux RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LWAX, 0xfc0007fe00000000, 0x7c0002aa00000000, 0x100000000, // Load Word Algebraic Indexed X-form (lwax RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {MFTB, 0xfc0007fe00000000, 0x7c0002e600000000, 0x100000000, // Move From Time Base XFX-form (mftb RT,TBR) + [6]*argField{ap_Reg_6_10, ap_SpReg_16_20_11_15}}, + {MTMSRD, 0xfc0007fe00000000, 0x7c00016400000000, 0x1ef80100000000, // Move To MSR Doubleword X-form (mtmsrd RS,L) + [6]*argField{ap_Reg_6_10, ap_ImmUnsigned_15_15}}, + {MULHD, 0xfc0003ff00000000, 0x7c00009200000000, 0x40000000000, // Multiply High Doubleword XO-form (mulhd RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {MULHDCC, 0xfc0003ff00000000, 0x7c00009300000000, 0x40000000000, // Multiply High Doubleword XO-form (mulhd. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {MULHDU, 0xfc0003ff00000000, 0x7c00001200000000, 0x40000000000, // Multiply High Doubleword Unsigned XO-form (mulhdu RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {MULHDUCC, 0xfc0003ff00000000, 0x7c00001300000000, 0x40000000000, // Multiply High Doubleword Unsigned XO-form (mulhdu. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {MULHW, 0xfc0003ff00000000, 0x7c00009600000000, 0x40000000000, // Multiply High Word XO-form (mulhw RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {MULHWCC, 0xfc0003ff00000000, 0x7c00009700000000, 0x40000000000, // Multiply High Word XO-form (mulhw. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {MULHWU, 0xfc0003ff00000000, 0x7c00001600000000, 0x40000000000, // Multiply High Word Unsigned XO-form (mulhwu RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {MULHWUCC, 0xfc0003ff00000000, 0x7c00001700000000, 0x40000000000, // Multiply High Word Unsigned XO-form (mulhwu. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {MULLD, 0xfc0007ff00000000, 0x7c0001d200000000, 0x0, // Multiply Low Doubleword XO-form (mulld RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {MULLDCC, 0xfc0007ff00000000, 0x7c0001d300000000, 0x0, // Multiply Low Doubleword XO-form (mulld. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {MULLDO, 0xfc0007ff00000000, 0x7c0005d200000000, 0x0, // Multiply Low Doubleword XO-form (mulldo RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {MULLDOCC, 0xfc0007ff00000000, 0x7c0005d300000000, 0x0, // Multiply Low Doubleword XO-form (mulldo. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {RFID, 0xfc0007fe00000000, 0x4c00002400000000, 0x3fff80100000000, // Return from Interrupt Doubleword XL-form (rfid) + [6]*argField{}}, + {RLDCL, 0xfc00001f00000000, 0x7800001000000000, 0x0, // Rotate Left Doubleword then Clear Left MDS-form (rldcl RA,RS,RB,MB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20, ap_ImmUnsigned_26_26_21_25}}, + {RLDCLCC, 0xfc00001f00000000, 0x7800001100000000, 0x0, // Rotate Left Doubleword then Clear Left MDS-form (rldcl. RA,RS,RB,MB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20, ap_ImmUnsigned_26_26_21_25}}, + {RLDCR, 0xfc00001f00000000, 0x7800001200000000, 0x0, // Rotate Left Doubleword then Clear Right MDS-form (rldcr RA,RS,RB,ME) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20, ap_ImmUnsigned_26_26_21_25}}, + {RLDCRCC, 0xfc00001f00000000, 0x7800001300000000, 0x0, // Rotate Left Doubleword then Clear Right MDS-form (rldcr. RA,RS,RB,ME) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20, ap_ImmUnsigned_26_26_21_25}}, + {RLDIC, 0xfc00001d00000000, 0x7800000800000000, 0x0, // Rotate Left Doubleword Immediate then Clear MD-form (rldic RA,RS,SH,MB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_30_30_16_20, ap_ImmUnsigned_26_26_21_25}}, + {RLDICCC, 0xfc00001d00000000, 0x7800000900000000, 0x0, // Rotate Left Doubleword Immediate then Clear MD-form (rldic. RA,RS,SH,MB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_30_30_16_20, ap_ImmUnsigned_26_26_21_25}}, + {RLDICL, 0xfc00001d00000000, 0x7800000000000000, 0x0, // Rotate Left Doubleword Immediate then Clear Left MD-form (rldicl RA,RS,SH,MB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_30_30_16_20, ap_ImmUnsigned_26_26_21_25}}, + {RLDICLCC, 0xfc00001d00000000, 0x7800000100000000, 0x0, // Rotate Left Doubleword Immediate then Clear Left MD-form (rldicl. RA,RS,SH,MB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_30_30_16_20, ap_ImmUnsigned_26_26_21_25}}, + {RLDICR, 0xfc00001d00000000, 0x7800000400000000, 0x0, // Rotate Left Doubleword Immediate then Clear Right MD-form (rldicr RA,RS,SH,ME) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_30_30_16_20, ap_ImmUnsigned_26_26_21_25}}, + {RLDICRCC, 0xfc00001d00000000, 0x7800000500000000, 0x0, // Rotate Left Doubleword Immediate then Clear Right MD-form (rldicr. RA,RS,SH,ME) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_30_30_16_20, ap_ImmUnsigned_26_26_21_25}}, + {RLDIMI, 0xfc00001d00000000, 0x7800000c00000000, 0x0, // Rotate Left Doubleword Immediate then Mask Insert MD-form (rldimi RA,RS,SH,MB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_30_30_16_20, ap_ImmUnsigned_26_26_21_25}}, + {RLDIMICC, 0xfc00001d00000000, 0x7800000d00000000, 0x0, // Rotate Left Doubleword Immediate then Mask Insert MD-form (rldimi. RA,RS,SH,MB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_30_30_16_20, ap_ImmUnsigned_26_26_21_25}}, + {SC, 0xfc00000200000000, 0x4400000200000000, 0x3fff01d00000000, // System Call SC-form (sc LEV) + [6]*argField{ap_ImmUnsigned_20_26}}, + {SLBIA, 0xfc0007fe00000000, 0x7c0003e400000000, 0x31ff80100000000, // SLB Invalidate All X-form (slbia IH) + [6]*argField{ap_ImmUnsigned_8_10}}, + {SLBIE, 0xfc0007fe00000000, 0x7c00036400000000, 0x3ff000100000000, // SLB Invalidate Entry X-form (slbie RB) + [6]*argField{ap_Reg_16_20}}, + {SLD, 0xfc0007ff00000000, 0x7c00003600000000, 0x0, // Shift Left Doubleword X-form (sld RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {SLDCC, 0xfc0007ff00000000, 0x7c00003700000000, 0x0, // Shift Left Doubleword X-form (sld. RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {SRAD, 0xfc0007ff00000000, 0x7c00063400000000, 0x0, // Shift Right Algebraic Doubleword X-form (srad RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {SRADCC, 0xfc0007ff00000000, 0x7c00063500000000, 0x0, // Shift Right Algebraic Doubleword X-form (srad. RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {SRADI, 0xfc0007fd00000000, 0x7c00067400000000, 0x0, // Shift Right Algebraic Doubleword Immediate XS-form (sradi RA,RS,SH) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_30_30_16_20}}, + {SRADICC, 0xfc0007fd00000000, 0x7c00067500000000, 0x0, // Shift Right Algebraic Doubleword Immediate XS-form (sradi. RA,RS,SH) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_30_30_16_20}}, + {SRD, 0xfc0007ff00000000, 0x7c00043600000000, 0x0, // Shift Right Doubleword X-form (srd RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {SRDCC, 0xfc0007ff00000000, 0x7c00043700000000, 0x0, // Shift Right Doubleword X-form (srd. RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {STD, 0xfc00000300000000, 0xf800000000000000, 0x0, // Store Doubleword DS-form (std RS,DS(RA)) + [6]*argField{ap_Reg_6_10, ap_Offset_16_29_shift2, ap_Reg_11_15}}, + {STDCXCC, 0xfc0007ff00000000, 0x7c0001ad00000000, 0x0, // Store Doubleword Conditional Indexed X-form (stdcx. RS,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STDU, 0xfc00000300000000, 0xf800000100000000, 0x0, // Store Doubleword with Update DS-form (stdu RS,DS(RA)) + [6]*argField{ap_Reg_6_10, ap_Offset_16_29_shift2, ap_Reg_11_15}}, + {STDUX, 0xfc0007fe00000000, 0x7c00016a00000000, 0x100000000, // Store Doubleword with Update Indexed X-form (stdux RS,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STDX, 0xfc0007fe00000000, 0x7c00012a00000000, 0x100000000, // Store Doubleword Indexed X-form (stdx RS,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STFIWX, 0xfc0007fe00000000, 0x7c0007ae00000000, 0x100000000, // Store Floating-Point as Integer Word Indexed X-form (stfiwx FRS,RA,RB) + [6]*argField{ap_FPReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STWCXCC, 0xfc0007ff00000000, 0x7c00012d00000000, 0x0, // Store Word Conditional Indexed X-form (stwcx. RS,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {SUBF, 0xfc0007ff00000000, 0x7c00005000000000, 0x0, // Subtract From XO-form (subf RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {SUBFCC, 0xfc0007ff00000000, 0x7c00005100000000, 0x0, // Subtract From XO-form (subf. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {SUBFO, 0xfc0007ff00000000, 0x7c00045000000000, 0x0, // Subtract From XO-form (subfo RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {SUBFOCC, 0xfc0007ff00000000, 0x7c00045100000000, 0x0, // Subtract From XO-form (subfo. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {TD, 0xfc0007fe00000000, 0x7c00008800000000, 0x100000000, // Trap Doubleword X-form (td TO,RA,RB) + [6]*argField{ap_ImmUnsigned_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {TDI, 0xfc00000000000000, 0x800000000000000, 0x0, // Trap Doubleword Immediate D-form (tdi TO,RA,SI) + [6]*argField{ap_ImmUnsigned_6_10, ap_Reg_11_15, ap_ImmSigned_16_31}}, + {TLBSYNC, 0xfc0007fe00000000, 0x7c00046c00000000, 0x3fff80100000000, // TLB Synchronize X-form (tlbsync) + [6]*argField{}}, + {FCTIW, 0xfc0007ff00000000, 0xfc00001c00000000, 0x1f000000000000, // Floating Convert with round Double-Precision To Signed Word format X-form (fctiw FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FCTIWCC, 0xfc0007ff00000000, 0xfc00001d00000000, 0x1f000000000000, // Floating Convert with round Double-Precision To Signed Word format X-form (fctiw. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FCTIWZ, 0xfc0007ff00000000, 0xfc00001e00000000, 0x1f000000000000, // Floating Convert with truncate Double-Precision To Signed Word fomat X-form (fctiwz FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FCTIWZCC, 0xfc0007ff00000000, 0xfc00001f00000000, 0x1f000000000000, // Floating Convert with truncate Double-Precision To Signed Word fomat X-form (fctiwz. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FSQRT, 0xfc00003f00000000, 0xfc00002c00000000, 0x1f07c000000000, // Floating Square Root A-form (fsqrt FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FSQRTCC, 0xfc00003f00000000, 0xfc00002d00000000, 0x1f07c000000000, // Floating Square Root A-form (fsqrt. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {ADD, 0xfc0007ff00000000, 0x7c00021400000000, 0x0, // Add XO-form (add RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {ADDCC, 0xfc0007ff00000000, 0x7c00021500000000, 0x0, // Add XO-form (add. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {ADDO, 0xfc0007ff00000000, 0x7c00061400000000, 0x0, // Add XO-form (addo RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {ADDOCC, 0xfc0007ff00000000, 0x7c00061500000000, 0x0, // Add XO-form (addo. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {ADDC, 0xfc0007ff00000000, 0x7c00001400000000, 0x0, // Add Carrying XO-form (addc RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {ADDCCC, 0xfc0007ff00000000, 0x7c00001500000000, 0x0, // Add Carrying XO-form (addc. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {ADDCO, 0xfc0007ff00000000, 0x7c00041400000000, 0x0, // Add Carrying XO-form (addco RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {ADDCOCC, 0xfc0007ff00000000, 0x7c00041500000000, 0x0, // Add Carrying XO-form (addco. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {ADDE, 0xfc0007ff00000000, 0x7c00011400000000, 0x0, // Add Extended XO-form (adde RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {ADDECC, 0xfc0007ff00000000, 0x7c00011500000000, 0x0, // Add Extended XO-form (adde. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {ADDEO, 0xfc0007ff00000000, 0x7c00051400000000, 0x0, // Add Extended XO-form (addeo RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {ADDEOCC, 0xfc0007ff00000000, 0x7c00051500000000, 0x0, // Add Extended XO-form (addeo. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LI, 0xfc1f000000000000, 0x3800000000000000, 0x0, // Add Immediate D-form (li RT,SI) + [6]*argField{ap_Reg_6_10, ap_ImmSigned_16_31}}, + {ADDI, 0xfc00000000000000, 0x3800000000000000, 0x0, // Add Immediate D-form (addi RT,RA,SI) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_ImmSigned_16_31}}, + {ADDIC, 0xfc00000000000000, 0x3000000000000000, 0x0, // Add Immediate Carrying D-form (addic RT,RA,SI) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_ImmSigned_16_31}}, + {ADDICCC, 0xfc00000000000000, 0x3400000000000000, 0x0, // Add Immediate Carrying and Record D-form (addic. RT,RA,SI) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_ImmSigned_16_31}}, + {LIS, 0xfc1f000000000000, 0x3c00000000000000, 0x0, // Add Immediate Shifted D-form (lis RT,SI) + [6]*argField{ap_Reg_6_10, ap_ImmSigned_16_31}}, + {ADDIS, 0xfc00000000000000, 0x3c00000000000000, 0x0, // Add Immediate Shifted D-form (addis RT,RA,SI) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_ImmSigned_16_31}}, + {ADDME, 0xfc0007ff00000000, 0x7c0001d400000000, 0xf80000000000, // Add to Minus One Extended XO-form (addme RT,RA) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15}}, + {ADDMECC, 0xfc0007ff00000000, 0x7c0001d500000000, 0xf80000000000, // Add to Minus One Extended XO-form (addme. RT,RA) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15}}, + {ADDMEO, 0xfc0007ff00000000, 0x7c0005d400000000, 0xf80000000000, // Add to Minus One Extended XO-form (addmeo RT,RA) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15}}, + {ADDMEOCC, 0xfc0007ff00000000, 0x7c0005d500000000, 0xf80000000000, // Add to Minus One Extended XO-form (addmeo. RT,RA) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15}}, + {ADDZE, 0xfc0007ff00000000, 0x7c00019400000000, 0xf80000000000, // Add to Zero Extended XO-form (addze RT,RA) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15}}, + {ADDZECC, 0xfc0007ff00000000, 0x7c00019500000000, 0xf80000000000, // Add to Zero Extended XO-form (addze. RT,RA) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15}}, + {ADDZEO, 0xfc0007ff00000000, 0x7c00059400000000, 0xf80000000000, // Add to Zero Extended XO-form (addzeo RT,RA) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15}}, + {ADDZEOCC, 0xfc0007ff00000000, 0x7c00059500000000, 0xf80000000000, // Add to Zero Extended XO-form (addzeo. RT,RA) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15}}, + {AND, 0xfc0007ff00000000, 0x7c00003800000000, 0x0, // AND X-form (and RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {ANDCC, 0xfc0007ff00000000, 0x7c00003900000000, 0x0, // AND X-form (and. RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {ANDC, 0xfc0007ff00000000, 0x7c00007800000000, 0x0, // AND with Complement X-form (andc RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {ANDCCC, 0xfc0007ff00000000, 0x7c00007900000000, 0x0, // AND with Complement X-form (andc. RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {ANDICC, 0xfc00000000000000, 0x7000000000000000, 0x0, // AND Immediate D-form (andi. RA,RS,UI) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_16_31}}, + {ANDISCC, 0xfc00000000000000, 0x7400000000000000, 0x0, // AND Immediate Shifted D-form (andis. RA,RS,UI) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_16_31}}, + {B, 0xfc00000300000000, 0x4800000000000000, 0x0, // Branch I-form (b target_addr) + [6]*argField{ap_PCRel_6_29_shift2}}, + {BA, 0xfc00000300000000, 0x4800000200000000, 0x0, // Branch I-form (ba target_addr) + [6]*argField{ap_Label_6_29_shift2}}, + {BL, 0xfc00000300000000, 0x4800000100000000, 0x0, // Branch I-form (bl target_addr) + [6]*argField{ap_PCRel_6_29_shift2}}, + {BLA, 0xfc00000300000000, 0x4800000300000000, 0x0, // Branch I-form (bla target_addr) + [6]*argField{ap_Label_6_29_shift2}}, + {BC, 0xfc00000300000000, 0x4000000000000000, 0x0, // Branch Conditional B-form (bc BO,BI,target_addr) + [6]*argField{ap_ImmUnsigned_6_10, ap_CondRegBit_11_15, ap_PCRel_16_29_shift2}}, + {BCA, 0xfc00000300000000, 0x4000000200000000, 0x0, // Branch Conditional B-form (bca BO,BI,target_addr) + [6]*argField{ap_ImmUnsigned_6_10, ap_CondRegBit_11_15, ap_Label_16_29_shift2}}, + {BCL, 0xfc00000300000000, 0x4000000100000000, 0x0, // Branch Conditional B-form (bcl BO,BI,target_addr) + [6]*argField{ap_ImmUnsigned_6_10, ap_CondRegBit_11_15, ap_PCRel_16_29_shift2}}, + {BCLA, 0xfc00000300000000, 0x4000000300000000, 0x0, // Branch Conditional B-form (bcla BO,BI,target_addr) + [6]*argField{ap_ImmUnsigned_6_10, ap_CondRegBit_11_15, ap_Label_16_29_shift2}}, + {BCCTR, 0xfc0007ff00000000, 0x4c00042000000000, 0xe00000000000, // Branch Conditional to Count Register XL-form (bcctr BO,BI,BH) + [6]*argField{ap_ImmUnsigned_6_10, ap_CondRegBit_11_15, ap_ImmUnsigned_19_20}}, + {BCCTRL, 0xfc0007ff00000000, 0x4c00042100000000, 0xe00000000000, // Branch Conditional to Count Register XL-form (bcctrl BO,BI,BH) + [6]*argField{ap_ImmUnsigned_6_10, ap_CondRegBit_11_15, ap_ImmUnsigned_19_20}}, + {BCLR, 0xfc0007ff00000000, 0x4c00002000000000, 0xe00000000000, // Branch Conditional to Link Register XL-form (bclr BO,BI,BH) + [6]*argField{ap_ImmUnsigned_6_10, ap_CondRegBit_11_15, ap_ImmUnsigned_19_20}}, + {BCLRL, 0xfc0007ff00000000, 0x4c00002100000000, 0xe00000000000, // Branch Conditional to Link Register XL-form (bclrl BO,BI,BH) + [6]*argField{ap_ImmUnsigned_6_10, ap_CondRegBit_11_15, ap_ImmUnsigned_19_20}}, + {CMPW, 0xfc2007fe00000000, 0x7c00000000000000, 0x40000100000000, // Compare X-form (cmpw BF,RA,RB) + [6]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, + {CMPD, 0xfc2007fe00000000, 0x7c20000000000000, 0x40000100000000, // Compare X-form (cmpd BF,RA,RB) + [6]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, + {CMP, 0xfc0007fe00000000, 0x7c00000000000000, 0x40000100000000, // Compare X-form (cmp BF,L,RA,RB) + [6]*argField{ap_CondRegField_6_8, ap_ImmUnsigned_10_10, ap_Reg_11_15, ap_Reg_16_20}}, + {CMPWI, 0xfc20000000000000, 0x2c00000000000000, 0x40000000000000, // Compare Immediate D-form (cmpwi BF,RA,SI) + [6]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_ImmSigned_16_31}}, + {CMPDI, 0xfc20000000000000, 0x2c20000000000000, 0x40000000000000, // Compare Immediate D-form (cmpdi BF,RA,SI) + [6]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_ImmSigned_16_31}}, + {CMPI, 0xfc00000000000000, 0x2c00000000000000, 0x40000000000000, // Compare Immediate D-form (cmpi BF,L,RA,SI) + [6]*argField{ap_CondRegField_6_8, ap_ImmUnsigned_10_10, ap_Reg_11_15, ap_ImmSigned_16_31}}, + {CMPLW, 0xfc2007fe00000000, 0x7c00004000000000, 0x40000100000000, // Compare Logical X-form (cmplw BF,RA,RB) + [6]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, + {CMPLD, 0xfc2007fe00000000, 0x7c20004000000000, 0x40000100000000, // Compare Logical X-form (cmpld BF,RA,RB) + [6]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_Reg_16_20}}, + {CMPL, 0xfc0007fe00000000, 0x7c00004000000000, 0x40000100000000, // Compare Logical X-form (cmpl BF,L,RA,RB) + [6]*argField{ap_CondRegField_6_8, ap_ImmUnsigned_10_10, ap_Reg_11_15, ap_Reg_16_20}}, + {CMPLWI, 0xfc20000000000000, 0x2800000000000000, 0x40000000000000, // Compare Logical Immediate D-form (cmplwi BF,RA,UI) + [6]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_ImmUnsigned_16_31}}, + {CMPLDI, 0xfc20000000000000, 0x2820000000000000, 0x40000000000000, // Compare Logical Immediate D-form (cmpldi BF,RA,UI) + [6]*argField{ap_CondRegField_6_8, ap_Reg_11_15, ap_ImmUnsigned_16_31}}, + {CMPLI, 0xfc00000000000000, 0x2800000000000000, 0x40000000000000, // Compare Logical Immediate D-form (cmpli BF,L,RA,UI) + [6]*argField{ap_CondRegField_6_8, ap_ImmUnsigned_10_10, ap_Reg_11_15, ap_ImmUnsigned_16_31}}, + {CNTLZW, 0xfc0007ff00000000, 0x7c00003400000000, 0xf80000000000, // Count Leading Zeros Word X-form (cntlzw RA,RS) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10}}, + {CNTLZWCC, 0xfc0007ff00000000, 0x7c00003500000000, 0xf80000000000, // Count Leading Zeros Word X-form (cntlzw. RA,RS) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10}}, + {CRAND, 0xfc0007fe00000000, 0x4c00020200000000, 0x100000000, // Condition Register AND XL-form (crand BT,BA,BB) + [6]*argField{ap_CondRegBit_6_10, ap_CondRegBit_11_15, ap_CondRegBit_16_20}}, + {CRANDC, 0xfc0007fe00000000, 0x4c00010200000000, 0x100000000, // Condition Register AND with Complement XL-form (crandc BT,BA,BB) + [6]*argField{ap_CondRegBit_6_10, ap_CondRegBit_11_15, ap_CondRegBit_16_20}}, + {CREQV, 0xfc0007fe00000000, 0x4c00024200000000, 0x100000000, // Condition Register Equivalent XL-form (creqv BT,BA,BB) + [6]*argField{ap_CondRegBit_6_10, ap_CondRegBit_11_15, ap_CondRegBit_16_20}}, + {CRNAND, 0xfc0007fe00000000, 0x4c0001c200000000, 0x100000000, // Condition Register NAND XL-form (crnand BT,BA,BB) + [6]*argField{ap_CondRegBit_6_10, ap_CondRegBit_11_15, ap_CondRegBit_16_20}}, + {CRNOR, 0xfc0007fe00000000, 0x4c00004200000000, 0x100000000, // Condition Register NOR XL-form (crnor BT,BA,BB) + [6]*argField{ap_CondRegBit_6_10, ap_CondRegBit_11_15, ap_CondRegBit_16_20}}, + {CROR, 0xfc0007fe00000000, 0x4c00038200000000, 0x100000000, // Condition Register OR XL-form (cror BT,BA,BB) + [6]*argField{ap_CondRegBit_6_10, ap_CondRegBit_11_15, ap_CondRegBit_16_20}}, + {CRORC, 0xfc0007fe00000000, 0x4c00034200000000, 0x100000000, // Condition Register OR with Complement XL-form (crorc BT,BA,BB) + [6]*argField{ap_CondRegBit_6_10, ap_CondRegBit_11_15, ap_CondRegBit_16_20}}, + {CRXOR, 0xfc0007fe00000000, 0x4c00018200000000, 0x100000000, // Condition Register XOR XL-form (crxor BT,BA,BB) + [6]*argField{ap_CondRegBit_6_10, ap_CondRegBit_11_15, ap_CondRegBit_16_20}}, + {DCBZ, 0xfc0007fe00000000, 0x7c0007ec00000000, 0x3e0000100000000, // Data Cache Block set to Zero X-form (dcbz RA,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_16_20}}, + {EQV, 0xfc0007ff00000000, 0x7c00023800000000, 0x0, // Equivalent X-form (eqv RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {EQVCC, 0xfc0007ff00000000, 0x7c00023900000000, 0x0, // Equivalent X-form (eqv. RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {EXTSH, 0xfc0007ff00000000, 0x7c00073400000000, 0xf80000000000, // Extend Sign Halfword X-form (extsh RA,RS) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10}}, + {EXTSHCC, 0xfc0007ff00000000, 0x7c00073500000000, 0xf80000000000, // Extend Sign Halfword X-form (extsh. RA,RS) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10}}, + {FABS, 0xfc0007ff00000000, 0xfc00021000000000, 0x1f000000000000, // Floating Absolute Value X-form (fabs FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FABSCC, 0xfc0007ff00000000, 0xfc00021100000000, 0x1f000000000000, // Floating Absolute Value X-form (fabs. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FADD, 0xfc00003f00000000, 0xfc00002a00000000, 0x7c000000000, // Floating Add A-form (fadd FRT,FRA,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {FADDCC, 0xfc00003f00000000, 0xfc00002b00000000, 0x7c000000000, // Floating Add A-form (fadd. FRT,FRA,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {FCMPO, 0xfc0007fe00000000, 0xfc00004000000000, 0x60000100000000, // Floating Compare Ordered X-form (fcmpo BF,FRA,FRB) + [6]*argField{ap_CondRegField_6_8, ap_FPReg_11_15, ap_FPReg_16_20}}, + {FCMPU, 0xfc0007fe00000000, 0xfc00000000000000, 0x60000100000000, // Floating Compare Unordered X-form (fcmpu BF,FRA,FRB) + [6]*argField{ap_CondRegField_6_8, ap_FPReg_11_15, ap_FPReg_16_20}}, + {FDIV, 0xfc00003f00000000, 0xfc00002400000000, 0x7c000000000, // Floating Divide A-form (fdiv FRT,FRA,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {FDIVCC, 0xfc00003f00000000, 0xfc00002500000000, 0x7c000000000, // Floating Divide A-form (fdiv. FRT,FRA,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {FMADD, 0xfc00003f00000000, 0xfc00003a00000000, 0x0, // Floating Multiply-Add A-form (fmadd FRT,FRA,FRC,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, + {FMADDCC, 0xfc00003f00000000, 0xfc00003b00000000, 0x0, // Floating Multiply-Add A-form (fmadd. FRT,FRA,FRC,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, + {FMR, 0xfc0007ff00000000, 0xfc00009000000000, 0x1f000000000000, // Floating Move Register X-form (fmr FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FMRCC, 0xfc0007ff00000000, 0xfc00009100000000, 0x1f000000000000, // Floating Move Register X-form (fmr. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FMSUB, 0xfc00003f00000000, 0xfc00003800000000, 0x0, // Floating Multiply-Subtract A-form (fmsub FRT,FRA,FRC,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, + {FMSUBCC, 0xfc00003f00000000, 0xfc00003900000000, 0x0, // Floating Multiply-Subtract A-form (fmsub. FRT,FRA,FRC,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, + {FMUL, 0xfc00003f00000000, 0xfc00003200000000, 0xf80000000000, // Floating Multiply A-form (fmul FRT,FRA,FRC) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25}}, + {FMULCC, 0xfc00003f00000000, 0xfc00003300000000, 0xf80000000000, // Floating Multiply A-form (fmul. FRT,FRA,FRC) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25}}, + {FNABS, 0xfc0007ff00000000, 0xfc00011000000000, 0x1f000000000000, // Floating Negative Absolute Value X-form (fnabs FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FNABSCC, 0xfc0007ff00000000, 0xfc00011100000000, 0x1f000000000000, // Floating Negative Absolute Value X-form (fnabs. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FNEG, 0xfc0007ff00000000, 0xfc00005000000000, 0x1f000000000000, // Floating Negate X-form (fneg FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FNEGCC, 0xfc0007ff00000000, 0xfc00005100000000, 0x1f000000000000, // Floating Negate X-form (fneg. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FNMADD, 0xfc00003f00000000, 0xfc00003e00000000, 0x0, // Floating Negative Multiply-Add A-form (fnmadd FRT,FRA,FRC,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, + {FNMADDCC, 0xfc00003f00000000, 0xfc00003f00000000, 0x0, // Floating Negative Multiply-Add A-form (fnmadd. FRT,FRA,FRC,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, + {FNMSUB, 0xfc00003f00000000, 0xfc00003c00000000, 0x0, // Floating Negative Multiply-Subtract A-form (fnmsub FRT,FRA,FRC,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, + {FNMSUBCC, 0xfc00003f00000000, 0xfc00003d00000000, 0x0, // Floating Negative Multiply-Subtract A-form (fnmsub. FRT,FRA,FRC,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_21_25, ap_FPReg_16_20}}, + {FRSP, 0xfc0007ff00000000, 0xfc00001800000000, 0x1f000000000000, // Floating Round to Single-Precision X-form (frsp FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FRSPCC, 0xfc0007ff00000000, 0xfc00001900000000, 0x1f000000000000, // Floating Round to Single-Precision X-form (frsp. FRT,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_16_20}}, + {FSUB, 0xfc00003f00000000, 0xfc00002800000000, 0x7c000000000, // Floating Subtract A-form (fsub FRT,FRA,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {FSUBCC, 0xfc00003f00000000, 0xfc00002900000000, 0x7c000000000, // Floating Subtract A-form (fsub. FRT,FRA,FRB) + [6]*argField{ap_FPReg_6_10, ap_FPReg_11_15, ap_FPReg_16_20}}, + {ISYNC, 0xfc0007fe00000000, 0x4c00012c00000000, 0x3fff80100000000, // Instruction Synchronize XL-form (isync) + [6]*argField{}}, + {LBZ, 0xfc00000000000000, 0x8800000000000000, 0x0, // Load Byte and Zero D-form (lbz RT,D(RA)) + [6]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, + {LBZU, 0xfc00000000000000, 0x8c00000000000000, 0x0, // Load Byte and Zero with Update D-form (lbzu RT,D(RA)) + [6]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, + {LBZUX, 0xfc0007fe00000000, 0x7c0000ee00000000, 0x100000000, // Load Byte and Zero with Update Indexed X-form (lbzux RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LBZX, 0xfc0007fe00000000, 0x7c0000ae00000000, 0x100000000, // Load Byte and Zero Indexed X-form (lbzx RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LFD, 0xfc00000000000000, 0xc800000000000000, 0x0, // Load Floating-Point Double D-form (lfd FRT,D(RA)) + [6]*argField{ap_FPReg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, + {LFDU, 0xfc00000000000000, 0xcc00000000000000, 0x0, // Load Floating-Point Double with Update D-form (lfdu FRT,D(RA)) + [6]*argField{ap_FPReg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, + {LFDUX, 0xfc0007fe00000000, 0x7c0004ee00000000, 0x100000000, // Load Floating-Point Double with Update Indexed X-form (lfdux FRT,RA,RB) + [6]*argField{ap_FPReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LFDX, 0xfc0007fe00000000, 0x7c0004ae00000000, 0x100000000, // Load Floating-Point Double Indexed X-form (lfdx FRT,RA,RB) + [6]*argField{ap_FPReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LFS, 0xfc00000000000000, 0xc000000000000000, 0x0, // Load Floating-Point Single D-form (lfs FRT,D(RA)) + [6]*argField{ap_FPReg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, + {LFSU, 0xfc00000000000000, 0xc400000000000000, 0x0, // Load Floating-Point Single with Update D-form (lfsu FRT,D(RA)) + [6]*argField{ap_FPReg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, + {LFSUX, 0xfc0007fe00000000, 0x7c00046e00000000, 0x100000000, // Load Floating-Point Single with Update Indexed X-form (lfsux FRT,RA,RB) + [6]*argField{ap_FPReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LFSX, 0xfc0007fe00000000, 0x7c00042e00000000, 0x100000000, // Load Floating-Point Single Indexed X-form (lfsx FRT,RA,RB) + [6]*argField{ap_FPReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LHA, 0xfc00000000000000, 0xa800000000000000, 0x0, // Load Halfword Algebraic D-form (lha RT,D(RA)) + [6]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, + {LHAU, 0xfc00000000000000, 0xac00000000000000, 0x0, // Load Halfword Algebraic with Update D-form (lhau RT,D(RA)) + [6]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, + {LHAUX, 0xfc0007fe00000000, 0x7c0002ee00000000, 0x100000000, // Load Halfword Algebraic with Update Indexed X-form (lhaux RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LHAX, 0xfc0007fe00000000, 0x7c0002ae00000000, 0x100000000, // Load Halfword Algebraic Indexed X-form (lhax RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LHBRX, 0xfc0007fe00000000, 0x7c00062c00000000, 0x100000000, // Load Halfword Byte-Reverse Indexed X-form (lhbrx RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LHZ, 0xfc00000000000000, 0xa000000000000000, 0x0, // Load Halfword and Zero D-form (lhz RT,D(RA)) + [6]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, + {LHZU, 0xfc00000000000000, 0xa400000000000000, 0x0, // Load Halfword and Zero with Update D-form (lhzu RT,D(RA)) + [6]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, + {LHZUX, 0xfc0007fe00000000, 0x7c00026e00000000, 0x100000000, // Load Halfword and Zero with Update Indexed X-form (lhzux RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LHZX, 0xfc0007fe00000000, 0x7c00022e00000000, 0x100000000, // Load Halfword and Zero Indexed X-form (lhzx RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LMW, 0xfc00000000000000, 0xb800000000000000, 0x0, // Load Multiple Word D-form (lmw RT,D(RA)) + [6]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, + {LSWI, 0xfc0007fe00000000, 0x7c0004aa00000000, 0x100000000, // Load String Word Immediate X-form (lswi RT,RA,NB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_ImmUnsigned_16_20}}, + {LSWX, 0xfc0007fe00000000, 0x7c00042a00000000, 0x100000000, // Load String Word Indexed X-form (lswx RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LWBRX, 0xfc0007fe00000000, 0x7c00042c00000000, 0x100000000, // Load Word Byte-Reverse Indexed X-form (lwbrx RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LWZ, 0xfc00000000000000, 0x8000000000000000, 0x0, // Load Word and Zero D-form (lwz RT,D(RA)) + [6]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, + {LWZU, 0xfc00000000000000, 0x8400000000000000, 0x0, // Load Word and Zero with Update D-form (lwzu RT,D(RA)) + [6]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, + {LWZUX, 0xfc0007fe00000000, 0x7c00006e00000000, 0x100000000, // Load Word and Zero with Update Indexed X-form (lwzux RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {LWZX, 0xfc0007fe00000000, 0x7c00002e00000000, 0x100000000, // Load Word and Zero Indexed X-form (lwzx RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {MCRF, 0xfc0007fe00000000, 0x4c00000000000000, 0x63f80100000000, // Move Condition Register Field XL-form (mcrf BF,BFA) + [6]*argField{ap_CondRegField_6_8, ap_CondRegField_11_13}}, + {MCRFS, 0xfc0007fe00000000, 0xfc00008000000000, 0x63f80100000000, // Move to Condition Register from FPSCR X-form (mcrfs BF,BFA) + [6]*argField{ap_CondRegField_6_8, ap_CondRegField_11_13}}, + {MFCR, 0xfc1007fe00000000, 0x7c00002600000000, 0xff80100000000, // Move From Condition Register XFX-form (mfcr RT) + [6]*argField{ap_Reg_6_10}}, + {MFFS, 0xfc1f07ff00000000, 0xfc00048e00000000, 0xf80000000000, // Move From FPSCR X-form (mffs FRT) + [6]*argField{ap_FPReg_6_10}}, + {MFFSCC, 0xfc1f07ff00000000, 0xfc00048f00000000, 0xf80000000000, // Move From FPSCR X-form (mffs. FRT) + [6]*argField{ap_FPReg_6_10}}, + {MFMSR, 0xfc0007fe00000000, 0x7c0000a600000000, 0x1ff80100000000, // Move From MSR X-form (mfmsr RT) + [6]*argField{ap_Reg_6_10}}, + {MFSPR, 0xfc0007fe00000000, 0x7c0002a600000000, 0x100000000, // Move From Special Purpose Register XFX-form (mfspr RT,SPR) + [6]*argField{ap_Reg_6_10, ap_SpReg_16_20_11_15}}, + {MTCRF, 0xfc1007fe00000000, 0x7c00012000000000, 0x80100000000, // Move To Condition Register Fields XFX-form (mtcrf FXM,RS) + [6]*argField{ap_ImmUnsigned_12_19, ap_Reg_6_10}}, + {MTFSB0, 0xfc0007ff00000000, 0xfc00008c00000000, 0x1ff80000000000, // Move To FPSCR Bit 0 X-form (mtfsb0 BT) + [6]*argField{ap_ImmUnsigned_6_10}}, + {MTFSB0CC, 0xfc0007ff00000000, 0xfc00008d00000000, 0x1ff80000000000, // Move To FPSCR Bit 0 X-form (mtfsb0. BT) + [6]*argField{ap_ImmUnsigned_6_10}}, + {MTFSB1, 0xfc0007ff00000000, 0xfc00004c00000000, 0x1ff80000000000, // Move To FPSCR Bit 1 X-form (mtfsb1 BT) + [6]*argField{ap_ImmUnsigned_6_10}}, + {MTFSB1CC, 0xfc0007ff00000000, 0xfc00004d00000000, 0x1ff80000000000, // Move To FPSCR Bit 1 X-form (mtfsb1. BT) + [6]*argField{ap_ImmUnsigned_6_10}}, + {MTFSF, 0xfc0007ff00000000, 0xfc00058e00000000, 0x0, // Move To FPSCR Fields XFL-form (mtfsf FLM,FRB,L,W) + [6]*argField{ap_ImmUnsigned_7_14, ap_FPReg_16_20, ap_ImmUnsigned_6_6, ap_ImmUnsigned_15_15}}, + {MTFSFCC, 0xfc0007ff00000000, 0xfc00058f00000000, 0x0, // Move To FPSCR Fields XFL-form (mtfsf. FLM,FRB,L,W) + [6]*argField{ap_ImmUnsigned_7_14, ap_FPReg_16_20, ap_ImmUnsigned_6_6, ap_ImmUnsigned_15_15}}, + {MTFSFI, 0xfc0007ff00000000, 0xfc00010c00000000, 0x7e080000000000, // Move To FPSCR Field Immediate X-form (mtfsfi BF,U,W) + [6]*argField{ap_ImmUnsigned_6_8, ap_ImmUnsigned_16_19, ap_ImmUnsigned_15_15}}, + {MTFSFICC, 0xfc0007ff00000000, 0xfc00010d00000000, 0x7e080000000000, // Move To FPSCR Field Immediate X-form (mtfsfi. BF,U,W) + [6]*argField{ap_ImmUnsigned_6_8, ap_ImmUnsigned_16_19, ap_ImmUnsigned_15_15}}, + {MTMSR, 0xfc0007fe00000000, 0x7c00012400000000, 0x1ef80100000000, // Move To MSR X-form (mtmsr RS,L) + [6]*argField{ap_Reg_6_10, ap_ImmUnsigned_15_15}}, + {MTSPR, 0xfc0007fe00000000, 0x7c0003a600000000, 0x100000000, // Move To Special Purpose Register XFX-form (mtspr SPR,RS) + [6]*argField{ap_SpReg_16_20_11_15, ap_Reg_6_10}}, + {MULLI, 0xfc00000000000000, 0x1c00000000000000, 0x0, // Multiply Low Immediate D-form (mulli RT,RA,SI) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_ImmSigned_16_31}}, + {MULLW, 0xfc0007ff00000000, 0x7c0001d600000000, 0x0, // Multiply Low Word XO-form (mullw RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {MULLWCC, 0xfc0007ff00000000, 0x7c0001d700000000, 0x0, // Multiply Low Word XO-form (mullw. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {MULLWO, 0xfc0007ff00000000, 0x7c0005d600000000, 0x0, // Multiply Low Word XO-form (mullwo RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {MULLWOCC, 0xfc0007ff00000000, 0x7c0005d700000000, 0x0, // Multiply Low Word XO-form (mullwo. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {NAND, 0xfc0007ff00000000, 0x7c0003b800000000, 0x0, // NAND X-form (nand RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {NANDCC, 0xfc0007ff00000000, 0x7c0003b900000000, 0x0, // NAND X-form (nand. RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {NEG, 0xfc0007ff00000000, 0x7c0000d000000000, 0xf80000000000, // Negate XO-form (neg RT,RA) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15}}, + {NEGCC, 0xfc0007ff00000000, 0x7c0000d100000000, 0xf80000000000, // Negate XO-form (neg. RT,RA) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15}}, + {NEGO, 0xfc0007ff00000000, 0x7c0004d000000000, 0xf80000000000, // Negate XO-form (nego RT,RA) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15}}, + {NEGOCC, 0xfc0007ff00000000, 0x7c0004d100000000, 0xf80000000000, // Negate XO-form (nego. RT,RA) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15}}, + {NOR, 0xfc0007ff00000000, 0x7c0000f800000000, 0x0, // NOR X-form (nor RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {NORCC, 0xfc0007ff00000000, 0x7c0000f900000000, 0x0, // NOR X-form (nor. RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {OR, 0xfc0007ff00000000, 0x7c00037800000000, 0x0, // OR X-form (or RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {ORCC, 0xfc0007ff00000000, 0x7c00037900000000, 0x0, // OR X-form (or. RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {ORC, 0xfc0007ff00000000, 0x7c00033800000000, 0x0, // OR with Complement X-form (orc RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {ORCCC, 0xfc0007ff00000000, 0x7c00033900000000, 0x0, // OR with Complement X-form (orc. RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {NOP, 0xffffffff00000000, 0x6000000000000000, 0x0, // OR Immediate D-form (nop) + [6]*argField{}}, + {ORI, 0xfc00000000000000, 0x6000000000000000, 0x0, // OR Immediate D-form (ori RA,RS,UI) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_16_31}}, + {ORIS, 0xfc00000000000000, 0x6400000000000000, 0x0, // OR Immediate Shifted D-form (oris RA,RS,UI) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_16_31}}, + {RLWIMI, 0xfc00000100000000, 0x5000000000000000, 0x0, // Rotate Left Word Immediate then Mask Insert M-form (rlwimi RA,RS,SH,MB,ME) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_16_20, ap_ImmUnsigned_21_25, ap_ImmUnsigned_26_30}}, + {RLWIMICC, 0xfc00000100000000, 0x5000000100000000, 0x0, // Rotate Left Word Immediate then Mask Insert M-form (rlwimi. RA,RS,SH,MB,ME) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_16_20, ap_ImmUnsigned_21_25, ap_ImmUnsigned_26_30}}, + {RLWINM, 0xfc00000100000000, 0x5400000000000000, 0x0, // Rotate Left Word Immediate then AND with Mask M-form (rlwinm RA,RS,SH,MB,ME) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_16_20, ap_ImmUnsigned_21_25, ap_ImmUnsigned_26_30}}, + {RLWINMCC, 0xfc00000100000000, 0x5400000100000000, 0x0, // Rotate Left Word Immediate then AND with Mask M-form (rlwinm. RA,RS,SH,MB,ME) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_16_20, ap_ImmUnsigned_21_25, ap_ImmUnsigned_26_30}}, + {RLWNM, 0xfc00000100000000, 0x5c00000000000000, 0x0, // Rotate Left Word then AND with Mask M-form (rlwnm RA,RS,RB,MB,ME) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20, ap_ImmUnsigned_21_25, ap_ImmUnsigned_26_30}}, + {RLWNMCC, 0xfc00000100000000, 0x5c00000100000000, 0x0, // Rotate Left Word then AND with Mask M-form (rlwnm. RA,RS,RB,MB,ME) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20, ap_ImmUnsigned_21_25, ap_ImmUnsigned_26_30}}, + {SLW, 0xfc0007ff00000000, 0x7c00003000000000, 0x0, // Shift Left Word X-form (slw RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {SLWCC, 0xfc0007ff00000000, 0x7c00003100000000, 0x0, // Shift Left Word X-form (slw. RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {SRAW, 0xfc0007ff00000000, 0x7c00063000000000, 0x0, // Shift Right Algebraic Word X-form (sraw RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {SRAWCC, 0xfc0007ff00000000, 0x7c00063100000000, 0x0, // Shift Right Algebraic Word X-form (sraw. RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {SRAWI, 0xfc0007ff00000000, 0x7c00067000000000, 0x0, // Shift Right Algebraic Word Immediate X-form (srawi RA,RS,SH) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_16_20}}, + {SRAWICC, 0xfc0007ff00000000, 0x7c00067100000000, 0x0, // Shift Right Algebraic Word Immediate X-form (srawi. RA,RS,SH) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_16_20}}, + {SRW, 0xfc0007ff00000000, 0x7c00043000000000, 0x0, // Shift Right Word X-form (srw RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {SRWCC, 0xfc0007ff00000000, 0x7c00043100000000, 0x0, // Shift Right Word X-form (srw. RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {STB, 0xfc00000000000000, 0x9800000000000000, 0x0, // Store Byte D-form (stb RS,D(RA)) + [6]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, + {STBU, 0xfc00000000000000, 0x9c00000000000000, 0x0, // Store Byte with Update D-form (stbu RS,D(RA)) + [6]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, + {STBUX, 0xfc0007fe00000000, 0x7c0001ee00000000, 0x100000000, // Store Byte with Update Indexed X-form (stbux RS,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STBX, 0xfc0007fe00000000, 0x7c0001ae00000000, 0x100000000, // Store Byte Indexed X-form (stbx RS,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STFD, 0xfc00000000000000, 0xd800000000000000, 0x0, // Store Floating-Point Double D-form (stfd FRS,D(RA)) + [6]*argField{ap_FPReg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, + {STFDU, 0xfc00000000000000, 0xdc00000000000000, 0x0, // Store Floating-Point Double with Update D-form (stfdu FRS,D(RA)) + [6]*argField{ap_FPReg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, + {STFDUX, 0xfc0007fe00000000, 0x7c0005ee00000000, 0x100000000, // Store Floating-Point Double with Update Indexed X-form (stfdux FRS,RA,RB) + [6]*argField{ap_FPReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STFDX, 0xfc0007fe00000000, 0x7c0005ae00000000, 0x100000000, // Store Floating-Point Double Indexed X-form (stfdx FRS,RA,RB) + [6]*argField{ap_FPReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STFS, 0xfc00000000000000, 0xd000000000000000, 0x0, // Store Floating-Point Single D-form (stfs FRS,D(RA)) + [6]*argField{ap_FPReg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, + {STFSU, 0xfc00000000000000, 0xd400000000000000, 0x0, // Store Floating-Point Single with Update D-form (stfsu FRS,D(RA)) + [6]*argField{ap_FPReg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, + {STFSUX, 0xfc0007fe00000000, 0x7c00056e00000000, 0x100000000, // Store Floating-Point Single with Update Indexed X-form (stfsux FRS,RA,RB) + [6]*argField{ap_FPReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STFSX, 0xfc0007fe00000000, 0x7c00052e00000000, 0x100000000, // Store Floating-Point Single Indexed X-form (stfsx FRS,RA,RB) + [6]*argField{ap_FPReg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STH, 0xfc00000000000000, 0xb000000000000000, 0x0, // Store Halfword D-form (sth RS,D(RA)) + [6]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, + {STHBRX, 0xfc0007fe00000000, 0x7c00072c00000000, 0x100000000, // Store Halfword Byte-Reverse Indexed X-form (sthbrx RS,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STHU, 0xfc00000000000000, 0xb400000000000000, 0x0, // Store Halfword with Update D-form (sthu RS,D(RA)) + [6]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, + {STHUX, 0xfc0007fe00000000, 0x7c00036e00000000, 0x100000000, // Store Halfword with Update Indexed X-form (sthux RS,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STHX, 0xfc0007fe00000000, 0x7c00032e00000000, 0x100000000, // Store Halfword Indexed X-form (sthx RS,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STMW, 0xfc00000000000000, 0xbc00000000000000, 0x0, // Store Multiple Word D-form (stmw RS,D(RA)) + [6]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, + {STSWI, 0xfc0007fe00000000, 0x7c0005aa00000000, 0x100000000, // Store String Word Immediate X-form (stswi RS,RA,NB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_ImmUnsigned_16_20}}, + {STSWX, 0xfc0007fe00000000, 0x7c00052a00000000, 0x100000000, // Store String Word Indexed X-form (stswx RS,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STW, 0xfc00000000000000, 0x9000000000000000, 0x0, // Store Word D-form (stw RS,D(RA)) + [6]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, + {STWBRX, 0xfc0007fe00000000, 0x7c00052c00000000, 0x100000000, // Store Word Byte-Reverse Indexed X-form (stwbrx RS,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STWU, 0xfc00000000000000, 0x9400000000000000, 0x0, // Store Word with Update D-form (stwu RS,D(RA)) + [6]*argField{ap_Reg_6_10, ap_Offset_16_31, ap_Reg_11_15}}, + {STWUX, 0xfc0007fe00000000, 0x7c00016e00000000, 0x100000000, // Store Word with Update Indexed X-form (stwux RS,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {STWX, 0xfc0007fe00000000, 0x7c00012e00000000, 0x100000000, // Store Word Indexed X-form (stwx RS,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {SUBFC, 0xfc0007ff00000000, 0x7c00001000000000, 0x0, // Subtract From Carrying XO-form (subfc RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {SUBFCCC, 0xfc0007ff00000000, 0x7c00001100000000, 0x0, // Subtract From Carrying XO-form (subfc. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {SUBFCO, 0xfc0007ff00000000, 0x7c00041000000000, 0x0, // Subtract From Carrying XO-form (subfco RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {SUBFCOCC, 0xfc0007ff00000000, 0x7c00041100000000, 0x0, // Subtract From Carrying XO-form (subfco. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {SUBFE, 0xfc0007ff00000000, 0x7c00011000000000, 0x0, // Subtract From Extended XO-form (subfe RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {SUBFECC, 0xfc0007ff00000000, 0x7c00011100000000, 0x0, // Subtract From Extended XO-form (subfe. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {SUBFEO, 0xfc0007ff00000000, 0x7c00051000000000, 0x0, // Subtract From Extended XO-form (subfeo RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {SUBFEOCC, 0xfc0007ff00000000, 0x7c00051100000000, 0x0, // Subtract From Extended XO-form (subfeo. RT,RA,RB) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {SUBFIC, 0xfc00000000000000, 0x2000000000000000, 0x0, // Subtract From Immediate Carrying D-form (subfic RT,RA,SI) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15, ap_ImmSigned_16_31}}, + {SUBFME, 0xfc0007ff00000000, 0x7c0001d000000000, 0xf80000000000, // Subtract From Minus One Extended XO-form (subfme RT,RA) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15}}, + {SUBFMECC, 0xfc0007ff00000000, 0x7c0001d100000000, 0xf80000000000, // Subtract From Minus One Extended XO-form (subfme. RT,RA) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15}}, + {SUBFMEO, 0xfc0007ff00000000, 0x7c0005d000000000, 0xf80000000000, // Subtract From Minus One Extended XO-form (subfmeo RT,RA) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15}}, + {SUBFMEOCC, 0xfc0007ff00000000, 0x7c0005d100000000, 0xf80000000000, // Subtract From Minus One Extended XO-form (subfmeo. RT,RA) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15}}, + {SUBFZE, 0xfc0007ff00000000, 0x7c00019000000000, 0xf80000000000, // Subtract From Zero Extended XO-form (subfze RT,RA) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15}}, + {SUBFZECC, 0xfc0007ff00000000, 0x7c00019100000000, 0xf80000000000, // Subtract From Zero Extended XO-form (subfze. RT,RA) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15}}, + {SUBFZEO, 0xfc0007ff00000000, 0x7c00059000000000, 0xf80000000000, // Subtract From Zero Extended XO-form (subfzeo RT,RA) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15}}, + {SUBFZEOCC, 0xfc0007ff00000000, 0x7c00059100000000, 0xf80000000000, // Subtract From Zero Extended XO-form (subfzeo. RT,RA) + [6]*argField{ap_Reg_6_10, ap_Reg_11_15}}, + {SYNC, 0xfc0007fe00000000, 0x7c0004ac00000000, 0x31cf80100000000, // Synchronize X-form (sync L,SC) + [6]*argField{ap_ImmUnsigned_8_10, ap_ImmUnsigned_14_15}}, + {TLBIE, 0xfc0007fe00000000, 0x7c00026400000000, 0x10000100000000, // TLB Invalidate Entry X-form (tlbie RB,RS,RIC,PRS,R) + [6]*argField{ap_Reg_16_20, ap_Reg_6_10, ap_ImmUnsigned_12_13, ap_ImmUnsigned_14_14, ap_ImmUnsigned_15_15}}, + {TW, 0xfc0007fe00000000, 0x7c00000800000000, 0x100000000, // Trap Word X-form (tw TO,RA,RB) + [6]*argField{ap_ImmUnsigned_6_10, ap_Reg_11_15, ap_Reg_16_20}}, + {TWI, 0xfc00000000000000, 0xc00000000000000, 0x0, // Trap Word Immediate D-form (twi TO,RA,SI) + [6]*argField{ap_ImmUnsigned_6_10, ap_Reg_11_15, ap_ImmSigned_16_31}}, + {XOR, 0xfc0007ff00000000, 0x7c00027800000000, 0x0, // XOR X-form (xor RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {XORCC, 0xfc0007ff00000000, 0x7c00027900000000, 0x0, // XOR X-form (xor. RA,RS,RB) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_Reg_16_20}}, + {XORI, 0xfc00000000000000, 0x6800000000000000, 0x0, // XOR Immediate D-form (xori RA,RS,UI) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_16_31}}, + {XORIS, 0xfc00000000000000, 0x6c00000000000000, 0x0, // XOR Immediate Shifted D-form (xoris RA,RS,UI) + [6]*argField{ap_Reg_11_15, ap_Reg_6_10, ap_ImmUnsigned_16_31}}, } diff --git a/vendor/golang.org/x/arch/x86/x86asm/decode.go b/vendor/golang.org/x/arch/x86/x86asm/decode.go index 8c984970bd..059b73d3f1 100644 --- a/vendor/golang.org/x/arch/x86/x86asm/decode.go +++ b/vendor/golang.org/x/arch/x86/x86asm/decode.go @@ -1550,7 +1550,7 @@ var addr16 = [8]Mem{ {Base: BX}, } -// baseReg returns the base register for a given register size in bits. +// baseRegForBits returns the base register for a given register size in bits. func baseRegForBits(bits int) Reg { switch bits { case 8: diff --git a/vendor/golang.org/x/arch/x86/x86asm/gnu.go b/vendor/golang.org/x/arch/x86/x86asm/gnu.go index 75cff72b03..8eba1fd0cf 100644 --- a/vendor/golang.org/x/arch/x86/x86asm/gnu.go +++ b/vendor/golang.org/x/arch/x86/x86asm/gnu.go @@ -10,7 +10,7 @@ import ( ) // GNUSyntax returns the GNU assembler syntax for the instruction, as defined by GNU binutils. -// This general form is often called ``AT&T syntax'' as a reference to AT&T System V Unix. +// This general form is often called “AT&T syntax” as a reference to AT&T System V Unix. func GNUSyntax(inst Inst, pc uint64, symname SymLookup) string { // Rewrite instruction to mimic GNU peculiarities. // Note that inst has been passed by value and contains diff --git a/vendor/golang.org/x/arch/x86/x86asm/inst.go b/vendor/golang.org/x/arch/x86/x86asm/inst.go index 4632b5064f..e98f1a8418 100644 --- a/vendor/golang.org/x/arch/x86/x86asm/inst.go +++ b/vendor/golang.org/x/arch/x86/x86asm/inst.go @@ -144,7 +144,7 @@ type Arg interface { // the interface value instead of requiring an allocation. // A Reg is a single register. -// The zero Reg value has no name but indicates ``no register.'' +// The zero Reg value has no name but indicates “no register.” type Reg uint8 const ( diff --git a/vendor/golang.org/x/arch/x86/x86asm/plan9x.go b/vendor/golang.org/x/arch/x86/x86asm/plan9x.go index a93bffd441..9e866d87b6 100644 --- a/vendor/golang.org/x/arch/x86/x86asm/plan9x.go +++ b/vendor/golang.org/x/arch/x86/x86asm/plan9x.go @@ -66,6 +66,10 @@ func GoSyntax(inst Inst, pc uint64, symname SymLookup) string { s := inst.DataSize if inst.MemBytes != 0 { s = inst.MemBytes * 8 + } else if inst.Args[1] == nil { // look for register-only 64-bit instruction, like PUSHQ AX + if r, ok := inst.Args[0].(Reg); ok && RAX <= r && r <= R15 { + s = 64 + } } switch s { case 8: @@ -79,6 +83,12 @@ func GoSyntax(inst Inst, pc uint64, symname SymLookup) string { } } + if inst.Op == CMP { + // Use reads-left-to-right ordering for comparisons. + // See issue 60920. + args[0], args[1] = args[1], args[0] + } + if args != nil { op += " " + strings.Join(args, ", ") } @@ -204,6 +214,7 @@ var plan9Suffix = [maxOp + 1]bool{ OUT: true, POP: true, POPA: true, + POPCNT: true, PUSH: true, PUSHA: true, RCL: true, diff --git a/vendor/golang.org/x/arch/x86/x86asm/tables.go b/vendor/golang.org/x/arch/x86/x86asm/tables.go index 5b39b7448e..6f57c70bf1 100644 --- a/vendor/golang.org/x/arch/x86/x86asm/tables.go +++ b/vendor/golang.org/x/arch/x86/x86asm/tables.go @@ -1,5 +1,4 @@ -// DO NOT EDIT -// generated by: x86map -fmt=decoder ../x86.csv +// Code generated by x86map -fmt=decoder x86.csv DO NOT EDIT. package x86asm @@ -22,233 +21,233 @@ var decoder = [...]uint16{ 0x0D, 685, 0x0E, 714, 0x0F, 721, - 0x10, 8026, - 0x11, 8032, - 0x12, 8061, - 0x13, 8067, - 0x14, 8096, - 0x15, 8102, - 0x16, 8131, - 0x17, 8138, - 0x18, 8145, - 0x19, 8151, - 0x1A, 8180, - 0x1B, 8186, - 0x1C, 8215, - 0x1D, 8221, - 0x1E, 8250, - 0x1F, 8257, - 0x20, 8264, - 0x21, 8270, - 0x22, 8299, - 0x23, 8305, - 0x24, 8334, - 0x25, 8340, - 0x27, 8369, - 0x28, 8375, - 0x29, 8381, - 0x2A, 8410, - 0x2B, 8452, - 0x2C, 8481, - 0x2D, 8487, - 0x2F, 8516, - 0x30, 8522, - 0x31, 8528, - 0x32, 8557, - 0x33, 8563, - 0x34, 8592, - 0x35, 8598, - 0x37, 8627, - 0x38, 8633, - 0x39, 8639, - 0x3A, 8668, - 0x3B, 8674, - 0x3C, 8703, - 0x3D, 8709, - 0x3F, 8738, - 0x40, 8744, - 0x41, 8744, - 0x42, 8744, - 0x43, 8744, - 0x44, 8744, - 0x45, 8744, - 0x46, 8744, - 0x47, 8744, - 0x48, 8759, - 0x49, 8759, - 0x4a, 8759, - 0x4b, 8759, - 0x4c, 8759, - 0x4d, 8759, - 0x4e, 8759, - 0x4f, 8759, - 0x50, 8774, - 0x51, 8774, - 0x52, 8774, - 0x53, 8774, - 0x54, 8774, - 0x55, 8774, - 0x56, 8774, - 0x57, 8774, - 0x58, 8801, - 0x59, 8801, - 0x5a, 8801, - 0x5b, 8801, - 0x5c, 8801, - 0x5d, 8801, - 0x5e, 8801, - 0x5f, 8801, - 0x60, 8828, - 0x61, 8841, - 0x62, 8854, - 0x63, 8873, - 0x68, 8904, - 0x69, 8923, - 0x6A, 8958, - 0x6B, 8963, - 0x6C, 8998, - 0x6D, 9001, - 0x6E, 9014, - 0x6F, 9017, - 0x70, 9090, - 0x71, 9095, - 0x72, 9100, - 0x73, 9105, - 0x74, 9110, - 0x75, 9115, - 0x76, 9120, - 0x77, 9125, - 0x78, 9152, - 0x79, 9157, - 0x7A, 9162, - 0x7B, 9167, - 0x7C, 9172, - 0x7D, 9177, - 0x7E, 9182, - 0x7F, 9187, - 0x80, 9252, - 0x81, 9309, - 0x83, 9550, - 0x84, 9791, - 0x85, 9797, - 0x86, 9826, - 0x87, 9832, - 0x88, 9861, - 0x89, 9867, - 0x8A, 9889, - 0x8B, 9895, - 0x8C, 9917, - 0x8D, 9946, - 0x8E, 9975, - 0x8F, 10004, - 0x90, 10040, - 0x91, 10040, - 0x92, 10040, - 0x93, 10040, - 0x94, 10040, - 0x95, 10040, - 0x96, 10040, - 0x97, 10040, - 0x98, 10066, - 0x99, 10086, - 0x9A, 10106, - 0x9B, 10123, - 0x9C, 10126, - 0x9D, 10149, - 0x9E, 10172, - 0x9F, 10175, - 0xA0, 10178, - 0xA1, 10197, - 0xA2, 10219, - 0xA3, 10238, - 0xA4, 10260, - 0xA5, 10263, - 0xA6, 10283, - 0xA7, 10286, - 0xA8, 10306, - 0xA9, 10312, - 0xAA, 10341, - 0xAB, 10344, - 0xAC, 10364, - 0xAD, 10367, - 0xAE, 10387, - 0xAF, 10390, - 0xb0, 10410, - 0xb1, 10410, - 0xb2, 10410, - 0xb3, 10410, - 0xb4, 10410, - 0xb5, 10410, - 0xb6, 10410, - 0xb7, 10410, - 0xb8, 10416, - 0xb9, 10416, - 0xba, 10416, - 0xbb, 10416, - 0xbc, 10416, - 0xbd, 10416, - 0xbe, 10416, - 0xbf, 10416, - 0xC0, 10445, - 0xC1, 10496, - 0xC2, 10694, - 0xC3, 10699, - 0xC4, 10702, - 0xC5, 10721, - 0xC6, 10740, - 0xC7, 10764, - 0xC8, 10825, - 0xC9, 10832, - 0xCA, 10855, - 0xCB, 10860, - 0xCC, 10863, - 0xCD, 10867, - 0xCE, 10872, - 0xCF, 10878, - 0xD0, 10898, - 0xD1, 10942, - 0xD2, 11133, - 0xD3, 11177, - 0xD4, 11368, - 0xD5, 11376, - 0xD7, 11384, - 0xD8, 11397, - 0xD9, 11606, - 0xDA, 11815, - 0xDB, 11947, - 0xDC, 12118, - 0xDD, 12287, - 0xDE, 12426, - 0xDF, 12600, - 0xE0, 12711, - 0xE1, 12716, - 0xE2, 12721, - 0xE3, 12726, - 0xE4, 12752, - 0xE5, 12758, - 0xE6, 12780, - 0xE7, 12786, - 0xE8, 12844, - 0xE9, 12875, - 0xEA, 12906, - 0xEB, 12923, - 0xEC, 12928, - 0xED, 12933, - 0xEE, 12952, - 0xEF, 12957, - 0xF1, 12976, - 0xF4, 12979, - 0xF5, 12982, - 0xF6, 12985, - 0xF7, 13024, - 0xF8, 13200, - 0xF9, 13203, - 0xFA, 13206, - 0xFB, 13209, - 0xFC, 13212, - 0xFD, 13215, - 0xFE, 13218, - 0xFF, 13235, + 0x10, 8045, + 0x11, 8051, + 0x12, 8080, + 0x13, 8086, + 0x14, 8115, + 0x15, 8121, + 0x16, 8150, + 0x17, 8157, + 0x18, 8164, + 0x19, 8170, + 0x1A, 8199, + 0x1B, 8205, + 0x1C, 8234, + 0x1D, 8240, + 0x1E, 8269, + 0x1F, 8276, + 0x20, 8283, + 0x21, 8289, + 0x22, 8318, + 0x23, 8324, + 0x24, 8353, + 0x25, 8359, + 0x27, 8388, + 0x28, 8394, + 0x29, 8400, + 0x2A, 8429, + 0x2B, 8471, + 0x2C, 8500, + 0x2D, 8506, + 0x2F, 8535, + 0x30, 8541, + 0x31, 8547, + 0x32, 8576, + 0x33, 8582, + 0x34, 8611, + 0x35, 8617, + 0x37, 8646, + 0x38, 8652, + 0x39, 8658, + 0x3A, 8687, + 0x3B, 8693, + 0x3C, 8722, + 0x3D, 8728, + 0x3F, 8757, + 0x40, 8763, + 0x41, 8763, + 0x42, 8763, + 0x43, 8763, + 0x44, 8763, + 0x45, 8763, + 0x46, 8763, + 0x47, 8763, + 0x48, 8778, + 0x49, 8778, + 0x4a, 8778, + 0x4b, 8778, + 0x4c, 8778, + 0x4d, 8778, + 0x4e, 8778, + 0x4f, 8778, + 0x50, 8793, + 0x51, 8793, + 0x52, 8793, + 0x53, 8793, + 0x54, 8793, + 0x55, 8793, + 0x56, 8793, + 0x57, 8793, + 0x58, 8820, + 0x59, 8820, + 0x5a, 8820, + 0x5b, 8820, + 0x5c, 8820, + 0x5d, 8820, + 0x5e, 8820, + 0x5f, 8820, + 0x60, 8847, + 0x61, 8860, + 0x62, 8873, + 0x63, 8892, + 0x68, 8923, + 0x69, 8942, + 0x6A, 8977, + 0x6B, 8982, + 0x6C, 9017, + 0x6D, 9020, + 0x6E, 9033, + 0x6F, 9036, + 0x70, 9109, + 0x71, 9114, + 0x72, 9119, + 0x73, 9124, + 0x74, 9129, + 0x75, 9134, + 0x76, 9139, + 0x77, 9144, + 0x78, 9171, + 0x79, 9176, + 0x7A, 9181, + 0x7B, 9186, + 0x7C, 9191, + 0x7D, 9196, + 0x7E, 9201, + 0x7F, 9206, + 0x80, 9271, + 0x81, 9328, + 0x83, 9569, + 0x84, 9810, + 0x85, 9816, + 0x86, 9845, + 0x87, 9851, + 0x88, 9880, + 0x89, 9886, + 0x8A, 9908, + 0x8B, 9914, + 0x8C, 9936, + 0x8D, 9965, + 0x8E, 9994, + 0x8F, 10023, + 0x90, 10059, + 0x91, 10059, + 0x92, 10059, + 0x93, 10059, + 0x94, 10059, + 0x95, 10059, + 0x96, 10059, + 0x97, 10059, + 0x98, 10085, + 0x99, 10105, + 0x9A, 10125, + 0x9B, 10142, + 0x9C, 10145, + 0x9D, 10168, + 0x9E, 10191, + 0x9F, 10194, + 0xA0, 10197, + 0xA1, 10216, + 0xA2, 10238, + 0xA3, 10257, + 0xA4, 10279, + 0xA5, 10282, + 0xA6, 10302, + 0xA7, 10305, + 0xA8, 10325, + 0xA9, 10331, + 0xAA, 10360, + 0xAB, 10363, + 0xAC, 10383, + 0xAD, 10386, + 0xAE, 10406, + 0xAF, 10409, + 0xb0, 10429, + 0xb1, 10429, + 0xb2, 10429, + 0xb3, 10429, + 0xb4, 10429, + 0xb5, 10429, + 0xb6, 10429, + 0xb7, 10429, + 0xb8, 10435, + 0xb9, 10435, + 0xba, 10435, + 0xbb, 10435, + 0xbc, 10435, + 0xbd, 10435, + 0xbe, 10435, + 0xbf, 10435, + 0xC0, 10464, + 0xC1, 10515, + 0xC2, 10713, + 0xC3, 10718, + 0xC4, 10721, + 0xC5, 10740, + 0xC6, 10759, + 0xC7, 10783, + 0xC8, 10844, + 0xC9, 10851, + 0xCA, 10874, + 0xCB, 10879, + 0xCC, 10882, + 0xCD, 10886, + 0xCE, 10891, + 0xCF, 10897, + 0xD0, 10917, + 0xD1, 10961, + 0xD2, 11152, + 0xD3, 11196, + 0xD4, 11387, + 0xD5, 11395, + 0xD7, 11403, + 0xD8, 11416, + 0xD9, 11625, + 0xDA, 11844, + 0xDB, 11976, + 0xDC, 12147, + 0xDD, 12316, + 0xDE, 12455, + 0xDF, 12629, + 0xE0, 12740, + 0xE1, 12745, + 0xE2, 12750, + 0xE3, 12755, + 0xE4, 12781, + 0xE5, 12787, + 0xE6, 12809, + 0xE7, 12815, + 0xE8, 12873, + 0xE9, 12904, + 0xEA, 12935, + 0xEB, 12952, + 0xEC, 12957, + 0xED, 12962, + 0xEE, 12981, + 0xEF, 12986, + 0xF1, 13005, + 0xF4, 13008, + 0xF5, 13011, + 0xF6, 13014, + 0xF7, 13053, + 0xF8, 13229, + 0xF9, 13232, + 0xFA, 13235, + 0xFB, 13238, + 0xFC, 13241, + 0xFD, 13244, + 0xFE, 13247, + 0xFF, 13264, uint16(xFail), /*490*/ uint16(xSetOp), uint16(ADD), /*492*/ uint16(xReadSlashR), @@ -400,587 +399,588 @@ var decoder = [...]uint16{ /*717*/ uint16(xSetOp), uint16(PUSH), /*719*/ uint16(xArgCS), /*720*/ uint16(xMatch), - /*721*/ uint16(xCondByte), 228, - 0x00, 1180, - 0x01, 1237, - 0x02, 1345, - 0x03, 1367, - 0x05, 1389, - 0x06, 1395, - 0x07, 1398, - 0x08, 1404, - 0x09, 1407, - 0x0B, 1410, - 0x0D, 1413, - 0x10, 1426, - 0x11, 1460, - 0x12, 1494, - 0x13, 1537, - 0x14, 1555, - 0x15, 1573, - 0x16, 1591, - 0x17, 1626, - 0x18, 1644, - 0x1F, 1669, - 0x20, 1690, - 0x21, 1705, - 0x22, 1720, - 0x23, 1735, - 0x24, 1750, - 0x26, 1765, - 0x28, 1780, - 0x29, 1798, - 0x2A, 1816, - 0x2B, 1903, - 0x2C, 1937, - 0x2D, 2024, - 0x2E, 2111, - 0x2F, 2129, - 0x30, 2147, - 0x31, 2150, - 0x32, 2153, - 0x33, 2156, - 0x34, 2159, - 0x35, 2162, - 0x38, 2172, - 0x3A, 3073, - 0x40, 3484, - 0x41, 3513, - 0x42, 3542, - 0x43, 3571, - 0x44, 3600, - 0x45, 3629, - 0x46, 3658, - 0x47, 3687, - 0x48, 3716, - 0x49, 3745, - 0x4A, 3774, - 0x4B, 3803, - 0x4C, 3832, - 0x4D, 3861, - 0x4E, 3890, - 0x4F, 3919, - 0x50, 3948, - 0x51, 3966, - 0x52, 4000, - 0x53, 4018, - 0x54, 4036, - 0x55, 4054, - 0x56, 4072, - 0x57, 4090, - 0x58, 4108, - 0x59, 4142, - 0x5A, 4176, - 0x5B, 4210, - 0x5C, 4236, - 0x5D, 4270, - 0x5E, 4304, - 0x5F, 4338, - 0x60, 4372, - 0x61, 4390, - 0x62, 4408, - 0x63, 4426, - 0x64, 4444, - 0x65, 4462, - 0x66, 4480, - 0x67, 4498, - 0x68, 4516, - 0x69, 4534, - 0x6A, 4552, - 0x6B, 4570, - 0x6C, 4588, - 0x6D, 4598, - 0x6E, 4608, - 0x6F, 4675, - 0x70, 4701, - 0x71, 4743, - 0x72, 4806, - 0x73, 4869, - 0x74, 4934, - 0x75, 4952, - 0x76, 4970, - 0x77, 4988, - 0x7C, 4991, - 0x7D, 5009, - 0x7E, 5027, - 0x7F, 5104, - 0x80, 5130, - 0x81, 5161, - 0x82, 5192, - 0x83, 5223, - 0x84, 5254, - 0x85, 5285, - 0x86, 5316, - 0x87, 5347, - 0x88, 5378, - 0x89, 5409, - 0x8A, 5440, - 0x8B, 5471, - 0x8C, 5502, - 0x8D, 5533, - 0x8E, 5564, - 0x8F, 5595, - 0x90, 5626, - 0x91, 5631, - 0x92, 5636, - 0x93, 5641, - 0x94, 5646, - 0x95, 5651, - 0x96, 5656, - 0x97, 5661, - 0x98, 5666, - 0x99, 5671, - 0x9A, 5676, - 0x9B, 5681, - 0x9C, 5686, - 0x9D, 5691, - 0x9E, 5696, - 0x9F, 5701, - 0xA0, 5706, - 0xA1, 5710, - 0xA2, 5737, - 0xA3, 5740, - 0xA4, 5769, - 0xA5, 5804, - 0xA8, 5836, - 0xA9, 5840, - 0xAA, 5867, - 0xAB, 5870, - 0xAC, 5899, - 0xAD, 5934, - 0xAE, 5966, - 0xAF, 6224, - 0xB0, 6253, - 0xB1, 6259, - 0xB2, 6288, - 0xB3, 6317, - 0xB4, 6346, - 0xB5, 6375, - 0xB6, 6404, - 0xB7, 6433, - 0xB8, 6462, - 0xB9, 6499, - 0xBA, 6502, - 0xBB, 6627, - 0xBC, 6656, - 0xBD, 6723, - 0xBE, 6790, - 0xBF, 6819, - 0xC0, 6848, - 0xC1, 6854, - 0xC2, 6883, - 0xC3, 6925, - 0xC4, 6954, - 0xC5, 6976, - 0xC6, 6998, - 0xC7, 7020, - 0xc8, 7149, - 0xc9, 7149, - 0xca, 7149, - 0xcb, 7149, - 0xcc, 7149, - 0xcd, 7149, - 0xce, 7149, - 0xcf, 7149, - 0xD0, 7172, - 0xD1, 7190, - 0xD2, 7208, - 0xD3, 7226, - 0xD4, 7244, - 0xD5, 7262, - 0xD6, 7280, - 0xD7, 7306, - 0xD8, 7324, - 0xD9, 7342, - 0xDA, 7360, - 0xDB, 7378, - 0xDC, 7396, - 0xDD, 7414, - 0xDE, 7432, - 0xDF, 7450, - 0xE0, 7468, - 0xE1, 7486, - 0xE2, 7504, - 0xE3, 7522, - 0xE4, 7540, - 0xE5, 7558, - 0xE6, 7576, - 0xE7, 7602, - 0xE8, 7620, - 0xE9, 7638, - 0xEA, 7656, - 0xEB, 7674, - 0xEC, 7692, - 0xED, 7710, - 0xEE, 7728, - 0xEF, 7746, - 0xF0, 7764, - 0xF1, 7774, - 0xF2, 7792, - 0xF3, 7810, - 0xF4, 7828, - 0xF5, 7846, - 0xF6, 7864, - 0xF7, 7882, - 0xF8, 7900, - 0xF9, 7918, - 0xFA, 7936, - 0xFB, 7954, - 0xFC, 7972, - 0xFD, 7990, - 0xFE, 8008, + /*721*/ uint16(xCondByte), 229, + 0x00, 1182, + 0x01, 1239, + 0x02, 1347, + 0x03, 1369, + 0x05, 1391, + 0x06, 1397, + 0x07, 1400, + 0x08, 1406, + 0x09, 1409, + 0x0B, 1412, + 0x0D, 1415, + 0x10, 1428, + 0x11, 1462, + 0x12, 1496, + 0x13, 1539, + 0x14, 1557, + 0x15, 1575, + 0x16, 1593, + 0x17, 1628, + 0x18, 1646, + 0x1F, 1671, + 0x20, 1692, + 0x21, 1707, + 0x22, 1722, + 0x23, 1737, + 0x24, 1752, + 0x26, 1767, + 0x28, 1782, + 0x29, 1800, + 0x2A, 1818, + 0x2B, 1905, + 0x2C, 1939, + 0x2D, 2026, + 0x2E, 2113, + 0x2F, 2131, + 0x30, 2149, + 0x31, 2152, + 0x32, 2155, + 0x33, 2158, + 0x34, 2161, + 0x35, 2164, + 0x38, 2174, + 0x3A, 3075, + 0x40, 3486, + 0x41, 3515, + 0x42, 3544, + 0x43, 3573, + 0x44, 3602, + 0x45, 3631, + 0x46, 3660, + 0x47, 3689, + 0x48, 3718, + 0x49, 3747, + 0x4A, 3776, + 0x4B, 3805, + 0x4C, 3834, + 0x4D, 3863, + 0x4E, 3892, + 0x4F, 3921, + 0x50, 3950, + 0x51, 3968, + 0x52, 4002, + 0x53, 4020, + 0x54, 4038, + 0x55, 4056, + 0x56, 4074, + 0x57, 4092, + 0x58, 4110, + 0x59, 4144, + 0x5A, 4178, + 0x5B, 4212, + 0x5C, 4238, + 0x5D, 4272, + 0x5E, 4306, + 0x5F, 4340, + 0x60, 4374, + 0x61, 4392, + 0x62, 4410, + 0x63, 4428, + 0x64, 4446, + 0x65, 4464, + 0x66, 4482, + 0x67, 4500, + 0x68, 4518, + 0x69, 4536, + 0x6A, 4554, + 0x6B, 4572, + 0x6C, 4590, + 0x6D, 4600, + 0x6E, 4610, + 0x6F, 4677, + 0x70, 4703, + 0x71, 4745, + 0x72, 4808, + 0x73, 4871, + 0x74, 4936, + 0x75, 4954, + 0x76, 4972, + 0x77, 4990, + 0x7C, 4993, + 0x7D, 5011, + 0x7E, 5029, + 0x7F, 5106, + 0x80, 5132, + 0x81, 5163, + 0x82, 5194, + 0x83, 5225, + 0x84, 5256, + 0x85, 5287, + 0x86, 5318, + 0x87, 5349, + 0x88, 5380, + 0x89, 5411, + 0x8A, 5442, + 0x8B, 5473, + 0x8C, 5504, + 0x8D, 5535, + 0x8E, 5566, + 0x8F, 5597, + 0x90, 5628, + 0x91, 5633, + 0x92, 5638, + 0x93, 5643, + 0x94, 5648, + 0x95, 5653, + 0x96, 5658, + 0x97, 5663, + 0x98, 5668, + 0x99, 5673, + 0x9A, 5678, + 0x9B, 5683, + 0x9C, 5688, + 0x9D, 5693, + 0x9E, 5698, + 0x9F, 5703, + 0xA0, 5708, + 0xA1, 5712, + 0xA2, 5739, + 0xA3, 5742, + 0xA4, 5771, + 0xA5, 5806, + 0xA8, 5838, + 0xA9, 5842, + 0xAA, 5869, + 0xAB, 5872, + 0xAC, 5901, + 0xAD, 5936, + 0xAE, 5968, + 0xAF, 6226, + 0xB0, 6255, + 0xB1, 6261, + 0xB2, 6290, + 0xB3, 6319, + 0xB4, 6348, + 0xB5, 6377, + 0xB6, 6406, + 0xB7, 6435, + 0xB8, 6464, + 0xB9, 6501, + 0xBA, 6511, + 0xBB, 6636, + 0xBC, 6665, + 0xBD, 6732, + 0xBE, 6799, + 0xBF, 6828, + 0xC0, 6857, + 0xC1, 6863, + 0xC2, 6892, + 0xC3, 6934, + 0xC4, 6963, + 0xC5, 6985, + 0xC6, 7007, + 0xC7, 7029, + 0xc8, 7158, + 0xc9, 7158, + 0xca, 7158, + 0xcb, 7158, + 0xcc, 7158, + 0xcd, 7158, + 0xce, 7158, + 0xcf, 7158, + 0xD0, 7181, + 0xD1, 7199, + 0xD2, 7217, + 0xD3, 7235, + 0xD4, 7253, + 0xD5, 7271, + 0xD6, 7289, + 0xD7, 7315, + 0xD8, 7333, + 0xD9, 7351, + 0xDA, 7369, + 0xDB, 7387, + 0xDC, 7405, + 0xDD, 7423, + 0xDE, 7441, + 0xDF, 7459, + 0xE0, 7477, + 0xE1, 7495, + 0xE2, 7513, + 0xE3, 7531, + 0xE4, 7549, + 0xE5, 7567, + 0xE6, 7585, + 0xE7, 7611, + 0xE8, 7629, + 0xE9, 7647, + 0xEA, 7665, + 0xEB, 7683, + 0xEC, 7701, + 0xED, 7719, + 0xEE, 7737, + 0xEF, 7755, + 0xF0, 7773, + 0xF1, 7783, + 0xF2, 7801, + 0xF3, 7819, + 0xF4, 7837, + 0xF5, 7855, + 0xF6, 7873, + 0xF7, 7891, + 0xF8, 7909, + 0xF9, 7927, + 0xFA, 7945, + 0xFB, 7963, + 0xFC, 7981, + 0xFD, 7999, + 0xFE, 8017, + 0xFF, 8035, uint16(xFail), - /*1180*/ uint16(xCondSlashR), - 1189, // 0 - 1205, // 1 - 1221, // 2 - 1225, // 3 - 1229, // 4 - 1233, // 5 + /*1182*/ uint16(xCondSlashR), + 1191, // 0 + 1207, // 1 + 1223, // 2 + 1227, // 3 + 1231, // 4 + 1235, // 5 0, // 6 0, // 7 - /*1189*/ uint16(xCondDataSize), 1193, 1197, 1201, - /*1193*/ uint16(xSetOp), uint16(SLDT), - /*1195*/ uint16(xArgRM16), - /*1196*/ uint16(xMatch), - /*1197*/ uint16(xSetOp), uint16(SLDT), - /*1199*/ uint16(xArgR32M16), - /*1200*/ uint16(xMatch), - /*1201*/ uint16(xSetOp), uint16(SLDT), - /*1203*/ uint16(xArgR64M16), - /*1204*/ uint16(xMatch), - /*1205*/ uint16(xCondDataSize), 1209, 1213, 1217, - /*1209*/ uint16(xSetOp), uint16(STR), - /*1211*/ uint16(xArgRM16), - /*1212*/ uint16(xMatch), - /*1213*/ uint16(xSetOp), uint16(STR), - /*1215*/ uint16(xArgR32M16), - /*1216*/ uint16(xMatch), - /*1217*/ uint16(xSetOp), uint16(STR), - /*1219*/ uint16(xArgR64M16), - /*1220*/ uint16(xMatch), - /*1221*/ uint16(xSetOp), uint16(LLDT), - /*1223*/ uint16(xArgRM16), - /*1224*/ uint16(xMatch), - /*1225*/ uint16(xSetOp), uint16(LTR), - /*1227*/ uint16(xArgRM16), - /*1228*/ uint16(xMatch), - /*1229*/ uint16(xSetOp), uint16(VERR), - /*1231*/ uint16(xArgRM16), - /*1232*/ uint16(xMatch), - /*1233*/ uint16(xSetOp), uint16(VERW), - /*1235*/ uint16(xArgRM16), - /*1236*/ uint16(xMatch), - /*1237*/ uint16(xCondByte), 8, - 0xC8, 1318, - 0xC9, 1321, - 0xD0, 1324, - 0xD1, 1327, - 0xD5, 1330, - 0xD6, 1333, - 0xF8, 1336, - 0xF9, 1342, - /*1255*/ uint16(xCondSlashR), - 1264, // 0 - 1268, // 1 - 1272, // 2 - 1283, // 3 - 1294, // 4 + /*1191*/ uint16(xCondDataSize), 1195, 1199, 1203, + /*1195*/ uint16(xSetOp), uint16(SLDT), + /*1197*/ uint16(xArgRM16), + /*1198*/ uint16(xMatch), + /*1199*/ uint16(xSetOp), uint16(SLDT), + /*1201*/ uint16(xArgR32M16), + /*1202*/ uint16(xMatch), + /*1203*/ uint16(xSetOp), uint16(SLDT), + /*1205*/ uint16(xArgR64M16), + /*1206*/ uint16(xMatch), + /*1207*/ uint16(xCondDataSize), 1211, 1215, 1219, + /*1211*/ uint16(xSetOp), uint16(STR), + /*1213*/ uint16(xArgRM16), + /*1214*/ uint16(xMatch), + /*1215*/ uint16(xSetOp), uint16(STR), + /*1217*/ uint16(xArgR32M16), + /*1218*/ uint16(xMatch), + /*1219*/ uint16(xSetOp), uint16(STR), + /*1221*/ uint16(xArgR64M16), + /*1222*/ uint16(xMatch), + /*1223*/ uint16(xSetOp), uint16(LLDT), + /*1225*/ uint16(xArgRM16), + /*1226*/ uint16(xMatch), + /*1227*/ uint16(xSetOp), uint16(LTR), + /*1229*/ uint16(xArgRM16), + /*1230*/ uint16(xMatch), + /*1231*/ uint16(xSetOp), uint16(VERR), + /*1233*/ uint16(xArgRM16), + /*1234*/ uint16(xMatch), + /*1235*/ uint16(xSetOp), uint16(VERW), + /*1237*/ uint16(xArgRM16), + /*1238*/ uint16(xMatch), + /*1239*/ uint16(xCondByte), 8, + 0xC8, 1320, + 0xC9, 1323, + 0xD0, 1326, + 0xD1, 1329, + 0xD5, 1332, + 0xD6, 1335, + 0xF8, 1338, + 0xF9, 1344, + /*1257*/ uint16(xCondSlashR), + 1266, // 0 + 1270, // 1 + 1274, // 2 + 1285, // 3 + 1296, // 4 0, // 5 - 1310, // 6 - 1314, // 7 - /*1264*/ uint16(xSetOp), uint16(SGDT), - /*1266*/ uint16(xArgM), - /*1267*/ uint16(xMatch), - /*1268*/ uint16(xSetOp), uint16(SIDT), - /*1270*/ uint16(xArgM), - /*1271*/ uint16(xMatch), - /*1272*/ uint16(xCondIs64), 1275, 1279, - /*1275*/ uint16(xSetOp), uint16(LGDT), - /*1277*/ uint16(xArgM16and32), - /*1278*/ uint16(xMatch), - /*1279*/ uint16(xSetOp), uint16(LGDT), - /*1281*/ uint16(xArgM16and64), - /*1282*/ uint16(xMatch), - /*1283*/ uint16(xCondIs64), 1286, 1290, - /*1286*/ uint16(xSetOp), uint16(LIDT), - /*1288*/ uint16(xArgM16and32), - /*1289*/ uint16(xMatch), - /*1290*/ uint16(xSetOp), uint16(LIDT), - /*1292*/ uint16(xArgM16and64), - /*1293*/ uint16(xMatch), - /*1294*/ uint16(xCondDataSize), 1298, 1302, 1306, - /*1298*/ uint16(xSetOp), uint16(SMSW), - /*1300*/ uint16(xArgRM16), - /*1301*/ uint16(xMatch), - /*1302*/ uint16(xSetOp), uint16(SMSW), - /*1304*/ uint16(xArgR32M16), - /*1305*/ uint16(xMatch), - /*1306*/ uint16(xSetOp), uint16(SMSW), - /*1308*/ uint16(xArgR64M16), - /*1309*/ uint16(xMatch), - /*1310*/ uint16(xSetOp), uint16(LMSW), - /*1312*/ uint16(xArgRM16), - /*1313*/ uint16(xMatch), - /*1314*/ uint16(xSetOp), uint16(INVLPG), - /*1316*/ uint16(xArgM), - /*1317*/ uint16(xMatch), - /*1318*/ uint16(xSetOp), uint16(MONITOR), - /*1320*/ uint16(xMatch), - /*1321*/ uint16(xSetOp), uint16(MWAIT), - /*1323*/ uint16(xMatch), - /*1324*/ uint16(xSetOp), uint16(XGETBV), - /*1326*/ uint16(xMatch), - /*1327*/ uint16(xSetOp), uint16(XSETBV), - /*1329*/ uint16(xMatch), - /*1330*/ uint16(xSetOp), uint16(XEND), - /*1332*/ uint16(xMatch), - /*1333*/ uint16(xSetOp), uint16(XTEST), - /*1335*/ uint16(xMatch), - /*1336*/ uint16(xCondIs64), 0, 1339, - /*1339*/ uint16(xSetOp), uint16(SWAPGS), - /*1341*/ uint16(xMatch), - /*1342*/ uint16(xSetOp), uint16(RDTSCP), - /*1344*/ uint16(xMatch), - /*1345*/ uint16(xCondDataSize), 1349, 1355, 1361, - /*1349*/ uint16(xSetOp), uint16(LAR), - /*1351*/ uint16(xReadSlashR), - /*1352*/ uint16(xArgR16), - /*1353*/ uint16(xArgRM16), - /*1354*/ uint16(xMatch), - /*1355*/ uint16(xSetOp), uint16(LAR), - /*1357*/ uint16(xReadSlashR), - /*1358*/ uint16(xArgR32), - /*1359*/ uint16(xArgR32M16), - /*1360*/ uint16(xMatch), - /*1361*/ uint16(xSetOp), uint16(LAR), - /*1363*/ uint16(xReadSlashR), - /*1364*/ uint16(xArgR64), - /*1365*/ uint16(xArgR64M16), - /*1366*/ uint16(xMatch), - /*1367*/ uint16(xCondDataSize), 1371, 1377, 1383, - /*1371*/ uint16(xSetOp), uint16(LSL), - /*1373*/ uint16(xReadSlashR), - /*1374*/ uint16(xArgR16), - /*1375*/ uint16(xArgRM16), - /*1376*/ uint16(xMatch), - /*1377*/ uint16(xSetOp), uint16(LSL), - /*1379*/ uint16(xReadSlashR), - /*1380*/ uint16(xArgR32), - /*1381*/ uint16(xArgR32M16), - /*1382*/ uint16(xMatch), - /*1383*/ uint16(xSetOp), uint16(LSL), - /*1385*/ uint16(xReadSlashR), - /*1386*/ uint16(xArgR64), - /*1387*/ uint16(xArgR32M16), - /*1388*/ uint16(xMatch), - /*1389*/ uint16(xCondIs64), 0, 1392, - /*1392*/ uint16(xSetOp), uint16(SYSCALL), - /*1394*/ uint16(xMatch), - /*1395*/ uint16(xSetOp), uint16(CLTS), - /*1397*/ uint16(xMatch), - /*1398*/ uint16(xCondIs64), 0, 1401, - /*1401*/ uint16(xSetOp), uint16(SYSRET), - /*1403*/ uint16(xMatch), - /*1404*/ uint16(xSetOp), uint16(INVD), - /*1406*/ uint16(xMatch), - /*1407*/ uint16(xSetOp), uint16(WBINVD), - /*1409*/ uint16(xMatch), - /*1410*/ uint16(xSetOp), uint16(UD2), - /*1412*/ uint16(xMatch), - /*1413*/ uint16(xCondSlashR), + 1312, // 6 + 1316, // 7 + /*1266*/ uint16(xSetOp), uint16(SGDT), + /*1268*/ uint16(xArgM), + /*1269*/ uint16(xMatch), + /*1270*/ uint16(xSetOp), uint16(SIDT), + /*1272*/ uint16(xArgM), + /*1273*/ uint16(xMatch), + /*1274*/ uint16(xCondIs64), 1277, 1281, + /*1277*/ uint16(xSetOp), uint16(LGDT), + /*1279*/ uint16(xArgM16and32), + /*1280*/ uint16(xMatch), + /*1281*/ uint16(xSetOp), uint16(LGDT), + /*1283*/ uint16(xArgM16and64), + /*1284*/ uint16(xMatch), + /*1285*/ uint16(xCondIs64), 1288, 1292, + /*1288*/ uint16(xSetOp), uint16(LIDT), + /*1290*/ uint16(xArgM16and32), + /*1291*/ uint16(xMatch), + /*1292*/ uint16(xSetOp), uint16(LIDT), + /*1294*/ uint16(xArgM16and64), + /*1295*/ uint16(xMatch), + /*1296*/ uint16(xCondDataSize), 1300, 1304, 1308, + /*1300*/ uint16(xSetOp), uint16(SMSW), + /*1302*/ uint16(xArgRM16), + /*1303*/ uint16(xMatch), + /*1304*/ uint16(xSetOp), uint16(SMSW), + /*1306*/ uint16(xArgR32M16), + /*1307*/ uint16(xMatch), + /*1308*/ uint16(xSetOp), uint16(SMSW), + /*1310*/ uint16(xArgR64M16), + /*1311*/ uint16(xMatch), + /*1312*/ uint16(xSetOp), uint16(LMSW), + /*1314*/ uint16(xArgRM16), + /*1315*/ uint16(xMatch), + /*1316*/ uint16(xSetOp), uint16(INVLPG), + /*1318*/ uint16(xArgM), + /*1319*/ uint16(xMatch), + /*1320*/ uint16(xSetOp), uint16(MONITOR), + /*1322*/ uint16(xMatch), + /*1323*/ uint16(xSetOp), uint16(MWAIT), + /*1325*/ uint16(xMatch), + /*1326*/ uint16(xSetOp), uint16(XGETBV), + /*1328*/ uint16(xMatch), + /*1329*/ uint16(xSetOp), uint16(XSETBV), + /*1331*/ uint16(xMatch), + /*1332*/ uint16(xSetOp), uint16(XEND), + /*1334*/ uint16(xMatch), + /*1335*/ uint16(xSetOp), uint16(XTEST), + /*1337*/ uint16(xMatch), + /*1338*/ uint16(xCondIs64), 0, 1341, + /*1341*/ uint16(xSetOp), uint16(SWAPGS), + /*1343*/ uint16(xMatch), + /*1344*/ uint16(xSetOp), uint16(RDTSCP), + /*1346*/ uint16(xMatch), + /*1347*/ uint16(xCondDataSize), 1351, 1357, 1363, + /*1351*/ uint16(xSetOp), uint16(LAR), + /*1353*/ uint16(xReadSlashR), + /*1354*/ uint16(xArgR16), + /*1355*/ uint16(xArgRM16), + /*1356*/ uint16(xMatch), + /*1357*/ uint16(xSetOp), uint16(LAR), + /*1359*/ uint16(xReadSlashR), + /*1360*/ uint16(xArgR32), + /*1361*/ uint16(xArgR32M16), + /*1362*/ uint16(xMatch), + /*1363*/ uint16(xSetOp), uint16(LAR), + /*1365*/ uint16(xReadSlashR), + /*1366*/ uint16(xArgR64), + /*1367*/ uint16(xArgR64M16), + /*1368*/ uint16(xMatch), + /*1369*/ uint16(xCondDataSize), 1373, 1379, 1385, + /*1373*/ uint16(xSetOp), uint16(LSL), + /*1375*/ uint16(xReadSlashR), + /*1376*/ uint16(xArgR16), + /*1377*/ uint16(xArgRM16), + /*1378*/ uint16(xMatch), + /*1379*/ uint16(xSetOp), uint16(LSL), + /*1381*/ uint16(xReadSlashR), + /*1382*/ uint16(xArgR32), + /*1383*/ uint16(xArgR32M16), + /*1384*/ uint16(xMatch), + /*1385*/ uint16(xSetOp), uint16(LSL), + /*1387*/ uint16(xReadSlashR), + /*1388*/ uint16(xArgR64), + /*1389*/ uint16(xArgR32M16), + /*1390*/ uint16(xMatch), + /*1391*/ uint16(xCondIs64), 0, 1394, + /*1394*/ uint16(xSetOp), uint16(SYSCALL), + /*1396*/ uint16(xMatch), + /*1397*/ uint16(xSetOp), uint16(CLTS), + /*1399*/ uint16(xMatch), + /*1400*/ uint16(xCondIs64), 0, 1403, + /*1403*/ uint16(xSetOp), uint16(SYSRET), + /*1405*/ uint16(xMatch), + /*1406*/ uint16(xSetOp), uint16(INVD), + /*1408*/ uint16(xMatch), + /*1409*/ uint16(xSetOp), uint16(WBINVD), + /*1411*/ uint16(xMatch), + /*1412*/ uint16(xSetOp), uint16(UD2), + /*1414*/ uint16(xMatch), + /*1415*/ uint16(xCondSlashR), 0, // 0 - 1422, // 1 + 1424, // 1 0, // 2 0, // 3 0, // 4 0, // 5 0, // 6 0, // 7 - /*1422*/ uint16(xSetOp), uint16(PREFETCHW), - /*1424*/ uint16(xArgM8), - /*1425*/ uint16(xMatch), - /*1426*/ uint16(xCondPrefix), 4, - 0xF3, 1454, - 0xF2, 1448, - 0x66, 1442, - 0x0, 1436, - /*1436*/ uint16(xSetOp), uint16(MOVUPS), - /*1438*/ uint16(xReadSlashR), - /*1439*/ uint16(xArgXmm1), - /*1440*/ uint16(xArgXmm2M128), - /*1441*/ uint16(xMatch), - /*1442*/ uint16(xSetOp), uint16(MOVUPD), - /*1444*/ uint16(xReadSlashR), - /*1445*/ uint16(xArgXmm1), - /*1446*/ uint16(xArgXmm2M128), - /*1447*/ uint16(xMatch), - /*1448*/ uint16(xSetOp), uint16(MOVSD_XMM), - /*1450*/ uint16(xReadSlashR), - /*1451*/ uint16(xArgXmm1), - /*1452*/ uint16(xArgXmm2M64), - /*1453*/ uint16(xMatch), - /*1454*/ uint16(xSetOp), uint16(MOVSS), - /*1456*/ uint16(xReadSlashR), - /*1457*/ uint16(xArgXmm1), - /*1458*/ uint16(xArgXmm2M32), - /*1459*/ uint16(xMatch), - /*1460*/ uint16(xCondPrefix), 4, - 0xF3, 1488, - 0xF2, 1482, - 0x66, 1476, - 0x0, 1470, - /*1470*/ uint16(xSetOp), uint16(MOVUPS), - /*1472*/ uint16(xReadSlashR), - /*1473*/ uint16(xArgXmm2M128), - /*1474*/ uint16(xArgXmm1), - /*1475*/ uint16(xMatch), - /*1476*/ uint16(xSetOp), uint16(MOVUPD), - /*1478*/ uint16(xReadSlashR), - /*1479*/ uint16(xArgXmm2M128), - /*1480*/ uint16(xArgXmm), - /*1481*/ uint16(xMatch), - /*1482*/ uint16(xSetOp), uint16(MOVSD_XMM), - /*1484*/ uint16(xReadSlashR), - /*1485*/ uint16(xArgXmm2M64), - /*1486*/ uint16(xArgXmm1), - /*1487*/ uint16(xMatch), - /*1488*/ uint16(xSetOp), uint16(MOVSS), - /*1490*/ uint16(xReadSlashR), - /*1491*/ uint16(xArgXmm2M32), - /*1492*/ uint16(xArgXmm), - /*1493*/ uint16(xMatch), - /*1494*/ uint16(xCondPrefix), 4, - 0xF3, 1531, - 0xF2, 1525, - 0x66, 1519, - 0x0, 1504, - /*1504*/ uint16(xCondIsMem), 1507, 1513, - /*1507*/ uint16(xSetOp), uint16(MOVHLPS), - /*1509*/ uint16(xReadSlashR), - /*1510*/ uint16(xArgXmm1), - /*1511*/ uint16(xArgXmm2), - /*1512*/ uint16(xMatch), - /*1513*/ uint16(xSetOp), uint16(MOVLPS), - /*1515*/ uint16(xReadSlashR), - /*1516*/ uint16(xArgXmm), - /*1517*/ uint16(xArgM64), - /*1518*/ uint16(xMatch), - /*1519*/ uint16(xSetOp), uint16(MOVLPD), - /*1521*/ uint16(xReadSlashR), - /*1522*/ uint16(xArgXmm), - /*1523*/ uint16(xArgXmm2M64), - /*1524*/ uint16(xMatch), - /*1525*/ uint16(xSetOp), uint16(MOVDDUP), - /*1527*/ uint16(xReadSlashR), - /*1528*/ uint16(xArgXmm1), - /*1529*/ uint16(xArgXmm2M64), - /*1530*/ uint16(xMatch), - /*1531*/ uint16(xSetOp), uint16(MOVSLDUP), - /*1533*/ uint16(xReadSlashR), - /*1534*/ uint16(xArgXmm1), - /*1535*/ uint16(xArgXmm2M128), - /*1536*/ uint16(xMatch), - /*1537*/ uint16(xCondPrefix), 2, - 0x66, 1549, - 0x0, 1543, - /*1543*/ uint16(xSetOp), uint16(MOVLPS), - /*1545*/ uint16(xReadSlashR), - /*1546*/ uint16(xArgM64), - /*1547*/ uint16(xArgXmm), - /*1548*/ uint16(xMatch), - /*1549*/ uint16(xSetOp), uint16(MOVLPD), - /*1551*/ uint16(xReadSlashR), - /*1552*/ uint16(xArgXmm2M64), - /*1553*/ uint16(xArgXmm), - /*1554*/ uint16(xMatch), - /*1555*/ uint16(xCondPrefix), 2, - 0x66, 1567, - 0x0, 1561, - /*1561*/ uint16(xSetOp), uint16(UNPCKLPS), - /*1563*/ uint16(xReadSlashR), - /*1564*/ uint16(xArgXmm1), - /*1565*/ uint16(xArgXmm2M128), - /*1566*/ uint16(xMatch), - /*1567*/ uint16(xSetOp), uint16(UNPCKLPD), - /*1569*/ uint16(xReadSlashR), - /*1570*/ uint16(xArgXmm1), - /*1571*/ uint16(xArgXmm2M128), - /*1572*/ uint16(xMatch), - /*1573*/ uint16(xCondPrefix), 2, - 0x66, 1585, - 0x0, 1579, - /*1579*/ uint16(xSetOp), uint16(UNPCKHPS), - /*1581*/ uint16(xReadSlashR), - /*1582*/ uint16(xArgXmm1), - /*1583*/ uint16(xArgXmm2M128), - /*1584*/ uint16(xMatch), - /*1585*/ uint16(xSetOp), uint16(UNPCKHPD), - /*1587*/ uint16(xReadSlashR), - /*1588*/ uint16(xArgXmm1), - /*1589*/ uint16(xArgXmm2M128), - /*1590*/ uint16(xMatch), - /*1591*/ uint16(xCondPrefix), 3, - 0xF3, 1620, - 0x66, 1614, - 0x0, 1599, - /*1599*/ uint16(xCondIsMem), 1602, 1608, - /*1602*/ uint16(xSetOp), uint16(MOVLHPS), - /*1604*/ uint16(xReadSlashR), - /*1605*/ uint16(xArgXmm1), - /*1606*/ uint16(xArgXmm2), - /*1607*/ uint16(xMatch), - /*1608*/ uint16(xSetOp), uint16(MOVHPS), - /*1610*/ uint16(xReadSlashR), - /*1611*/ uint16(xArgXmm), - /*1612*/ uint16(xArgM64), - /*1613*/ uint16(xMatch), - /*1614*/ uint16(xSetOp), uint16(MOVHPD), - /*1616*/ uint16(xReadSlashR), - /*1617*/ uint16(xArgXmm), - /*1618*/ uint16(xArgXmm2M64), - /*1619*/ uint16(xMatch), - /*1620*/ uint16(xSetOp), uint16(MOVSHDUP), - /*1622*/ uint16(xReadSlashR), - /*1623*/ uint16(xArgXmm1), - /*1624*/ uint16(xArgXmm2M128), - /*1625*/ uint16(xMatch), - /*1626*/ uint16(xCondPrefix), 2, - 0x66, 1638, - 0x0, 1632, - /*1632*/ uint16(xSetOp), uint16(MOVHPS), - /*1634*/ uint16(xReadSlashR), - /*1635*/ uint16(xArgM64), - /*1636*/ uint16(xArgXmm), - /*1637*/ uint16(xMatch), - /*1638*/ uint16(xSetOp), uint16(MOVHPD), - /*1640*/ uint16(xReadSlashR), - /*1641*/ uint16(xArgXmm2M64), - /*1642*/ uint16(xArgXmm), - /*1643*/ uint16(xMatch), - /*1644*/ uint16(xCondSlashR), - 1653, // 0 - 1657, // 1 - 1661, // 2 - 1665, // 3 + /*1424*/ uint16(xSetOp), uint16(PREFETCHW), + /*1426*/ uint16(xArgM8), + /*1427*/ uint16(xMatch), + /*1428*/ uint16(xCondPrefix), 4, + 0xF3, 1456, + 0xF2, 1450, + 0x66, 1444, + 0x0, 1438, + /*1438*/ uint16(xSetOp), uint16(MOVUPS), + /*1440*/ uint16(xReadSlashR), + /*1441*/ uint16(xArgXmm1), + /*1442*/ uint16(xArgXmm2M128), + /*1443*/ uint16(xMatch), + /*1444*/ uint16(xSetOp), uint16(MOVUPD), + /*1446*/ uint16(xReadSlashR), + /*1447*/ uint16(xArgXmm1), + /*1448*/ uint16(xArgXmm2M128), + /*1449*/ uint16(xMatch), + /*1450*/ uint16(xSetOp), uint16(MOVSD_XMM), + /*1452*/ uint16(xReadSlashR), + /*1453*/ uint16(xArgXmm1), + /*1454*/ uint16(xArgXmm2M64), + /*1455*/ uint16(xMatch), + /*1456*/ uint16(xSetOp), uint16(MOVSS), + /*1458*/ uint16(xReadSlashR), + /*1459*/ uint16(xArgXmm1), + /*1460*/ uint16(xArgXmm2M32), + /*1461*/ uint16(xMatch), + /*1462*/ uint16(xCondPrefix), 4, + 0xF3, 1490, + 0xF2, 1484, + 0x66, 1478, + 0x0, 1472, + /*1472*/ uint16(xSetOp), uint16(MOVUPS), + /*1474*/ uint16(xReadSlashR), + /*1475*/ uint16(xArgXmm2M128), + /*1476*/ uint16(xArgXmm1), + /*1477*/ uint16(xMatch), + /*1478*/ uint16(xSetOp), uint16(MOVUPD), + /*1480*/ uint16(xReadSlashR), + /*1481*/ uint16(xArgXmm2M128), + /*1482*/ uint16(xArgXmm), + /*1483*/ uint16(xMatch), + /*1484*/ uint16(xSetOp), uint16(MOVSD_XMM), + /*1486*/ uint16(xReadSlashR), + /*1487*/ uint16(xArgXmm2M64), + /*1488*/ uint16(xArgXmm1), + /*1489*/ uint16(xMatch), + /*1490*/ uint16(xSetOp), uint16(MOVSS), + /*1492*/ uint16(xReadSlashR), + /*1493*/ uint16(xArgXmm2M32), + /*1494*/ uint16(xArgXmm), + /*1495*/ uint16(xMatch), + /*1496*/ uint16(xCondPrefix), 4, + 0xF3, 1533, + 0xF2, 1527, + 0x66, 1521, + 0x0, 1506, + /*1506*/ uint16(xCondIsMem), 1509, 1515, + /*1509*/ uint16(xSetOp), uint16(MOVHLPS), + /*1511*/ uint16(xReadSlashR), + /*1512*/ uint16(xArgXmm1), + /*1513*/ uint16(xArgXmm2), + /*1514*/ uint16(xMatch), + /*1515*/ uint16(xSetOp), uint16(MOVLPS), + /*1517*/ uint16(xReadSlashR), + /*1518*/ uint16(xArgXmm), + /*1519*/ uint16(xArgM64), + /*1520*/ uint16(xMatch), + /*1521*/ uint16(xSetOp), uint16(MOVLPD), + /*1523*/ uint16(xReadSlashR), + /*1524*/ uint16(xArgXmm), + /*1525*/ uint16(xArgXmm2M64), + /*1526*/ uint16(xMatch), + /*1527*/ uint16(xSetOp), uint16(MOVDDUP), + /*1529*/ uint16(xReadSlashR), + /*1530*/ uint16(xArgXmm1), + /*1531*/ uint16(xArgXmm2M64), + /*1532*/ uint16(xMatch), + /*1533*/ uint16(xSetOp), uint16(MOVSLDUP), + /*1535*/ uint16(xReadSlashR), + /*1536*/ uint16(xArgXmm1), + /*1537*/ uint16(xArgXmm2M128), + /*1538*/ uint16(xMatch), + /*1539*/ uint16(xCondPrefix), 2, + 0x66, 1551, + 0x0, 1545, + /*1545*/ uint16(xSetOp), uint16(MOVLPS), + /*1547*/ uint16(xReadSlashR), + /*1548*/ uint16(xArgM64), + /*1549*/ uint16(xArgXmm), + /*1550*/ uint16(xMatch), + /*1551*/ uint16(xSetOp), uint16(MOVLPD), + /*1553*/ uint16(xReadSlashR), + /*1554*/ uint16(xArgXmm2M64), + /*1555*/ uint16(xArgXmm), + /*1556*/ uint16(xMatch), + /*1557*/ uint16(xCondPrefix), 2, + 0x66, 1569, + 0x0, 1563, + /*1563*/ uint16(xSetOp), uint16(UNPCKLPS), + /*1565*/ uint16(xReadSlashR), + /*1566*/ uint16(xArgXmm1), + /*1567*/ uint16(xArgXmm2M128), + /*1568*/ uint16(xMatch), + /*1569*/ uint16(xSetOp), uint16(UNPCKLPD), + /*1571*/ uint16(xReadSlashR), + /*1572*/ uint16(xArgXmm1), + /*1573*/ uint16(xArgXmm2M128), + /*1574*/ uint16(xMatch), + /*1575*/ uint16(xCondPrefix), 2, + 0x66, 1587, + 0x0, 1581, + /*1581*/ uint16(xSetOp), uint16(UNPCKHPS), + /*1583*/ uint16(xReadSlashR), + /*1584*/ uint16(xArgXmm1), + /*1585*/ uint16(xArgXmm2M128), + /*1586*/ uint16(xMatch), + /*1587*/ uint16(xSetOp), uint16(UNPCKHPD), + /*1589*/ uint16(xReadSlashR), + /*1590*/ uint16(xArgXmm1), + /*1591*/ uint16(xArgXmm2M128), + /*1592*/ uint16(xMatch), + /*1593*/ uint16(xCondPrefix), 3, + 0xF3, 1622, + 0x66, 1616, + 0x0, 1601, + /*1601*/ uint16(xCondIsMem), 1604, 1610, + /*1604*/ uint16(xSetOp), uint16(MOVLHPS), + /*1606*/ uint16(xReadSlashR), + /*1607*/ uint16(xArgXmm1), + /*1608*/ uint16(xArgXmm2), + /*1609*/ uint16(xMatch), + /*1610*/ uint16(xSetOp), uint16(MOVHPS), + /*1612*/ uint16(xReadSlashR), + /*1613*/ uint16(xArgXmm), + /*1614*/ uint16(xArgM64), + /*1615*/ uint16(xMatch), + /*1616*/ uint16(xSetOp), uint16(MOVHPD), + /*1618*/ uint16(xReadSlashR), + /*1619*/ uint16(xArgXmm), + /*1620*/ uint16(xArgXmm2M64), + /*1621*/ uint16(xMatch), + /*1622*/ uint16(xSetOp), uint16(MOVSHDUP), + /*1624*/ uint16(xReadSlashR), + /*1625*/ uint16(xArgXmm1), + /*1626*/ uint16(xArgXmm2M128), + /*1627*/ uint16(xMatch), + /*1628*/ uint16(xCondPrefix), 2, + 0x66, 1640, + 0x0, 1634, + /*1634*/ uint16(xSetOp), uint16(MOVHPS), + /*1636*/ uint16(xReadSlashR), + /*1637*/ uint16(xArgM64), + /*1638*/ uint16(xArgXmm), + /*1639*/ uint16(xMatch), + /*1640*/ uint16(xSetOp), uint16(MOVHPD), + /*1642*/ uint16(xReadSlashR), + /*1643*/ uint16(xArgXmm2M64), + /*1644*/ uint16(xArgXmm), + /*1645*/ uint16(xMatch), + /*1646*/ uint16(xCondSlashR), + 1655, // 0 + 1659, // 1 + 1663, // 2 + 1667, // 3 0, // 4 0, // 5 0, // 6 0, // 7 - /*1653*/ uint16(xSetOp), uint16(PREFETCHNTA), - /*1655*/ uint16(xArgM8), - /*1656*/ uint16(xMatch), - /*1657*/ uint16(xSetOp), uint16(PREFETCHT0), - /*1659*/ uint16(xArgM8), - /*1660*/ uint16(xMatch), - /*1661*/ uint16(xSetOp), uint16(PREFETCHT1), - /*1663*/ uint16(xArgM8), - /*1664*/ uint16(xMatch), - /*1665*/ uint16(xSetOp), uint16(PREFETCHT2), - /*1667*/ uint16(xArgM8), - /*1668*/ uint16(xMatch), - /*1669*/ uint16(xCondSlashR), - 1678, // 0 + /*1655*/ uint16(xSetOp), uint16(PREFETCHNTA), + /*1657*/ uint16(xArgM8), + /*1658*/ uint16(xMatch), + /*1659*/ uint16(xSetOp), uint16(PREFETCHT0), + /*1661*/ uint16(xArgM8), + /*1662*/ uint16(xMatch), + /*1663*/ uint16(xSetOp), uint16(PREFETCHT1), + /*1665*/ uint16(xArgM8), + /*1666*/ uint16(xMatch), + /*1667*/ uint16(xSetOp), uint16(PREFETCHT2), + /*1669*/ uint16(xArgM8), + /*1670*/ uint16(xMatch), + /*1671*/ uint16(xCondSlashR), + 1680, // 0 0, // 1 0, // 2 0, // 3 @@ -988,5551 +988,5561 @@ var decoder = [...]uint16{ 0, // 5 0, // 6 0, // 7 - /*1678*/ uint16(xCondDataSize), 1682, 1686, 0, - /*1682*/ uint16(xSetOp), uint16(NOP), - /*1684*/ uint16(xArgRM16), - /*1685*/ uint16(xMatch), - /*1686*/ uint16(xSetOp), uint16(NOP), - /*1688*/ uint16(xArgRM32), - /*1689*/ uint16(xMatch), - /*1690*/ uint16(xCondIs64), 1693, 1699, - /*1693*/ uint16(xSetOp), uint16(MOV), - /*1695*/ uint16(xReadSlashR), - /*1696*/ uint16(xArgRmf32), - /*1697*/ uint16(xArgCR0dashCR7), - /*1698*/ uint16(xMatch), - /*1699*/ uint16(xSetOp), uint16(MOV), - /*1701*/ uint16(xReadSlashR), - /*1702*/ uint16(xArgRmf64), - /*1703*/ uint16(xArgCR0dashCR7), - /*1704*/ uint16(xMatch), - /*1705*/ uint16(xCondIs64), 1708, 1714, - /*1708*/ uint16(xSetOp), uint16(MOV), - /*1710*/ uint16(xReadSlashR), - /*1711*/ uint16(xArgRmf32), - /*1712*/ uint16(xArgDR0dashDR7), - /*1713*/ uint16(xMatch), - /*1714*/ uint16(xSetOp), uint16(MOV), - /*1716*/ uint16(xReadSlashR), - /*1717*/ uint16(xArgRmf64), - /*1718*/ uint16(xArgDR0dashDR7), - /*1719*/ uint16(xMatch), - /*1720*/ uint16(xCondIs64), 1723, 1729, - /*1723*/ uint16(xSetOp), uint16(MOV), - /*1725*/ uint16(xReadSlashR), - /*1726*/ uint16(xArgCR0dashCR7), - /*1727*/ uint16(xArgRmf32), - /*1728*/ uint16(xMatch), - /*1729*/ uint16(xSetOp), uint16(MOV), - /*1731*/ uint16(xReadSlashR), - /*1732*/ uint16(xArgCR0dashCR7), - /*1733*/ uint16(xArgRmf64), - /*1734*/ uint16(xMatch), - /*1735*/ uint16(xCondIs64), 1738, 1744, - /*1738*/ uint16(xSetOp), uint16(MOV), - /*1740*/ uint16(xReadSlashR), - /*1741*/ uint16(xArgDR0dashDR7), - /*1742*/ uint16(xArgRmf32), - /*1743*/ uint16(xMatch), - /*1744*/ uint16(xSetOp), uint16(MOV), - /*1746*/ uint16(xReadSlashR), - /*1747*/ uint16(xArgDR0dashDR7), - /*1748*/ uint16(xArgRmf64), - /*1749*/ uint16(xMatch), - /*1750*/ uint16(xCondIs64), 1753, 1759, - /*1753*/ uint16(xSetOp), uint16(MOV), - /*1755*/ uint16(xReadSlashR), - /*1756*/ uint16(xArgRmf32), - /*1757*/ uint16(xArgTR0dashTR7), - /*1758*/ uint16(xMatch), - /*1759*/ uint16(xSetOp), uint16(MOV), - /*1761*/ uint16(xReadSlashR), - /*1762*/ uint16(xArgRmf64), - /*1763*/ uint16(xArgTR0dashTR7), - /*1764*/ uint16(xMatch), - /*1765*/ uint16(xCondIs64), 1768, 1774, - /*1768*/ uint16(xSetOp), uint16(MOV), - /*1770*/ uint16(xReadSlashR), - /*1771*/ uint16(xArgTR0dashTR7), - /*1772*/ uint16(xArgRmf32), - /*1773*/ uint16(xMatch), - /*1774*/ uint16(xSetOp), uint16(MOV), - /*1776*/ uint16(xReadSlashR), - /*1777*/ uint16(xArgTR0dashTR7), - /*1778*/ uint16(xArgRmf64), - /*1779*/ uint16(xMatch), - /*1780*/ uint16(xCondPrefix), 2, - 0x66, 1792, - 0x0, 1786, - /*1786*/ uint16(xSetOp), uint16(MOVAPS), - /*1788*/ uint16(xReadSlashR), - /*1789*/ uint16(xArgXmm1), - /*1790*/ uint16(xArgXmm2M128), - /*1791*/ uint16(xMatch), - /*1792*/ uint16(xSetOp), uint16(MOVAPD), - /*1794*/ uint16(xReadSlashR), - /*1795*/ uint16(xArgXmm1), - /*1796*/ uint16(xArgXmm2M128), - /*1797*/ uint16(xMatch), - /*1798*/ uint16(xCondPrefix), 2, - 0x66, 1810, - 0x0, 1804, - /*1804*/ uint16(xSetOp), uint16(MOVAPS), - /*1806*/ uint16(xReadSlashR), - /*1807*/ uint16(xArgXmm2M128), - /*1808*/ uint16(xArgXmm1), - /*1809*/ uint16(xMatch), - /*1810*/ uint16(xSetOp), uint16(MOVAPD), - /*1812*/ uint16(xReadSlashR), - /*1813*/ uint16(xArgXmm2M128), - /*1814*/ uint16(xArgXmm1), - /*1815*/ uint16(xMatch), - /*1816*/ uint16(xCondIs64), 1819, 1873, - /*1819*/ uint16(xCondPrefix), 4, - 0xF3, 1857, - 0xF2, 1841, - 0x66, 1835, - 0x0, 1829, - /*1829*/ uint16(xSetOp), uint16(CVTPI2PS), - /*1831*/ uint16(xReadSlashR), - /*1832*/ uint16(xArgXmm), - /*1833*/ uint16(xArgMmM64), - /*1834*/ uint16(xMatch), - /*1835*/ uint16(xSetOp), uint16(CVTPI2PD), - /*1837*/ uint16(xReadSlashR), - /*1838*/ uint16(xArgXmm), - /*1839*/ uint16(xArgMmM64), - /*1840*/ uint16(xMatch), - /*1841*/ uint16(xCondDataSize), 1845, 1851, 0, - /*1845*/ uint16(xSetOp), uint16(CVTSI2SD), - /*1847*/ uint16(xReadSlashR), - /*1848*/ uint16(xArgXmm), - /*1849*/ uint16(xArgRM32), - /*1850*/ uint16(xMatch), - /*1851*/ uint16(xSetOp), uint16(CVTSI2SD), - /*1853*/ uint16(xReadSlashR), - /*1854*/ uint16(xArgXmm), - /*1855*/ uint16(xArgRM32), - /*1856*/ uint16(xMatch), - /*1857*/ uint16(xCondDataSize), 1861, 1867, 0, - /*1861*/ uint16(xSetOp), uint16(CVTSI2SS), - /*1863*/ uint16(xReadSlashR), - /*1864*/ uint16(xArgXmm), - /*1865*/ uint16(xArgRM32), - /*1866*/ uint16(xMatch), - /*1867*/ uint16(xSetOp), uint16(CVTSI2SS), - /*1869*/ uint16(xReadSlashR), - /*1870*/ uint16(xArgXmm), - /*1871*/ uint16(xArgRM32), - /*1872*/ uint16(xMatch), - /*1873*/ uint16(xCondPrefix), 4, - 0xF3, 1893, - 0xF2, 1883, - 0x66, 1835, - 0x0, 1829, - /*1883*/ uint16(xCondDataSize), 1845, 1851, 1887, - /*1887*/ uint16(xSetOp), uint16(CVTSI2SD), - /*1889*/ uint16(xReadSlashR), - /*1890*/ uint16(xArgXmm), - /*1891*/ uint16(xArgRM64), - /*1892*/ uint16(xMatch), - /*1893*/ uint16(xCondDataSize), 1861, 1867, 1897, - /*1897*/ uint16(xSetOp), uint16(CVTSI2SS), - /*1899*/ uint16(xReadSlashR), - /*1900*/ uint16(xArgXmm), - /*1901*/ uint16(xArgRM64), - /*1902*/ uint16(xMatch), - /*1903*/ uint16(xCondPrefix), 4, - 0xF3, 1931, - 0xF2, 1925, - 0x66, 1919, - 0x0, 1913, - /*1913*/ uint16(xSetOp), uint16(MOVNTPS), - /*1915*/ uint16(xReadSlashR), - /*1916*/ uint16(xArgM128), - /*1917*/ uint16(xArgXmm), - /*1918*/ uint16(xMatch), - /*1919*/ uint16(xSetOp), uint16(MOVNTPD), - /*1921*/ uint16(xReadSlashR), - /*1922*/ uint16(xArgM128), - /*1923*/ uint16(xArgXmm), - /*1924*/ uint16(xMatch), - /*1925*/ uint16(xSetOp), uint16(MOVNTSD), - /*1927*/ uint16(xReadSlashR), - /*1928*/ uint16(xArgM64), - /*1929*/ uint16(xArgXmm), - /*1930*/ uint16(xMatch), - /*1931*/ uint16(xSetOp), uint16(MOVNTSS), - /*1933*/ uint16(xReadSlashR), - /*1934*/ uint16(xArgM32), - /*1935*/ uint16(xArgXmm), - /*1936*/ uint16(xMatch), - /*1937*/ uint16(xCondIs64), 1940, 1994, - /*1940*/ uint16(xCondPrefix), 4, - 0xF3, 1978, - 0xF2, 1962, - 0x66, 1956, - 0x0, 1950, - /*1950*/ uint16(xSetOp), uint16(CVTTPS2PI), - /*1952*/ uint16(xReadSlashR), - /*1953*/ uint16(xArgMm), - /*1954*/ uint16(xArgXmmM64), - /*1955*/ uint16(xMatch), - /*1956*/ uint16(xSetOp), uint16(CVTTPD2PI), - /*1958*/ uint16(xReadSlashR), - /*1959*/ uint16(xArgMm), - /*1960*/ uint16(xArgXmmM128), - /*1961*/ uint16(xMatch), - /*1962*/ uint16(xCondDataSize), 1966, 1972, 0, - /*1966*/ uint16(xSetOp), uint16(CVTTSD2SI), - /*1968*/ uint16(xReadSlashR), - /*1969*/ uint16(xArgR32), - /*1970*/ uint16(xArgXmmM64), - /*1971*/ uint16(xMatch), - /*1972*/ uint16(xSetOp), uint16(CVTTSD2SI), - /*1974*/ uint16(xReadSlashR), - /*1975*/ uint16(xArgR32), - /*1976*/ uint16(xArgXmmM64), - /*1977*/ uint16(xMatch), - /*1978*/ uint16(xCondDataSize), 1982, 1988, 0, - /*1982*/ uint16(xSetOp), uint16(CVTTSS2SI), - /*1984*/ uint16(xReadSlashR), - /*1985*/ uint16(xArgR32), - /*1986*/ uint16(xArgXmmM32), - /*1987*/ uint16(xMatch), - /*1988*/ uint16(xSetOp), uint16(CVTTSS2SI), - /*1990*/ uint16(xReadSlashR), - /*1991*/ uint16(xArgR32), - /*1992*/ uint16(xArgXmmM32), - /*1993*/ uint16(xMatch), - /*1994*/ uint16(xCondPrefix), 4, - 0xF3, 2014, - 0xF2, 2004, - 0x66, 1956, - 0x0, 1950, - /*2004*/ uint16(xCondDataSize), 1966, 1972, 2008, - /*2008*/ uint16(xSetOp), uint16(CVTTSD2SI), - /*2010*/ uint16(xReadSlashR), - /*2011*/ uint16(xArgR64), - /*2012*/ uint16(xArgXmmM64), - /*2013*/ uint16(xMatch), - /*2014*/ uint16(xCondDataSize), 1982, 1988, 2018, - /*2018*/ uint16(xSetOp), uint16(CVTTSS2SI), - /*2020*/ uint16(xReadSlashR), - /*2021*/ uint16(xArgR64), - /*2022*/ uint16(xArgXmmM32), - /*2023*/ uint16(xMatch), - /*2024*/ uint16(xCondIs64), 2027, 2081, - /*2027*/ uint16(xCondPrefix), 4, - 0xF3, 2065, - 0xF2, 2049, - 0x66, 2043, - 0x0, 2037, - /*2037*/ uint16(xSetOp), uint16(CVTPS2PI), - /*2039*/ uint16(xReadSlashR), - /*2040*/ uint16(xArgMm), - /*2041*/ uint16(xArgXmmM64), - /*2042*/ uint16(xMatch), - /*2043*/ uint16(xSetOp), uint16(CVTPD2PI), - /*2045*/ uint16(xReadSlashR), - /*2046*/ uint16(xArgMm), - /*2047*/ uint16(xArgXmmM128), - /*2048*/ uint16(xMatch), - /*2049*/ uint16(xCondDataSize), 2053, 2059, 0, - /*2053*/ uint16(xSetOp), uint16(CVTSD2SI), - /*2055*/ uint16(xReadSlashR), - /*2056*/ uint16(xArgR32), - /*2057*/ uint16(xArgXmmM64), - /*2058*/ uint16(xMatch), - /*2059*/ uint16(xSetOp), uint16(CVTSD2SI), - /*2061*/ uint16(xReadSlashR), - /*2062*/ uint16(xArgR32), - /*2063*/ uint16(xArgXmmM64), - /*2064*/ uint16(xMatch), - /*2065*/ uint16(xCondDataSize), 2069, 2075, 0, - /*2069*/ uint16(xSetOp), uint16(CVTSS2SI), - /*2071*/ uint16(xReadSlashR), - /*2072*/ uint16(xArgR32), - /*2073*/ uint16(xArgXmmM32), - /*2074*/ uint16(xMatch), - /*2075*/ uint16(xSetOp), uint16(CVTSS2SI), - /*2077*/ uint16(xReadSlashR), - /*2078*/ uint16(xArgR32), - /*2079*/ uint16(xArgXmmM32), - /*2080*/ uint16(xMatch), - /*2081*/ uint16(xCondPrefix), 4, - 0xF3, 2101, - 0xF2, 2091, - 0x66, 2043, - 0x0, 2037, - /*2091*/ uint16(xCondDataSize), 2053, 2059, 2095, - /*2095*/ uint16(xSetOp), uint16(CVTSD2SI), - /*2097*/ uint16(xReadSlashR), - /*2098*/ uint16(xArgR64), - /*2099*/ uint16(xArgXmmM64), - /*2100*/ uint16(xMatch), - /*2101*/ uint16(xCondDataSize), 2069, 2075, 2105, - /*2105*/ uint16(xSetOp), uint16(CVTSS2SI), - /*2107*/ uint16(xReadSlashR), - /*2108*/ uint16(xArgR64), - /*2109*/ uint16(xArgXmmM32), - /*2110*/ uint16(xMatch), - /*2111*/ uint16(xCondPrefix), 2, - 0x66, 2123, - 0x0, 2117, - /*2117*/ uint16(xSetOp), uint16(UCOMISS), - /*2119*/ uint16(xReadSlashR), - /*2120*/ uint16(xArgXmm1), - /*2121*/ uint16(xArgXmm2M32), - /*2122*/ uint16(xMatch), - /*2123*/ uint16(xSetOp), uint16(UCOMISD), - /*2125*/ uint16(xReadSlashR), - /*2126*/ uint16(xArgXmm1), - /*2127*/ uint16(xArgXmm2M64), - /*2128*/ uint16(xMatch), - /*2129*/ uint16(xCondPrefix), 2, - 0x66, 2141, - 0x0, 2135, - /*2135*/ uint16(xSetOp), uint16(COMISS), - /*2137*/ uint16(xReadSlashR), - /*2138*/ uint16(xArgXmm1), - /*2139*/ uint16(xArgXmm2M32), - /*2140*/ uint16(xMatch), - /*2141*/ uint16(xSetOp), uint16(COMISD), - /*2143*/ uint16(xReadSlashR), - /*2144*/ uint16(xArgXmm1), - /*2145*/ uint16(xArgXmm2M64), - /*2146*/ uint16(xMatch), - /*2147*/ uint16(xSetOp), uint16(WRMSR), - /*2149*/ uint16(xMatch), - /*2150*/ uint16(xSetOp), uint16(RDTSC), - /*2152*/ uint16(xMatch), - /*2153*/ uint16(xSetOp), uint16(RDMSR), - /*2155*/ uint16(xMatch), - /*2156*/ uint16(xSetOp), uint16(RDPMC), - /*2158*/ uint16(xMatch), - /*2159*/ uint16(xSetOp), uint16(SYSENTER), - /*2161*/ uint16(xMatch), - /*2162*/ uint16(xCondDataSize), 2166, 2166, 2169, - /*2166*/ uint16(xSetOp), uint16(SYSEXIT), - /*2168*/ uint16(xMatch), - /*2169*/ uint16(xSetOp), uint16(SYSEXIT), - /*2171*/ uint16(xMatch), - /*2172*/ uint16(xCondByte), 54, - 0x00, 2283, - 0x01, 2301, - 0x02, 2319, - 0x03, 2337, - 0x04, 2355, - 0x05, 2373, - 0x06, 2391, - 0x07, 2409, - 0x08, 2427, - 0x09, 2445, - 0x0A, 2463, - 0x0B, 2481, - 0x10, 2499, - 0x14, 2510, - 0x15, 2521, - 0x17, 2532, - 0x1C, 2542, - 0x1D, 2560, - 0x1E, 2578, - 0x20, 2596, - 0x21, 2606, - 0x22, 2616, - 0x23, 2626, - 0x24, 2636, - 0x25, 2646, - 0x28, 2656, - 0x29, 2666, - 0x2A, 2676, - 0x2B, 2686, - 0x30, 2696, - 0x31, 2706, - 0x32, 2716, - 0x33, 2726, - 0x34, 2736, - 0x35, 2746, - 0x37, 2756, - 0x38, 2766, - 0x39, 2776, - 0x3A, 2786, - 0x3B, 2796, - 0x3C, 2806, - 0x3D, 2816, - 0x3E, 2826, - 0x3F, 2836, - 0x40, 2846, - 0x41, 2856, - 0x82, 2866, - 0xDB, 2889, - 0xDC, 2899, - 0xDD, 2909, - 0xDE, 2919, - 0xDF, 2929, - 0xF0, 2939, - 0xF1, 3006, + /*1680*/ uint16(xCondDataSize), 1684, 1688, 0, + /*1684*/ uint16(xSetOp), uint16(NOP), + /*1686*/ uint16(xArgRM16), + /*1687*/ uint16(xMatch), + /*1688*/ uint16(xSetOp), uint16(NOP), + /*1690*/ uint16(xArgRM32), + /*1691*/ uint16(xMatch), + /*1692*/ uint16(xCondIs64), 1695, 1701, + /*1695*/ uint16(xSetOp), uint16(MOV), + /*1697*/ uint16(xReadSlashR), + /*1698*/ uint16(xArgRmf32), + /*1699*/ uint16(xArgCR0dashCR7), + /*1700*/ uint16(xMatch), + /*1701*/ uint16(xSetOp), uint16(MOV), + /*1703*/ uint16(xReadSlashR), + /*1704*/ uint16(xArgRmf64), + /*1705*/ uint16(xArgCR0dashCR7), + /*1706*/ uint16(xMatch), + /*1707*/ uint16(xCondIs64), 1710, 1716, + /*1710*/ uint16(xSetOp), uint16(MOV), + /*1712*/ uint16(xReadSlashR), + /*1713*/ uint16(xArgRmf32), + /*1714*/ uint16(xArgDR0dashDR7), + /*1715*/ uint16(xMatch), + /*1716*/ uint16(xSetOp), uint16(MOV), + /*1718*/ uint16(xReadSlashR), + /*1719*/ uint16(xArgRmf64), + /*1720*/ uint16(xArgDR0dashDR7), + /*1721*/ uint16(xMatch), + /*1722*/ uint16(xCondIs64), 1725, 1731, + /*1725*/ uint16(xSetOp), uint16(MOV), + /*1727*/ uint16(xReadSlashR), + /*1728*/ uint16(xArgCR0dashCR7), + /*1729*/ uint16(xArgRmf32), + /*1730*/ uint16(xMatch), + /*1731*/ uint16(xSetOp), uint16(MOV), + /*1733*/ uint16(xReadSlashR), + /*1734*/ uint16(xArgCR0dashCR7), + /*1735*/ uint16(xArgRmf64), + /*1736*/ uint16(xMatch), + /*1737*/ uint16(xCondIs64), 1740, 1746, + /*1740*/ uint16(xSetOp), uint16(MOV), + /*1742*/ uint16(xReadSlashR), + /*1743*/ uint16(xArgDR0dashDR7), + /*1744*/ uint16(xArgRmf32), + /*1745*/ uint16(xMatch), + /*1746*/ uint16(xSetOp), uint16(MOV), + /*1748*/ uint16(xReadSlashR), + /*1749*/ uint16(xArgDR0dashDR7), + /*1750*/ uint16(xArgRmf64), + /*1751*/ uint16(xMatch), + /*1752*/ uint16(xCondIs64), 1755, 1761, + /*1755*/ uint16(xSetOp), uint16(MOV), + /*1757*/ uint16(xReadSlashR), + /*1758*/ uint16(xArgRmf32), + /*1759*/ uint16(xArgTR0dashTR7), + /*1760*/ uint16(xMatch), + /*1761*/ uint16(xSetOp), uint16(MOV), + /*1763*/ uint16(xReadSlashR), + /*1764*/ uint16(xArgRmf64), + /*1765*/ uint16(xArgTR0dashTR7), + /*1766*/ uint16(xMatch), + /*1767*/ uint16(xCondIs64), 1770, 1776, + /*1770*/ uint16(xSetOp), uint16(MOV), + /*1772*/ uint16(xReadSlashR), + /*1773*/ uint16(xArgTR0dashTR7), + /*1774*/ uint16(xArgRmf32), + /*1775*/ uint16(xMatch), + /*1776*/ uint16(xSetOp), uint16(MOV), + /*1778*/ uint16(xReadSlashR), + /*1779*/ uint16(xArgTR0dashTR7), + /*1780*/ uint16(xArgRmf64), + /*1781*/ uint16(xMatch), + /*1782*/ uint16(xCondPrefix), 2, + 0x66, 1794, + 0x0, 1788, + /*1788*/ uint16(xSetOp), uint16(MOVAPS), + /*1790*/ uint16(xReadSlashR), + /*1791*/ uint16(xArgXmm1), + /*1792*/ uint16(xArgXmm2M128), + /*1793*/ uint16(xMatch), + /*1794*/ uint16(xSetOp), uint16(MOVAPD), + /*1796*/ uint16(xReadSlashR), + /*1797*/ uint16(xArgXmm1), + /*1798*/ uint16(xArgXmm2M128), + /*1799*/ uint16(xMatch), + /*1800*/ uint16(xCondPrefix), 2, + 0x66, 1812, + 0x0, 1806, + /*1806*/ uint16(xSetOp), uint16(MOVAPS), + /*1808*/ uint16(xReadSlashR), + /*1809*/ uint16(xArgXmm2M128), + /*1810*/ uint16(xArgXmm1), + /*1811*/ uint16(xMatch), + /*1812*/ uint16(xSetOp), uint16(MOVAPD), + /*1814*/ uint16(xReadSlashR), + /*1815*/ uint16(xArgXmm2M128), + /*1816*/ uint16(xArgXmm1), + /*1817*/ uint16(xMatch), + /*1818*/ uint16(xCondIs64), 1821, 1875, + /*1821*/ uint16(xCondPrefix), 4, + 0xF3, 1859, + 0xF2, 1843, + 0x66, 1837, + 0x0, 1831, + /*1831*/ uint16(xSetOp), uint16(CVTPI2PS), + /*1833*/ uint16(xReadSlashR), + /*1834*/ uint16(xArgXmm), + /*1835*/ uint16(xArgMmM64), + /*1836*/ uint16(xMatch), + /*1837*/ uint16(xSetOp), uint16(CVTPI2PD), + /*1839*/ uint16(xReadSlashR), + /*1840*/ uint16(xArgXmm), + /*1841*/ uint16(xArgMmM64), + /*1842*/ uint16(xMatch), + /*1843*/ uint16(xCondDataSize), 1847, 1853, 0, + /*1847*/ uint16(xSetOp), uint16(CVTSI2SD), + /*1849*/ uint16(xReadSlashR), + /*1850*/ uint16(xArgXmm), + /*1851*/ uint16(xArgRM32), + /*1852*/ uint16(xMatch), + /*1853*/ uint16(xSetOp), uint16(CVTSI2SD), + /*1855*/ uint16(xReadSlashR), + /*1856*/ uint16(xArgXmm), + /*1857*/ uint16(xArgRM32), + /*1858*/ uint16(xMatch), + /*1859*/ uint16(xCondDataSize), 1863, 1869, 0, + /*1863*/ uint16(xSetOp), uint16(CVTSI2SS), + /*1865*/ uint16(xReadSlashR), + /*1866*/ uint16(xArgXmm), + /*1867*/ uint16(xArgRM32), + /*1868*/ uint16(xMatch), + /*1869*/ uint16(xSetOp), uint16(CVTSI2SS), + /*1871*/ uint16(xReadSlashR), + /*1872*/ uint16(xArgXmm), + /*1873*/ uint16(xArgRM32), + /*1874*/ uint16(xMatch), + /*1875*/ uint16(xCondPrefix), 4, + 0xF3, 1895, + 0xF2, 1885, + 0x66, 1837, + 0x0, 1831, + /*1885*/ uint16(xCondDataSize), 1847, 1853, 1889, + /*1889*/ uint16(xSetOp), uint16(CVTSI2SD), + /*1891*/ uint16(xReadSlashR), + /*1892*/ uint16(xArgXmm), + /*1893*/ uint16(xArgRM64), + /*1894*/ uint16(xMatch), + /*1895*/ uint16(xCondDataSize), 1863, 1869, 1899, + /*1899*/ uint16(xSetOp), uint16(CVTSI2SS), + /*1901*/ uint16(xReadSlashR), + /*1902*/ uint16(xArgXmm), + /*1903*/ uint16(xArgRM64), + /*1904*/ uint16(xMatch), + /*1905*/ uint16(xCondPrefix), 4, + 0xF3, 1933, + 0xF2, 1927, + 0x66, 1921, + 0x0, 1915, + /*1915*/ uint16(xSetOp), uint16(MOVNTPS), + /*1917*/ uint16(xReadSlashR), + /*1918*/ uint16(xArgM128), + /*1919*/ uint16(xArgXmm), + /*1920*/ uint16(xMatch), + /*1921*/ uint16(xSetOp), uint16(MOVNTPD), + /*1923*/ uint16(xReadSlashR), + /*1924*/ uint16(xArgM128), + /*1925*/ uint16(xArgXmm), + /*1926*/ uint16(xMatch), + /*1927*/ uint16(xSetOp), uint16(MOVNTSD), + /*1929*/ uint16(xReadSlashR), + /*1930*/ uint16(xArgM64), + /*1931*/ uint16(xArgXmm), + /*1932*/ uint16(xMatch), + /*1933*/ uint16(xSetOp), uint16(MOVNTSS), + /*1935*/ uint16(xReadSlashR), + /*1936*/ uint16(xArgM32), + /*1937*/ uint16(xArgXmm), + /*1938*/ uint16(xMatch), + /*1939*/ uint16(xCondIs64), 1942, 1996, + /*1942*/ uint16(xCondPrefix), 4, + 0xF3, 1980, + 0xF2, 1964, + 0x66, 1958, + 0x0, 1952, + /*1952*/ uint16(xSetOp), uint16(CVTTPS2PI), + /*1954*/ uint16(xReadSlashR), + /*1955*/ uint16(xArgMm), + /*1956*/ uint16(xArgXmmM64), + /*1957*/ uint16(xMatch), + /*1958*/ uint16(xSetOp), uint16(CVTTPD2PI), + /*1960*/ uint16(xReadSlashR), + /*1961*/ uint16(xArgMm), + /*1962*/ uint16(xArgXmmM128), + /*1963*/ uint16(xMatch), + /*1964*/ uint16(xCondDataSize), 1968, 1974, 0, + /*1968*/ uint16(xSetOp), uint16(CVTTSD2SI), + /*1970*/ uint16(xReadSlashR), + /*1971*/ uint16(xArgR32), + /*1972*/ uint16(xArgXmmM64), + /*1973*/ uint16(xMatch), + /*1974*/ uint16(xSetOp), uint16(CVTTSD2SI), + /*1976*/ uint16(xReadSlashR), + /*1977*/ uint16(xArgR32), + /*1978*/ uint16(xArgXmmM64), + /*1979*/ uint16(xMatch), + /*1980*/ uint16(xCondDataSize), 1984, 1990, 0, + /*1984*/ uint16(xSetOp), uint16(CVTTSS2SI), + /*1986*/ uint16(xReadSlashR), + /*1987*/ uint16(xArgR32), + /*1988*/ uint16(xArgXmmM32), + /*1989*/ uint16(xMatch), + /*1990*/ uint16(xSetOp), uint16(CVTTSS2SI), + /*1992*/ uint16(xReadSlashR), + /*1993*/ uint16(xArgR32), + /*1994*/ uint16(xArgXmmM32), + /*1995*/ uint16(xMatch), + /*1996*/ uint16(xCondPrefix), 4, + 0xF3, 2016, + 0xF2, 2006, + 0x66, 1958, + 0x0, 1952, + /*2006*/ uint16(xCondDataSize), 1968, 1974, 2010, + /*2010*/ uint16(xSetOp), uint16(CVTTSD2SI), + /*2012*/ uint16(xReadSlashR), + /*2013*/ uint16(xArgR64), + /*2014*/ uint16(xArgXmmM64), + /*2015*/ uint16(xMatch), + /*2016*/ uint16(xCondDataSize), 1984, 1990, 2020, + /*2020*/ uint16(xSetOp), uint16(CVTTSS2SI), + /*2022*/ uint16(xReadSlashR), + /*2023*/ uint16(xArgR64), + /*2024*/ uint16(xArgXmmM32), + /*2025*/ uint16(xMatch), + /*2026*/ uint16(xCondIs64), 2029, 2083, + /*2029*/ uint16(xCondPrefix), 4, + 0xF3, 2067, + 0xF2, 2051, + 0x66, 2045, + 0x0, 2039, + /*2039*/ uint16(xSetOp), uint16(CVTPS2PI), + /*2041*/ uint16(xReadSlashR), + /*2042*/ uint16(xArgMm), + /*2043*/ uint16(xArgXmmM64), + /*2044*/ uint16(xMatch), + /*2045*/ uint16(xSetOp), uint16(CVTPD2PI), + /*2047*/ uint16(xReadSlashR), + /*2048*/ uint16(xArgMm), + /*2049*/ uint16(xArgXmmM128), + /*2050*/ uint16(xMatch), + /*2051*/ uint16(xCondDataSize), 2055, 2061, 0, + /*2055*/ uint16(xSetOp), uint16(CVTSD2SI), + /*2057*/ uint16(xReadSlashR), + /*2058*/ uint16(xArgR32), + /*2059*/ uint16(xArgXmmM64), + /*2060*/ uint16(xMatch), + /*2061*/ uint16(xSetOp), uint16(CVTSD2SI), + /*2063*/ uint16(xReadSlashR), + /*2064*/ uint16(xArgR32), + /*2065*/ uint16(xArgXmmM64), + /*2066*/ uint16(xMatch), + /*2067*/ uint16(xCondDataSize), 2071, 2077, 0, + /*2071*/ uint16(xSetOp), uint16(CVTSS2SI), + /*2073*/ uint16(xReadSlashR), + /*2074*/ uint16(xArgR32), + /*2075*/ uint16(xArgXmmM32), + /*2076*/ uint16(xMatch), + /*2077*/ uint16(xSetOp), uint16(CVTSS2SI), + /*2079*/ uint16(xReadSlashR), + /*2080*/ uint16(xArgR32), + /*2081*/ uint16(xArgXmmM32), + /*2082*/ uint16(xMatch), + /*2083*/ uint16(xCondPrefix), 4, + 0xF3, 2103, + 0xF2, 2093, + 0x66, 2045, + 0x0, 2039, + /*2093*/ uint16(xCondDataSize), 2055, 2061, 2097, + /*2097*/ uint16(xSetOp), uint16(CVTSD2SI), + /*2099*/ uint16(xReadSlashR), + /*2100*/ uint16(xArgR64), + /*2101*/ uint16(xArgXmmM64), + /*2102*/ uint16(xMatch), + /*2103*/ uint16(xCondDataSize), 2071, 2077, 2107, + /*2107*/ uint16(xSetOp), uint16(CVTSS2SI), + /*2109*/ uint16(xReadSlashR), + /*2110*/ uint16(xArgR64), + /*2111*/ uint16(xArgXmmM32), + /*2112*/ uint16(xMatch), + /*2113*/ uint16(xCondPrefix), 2, + 0x66, 2125, + 0x0, 2119, + /*2119*/ uint16(xSetOp), uint16(UCOMISS), + /*2121*/ uint16(xReadSlashR), + /*2122*/ uint16(xArgXmm1), + /*2123*/ uint16(xArgXmm2M32), + /*2124*/ uint16(xMatch), + /*2125*/ uint16(xSetOp), uint16(UCOMISD), + /*2127*/ uint16(xReadSlashR), + /*2128*/ uint16(xArgXmm1), + /*2129*/ uint16(xArgXmm2M64), + /*2130*/ uint16(xMatch), + /*2131*/ uint16(xCondPrefix), 2, + 0x66, 2143, + 0x0, 2137, + /*2137*/ uint16(xSetOp), uint16(COMISS), + /*2139*/ uint16(xReadSlashR), + /*2140*/ uint16(xArgXmm1), + /*2141*/ uint16(xArgXmm2M32), + /*2142*/ uint16(xMatch), + /*2143*/ uint16(xSetOp), uint16(COMISD), + /*2145*/ uint16(xReadSlashR), + /*2146*/ uint16(xArgXmm1), + /*2147*/ uint16(xArgXmm2M64), + /*2148*/ uint16(xMatch), + /*2149*/ uint16(xSetOp), uint16(WRMSR), + /*2151*/ uint16(xMatch), + /*2152*/ uint16(xSetOp), uint16(RDTSC), + /*2154*/ uint16(xMatch), + /*2155*/ uint16(xSetOp), uint16(RDMSR), + /*2157*/ uint16(xMatch), + /*2158*/ uint16(xSetOp), uint16(RDPMC), + /*2160*/ uint16(xMatch), + /*2161*/ uint16(xSetOp), uint16(SYSENTER), + /*2163*/ uint16(xMatch), + /*2164*/ uint16(xCondDataSize), 2168, 2168, 2171, + /*2168*/ uint16(xSetOp), uint16(SYSEXIT), + /*2170*/ uint16(xMatch), + /*2171*/ uint16(xSetOp), uint16(SYSEXIT), + /*2173*/ uint16(xMatch), + /*2174*/ uint16(xCondByte), 54, + 0x00, 2285, + 0x01, 2303, + 0x02, 2321, + 0x03, 2339, + 0x04, 2357, + 0x05, 2375, + 0x06, 2393, + 0x07, 2411, + 0x08, 2429, + 0x09, 2447, + 0x0A, 2465, + 0x0B, 2483, + 0x10, 2501, + 0x14, 2512, + 0x15, 2523, + 0x17, 2534, + 0x1C, 2544, + 0x1D, 2562, + 0x1E, 2580, + 0x20, 2598, + 0x21, 2608, + 0x22, 2618, + 0x23, 2628, + 0x24, 2638, + 0x25, 2648, + 0x28, 2658, + 0x29, 2668, + 0x2A, 2678, + 0x2B, 2688, + 0x30, 2698, + 0x31, 2708, + 0x32, 2718, + 0x33, 2728, + 0x34, 2738, + 0x35, 2748, + 0x37, 2758, + 0x38, 2768, + 0x39, 2778, + 0x3A, 2788, + 0x3B, 2798, + 0x3C, 2808, + 0x3D, 2818, + 0x3E, 2828, + 0x3F, 2838, + 0x40, 2848, + 0x41, 2858, + 0x82, 2868, + 0xDB, 2891, + 0xDC, 2901, + 0xDD, 2911, + 0xDE, 2921, + 0xDF, 2931, + 0xF0, 2941, + 0xF1, 3008, uint16(xFail), - /*2283*/ uint16(xCondPrefix), 2, - 0x66, 2295, - 0x0, 2289, - /*2289*/ uint16(xSetOp), uint16(PSHUFB), - /*2291*/ uint16(xReadSlashR), - /*2292*/ uint16(xArgMm1), - /*2293*/ uint16(xArgMm2M64), - /*2294*/ uint16(xMatch), - /*2295*/ uint16(xSetOp), uint16(PSHUFB), - /*2297*/ uint16(xReadSlashR), - /*2298*/ uint16(xArgXmm1), - /*2299*/ uint16(xArgXmm2M128), - /*2300*/ uint16(xMatch), - /*2301*/ uint16(xCondPrefix), 2, - 0x66, 2313, - 0x0, 2307, - /*2307*/ uint16(xSetOp), uint16(PHADDW), - /*2309*/ uint16(xReadSlashR), - /*2310*/ uint16(xArgMm1), - /*2311*/ uint16(xArgMm2M64), - /*2312*/ uint16(xMatch), - /*2313*/ uint16(xSetOp), uint16(PHADDW), - /*2315*/ uint16(xReadSlashR), - /*2316*/ uint16(xArgXmm1), - /*2317*/ uint16(xArgXmm2M128), - /*2318*/ uint16(xMatch), - /*2319*/ uint16(xCondPrefix), 2, - 0x66, 2331, - 0x0, 2325, - /*2325*/ uint16(xSetOp), uint16(PHADDD), - /*2327*/ uint16(xReadSlashR), - /*2328*/ uint16(xArgMm1), - /*2329*/ uint16(xArgMm2M64), - /*2330*/ uint16(xMatch), - /*2331*/ uint16(xSetOp), uint16(PHADDD), - /*2333*/ uint16(xReadSlashR), - /*2334*/ uint16(xArgXmm1), - /*2335*/ uint16(xArgXmm2M128), - /*2336*/ uint16(xMatch), - /*2337*/ uint16(xCondPrefix), 2, - 0x66, 2349, - 0x0, 2343, - /*2343*/ uint16(xSetOp), uint16(PHADDSW), - /*2345*/ uint16(xReadSlashR), - /*2346*/ uint16(xArgMm1), - /*2347*/ uint16(xArgMm2M64), - /*2348*/ uint16(xMatch), - /*2349*/ uint16(xSetOp), uint16(PHADDSW), - /*2351*/ uint16(xReadSlashR), - /*2352*/ uint16(xArgXmm1), - /*2353*/ uint16(xArgXmm2M128), - /*2354*/ uint16(xMatch), - /*2355*/ uint16(xCondPrefix), 2, - 0x66, 2367, - 0x0, 2361, - /*2361*/ uint16(xSetOp), uint16(PMADDUBSW), - /*2363*/ uint16(xReadSlashR), - /*2364*/ uint16(xArgMm1), - /*2365*/ uint16(xArgMm2M64), - /*2366*/ uint16(xMatch), - /*2367*/ uint16(xSetOp), uint16(PMADDUBSW), - /*2369*/ uint16(xReadSlashR), - /*2370*/ uint16(xArgXmm1), - /*2371*/ uint16(xArgXmm2M128), - /*2372*/ uint16(xMatch), - /*2373*/ uint16(xCondPrefix), 2, - 0x66, 2385, - 0x0, 2379, - /*2379*/ uint16(xSetOp), uint16(PHSUBW), - /*2381*/ uint16(xReadSlashR), - /*2382*/ uint16(xArgMm1), - /*2383*/ uint16(xArgMm2M64), - /*2384*/ uint16(xMatch), - /*2385*/ uint16(xSetOp), uint16(PHSUBW), - /*2387*/ uint16(xReadSlashR), - /*2388*/ uint16(xArgXmm1), - /*2389*/ uint16(xArgXmm2M128), - /*2390*/ uint16(xMatch), - /*2391*/ uint16(xCondPrefix), 2, - 0x66, 2403, - 0x0, 2397, - /*2397*/ uint16(xSetOp), uint16(PHSUBD), - /*2399*/ uint16(xReadSlashR), - /*2400*/ uint16(xArgMm1), - /*2401*/ uint16(xArgMm2M64), - /*2402*/ uint16(xMatch), - /*2403*/ uint16(xSetOp), uint16(PHSUBD), - /*2405*/ uint16(xReadSlashR), - /*2406*/ uint16(xArgXmm1), - /*2407*/ uint16(xArgXmm2M128), - /*2408*/ uint16(xMatch), - /*2409*/ uint16(xCondPrefix), 2, - 0x66, 2421, - 0x0, 2415, - /*2415*/ uint16(xSetOp), uint16(PHSUBSW), - /*2417*/ uint16(xReadSlashR), - /*2418*/ uint16(xArgMm1), - /*2419*/ uint16(xArgMm2M64), - /*2420*/ uint16(xMatch), - /*2421*/ uint16(xSetOp), uint16(PHSUBSW), - /*2423*/ uint16(xReadSlashR), - /*2424*/ uint16(xArgXmm1), - /*2425*/ uint16(xArgXmm2M128), - /*2426*/ uint16(xMatch), - /*2427*/ uint16(xCondPrefix), 2, - 0x66, 2439, - 0x0, 2433, - /*2433*/ uint16(xSetOp), uint16(PSIGNB), - /*2435*/ uint16(xReadSlashR), - /*2436*/ uint16(xArgMm1), - /*2437*/ uint16(xArgMm2M64), - /*2438*/ uint16(xMatch), - /*2439*/ uint16(xSetOp), uint16(PSIGNB), - /*2441*/ uint16(xReadSlashR), - /*2442*/ uint16(xArgXmm1), - /*2443*/ uint16(xArgXmm2M128), - /*2444*/ uint16(xMatch), - /*2445*/ uint16(xCondPrefix), 2, - 0x66, 2457, - 0x0, 2451, - /*2451*/ uint16(xSetOp), uint16(PSIGNW), - /*2453*/ uint16(xReadSlashR), - /*2454*/ uint16(xArgMm1), - /*2455*/ uint16(xArgMm2M64), - /*2456*/ uint16(xMatch), - /*2457*/ uint16(xSetOp), uint16(PSIGNW), - /*2459*/ uint16(xReadSlashR), - /*2460*/ uint16(xArgXmm1), - /*2461*/ uint16(xArgXmm2M128), - /*2462*/ uint16(xMatch), - /*2463*/ uint16(xCondPrefix), 2, - 0x66, 2475, - 0x0, 2469, - /*2469*/ uint16(xSetOp), uint16(PSIGND), - /*2471*/ uint16(xReadSlashR), - /*2472*/ uint16(xArgMm1), - /*2473*/ uint16(xArgMm2M64), - /*2474*/ uint16(xMatch), - /*2475*/ uint16(xSetOp), uint16(PSIGND), - /*2477*/ uint16(xReadSlashR), - /*2478*/ uint16(xArgXmm1), - /*2479*/ uint16(xArgXmm2M128), - /*2480*/ uint16(xMatch), - /*2481*/ uint16(xCondPrefix), 2, - 0x66, 2493, - 0x0, 2487, - /*2487*/ uint16(xSetOp), uint16(PMULHRSW), - /*2489*/ uint16(xReadSlashR), - /*2490*/ uint16(xArgMm1), - /*2491*/ uint16(xArgMm2M64), - /*2492*/ uint16(xMatch), - /*2493*/ uint16(xSetOp), uint16(PMULHRSW), - /*2495*/ uint16(xReadSlashR), - /*2496*/ uint16(xArgXmm1), - /*2497*/ uint16(xArgXmm2M128), - /*2498*/ uint16(xMatch), - /*2499*/ uint16(xCondPrefix), 1, - 0x66, 2503, - /*2503*/ uint16(xSetOp), uint16(PBLENDVB), - /*2505*/ uint16(xReadSlashR), - /*2506*/ uint16(xArgXmm1), - /*2507*/ uint16(xArgXmm2M128), - /*2508*/ uint16(xArgXMM0), - /*2509*/ uint16(xMatch), - /*2510*/ uint16(xCondPrefix), 1, - 0x66, 2514, - /*2514*/ uint16(xSetOp), uint16(BLENDVPS), - /*2516*/ uint16(xReadSlashR), - /*2517*/ uint16(xArgXmm1), - /*2518*/ uint16(xArgXmm2M128), - /*2519*/ uint16(xArgXMM0), - /*2520*/ uint16(xMatch), - /*2521*/ uint16(xCondPrefix), 1, - 0x66, 2525, - /*2525*/ uint16(xSetOp), uint16(BLENDVPD), - /*2527*/ uint16(xReadSlashR), - /*2528*/ uint16(xArgXmm1), - /*2529*/ uint16(xArgXmm2M128), - /*2530*/ uint16(xArgXMM0), - /*2531*/ uint16(xMatch), - /*2532*/ uint16(xCondPrefix), 1, - 0x66, 2536, - /*2536*/ uint16(xSetOp), uint16(PTEST), - /*2538*/ uint16(xReadSlashR), - /*2539*/ uint16(xArgXmm1), - /*2540*/ uint16(xArgXmm2M128), - /*2541*/ uint16(xMatch), - /*2542*/ uint16(xCondPrefix), 2, - 0x66, 2554, - 0x0, 2548, - /*2548*/ uint16(xSetOp), uint16(PABSB), - /*2550*/ uint16(xReadSlashR), - /*2551*/ uint16(xArgMm1), - /*2552*/ uint16(xArgMm2M64), - /*2553*/ uint16(xMatch), - /*2554*/ uint16(xSetOp), uint16(PABSB), - /*2556*/ uint16(xReadSlashR), - /*2557*/ uint16(xArgXmm1), - /*2558*/ uint16(xArgXmm2M128), - /*2559*/ uint16(xMatch), - /*2560*/ uint16(xCondPrefix), 2, - 0x66, 2572, - 0x0, 2566, - /*2566*/ uint16(xSetOp), uint16(PABSW), - /*2568*/ uint16(xReadSlashR), - /*2569*/ uint16(xArgMm1), - /*2570*/ uint16(xArgMm2M64), - /*2571*/ uint16(xMatch), - /*2572*/ uint16(xSetOp), uint16(PABSW), - /*2574*/ uint16(xReadSlashR), - /*2575*/ uint16(xArgXmm1), - /*2576*/ uint16(xArgXmm2M128), - /*2577*/ uint16(xMatch), - /*2578*/ uint16(xCondPrefix), 2, - 0x66, 2590, - 0x0, 2584, - /*2584*/ uint16(xSetOp), uint16(PABSD), - /*2586*/ uint16(xReadSlashR), - /*2587*/ uint16(xArgMm1), - /*2588*/ uint16(xArgMm2M64), - /*2589*/ uint16(xMatch), - /*2590*/ uint16(xSetOp), uint16(PABSD), - /*2592*/ uint16(xReadSlashR), - /*2593*/ uint16(xArgXmm1), - /*2594*/ uint16(xArgXmm2M128), - /*2595*/ uint16(xMatch), - /*2596*/ uint16(xCondPrefix), 1, - 0x66, 2600, - /*2600*/ uint16(xSetOp), uint16(PMOVSXBW), - /*2602*/ uint16(xReadSlashR), - /*2603*/ uint16(xArgXmm1), - /*2604*/ uint16(xArgXmm2M64), - /*2605*/ uint16(xMatch), - /*2606*/ uint16(xCondPrefix), 1, - 0x66, 2610, - /*2610*/ uint16(xSetOp), uint16(PMOVSXBD), - /*2612*/ uint16(xReadSlashR), - /*2613*/ uint16(xArgXmm1), - /*2614*/ uint16(xArgXmm2M32), - /*2615*/ uint16(xMatch), - /*2616*/ uint16(xCondPrefix), 1, - 0x66, 2620, - /*2620*/ uint16(xSetOp), uint16(PMOVSXBQ), - /*2622*/ uint16(xReadSlashR), - /*2623*/ uint16(xArgXmm1), - /*2624*/ uint16(xArgXmm2M16), - /*2625*/ uint16(xMatch), - /*2626*/ uint16(xCondPrefix), 1, - 0x66, 2630, - /*2630*/ uint16(xSetOp), uint16(PMOVSXWD), - /*2632*/ uint16(xReadSlashR), - /*2633*/ uint16(xArgXmm1), - /*2634*/ uint16(xArgXmm2M64), - /*2635*/ uint16(xMatch), - /*2636*/ uint16(xCondPrefix), 1, - 0x66, 2640, - /*2640*/ uint16(xSetOp), uint16(PMOVSXWQ), - /*2642*/ uint16(xReadSlashR), - /*2643*/ uint16(xArgXmm1), - /*2644*/ uint16(xArgXmm2M32), - /*2645*/ uint16(xMatch), - /*2646*/ uint16(xCondPrefix), 1, - 0x66, 2650, - /*2650*/ uint16(xSetOp), uint16(PMOVSXDQ), - /*2652*/ uint16(xReadSlashR), - /*2653*/ uint16(xArgXmm1), - /*2654*/ uint16(xArgXmm2M64), - /*2655*/ uint16(xMatch), - /*2656*/ uint16(xCondPrefix), 1, - 0x66, 2660, - /*2660*/ uint16(xSetOp), uint16(PMULDQ), - /*2662*/ uint16(xReadSlashR), - /*2663*/ uint16(xArgXmm1), - /*2664*/ uint16(xArgXmm2M128), - /*2665*/ uint16(xMatch), - /*2666*/ uint16(xCondPrefix), 1, - 0x66, 2670, - /*2670*/ uint16(xSetOp), uint16(PCMPEQQ), - /*2672*/ uint16(xReadSlashR), - /*2673*/ uint16(xArgXmm1), - /*2674*/ uint16(xArgXmm2M128), - /*2675*/ uint16(xMatch), - /*2676*/ uint16(xCondPrefix), 1, - 0x66, 2680, - /*2680*/ uint16(xSetOp), uint16(MOVNTDQA), - /*2682*/ uint16(xReadSlashR), - /*2683*/ uint16(xArgXmm1), - /*2684*/ uint16(xArgM128), - /*2685*/ uint16(xMatch), - /*2686*/ uint16(xCondPrefix), 1, - 0x66, 2690, - /*2690*/ uint16(xSetOp), uint16(PACKUSDW), - /*2692*/ uint16(xReadSlashR), - /*2693*/ uint16(xArgXmm1), - /*2694*/ uint16(xArgXmm2M128), - /*2695*/ uint16(xMatch), - /*2696*/ uint16(xCondPrefix), 1, - 0x66, 2700, - /*2700*/ uint16(xSetOp), uint16(PMOVZXBW), - /*2702*/ uint16(xReadSlashR), - /*2703*/ uint16(xArgXmm1), - /*2704*/ uint16(xArgXmm2M64), - /*2705*/ uint16(xMatch), - /*2706*/ uint16(xCondPrefix), 1, - 0x66, 2710, - /*2710*/ uint16(xSetOp), uint16(PMOVZXBD), - /*2712*/ uint16(xReadSlashR), - /*2713*/ uint16(xArgXmm1), - /*2714*/ uint16(xArgXmm2M32), - /*2715*/ uint16(xMatch), - /*2716*/ uint16(xCondPrefix), 1, - 0x66, 2720, - /*2720*/ uint16(xSetOp), uint16(PMOVZXBQ), - /*2722*/ uint16(xReadSlashR), - /*2723*/ uint16(xArgXmm1), - /*2724*/ uint16(xArgXmm2M16), - /*2725*/ uint16(xMatch), - /*2726*/ uint16(xCondPrefix), 1, - 0x66, 2730, - /*2730*/ uint16(xSetOp), uint16(PMOVZXWD), - /*2732*/ uint16(xReadSlashR), - /*2733*/ uint16(xArgXmm1), - /*2734*/ uint16(xArgXmm2M64), - /*2735*/ uint16(xMatch), - /*2736*/ uint16(xCondPrefix), 1, - 0x66, 2740, - /*2740*/ uint16(xSetOp), uint16(PMOVZXWQ), - /*2742*/ uint16(xReadSlashR), - /*2743*/ uint16(xArgXmm1), - /*2744*/ uint16(xArgXmm2M32), - /*2745*/ uint16(xMatch), - /*2746*/ uint16(xCondPrefix), 1, - 0x66, 2750, - /*2750*/ uint16(xSetOp), uint16(PMOVZXDQ), - /*2752*/ uint16(xReadSlashR), - /*2753*/ uint16(xArgXmm1), - /*2754*/ uint16(xArgXmm2M64), - /*2755*/ uint16(xMatch), - /*2756*/ uint16(xCondPrefix), 1, - 0x66, 2760, - /*2760*/ uint16(xSetOp), uint16(PCMPGTQ), - /*2762*/ uint16(xReadSlashR), - /*2763*/ uint16(xArgXmm1), - /*2764*/ uint16(xArgXmm2M128), - /*2765*/ uint16(xMatch), - /*2766*/ uint16(xCondPrefix), 1, - 0x66, 2770, - /*2770*/ uint16(xSetOp), uint16(PMINSB), - /*2772*/ uint16(xReadSlashR), - /*2773*/ uint16(xArgXmm1), - /*2774*/ uint16(xArgXmm2M128), - /*2775*/ uint16(xMatch), - /*2776*/ uint16(xCondPrefix), 1, - 0x66, 2780, - /*2780*/ uint16(xSetOp), uint16(PMINSD), - /*2782*/ uint16(xReadSlashR), - /*2783*/ uint16(xArgXmm1), - /*2784*/ uint16(xArgXmm2M128), - /*2785*/ uint16(xMatch), - /*2786*/ uint16(xCondPrefix), 1, - 0x66, 2790, - /*2790*/ uint16(xSetOp), uint16(PMINUW), - /*2792*/ uint16(xReadSlashR), - /*2793*/ uint16(xArgXmm1), - /*2794*/ uint16(xArgXmm2M128), - /*2795*/ uint16(xMatch), - /*2796*/ uint16(xCondPrefix), 1, - 0x66, 2800, - /*2800*/ uint16(xSetOp), uint16(PMINUD), - /*2802*/ uint16(xReadSlashR), - /*2803*/ uint16(xArgXmm1), - /*2804*/ uint16(xArgXmm2M128), - /*2805*/ uint16(xMatch), - /*2806*/ uint16(xCondPrefix), 1, - 0x66, 2810, - /*2810*/ uint16(xSetOp), uint16(PMAXSB), - /*2812*/ uint16(xReadSlashR), - /*2813*/ uint16(xArgXmm1), - /*2814*/ uint16(xArgXmm2M128), - /*2815*/ uint16(xMatch), - /*2816*/ uint16(xCondPrefix), 1, - 0x66, 2820, - /*2820*/ uint16(xSetOp), uint16(PMAXSD), - /*2822*/ uint16(xReadSlashR), - /*2823*/ uint16(xArgXmm1), - /*2824*/ uint16(xArgXmm2M128), - /*2825*/ uint16(xMatch), - /*2826*/ uint16(xCondPrefix), 1, - 0x66, 2830, - /*2830*/ uint16(xSetOp), uint16(PMAXUW), - /*2832*/ uint16(xReadSlashR), - /*2833*/ uint16(xArgXmm1), - /*2834*/ uint16(xArgXmm2M128), - /*2835*/ uint16(xMatch), - /*2836*/ uint16(xCondPrefix), 1, - 0x66, 2840, - /*2840*/ uint16(xSetOp), uint16(PMAXUD), - /*2842*/ uint16(xReadSlashR), - /*2843*/ uint16(xArgXmm1), - /*2844*/ uint16(xArgXmm2M128), - /*2845*/ uint16(xMatch), - /*2846*/ uint16(xCondPrefix), 1, - 0x66, 2850, - /*2850*/ uint16(xSetOp), uint16(PMULLD), - /*2852*/ uint16(xReadSlashR), - /*2853*/ uint16(xArgXmm1), - /*2854*/ uint16(xArgXmm2M128), - /*2855*/ uint16(xMatch), - /*2856*/ uint16(xCondPrefix), 1, - 0x66, 2860, - /*2860*/ uint16(xSetOp), uint16(PHMINPOSUW), - /*2862*/ uint16(xReadSlashR), - /*2863*/ uint16(xArgXmm1), - /*2864*/ uint16(xArgXmm2M128), - /*2865*/ uint16(xMatch), - /*2866*/ uint16(xCondIs64), 2869, 2879, - /*2869*/ uint16(xCondPrefix), 1, - 0x66, 2873, - /*2873*/ uint16(xSetOp), uint16(INVPCID), - /*2875*/ uint16(xReadSlashR), - /*2876*/ uint16(xArgR32), - /*2877*/ uint16(xArgM128), - /*2878*/ uint16(xMatch), - /*2879*/ uint16(xCondPrefix), 1, - 0x66, 2883, - /*2883*/ uint16(xSetOp), uint16(INVPCID), - /*2885*/ uint16(xReadSlashR), - /*2886*/ uint16(xArgR64), - /*2887*/ uint16(xArgM128), - /*2888*/ uint16(xMatch), - /*2889*/ uint16(xCondPrefix), 1, - 0x66, 2893, - /*2893*/ uint16(xSetOp), uint16(AESIMC), - /*2895*/ uint16(xReadSlashR), - /*2896*/ uint16(xArgXmm1), - /*2897*/ uint16(xArgXmm2M128), - /*2898*/ uint16(xMatch), - /*2899*/ uint16(xCondPrefix), 1, - 0x66, 2903, - /*2903*/ uint16(xSetOp), uint16(AESENC), - /*2905*/ uint16(xReadSlashR), - /*2906*/ uint16(xArgXmm1), - /*2907*/ uint16(xArgXmm2M128), - /*2908*/ uint16(xMatch), - /*2909*/ uint16(xCondPrefix), 1, - 0x66, 2913, - /*2913*/ uint16(xSetOp), uint16(AESENCLAST), - /*2915*/ uint16(xReadSlashR), - /*2916*/ uint16(xArgXmm1), - /*2917*/ uint16(xArgXmm2M128), - /*2918*/ uint16(xMatch), - /*2919*/ uint16(xCondPrefix), 1, - 0x66, 2923, - /*2923*/ uint16(xSetOp), uint16(AESDEC), - /*2925*/ uint16(xReadSlashR), - /*2926*/ uint16(xArgXmm1), - /*2927*/ uint16(xArgXmm2M128), - /*2928*/ uint16(xMatch), - /*2929*/ uint16(xCondPrefix), 1, - 0x66, 2933, - /*2933*/ uint16(xSetOp), uint16(AESDECLAST), - /*2935*/ uint16(xReadSlashR), - /*2936*/ uint16(xArgXmm1), - /*2937*/ uint16(xArgXmm2M128), - /*2938*/ uint16(xMatch), - /*2939*/ uint16(xCondIs64), 2942, 2980, - /*2942*/ uint16(xCondPrefix), 2, - 0xF2, 2964, - 0x0, 2948, - /*2948*/ uint16(xCondDataSize), 2952, 2958, 0, - /*2952*/ uint16(xSetOp), uint16(MOVBE), - /*2954*/ uint16(xReadSlashR), - /*2955*/ uint16(xArgR16), - /*2956*/ uint16(xArgM16), - /*2957*/ uint16(xMatch), - /*2958*/ uint16(xSetOp), uint16(MOVBE), - /*2960*/ uint16(xReadSlashR), - /*2961*/ uint16(xArgR32), - /*2962*/ uint16(xArgM32), - /*2963*/ uint16(xMatch), - /*2964*/ uint16(xCondDataSize), 2968, 2974, 0, - /*2968*/ uint16(xSetOp), uint16(CRC32), - /*2970*/ uint16(xReadSlashR), - /*2971*/ uint16(xArgR32), - /*2972*/ uint16(xArgRM8), - /*2973*/ uint16(xMatch), - /*2974*/ uint16(xSetOp), uint16(CRC32), - /*2976*/ uint16(xReadSlashR), - /*2977*/ uint16(xArgR32), - /*2978*/ uint16(xArgRM8), - /*2979*/ uint16(xMatch), - /*2980*/ uint16(xCondPrefix), 2, - 0xF2, 2996, - 0x0, 2986, - /*2986*/ uint16(xCondDataSize), 2952, 2958, 2990, - /*2990*/ uint16(xSetOp), uint16(MOVBE), - /*2992*/ uint16(xReadSlashR), - /*2993*/ uint16(xArgR64), - /*2994*/ uint16(xArgM64), - /*2995*/ uint16(xMatch), - /*2996*/ uint16(xCondDataSize), 2968, 2974, 3000, - /*3000*/ uint16(xSetOp), uint16(CRC32), - /*3002*/ uint16(xReadSlashR), - /*3003*/ uint16(xArgR64), - /*3004*/ uint16(xArgRM8), - /*3005*/ uint16(xMatch), - /*3006*/ uint16(xCondIs64), 3009, 3047, - /*3009*/ uint16(xCondPrefix), 2, - 0xF2, 3031, - 0x0, 3015, - /*3015*/ uint16(xCondDataSize), 3019, 3025, 0, - /*3019*/ uint16(xSetOp), uint16(MOVBE), - /*3021*/ uint16(xReadSlashR), - /*3022*/ uint16(xArgM16), - /*3023*/ uint16(xArgR16), - /*3024*/ uint16(xMatch), - /*3025*/ uint16(xSetOp), uint16(MOVBE), - /*3027*/ uint16(xReadSlashR), - /*3028*/ uint16(xArgM32), - /*3029*/ uint16(xArgR32), - /*3030*/ uint16(xMatch), - /*3031*/ uint16(xCondDataSize), 3035, 3041, 0, - /*3035*/ uint16(xSetOp), uint16(CRC32), - /*3037*/ uint16(xReadSlashR), - /*3038*/ uint16(xArgR32), - /*3039*/ uint16(xArgRM16), - /*3040*/ uint16(xMatch), - /*3041*/ uint16(xSetOp), uint16(CRC32), - /*3043*/ uint16(xReadSlashR), - /*3044*/ uint16(xArgR32), - /*3045*/ uint16(xArgRM32), - /*3046*/ uint16(xMatch), - /*3047*/ uint16(xCondPrefix), 2, - 0xF2, 3063, - 0x0, 3053, - /*3053*/ uint16(xCondDataSize), 3019, 3025, 3057, - /*3057*/ uint16(xSetOp), uint16(MOVBE), - /*3059*/ uint16(xReadSlashR), - /*3060*/ uint16(xArgM64), - /*3061*/ uint16(xArgR64), - /*3062*/ uint16(xMatch), - /*3063*/ uint16(xCondDataSize), 3035, 3041, 3067, - /*3067*/ uint16(xSetOp), uint16(CRC32), - /*3069*/ uint16(xReadSlashR), - /*3070*/ uint16(xArgR64), - /*3071*/ uint16(xArgRM64), - /*3072*/ uint16(xMatch), - /*3073*/ uint16(xCondByte), 24, - 0x08, 3124, - 0x09, 3136, - 0x0A, 3148, - 0x0B, 3160, - 0x0C, 3172, - 0x0D, 3184, - 0x0E, 3196, - 0x0F, 3208, - 0x14, 3230, - 0x15, 3242, - 0x16, 3254, - 0x17, 3297, - 0x20, 3309, - 0x21, 3321, - 0x22, 3333, - 0x40, 3376, - 0x41, 3388, - 0x42, 3400, - 0x44, 3412, - 0x60, 3424, - 0x61, 3436, - 0x62, 3448, - 0x63, 3460, - 0xDF, 3472, + /*2285*/ uint16(xCondPrefix), 2, + 0x66, 2297, + 0x0, 2291, + /*2291*/ uint16(xSetOp), uint16(PSHUFB), + /*2293*/ uint16(xReadSlashR), + /*2294*/ uint16(xArgMm1), + /*2295*/ uint16(xArgMm2M64), + /*2296*/ uint16(xMatch), + /*2297*/ uint16(xSetOp), uint16(PSHUFB), + /*2299*/ uint16(xReadSlashR), + /*2300*/ uint16(xArgXmm1), + /*2301*/ uint16(xArgXmm2M128), + /*2302*/ uint16(xMatch), + /*2303*/ uint16(xCondPrefix), 2, + 0x66, 2315, + 0x0, 2309, + /*2309*/ uint16(xSetOp), uint16(PHADDW), + /*2311*/ uint16(xReadSlashR), + /*2312*/ uint16(xArgMm1), + /*2313*/ uint16(xArgMm2M64), + /*2314*/ uint16(xMatch), + /*2315*/ uint16(xSetOp), uint16(PHADDW), + /*2317*/ uint16(xReadSlashR), + /*2318*/ uint16(xArgXmm1), + /*2319*/ uint16(xArgXmm2M128), + /*2320*/ uint16(xMatch), + /*2321*/ uint16(xCondPrefix), 2, + 0x66, 2333, + 0x0, 2327, + /*2327*/ uint16(xSetOp), uint16(PHADDD), + /*2329*/ uint16(xReadSlashR), + /*2330*/ uint16(xArgMm1), + /*2331*/ uint16(xArgMm2M64), + /*2332*/ uint16(xMatch), + /*2333*/ uint16(xSetOp), uint16(PHADDD), + /*2335*/ uint16(xReadSlashR), + /*2336*/ uint16(xArgXmm1), + /*2337*/ uint16(xArgXmm2M128), + /*2338*/ uint16(xMatch), + /*2339*/ uint16(xCondPrefix), 2, + 0x66, 2351, + 0x0, 2345, + /*2345*/ uint16(xSetOp), uint16(PHADDSW), + /*2347*/ uint16(xReadSlashR), + /*2348*/ uint16(xArgMm1), + /*2349*/ uint16(xArgMm2M64), + /*2350*/ uint16(xMatch), + /*2351*/ uint16(xSetOp), uint16(PHADDSW), + /*2353*/ uint16(xReadSlashR), + /*2354*/ uint16(xArgXmm1), + /*2355*/ uint16(xArgXmm2M128), + /*2356*/ uint16(xMatch), + /*2357*/ uint16(xCondPrefix), 2, + 0x66, 2369, + 0x0, 2363, + /*2363*/ uint16(xSetOp), uint16(PMADDUBSW), + /*2365*/ uint16(xReadSlashR), + /*2366*/ uint16(xArgMm1), + /*2367*/ uint16(xArgMm2M64), + /*2368*/ uint16(xMatch), + /*2369*/ uint16(xSetOp), uint16(PMADDUBSW), + /*2371*/ uint16(xReadSlashR), + /*2372*/ uint16(xArgXmm1), + /*2373*/ uint16(xArgXmm2M128), + /*2374*/ uint16(xMatch), + /*2375*/ uint16(xCondPrefix), 2, + 0x66, 2387, + 0x0, 2381, + /*2381*/ uint16(xSetOp), uint16(PHSUBW), + /*2383*/ uint16(xReadSlashR), + /*2384*/ uint16(xArgMm1), + /*2385*/ uint16(xArgMm2M64), + /*2386*/ uint16(xMatch), + /*2387*/ uint16(xSetOp), uint16(PHSUBW), + /*2389*/ uint16(xReadSlashR), + /*2390*/ uint16(xArgXmm1), + /*2391*/ uint16(xArgXmm2M128), + /*2392*/ uint16(xMatch), + /*2393*/ uint16(xCondPrefix), 2, + 0x66, 2405, + 0x0, 2399, + /*2399*/ uint16(xSetOp), uint16(PHSUBD), + /*2401*/ uint16(xReadSlashR), + /*2402*/ uint16(xArgMm1), + /*2403*/ uint16(xArgMm2M64), + /*2404*/ uint16(xMatch), + /*2405*/ uint16(xSetOp), uint16(PHSUBD), + /*2407*/ uint16(xReadSlashR), + /*2408*/ uint16(xArgXmm1), + /*2409*/ uint16(xArgXmm2M128), + /*2410*/ uint16(xMatch), + /*2411*/ uint16(xCondPrefix), 2, + 0x66, 2423, + 0x0, 2417, + /*2417*/ uint16(xSetOp), uint16(PHSUBSW), + /*2419*/ uint16(xReadSlashR), + /*2420*/ uint16(xArgMm1), + /*2421*/ uint16(xArgMm2M64), + /*2422*/ uint16(xMatch), + /*2423*/ uint16(xSetOp), uint16(PHSUBSW), + /*2425*/ uint16(xReadSlashR), + /*2426*/ uint16(xArgXmm1), + /*2427*/ uint16(xArgXmm2M128), + /*2428*/ uint16(xMatch), + /*2429*/ uint16(xCondPrefix), 2, + 0x66, 2441, + 0x0, 2435, + /*2435*/ uint16(xSetOp), uint16(PSIGNB), + /*2437*/ uint16(xReadSlashR), + /*2438*/ uint16(xArgMm1), + /*2439*/ uint16(xArgMm2M64), + /*2440*/ uint16(xMatch), + /*2441*/ uint16(xSetOp), uint16(PSIGNB), + /*2443*/ uint16(xReadSlashR), + /*2444*/ uint16(xArgXmm1), + /*2445*/ uint16(xArgXmm2M128), + /*2446*/ uint16(xMatch), + /*2447*/ uint16(xCondPrefix), 2, + 0x66, 2459, + 0x0, 2453, + /*2453*/ uint16(xSetOp), uint16(PSIGNW), + /*2455*/ uint16(xReadSlashR), + /*2456*/ uint16(xArgMm1), + /*2457*/ uint16(xArgMm2M64), + /*2458*/ uint16(xMatch), + /*2459*/ uint16(xSetOp), uint16(PSIGNW), + /*2461*/ uint16(xReadSlashR), + /*2462*/ uint16(xArgXmm1), + /*2463*/ uint16(xArgXmm2M128), + /*2464*/ uint16(xMatch), + /*2465*/ uint16(xCondPrefix), 2, + 0x66, 2477, + 0x0, 2471, + /*2471*/ uint16(xSetOp), uint16(PSIGND), + /*2473*/ uint16(xReadSlashR), + /*2474*/ uint16(xArgMm1), + /*2475*/ uint16(xArgMm2M64), + /*2476*/ uint16(xMatch), + /*2477*/ uint16(xSetOp), uint16(PSIGND), + /*2479*/ uint16(xReadSlashR), + /*2480*/ uint16(xArgXmm1), + /*2481*/ uint16(xArgXmm2M128), + /*2482*/ uint16(xMatch), + /*2483*/ uint16(xCondPrefix), 2, + 0x66, 2495, + 0x0, 2489, + /*2489*/ uint16(xSetOp), uint16(PMULHRSW), + /*2491*/ uint16(xReadSlashR), + /*2492*/ uint16(xArgMm1), + /*2493*/ uint16(xArgMm2M64), + /*2494*/ uint16(xMatch), + /*2495*/ uint16(xSetOp), uint16(PMULHRSW), + /*2497*/ uint16(xReadSlashR), + /*2498*/ uint16(xArgXmm1), + /*2499*/ uint16(xArgXmm2M128), + /*2500*/ uint16(xMatch), + /*2501*/ uint16(xCondPrefix), 1, + 0x66, 2505, + /*2505*/ uint16(xSetOp), uint16(PBLENDVB), + /*2507*/ uint16(xReadSlashR), + /*2508*/ uint16(xArgXmm1), + /*2509*/ uint16(xArgXmm2M128), + /*2510*/ uint16(xArgXMM0), + /*2511*/ uint16(xMatch), + /*2512*/ uint16(xCondPrefix), 1, + 0x66, 2516, + /*2516*/ uint16(xSetOp), uint16(BLENDVPS), + /*2518*/ uint16(xReadSlashR), + /*2519*/ uint16(xArgXmm1), + /*2520*/ uint16(xArgXmm2M128), + /*2521*/ uint16(xArgXMM0), + /*2522*/ uint16(xMatch), + /*2523*/ uint16(xCondPrefix), 1, + 0x66, 2527, + /*2527*/ uint16(xSetOp), uint16(BLENDVPD), + /*2529*/ uint16(xReadSlashR), + /*2530*/ uint16(xArgXmm1), + /*2531*/ uint16(xArgXmm2M128), + /*2532*/ uint16(xArgXMM0), + /*2533*/ uint16(xMatch), + /*2534*/ uint16(xCondPrefix), 1, + 0x66, 2538, + /*2538*/ uint16(xSetOp), uint16(PTEST), + /*2540*/ uint16(xReadSlashR), + /*2541*/ uint16(xArgXmm1), + /*2542*/ uint16(xArgXmm2M128), + /*2543*/ uint16(xMatch), + /*2544*/ uint16(xCondPrefix), 2, + 0x66, 2556, + 0x0, 2550, + /*2550*/ uint16(xSetOp), uint16(PABSB), + /*2552*/ uint16(xReadSlashR), + /*2553*/ uint16(xArgMm1), + /*2554*/ uint16(xArgMm2M64), + /*2555*/ uint16(xMatch), + /*2556*/ uint16(xSetOp), uint16(PABSB), + /*2558*/ uint16(xReadSlashR), + /*2559*/ uint16(xArgXmm1), + /*2560*/ uint16(xArgXmm2M128), + /*2561*/ uint16(xMatch), + /*2562*/ uint16(xCondPrefix), 2, + 0x66, 2574, + 0x0, 2568, + /*2568*/ uint16(xSetOp), uint16(PABSW), + /*2570*/ uint16(xReadSlashR), + /*2571*/ uint16(xArgMm1), + /*2572*/ uint16(xArgMm2M64), + /*2573*/ uint16(xMatch), + /*2574*/ uint16(xSetOp), uint16(PABSW), + /*2576*/ uint16(xReadSlashR), + /*2577*/ uint16(xArgXmm1), + /*2578*/ uint16(xArgXmm2M128), + /*2579*/ uint16(xMatch), + /*2580*/ uint16(xCondPrefix), 2, + 0x66, 2592, + 0x0, 2586, + /*2586*/ uint16(xSetOp), uint16(PABSD), + /*2588*/ uint16(xReadSlashR), + /*2589*/ uint16(xArgMm1), + /*2590*/ uint16(xArgMm2M64), + /*2591*/ uint16(xMatch), + /*2592*/ uint16(xSetOp), uint16(PABSD), + /*2594*/ uint16(xReadSlashR), + /*2595*/ uint16(xArgXmm1), + /*2596*/ uint16(xArgXmm2M128), + /*2597*/ uint16(xMatch), + /*2598*/ uint16(xCondPrefix), 1, + 0x66, 2602, + /*2602*/ uint16(xSetOp), uint16(PMOVSXBW), + /*2604*/ uint16(xReadSlashR), + /*2605*/ uint16(xArgXmm1), + /*2606*/ uint16(xArgXmm2M64), + /*2607*/ uint16(xMatch), + /*2608*/ uint16(xCondPrefix), 1, + 0x66, 2612, + /*2612*/ uint16(xSetOp), uint16(PMOVSXBD), + /*2614*/ uint16(xReadSlashR), + /*2615*/ uint16(xArgXmm1), + /*2616*/ uint16(xArgXmm2M32), + /*2617*/ uint16(xMatch), + /*2618*/ uint16(xCondPrefix), 1, + 0x66, 2622, + /*2622*/ uint16(xSetOp), uint16(PMOVSXBQ), + /*2624*/ uint16(xReadSlashR), + /*2625*/ uint16(xArgXmm1), + /*2626*/ uint16(xArgXmm2M16), + /*2627*/ uint16(xMatch), + /*2628*/ uint16(xCondPrefix), 1, + 0x66, 2632, + /*2632*/ uint16(xSetOp), uint16(PMOVSXWD), + /*2634*/ uint16(xReadSlashR), + /*2635*/ uint16(xArgXmm1), + /*2636*/ uint16(xArgXmm2M64), + /*2637*/ uint16(xMatch), + /*2638*/ uint16(xCondPrefix), 1, + 0x66, 2642, + /*2642*/ uint16(xSetOp), uint16(PMOVSXWQ), + /*2644*/ uint16(xReadSlashR), + /*2645*/ uint16(xArgXmm1), + /*2646*/ uint16(xArgXmm2M32), + /*2647*/ uint16(xMatch), + /*2648*/ uint16(xCondPrefix), 1, + 0x66, 2652, + /*2652*/ uint16(xSetOp), uint16(PMOVSXDQ), + /*2654*/ uint16(xReadSlashR), + /*2655*/ uint16(xArgXmm1), + /*2656*/ uint16(xArgXmm2M64), + /*2657*/ uint16(xMatch), + /*2658*/ uint16(xCondPrefix), 1, + 0x66, 2662, + /*2662*/ uint16(xSetOp), uint16(PMULDQ), + /*2664*/ uint16(xReadSlashR), + /*2665*/ uint16(xArgXmm1), + /*2666*/ uint16(xArgXmm2M128), + /*2667*/ uint16(xMatch), + /*2668*/ uint16(xCondPrefix), 1, + 0x66, 2672, + /*2672*/ uint16(xSetOp), uint16(PCMPEQQ), + /*2674*/ uint16(xReadSlashR), + /*2675*/ uint16(xArgXmm1), + /*2676*/ uint16(xArgXmm2M128), + /*2677*/ uint16(xMatch), + /*2678*/ uint16(xCondPrefix), 1, + 0x66, 2682, + /*2682*/ uint16(xSetOp), uint16(MOVNTDQA), + /*2684*/ uint16(xReadSlashR), + /*2685*/ uint16(xArgXmm1), + /*2686*/ uint16(xArgM128), + /*2687*/ uint16(xMatch), + /*2688*/ uint16(xCondPrefix), 1, + 0x66, 2692, + /*2692*/ uint16(xSetOp), uint16(PACKUSDW), + /*2694*/ uint16(xReadSlashR), + /*2695*/ uint16(xArgXmm1), + /*2696*/ uint16(xArgXmm2M128), + /*2697*/ uint16(xMatch), + /*2698*/ uint16(xCondPrefix), 1, + 0x66, 2702, + /*2702*/ uint16(xSetOp), uint16(PMOVZXBW), + /*2704*/ uint16(xReadSlashR), + /*2705*/ uint16(xArgXmm1), + /*2706*/ uint16(xArgXmm2M64), + /*2707*/ uint16(xMatch), + /*2708*/ uint16(xCondPrefix), 1, + 0x66, 2712, + /*2712*/ uint16(xSetOp), uint16(PMOVZXBD), + /*2714*/ uint16(xReadSlashR), + /*2715*/ uint16(xArgXmm1), + /*2716*/ uint16(xArgXmm2M32), + /*2717*/ uint16(xMatch), + /*2718*/ uint16(xCondPrefix), 1, + 0x66, 2722, + /*2722*/ uint16(xSetOp), uint16(PMOVZXBQ), + /*2724*/ uint16(xReadSlashR), + /*2725*/ uint16(xArgXmm1), + /*2726*/ uint16(xArgXmm2M16), + /*2727*/ uint16(xMatch), + /*2728*/ uint16(xCondPrefix), 1, + 0x66, 2732, + /*2732*/ uint16(xSetOp), uint16(PMOVZXWD), + /*2734*/ uint16(xReadSlashR), + /*2735*/ uint16(xArgXmm1), + /*2736*/ uint16(xArgXmm2M64), + /*2737*/ uint16(xMatch), + /*2738*/ uint16(xCondPrefix), 1, + 0x66, 2742, + /*2742*/ uint16(xSetOp), uint16(PMOVZXWQ), + /*2744*/ uint16(xReadSlashR), + /*2745*/ uint16(xArgXmm1), + /*2746*/ uint16(xArgXmm2M32), + /*2747*/ uint16(xMatch), + /*2748*/ uint16(xCondPrefix), 1, + 0x66, 2752, + /*2752*/ uint16(xSetOp), uint16(PMOVZXDQ), + /*2754*/ uint16(xReadSlashR), + /*2755*/ uint16(xArgXmm1), + /*2756*/ uint16(xArgXmm2M64), + /*2757*/ uint16(xMatch), + /*2758*/ uint16(xCondPrefix), 1, + 0x66, 2762, + /*2762*/ uint16(xSetOp), uint16(PCMPGTQ), + /*2764*/ uint16(xReadSlashR), + /*2765*/ uint16(xArgXmm1), + /*2766*/ uint16(xArgXmm2M128), + /*2767*/ uint16(xMatch), + /*2768*/ uint16(xCondPrefix), 1, + 0x66, 2772, + /*2772*/ uint16(xSetOp), uint16(PMINSB), + /*2774*/ uint16(xReadSlashR), + /*2775*/ uint16(xArgXmm1), + /*2776*/ uint16(xArgXmm2M128), + /*2777*/ uint16(xMatch), + /*2778*/ uint16(xCondPrefix), 1, + 0x66, 2782, + /*2782*/ uint16(xSetOp), uint16(PMINSD), + /*2784*/ uint16(xReadSlashR), + /*2785*/ uint16(xArgXmm1), + /*2786*/ uint16(xArgXmm2M128), + /*2787*/ uint16(xMatch), + /*2788*/ uint16(xCondPrefix), 1, + 0x66, 2792, + /*2792*/ uint16(xSetOp), uint16(PMINUW), + /*2794*/ uint16(xReadSlashR), + /*2795*/ uint16(xArgXmm1), + /*2796*/ uint16(xArgXmm2M128), + /*2797*/ uint16(xMatch), + /*2798*/ uint16(xCondPrefix), 1, + 0x66, 2802, + /*2802*/ uint16(xSetOp), uint16(PMINUD), + /*2804*/ uint16(xReadSlashR), + /*2805*/ uint16(xArgXmm1), + /*2806*/ uint16(xArgXmm2M128), + /*2807*/ uint16(xMatch), + /*2808*/ uint16(xCondPrefix), 1, + 0x66, 2812, + /*2812*/ uint16(xSetOp), uint16(PMAXSB), + /*2814*/ uint16(xReadSlashR), + /*2815*/ uint16(xArgXmm1), + /*2816*/ uint16(xArgXmm2M128), + /*2817*/ uint16(xMatch), + /*2818*/ uint16(xCondPrefix), 1, + 0x66, 2822, + /*2822*/ uint16(xSetOp), uint16(PMAXSD), + /*2824*/ uint16(xReadSlashR), + /*2825*/ uint16(xArgXmm1), + /*2826*/ uint16(xArgXmm2M128), + /*2827*/ uint16(xMatch), + /*2828*/ uint16(xCondPrefix), 1, + 0x66, 2832, + /*2832*/ uint16(xSetOp), uint16(PMAXUW), + /*2834*/ uint16(xReadSlashR), + /*2835*/ uint16(xArgXmm1), + /*2836*/ uint16(xArgXmm2M128), + /*2837*/ uint16(xMatch), + /*2838*/ uint16(xCondPrefix), 1, + 0x66, 2842, + /*2842*/ uint16(xSetOp), uint16(PMAXUD), + /*2844*/ uint16(xReadSlashR), + /*2845*/ uint16(xArgXmm1), + /*2846*/ uint16(xArgXmm2M128), + /*2847*/ uint16(xMatch), + /*2848*/ uint16(xCondPrefix), 1, + 0x66, 2852, + /*2852*/ uint16(xSetOp), uint16(PMULLD), + /*2854*/ uint16(xReadSlashR), + /*2855*/ uint16(xArgXmm1), + /*2856*/ uint16(xArgXmm2M128), + /*2857*/ uint16(xMatch), + /*2858*/ uint16(xCondPrefix), 1, + 0x66, 2862, + /*2862*/ uint16(xSetOp), uint16(PHMINPOSUW), + /*2864*/ uint16(xReadSlashR), + /*2865*/ uint16(xArgXmm1), + /*2866*/ uint16(xArgXmm2M128), + /*2867*/ uint16(xMatch), + /*2868*/ uint16(xCondIs64), 2871, 2881, + /*2871*/ uint16(xCondPrefix), 1, + 0x66, 2875, + /*2875*/ uint16(xSetOp), uint16(INVPCID), + /*2877*/ uint16(xReadSlashR), + /*2878*/ uint16(xArgR32), + /*2879*/ uint16(xArgM128), + /*2880*/ uint16(xMatch), + /*2881*/ uint16(xCondPrefix), 1, + 0x66, 2885, + /*2885*/ uint16(xSetOp), uint16(INVPCID), + /*2887*/ uint16(xReadSlashR), + /*2888*/ uint16(xArgR64), + /*2889*/ uint16(xArgM128), + /*2890*/ uint16(xMatch), + /*2891*/ uint16(xCondPrefix), 1, + 0x66, 2895, + /*2895*/ uint16(xSetOp), uint16(AESIMC), + /*2897*/ uint16(xReadSlashR), + /*2898*/ uint16(xArgXmm1), + /*2899*/ uint16(xArgXmm2M128), + /*2900*/ uint16(xMatch), + /*2901*/ uint16(xCondPrefix), 1, + 0x66, 2905, + /*2905*/ uint16(xSetOp), uint16(AESENC), + /*2907*/ uint16(xReadSlashR), + /*2908*/ uint16(xArgXmm1), + /*2909*/ uint16(xArgXmm2M128), + /*2910*/ uint16(xMatch), + /*2911*/ uint16(xCondPrefix), 1, + 0x66, 2915, + /*2915*/ uint16(xSetOp), uint16(AESENCLAST), + /*2917*/ uint16(xReadSlashR), + /*2918*/ uint16(xArgXmm1), + /*2919*/ uint16(xArgXmm2M128), + /*2920*/ uint16(xMatch), + /*2921*/ uint16(xCondPrefix), 1, + 0x66, 2925, + /*2925*/ uint16(xSetOp), uint16(AESDEC), + /*2927*/ uint16(xReadSlashR), + /*2928*/ uint16(xArgXmm1), + /*2929*/ uint16(xArgXmm2M128), + /*2930*/ uint16(xMatch), + /*2931*/ uint16(xCondPrefix), 1, + 0x66, 2935, + /*2935*/ uint16(xSetOp), uint16(AESDECLAST), + /*2937*/ uint16(xReadSlashR), + /*2938*/ uint16(xArgXmm1), + /*2939*/ uint16(xArgXmm2M128), + /*2940*/ uint16(xMatch), + /*2941*/ uint16(xCondIs64), 2944, 2982, + /*2944*/ uint16(xCondPrefix), 2, + 0xF2, 2966, + 0x0, 2950, + /*2950*/ uint16(xCondDataSize), 2954, 2960, 0, + /*2954*/ uint16(xSetOp), uint16(MOVBE), + /*2956*/ uint16(xReadSlashR), + /*2957*/ uint16(xArgR16), + /*2958*/ uint16(xArgM16), + /*2959*/ uint16(xMatch), + /*2960*/ uint16(xSetOp), uint16(MOVBE), + /*2962*/ uint16(xReadSlashR), + /*2963*/ uint16(xArgR32), + /*2964*/ uint16(xArgM32), + /*2965*/ uint16(xMatch), + /*2966*/ uint16(xCondDataSize), 2970, 2976, 0, + /*2970*/ uint16(xSetOp), uint16(CRC32), + /*2972*/ uint16(xReadSlashR), + /*2973*/ uint16(xArgR32), + /*2974*/ uint16(xArgRM8), + /*2975*/ uint16(xMatch), + /*2976*/ uint16(xSetOp), uint16(CRC32), + /*2978*/ uint16(xReadSlashR), + /*2979*/ uint16(xArgR32), + /*2980*/ uint16(xArgRM8), + /*2981*/ uint16(xMatch), + /*2982*/ uint16(xCondPrefix), 2, + 0xF2, 2998, + 0x0, 2988, + /*2988*/ uint16(xCondDataSize), 2954, 2960, 2992, + /*2992*/ uint16(xSetOp), uint16(MOVBE), + /*2994*/ uint16(xReadSlashR), + /*2995*/ uint16(xArgR64), + /*2996*/ uint16(xArgM64), + /*2997*/ uint16(xMatch), + /*2998*/ uint16(xCondDataSize), 2970, 2976, 3002, + /*3002*/ uint16(xSetOp), uint16(CRC32), + /*3004*/ uint16(xReadSlashR), + /*3005*/ uint16(xArgR64), + /*3006*/ uint16(xArgRM8), + /*3007*/ uint16(xMatch), + /*3008*/ uint16(xCondIs64), 3011, 3049, + /*3011*/ uint16(xCondPrefix), 2, + 0xF2, 3033, + 0x0, 3017, + /*3017*/ uint16(xCondDataSize), 3021, 3027, 0, + /*3021*/ uint16(xSetOp), uint16(MOVBE), + /*3023*/ uint16(xReadSlashR), + /*3024*/ uint16(xArgM16), + /*3025*/ uint16(xArgR16), + /*3026*/ uint16(xMatch), + /*3027*/ uint16(xSetOp), uint16(MOVBE), + /*3029*/ uint16(xReadSlashR), + /*3030*/ uint16(xArgM32), + /*3031*/ uint16(xArgR32), + /*3032*/ uint16(xMatch), + /*3033*/ uint16(xCondDataSize), 3037, 3043, 0, + /*3037*/ uint16(xSetOp), uint16(CRC32), + /*3039*/ uint16(xReadSlashR), + /*3040*/ uint16(xArgR32), + /*3041*/ uint16(xArgRM16), + /*3042*/ uint16(xMatch), + /*3043*/ uint16(xSetOp), uint16(CRC32), + /*3045*/ uint16(xReadSlashR), + /*3046*/ uint16(xArgR32), + /*3047*/ uint16(xArgRM32), + /*3048*/ uint16(xMatch), + /*3049*/ uint16(xCondPrefix), 2, + 0xF2, 3065, + 0x0, 3055, + /*3055*/ uint16(xCondDataSize), 3021, 3027, 3059, + /*3059*/ uint16(xSetOp), uint16(MOVBE), + /*3061*/ uint16(xReadSlashR), + /*3062*/ uint16(xArgM64), + /*3063*/ uint16(xArgR64), + /*3064*/ uint16(xMatch), + /*3065*/ uint16(xCondDataSize), 3037, 3043, 3069, + /*3069*/ uint16(xSetOp), uint16(CRC32), + /*3071*/ uint16(xReadSlashR), + /*3072*/ uint16(xArgR64), + /*3073*/ uint16(xArgRM64), + /*3074*/ uint16(xMatch), + /*3075*/ uint16(xCondByte), 24, + 0x08, 3126, + 0x09, 3138, + 0x0A, 3150, + 0x0B, 3162, + 0x0C, 3174, + 0x0D, 3186, + 0x0E, 3198, + 0x0F, 3210, + 0x14, 3232, + 0x15, 3244, + 0x16, 3256, + 0x17, 3299, + 0x20, 3311, + 0x21, 3323, + 0x22, 3335, + 0x40, 3378, + 0x41, 3390, + 0x42, 3402, + 0x44, 3414, + 0x60, 3426, + 0x61, 3438, + 0x62, 3450, + 0x63, 3462, + 0xDF, 3474, uint16(xFail), - /*3124*/ uint16(xCondPrefix), 1, - 0x66, 3128, - /*3128*/ uint16(xSetOp), uint16(ROUNDPS), - /*3130*/ uint16(xReadSlashR), - /*3131*/ uint16(xReadIb), - /*3132*/ uint16(xArgXmm1), - /*3133*/ uint16(xArgXmm2M128), - /*3134*/ uint16(xArgImm8u), - /*3135*/ uint16(xMatch), - /*3136*/ uint16(xCondPrefix), 1, - 0x66, 3140, - /*3140*/ uint16(xSetOp), uint16(ROUNDPD), - /*3142*/ uint16(xReadSlashR), - /*3143*/ uint16(xReadIb), - /*3144*/ uint16(xArgXmm1), - /*3145*/ uint16(xArgXmm2M128), - /*3146*/ uint16(xArgImm8u), - /*3147*/ uint16(xMatch), - /*3148*/ uint16(xCondPrefix), 1, - 0x66, 3152, - /*3152*/ uint16(xSetOp), uint16(ROUNDSS), - /*3154*/ uint16(xReadSlashR), - /*3155*/ uint16(xReadIb), - /*3156*/ uint16(xArgXmm1), - /*3157*/ uint16(xArgXmm2M32), - /*3158*/ uint16(xArgImm8u), - /*3159*/ uint16(xMatch), - /*3160*/ uint16(xCondPrefix), 1, - 0x66, 3164, - /*3164*/ uint16(xSetOp), uint16(ROUNDSD), - /*3166*/ uint16(xReadSlashR), - /*3167*/ uint16(xReadIb), - /*3168*/ uint16(xArgXmm1), - /*3169*/ uint16(xArgXmm2M64), - /*3170*/ uint16(xArgImm8u), - /*3171*/ uint16(xMatch), - /*3172*/ uint16(xCondPrefix), 1, - 0x66, 3176, - /*3176*/ uint16(xSetOp), uint16(BLENDPS), - /*3178*/ uint16(xReadSlashR), - /*3179*/ uint16(xReadIb), - /*3180*/ uint16(xArgXmm1), - /*3181*/ uint16(xArgXmm2M128), - /*3182*/ uint16(xArgImm8u), - /*3183*/ uint16(xMatch), - /*3184*/ uint16(xCondPrefix), 1, - 0x66, 3188, - /*3188*/ uint16(xSetOp), uint16(BLENDPD), - /*3190*/ uint16(xReadSlashR), - /*3191*/ uint16(xReadIb), - /*3192*/ uint16(xArgXmm1), - /*3193*/ uint16(xArgXmm2M128), - /*3194*/ uint16(xArgImm8u), - /*3195*/ uint16(xMatch), - /*3196*/ uint16(xCondPrefix), 1, - 0x66, 3200, - /*3200*/ uint16(xSetOp), uint16(PBLENDW), - /*3202*/ uint16(xReadSlashR), - /*3203*/ uint16(xReadIb), - /*3204*/ uint16(xArgXmm1), - /*3205*/ uint16(xArgXmm2M128), - /*3206*/ uint16(xArgImm8u), - /*3207*/ uint16(xMatch), - /*3208*/ uint16(xCondPrefix), 2, - 0x66, 3222, - 0x0, 3214, - /*3214*/ uint16(xSetOp), uint16(PALIGNR), - /*3216*/ uint16(xReadSlashR), - /*3217*/ uint16(xReadIb), - /*3218*/ uint16(xArgMm1), - /*3219*/ uint16(xArgMm2M64), - /*3220*/ uint16(xArgImm8u), - /*3221*/ uint16(xMatch), - /*3222*/ uint16(xSetOp), uint16(PALIGNR), - /*3224*/ uint16(xReadSlashR), - /*3225*/ uint16(xReadIb), - /*3226*/ uint16(xArgXmm1), - /*3227*/ uint16(xArgXmm2M128), - /*3228*/ uint16(xArgImm8u), - /*3229*/ uint16(xMatch), - /*3230*/ uint16(xCondPrefix), 1, - 0x66, 3234, - /*3234*/ uint16(xSetOp), uint16(PEXTRB), - /*3236*/ uint16(xReadSlashR), - /*3237*/ uint16(xReadIb), - /*3238*/ uint16(xArgR32M8), - /*3239*/ uint16(xArgXmm1), - /*3240*/ uint16(xArgImm8u), - /*3241*/ uint16(xMatch), - /*3242*/ uint16(xCondPrefix), 1, - 0x66, 3246, - /*3246*/ uint16(xSetOp), uint16(PEXTRW), - /*3248*/ uint16(xReadSlashR), - /*3249*/ uint16(xReadIb), - /*3250*/ uint16(xArgR32M16), - /*3251*/ uint16(xArgXmm1), - /*3252*/ uint16(xArgImm8u), - /*3253*/ uint16(xMatch), - /*3254*/ uint16(xCondIs64), 3257, 3281, - /*3257*/ uint16(xCondPrefix), 1, - 0x66, 3261, - /*3261*/ uint16(xCondDataSize), 3265, 3273, 0, - /*3265*/ uint16(xSetOp), uint16(PEXTRD), - /*3267*/ uint16(xReadSlashR), - /*3268*/ uint16(xReadIb), - /*3269*/ uint16(xArgRM32), - /*3270*/ uint16(xArgXmm1), - /*3271*/ uint16(xArgImm8u), - /*3272*/ uint16(xMatch), - /*3273*/ uint16(xSetOp), uint16(PEXTRD), - /*3275*/ uint16(xReadSlashR), - /*3276*/ uint16(xReadIb), - /*3277*/ uint16(xArgRM32), - /*3278*/ uint16(xArgXmm1), - /*3279*/ uint16(xArgImm8u), - /*3280*/ uint16(xMatch), - /*3281*/ uint16(xCondPrefix), 1, - 0x66, 3285, - /*3285*/ uint16(xCondDataSize), 3265, 3273, 3289, - /*3289*/ uint16(xSetOp), uint16(PEXTRQ), - /*3291*/ uint16(xReadSlashR), - /*3292*/ uint16(xReadIb), - /*3293*/ uint16(xArgRM64), - /*3294*/ uint16(xArgXmm1), - /*3295*/ uint16(xArgImm8u), - /*3296*/ uint16(xMatch), - /*3297*/ uint16(xCondPrefix), 1, - 0x66, 3301, - /*3301*/ uint16(xSetOp), uint16(EXTRACTPS), - /*3303*/ uint16(xReadSlashR), - /*3304*/ uint16(xReadIb), - /*3305*/ uint16(xArgRM32), - /*3306*/ uint16(xArgXmm1), - /*3307*/ uint16(xArgImm8u), - /*3308*/ uint16(xMatch), - /*3309*/ uint16(xCondPrefix), 1, - 0x66, 3313, - /*3313*/ uint16(xSetOp), uint16(PINSRB), - /*3315*/ uint16(xReadSlashR), - /*3316*/ uint16(xReadIb), - /*3317*/ uint16(xArgXmm1), - /*3318*/ uint16(xArgR32M8), - /*3319*/ uint16(xArgImm8u), - /*3320*/ uint16(xMatch), - /*3321*/ uint16(xCondPrefix), 1, - 0x66, 3325, - /*3325*/ uint16(xSetOp), uint16(INSERTPS), - /*3327*/ uint16(xReadSlashR), - /*3328*/ uint16(xReadIb), - /*3329*/ uint16(xArgXmm1), - /*3330*/ uint16(xArgXmm2M32), - /*3331*/ uint16(xArgImm8u), - /*3332*/ uint16(xMatch), - /*3333*/ uint16(xCondIs64), 3336, 3360, - /*3336*/ uint16(xCondPrefix), 1, - 0x66, 3340, - /*3340*/ uint16(xCondDataSize), 3344, 3352, 0, - /*3344*/ uint16(xSetOp), uint16(PINSRD), - /*3346*/ uint16(xReadSlashR), - /*3347*/ uint16(xReadIb), - /*3348*/ uint16(xArgXmm1), - /*3349*/ uint16(xArgRM32), - /*3350*/ uint16(xArgImm8u), - /*3351*/ uint16(xMatch), - /*3352*/ uint16(xSetOp), uint16(PINSRD), - /*3354*/ uint16(xReadSlashR), - /*3355*/ uint16(xReadIb), - /*3356*/ uint16(xArgXmm1), - /*3357*/ uint16(xArgRM32), - /*3358*/ uint16(xArgImm8u), - /*3359*/ uint16(xMatch), - /*3360*/ uint16(xCondPrefix), 1, - 0x66, 3364, - /*3364*/ uint16(xCondDataSize), 3344, 3352, 3368, - /*3368*/ uint16(xSetOp), uint16(PINSRQ), - /*3370*/ uint16(xReadSlashR), - /*3371*/ uint16(xReadIb), - /*3372*/ uint16(xArgXmm1), - /*3373*/ uint16(xArgRM64), - /*3374*/ uint16(xArgImm8u), - /*3375*/ uint16(xMatch), - /*3376*/ uint16(xCondPrefix), 1, - 0x66, 3380, - /*3380*/ uint16(xSetOp), uint16(DPPS), - /*3382*/ uint16(xReadSlashR), - /*3383*/ uint16(xReadIb), - /*3384*/ uint16(xArgXmm1), - /*3385*/ uint16(xArgXmm2M128), - /*3386*/ uint16(xArgImm8u), - /*3387*/ uint16(xMatch), - /*3388*/ uint16(xCondPrefix), 1, - 0x66, 3392, - /*3392*/ uint16(xSetOp), uint16(DPPD), - /*3394*/ uint16(xReadSlashR), - /*3395*/ uint16(xReadIb), - /*3396*/ uint16(xArgXmm1), - /*3397*/ uint16(xArgXmm2M128), - /*3398*/ uint16(xArgImm8u), - /*3399*/ uint16(xMatch), - /*3400*/ uint16(xCondPrefix), 1, - 0x66, 3404, - /*3404*/ uint16(xSetOp), uint16(MPSADBW), - /*3406*/ uint16(xReadSlashR), - /*3407*/ uint16(xReadIb), - /*3408*/ uint16(xArgXmm1), - /*3409*/ uint16(xArgXmm2M128), - /*3410*/ uint16(xArgImm8u), - /*3411*/ uint16(xMatch), - /*3412*/ uint16(xCondPrefix), 1, - 0x66, 3416, - /*3416*/ uint16(xSetOp), uint16(PCLMULQDQ), - /*3418*/ uint16(xReadSlashR), - /*3419*/ uint16(xReadIb), - /*3420*/ uint16(xArgXmm1), - /*3421*/ uint16(xArgXmm2M128), - /*3422*/ uint16(xArgImm8u), - /*3423*/ uint16(xMatch), - /*3424*/ uint16(xCondPrefix), 1, - 0x66, 3428, - /*3428*/ uint16(xSetOp), uint16(PCMPESTRM), - /*3430*/ uint16(xReadSlashR), - /*3431*/ uint16(xReadIb), - /*3432*/ uint16(xArgXmm1), - /*3433*/ uint16(xArgXmm2M128), - /*3434*/ uint16(xArgImm8u), - /*3435*/ uint16(xMatch), - /*3436*/ uint16(xCondPrefix), 1, - 0x66, 3440, - /*3440*/ uint16(xSetOp), uint16(PCMPESTRI), - /*3442*/ uint16(xReadSlashR), - /*3443*/ uint16(xReadIb), - /*3444*/ uint16(xArgXmm1), - /*3445*/ uint16(xArgXmm2M128), - /*3446*/ uint16(xArgImm8u), - /*3447*/ uint16(xMatch), - /*3448*/ uint16(xCondPrefix), 1, - 0x66, 3452, - /*3452*/ uint16(xSetOp), uint16(PCMPISTRM), - /*3454*/ uint16(xReadSlashR), - /*3455*/ uint16(xReadIb), - /*3456*/ uint16(xArgXmm1), - /*3457*/ uint16(xArgXmm2M128), - /*3458*/ uint16(xArgImm8u), - /*3459*/ uint16(xMatch), - /*3460*/ uint16(xCondPrefix), 1, - 0x66, 3464, - /*3464*/ uint16(xSetOp), uint16(PCMPISTRI), - /*3466*/ uint16(xReadSlashR), - /*3467*/ uint16(xReadIb), - /*3468*/ uint16(xArgXmm1), - /*3469*/ uint16(xArgXmm2M128), - /*3470*/ uint16(xArgImm8u), - /*3471*/ uint16(xMatch), - /*3472*/ uint16(xCondPrefix), 1, - 0x66, 3476, - /*3476*/ uint16(xSetOp), uint16(AESKEYGENASSIST), - /*3478*/ uint16(xReadSlashR), - /*3479*/ uint16(xReadIb), - /*3480*/ uint16(xArgXmm1), - /*3481*/ uint16(xArgXmm2M128), - /*3482*/ uint16(xArgImm8u), - /*3483*/ uint16(xMatch), - /*3484*/ uint16(xCondIs64), 3487, 3503, - /*3487*/ uint16(xCondDataSize), 3491, 3497, 0, - /*3491*/ uint16(xSetOp), uint16(CMOVO), - /*3493*/ uint16(xReadSlashR), - /*3494*/ uint16(xArgR16), - /*3495*/ uint16(xArgRM16), - /*3496*/ uint16(xMatch), - /*3497*/ uint16(xSetOp), uint16(CMOVO), - /*3499*/ uint16(xReadSlashR), - /*3500*/ uint16(xArgR32), - /*3501*/ uint16(xArgRM32), - /*3502*/ uint16(xMatch), - /*3503*/ uint16(xCondDataSize), 3491, 3497, 3507, - /*3507*/ uint16(xSetOp), uint16(CMOVO), - /*3509*/ uint16(xReadSlashR), - /*3510*/ uint16(xArgR64), - /*3511*/ uint16(xArgRM64), - /*3512*/ uint16(xMatch), - /*3513*/ uint16(xCondIs64), 3516, 3532, - /*3516*/ uint16(xCondDataSize), 3520, 3526, 0, - /*3520*/ uint16(xSetOp), uint16(CMOVNO), - /*3522*/ uint16(xReadSlashR), - /*3523*/ uint16(xArgR16), - /*3524*/ uint16(xArgRM16), - /*3525*/ uint16(xMatch), - /*3526*/ uint16(xSetOp), uint16(CMOVNO), - /*3528*/ uint16(xReadSlashR), - /*3529*/ uint16(xArgR32), - /*3530*/ uint16(xArgRM32), - /*3531*/ uint16(xMatch), - /*3532*/ uint16(xCondDataSize), 3520, 3526, 3536, - /*3536*/ uint16(xSetOp), uint16(CMOVNO), - /*3538*/ uint16(xReadSlashR), - /*3539*/ uint16(xArgR64), - /*3540*/ uint16(xArgRM64), - /*3541*/ uint16(xMatch), - /*3542*/ uint16(xCondIs64), 3545, 3561, - /*3545*/ uint16(xCondDataSize), 3549, 3555, 0, - /*3549*/ uint16(xSetOp), uint16(CMOVB), - /*3551*/ uint16(xReadSlashR), - /*3552*/ uint16(xArgR16), - /*3553*/ uint16(xArgRM16), - /*3554*/ uint16(xMatch), - /*3555*/ uint16(xSetOp), uint16(CMOVB), - /*3557*/ uint16(xReadSlashR), - /*3558*/ uint16(xArgR32), - /*3559*/ uint16(xArgRM32), - /*3560*/ uint16(xMatch), - /*3561*/ uint16(xCondDataSize), 3549, 3555, 3565, - /*3565*/ uint16(xSetOp), uint16(CMOVB), - /*3567*/ uint16(xReadSlashR), - /*3568*/ uint16(xArgR64), - /*3569*/ uint16(xArgRM64), - /*3570*/ uint16(xMatch), - /*3571*/ uint16(xCondIs64), 3574, 3590, - /*3574*/ uint16(xCondDataSize), 3578, 3584, 0, - /*3578*/ uint16(xSetOp), uint16(CMOVAE), - /*3580*/ uint16(xReadSlashR), - /*3581*/ uint16(xArgR16), - /*3582*/ uint16(xArgRM16), - /*3583*/ uint16(xMatch), - /*3584*/ uint16(xSetOp), uint16(CMOVAE), - /*3586*/ uint16(xReadSlashR), - /*3587*/ uint16(xArgR32), - /*3588*/ uint16(xArgRM32), - /*3589*/ uint16(xMatch), - /*3590*/ uint16(xCondDataSize), 3578, 3584, 3594, - /*3594*/ uint16(xSetOp), uint16(CMOVAE), - /*3596*/ uint16(xReadSlashR), - /*3597*/ uint16(xArgR64), - /*3598*/ uint16(xArgRM64), - /*3599*/ uint16(xMatch), - /*3600*/ uint16(xCondIs64), 3603, 3619, - /*3603*/ uint16(xCondDataSize), 3607, 3613, 0, - /*3607*/ uint16(xSetOp), uint16(CMOVE), - /*3609*/ uint16(xReadSlashR), - /*3610*/ uint16(xArgR16), - /*3611*/ uint16(xArgRM16), - /*3612*/ uint16(xMatch), - /*3613*/ uint16(xSetOp), uint16(CMOVE), - /*3615*/ uint16(xReadSlashR), - /*3616*/ uint16(xArgR32), - /*3617*/ uint16(xArgRM32), - /*3618*/ uint16(xMatch), - /*3619*/ uint16(xCondDataSize), 3607, 3613, 3623, - /*3623*/ uint16(xSetOp), uint16(CMOVE), - /*3625*/ uint16(xReadSlashR), - /*3626*/ uint16(xArgR64), - /*3627*/ uint16(xArgRM64), - /*3628*/ uint16(xMatch), - /*3629*/ uint16(xCondIs64), 3632, 3648, - /*3632*/ uint16(xCondDataSize), 3636, 3642, 0, - /*3636*/ uint16(xSetOp), uint16(CMOVNE), - /*3638*/ uint16(xReadSlashR), - /*3639*/ uint16(xArgR16), - /*3640*/ uint16(xArgRM16), - /*3641*/ uint16(xMatch), - /*3642*/ uint16(xSetOp), uint16(CMOVNE), - /*3644*/ uint16(xReadSlashR), - /*3645*/ uint16(xArgR32), - /*3646*/ uint16(xArgRM32), - /*3647*/ uint16(xMatch), - /*3648*/ uint16(xCondDataSize), 3636, 3642, 3652, - /*3652*/ uint16(xSetOp), uint16(CMOVNE), - /*3654*/ uint16(xReadSlashR), - /*3655*/ uint16(xArgR64), - /*3656*/ uint16(xArgRM64), - /*3657*/ uint16(xMatch), - /*3658*/ uint16(xCondIs64), 3661, 3677, - /*3661*/ uint16(xCondDataSize), 3665, 3671, 0, - /*3665*/ uint16(xSetOp), uint16(CMOVBE), - /*3667*/ uint16(xReadSlashR), - /*3668*/ uint16(xArgR16), - /*3669*/ uint16(xArgRM16), - /*3670*/ uint16(xMatch), - /*3671*/ uint16(xSetOp), uint16(CMOVBE), - /*3673*/ uint16(xReadSlashR), - /*3674*/ uint16(xArgR32), - /*3675*/ uint16(xArgRM32), - /*3676*/ uint16(xMatch), - /*3677*/ uint16(xCondDataSize), 3665, 3671, 3681, - /*3681*/ uint16(xSetOp), uint16(CMOVBE), - /*3683*/ uint16(xReadSlashR), - /*3684*/ uint16(xArgR64), - /*3685*/ uint16(xArgRM64), - /*3686*/ uint16(xMatch), - /*3687*/ uint16(xCondIs64), 3690, 3706, - /*3690*/ uint16(xCondDataSize), 3694, 3700, 0, - /*3694*/ uint16(xSetOp), uint16(CMOVA), - /*3696*/ uint16(xReadSlashR), - /*3697*/ uint16(xArgR16), - /*3698*/ uint16(xArgRM16), - /*3699*/ uint16(xMatch), - /*3700*/ uint16(xSetOp), uint16(CMOVA), - /*3702*/ uint16(xReadSlashR), - /*3703*/ uint16(xArgR32), - /*3704*/ uint16(xArgRM32), - /*3705*/ uint16(xMatch), - /*3706*/ uint16(xCondDataSize), 3694, 3700, 3710, - /*3710*/ uint16(xSetOp), uint16(CMOVA), - /*3712*/ uint16(xReadSlashR), - /*3713*/ uint16(xArgR64), - /*3714*/ uint16(xArgRM64), - /*3715*/ uint16(xMatch), - /*3716*/ uint16(xCondIs64), 3719, 3735, - /*3719*/ uint16(xCondDataSize), 3723, 3729, 0, - /*3723*/ uint16(xSetOp), uint16(CMOVS), - /*3725*/ uint16(xReadSlashR), - /*3726*/ uint16(xArgR16), - /*3727*/ uint16(xArgRM16), - /*3728*/ uint16(xMatch), - /*3729*/ uint16(xSetOp), uint16(CMOVS), - /*3731*/ uint16(xReadSlashR), - /*3732*/ uint16(xArgR32), - /*3733*/ uint16(xArgRM32), - /*3734*/ uint16(xMatch), - /*3735*/ uint16(xCondDataSize), 3723, 3729, 3739, - /*3739*/ uint16(xSetOp), uint16(CMOVS), - /*3741*/ uint16(xReadSlashR), - /*3742*/ uint16(xArgR64), - /*3743*/ uint16(xArgRM64), - /*3744*/ uint16(xMatch), - /*3745*/ uint16(xCondIs64), 3748, 3764, - /*3748*/ uint16(xCondDataSize), 3752, 3758, 0, - /*3752*/ uint16(xSetOp), uint16(CMOVNS), - /*3754*/ uint16(xReadSlashR), - /*3755*/ uint16(xArgR16), - /*3756*/ uint16(xArgRM16), - /*3757*/ uint16(xMatch), - /*3758*/ uint16(xSetOp), uint16(CMOVNS), - /*3760*/ uint16(xReadSlashR), - /*3761*/ uint16(xArgR32), - /*3762*/ uint16(xArgRM32), - /*3763*/ uint16(xMatch), - /*3764*/ uint16(xCondDataSize), 3752, 3758, 3768, - /*3768*/ uint16(xSetOp), uint16(CMOVNS), - /*3770*/ uint16(xReadSlashR), - /*3771*/ uint16(xArgR64), - /*3772*/ uint16(xArgRM64), - /*3773*/ uint16(xMatch), - /*3774*/ uint16(xCondIs64), 3777, 3793, - /*3777*/ uint16(xCondDataSize), 3781, 3787, 0, - /*3781*/ uint16(xSetOp), uint16(CMOVP), - /*3783*/ uint16(xReadSlashR), - /*3784*/ uint16(xArgR16), - /*3785*/ uint16(xArgRM16), - /*3786*/ uint16(xMatch), - /*3787*/ uint16(xSetOp), uint16(CMOVP), - /*3789*/ uint16(xReadSlashR), - /*3790*/ uint16(xArgR32), - /*3791*/ uint16(xArgRM32), - /*3792*/ uint16(xMatch), - /*3793*/ uint16(xCondDataSize), 3781, 3787, 3797, - /*3797*/ uint16(xSetOp), uint16(CMOVP), - /*3799*/ uint16(xReadSlashR), - /*3800*/ uint16(xArgR64), - /*3801*/ uint16(xArgRM64), - /*3802*/ uint16(xMatch), - /*3803*/ uint16(xCondIs64), 3806, 3822, - /*3806*/ uint16(xCondDataSize), 3810, 3816, 0, - /*3810*/ uint16(xSetOp), uint16(CMOVNP), - /*3812*/ uint16(xReadSlashR), - /*3813*/ uint16(xArgR16), - /*3814*/ uint16(xArgRM16), - /*3815*/ uint16(xMatch), - /*3816*/ uint16(xSetOp), uint16(CMOVNP), - /*3818*/ uint16(xReadSlashR), - /*3819*/ uint16(xArgR32), - /*3820*/ uint16(xArgRM32), - /*3821*/ uint16(xMatch), - /*3822*/ uint16(xCondDataSize), 3810, 3816, 3826, - /*3826*/ uint16(xSetOp), uint16(CMOVNP), - /*3828*/ uint16(xReadSlashR), - /*3829*/ uint16(xArgR64), - /*3830*/ uint16(xArgRM64), - /*3831*/ uint16(xMatch), - /*3832*/ uint16(xCondIs64), 3835, 3851, - /*3835*/ uint16(xCondDataSize), 3839, 3845, 0, - /*3839*/ uint16(xSetOp), uint16(CMOVL), - /*3841*/ uint16(xReadSlashR), - /*3842*/ uint16(xArgR16), - /*3843*/ uint16(xArgRM16), - /*3844*/ uint16(xMatch), - /*3845*/ uint16(xSetOp), uint16(CMOVL), - /*3847*/ uint16(xReadSlashR), - /*3848*/ uint16(xArgR32), - /*3849*/ uint16(xArgRM32), - /*3850*/ uint16(xMatch), - /*3851*/ uint16(xCondDataSize), 3839, 3845, 3855, - /*3855*/ uint16(xSetOp), uint16(CMOVL), - /*3857*/ uint16(xReadSlashR), - /*3858*/ uint16(xArgR64), - /*3859*/ uint16(xArgRM64), - /*3860*/ uint16(xMatch), - /*3861*/ uint16(xCondIs64), 3864, 3880, - /*3864*/ uint16(xCondDataSize), 3868, 3874, 0, - /*3868*/ uint16(xSetOp), uint16(CMOVGE), - /*3870*/ uint16(xReadSlashR), - /*3871*/ uint16(xArgR16), - /*3872*/ uint16(xArgRM16), - /*3873*/ uint16(xMatch), - /*3874*/ uint16(xSetOp), uint16(CMOVGE), - /*3876*/ uint16(xReadSlashR), - /*3877*/ uint16(xArgR32), - /*3878*/ uint16(xArgRM32), - /*3879*/ uint16(xMatch), - /*3880*/ uint16(xCondDataSize), 3868, 3874, 3884, - /*3884*/ uint16(xSetOp), uint16(CMOVGE), - /*3886*/ uint16(xReadSlashR), - /*3887*/ uint16(xArgR64), - /*3888*/ uint16(xArgRM64), - /*3889*/ uint16(xMatch), - /*3890*/ uint16(xCondIs64), 3893, 3909, - /*3893*/ uint16(xCondDataSize), 3897, 3903, 0, - /*3897*/ uint16(xSetOp), uint16(CMOVLE), - /*3899*/ uint16(xReadSlashR), - /*3900*/ uint16(xArgR16), - /*3901*/ uint16(xArgRM16), - /*3902*/ uint16(xMatch), - /*3903*/ uint16(xSetOp), uint16(CMOVLE), - /*3905*/ uint16(xReadSlashR), - /*3906*/ uint16(xArgR32), - /*3907*/ uint16(xArgRM32), - /*3908*/ uint16(xMatch), - /*3909*/ uint16(xCondDataSize), 3897, 3903, 3913, - /*3913*/ uint16(xSetOp), uint16(CMOVLE), - /*3915*/ uint16(xReadSlashR), - /*3916*/ uint16(xArgR64), - /*3917*/ uint16(xArgRM64), - /*3918*/ uint16(xMatch), - /*3919*/ uint16(xCondIs64), 3922, 3938, - /*3922*/ uint16(xCondDataSize), 3926, 3932, 0, - /*3926*/ uint16(xSetOp), uint16(CMOVG), - /*3928*/ uint16(xReadSlashR), - /*3929*/ uint16(xArgR16), - /*3930*/ uint16(xArgRM16), - /*3931*/ uint16(xMatch), - /*3932*/ uint16(xSetOp), uint16(CMOVG), - /*3934*/ uint16(xReadSlashR), - /*3935*/ uint16(xArgR32), - /*3936*/ uint16(xArgRM32), - /*3937*/ uint16(xMatch), - /*3938*/ uint16(xCondDataSize), 3926, 3932, 3942, - /*3942*/ uint16(xSetOp), uint16(CMOVG), - /*3944*/ uint16(xReadSlashR), - /*3945*/ uint16(xArgR64), - /*3946*/ uint16(xArgRM64), - /*3947*/ uint16(xMatch), - /*3948*/ uint16(xCondPrefix), 2, - 0x66, 3960, - 0x0, 3954, - /*3954*/ uint16(xSetOp), uint16(MOVMSKPS), - /*3956*/ uint16(xReadSlashR), - /*3957*/ uint16(xArgR32), - /*3958*/ uint16(xArgXmm2), - /*3959*/ uint16(xMatch), - /*3960*/ uint16(xSetOp), uint16(MOVMSKPD), - /*3962*/ uint16(xReadSlashR), - /*3963*/ uint16(xArgR32), - /*3964*/ uint16(xArgXmm2), - /*3965*/ uint16(xMatch), - /*3966*/ uint16(xCondPrefix), 4, - 0xF3, 3994, - 0xF2, 3988, - 0x66, 3982, - 0x0, 3976, - /*3976*/ uint16(xSetOp), uint16(SQRTPS), - /*3978*/ uint16(xReadSlashR), - /*3979*/ uint16(xArgXmm1), - /*3980*/ uint16(xArgXmm2M128), - /*3981*/ uint16(xMatch), - /*3982*/ uint16(xSetOp), uint16(SQRTPD), - /*3984*/ uint16(xReadSlashR), - /*3985*/ uint16(xArgXmm1), - /*3986*/ uint16(xArgXmm2M128), - /*3987*/ uint16(xMatch), - /*3988*/ uint16(xSetOp), uint16(SQRTSD), - /*3990*/ uint16(xReadSlashR), - /*3991*/ uint16(xArgXmm1), - /*3992*/ uint16(xArgXmm2M64), - /*3993*/ uint16(xMatch), - /*3994*/ uint16(xSetOp), uint16(SQRTSS), - /*3996*/ uint16(xReadSlashR), - /*3997*/ uint16(xArgXmm1), - /*3998*/ uint16(xArgXmm2M32), - /*3999*/ uint16(xMatch), - /*4000*/ uint16(xCondPrefix), 2, - 0xF3, 4012, - 0x0, 4006, - /*4006*/ uint16(xSetOp), uint16(RSQRTPS), - /*4008*/ uint16(xReadSlashR), - /*4009*/ uint16(xArgXmm1), - /*4010*/ uint16(xArgXmm2M128), - /*4011*/ uint16(xMatch), - /*4012*/ uint16(xSetOp), uint16(RSQRTSS), - /*4014*/ uint16(xReadSlashR), - /*4015*/ uint16(xArgXmm1), - /*4016*/ uint16(xArgXmm2M32), - /*4017*/ uint16(xMatch), - /*4018*/ uint16(xCondPrefix), 2, - 0xF3, 4030, - 0x0, 4024, - /*4024*/ uint16(xSetOp), uint16(RCPPS), - /*4026*/ uint16(xReadSlashR), - /*4027*/ uint16(xArgXmm1), - /*4028*/ uint16(xArgXmm2M128), - /*4029*/ uint16(xMatch), - /*4030*/ uint16(xSetOp), uint16(RCPSS), - /*4032*/ uint16(xReadSlashR), - /*4033*/ uint16(xArgXmm1), - /*4034*/ uint16(xArgXmm2M32), - /*4035*/ uint16(xMatch), - /*4036*/ uint16(xCondPrefix), 2, - 0x66, 4048, - 0x0, 4042, - /*4042*/ uint16(xSetOp), uint16(ANDPS), - /*4044*/ uint16(xReadSlashR), - /*4045*/ uint16(xArgXmm1), - /*4046*/ uint16(xArgXmm2M128), - /*4047*/ uint16(xMatch), - /*4048*/ uint16(xSetOp), uint16(ANDPD), - /*4050*/ uint16(xReadSlashR), - /*4051*/ uint16(xArgXmm1), - /*4052*/ uint16(xArgXmm2M128), - /*4053*/ uint16(xMatch), - /*4054*/ uint16(xCondPrefix), 2, - 0x66, 4066, - 0x0, 4060, - /*4060*/ uint16(xSetOp), uint16(ANDNPS), - /*4062*/ uint16(xReadSlashR), - /*4063*/ uint16(xArgXmm1), - /*4064*/ uint16(xArgXmm2M128), - /*4065*/ uint16(xMatch), - /*4066*/ uint16(xSetOp), uint16(ANDNPD), - /*4068*/ uint16(xReadSlashR), - /*4069*/ uint16(xArgXmm1), - /*4070*/ uint16(xArgXmm2M128), - /*4071*/ uint16(xMatch), - /*4072*/ uint16(xCondPrefix), 2, - 0x66, 4084, - 0x0, 4078, - /*4078*/ uint16(xSetOp), uint16(ORPS), - /*4080*/ uint16(xReadSlashR), - /*4081*/ uint16(xArgXmm1), - /*4082*/ uint16(xArgXmm2M128), - /*4083*/ uint16(xMatch), - /*4084*/ uint16(xSetOp), uint16(ORPD), - /*4086*/ uint16(xReadSlashR), - /*4087*/ uint16(xArgXmm1), - /*4088*/ uint16(xArgXmm2M128), - /*4089*/ uint16(xMatch), - /*4090*/ uint16(xCondPrefix), 2, - 0x66, 4102, - 0x0, 4096, - /*4096*/ uint16(xSetOp), uint16(XORPS), - /*4098*/ uint16(xReadSlashR), - /*4099*/ uint16(xArgXmm1), - /*4100*/ uint16(xArgXmm2M128), - /*4101*/ uint16(xMatch), - /*4102*/ uint16(xSetOp), uint16(XORPD), - /*4104*/ uint16(xReadSlashR), - /*4105*/ uint16(xArgXmm1), - /*4106*/ uint16(xArgXmm2M128), - /*4107*/ uint16(xMatch), - /*4108*/ uint16(xCondPrefix), 4, - 0xF3, 4136, - 0xF2, 4130, - 0x66, 4124, - 0x0, 4118, - /*4118*/ uint16(xSetOp), uint16(ADDPS), - /*4120*/ uint16(xReadSlashR), - /*4121*/ uint16(xArgXmm1), - /*4122*/ uint16(xArgXmm2M128), - /*4123*/ uint16(xMatch), - /*4124*/ uint16(xSetOp), uint16(ADDPD), - /*4126*/ uint16(xReadSlashR), - /*4127*/ uint16(xArgXmm1), - /*4128*/ uint16(xArgXmm2M128), - /*4129*/ uint16(xMatch), - /*4130*/ uint16(xSetOp), uint16(ADDSD), - /*4132*/ uint16(xReadSlashR), - /*4133*/ uint16(xArgXmm1), - /*4134*/ uint16(xArgXmm2M64), - /*4135*/ uint16(xMatch), - /*4136*/ uint16(xSetOp), uint16(ADDSS), - /*4138*/ uint16(xReadSlashR), - /*4139*/ uint16(xArgXmm1), - /*4140*/ uint16(xArgXmm2M32), - /*4141*/ uint16(xMatch), - /*4142*/ uint16(xCondPrefix), 4, - 0xF3, 4170, - 0xF2, 4164, - 0x66, 4158, - 0x0, 4152, - /*4152*/ uint16(xSetOp), uint16(MULPS), - /*4154*/ uint16(xReadSlashR), - /*4155*/ uint16(xArgXmm1), - /*4156*/ uint16(xArgXmm2M128), - /*4157*/ uint16(xMatch), - /*4158*/ uint16(xSetOp), uint16(MULPD), - /*4160*/ uint16(xReadSlashR), - /*4161*/ uint16(xArgXmm1), - /*4162*/ uint16(xArgXmm2M128), - /*4163*/ uint16(xMatch), - /*4164*/ uint16(xSetOp), uint16(MULSD), - /*4166*/ uint16(xReadSlashR), - /*4167*/ uint16(xArgXmm1), - /*4168*/ uint16(xArgXmm2M64), - /*4169*/ uint16(xMatch), - /*4170*/ uint16(xSetOp), uint16(MULSS), - /*4172*/ uint16(xReadSlashR), - /*4173*/ uint16(xArgXmm1), - /*4174*/ uint16(xArgXmm2M32), - /*4175*/ uint16(xMatch), - /*4176*/ uint16(xCondPrefix), 4, - 0xF3, 4204, - 0xF2, 4198, - 0x66, 4192, - 0x0, 4186, - /*4186*/ uint16(xSetOp), uint16(CVTPS2PD), - /*4188*/ uint16(xReadSlashR), - /*4189*/ uint16(xArgXmm1), - /*4190*/ uint16(xArgXmm2M64), - /*4191*/ uint16(xMatch), - /*4192*/ uint16(xSetOp), uint16(CVTPD2PS), - /*4194*/ uint16(xReadSlashR), - /*4195*/ uint16(xArgXmm1), - /*4196*/ uint16(xArgXmm2M128), - /*4197*/ uint16(xMatch), - /*4198*/ uint16(xSetOp), uint16(CVTSD2SS), - /*4200*/ uint16(xReadSlashR), - /*4201*/ uint16(xArgXmm1), - /*4202*/ uint16(xArgXmm2M64), - /*4203*/ uint16(xMatch), - /*4204*/ uint16(xSetOp), uint16(CVTSS2SD), - /*4206*/ uint16(xReadSlashR), - /*4207*/ uint16(xArgXmm1), - /*4208*/ uint16(xArgXmm2M32), - /*4209*/ uint16(xMatch), - /*4210*/ uint16(xCondPrefix), 3, - 0xF3, 4230, - 0x66, 4224, - 0x0, 4218, - /*4218*/ uint16(xSetOp), uint16(CVTDQ2PS), - /*4220*/ uint16(xReadSlashR), - /*4221*/ uint16(xArgXmm1), - /*4222*/ uint16(xArgXmm2M128), - /*4223*/ uint16(xMatch), - /*4224*/ uint16(xSetOp), uint16(CVTPS2DQ), - /*4226*/ uint16(xReadSlashR), - /*4227*/ uint16(xArgXmm1), - /*4228*/ uint16(xArgXmm2M128), - /*4229*/ uint16(xMatch), - /*4230*/ uint16(xSetOp), uint16(CVTTPS2DQ), - /*4232*/ uint16(xReadSlashR), - /*4233*/ uint16(xArgXmm1), - /*4234*/ uint16(xArgXmm2M128), - /*4235*/ uint16(xMatch), - /*4236*/ uint16(xCondPrefix), 4, - 0xF3, 4264, - 0xF2, 4258, - 0x66, 4252, - 0x0, 4246, - /*4246*/ uint16(xSetOp), uint16(SUBPS), - /*4248*/ uint16(xReadSlashR), - /*4249*/ uint16(xArgXmm1), - /*4250*/ uint16(xArgXmm2M128), - /*4251*/ uint16(xMatch), - /*4252*/ uint16(xSetOp), uint16(SUBPD), - /*4254*/ uint16(xReadSlashR), - /*4255*/ uint16(xArgXmm1), - /*4256*/ uint16(xArgXmm2M128), - /*4257*/ uint16(xMatch), - /*4258*/ uint16(xSetOp), uint16(SUBSD), - /*4260*/ uint16(xReadSlashR), - /*4261*/ uint16(xArgXmm1), - /*4262*/ uint16(xArgXmm2M64), - /*4263*/ uint16(xMatch), - /*4264*/ uint16(xSetOp), uint16(SUBSS), - /*4266*/ uint16(xReadSlashR), - /*4267*/ uint16(xArgXmm1), - /*4268*/ uint16(xArgXmm2M32), - /*4269*/ uint16(xMatch), - /*4270*/ uint16(xCondPrefix), 4, - 0xF3, 4298, - 0xF2, 4292, - 0x66, 4286, - 0x0, 4280, - /*4280*/ uint16(xSetOp), uint16(MINPS), - /*4282*/ uint16(xReadSlashR), - /*4283*/ uint16(xArgXmm1), - /*4284*/ uint16(xArgXmm2M128), - /*4285*/ uint16(xMatch), - /*4286*/ uint16(xSetOp), uint16(MINPD), - /*4288*/ uint16(xReadSlashR), - /*4289*/ uint16(xArgXmm1), - /*4290*/ uint16(xArgXmm2M128), - /*4291*/ uint16(xMatch), - /*4292*/ uint16(xSetOp), uint16(MINSD), - /*4294*/ uint16(xReadSlashR), - /*4295*/ uint16(xArgXmm1), - /*4296*/ uint16(xArgXmm2M64), - /*4297*/ uint16(xMatch), - /*4298*/ uint16(xSetOp), uint16(MINSS), - /*4300*/ uint16(xReadSlashR), - /*4301*/ uint16(xArgXmm1), - /*4302*/ uint16(xArgXmm2M32), - /*4303*/ uint16(xMatch), - /*4304*/ uint16(xCondPrefix), 4, - 0xF3, 4332, - 0xF2, 4326, - 0x66, 4320, - 0x0, 4314, - /*4314*/ uint16(xSetOp), uint16(DIVPS), - /*4316*/ uint16(xReadSlashR), - /*4317*/ uint16(xArgXmm1), - /*4318*/ uint16(xArgXmm2M128), - /*4319*/ uint16(xMatch), - /*4320*/ uint16(xSetOp), uint16(DIVPD), - /*4322*/ uint16(xReadSlashR), - /*4323*/ uint16(xArgXmm1), - /*4324*/ uint16(xArgXmm2M128), - /*4325*/ uint16(xMatch), - /*4326*/ uint16(xSetOp), uint16(DIVSD), - /*4328*/ uint16(xReadSlashR), - /*4329*/ uint16(xArgXmm1), - /*4330*/ uint16(xArgXmm2M64), - /*4331*/ uint16(xMatch), - /*4332*/ uint16(xSetOp), uint16(DIVSS), - /*4334*/ uint16(xReadSlashR), - /*4335*/ uint16(xArgXmm1), - /*4336*/ uint16(xArgXmm2M32), - /*4337*/ uint16(xMatch), - /*4338*/ uint16(xCondPrefix), 4, - 0xF3, 4366, - 0xF2, 4360, - 0x66, 4354, - 0x0, 4348, - /*4348*/ uint16(xSetOp), uint16(MAXPS), - /*4350*/ uint16(xReadSlashR), - /*4351*/ uint16(xArgXmm1), - /*4352*/ uint16(xArgXmm2M128), - /*4353*/ uint16(xMatch), - /*4354*/ uint16(xSetOp), uint16(MAXPD), - /*4356*/ uint16(xReadSlashR), - /*4357*/ uint16(xArgXmm1), - /*4358*/ uint16(xArgXmm2M128), - /*4359*/ uint16(xMatch), - /*4360*/ uint16(xSetOp), uint16(MAXSD), - /*4362*/ uint16(xReadSlashR), - /*4363*/ uint16(xArgXmm1), - /*4364*/ uint16(xArgXmm2M64), - /*4365*/ uint16(xMatch), - /*4366*/ uint16(xSetOp), uint16(MAXSS), - /*4368*/ uint16(xReadSlashR), - /*4369*/ uint16(xArgXmm1), - /*4370*/ uint16(xArgXmm2M32), - /*4371*/ uint16(xMatch), - /*4372*/ uint16(xCondPrefix), 2, - 0x66, 4384, - 0x0, 4378, - /*4378*/ uint16(xSetOp), uint16(PUNPCKLBW), - /*4380*/ uint16(xReadSlashR), - /*4381*/ uint16(xArgMm), - /*4382*/ uint16(xArgMmM32), - /*4383*/ uint16(xMatch), - /*4384*/ uint16(xSetOp), uint16(PUNPCKLBW), - /*4386*/ uint16(xReadSlashR), - /*4387*/ uint16(xArgXmm1), - /*4388*/ uint16(xArgXmm2M128), - /*4389*/ uint16(xMatch), - /*4390*/ uint16(xCondPrefix), 2, - 0x66, 4402, - 0x0, 4396, - /*4396*/ uint16(xSetOp), uint16(PUNPCKLWD), - /*4398*/ uint16(xReadSlashR), - /*4399*/ uint16(xArgMm), - /*4400*/ uint16(xArgMmM32), - /*4401*/ uint16(xMatch), - /*4402*/ uint16(xSetOp), uint16(PUNPCKLWD), - /*4404*/ uint16(xReadSlashR), - /*4405*/ uint16(xArgXmm1), - /*4406*/ uint16(xArgXmm2M128), - /*4407*/ uint16(xMatch), - /*4408*/ uint16(xCondPrefix), 2, - 0x66, 4420, - 0x0, 4414, - /*4414*/ uint16(xSetOp), uint16(PUNPCKLDQ), - /*4416*/ uint16(xReadSlashR), - /*4417*/ uint16(xArgMm), - /*4418*/ uint16(xArgMmM32), - /*4419*/ uint16(xMatch), - /*4420*/ uint16(xSetOp), uint16(PUNPCKLDQ), - /*4422*/ uint16(xReadSlashR), - /*4423*/ uint16(xArgXmm1), - /*4424*/ uint16(xArgXmm2M128), - /*4425*/ uint16(xMatch), - /*4426*/ uint16(xCondPrefix), 2, - 0x66, 4438, - 0x0, 4432, - /*4432*/ uint16(xSetOp), uint16(PACKSSWB), - /*4434*/ uint16(xReadSlashR), - /*4435*/ uint16(xArgMm1), - /*4436*/ uint16(xArgMm2M64), - /*4437*/ uint16(xMatch), - /*4438*/ uint16(xSetOp), uint16(PACKSSWB), - /*4440*/ uint16(xReadSlashR), - /*4441*/ uint16(xArgXmm1), - /*4442*/ uint16(xArgXmm2M128), - /*4443*/ uint16(xMatch), - /*4444*/ uint16(xCondPrefix), 2, - 0x66, 4456, - 0x0, 4450, - /*4450*/ uint16(xSetOp), uint16(PCMPGTB), - /*4452*/ uint16(xReadSlashR), - /*4453*/ uint16(xArgMm), - /*4454*/ uint16(xArgMmM64), - /*4455*/ uint16(xMatch), - /*4456*/ uint16(xSetOp), uint16(PCMPGTB), - /*4458*/ uint16(xReadSlashR), - /*4459*/ uint16(xArgXmm1), - /*4460*/ uint16(xArgXmm2M128), - /*4461*/ uint16(xMatch), - /*4462*/ uint16(xCondPrefix), 2, - 0x66, 4474, - 0x0, 4468, - /*4468*/ uint16(xSetOp), uint16(PCMPGTW), - /*4470*/ uint16(xReadSlashR), - /*4471*/ uint16(xArgMm), - /*4472*/ uint16(xArgMmM64), - /*4473*/ uint16(xMatch), - /*4474*/ uint16(xSetOp), uint16(PCMPGTW), - /*4476*/ uint16(xReadSlashR), - /*4477*/ uint16(xArgXmm1), - /*4478*/ uint16(xArgXmm2M128), - /*4479*/ uint16(xMatch), - /*4480*/ uint16(xCondPrefix), 2, - 0x66, 4492, - 0x0, 4486, - /*4486*/ uint16(xSetOp), uint16(PCMPGTD), - /*4488*/ uint16(xReadSlashR), - /*4489*/ uint16(xArgMm), - /*4490*/ uint16(xArgMmM64), - /*4491*/ uint16(xMatch), - /*4492*/ uint16(xSetOp), uint16(PCMPGTD), - /*4494*/ uint16(xReadSlashR), - /*4495*/ uint16(xArgXmm1), - /*4496*/ uint16(xArgXmm2M128), - /*4497*/ uint16(xMatch), - /*4498*/ uint16(xCondPrefix), 2, - 0x66, 4510, - 0x0, 4504, - /*4504*/ uint16(xSetOp), uint16(PACKUSWB), - /*4506*/ uint16(xReadSlashR), - /*4507*/ uint16(xArgMm), - /*4508*/ uint16(xArgMmM64), - /*4509*/ uint16(xMatch), - /*4510*/ uint16(xSetOp), uint16(PACKUSWB), - /*4512*/ uint16(xReadSlashR), - /*4513*/ uint16(xArgXmm1), - /*4514*/ uint16(xArgXmm2M128), - /*4515*/ uint16(xMatch), - /*4516*/ uint16(xCondPrefix), 2, - 0x66, 4528, - 0x0, 4522, - /*4522*/ uint16(xSetOp), uint16(PUNPCKHBW), - /*4524*/ uint16(xReadSlashR), - /*4525*/ uint16(xArgMm), - /*4526*/ uint16(xArgMmM64), - /*4527*/ uint16(xMatch), - /*4528*/ uint16(xSetOp), uint16(PUNPCKHBW), - /*4530*/ uint16(xReadSlashR), - /*4531*/ uint16(xArgXmm1), - /*4532*/ uint16(xArgXmm2M128), - /*4533*/ uint16(xMatch), - /*4534*/ uint16(xCondPrefix), 2, - 0x66, 4546, - 0x0, 4540, - /*4540*/ uint16(xSetOp), uint16(PUNPCKHWD), - /*4542*/ uint16(xReadSlashR), - /*4543*/ uint16(xArgMm), - /*4544*/ uint16(xArgMmM64), - /*4545*/ uint16(xMatch), - /*4546*/ uint16(xSetOp), uint16(PUNPCKHWD), - /*4548*/ uint16(xReadSlashR), - /*4549*/ uint16(xArgXmm1), - /*4550*/ uint16(xArgXmm2M128), - /*4551*/ uint16(xMatch), - /*4552*/ uint16(xCondPrefix), 2, - 0x66, 4564, - 0x0, 4558, - /*4558*/ uint16(xSetOp), uint16(PUNPCKHDQ), - /*4560*/ uint16(xReadSlashR), - /*4561*/ uint16(xArgMm), - /*4562*/ uint16(xArgMmM64), - /*4563*/ uint16(xMatch), - /*4564*/ uint16(xSetOp), uint16(PUNPCKHDQ), - /*4566*/ uint16(xReadSlashR), - /*4567*/ uint16(xArgXmm1), - /*4568*/ uint16(xArgXmm2M128), - /*4569*/ uint16(xMatch), - /*4570*/ uint16(xCondPrefix), 2, - 0x66, 4582, - 0x0, 4576, - /*4576*/ uint16(xSetOp), uint16(PACKSSDW), - /*4578*/ uint16(xReadSlashR), - /*4579*/ uint16(xArgMm1), - /*4580*/ uint16(xArgMm2M64), - /*4581*/ uint16(xMatch), - /*4582*/ uint16(xSetOp), uint16(PACKSSDW), - /*4584*/ uint16(xReadSlashR), - /*4585*/ uint16(xArgXmm1), - /*4586*/ uint16(xArgXmm2M128), - /*4587*/ uint16(xMatch), - /*4588*/ uint16(xCondPrefix), 1, - 0x66, 4592, - /*4592*/ uint16(xSetOp), uint16(PUNPCKLQDQ), - /*4594*/ uint16(xReadSlashR), - /*4595*/ uint16(xArgXmm1), - /*4596*/ uint16(xArgXmm2M128), - /*4597*/ uint16(xMatch), - /*4598*/ uint16(xCondPrefix), 1, - 0x66, 4602, - /*4602*/ uint16(xSetOp), uint16(PUNPCKHQDQ), - /*4604*/ uint16(xReadSlashR), - /*4605*/ uint16(xArgXmm1), - /*4606*/ uint16(xArgXmm2M128), - /*4607*/ uint16(xMatch), - /*4608*/ uint16(xCondIs64), 4611, 4649, - /*4611*/ uint16(xCondPrefix), 2, - 0x66, 4633, - 0x0, 4617, - /*4617*/ uint16(xCondDataSize), 4621, 4627, 0, - /*4621*/ uint16(xSetOp), uint16(MOVD), - /*4623*/ uint16(xReadSlashR), - /*4624*/ uint16(xArgMm), - /*4625*/ uint16(xArgRM32), - /*4626*/ uint16(xMatch), - /*4627*/ uint16(xSetOp), uint16(MOVD), - /*4629*/ uint16(xReadSlashR), - /*4630*/ uint16(xArgMm), - /*4631*/ uint16(xArgRM32), - /*4632*/ uint16(xMatch), - /*4633*/ uint16(xCondDataSize), 4637, 4643, 0, - /*4637*/ uint16(xSetOp), uint16(MOVD), - /*4639*/ uint16(xReadSlashR), - /*4640*/ uint16(xArgXmm), - /*4641*/ uint16(xArgRM32), - /*4642*/ uint16(xMatch), - /*4643*/ uint16(xSetOp), uint16(MOVD), - /*4645*/ uint16(xReadSlashR), - /*4646*/ uint16(xArgXmm), - /*4647*/ uint16(xArgRM32), - /*4648*/ uint16(xMatch), - /*4649*/ uint16(xCondPrefix), 2, - 0x66, 4665, - 0x0, 4655, - /*4655*/ uint16(xCondDataSize), 4621, 4627, 4659, - /*4659*/ uint16(xSetOp), uint16(MOVQ), - /*4661*/ uint16(xReadSlashR), - /*4662*/ uint16(xArgMm), - /*4663*/ uint16(xArgRM64), - /*4664*/ uint16(xMatch), - /*4665*/ uint16(xCondDataSize), 4637, 4643, 4669, - /*4669*/ uint16(xSetOp), uint16(MOVQ), - /*4671*/ uint16(xReadSlashR), - /*4672*/ uint16(xArgXmm), - /*4673*/ uint16(xArgRM64), - /*4674*/ uint16(xMatch), - /*4675*/ uint16(xCondPrefix), 3, - 0xF3, 4695, - 0x66, 4689, - 0x0, 4683, - /*4683*/ uint16(xSetOp), uint16(MOVQ), - /*4685*/ uint16(xReadSlashR), - /*4686*/ uint16(xArgMm), - /*4687*/ uint16(xArgMmM64), - /*4688*/ uint16(xMatch), - /*4689*/ uint16(xSetOp), uint16(MOVDQA), - /*4691*/ uint16(xReadSlashR), - /*4692*/ uint16(xArgXmm1), - /*4693*/ uint16(xArgXmm2M128), - /*4694*/ uint16(xMatch), - /*4695*/ uint16(xSetOp), uint16(MOVDQU), - /*4697*/ uint16(xReadSlashR), - /*4698*/ uint16(xArgXmm1), - /*4699*/ uint16(xArgXmm2M128), - /*4700*/ uint16(xMatch), - /*4701*/ uint16(xCondPrefix), 4, - 0xF3, 4735, - 0xF2, 4727, - 0x66, 4719, - 0x0, 4711, - /*4711*/ uint16(xSetOp), uint16(PSHUFW), - /*4713*/ uint16(xReadSlashR), - /*4714*/ uint16(xReadIb), - /*4715*/ uint16(xArgMm1), - /*4716*/ uint16(xArgMm2M64), - /*4717*/ uint16(xArgImm8u), - /*4718*/ uint16(xMatch), - /*4719*/ uint16(xSetOp), uint16(PSHUFD), - /*4721*/ uint16(xReadSlashR), - /*4722*/ uint16(xReadIb), - /*4723*/ uint16(xArgXmm1), - /*4724*/ uint16(xArgXmm2M128), - /*4725*/ uint16(xArgImm8u), - /*4726*/ uint16(xMatch), - /*4727*/ uint16(xSetOp), uint16(PSHUFLW), - /*4729*/ uint16(xReadSlashR), - /*4730*/ uint16(xReadIb), - /*4731*/ uint16(xArgXmm1), - /*4732*/ uint16(xArgXmm2M128), - /*4733*/ uint16(xArgImm8u), - /*4734*/ uint16(xMatch), - /*4735*/ uint16(xSetOp), uint16(PSHUFHW), - /*4737*/ uint16(xReadSlashR), - /*4738*/ uint16(xReadIb), - /*4739*/ uint16(xArgXmm1), - /*4740*/ uint16(xArgXmm2M128), - /*4741*/ uint16(xArgImm8u), - /*4742*/ uint16(xMatch), - /*4743*/ uint16(xCondSlashR), + /*3126*/ uint16(xCondPrefix), 1, + 0x66, 3130, + /*3130*/ uint16(xSetOp), uint16(ROUNDPS), + /*3132*/ uint16(xReadSlashR), + /*3133*/ uint16(xReadIb), + /*3134*/ uint16(xArgXmm1), + /*3135*/ uint16(xArgXmm2M128), + /*3136*/ uint16(xArgImm8u), + /*3137*/ uint16(xMatch), + /*3138*/ uint16(xCondPrefix), 1, + 0x66, 3142, + /*3142*/ uint16(xSetOp), uint16(ROUNDPD), + /*3144*/ uint16(xReadSlashR), + /*3145*/ uint16(xReadIb), + /*3146*/ uint16(xArgXmm1), + /*3147*/ uint16(xArgXmm2M128), + /*3148*/ uint16(xArgImm8u), + /*3149*/ uint16(xMatch), + /*3150*/ uint16(xCondPrefix), 1, + 0x66, 3154, + /*3154*/ uint16(xSetOp), uint16(ROUNDSS), + /*3156*/ uint16(xReadSlashR), + /*3157*/ uint16(xReadIb), + /*3158*/ uint16(xArgXmm1), + /*3159*/ uint16(xArgXmm2M32), + /*3160*/ uint16(xArgImm8u), + /*3161*/ uint16(xMatch), + /*3162*/ uint16(xCondPrefix), 1, + 0x66, 3166, + /*3166*/ uint16(xSetOp), uint16(ROUNDSD), + /*3168*/ uint16(xReadSlashR), + /*3169*/ uint16(xReadIb), + /*3170*/ uint16(xArgXmm1), + /*3171*/ uint16(xArgXmm2M64), + /*3172*/ uint16(xArgImm8u), + /*3173*/ uint16(xMatch), + /*3174*/ uint16(xCondPrefix), 1, + 0x66, 3178, + /*3178*/ uint16(xSetOp), uint16(BLENDPS), + /*3180*/ uint16(xReadSlashR), + /*3181*/ uint16(xReadIb), + /*3182*/ uint16(xArgXmm1), + /*3183*/ uint16(xArgXmm2M128), + /*3184*/ uint16(xArgImm8u), + /*3185*/ uint16(xMatch), + /*3186*/ uint16(xCondPrefix), 1, + 0x66, 3190, + /*3190*/ uint16(xSetOp), uint16(BLENDPD), + /*3192*/ uint16(xReadSlashR), + /*3193*/ uint16(xReadIb), + /*3194*/ uint16(xArgXmm1), + /*3195*/ uint16(xArgXmm2M128), + /*3196*/ uint16(xArgImm8u), + /*3197*/ uint16(xMatch), + /*3198*/ uint16(xCondPrefix), 1, + 0x66, 3202, + /*3202*/ uint16(xSetOp), uint16(PBLENDW), + /*3204*/ uint16(xReadSlashR), + /*3205*/ uint16(xReadIb), + /*3206*/ uint16(xArgXmm1), + /*3207*/ uint16(xArgXmm2M128), + /*3208*/ uint16(xArgImm8u), + /*3209*/ uint16(xMatch), + /*3210*/ uint16(xCondPrefix), 2, + 0x66, 3224, + 0x0, 3216, + /*3216*/ uint16(xSetOp), uint16(PALIGNR), + /*3218*/ uint16(xReadSlashR), + /*3219*/ uint16(xReadIb), + /*3220*/ uint16(xArgMm1), + /*3221*/ uint16(xArgMm2M64), + /*3222*/ uint16(xArgImm8u), + /*3223*/ uint16(xMatch), + /*3224*/ uint16(xSetOp), uint16(PALIGNR), + /*3226*/ uint16(xReadSlashR), + /*3227*/ uint16(xReadIb), + /*3228*/ uint16(xArgXmm1), + /*3229*/ uint16(xArgXmm2M128), + /*3230*/ uint16(xArgImm8u), + /*3231*/ uint16(xMatch), + /*3232*/ uint16(xCondPrefix), 1, + 0x66, 3236, + /*3236*/ uint16(xSetOp), uint16(PEXTRB), + /*3238*/ uint16(xReadSlashR), + /*3239*/ uint16(xReadIb), + /*3240*/ uint16(xArgR32M8), + /*3241*/ uint16(xArgXmm1), + /*3242*/ uint16(xArgImm8u), + /*3243*/ uint16(xMatch), + /*3244*/ uint16(xCondPrefix), 1, + 0x66, 3248, + /*3248*/ uint16(xSetOp), uint16(PEXTRW), + /*3250*/ uint16(xReadSlashR), + /*3251*/ uint16(xReadIb), + /*3252*/ uint16(xArgR32M16), + /*3253*/ uint16(xArgXmm1), + /*3254*/ uint16(xArgImm8u), + /*3255*/ uint16(xMatch), + /*3256*/ uint16(xCondIs64), 3259, 3283, + /*3259*/ uint16(xCondPrefix), 1, + 0x66, 3263, + /*3263*/ uint16(xCondDataSize), 3267, 3275, 0, + /*3267*/ uint16(xSetOp), uint16(PEXTRD), + /*3269*/ uint16(xReadSlashR), + /*3270*/ uint16(xReadIb), + /*3271*/ uint16(xArgRM32), + /*3272*/ uint16(xArgXmm1), + /*3273*/ uint16(xArgImm8u), + /*3274*/ uint16(xMatch), + /*3275*/ uint16(xSetOp), uint16(PEXTRD), + /*3277*/ uint16(xReadSlashR), + /*3278*/ uint16(xReadIb), + /*3279*/ uint16(xArgRM32), + /*3280*/ uint16(xArgXmm1), + /*3281*/ uint16(xArgImm8u), + /*3282*/ uint16(xMatch), + /*3283*/ uint16(xCondPrefix), 1, + 0x66, 3287, + /*3287*/ uint16(xCondDataSize), 3267, 3275, 3291, + /*3291*/ uint16(xSetOp), uint16(PEXTRQ), + /*3293*/ uint16(xReadSlashR), + /*3294*/ uint16(xReadIb), + /*3295*/ uint16(xArgRM64), + /*3296*/ uint16(xArgXmm1), + /*3297*/ uint16(xArgImm8u), + /*3298*/ uint16(xMatch), + /*3299*/ uint16(xCondPrefix), 1, + 0x66, 3303, + /*3303*/ uint16(xSetOp), uint16(EXTRACTPS), + /*3305*/ uint16(xReadSlashR), + /*3306*/ uint16(xReadIb), + /*3307*/ uint16(xArgRM32), + /*3308*/ uint16(xArgXmm1), + /*3309*/ uint16(xArgImm8u), + /*3310*/ uint16(xMatch), + /*3311*/ uint16(xCondPrefix), 1, + 0x66, 3315, + /*3315*/ uint16(xSetOp), uint16(PINSRB), + /*3317*/ uint16(xReadSlashR), + /*3318*/ uint16(xReadIb), + /*3319*/ uint16(xArgXmm1), + /*3320*/ uint16(xArgR32M8), + /*3321*/ uint16(xArgImm8u), + /*3322*/ uint16(xMatch), + /*3323*/ uint16(xCondPrefix), 1, + 0x66, 3327, + /*3327*/ uint16(xSetOp), uint16(INSERTPS), + /*3329*/ uint16(xReadSlashR), + /*3330*/ uint16(xReadIb), + /*3331*/ uint16(xArgXmm1), + /*3332*/ uint16(xArgXmm2M32), + /*3333*/ uint16(xArgImm8u), + /*3334*/ uint16(xMatch), + /*3335*/ uint16(xCondIs64), 3338, 3362, + /*3338*/ uint16(xCondPrefix), 1, + 0x66, 3342, + /*3342*/ uint16(xCondDataSize), 3346, 3354, 0, + /*3346*/ uint16(xSetOp), uint16(PINSRD), + /*3348*/ uint16(xReadSlashR), + /*3349*/ uint16(xReadIb), + /*3350*/ uint16(xArgXmm1), + /*3351*/ uint16(xArgRM32), + /*3352*/ uint16(xArgImm8u), + /*3353*/ uint16(xMatch), + /*3354*/ uint16(xSetOp), uint16(PINSRD), + /*3356*/ uint16(xReadSlashR), + /*3357*/ uint16(xReadIb), + /*3358*/ uint16(xArgXmm1), + /*3359*/ uint16(xArgRM32), + /*3360*/ uint16(xArgImm8u), + /*3361*/ uint16(xMatch), + /*3362*/ uint16(xCondPrefix), 1, + 0x66, 3366, + /*3366*/ uint16(xCondDataSize), 3346, 3354, 3370, + /*3370*/ uint16(xSetOp), uint16(PINSRQ), + /*3372*/ uint16(xReadSlashR), + /*3373*/ uint16(xReadIb), + /*3374*/ uint16(xArgXmm1), + /*3375*/ uint16(xArgRM64), + /*3376*/ uint16(xArgImm8u), + /*3377*/ uint16(xMatch), + /*3378*/ uint16(xCondPrefix), 1, + 0x66, 3382, + /*3382*/ uint16(xSetOp), uint16(DPPS), + /*3384*/ uint16(xReadSlashR), + /*3385*/ uint16(xReadIb), + /*3386*/ uint16(xArgXmm1), + /*3387*/ uint16(xArgXmm2M128), + /*3388*/ uint16(xArgImm8u), + /*3389*/ uint16(xMatch), + /*3390*/ uint16(xCondPrefix), 1, + 0x66, 3394, + /*3394*/ uint16(xSetOp), uint16(DPPD), + /*3396*/ uint16(xReadSlashR), + /*3397*/ uint16(xReadIb), + /*3398*/ uint16(xArgXmm1), + /*3399*/ uint16(xArgXmm2M128), + /*3400*/ uint16(xArgImm8u), + /*3401*/ uint16(xMatch), + /*3402*/ uint16(xCondPrefix), 1, + 0x66, 3406, + /*3406*/ uint16(xSetOp), uint16(MPSADBW), + /*3408*/ uint16(xReadSlashR), + /*3409*/ uint16(xReadIb), + /*3410*/ uint16(xArgXmm1), + /*3411*/ uint16(xArgXmm2M128), + /*3412*/ uint16(xArgImm8u), + /*3413*/ uint16(xMatch), + /*3414*/ uint16(xCondPrefix), 1, + 0x66, 3418, + /*3418*/ uint16(xSetOp), uint16(PCLMULQDQ), + /*3420*/ uint16(xReadSlashR), + /*3421*/ uint16(xReadIb), + /*3422*/ uint16(xArgXmm1), + /*3423*/ uint16(xArgXmm2M128), + /*3424*/ uint16(xArgImm8u), + /*3425*/ uint16(xMatch), + /*3426*/ uint16(xCondPrefix), 1, + 0x66, 3430, + /*3430*/ uint16(xSetOp), uint16(PCMPESTRM), + /*3432*/ uint16(xReadSlashR), + /*3433*/ uint16(xReadIb), + /*3434*/ uint16(xArgXmm1), + /*3435*/ uint16(xArgXmm2M128), + /*3436*/ uint16(xArgImm8u), + /*3437*/ uint16(xMatch), + /*3438*/ uint16(xCondPrefix), 1, + 0x66, 3442, + /*3442*/ uint16(xSetOp), uint16(PCMPESTRI), + /*3444*/ uint16(xReadSlashR), + /*3445*/ uint16(xReadIb), + /*3446*/ uint16(xArgXmm1), + /*3447*/ uint16(xArgXmm2M128), + /*3448*/ uint16(xArgImm8u), + /*3449*/ uint16(xMatch), + /*3450*/ uint16(xCondPrefix), 1, + 0x66, 3454, + /*3454*/ uint16(xSetOp), uint16(PCMPISTRM), + /*3456*/ uint16(xReadSlashR), + /*3457*/ uint16(xReadIb), + /*3458*/ uint16(xArgXmm1), + /*3459*/ uint16(xArgXmm2M128), + /*3460*/ uint16(xArgImm8u), + /*3461*/ uint16(xMatch), + /*3462*/ uint16(xCondPrefix), 1, + 0x66, 3466, + /*3466*/ uint16(xSetOp), uint16(PCMPISTRI), + /*3468*/ uint16(xReadSlashR), + /*3469*/ uint16(xReadIb), + /*3470*/ uint16(xArgXmm1), + /*3471*/ uint16(xArgXmm2M128), + /*3472*/ uint16(xArgImm8u), + /*3473*/ uint16(xMatch), + /*3474*/ uint16(xCondPrefix), 1, + 0x66, 3478, + /*3478*/ uint16(xSetOp), uint16(AESKEYGENASSIST), + /*3480*/ uint16(xReadSlashR), + /*3481*/ uint16(xReadIb), + /*3482*/ uint16(xArgXmm1), + /*3483*/ uint16(xArgXmm2M128), + /*3484*/ uint16(xArgImm8u), + /*3485*/ uint16(xMatch), + /*3486*/ uint16(xCondIs64), 3489, 3505, + /*3489*/ uint16(xCondDataSize), 3493, 3499, 0, + /*3493*/ uint16(xSetOp), uint16(CMOVO), + /*3495*/ uint16(xReadSlashR), + /*3496*/ uint16(xArgR16), + /*3497*/ uint16(xArgRM16), + /*3498*/ uint16(xMatch), + /*3499*/ uint16(xSetOp), uint16(CMOVO), + /*3501*/ uint16(xReadSlashR), + /*3502*/ uint16(xArgR32), + /*3503*/ uint16(xArgRM32), + /*3504*/ uint16(xMatch), + /*3505*/ uint16(xCondDataSize), 3493, 3499, 3509, + /*3509*/ uint16(xSetOp), uint16(CMOVO), + /*3511*/ uint16(xReadSlashR), + /*3512*/ uint16(xArgR64), + /*3513*/ uint16(xArgRM64), + /*3514*/ uint16(xMatch), + /*3515*/ uint16(xCondIs64), 3518, 3534, + /*3518*/ uint16(xCondDataSize), 3522, 3528, 0, + /*3522*/ uint16(xSetOp), uint16(CMOVNO), + /*3524*/ uint16(xReadSlashR), + /*3525*/ uint16(xArgR16), + /*3526*/ uint16(xArgRM16), + /*3527*/ uint16(xMatch), + /*3528*/ uint16(xSetOp), uint16(CMOVNO), + /*3530*/ uint16(xReadSlashR), + /*3531*/ uint16(xArgR32), + /*3532*/ uint16(xArgRM32), + /*3533*/ uint16(xMatch), + /*3534*/ uint16(xCondDataSize), 3522, 3528, 3538, + /*3538*/ uint16(xSetOp), uint16(CMOVNO), + /*3540*/ uint16(xReadSlashR), + /*3541*/ uint16(xArgR64), + /*3542*/ uint16(xArgRM64), + /*3543*/ uint16(xMatch), + /*3544*/ uint16(xCondIs64), 3547, 3563, + /*3547*/ uint16(xCondDataSize), 3551, 3557, 0, + /*3551*/ uint16(xSetOp), uint16(CMOVB), + /*3553*/ uint16(xReadSlashR), + /*3554*/ uint16(xArgR16), + /*3555*/ uint16(xArgRM16), + /*3556*/ uint16(xMatch), + /*3557*/ uint16(xSetOp), uint16(CMOVB), + /*3559*/ uint16(xReadSlashR), + /*3560*/ uint16(xArgR32), + /*3561*/ uint16(xArgRM32), + /*3562*/ uint16(xMatch), + /*3563*/ uint16(xCondDataSize), 3551, 3557, 3567, + /*3567*/ uint16(xSetOp), uint16(CMOVB), + /*3569*/ uint16(xReadSlashR), + /*3570*/ uint16(xArgR64), + /*3571*/ uint16(xArgRM64), + /*3572*/ uint16(xMatch), + /*3573*/ uint16(xCondIs64), 3576, 3592, + /*3576*/ uint16(xCondDataSize), 3580, 3586, 0, + /*3580*/ uint16(xSetOp), uint16(CMOVAE), + /*3582*/ uint16(xReadSlashR), + /*3583*/ uint16(xArgR16), + /*3584*/ uint16(xArgRM16), + /*3585*/ uint16(xMatch), + /*3586*/ uint16(xSetOp), uint16(CMOVAE), + /*3588*/ uint16(xReadSlashR), + /*3589*/ uint16(xArgR32), + /*3590*/ uint16(xArgRM32), + /*3591*/ uint16(xMatch), + /*3592*/ uint16(xCondDataSize), 3580, 3586, 3596, + /*3596*/ uint16(xSetOp), uint16(CMOVAE), + /*3598*/ uint16(xReadSlashR), + /*3599*/ uint16(xArgR64), + /*3600*/ uint16(xArgRM64), + /*3601*/ uint16(xMatch), + /*3602*/ uint16(xCondIs64), 3605, 3621, + /*3605*/ uint16(xCondDataSize), 3609, 3615, 0, + /*3609*/ uint16(xSetOp), uint16(CMOVE), + /*3611*/ uint16(xReadSlashR), + /*3612*/ uint16(xArgR16), + /*3613*/ uint16(xArgRM16), + /*3614*/ uint16(xMatch), + /*3615*/ uint16(xSetOp), uint16(CMOVE), + /*3617*/ uint16(xReadSlashR), + /*3618*/ uint16(xArgR32), + /*3619*/ uint16(xArgRM32), + /*3620*/ uint16(xMatch), + /*3621*/ uint16(xCondDataSize), 3609, 3615, 3625, + /*3625*/ uint16(xSetOp), uint16(CMOVE), + /*3627*/ uint16(xReadSlashR), + /*3628*/ uint16(xArgR64), + /*3629*/ uint16(xArgRM64), + /*3630*/ uint16(xMatch), + /*3631*/ uint16(xCondIs64), 3634, 3650, + /*3634*/ uint16(xCondDataSize), 3638, 3644, 0, + /*3638*/ uint16(xSetOp), uint16(CMOVNE), + /*3640*/ uint16(xReadSlashR), + /*3641*/ uint16(xArgR16), + /*3642*/ uint16(xArgRM16), + /*3643*/ uint16(xMatch), + /*3644*/ uint16(xSetOp), uint16(CMOVNE), + /*3646*/ uint16(xReadSlashR), + /*3647*/ uint16(xArgR32), + /*3648*/ uint16(xArgRM32), + /*3649*/ uint16(xMatch), + /*3650*/ uint16(xCondDataSize), 3638, 3644, 3654, + /*3654*/ uint16(xSetOp), uint16(CMOVNE), + /*3656*/ uint16(xReadSlashR), + /*3657*/ uint16(xArgR64), + /*3658*/ uint16(xArgRM64), + /*3659*/ uint16(xMatch), + /*3660*/ uint16(xCondIs64), 3663, 3679, + /*3663*/ uint16(xCondDataSize), 3667, 3673, 0, + /*3667*/ uint16(xSetOp), uint16(CMOVBE), + /*3669*/ uint16(xReadSlashR), + /*3670*/ uint16(xArgR16), + /*3671*/ uint16(xArgRM16), + /*3672*/ uint16(xMatch), + /*3673*/ uint16(xSetOp), uint16(CMOVBE), + /*3675*/ uint16(xReadSlashR), + /*3676*/ uint16(xArgR32), + /*3677*/ uint16(xArgRM32), + /*3678*/ uint16(xMatch), + /*3679*/ uint16(xCondDataSize), 3667, 3673, 3683, + /*3683*/ uint16(xSetOp), uint16(CMOVBE), + /*3685*/ uint16(xReadSlashR), + /*3686*/ uint16(xArgR64), + /*3687*/ uint16(xArgRM64), + /*3688*/ uint16(xMatch), + /*3689*/ uint16(xCondIs64), 3692, 3708, + /*3692*/ uint16(xCondDataSize), 3696, 3702, 0, + /*3696*/ uint16(xSetOp), uint16(CMOVA), + /*3698*/ uint16(xReadSlashR), + /*3699*/ uint16(xArgR16), + /*3700*/ uint16(xArgRM16), + /*3701*/ uint16(xMatch), + /*3702*/ uint16(xSetOp), uint16(CMOVA), + /*3704*/ uint16(xReadSlashR), + /*3705*/ uint16(xArgR32), + /*3706*/ uint16(xArgRM32), + /*3707*/ uint16(xMatch), + /*3708*/ uint16(xCondDataSize), 3696, 3702, 3712, + /*3712*/ uint16(xSetOp), uint16(CMOVA), + /*3714*/ uint16(xReadSlashR), + /*3715*/ uint16(xArgR64), + /*3716*/ uint16(xArgRM64), + /*3717*/ uint16(xMatch), + /*3718*/ uint16(xCondIs64), 3721, 3737, + /*3721*/ uint16(xCondDataSize), 3725, 3731, 0, + /*3725*/ uint16(xSetOp), uint16(CMOVS), + /*3727*/ uint16(xReadSlashR), + /*3728*/ uint16(xArgR16), + /*3729*/ uint16(xArgRM16), + /*3730*/ uint16(xMatch), + /*3731*/ uint16(xSetOp), uint16(CMOVS), + /*3733*/ uint16(xReadSlashR), + /*3734*/ uint16(xArgR32), + /*3735*/ uint16(xArgRM32), + /*3736*/ uint16(xMatch), + /*3737*/ uint16(xCondDataSize), 3725, 3731, 3741, + /*3741*/ uint16(xSetOp), uint16(CMOVS), + /*3743*/ uint16(xReadSlashR), + /*3744*/ uint16(xArgR64), + /*3745*/ uint16(xArgRM64), + /*3746*/ uint16(xMatch), + /*3747*/ uint16(xCondIs64), 3750, 3766, + /*3750*/ uint16(xCondDataSize), 3754, 3760, 0, + /*3754*/ uint16(xSetOp), uint16(CMOVNS), + /*3756*/ uint16(xReadSlashR), + /*3757*/ uint16(xArgR16), + /*3758*/ uint16(xArgRM16), + /*3759*/ uint16(xMatch), + /*3760*/ uint16(xSetOp), uint16(CMOVNS), + /*3762*/ uint16(xReadSlashR), + /*3763*/ uint16(xArgR32), + /*3764*/ uint16(xArgRM32), + /*3765*/ uint16(xMatch), + /*3766*/ uint16(xCondDataSize), 3754, 3760, 3770, + /*3770*/ uint16(xSetOp), uint16(CMOVNS), + /*3772*/ uint16(xReadSlashR), + /*3773*/ uint16(xArgR64), + /*3774*/ uint16(xArgRM64), + /*3775*/ uint16(xMatch), + /*3776*/ uint16(xCondIs64), 3779, 3795, + /*3779*/ uint16(xCondDataSize), 3783, 3789, 0, + /*3783*/ uint16(xSetOp), uint16(CMOVP), + /*3785*/ uint16(xReadSlashR), + /*3786*/ uint16(xArgR16), + /*3787*/ uint16(xArgRM16), + /*3788*/ uint16(xMatch), + /*3789*/ uint16(xSetOp), uint16(CMOVP), + /*3791*/ uint16(xReadSlashR), + /*3792*/ uint16(xArgR32), + /*3793*/ uint16(xArgRM32), + /*3794*/ uint16(xMatch), + /*3795*/ uint16(xCondDataSize), 3783, 3789, 3799, + /*3799*/ uint16(xSetOp), uint16(CMOVP), + /*3801*/ uint16(xReadSlashR), + /*3802*/ uint16(xArgR64), + /*3803*/ uint16(xArgRM64), + /*3804*/ uint16(xMatch), + /*3805*/ uint16(xCondIs64), 3808, 3824, + /*3808*/ uint16(xCondDataSize), 3812, 3818, 0, + /*3812*/ uint16(xSetOp), uint16(CMOVNP), + /*3814*/ uint16(xReadSlashR), + /*3815*/ uint16(xArgR16), + /*3816*/ uint16(xArgRM16), + /*3817*/ uint16(xMatch), + /*3818*/ uint16(xSetOp), uint16(CMOVNP), + /*3820*/ uint16(xReadSlashR), + /*3821*/ uint16(xArgR32), + /*3822*/ uint16(xArgRM32), + /*3823*/ uint16(xMatch), + /*3824*/ uint16(xCondDataSize), 3812, 3818, 3828, + /*3828*/ uint16(xSetOp), uint16(CMOVNP), + /*3830*/ uint16(xReadSlashR), + /*3831*/ uint16(xArgR64), + /*3832*/ uint16(xArgRM64), + /*3833*/ uint16(xMatch), + /*3834*/ uint16(xCondIs64), 3837, 3853, + /*3837*/ uint16(xCondDataSize), 3841, 3847, 0, + /*3841*/ uint16(xSetOp), uint16(CMOVL), + /*3843*/ uint16(xReadSlashR), + /*3844*/ uint16(xArgR16), + /*3845*/ uint16(xArgRM16), + /*3846*/ uint16(xMatch), + /*3847*/ uint16(xSetOp), uint16(CMOVL), + /*3849*/ uint16(xReadSlashR), + /*3850*/ uint16(xArgR32), + /*3851*/ uint16(xArgRM32), + /*3852*/ uint16(xMatch), + /*3853*/ uint16(xCondDataSize), 3841, 3847, 3857, + /*3857*/ uint16(xSetOp), uint16(CMOVL), + /*3859*/ uint16(xReadSlashR), + /*3860*/ uint16(xArgR64), + /*3861*/ uint16(xArgRM64), + /*3862*/ uint16(xMatch), + /*3863*/ uint16(xCondIs64), 3866, 3882, + /*3866*/ uint16(xCondDataSize), 3870, 3876, 0, + /*3870*/ uint16(xSetOp), uint16(CMOVGE), + /*3872*/ uint16(xReadSlashR), + /*3873*/ uint16(xArgR16), + /*3874*/ uint16(xArgRM16), + /*3875*/ uint16(xMatch), + /*3876*/ uint16(xSetOp), uint16(CMOVGE), + /*3878*/ uint16(xReadSlashR), + /*3879*/ uint16(xArgR32), + /*3880*/ uint16(xArgRM32), + /*3881*/ uint16(xMatch), + /*3882*/ uint16(xCondDataSize), 3870, 3876, 3886, + /*3886*/ uint16(xSetOp), uint16(CMOVGE), + /*3888*/ uint16(xReadSlashR), + /*3889*/ uint16(xArgR64), + /*3890*/ uint16(xArgRM64), + /*3891*/ uint16(xMatch), + /*3892*/ uint16(xCondIs64), 3895, 3911, + /*3895*/ uint16(xCondDataSize), 3899, 3905, 0, + /*3899*/ uint16(xSetOp), uint16(CMOVLE), + /*3901*/ uint16(xReadSlashR), + /*3902*/ uint16(xArgR16), + /*3903*/ uint16(xArgRM16), + /*3904*/ uint16(xMatch), + /*3905*/ uint16(xSetOp), uint16(CMOVLE), + /*3907*/ uint16(xReadSlashR), + /*3908*/ uint16(xArgR32), + /*3909*/ uint16(xArgRM32), + /*3910*/ uint16(xMatch), + /*3911*/ uint16(xCondDataSize), 3899, 3905, 3915, + /*3915*/ uint16(xSetOp), uint16(CMOVLE), + /*3917*/ uint16(xReadSlashR), + /*3918*/ uint16(xArgR64), + /*3919*/ uint16(xArgRM64), + /*3920*/ uint16(xMatch), + /*3921*/ uint16(xCondIs64), 3924, 3940, + /*3924*/ uint16(xCondDataSize), 3928, 3934, 0, + /*3928*/ uint16(xSetOp), uint16(CMOVG), + /*3930*/ uint16(xReadSlashR), + /*3931*/ uint16(xArgR16), + /*3932*/ uint16(xArgRM16), + /*3933*/ uint16(xMatch), + /*3934*/ uint16(xSetOp), uint16(CMOVG), + /*3936*/ uint16(xReadSlashR), + /*3937*/ uint16(xArgR32), + /*3938*/ uint16(xArgRM32), + /*3939*/ uint16(xMatch), + /*3940*/ uint16(xCondDataSize), 3928, 3934, 3944, + /*3944*/ uint16(xSetOp), uint16(CMOVG), + /*3946*/ uint16(xReadSlashR), + /*3947*/ uint16(xArgR64), + /*3948*/ uint16(xArgRM64), + /*3949*/ uint16(xMatch), + /*3950*/ uint16(xCondPrefix), 2, + 0x66, 3962, + 0x0, 3956, + /*3956*/ uint16(xSetOp), uint16(MOVMSKPS), + /*3958*/ uint16(xReadSlashR), + /*3959*/ uint16(xArgR32), + /*3960*/ uint16(xArgXmm2), + /*3961*/ uint16(xMatch), + /*3962*/ uint16(xSetOp), uint16(MOVMSKPD), + /*3964*/ uint16(xReadSlashR), + /*3965*/ uint16(xArgR32), + /*3966*/ uint16(xArgXmm2), + /*3967*/ uint16(xMatch), + /*3968*/ uint16(xCondPrefix), 4, + 0xF3, 3996, + 0xF2, 3990, + 0x66, 3984, + 0x0, 3978, + /*3978*/ uint16(xSetOp), uint16(SQRTPS), + /*3980*/ uint16(xReadSlashR), + /*3981*/ uint16(xArgXmm1), + /*3982*/ uint16(xArgXmm2M128), + /*3983*/ uint16(xMatch), + /*3984*/ uint16(xSetOp), uint16(SQRTPD), + /*3986*/ uint16(xReadSlashR), + /*3987*/ uint16(xArgXmm1), + /*3988*/ uint16(xArgXmm2M128), + /*3989*/ uint16(xMatch), + /*3990*/ uint16(xSetOp), uint16(SQRTSD), + /*3992*/ uint16(xReadSlashR), + /*3993*/ uint16(xArgXmm1), + /*3994*/ uint16(xArgXmm2M64), + /*3995*/ uint16(xMatch), + /*3996*/ uint16(xSetOp), uint16(SQRTSS), + /*3998*/ uint16(xReadSlashR), + /*3999*/ uint16(xArgXmm1), + /*4000*/ uint16(xArgXmm2M32), + /*4001*/ uint16(xMatch), + /*4002*/ uint16(xCondPrefix), 2, + 0xF3, 4014, + 0x0, 4008, + /*4008*/ uint16(xSetOp), uint16(RSQRTPS), + /*4010*/ uint16(xReadSlashR), + /*4011*/ uint16(xArgXmm1), + /*4012*/ uint16(xArgXmm2M128), + /*4013*/ uint16(xMatch), + /*4014*/ uint16(xSetOp), uint16(RSQRTSS), + /*4016*/ uint16(xReadSlashR), + /*4017*/ uint16(xArgXmm1), + /*4018*/ uint16(xArgXmm2M32), + /*4019*/ uint16(xMatch), + /*4020*/ uint16(xCondPrefix), 2, + 0xF3, 4032, + 0x0, 4026, + /*4026*/ uint16(xSetOp), uint16(RCPPS), + /*4028*/ uint16(xReadSlashR), + /*4029*/ uint16(xArgXmm1), + /*4030*/ uint16(xArgXmm2M128), + /*4031*/ uint16(xMatch), + /*4032*/ uint16(xSetOp), uint16(RCPSS), + /*4034*/ uint16(xReadSlashR), + /*4035*/ uint16(xArgXmm1), + /*4036*/ uint16(xArgXmm2M32), + /*4037*/ uint16(xMatch), + /*4038*/ uint16(xCondPrefix), 2, + 0x66, 4050, + 0x0, 4044, + /*4044*/ uint16(xSetOp), uint16(ANDPS), + /*4046*/ uint16(xReadSlashR), + /*4047*/ uint16(xArgXmm1), + /*4048*/ uint16(xArgXmm2M128), + /*4049*/ uint16(xMatch), + /*4050*/ uint16(xSetOp), uint16(ANDPD), + /*4052*/ uint16(xReadSlashR), + /*4053*/ uint16(xArgXmm1), + /*4054*/ uint16(xArgXmm2M128), + /*4055*/ uint16(xMatch), + /*4056*/ uint16(xCondPrefix), 2, + 0x66, 4068, + 0x0, 4062, + /*4062*/ uint16(xSetOp), uint16(ANDNPS), + /*4064*/ uint16(xReadSlashR), + /*4065*/ uint16(xArgXmm1), + /*4066*/ uint16(xArgXmm2M128), + /*4067*/ uint16(xMatch), + /*4068*/ uint16(xSetOp), uint16(ANDNPD), + /*4070*/ uint16(xReadSlashR), + /*4071*/ uint16(xArgXmm1), + /*4072*/ uint16(xArgXmm2M128), + /*4073*/ uint16(xMatch), + /*4074*/ uint16(xCondPrefix), 2, + 0x66, 4086, + 0x0, 4080, + /*4080*/ uint16(xSetOp), uint16(ORPS), + /*4082*/ uint16(xReadSlashR), + /*4083*/ uint16(xArgXmm1), + /*4084*/ uint16(xArgXmm2M128), + /*4085*/ uint16(xMatch), + /*4086*/ uint16(xSetOp), uint16(ORPD), + /*4088*/ uint16(xReadSlashR), + /*4089*/ uint16(xArgXmm1), + /*4090*/ uint16(xArgXmm2M128), + /*4091*/ uint16(xMatch), + /*4092*/ uint16(xCondPrefix), 2, + 0x66, 4104, + 0x0, 4098, + /*4098*/ uint16(xSetOp), uint16(XORPS), + /*4100*/ uint16(xReadSlashR), + /*4101*/ uint16(xArgXmm1), + /*4102*/ uint16(xArgXmm2M128), + /*4103*/ uint16(xMatch), + /*4104*/ uint16(xSetOp), uint16(XORPD), + /*4106*/ uint16(xReadSlashR), + /*4107*/ uint16(xArgXmm1), + /*4108*/ uint16(xArgXmm2M128), + /*4109*/ uint16(xMatch), + /*4110*/ uint16(xCondPrefix), 4, + 0xF3, 4138, + 0xF2, 4132, + 0x66, 4126, + 0x0, 4120, + /*4120*/ uint16(xSetOp), uint16(ADDPS), + /*4122*/ uint16(xReadSlashR), + /*4123*/ uint16(xArgXmm1), + /*4124*/ uint16(xArgXmm2M128), + /*4125*/ uint16(xMatch), + /*4126*/ uint16(xSetOp), uint16(ADDPD), + /*4128*/ uint16(xReadSlashR), + /*4129*/ uint16(xArgXmm1), + /*4130*/ uint16(xArgXmm2M128), + /*4131*/ uint16(xMatch), + /*4132*/ uint16(xSetOp), uint16(ADDSD), + /*4134*/ uint16(xReadSlashR), + /*4135*/ uint16(xArgXmm1), + /*4136*/ uint16(xArgXmm2M64), + /*4137*/ uint16(xMatch), + /*4138*/ uint16(xSetOp), uint16(ADDSS), + /*4140*/ uint16(xReadSlashR), + /*4141*/ uint16(xArgXmm1), + /*4142*/ uint16(xArgXmm2M32), + /*4143*/ uint16(xMatch), + /*4144*/ uint16(xCondPrefix), 4, + 0xF3, 4172, + 0xF2, 4166, + 0x66, 4160, + 0x0, 4154, + /*4154*/ uint16(xSetOp), uint16(MULPS), + /*4156*/ uint16(xReadSlashR), + /*4157*/ uint16(xArgXmm1), + /*4158*/ uint16(xArgXmm2M128), + /*4159*/ uint16(xMatch), + /*4160*/ uint16(xSetOp), uint16(MULPD), + /*4162*/ uint16(xReadSlashR), + /*4163*/ uint16(xArgXmm1), + /*4164*/ uint16(xArgXmm2M128), + /*4165*/ uint16(xMatch), + /*4166*/ uint16(xSetOp), uint16(MULSD), + /*4168*/ uint16(xReadSlashR), + /*4169*/ uint16(xArgXmm1), + /*4170*/ uint16(xArgXmm2M64), + /*4171*/ uint16(xMatch), + /*4172*/ uint16(xSetOp), uint16(MULSS), + /*4174*/ uint16(xReadSlashR), + /*4175*/ uint16(xArgXmm1), + /*4176*/ uint16(xArgXmm2M32), + /*4177*/ uint16(xMatch), + /*4178*/ uint16(xCondPrefix), 4, + 0xF3, 4206, + 0xF2, 4200, + 0x66, 4194, + 0x0, 4188, + /*4188*/ uint16(xSetOp), uint16(CVTPS2PD), + /*4190*/ uint16(xReadSlashR), + /*4191*/ uint16(xArgXmm1), + /*4192*/ uint16(xArgXmm2M64), + /*4193*/ uint16(xMatch), + /*4194*/ uint16(xSetOp), uint16(CVTPD2PS), + /*4196*/ uint16(xReadSlashR), + /*4197*/ uint16(xArgXmm1), + /*4198*/ uint16(xArgXmm2M128), + /*4199*/ uint16(xMatch), + /*4200*/ uint16(xSetOp), uint16(CVTSD2SS), + /*4202*/ uint16(xReadSlashR), + /*4203*/ uint16(xArgXmm1), + /*4204*/ uint16(xArgXmm2M64), + /*4205*/ uint16(xMatch), + /*4206*/ uint16(xSetOp), uint16(CVTSS2SD), + /*4208*/ uint16(xReadSlashR), + /*4209*/ uint16(xArgXmm1), + /*4210*/ uint16(xArgXmm2M32), + /*4211*/ uint16(xMatch), + /*4212*/ uint16(xCondPrefix), 3, + 0xF3, 4232, + 0x66, 4226, + 0x0, 4220, + /*4220*/ uint16(xSetOp), uint16(CVTDQ2PS), + /*4222*/ uint16(xReadSlashR), + /*4223*/ uint16(xArgXmm1), + /*4224*/ uint16(xArgXmm2M128), + /*4225*/ uint16(xMatch), + /*4226*/ uint16(xSetOp), uint16(CVTPS2DQ), + /*4228*/ uint16(xReadSlashR), + /*4229*/ uint16(xArgXmm1), + /*4230*/ uint16(xArgXmm2M128), + /*4231*/ uint16(xMatch), + /*4232*/ uint16(xSetOp), uint16(CVTTPS2DQ), + /*4234*/ uint16(xReadSlashR), + /*4235*/ uint16(xArgXmm1), + /*4236*/ uint16(xArgXmm2M128), + /*4237*/ uint16(xMatch), + /*4238*/ uint16(xCondPrefix), 4, + 0xF3, 4266, + 0xF2, 4260, + 0x66, 4254, + 0x0, 4248, + /*4248*/ uint16(xSetOp), uint16(SUBPS), + /*4250*/ uint16(xReadSlashR), + /*4251*/ uint16(xArgXmm1), + /*4252*/ uint16(xArgXmm2M128), + /*4253*/ uint16(xMatch), + /*4254*/ uint16(xSetOp), uint16(SUBPD), + /*4256*/ uint16(xReadSlashR), + /*4257*/ uint16(xArgXmm1), + /*4258*/ uint16(xArgXmm2M128), + /*4259*/ uint16(xMatch), + /*4260*/ uint16(xSetOp), uint16(SUBSD), + /*4262*/ uint16(xReadSlashR), + /*4263*/ uint16(xArgXmm1), + /*4264*/ uint16(xArgXmm2M64), + /*4265*/ uint16(xMatch), + /*4266*/ uint16(xSetOp), uint16(SUBSS), + /*4268*/ uint16(xReadSlashR), + /*4269*/ uint16(xArgXmm1), + /*4270*/ uint16(xArgXmm2M32), + /*4271*/ uint16(xMatch), + /*4272*/ uint16(xCondPrefix), 4, + 0xF3, 4300, + 0xF2, 4294, + 0x66, 4288, + 0x0, 4282, + /*4282*/ uint16(xSetOp), uint16(MINPS), + /*4284*/ uint16(xReadSlashR), + /*4285*/ uint16(xArgXmm1), + /*4286*/ uint16(xArgXmm2M128), + /*4287*/ uint16(xMatch), + /*4288*/ uint16(xSetOp), uint16(MINPD), + /*4290*/ uint16(xReadSlashR), + /*4291*/ uint16(xArgXmm1), + /*4292*/ uint16(xArgXmm2M128), + /*4293*/ uint16(xMatch), + /*4294*/ uint16(xSetOp), uint16(MINSD), + /*4296*/ uint16(xReadSlashR), + /*4297*/ uint16(xArgXmm1), + /*4298*/ uint16(xArgXmm2M64), + /*4299*/ uint16(xMatch), + /*4300*/ uint16(xSetOp), uint16(MINSS), + /*4302*/ uint16(xReadSlashR), + /*4303*/ uint16(xArgXmm1), + /*4304*/ uint16(xArgXmm2M32), + /*4305*/ uint16(xMatch), + /*4306*/ uint16(xCondPrefix), 4, + 0xF3, 4334, + 0xF2, 4328, + 0x66, 4322, + 0x0, 4316, + /*4316*/ uint16(xSetOp), uint16(DIVPS), + /*4318*/ uint16(xReadSlashR), + /*4319*/ uint16(xArgXmm1), + /*4320*/ uint16(xArgXmm2M128), + /*4321*/ uint16(xMatch), + /*4322*/ uint16(xSetOp), uint16(DIVPD), + /*4324*/ uint16(xReadSlashR), + /*4325*/ uint16(xArgXmm1), + /*4326*/ uint16(xArgXmm2M128), + /*4327*/ uint16(xMatch), + /*4328*/ uint16(xSetOp), uint16(DIVSD), + /*4330*/ uint16(xReadSlashR), + /*4331*/ uint16(xArgXmm1), + /*4332*/ uint16(xArgXmm2M64), + /*4333*/ uint16(xMatch), + /*4334*/ uint16(xSetOp), uint16(DIVSS), + /*4336*/ uint16(xReadSlashR), + /*4337*/ uint16(xArgXmm1), + /*4338*/ uint16(xArgXmm2M32), + /*4339*/ uint16(xMatch), + /*4340*/ uint16(xCondPrefix), 4, + 0xF3, 4368, + 0xF2, 4362, + 0x66, 4356, + 0x0, 4350, + /*4350*/ uint16(xSetOp), uint16(MAXPS), + /*4352*/ uint16(xReadSlashR), + /*4353*/ uint16(xArgXmm1), + /*4354*/ uint16(xArgXmm2M128), + /*4355*/ uint16(xMatch), + /*4356*/ uint16(xSetOp), uint16(MAXPD), + /*4358*/ uint16(xReadSlashR), + /*4359*/ uint16(xArgXmm1), + /*4360*/ uint16(xArgXmm2M128), + /*4361*/ uint16(xMatch), + /*4362*/ uint16(xSetOp), uint16(MAXSD), + /*4364*/ uint16(xReadSlashR), + /*4365*/ uint16(xArgXmm1), + /*4366*/ uint16(xArgXmm2M64), + /*4367*/ uint16(xMatch), + /*4368*/ uint16(xSetOp), uint16(MAXSS), + /*4370*/ uint16(xReadSlashR), + /*4371*/ uint16(xArgXmm1), + /*4372*/ uint16(xArgXmm2M32), + /*4373*/ uint16(xMatch), + /*4374*/ uint16(xCondPrefix), 2, + 0x66, 4386, + 0x0, 4380, + /*4380*/ uint16(xSetOp), uint16(PUNPCKLBW), + /*4382*/ uint16(xReadSlashR), + /*4383*/ uint16(xArgMm), + /*4384*/ uint16(xArgMmM32), + /*4385*/ uint16(xMatch), + /*4386*/ uint16(xSetOp), uint16(PUNPCKLBW), + /*4388*/ uint16(xReadSlashR), + /*4389*/ uint16(xArgXmm1), + /*4390*/ uint16(xArgXmm2M128), + /*4391*/ uint16(xMatch), + /*4392*/ uint16(xCondPrefix), 2, + 0x66, 4404, + 0x0, 4398, + /*4398*/ uint16(xSetOp), uint16(PUNPCKLWD), + /*4400*/ uint16(xReadSlashR), + /*4401*/ uint16(xArgMm), + /*4402*/ uint16(xArgMmM32), + /*4403*/ uint16(xMatch), + /*4404*/ uint16(xSetOp), uint16(PUNPCKLWD), + /*4406*/ uint16(xReadSlashR), + /*4407*/ uint16(xArgXmm1), + /*4408*/ uint16(xArgXmm2M128), + /*4409*/ uint16(xMatch), + /*4410*/ uint16(xCondPrefix), 2, + 0x66, 4422, + 0x0, 4416, + /*4416*/ uint16(xSetOp), uint16(PUNPCKLDQ), + /*4418*/ uint16(xReadSlashR), + /*4419*/ uint16(xArgMm), + /*4420*/ uint16(xArgMmM32), + /*4421*/ uint16(xMatch), + /*4422*/ uint16(xSetOp), uint16(PUNPCKLDQ), + /*4424*/ uint16(xReadSlashR), + /*4425*/ uint16(xArgXmm1), + /*4426*/ uint16(xArgXmm2M128), + /*4427*/ uint16(xMatch), + /*4428*/ uint16(xCondPrefix), 2, + 0x66, 4440, + 0x0, 4434, + /*4434*/ uint16(xSetOp), uint16(PACKSSWB), + /*4436*/ uint16(xReadSlashR), + /*4437*/ uint16(xArgMm1), + /*4438*/ uint16(xArgMm2M64), + /*4439*/ uint16(xMatch), + /*4440*/ uint16(xSetOp), uint16(PACKSSWB), + /*4442*/ uint16(xReadSlashR), + /*4443*/ uint16(xArgXmm1), + /*4444*/ uint16(xArgXmm2M128), + /*4445*/ uint16(xMatch), + /*4446*/ uint16(xCondPrefix), 2, + 0x66, 4458, + 0x0, 4452, + /*4452*/ uint16(xSetOp), uint16(PCMPGTB), + /*4454*/ uint16(xReadSlashR), + /*4455*/ uint16(xArgMm), + /*4456*/ uint16(xArgMmM64), + /*4457*/ uint16(xMatch), + /*4458*/ uint16(xSetOp), uint16(PCMPGTB), + /*4460*/ uint16(xReadSlashR), + /*4461*/ uint16(xArgXmm1), + /*4462*/ uint16(xArgXmm2M128), + /*4463*/ uint16(xMatch), + /*4464*/ uint16(xCondPrefix), 2, + 0x66, 4476, + 0x0, 4470, + /*4470*/ uint16(xSetOp), uint16(PCMPGTW), + /*4472*/ uint16(xReadSlashR), + /*4473*/ uint16(xArgMm), + /*4474*/ uint16(xArgMmM64), + /*4475*/ uint16(xMatch), + /*4476*/ uint16(xSetOp), uint16(PCMPGTW), + /*4478*/ uint16(xReadSlashR), + /*4479*/ uint16(xArgXmm1), + /*4480*/ uint16(xArgXmm2M128), + /*4481*/ uint16(xMatch), + /*4482*/ uint16(xCondPrefix), 2, + 0x66, 4494, + 0x0, 4488, + /*4488*/ uint16(xSetOp), uint16(PCMPGTD), + /*4490*/ uint16(xReadSlashR), + /*4491*/ uint16(xArgMm), + /*4492*/ uint16(xArgMmM64), + /*4493*/ uint16(xMatch), + /*4494*/ uint16(xSetOp), uint16(PCMPGTD), + /*4496*/ uint16(xReadSlashR), + /*4497*/ uint16(xArgXmm1), + /*4498*/ uint16(xArgXmm2M128), + /*4499*/ uint16(xMatch), + /*4500*/ uint16(xCondPrefix), 2, + 0x66, 4512, + 0x0, 4506, + /*4506*/ uint16(xSetOp), uint16(PACKUSWB), + /*4508*/ uint16(xReadSlashR), + /*4509*/ uint16(xArgMm), + /*4510*/ uint16(xArgMmM64), + /*4511*/ uint16(xMatch), + /*4512*/ uint16(xSetOp), uint16(PACKUSWB), + /*4514*/ uint16(xReadSlashR), + /*4515*/ uint16(xArgXmm1), + /*4516*/ uint16(xArgXmm2M128), + /*4517*/ uint16(xMatch), + /*4518*/ uint16(xCondPrefix), 2, + 0x66, 4530, + 0x0, 4524, + /*4524*/ uint16(xSetOp), uint16(PUNPCKHBW), + /*4526*/ uint16(xReadSlashR), + /*4527*/ uint16(xArgMm), + /*4528*/ uint16(xArgMmM64), + /*4529*/ uint16(xMatch), + /*4530*/ uint16(xSetOp), uint16(PUNPCKHBW), + /*4532*/ uint16(xReadSlashR), + /*4533*/ uint16(xArgXmm1), + /*4534*/ uint16(xArgXmm2M128), + /*4535*/ uint16(xMatch), + /*4536*/ uint16(xCondPrefix), 2, + 0x66, 4548, + 0x0, 4542, + /*4542*/ uint16(xSetOp), uint16(PUNPCKHWD), + /*4544*/ uint16(xReadSlashR), + /*4545*/ uint16(xArgMm), + /*4546*/ uint16(xArgMmM64), + /*4547*/ uint16(xMatch), + /*4548*/ uint16(xSetOp), uint16(PUNPCKHWD), + /*4550*/ uint16(xReadSlashR), + /*4551*/ uint16(xArgXmm1), + /*4552*/ uint16(xArgXmm2M128), + /*4553*/ uint16(xMatch), + /*4554*/ uint16(xCondPrefix), 2, + 0x66, 4566, + 0x0, 4560, + /*4560*/ uint16(xSetOp), uint16(PUNPCKHDQ), + /*4562*/ uint16(xReadSlashR), + /*4563*/ uint16(xArgMm), + /*4564*/ uint16(xArgMmM64), + /*4565*/ uint16(xMatch), + /*4566*/ uint16(xSetOp), uint16(PUNPCKHDQ), + /*4568*/ uint16(xReadSlashR), + /*4569*/ uint16(xArgXmm1), + /*4570*/ uint16(xArgXmm2M128), + /*4571*/ uint16(xMatch), + /*4572*/ uint16(xCondPrefix), 2, + 0x66, 4584, + 0x0, 4578, + /*4578*/ uint16(xSetOp), uint16(PACKSSDW), + /*4580*/ uint16(xReadSlashR), + /*4581*/ uint16(xArgMm1), + /*4582*/ uint16(xArgMm2M64), + /*4583*/ uint16(xMatch), + /*4584*/ uint16(xSetOp), uint16(PACKSSDW), + /*4586*/ uint16(xReadSlashR), + /*4587*/ uint16(xArgXmm1), + /*4588*/ uint16(xArgXmm2M128), + /*4589*/ uint16(xMatch), + /*4590*/ uint16(xCondPrefix), 1, + 0x66, 4594, + /*4594*/ uint16(xSetOp), uint16(PUNPCKLQDQ), + /*4596*/ uint16(xReadSlashR), + /*4597*/ uint16(xArgXmm1), + /*4598*/ uint16(xArgXmm2M128), + /*4599*/ uint16(xMatch), + /*4600*/ uint16(xCondPrefix), 1, + 0x66, 4604, + /*4604*/ uint16(xSetOp), uint16(PUNPCKHQDQ), + /*4606*/ uint16(xReadSlashR), + /*4607*/ uint16(xArgXmm1), + /*4608*/ uint16(xArgXmm2M128), + /*4609*/ uint16(xMatch), + /*4610*/ uint16(xCondIs64), 4613, 4651, + /*4613*/ uint16(xCondPrefix), 2, + 0x66, 4635, + 0x0, 4619, + /*4619*/ uint16(xCondDataSize), 4623, 4629, 0, + /*4623*/ uint16(xSetOp), uint16(MOVD), + /*4625*/ uint16(xReadSlashR), + /*4626*/ uint16(xArgMm), + /*4627*/ uint16(xArgRM32), + /*4628*/ uint16(xMatch), + /*4629*/ uint16(xSetOp), uint16(MOVD), + /*4631*/ uint16(xReadSlashR), + /*4632*/ uint16(xArgMm), + /*4633*/ uint16(xArgRM32), + /*4634*/ uint16(xMatch), + /*4635*/ uint16(xCondDataSize), 4639, 4645, 0, + /*4639*/ uint16(xSetOp), uint16(MOVD), + /*4641*/ uint16(xReadSlashR), + /*4642*/ uint16(xArgXmm), + /*4643*/ uint16(xArgRM32), + /*4644*/ uint16(xMatch), + /*4645*/ uint16(xSetOp), uint16(MOVD), + /*4647*/ uint16(xReadSlashR), + /*4648*/ uint16(xArgXmm), + /*4649*/ uint16(xArgRM32), + /*4650*/ uint16(xMatch), + /*4651*/ uint16(xCondPrefix), 2, + 0x66, 4667, + 0x0, 4657, + /*4657*/ uint16(xCondDataSize), 4623, 4629, 4661, + /*4661*/ uint16(xSetOp), uint16(MOVQ), + /*4663*/ uint16(xReadSlashR), + /*4664*/ uint16(xArgMm), + /*4665*/ uint16(xArgRM64), + /*4666*/ uint16(xMatch), + /*4667*/ uint16(xCondDataSize), 4639, 4645, 4671, + /*4671*/ uint16(xSetOp), uint16(MOVQ), + /*4673*/ uint16(xReadSlashR), + /*4674*/ uint16(xArgXmm), + /*4675*/ uint16(xArgRM64), + /*4676*/ uint16(xMatch), + /*4677*/ uint16(xCondPrefix), 3, + 0xF3, 4697, + 0x66, 4691, + 0x0, 4685, + /*4685*/ uint16(xSetOp), uint16(MOVQ), + /*4687*/ uint16(xReadSlashR), + /*4688*/ uint16(xArgMm), + /*4689*/ uint16(xArgMmM64), + /*4690*/ uint16(xMatch), + /*4691*/ uint16(xSetOp), uint16(MOVDQA), + /*4693*/ uint16(xReadSlashR), + /*4694*/ uint16(xArgXmm1), + /*4695*/ uint16(xArgXmm2M128), + /*4696*/ uint16(xMatch), + /*4697*/ uint16(xSetOp), uint16(MOVDQU), + /*4699*/ uint16(xReadSlashR), + /*4700*/ uint16(xArgXmm1), + /*4701*/ uint16(xArgXmm2M128), + /*4702*/ uint16(xMatch), + /*4703*/ uint16(xCondPrefix), 4, + 0xF3, 4737, + 0xF2, 4729, + 0x66, 4721, + 0x0, 4713, + /*4713*/ uint16(xSetOp), uint16(PSHUFW), + /*4715*/ uint16(xReadSlashR), + /*4716*/ uint16(xReadIb), + /*4717*/ uint16(xArgMm1), + /*4718*/ uint16(xArgMm2M64), + /*4719*/ uint16(xArgImm8u), + /*4720*/ uint16(xMatch), + /*4721*/ uint16(xSetOp), uint16(PSHUFD), + /*4723*/ uint16(xReadSlashR), + /*4724*/ uint16(xReadIb), + /*4725*/ uint16(xArgXmm1), + /*4726*/ uint16(xArgXmm2M128), + /*4727*/ uint16(xArgImm8u), + /*4728*/ uint16(xMatch), + /*4729*/ uint16(xSetOp), uint16(PSHUFLW), + /*4731*/ uint16(xReadSlashR), + /*4732*/ uint16(xReadIb), + /*4733*/ uint16(xArgXmm1), + /*4734*/ uint16(xArgXmm2M128), + /*4735*/ uint16(xArgImm8u), + /*4736*/ uint16(xMatch), + /*4737*/ uint16(xSetOp), uint16(PSHUFHW), + /*4739*/ uint16(xReadSlashR), + /*4740*/ uint16(xReadIb), + /*4741*/ uint16(xArgXmm1), + /*4742*/ uint16(xArgXmm2M128), + /*4743*/ uint16(xArgImm8u), + /*4744*/ uint16(xMatch), + /*4745*/ uint16(xCondSlashR), 0, // 0 0, // 1 - 4752, // 2 + 4754, // 2 0, // 3 - 4770, // 4 + 4772, // 4 0, // 5 - 4788, // 6 + 4790, // 6 0, // 7 - /*4752*/ uint16(xCondPrefix), 2, - 0x66, 4764, - 0x0, 4758, - /*4758*/ uint16(xSetOp), uint16(PSRLW), - /*4760*/ uint16(xReadIb), - /*4761*/ uint16(xArgMm2), - /*4762*/ uint16(xArgImm8u), - /*4763*/ uint16(xMatch), - /*4764*/ uint16(xSetOp), uint16(PSRLW), - /*4766*/ uint16(xReadIb), - /*4767*/ uint16(xArgXmm2), - /*4768*/ uint16(xArgImm8u), - /*4769*/ uint16(xMatch), - /*4770*/ uint16(xCondPrefix), 2, - 0x66, 4782, - 0x0, 4776, - /*4776*/ uint16(xSetOp), uint16(PSRAW), - /*4778*/ uint16(xReadIb), - /*4779*/ uint16(xArgMm2), - /*4780*/ uint16(xArgImm8u), - /*4781*/ uint16(xMatch), - /*4782*/ uint16(xSetOp), uint16(PSRAW), - /*4784*/ uint16(xReadIb), - /*4785*/ uint16(xArgXmm2), - /*4786*/ uint16(xArgImm8u), - /*4787*/ uint16(xMatch), - /*4788*/ uint16(xCondPrefix), 2, - 0x66, 4800, - 0x0, 4794, - /*4794*/ uint16(xSetOp), uint16(PSLLW), - /*4796*/ uint16(xReadIb), - /*4797*/ uint16(xArgMm2), - /*4798*/ uint16(xArgImm8u), - /*4799*/ uint16(xMatch), - /*4800*/ uint16(xSetOp), uint16(PSLLW), - /*4802*/ uint16(xReadIb), - /*4803*/ uint16(xArgXmm2), - /*4804*/ uint16(xArgImm8u), - /*4805*/ uint16(xMatch), - /*4806*/ uint16(xCondSlashR), + /*4754*/ uint16(xCondPrefix), 2, + 0x66, 4766, + 0x0, 4760, + /*4760*/ uint16(xSetOp), uint16(PSRLW), + /*4762*/ uint16(xReadIb), + /*4763*/ uint16(xArgMm2), + /*4764*/ uint16(xArgImm8u), + /*4765*/ uint16(xMatch), + /*4766*/ uint16(xSetOp), uint16(PSRLW), + /*4768*/ uint16(xReadIb), + /*4769*/ uint16(xArgXmm2), + /*4770*/ uint16(xArgImm8u), + /*4771*/ uint16(xMatch), + /*4772*/ uint16(xCondPrefix), 2, + 0x66, 4784, + 0x0, 4778, + /*4778*/ uint16(xSetOp), uint16(PSRAW), + /*4780*/ uint16(xReadIb), + /*4781*/ uint16(xArgMm2), + /*4782*/ uint16(xArgImm8u), + /*4783*/ uint16(xMatch), + /*4784*/ uint16(xSetOp), uint16(PSRAW), + /*4786*/ uint16(xReadIb), + /*4787*/ uint16(xArgXmm2), + /*4788*/ uint16(xArgImm8u), + /*4789*/ uint16(xMatch), + /*4790*/ uint16(xCondPrefix), 2, + 0x66, 4802, + 0x0, 4796, + /*4796*/ uint16(xSetOp), uint16(PSLLW), + /*4798*/ uint16(xReadIb), + /*4799*/ uint16(xArgMm2), + /*4800*/ uint16(xArgImm8u), + /*4801*/ uint16(xMatch), + /*4802*/ uint16(xSetOp), uint16(PSLLW), + /*4804*/ uint16(xReadIb), + /*4805*/ uint16(xArgXmm2), + /*4806*/ uint16(xArgImm8u), + /*4807*/ uint16(xMatch), + /*4808*/ uint16(xCondSlashR), 0, // 0 0, // 1 - 4815, // 2 + 4817, // 2 0, // 3 - 4833, // 4 + 4835, // 4 0, // 5 - 4851, // 6 + 4853, // 6 0, // 7 - /*4815*/ uint16(xCondPrefix), 2, - 0x66, 4827, - 0x0, 4821, - /*4821*/ uint16(xSetOp), uint16(PSRLD), - /*4823*/ uint16(xReadIb), - /*4824*/ uint16(xArgMm2), - /*4825*/ uint16(xArgImm8u), - /*4826*/ uint16(xMatch), - /*4827*/ uint16(xSetOp), uint16(PSRLD), - /*4829*/ uint16(xReadIb), - /*4830*/ uint16(xArgXmm2), - /*4831*/ uint16(xArgImm8u), - /*4832*/ uint16(xMatch), - /*4833*/ uint16(xCondPrefix), 2, - 0x66, 4845, - 0x0, 4839, - /*4839*/ uint16(xSetOp), uint16(PSRAD), - /*4841*/ uint16(xReadIb), - /*4842*/ uint16(xArgMm2), - /*4843*/ uint16(xArgImm8u), - /*4844*/ uint16(xMatch), - /*4845*/ uint16(xSetOp), uint16(PSRAD), - /*4847*/ uint16(xReadIb), - /*4848*/ uint16(xArgXmm2), - /*4849*/ uint16(xArgImm8u), - /*4850*/ uint16(xMatch), - /*4851*/ uint16(xCondPrefix), 2, - 0x66, 4863, - 0x0, 4857, - /*4857*/ uint16(xSetOp), uint16(PSLLD), - /*4859*/ uint16(xReadIb), - /*4860*/ uint16(xArgMm2), - /*4861*/ uint16(xArgImm8u), - /*4862*/ uint16(xMatch), - /*4863*/ uint16(xSetOp), uint16(PSLLD), - /*4865*/ uint16(xReadIb), - /*4866*/ uint16(xArgXmm2), - /*4867*/ uint16(xArgImm8u), - /*4868*/ uint16(xMatch), - /*4869*/ uint16(xCondSlashR), + /*4817*/ uint16(xCondPrefix), 2, + 0x66, 4829, + 0x0, 4823, + /*4823*/ uint16(xSetOp), uint16(PSRLD), + /*4825*/ uint16(xReadIb), + /*4826*/ uint16(xArgMm2), + /*4827*/ uint16(xArgImm8u), + /*4828*/ uint16(xMatch), + /*4829*/ uint16(xSetOp), uint16(PSRLD), + /*4831*/ uint16(xReadIb), + /*4832*/ uint16(xArgXmm2), + /*4833*/ uint16(xArgImm8u), + /*4834*/ uint16(xMatch), + /*4835*/ uint16(xCondPrefix), 2, + 0x66, 4847, + 0x0, 4841, + /*4841*/ uint16(xSetOp), uint16(PSRAD), + /*4843*/ uint16(xReadIb), + /*4844*/ uint16(xArgMm2), + /*4845*/ uint16(xArgImm8u), + /*4846*/ uint16(xMatch), + /*4847*/ uint16(xSetOp), uint16(PSRAD), + /*4849*/ uint16(xReadIb), + /*4850*/ uint16(xArgXmm2), + /*4851*/ uint16(xArgImm8u), + /*4852*/ uint16(xMatch), + /*4853*/ uint16(xCondPrefix), 2, + 0x66, 4865, + 0x0, 4859, + /*4859*/ uint16(xSetOp), uint16(PSLLD), + /*4861*/ uint16(xReadIb), + /*4862*/ uint16(xArgMm2), + /*4863*/ uint16(xArgImm8u), + /*4864*/ uint16(xMatch), + /*4865*/ uint16(xSetOp), uint16(PSLLD), + /*4867*/ uint16(xReadIb), + /*4868*/ uint16(xArgXmm2), + /*4869*/ uint16(xArgImm8u), + /*4870*/ uint16(xMatch), + /*4871*/ uint16(xCondSlashR), 0, // 0 0, // 1 - 4878, // 2 - 4896, // 3 + 4880, // 2 + 4898, // 3 0, // 4 0, // 5 - 4906, // 6 - 4924, // 7 - /*4878*/ uint16(xCondPrefix), 2, - 0x66, 4890, - 0x0, 4884, - /*4884*/ uint16(xSetOp), uint16(PSRLQ), - /*4886*/ uint16(xReadIb), - /*4887*/ uint16(xArgMm2), - /*4888*/ uint16(xArgImm8u), - /*4889*/ uint16(xMatch), - /*4890*/ uint16(xSetOp), uint16(PSRLQ), - /*4892*/ uint16(xReadIb), - /*4893*/ uint16(xArgXmm2), - /*4894*/ uint16(xArgImm8u), - /*4895*/ uint16(xMatch), - /*4896*/ uint16(xCondPrefix), 1, - 0x66, 4900, - /*4900*/ uint16(xSetOp), uint16(PSRLDQ), - /*4902*/ uint16(xReadIb), - /*4903*/ uint16(xArgXmm2), - /*4904*/ uint16(xArgImm8u), - /*4905*/ uint16(xMatch), - /*4906*/ uint16(xCondPrefix), 2, - 0x66, 4918, - 0x0, 4912, - /*4912*/ uint16(xSetOp), uint16(PSLLQ), - /*4914*/ uint16(xReadIb), - /*4915*/ uint16(xArgMm2), - /*4916*/ uint16(xArgImm8u), - /*4917*/ uint16(xMatch), - /*4918*/ uint16(xSetOp), uint16(PSLLQ), - /*4920*/ uint16(xReadIb), - /*4921*/ uint16(xArgXmm2), - /*4922*/ uint16(xArgImm8u), - /*4923*/ uint16(xMatch), - /*4924*/ uint16(xCondPrefix), 1, - 0x66, 4928, - /*4928*/ uint16(xSetOp), uint16(PSLLDQ), - /*4930*/ uint16(xReadIb), - /*4931*/ uint16(xArgXmm2), - /*4932*/ uint16(xArgImm8u), - /*4933*/ uint16(xMatch), - /*4934*/ uint16(xCondPrefix), 2, - 0x66, 4946, - 0x0, 4940, - /*4940*/ uint16(xSetOp), uint16(PCMPEQB), - /*4942*/ uint16(xReadSlashR), - /*4943*/ uint16(xArgMm), - /*4944*/ uint16(xArgMmM64), - /*4945*/ uint16(xMatch), - /*4946*/ uint16(xSetOp), uint16(PCMPEQB), - /*4948*/ uint16(xReadSlashR), - /*4949*/ uint16(xArgXmm1), - /*4950*/ uint16(xArgXmm2M128), - /*4951*/ uint16(xMatch), - /*4952*/ uint16(xCondPrefix), 2, - 0x66, 4964, - 0x0, 4958, - /*4958*/ uint16(xSetOp), uint16(PCMPEQW), - /*4960*/ uint16(xReadSlashR), - /*4961*/ uint16(xArgMm), - /*4962*/ uint16(xArgMmM64), - /*4963*/ uint16(xMatch), - /*4964*/ uint16(xSetOp), uint16(PCMPEQW), - /*4966*/ uint16(xReadSlashR), - /*4967*/ uint16(xArgXmm1), - /*4968*/ uint16(xArgXmm2M128), - /*4969*/ uint16(xMatch), - /*4970*/ uint16(xCondPrefix), 2, - 0x66, 4982, - 0x0, 4976, - /*4976*/ uint16(xSetOp), uint16(PCMPEQD), - /*4978*/ uint16(xReadSlashR), - /*4979*/ uint16(xArgMm), - /*4980*/ uint16(xArgMmM64), - /*4981*/ uint16(xMatch), - /*4982*/ uint16(xSetOp), uint16(PCMPEQD), - /*4984*/ uint16(xReadSlashR), - /*4985*/ uint16(xArgXmm1), - /*4986*/ uint16(xArgXmm2M128), - /*4987*/ uint16(xMatch), - /*4988*/ uint16(xSetOp), uint16(EMMS), - /*4990*/ uint16(xMatch), - /*4991*/ uint16(xCondPrefix), 2, - 0xF2, 5003, - 0x66, 4997, - /*4997*/ uint16(xSetOp), uint16(HADDPD), - /*4999*/ uint16(xReadSlashR), - /*5000*/ uint16(xArgXmm1), - /*5001*/ uint16(xArgXmm2M128), - /*5002*/ uint16(xMatch), - /*5003*/ uint16(xSetOp), uint16(HADDPS), - /*5005*/ uint16(xReadSlashR), - /*5006*/ uint16(xArgXmm1), - /*5007*/ uint16(xArgXmm2M128), - /*5008*/ uint16(xMatch), - /*5009*/ uint16(xCondPrefix), 2, - 0xF2, 5021, - 0x66, 5015, - /*5015*/ uint16(xSetOp), uint16(HSUBPD), - /*5017*/ uint16(xReadSlashR), - /*5018*/ uint16(xArgXmm1), - /*5019*/ uint16(xArgXmm2M128), - /*5020*/ uint16(xMatch), - /*5021*/ uint16(xSetOp), uint16(HSUBPS), - /*5023*/ uint16(xReadSlashR), - /*5024*/ uint16(xArgXmm1), - /*5025*/ uint16(xArgXmm2M128), - /*5026*/ uint16(xMatch), - /*5027*/ uint16(xCondIs64), 5030, 5076, - /*5030*/ uint16(xCondPrefix), 3, - 0xF3, 5070, - 0x66, 5054, - 0x0, 5038, - /*5038*/ uint16(xCondDataSize), 5042, 5048, 0, - /*5042*/ uint16(xSetOp), uint16(MOVD), - /*5044*/ uint16(xReadSlashR), - /*5045*/ uint16(xArgRM32), - /*5046*/ uint16(xArgMm), - /*5047*/ uint16(xMatch), - /*5048*/ uint16(xSetOp), uint16(MOVD), - /*5050*/ uint16(xReadSlashR), - /*5051*/ uint16(xArgRM32), - /*5052*/ uint16(xArgMm), - /*5053*/ uint16(xMatch), - /*5054*/ uint16(xCondDataSize), 5058, 5064, 0, - /*5058*/ uint16(xSetOp), uint16(MOVD), - /*5060*/ uint16(xReadSlashR), - /*5061*/ uint16(xArgRM32), - /*5062*/ uint16(xArgXmm), - /*5063*/ uint16(xMatch), - /*5064*/ uint16(xSetOp), uint16(MOVD), - /*5066*/ uint16(xReadSlashR), - /*5067*/ uint16(xArgRM32), - /*5068*/ uint16(xArgXmm), - /*5069*/ uint16(xMatch), - /*5070*/ uint16(xSetOp), uint16(MOVQ), - /*5072*/ uint16(xReadSlashR), - /*5073*/ uint16(xArgXmm1), - /*5074*/ uint16(xArgXmm2M64), - /*5075*/ uint16(xMatch), - /*5076*/ uint16(xCondPrefix), 3, - 0xF3, 5070, - 0x66, 5094, - 0x0, 5084, - /*5084*/ uint16(xCondDataSize), 5042, 5048, 5088, - /*5088*/ uint16(xSetOp), uint16(MOVQ), - /*5090*/ uint16(xReadSlashR), - /*5091*/ uint16(xArgRM64), - /*5092*/ uint16(xArgMm), - /*5093*/ uint16(xMatch), - /*5094*/ uint16(xCondDataSize), 5058, 5064, 5098, - /*5098*/ uint16(xSetOp), uint16(MOVQ), - /*5100*/ uint16(xReadSlashR), - /*5101*/ uint16(xArgRM64), - /*5102*/ uint16(xArgXmm), - /*5103*/ uint16(xMatch), - /*5104*/ uint16(xCondPrefix), 3, - 0xF3, 5124, - 0x66, 5118, - 0x0, 5112, - /*5112*/ uint16(xSetOp), uint16(MOVQ), - /*5114*/ uint16(xReadSlashR), - /*5115*/ uint16(xArgMmM64), - /*5116*/ uint16(xArgMm), - /*5117*/ uint16(xMatch), - /*5118*/ uint16(xSetOp), uint16(MOVDQA), - /*5120*/ uint16(xReadSlashR), - /*5121*/ uint16(xArgXmm2M128), - /*5122*/ uint16(xArgXmm1), - /*5123*/ uint16(xMatch), - /*5124*/ uint16(xSetOp), uint16(MOVDQU), - /*5126*/ uint16(xReadSlashR), - /*5127*/ uint16(xArgXmm2M128), - /*5128*/ uint16(xArgXmm1), - /*5129*/ uint16(xMatch), - /*5130*/ uint16(xCondIs64), 5133, 5147, - /*5133*/ uint16(xCondDataSize), 5137, 5142, 0, - /*5137*/ uint16(xSetOp), uint16(JO), - /*5139*/ uint16(xReadCw), - /*5140*/ uint16(xArgRel16), - /*5141*/ uint16(xMatch), - /*5142*/ uint16(xSetOp), uint16(JO), - /*5144*/ uint16(xReadCd), - /*5145*/ uint16(xArgRel32), - /*5146*/ uint16(xMatch), - /*5147*/ uint16(xCondDataSize), 5151, 5142, 5156, - /*5151*/ uint16(xSetOp), uint16(JO), - /*5153*/ uint16(xReadCd), - /*5154*/ uint16(xArgRel32), - /*5155*/ uint16(xMatch), - /*5156*/ uint16(xSetOp), uint16(JO), - /*5158*/ uint16(xReadCd), - /*5159*/ uint16(xArgRel32), - /*5160*/ uint16(xMatch), - /*5161*/ uint16(xCondIs64), 5164, 5178, - /*5164*/ uint16(xCondDataSize), 5168, 5173, 0, - /*5168*/ uint16(xSetOp), uint16(JNO), - /*5170*/ uint16(xReadCw), - /*5171*/ uint16(xArgRel16), - /*5172*/ uint16(xMatch), - /*5173*/ uint16(xSetOp), uint16(JNO), - /*5175*/ uint16(xReadCd), - /*5176*/ uint16(xArgRel32), - /*5177*/ uint16(xMatch), - /*5178*/ uint16(xCondDataSize), 5182, 5173, 5187, - /*5182*/ uint16(xSetOp), uint16(JNO), - /*5184*/ uint16(xReadCd), - /*5185*/ uint16(xArgRel32), - /*5186*/ uint16(xMatch), - /*5187*/ uint16(xSetOp), uint16(JNO), - /*5189*/ uint16(xReadCd), - /*5190*/ uint16(xArgRel32), - /*5191*/ uint16(xMatch), - /*5192*/ uint16(xCondIs64), 5195, 5209, - /*5195*/ uint16(xCondDataSize), 5199, 5204, 0, - /*5199*/ uint16(xSetOp), uint16(JB), - /*5201*/ uint16(xReadCw), - /*5202*/ uint16(xArgRel16), - /*5203*/ uint16(xMatch), - /*5204*/ uint16(xSetOp), uint16(JB), - /*5206*/ uint16(xReadCd), - /*5207*/ uint16(xArgRel32), - /*5208*/ uint16(xMatch), - /*5209*/ uint16(xCondDataSize), 5213, 5204, 5218, - /*5213*/ uint16(xSetOp), uint16(JB), - /*5215*/ uint16(xReadCd), - /*5216*/ uint16(xArgRel32), - /*5217*/ uint16(xMatch), - /*5218*/ uint16(xSetOp), uint16(JB), - /*5220*/ uint16(xReadCd), - /*5221*/ uint16(xArgRel32), - /*5222*/ uint16(xMatch), - /*5223*/ uint16(xCondIs64), 5226, 5240, - /*5226*/ uint16(xCondDataSize), 5230, 5235, 0, - /*5230*/ uint16(xSetOp), uint16(JAE), - /*5232*/ uint16(xReadCw), - /*5233*/ uint16(xArgRel16), - /*5234*/ uint16(xMatch), - /*5235*/ uint16(xSetOp), uint16(JAE), - /*5237*/ uint16(xReadCd), - /*5238*/ uint16(xArgRel32), - /*5239*/ uint16(xMatch), - /*5240*/ uint16(xCondDataSize), 5244, 5235, 5249, - /*5244*/ uint16(xSetOp), uint16(JAE), - /*5246*/ uint16(xReadCd), - /*5247*/ uint16(xArgRel32), - /*5248*/ uint16(xMatch), - /*5249*/ uint16(xSetOp), uint16(JAE), - /*5251*/ uint16(xReadCd), - /*5252*/ uint16(xArgRel32), - /*5253*/ uint16(xMatch), - /*5254*/ uint16(xCondIs64), 5257, 5271, - /*5257*/ uint16(xCondDataSize), 5261, 5266, 0, - /*5261*/ uint16(xSetOp), uint16(JE), - /*5263*/ uint16(xReadCw), - /*5264*/ uint16(xArgRel16), - /*5265*/ uint16(xMatch), - /*5266*/ uint16(xSetOp), uint16(JE), - /*5268*/ uint16(xReadCd), - /*5269*/ uint16(xArgRel32), - /*5270*/ uint16(xMatch), - /*5271*/ uint16(xCondDataSize), 5275, 5266, 5280, - /*5275*/ uint16(xSetOp), uint16(JE), - /*5277*/ uint16(xReadCd), - /*5278*/ uint16(xArgRel32), - /*5279*/ uint16(xMatch), - /*5280*/ uint16(xSetOp), uint16(JE), - /*5282*/ uint16(xReadCd), - /*5283*/ uint16(xArgRel32), - /*5284*/ uint16(xMatch), - /*5285*/ uint16(xCondIs64), 5288, 5302, - /*5288*/ uint16(xCondDataSize), 5292, 5297, 0, - /*5292*/ uint16(xSetOp), uint16(JNE), - /*5294*/ uint16(xReadCw), - /*5295*/ uint16(xArgRel16), - /*5296*/ uint16(xMatch), - /*5297*/ uint16(xSetOp), uint16(JNE), - /*5299*/ uint16(xReadCd), - /*5300*/ uint16(xArgRel32), - /*5301*/ uint16(xMatch), - /*5302*/ uint16(xCondDataSize), 5306, 5297, 5311, - /*5306*/ uint16(xSetOp), uint16(JNE), - /*5308*/ uint16(xReadCd), - /*5309*/ uint16(xArgRel32), - /*5310*/ uint16(xMatch), - /*5311*/ uint16(xSetOp), uint16(JNE), - /*5313*/ uint16(xReadCd), - /*5314*/ uint16(xArgRel32), - /*5315*/ uint16(xMatch), - /*5316*/ uint16(xCondIs64), 5319, 5333, - /*5319*/ uint16(xCondDataSize), 5323, 5328, 0, - /*5323*/ uint16(xSetOp), uint16(JBE), - /*5325*/ uint16(xReadCw), - /*5326*/ uint16(xArgRel16), - /*5327*/ uint16(xMatch), - /*5328*/ uint16(xSetOp), uint16(JBE), - /*5330*/ uint16(xReadCd), - /*5331*/ uint16(xArgRel32), - /*5332*/ uint16(xMatch), - /*5333*/ uint16(xCondDataSize), 5337, 5328, 5342, - /*5337*/ uint16(xSetOp), uint16(JBE), - /*5339*/ uint16(xReadCd), - /*5340*/ uint16(xArgRel32), - /*5341*/ uint16(xMatch), - /*5342*/ uint16(xSetOp), uint16(JBE), - /*5344*/ uint16(xReadCd), - /*5345*/ uint16(xArgRel32), - /*5346*/ uint16(xMatch), - /*5347*/ uint16(xCondIs64), 5350, 5364, - /*5350*/ uint16(xCondDataSize), 5354, 5359, 0, - /*5354*/ uint16(xSetOp), uint16(JA), - /*5356*/ uint16(xReadCw), - /*5357*/ uint16(xArgRel16), - /*5358*/ uint16(xMatch), - /*5359*/ uint16(xSetOp), uint16(JA), - /*5361*/ uint16(xReadCd), - /*5362*/ uint16(xArgRel32), - /*5363*/ uint16(xMatch), - /*5364*/ uint16(xCondDataSize), 5368, 5359, 5373, - /*5368*/ uint16(xSetOp), uint16(JA), - /*5370*/ uint16(xReadCd), - /*5371*/ uint16(xArgRel32), - /*5372*/ uint16(xMatch), - /*5373*/ uint16(xSetOp), uint16(JA), - /*5375*/ uint16(xReadCd), - /*5376*/ uint16(xArgRel32), - /*5377*/ uint16(xMatch), - /*5378*/ uint16(xCondIs64), 5381, 5395, - /*5381*/ uint16(xCondDataSize), 5385, 5390, 0, - /*5385*/ uint16(xSetOp), uint16(JS), - /*5387*/ uint16(xReadCw), - /*5388*/ uint16(xArgRel16), - /*5389*/ uint16(xMatch), - /*5390*/ uint16(xSetOp), uint16(JS), - /*5392*/ uint16(xReadCd), - /*5393*/ uint16(xArgRel32), - /*5394*/ uint16(xMatch), - /*5395*/ uint16(xCondDataSize), 5399, 5390, 5404, - /*5399*/ uint16(xSetOp), uint16(JS), - /*5401*/ uint16(xReadCd), - /*5402*/ uint16(xArgRel32), - /*5403*/ uint16(xMatch), - /*5404*/ uint16(xSetOp), uint16(JS), - /*5406*/ uint16(xReadCd), - /*5407*/ uint16(xArgRel32), - /*5408*/ uint16(xMatch), - /*5409*/ uint16(xCondIs64), 5412, 5426, - /*5412*/ uint16(xCondDataSize), 5416, 5421, 0, - /*5416*/ uint16(xSetOp), uint16(JNS), - /*5418*/ uint16(xReadCw), - /*5419*/ uint16(xArgRel16), - /*5420*/ uint16(xMatch), - /*5421*/ uint16(xSetOp), uint16(JNS), - /*5423*/ uint16(xReadCd), - /*5424*/ uint16(xArgRel32), - /*5425*/ uint16(xMatch), - /*5426*/ uint16(xCondDataSize), 5430, 5421, 5435, - /*5430*/ uint16(xSetOp), uint16(JNS), - /*5432*/ uint16(xReadCd), - /*5433*/ uint16(xArgRel32), - /*5434*/ uint16(xMatch), - /*5435*/ uint16(xSetOp), uint16(JNS), - /*5437*/ uint16(xReadCd), - /*5438*/ uint16(xArgRel32), - /*5439*/ uint16(xMatch), - /*5440*/ uint16(xCondIs64), 5443, 5457, - /*5443*/ uint16(xCondDataSize), 5447, 5452, 0, - /*5447*/ uint16(xSetOp), uint16(JP), - /*5449*/ uint16(xReadCw), - /*5450*/ uint16(xArgRel16), - /*5451*/ uint16(xMatch), - /*5452*/ uint16(xSetOp), uint16(JP), - /*5454*/ uint16(xReadCd), - /*5455*/ uint16(xArgRel32), - /*5456*/ uint16(xMatch), - /*5457*/ uint16(xCondDataSize), 5461, 5452, 5466, - /*5461*/ uint16(xSetOp), uint16(JP), - /*5463*/ uint16(xReadCd), - /*5464*/ uint16(xArgRel32), - /*5465*/ uint16(xMatch), - /*5466*/ uint16(xSetOp), uint16(JP), - /*5468*/ uint16(xReadCd), - /*5469*/ uint16(xArgRel32), - /*5470*/ uint16(xMatch), - /*5471*/ uint16(xCondIs64), 5474, 5488, - /*5474*/ uint16(xCondDataSize), 5478, 5483, 0, - /*5478*/ uint16(xSetOp), uint16(JNP), - /*5480*/ uint16(xReadCw), - /*5481*/ uint16(xArgRel16), - /*5482*/ uint16(xMatch), - /*5483*/ uint16(xSetOp), uint16(JNP), - /*5485*/ uint16(xReadCd), - /*5486*/ uint16(xArgRel32), - /*5487*/ uint16(xMatch), - /*5488*/ uint16(xCondDataSize), 5492, 5483, 5497, - /*5492*/ uint16(xSetOp), uint16(JNP), - /*5494*/ uint16(xReadCd), - /*5495*/ uint16(xArgRel32), - /*5496*/ uint16(xMatch), - /*5497*/ uint16(xSetOp), uint16(JNP), - /*5499*/ uint16(xReadCd), - /*5500*/ uint16(xArgRel32), - /*5501*/ uint16(xMatch), - /*5502*/ uint16(xCondIs64), 5505, 5519, - /*5505*/ uint16(xCondDataSize), 5509, 5514, 0, - /*5509*/ uint16(xSetOp), uint16(JL), - /*5511*/ uint16(xReadCw), - /*5512*/ uint16(xArgRel16), - /*5513*/ uint16(xMatch), - /*5514*/ uint16(xSetOp), uint16(JL), - /*5516*/ uint16(xReadCd), - /*5517*/ uint16(xArgRel32), - /*5518*/ uint16(xMatch), - /*5519*/ uint16(xCondDataSize), 5523, 5514, 5528, - /*5523*/ uint16(xSetOp), uint16(JL), - /*5525*/ uint16(xReadCd), - /*5526*/ uint16(xArgRel32), - /*5527*/ uint16(xMatch), - /*5528*/ uint16(xSetOp), uint16(JL), - /*5530*/ uint16(xReadCd), - /*5531*/ uint16(xArgRel32), - /*5532*/ uint16(xMatch), - /*5533*/ uint16(xCondIs64), 5536, 5550, - /*5536*/ uint16(xCondDataSize), 5540, 5545, 0, - /*5540*/ uint16(xSetOp), uint16(JGE), - /*5542*/ uint16(xReadCw), - /*5543*/ uint16(xArgRel16), - /*5544*/ uint16(xMatch), - /*5545*/ uint16(xSetOp), uint16(JGE), - /*5547*/ uint16(xReadCd), - /*5548*/ uint16(xArgRel32), - /*5549*/ uint16(xMatch), - /*5550*/ uint16(xCondDataSize), 5554, 5545, 5559, - /*5554*/ uint16(xSetOp), uint16(JGE), - /*5556*/ uint16(xReadCd), - /*5557*/ uint16(xArgRel32), - /*5558*/ uint16(xMatch), - /*5559*/ uint16(xSetOp), uint16(JGE), - /*5561*/ uint16(xReadCd), - /*5562*/ uint16(xArgRel32), - /*5563*/ uint16(xMatch), - /*5564*/ uint16(xCondIs64), 5567, 5581, - /*5567*/ uint16(xCondDataSize), 5571, 5576, 0, - /*5571*/ uint16(xSetOp), uint16(JLE), - /*5573*/ uint16(xReadCw), - /*5574*/ uint16(xArgRel16), - /*5575*/ uint16(xMatch), - /*5576*/ uint16(xSetOp), uint16(JLE), - /*5578*/ uint16(xReadCd), - /*5579*/ uint16(xArgRel32), - /*5580*/ uint16(xMatch), - /*5581*/ uint16(xCondDataSize), 5585, 5576, 5590, - /*5585*/ uint16(xSetOp), uint16(JLE), - /*5587*/ uint16(xReadCd), - /*5588*/ uint16(xArgRel32), - /*5589*/ uint16(xMatch), - /*5590*/ uint16(xSetOp), uint16(JLE), - /*5592*/ uint16(xReadCd), - /*5593*/ uint16(xArgRel32), - /*5594*/ uint16(xMatch), - /*5595*/ uint16(xCondIs64), 5598, 5612, - /*5598*/ uint16(xCondDataSize), 5602, 5607, 0, - /*5602*/ uint16(xSetOp), uint16(JG), - /*5604*/ uint16(xReadCw), - /*5605*/ uint16(xArgRel16), - /*5606*/ uint16(xMatch), - /*5607*/ uint16(xSetOp), uint16(JG), - /*5609*/ uint16(xReadCd), - /*5610*/ uint16(xArgRel32), - /*5611*/ uint16(xMatch), - /*5612*/ uint16(xCondDataSize), 5616, 5607, 5621, - /*5616*/ uint16(xSetOp), uint16(JG), - /*5618*/ uint16(xReadCd), - /*5619*/ uint16(xArgRel32), - /*5620*/ uint16(xMatch), - /*5621*/ uint16(xSetOp), uint16(JG), - /*5623*/ uint16(xReadCd), - /*5624*/ uint16(xArgRel32), - /*5625*/ uint16(xMatch), - /*5626*/ uint16(xSetOp), uint16(SETO), - /*5628*/ uint16(xReadSlashR), - /*5629*/ uint16(xArgRM8), - /*5630*/ uint16(xMatch), - /*5631*/ uint16(xSetOp), uint16(SETNO), - /*5633*/ uint16(xReadSlashR), - /*5634*/ uint16(xArgRM8), - /*5635*/ uint16(xMatch), - /*5636*/ uint16(xSetOp), uint16(SETB), - /*5638*/ uint16(xReadSlashR), - /*5639*/ uint16(xArgRM8), - /*5640*/ uint16(xMatch), - /*5641*/ uint16(xSetOp), uint16(SETAE), - /*5643*/ uint16(xReadSlashR), - /*5644*/ uint16(xArgRM8), - /*5645*/ uint16(xMatch), - /*5646*/ uint16(xSetOp), uint16(SETE), - /*5648*/ uint16(xReadSlashR), - /*5649*/ uint16(xArgRM8), - /*5650*/ uint16(xMatch), - /*5651*/ uint16(xSetOp), uint16(SETNE), - /*5653*/ uint16(xReadSlashR), - /*5654*/ uint16(xArgRM8), - /*5655*/ uint16(xMatch), - /*5656*/ uint16(xSetOp), uint16(SETBE), - /*5658*/ uint16(xReadSlashR), - /*5659*/ uint16(xArgRM8), - /*5660*/ uint16(xMatch), - /*5661*/ uint16(xSetOp), uint16(SETA), - /*5663*/ uint16(xReadSlashR), - /*5664*/ uint16(xArgRM8), - /*5665*/ uint16(xMatch), - /*5666*/ uint16(xSetOp), uint16(SETS), - /*5668*/ uint16(xReadSlashR), - /*5669*/ uint16(xArgRM8), - /*5670*/ uint16(xMatch), - /*5671*/ uint16(xSetOp), uint16(SETNS), - /*5673*/ uint16(xReadSlashR), - /*5674*/ uint16(xArgRM8), - /*5675*/ uint16(xMatch), - /*5676*/ uint16(xSetOp), uint16(SETP), - /*5678*/ uint16(xReadSlashR), - /*5679*/ uint16(xArgRM8), - /*5680*/ uint16(xMatch), - /*5681*/ uint16(xSetOp), uint16(SETNP), - /*5683*/ uint16(xReadSlashR), - /*5684*/ uint16(xArgRM8), - /*5685*/ uint16(xMatch), - /*5686*/ uint16(xSetOp), uint16(SETL), - /*5688*/ uint16(xReadSlashR), - /*5689*/ uint16(xArgRM8), - /*5690*/ uint16(xMatch), - /*5691*/ uint16(xSetOp), uint16(SETGE), - /*5693*/ uint16(xReadSlashR), - /*5694*/ uint16(xArgRM8), - /*5695*/ uint16(xMatch), - /*5696*/ uint16(xSetOp), uint16(SETLE), - /*5698*/ uint16(xReadSlashR), - /*5699*/ uint16(xArgRM8), - /*5700*/ uint16(xMatch), - /*5701*/ uint16(xSetOp), uint16(SETG), - /*5703*/ uint16(xReadSlashR), - /*5704*/ uint16(xArgRM8), - /*5705*/ uint16(xMatch), - /*5706*/ uint16(xSetOp), uint16(PUSH), - /*5708*/ uint16(xArgFS), - /*5709*/ uint16(xMatch), - /*5710*/ uint16(xCondIs64), 5713, 5725, - /*5713*/ uint16(xCondDataSize), 5717, 5721, 0, - /*5717*/ uint16(xSetOp), uint16(POP), - /*5719*/ uint16(xArgFS), - /*5720*/ uint16(xMatch), - /*5721*/ uint16(xSetOp), uint16(POP), - /*5723*/ uint16(xArgFS), - /*5724*/ uint16(xMatch), - /*5725*/ uint16(xCondDataSize), 5717, 5729, 5733, - /*5729*/ uint16(xSetOp), uint16(POP), - /*5731*/ uint16(xArgFS), - /*5732*/ uint16(xMatch), - /*5733*/ uint16(xSetOp), uint16(POP), - /*5735*/ uint16(xArgFS), - /*5736*/ uint16(xMatch), - /*5737*/ uint16(xSetOp), uint16(CPUID), - /*5739*/ uint16(xMatch), - /*5740*/ uint16(xCondIs64), 5743, 5759, - /*5743*/ uint16(xCondDataSize), 5747, 5753, 0, - /*5747*/ uint16(xSetOp), uint16(BT), - /*5749*/ uint16(xReadSlashR), - /*5750*/ uint16(xArgRM16), - /*5751*/ uint16(xArgR16), - /*5752*/ uint16(xMatch), - /*5753*/ uint16(xSetOp), uint16(BT), - /*5755*/ uint16(xReadSlashR), - /*5756*/ uint16(xArgRM32), - /*5757*/ uint16(xArgR32), - /*5758*/ uint16(xMatch), - /*5759*/ uint16(xCondDataSize), 5747, 5753, 5763, - /*5763*/ uint16(xSetOp), uint16(BT), - /*5765*/ uint16(xReadSlashR), - /*5766*/ uint16(xArgRM64), - /*5767*/ uint16(xArgR64), - /*5768*/ uint16(xMatch), - /*5769*/ uint16(xCondIs64), 5772, 5792, - /*5772*/ uint16(xCondDataSize), 5776, 5784, 0, - /*5776*/ uint16(xSetOp), uint16(SHLD), - /*5778*/ uint16(xReadSlashR), - /*5779*/ uint16(xReadIb), - /*5780*/ uint16(xArgRM16), - /*5781*/ uint16(xArgR16), - /*5782*/ uint16(xArgImm8u), - /*5783*/ uint16(xMatch), - /*5784*/ uint16(xSetOp), uint16(SHLD), - /*5786*/ uint16(xReadSlashR), - /*5787*/ uint16(xReadIb), - /*5788*/ uint16(xArgRM32), - /*5789*/ uint16(xArgR32), - /*5790*/ uint16(xArgImm8u), - /*5791*/ uint16(xMatch), - /*5792*/ uint16(xCondDataSize), 5776, 5784, 5796, - /*5796*/ uint16(xSetOp), uint16(SHLD), - /*5798*/ uint16(xReadSlashR), - /*5799*/ uint16(xReadIb), - /*5800*/ uint16(xArgRM64), - /*5801*/ uint16(xArgR64), - /*5802*/ uint16(xArgImm8u), - /*5803*/ uint16(xMatch), - /*5804*/ uint16(xCondIs64), 5807, 5825, - /*5807*/ uint16(xCondDataSize), 5811, 5818, 0, - /*5811*/ uint16(xSetOp), uint16(SHLD), - /*5813*/ uint16(xReadSlashR), - /*5814*/ uint16(xArgRM16), - /*5815*/ uint16(xArgR16), - /*5816*/ uint16(xArgCL), - /*5817*/ uint16(xMatch), - /*5818*/ uint16(xSetOp), uint16(SHLD), - /*5820*/ uint16(xReadSlashR), - /*5821*/ uint16(xArgRM32), - /*5822*/ uint16(xArgR32), - /*5823*/ uint16(xArgCL), - /*5824*/ uint16(xMatch), - /*5825*/ uint16(xCondDataSize), 5811, 5818, 5829, - /*5829*/ uint16(xSetOp), uint16(SHLD), - /*5831*/ uint16(xReadSlashR), - /*5832*/ uint16(xArgRM64), - /*5833*/ uint16(xArgR64), - /*5834*/ uint16(xArgCL), - /*5835*/ uint16(xMatch), - /*5836*/ uint16(xSetOp), uint16(PUSH), - /*5838*/ uint16(xArgGS), - /*5839*/ uint16(xMatch), - /*5840*/ uint16(xCondIs64), 5843, 5855, - /*5843*/ uint16(xCondDataSize), 5847, 5851, 0, - /*5847*/ uint16(xSetOp), uint16(POP), - /*5849*/ uint16(xArgGS), - /*5850*/ uint16(xMatch), - /*5851*/ uint16(xSetOp), uint16(POP), - /*5853*/ uint16(xArgGS), - /*5854*/ uint16(xMatch), - /*5855*/ uint16(xCondDataSize), 5847, 5859, 5863, - /*5859*/ uint16(xSetOp), uint16(POP), - /*5861*/ uint16(xArgGS), - /*5862*/ uint16(xMatch), - /*5863*/ uint16(xSetOp), uint16(POP), - /*5865*/ uint16(xArgGS), - /*5866*/ uint16(xMatch), - /*5867*/ uint16(xSetOp), uint16(RSM), - /*5869*/ uint16(xMatch), - /*5870*/ uint16(xCondIs64), 5873, 5889, - /*5873*/ uint16(xCondDataSize), 5877, 5883, 0, - /*5877*/ uint16(xSetOp), uint16(BTS), - /*5879*/ uint16(xReadSlashR), - /*5880*/ uint16(xArgRM16), - /*5881*/ uint16(xArgR16), - /*5882*/ uint16(xMatch), - /*5883*/ uint16(xSetOp), uint16(BTS), - /*5885*/ uint16(xReadSlashR), - /*5886*/ uint16(xArgRM32), - /*5887*/ uint16(xArgR32), - /*5888*/ uint16(xMatch), - /*5889*/ uint16(xCondDataSize), 5877, 5883, 5893, - /*5893*/ uint16(xSetOp), uint16(BTS), - /*5895*/ uint16(xReadSlashR), - /*5896*/ uint16(xArgRM64), - /*5897*/ uint16(xArgR64), - /*5898*/ uint16(xMatch), - /*5899*/ uint16(xCondIs64), 5902, 5922, - /*5902*/ uint16(xCondDataSize), 5906, 5914, 0, - /*5906*/ uint16(xSetOp), uint16(SHRD), - /*5908*/ uint16(xReadSlashR), - /*5909*/ uint16(xReadIb), - /*5910*/ uint16(xArgRM16), - /*5911*/ uint16(xArgR16), - /*5912*/ uint16(xArgImm8u), - /*5913*/ uint16(xMatch), - /*5914*/ uint16(xSetOp), uint16(SHRD), - /*5916*/ uint16(xReadSlashR), - /*5917*/ uint16(xReadIb), - /*5918*/ uint16(xArgRM32), - /*5919*/ uint16(xArgR32), - /*5920*/ uint16(xArgImm8u), - /*5921*/ uint16(xMatch), - /*5922*/ uint16(xCondDataSize), 5906, 5914, 5926, - /*5926*/ uint16(xSetOp), uint16(SHRD), - /*5928*/ uint16(xReadSlashR), - /*5929*/ uint16(xReadIb), - /*5930*/ uint16(xArgRM64), - /*5931*/ uint16(xArgR64), - /*5932*/ uint16(xArgImm8u), - /*5933*/ uint16(xMatch), - /*5934*/ uint16(xCondIs64), 5937, 5955, - /*5937*/ uint16(xCondDataSize), 5941, 5948, 0, - /*5941*/ uint16(xSetOp), uint16(SHRD), - /*5943*/ uint16(xReadSlashR), - /*5944*/ uint16(xArgRM16), - /*5945*/ uint16(xArgR16), - /*5946*/ uint16(xArgCL), - /*5947*/ uint16(xMatch), - /*5948*/ uint16(xSetOp), uint16(SHRD), - /*5950*/ uint16(xReadSlashR), - /*5951*/ uint16(xArgRM32), - /*5952*/ uint16(xArgR32), - /*5953*/ uint16(xArgCL), - /*5954*/ uint16(xMatch), - /*5955*/ uint16(xCondDataSize), 5941, 5948, 5959, - /*5959*/ uint16(xSetOp), uint16(SHRD), - /*5961*/ uint16(xReadSlashR), - /*5962*/ uint16(xArgRM64), - /*5963*/ uint16(xArgR64), - /*5964*/ uint16(xArgCL), - /*5965*/ uint16(xMatch), - /*5966*/ uint16(xCondByte), 3, - 0xE8, 6215, - 0xF0, 6218, - 0xF8, 6221, - /*5974*/ uint16(xCondSlashR), - 5983, // 0 - 6037, // 1 - 6091, // 2 - 6120, // 3 - 6149, // 4 - 6172, // 5 - 6195, // 6 - 6211, // 7 - /*5983*/ uint16(xCondIs64), 5986, 5998, - /*5986*/ uint16(xCondDataSize), 5990, 5994, 0, - /*5990*/ uint16(xSetOp), uint16(FXSAVE), - /*5992*/ uint16(xArgM512byte), - /*5993*/ uint16(xMatch), - /*5994*/ uint16(xSetOp), uint16(FXSAVE), - /*5996*/ uint16(xArgM512byte), - /*5997*/ uint16(xMatch), - /*5998*/ uint16(xCondPrefix), 2, - 0xF3, 6012, - 0x0, 6004, - /*6004*/ uint16(xCondDataSize), 5990, 5994, 6008, - /*6008*/ uint16(xSetOp), uint16(FXSAVE64), - /*6010*/ uint16(xArgM512byte), - /*6011*/ uint16(xMatch), - /*6012*/ uint16(xCondDataSize), 6016, 6023, 6030, - /*6016*/ uint16(xCondIsMem), 6019, 0, - /*6019*/ uint16(xSetOp), uint16(RDFSBASE), - /*6021*/ uint16(xArgRM32), - /*6022*/ uint16(xMatch), - /*6023*/ uint16(xCondIsMem), 6026, 0, - /*6026*/ uint16(xSetOp), uint16(RDFSBASE), - /*6028*/ uint16(xArgRM32), - /*6029*/ uint16(xMatch), - /*6030*/ uint16(xCondIsMem), 6033, 0, - /*6033*/ uint16(xSetOp), uint16(RDFSBASE), - /*6035*/ uint16(xArgRM64), - /*6036*/ uint16(xMatch), - /*6037*/ uint16(xCondIs64), 6040, 6052, - /*6040*/ uint16(xCondDataSize), 6044, 6048, 0, - /*6044*/ uint16(xSetOp), uint16(FXRSTOR), - /*6046*/ uint16(xArgM512byte), - /*6047*/ uint16(xMatch), - /*6048*/ uint16(xSetOp), uint16(FXRSTOR), - /*6050*/ uint16(xArgM512byte), - /*6051*/ uint16(xMatch), - /*6052*/ uint16(xCondPrefix), 2, - 0xF3, 6066, - 0x0, 6058, - /*6058*/ uint16(xCondDataSize), 6044, 6048, 6062, - /*6062*/ uint16(xSetOp), uint16(FXRSTOR64), - /*6064*/ uint16(xArgM512byte), - /*6065*/ uint16(xMatch), - /*6066*/ uint16(xCondDataSize), 6070, 6077, 6084, - /*6070*/ uint16(xCondIsMem), 6073, 0, - /*6073*/ uint16(xSetOp), uint16(RDGSBASE), - /*6075*/ uint16(xArgRM32), - /*6076*/ uint16(xMatch), - /*6077*/ uint16(xCondIsMem), 6080, 0, - /*6080*/ uint16(xSetOp), uint16(RDGSBASE), - /*6082*/ uint16(xArgRM32), - /*6083*/ uint16(xMatch), - /*6084*/ uint16(xCondIsMem), 6087, 0, - /*6087*/ uint16(xSetOp), uint16(RDGSBASE), - /*6089*/ uint16(xArgRM64), - /*6090*/ uint16(xMatch), - /*6091*/ uint16(xCondIs64), 6094, 6098, - /*6094*/ uint16(xSetOp), uint16(LDMXCSR), - /*6096*/ uint16(xArgM32), - /*6097*/ uint16(xMatch), - /*6098*/ uint16(xCondPrefix), 2, - 0xF3, 6104, - 0x0, 6094, - /*6104*/ uint16(xCondDataSize), 6108, 6112, 6116, - /*6108*/ uint16(xSetOp), uint16(WRFSBASE), - /*6110*/ uint16(xArgRM32), - /*6111*/ uint16(xMatch), - /*6112*/ uint16(xSetOp), uint16(WRFSBASE), - /*6114*/ uint16(xArgRM32), - /*6115*/ uint16(xMatch), - /*6116*/ uint16(xSetOp), uint16(WRFSBASE), - /*6118*/ uint16(xArgRM64), - /*6119*/ uint16(xMatch), - /*6120*/ uint16(xCondIs64), 6123, 6127, - /*6123*/ uint16(xSetOp), uint16(STMXCSR), - /*6125*/ uint16(xArgM32), - /*6126*/ uint16(xMatch), - /*6127*/ uint16(xCondPrefix), 2, - 0xF3, 6133, - 0x0, 6123, - /*6133*/ uint16(xCondDataSize), 6137, 6141, 6145, - /*6137*/ uint16(xSetOp), uint16(WRGSBASE), - /*6139*/ uint16(xArgRM32), - /*6140*/ uint16(xMatch), - /*6141*/ uint16(xSetOp), uint16(WRGSBASE), - /*6143*/ uint16(xArgRM32), - /*6144*/ uint16(xMatch), - /*6145*/ uint16(xSetOp), uint16(WRGSBASE), - /*6147*/ uint16(xArgRM64), - /*6148*/ uint16(xMatch), - /*6149*/ uint16(xCondIs64), 6152, 6164, - /*6152*/ uint16(xCondDataSize), 6156, 6160, 0, - /*6156*/ uint16(xSetOp), uint16(XSAVE), - /*6158*/ uint16(xArgMem), - /*6159*/ uint16(xMatch), - /*6160*/ uint16(xSetOp), uint16(XSAVE), - /*6162*/ uint16(xArgMem), - /*6163*/ uint16(xMatch), - /*6164*/ uint16(xCondDataSize), 6156, 6160, 6168, - /*6168*/ uint16(xSetOp), uint16(XSAVE64), - /*6170*/ uint16(xArgMem), - /*6171*/ uint16(xMatch), - /*6172*/ uint16(xCondIs64), 6175, 6187, - /*6175*/ uint16(xCondDataSize), 6179, 6183, 0, - /*6179*/ uint16(xSetOp), uint16(XRSTOR), - /*6181*/ uint16(xArgMem), - /*6182*/ uint16(xMatch), - /*6183*/ uint16(xSetOp), uint16(XRSTOR), - /*6185*/ uint16(xArgMem), - /*6186*/ uint16(xMatch), - /*6187*/ uint16(xCondDataSize), 6179, 6183, 6191, - /*6191*/ uint16(xSetOp), uint16(XRSTOR64), - /*6193*/ uint16(xArgMem), - /*6194*/ uint16(xMatch), - /*6195*/ uint16(xCondDataSize), 6199, 6203, 6207, - /*6199*/ uint16(xSetOp), uint16(XSAVEOPT), - /*6201*/ uint16(xArgMem), - /*6202*/ uint16(xMatch), - /*6203*/ uint16(xSetOp), uint16(XSAVEOPT), - /*6205*/ uint16(xArgMem), - /*6206*/ uint16(xMatch), - /*6207*/ uint16(xSetOp), uint16(XSAVEOPT64), - /*6209*/ uint16(xArgMem), - /*6210*/ uint16(xMatch), - /*6211*/ uint16(xSetOp), uint16(CLFLUSH), - /*6213*/ uint16(xArgM8), - /*6214*/ uint16(xMatch), - /*6215*/ uint16(xSetOp), uint16(LFENCE), - /*6217*/ uint16(xMatch), - /*6218*/ uint16(xSetOp), uint16(MFENCE), - /*6220*/ uint16(xMatch), - /*6221*/ uint16(xSetOp), uint16(SFENCE), - /*6223*/ uint16(xMatch), - /*6224*/ uint16(xCondIs64), 6227, 6243, - /*6227*/ uint16(xCondDataSize), 6231, 6237, 0, - /*6231*/ uint16(xSetOp), uint16(IMUL), - /*6233*/ uint16(xReadSlashR), - /*6234*/ uint16(xArgR16), - /*6235*/ uint16(xArgRM16), - /*6236*/ uint16(xMatch), - /*6237*/ uint16(xSetOp), uint16(IMUL), - /*6239*/ uint16(xReadSlashR), - /*6240*/ uint16(xArgR32), - /*6241*/ uint16(xArgRM32), - /*6242*/ uint16(xMatch), - /*6243*/ uint16(xCondDataSize), 6231, 6237, 6247, - /*6247*/ uint16(xSetOp), uint16(IMUL), - /*6249*/ uint16(xReadSlashR), - /*6250*/ uint16(xArgR64), - /*6251*/ uint16(xArgRM64), - /*6252*/ uint16(xMatch), - /*6253*/ uint16(xSetOp), uint16(CMPXCHG), - /*6255*/ uint16(xReadSlashR), - /*6256*/ uint16(xArgRM8), - /*6257*/ uint16(xArgR8), - /*6258*/ uint16(xMatch), - /*6259*/ uint16(xCondIs64), 6262, 6278, - /*6262*/ uint16(xCondDataSize), 6266, 6272, 0, - /*6266*/ uint16(xSetOp), uint16(CMPXCHG), - /*6268*/ uint16(xReadSlashR), - /*6269*/ uint16(xArgRM16), - /*6270*/ uint16(xArgR16), - /*6271*/ uint16(xMatch), - /*6272*/ uint16(xSetOp), uint16(CMPXCHG), - /*6274*/ uint16(xReadSlashR), - /*6275*/ uint16(xArgRM32), - /*6276*/ uint16(xArgR32), - /*6277*/ uint16(xMatch), - /*6278*/ uint16(xCondDataSize), 6266, 6272, 6282, - /*6282*/ uint16(xSetOp), uint16(CMPXCHG), - /*6284*/ uint16(xReadSlashR), - /*6285*/ uint16(xArgRM64), - /*6286*/ uint16(xArgR64), - /*6287*/ uint16(xMatch), - /*6288*/ uint16(xCondIs64), 6291, 6307, - /*6291*/ uint16(xCondDataSize), 6295, 6301, 0, - /*6295*/ uint16(xSetOp), uint16(LSS), - /*6297*/ uint16(xReadSlashR), - /*6298*/ uint16(xArgR16), - /*6299*/ uint16(xArgM16colon16), - /*6300*/ uint16(xMatch), - /*6301*/ uint16(xSetOp), uint16(LSS), - /*6303*/ uint16(xReadSlashR), - /*6304*/ uint16(xArgR32), - /*6305*/ uint16(xArgM16colon32), - /*6306*/ uint16(xMatch), - /*6307*/ uint16(xCondDataSize), 6295, 6301, 6311, - /*6311*/ uint16(xSetOp), uint16(LSS), - /*6313*/ uint16(xReadSlashR), - /*6314*/ uint16(xArgR64), - /*6315*/ uint16(xArgM16colon64), - /*6316*/ uint16(xMatch), - /*6317*/ uint16(xCondIs64), 6320, 6336, - /*6320*/ uint16(xCondDataSize), 6324, 6330, 0, - /*6324*/ uint16(xSetOp), uint16(BTR), - /*6326*/ uint16(xReadSlashR), - /*6327*/ uint16(xArgRM16), - /*6328*/ uint16(xArgR16), - /*6329*/ uint16(xMatch), - /*6330*/ uint16(xSetOp), uint16(BTR), - /*6332*/ uint16(xReadSlashR), - /*6333*/ uint16(xArgRM32), - /*6334*/ uint16(xArgR32), - /*6335*/ uint16(xMatch), - /*6336*/ uint16(xCondDataSize), 6324, 6330, 6340, - /*6340*/ uint16(xSetOp), uint16(BTR), - /*6342*/ uint16(xReadSlashR), - /*6343*/ uint16(xArgRM64), - /*6344*/ uint16(xArgR64), - /*6345*/ uint16(xMatch), - /*6346*/ uint16(xCondIs64), 6349, 6365, - /*6349*/ uint16(xCondDataSize), 6353, 6359, 0, - /*6353*/ uint16(xSetOp), uint16(LFS), - /*6355*/ uint16(xReadSlashR), - /*6356*/ uint16(xArgR16), - /*6357*/ uint16(xArgM16colon16), - /*6358*/ uint16(xMatch), - /*6359*/ uint16(xSetOp), uint16(LFS), - /*6361*/ uint16(xReadSlashR), - /*6362*/ uint16(xArgR32), - /*6363*/ uint16(xArgM16colon32), - /*6364*/ uint16(xMatch), - /*6365*/ uint16(xCondDataSize), 6353, 6359, 6369, - /*6369*/ uint16(xSetOp), uint16(LFS), - /*6371*/ uint16(xReadSlashR), - /*6372*/ uint16(xArgR64), - /*6373*/ uint16(xArgM16colon64), - /*6374*/ uint16(xMatch), - /*6375*/ uint16(xCondIs64), 6378, 6394, - /*6378*/ uint16(xCondDataSize), 6382, 6388, 0, - /*6382*/ uint16(xSetOp), uint16(LGS), - /*6384*/ uint16(xReadSlashR), - /*6385*/ uint16(xArgR16), - /*6386*/ uint16(xArgM16colon16), - /*6387*/ uint16(xMatch), - /*6388*/ uint16(xSetOp), uint16(LGS), - /*6390*/ uint16(xReadSlashR), - /*6391*/ uint16(xArgR32), - /*6392*/ uint16(xArgM16colon32), - /*6393*/ uint16(xMatch), - /*6394*/ uint16(xCondDataSize), 6382, 6388, 6398, - /*6398*/ uint16(xSetOp), uint16(LGS), - /*6400*/ uint16(xReadSlashR), - /*6401*/ uint16(xArgR64), - /*6402*/ uint16(xArgM16colon64), - /*6403*/ uint16(xMatch), - /*6404*/ uint16(xCondIs64), 6407, 6423, - /*6407*/ uint16(xCondDataSize), 6411, 6417, 0, - /*6411*/ uint16(xSetOp), uint16(MOVZX), - /*6413*/ uint16(xReadSlashR), - /*6414*/ uint16(xArgR16), - /*6415*/ uint16(xArgRM8), - /*6416*/ uint16(xMatch), - /*6417*/ uint16(xSetOp), uint16(MOVZX), - /*6419*/ uint16(xReadSlashR), - /*6420*/ uint16(xArgR32), - /*6421*/ uint16(xArgRM8), - /*6422*/ uint16(xMatch), - /*6423*/ uint16(xCondDataSize), 6411, 6417, 6427, - /*6427*/ uint16(xSetOp), uint16(MOVZX), - /*6429*/ uint16(xReadSlashR), - /*6430*/ uint16(xArgR64), - /*6431*/ uint16(xArgRM8), - /*6432*/ uint16(xMatch), - /*6433*/ uint16(xCondIs64), 6436, 6452, - /*6436*/ uint16(xCondDataSize), 6440, 6446, 0, - /*6440*/ uint16(xSetOp), uint16(MOVZX), - /*6442*/ uint16(xReadSlashR), - /*6443*/ uint16(xArgR16), - /*6444*/ uint16(xArgRM16), - /*6445*/ uint16(xMatch), - /*6446*/ uint16(xSetOp), uint16(MOVZX), - /*6448*/ uint16(xReadSlashR), - /*6449*/ uint16(xArgR32), - /*6450*/ uint16(xArgRM16), - /*6451*/ uint16(xMatch), - /*6452*/ uint16(xCondDataSize), 6440, 6446, 6456, - /*6456*/ uint16(xSetOp), uint16(MOVZX), - /*6458*/ uint16(xReadSlashR), - /*6459*/ uint16(xArgR64), - /*6460*/ uint16(xArgRM16), - /*6461*/ uint16(xMatch), - /*6462*/ uint16(xCondIs64), 6465, 6485, - /*6465*/ uint16(xCondPrefix), 1, - 0xF3, 6469, - /*6469*/ uint16(xCondDataSize), 6473, 6479, 0, - /*6473*/ uint16(xSetOp), uint16(POPCNT), - /*6475*/ uint16(xReadSlashR), - /*6476*/ uint16(xArgR16), - /*6477*/ uint16(xArgRM16), - /*6478*/ uint16(xMatch), - /*6479*/ uint16(xSetOp), uint16(POPCNT), - /*6481*/ uint16(xReadSlashR), - /*6482*/ uint16(xArgR32), - /*6483*/ uint16(xArgRM32), - /*6484*/ uint16(xMatch), - /*6485*/ uint16(xCondPrefix), 1, - 0xF3, 6489, - /*6489*/ uint16(xCondDataSize), 6473, 6479, 6493, - /*6493*/ uint16(xSetOp), uint16(POPCNT), - /*6495*/ uint16(xReadSlashR), - /*6496*/ uint16(xArgR64), - /*6497*/ uint16(xArgRM64), - /*6498*/ uint16(xMatch), - /*6499*/ uint16(xSetOp), uint16(UD1), - /*6501*/ uint16(xMatch), - /*6502*/ uint16(xCondSlashR), + 4908, // 6 + 4926, // 7 + /*4880*/ uint16(xCondPrefix), 2, + 0x66, 4892, + 0x0, 4886, + /*4886*/ uint16(xSetOp), uint16(PSRLQ), + /*4888*/ uint16(xReadIb), + /*4889*/ uint16(xArgMm2), + /*4890*/ uint16(xArgImm8u), + /*4891*/ uint16(xMatch), + /*4892*/ uint16(xSetOp), uint16(PSRLQ), + /*4894*/ uint16(xReadIb), + /*4895*/ uint16(xArgXmm2), + /*4896*/ uint16(xArgImm8u), + /*4897*/ uint16(xMatch), + /*4898*/ uint16(xCondPrefix), 1, + 0x66, 4902, + /*4902*/ uint16(xSetOp), uint16(PSRLDQ), + /*4904*/ uint16(xReadIb), + /*4905*/ uint16(xArgXmm2), + /*4906*/ uint16(xArgImm8u), + /*4907*/ uint16(xMatch), + /*4908*/ uint16(xCondPrefix), 2, + 0x66, 4920, + 0x0, 4914, + /*4914*/ uint16(xSetOp), uint16(PSLLQ), + /*4916*/ uint16(xReadIb), + /*4917*/ uint16(xArgMm2), + /*4918*/ uint16(xArgImm8u), + /*4919*/ uint16(xMatch), + /*4920*/ uint16(xSetOp), uint16(PSLLQ), + /*4922*/ uint16(xReadIb), + /*4923*/ uint16(xArgXmm2), + /*4924*/ uint16(xArgImm8u), + /*4925*/ uint16(xMatch), + /*4926*/ uint16(xCondPrefix), 1, + 0x66, 4930, + /*4930*/ uint16(xSetOp), uint16(PSLLDQ), + /*4932*/ uint16(xReadIb), + /*4933*/ uint16(xArgXmm2), + /*4934*/ uint16(xArgImm8u), + /*4935*/ uint16(xMatch), + /*4936*/ uint16(xCondPrefix), 2, + 0x66, 4948, + 0x0, 4942, + /*4942*/ uint16(xSetOp), uint16(PCMPEQB), + /*4944*/ uint16(xReadSlashR), + /*4945*/ uint16(xArgMm), + /*4946*/ uint16(xArgMmM64), + /*4947*/ uint16(xMatch), + /*4948*/ uint16(xSetOp), uint16(PCMPEQB), + /*4950*/ uint16(xReadSlashR), + /*4951*/ uint16(xArgXmm1), + /*4952*/ uint16(xArgXmm2M128), + /*4953*/ uint16(xMatch), + /*4954*/ uint16(xCondPrefix), 2, + 0x66, 4966, + 0x0, 4960, + /*4960*/ uint16(xSetOp), uint16(PCMPEQW), + /*4962*/ uint16(xReadSlashR), + /*4963*/ uint16(xArgMm), + /*4964*/ uint16(xArgMmM64), + /*4965*/ uint16(xMatch), + /*4966*/ uint16(xSetOp), uint16(PCMPEQW), + /*4968*/ uint16(xReadSlashR), + /*4969*/ uint16(xArgXmm1), + /*4970*/ uint16(xArgXmm2M128), + /*4971*/ uint16(xMatch), + /*4972*/ uint16(xCondPrefix), 2, + 0x66, 4984, + 0x0, 4978, + /*4978*/ uint16(xSetOp), uint16(PCMPEQD), + /*4980*/ uint16(xReadSlashR), + /*4981*/ uint16(xArgMm), + /*4982*/ uint16(xArgMmM64), + /*4983*/ uint16(xMatch), + /*4984*/ uint16(xSetOp), uint16(PCMPEQD), + /*4986*/ uint16(xReadSlashR), + /*4987*/ uint16(xArgXmm1), + /*4988*/ uint16(xArgXmm2M128), + /*4989*/ uint16(xMatch), + /*4990*/ uint16(xSetOp), uint16(EMMS), + /*4992*/ uint16(xMatch), + /*4993*/ uint16(xCondPrefix), 2, + 0xF2, 5005, + 0x66, 4999, + /*4999*/ uint16(xSetOp), uint16(HADDPD), + /*5001*/ uint16(xReadSlashR), + /*5002*/ uint16(xArgXmm1), + /*5003*/ uint16(xArgXmm2M128), + /*5004*/ uint16(xMatch), + /*5005*/ uint16(xSetOp), uint16(HADDPS), + /*5007*/ uint16(xReadSlashR), + /*5008*/ uint16(xArgXmm1), + /*5009*/ uint16(xArgXmm2M128), + /*5010*/ uint16(xMatch), + /*5011*/ uint16(xCondPrefix), 2, + 0xF2, 5023, + 0x66, 5017, + /*5017*/ uint16(xSetOp), uint16(HSUBPD), + /*5019*/ uint16(xReadSlashR), + /*5020*/ uint16(xArgXmm1), + /*5021*/ uint16(xArgXmm2M128), + /*5022*/ uint16(xMatch), + /*5023*/ uint16(xSetOp), uint16(HSUBPS), + /*5025*/ uint16(xReadSlashR), + /*5026*/ uint16(xArgXmm1), + /*5027*/ uint16(xArgXmm2M128), + /*5028*/ uint16(xMatch), + /*5029*/ uint16(xCondIs64), 5032, 5078, + /*5032*/ uint16(xCondPrefix), 3, + 0xF3, 5072, + 0x66, 5056, + 0x0, 5040, + /*5040*/ uint16(xCondDataSize), 5044, 5050, 0, + /*5044*/ uint16(xSetOp), uint16(MOVD), + /*5046*/ uint16(xReadSlashR), + /*5047*/ uint16(xArgRM32), + /*5048*/ uint16(xArgMm), + /*5049*/ uint16(xMatch), + /*5050*/ uint16(xSetOp), uint16(MOVD), + /*5052*/ uint16(xReadSlashR), + /*5053*/ uint16(xArgRM32), + /*5054*/ uint16(xArgMm), + /*5055*/ uint16(xMatch), + /*5056*/ uint16(xCondDataSize), 5060, 5066, 0, + /*5060*/ uint16(xSetOp), uint16(MOVD), + /*5062*/ uint16(xReadSlashR), + /*5063*/ uint16(xArgRM32), + /*5064*/ uint16(xArgXmm), + /*5065*/ uint16(xMatch), + /*5066*/ uint16(xSetOp), uint16(MOVD), + /*5068*/ uint16(xReadSlashR), + /*5069*/ uint16(xArgRM32), + /*5070*/ uint16(xArgXmm), + /*5071*/ uint16(xMatch), + /*5072*/ uint16(xSetOp), uint16(MOVQ), + /*5074*/ uint16(xReadSlashR), + /*5075*/ uint16(xArgXmm1), + /*5076*/ uint16(xArgXmm2M64), + /*5077*/ uint16(xMatch), + /*5078*/ uint16(xCondPrefix), 3, + 0xF3, 5072, + 0x66, 5096, + 0x0, 5086, + /*5086*/ uint16(xCondDataSize), 5044, 5050, 5090, + /*5090*/ uint16(xSetOp), uint16(MOVQ), + /*5092*/ uint16(xReadSlashR), + /*5093*/ uint16(xArgRM64), + /*5094*/ uint16(xArgMm), + /*5095*/ uint16(xMatch), + /*5096*/ uint16(xCondDataSize), 5060, 5066, 5100, + /*5100*/ uint16(xSetOp), uint16(MOVQ), + /*5102*/ uint16(xReadSlashR), + /*5103*/ uint16(xArgRM64), + /*5104*/ uint16(xArgXmm), + /*5105*/ uint16(xMatch), + /*5106*/ uint16(xCondPrefix), 3, + 0xF3, 5126, + 0x66, 5120, + 0x0, 5114, + /*5114*/ uint16(xSetOp), uint16(MOVQ), + /*5116*/ uint16(xReadSlashR), + /*5117*/ uint16(xArgMmM64), + /*5118*/ uint16(xArgMm), + /*5119*/ uint16(xMatch), + /*5120*/ uint16(xSetOp), uint16(MOVDQA), + /*5122*/ uint16(xReadSlashR), + /*5123*/ uint16(xArgXmm2M128), + /*5124*/ uint16(xArgXmm1), + /*5125*/ uint16(xMatch), + /*5126*/ uint16(xSetOp), uint16(MOVDQU), + /*5128*/ uint16(xReadSlashR), + /*5129*/ uint16(xArgXmm2M128), + /*5130*/ uint16(xArgXmm1), + /*5131*/ uint16(xMatch), + /*5132*/ uint16(xCondIs64), 5135, 5149, + /*5135*/ uint16(xCondDataSize), 5139, 5144, 0, + /*5139*/ uint16(xSetOp), uint16(JO), + /*5141*/ uint16(xReadCw), + /*5142*/ uint16(xArgRel16), + /*5143*/ uint16(xMatch), + /*5144*/ uint16(xSetOp), uint16(JO), + /*5146*/ uint16(xReadCd), + /*5147*/ uint16(xArgRel32), + /*5148*/ uint16(xMatch), + /*5149*/ uint16(xCondDataSize), 5153, 5144, 5158, + /*5153*/ uint16(xSetOp), uint16(JO), + /*5155*/ uint16(xReadCd), + /*5156*/ uint16(xArgRel32), + /*5157*/ uint16(xMatch), + /*5158*/ uint16(xSetOp), uint16(JO), + /*5160*/ uint16(xReadCd), + /*5161*/ uint16(xArgRel32), + /*5162*/ uint16(xMatch), + /*5163*/ uint16(xCondIs64), 5166, 5180, + /*5166*/ uint16(xCondDataSize), 5170, 5175, 0, + /*5170*/ uint16(xSetOp), uint16(JNO), + /*5172*/ uint16(xReadCw), + /*5173*/ uint16(xArgRel16), + /*5174*/ uint16(xMatch), + /*5175*/ uint16(xSetOp), uint16(JNO), + /*5177*/ uint16(xReadCd), + /*5178*/ uint16(xArgRel32), + /*5179*/ uint16(xMatch), + /*5180*/ uint16(xCondDataSize), 5184, 5175, 5189, + /*5184*/ uint16(xSetOp), uint16(JNO), + /*5186*/ uint16(xReadCd), + /*5187*/ uint16(xArgRel32), + /*5188*/ uint16(xMatch), + /*5189*/ uint16(xSetOp), uint16(JNO), + /*5191*/ uint16(xReadCd), + /*5192*/ uint16(xArgRel32), + /*5193*/ uint16(xMatch), + /*5194*/ uint16(xCondIs64), 5197, 5211, + /*5197*/ uint16(xCondDataSize), 5201, 5206, 0, + /*5201*/ uint16(xSetOp), uint16(JB), + /*5203*/ uint16(xReadCw), + /*5204*/ uint16(xArgRel16), + /*5205*/ uint16(xMatch), + /*5206*/ uint16(xSetOp), uint16(JB), + /*5208*/ uint16(xReadCd), + /*5209*/ uint16(xArgRel32), + /*5210*/ uint16(xMatch), + /*5211*/ uint16(xCondDataSize), 5215, 5206, 5220, + /*5215*/ uint16(xSetOp), uint16(JB), + /*5217*/ uint16(xReadCd), + /*5218*/ uint16(xArgRel32), + /*5219*/ uint16(xMatch), + /*5220*/ uint16(xSetOp), uint16(JB), + /*5222*/ uint16(xReadCd), + /*5223*/ uint16(xArgRel32), + /*5224*/ uint16(xMatch), + /*5225*/ uint16(xCondIs64), 5228, 5242, + /*5228*/ uint16(xCondDataSize), 5232, 5237, 0, + /*5232*/ uint16(xSetOp), uint16(JAE), + /*5234*/ uint16(xReadCw), + /*5235*/ uint16(xArgRel16), + /*5236*/ uint16(xMatch), + /*5237*/ uint16(xSetOp), uint16(JAE), + /*5239*/ uint16(xReadCd), + /*5240*/ uint16(xArgRel32), + /*5241*/ uint16(xMatch), + /*5242*/ uint16(xCondDataSize), 5246, 5237, 5251, + /*5246*/ uint16(xSetOp), uint16(JAE), + /*5248*/ uint16(xReadCd), + /*5249*/ uint16(xArgRel32), + /*5250*/ uint16(xMatch), + /*5251*/ uint16(xSetOp), uint16(JAE), + /*5253*/ uint16(xReadCd), + /*5254*/ uint16(xArgRel32), + /*5255*/ uint16(xMatch), + /*5256*/ uint16(xCondIs64), 5259, 5273, + /*5259*/ uint16(xCondDataSize), 5263, 5268, 0, + /*5263*/ uint16(xSetOp), uint16(JE), + /*5265*/ uint16(xReadCw), + /*5266*/ uint16(xArgRel16), + /*5267*/ uint16(xMatch), + /*5268*/ uint16(xSetOp), uint16(JE), + /*5270*/ uint16(xReadCd), + /*5271*/ uint16(xArgRel32), + /*5272*/ uint16(xMatch), + /*5273*/ uint16(xCondDataSize), 5277, 5268, 5282, + /*5277*/ uint16(xSetOp), uint16(JE), + /*5279*/ uint16(xReadCd), + /*5280*/ uint16(xArgRel32), + /*5281*/ uint16(xMatch), + /*5282*/ uint16(xSetOp), uint16(JE), + /*5284*/ uint16(xReadCd), + /*5285*/ uint16(xArgRel32), + /*5286*/ uint16(xMatch), + /*5287*/ uint16(xCondIs64), 5290, 5304, + /*5290*/ uint16(xCondDataSize), 5294, 5299, 0, + /*5294*/ uint16(xSetOp), uint16(JNE), + /*5296*/ uint16(xReadCw), + /*5297*/ uint16(xArgRel16), + /*5298*/ uint16(xMatch), + /*5299*/ uint16(xSetOp), uint16(JNE), + /*5301*/ uint16(xReadCd), + /*5302*/ uint16(xArgRel32), + /*5303*/ uint16(xMatch), + /*5304*/ uint16(xCondDataSize), 5308, 5299, 5313, + /*5308*/ uint16(xSetOp), uint16(JNE), + /*5310*/ uint16(xReadCd), + /*5311*/ uint16(xArgRel32), + /*5312*/ uint16(xMatch), + /*5313*/ uint16(xSetOp), uint16(JNE), + /*5315*/ uint16(xReadCd), + /*5316*/ uint16(xArgRel32), + /*5317*/ uint16(xMatch), + /*5318*/ uint16(xCondIs64), 5321, 5335, + /*5321*/ uint16(xCondDataSize), 5325, 5330, 0, + /*5325*/ uint16(xSetOp), uint16(JBE), + /*5327*/ uint16(xReadCw), + /*5328*/ uint16(xArgRel16), + /*5329*/ uint16(xMatch), + /*5330*/ uint16(xSetOp), uint16(JBE), + /*5332*/ uint16(xReadCd), + /*5333*/ uint16(xArgRel32), + /*5334*/ uint16(xMatch), + /*5335*/ uint16(xCondDataSize), 5339, 5330, 5344, + /*5339*/ uint16(xSetOp), uint16(JBE), + /*5341*/ uint16(xReadCd), + /*5342*/ uint16(xArgRel32), + /*5343*/ uint16(xMatch), + /*5344*/ uint16(xSetOp), uint16(JBE), + /*5346*/ uint16(xReadCd), + /*5347*/ uint16(xArgRel32), + /*5348*/ uint16(xMatch), + /*5349*/ uint16(xCondIs64), 5352, 5366, + /*5352*/ uint16(xCondDataSize), 5356, 5361, 0, + /*5356*/ uint16(xSetOp), uint16(JA), + /*5358*/ uint16(xReadCw), + /*5359*/ uint16(xArgRel16), + /*5360*/ uint16(xMatch), + /*5361*/ uint16(xSetOp), uint16(JA), + /*5363*/ uint16(xReadCd), + /*5364*/ uint16(xArgRel32), + /*5365*/ uint16(xMatch), + /*5366*/ uint16(xCondDataSize), 5370, 5361, 5375, + /*5370*/ uint16(xSetOp), uint16(JA), + /*5372*/ uint16(xReadCd), + /*5373*/ uint16(xArgRel32), + /*5374*/ uint16(xMatch), + /*5375*/ uint16(xSetOp), uint16(JA), + /*5377*/ uint16(xReadCd), + /*5378*/ uint16(xArgRel32), + /*5379*/ uint16(xMatch), + /*5380*/ uint16(xCondIs64), 5383, 5397, + /*5383*/ uint16(xCondDataSize), 5387, 5392, 0, + /*5387*/ uint16(xSetOp), uint16(JS), + /*5389*/ uint16(xReadCw), + /*5390*/ uint16(xArgRel16), + /*5391*/ uint16(xMatch), + /*5392*/ uint16(xSetOp), uint16(JS), + /*5394*/ uint16(xReadCd), + /*5395*/ uint16(xArgRel32), + /*5396*/ uint16(xMatch), + /*5397*/ uint16(xCondDataSize), 5401, 5392, 5406, + /*5401*/ uint16(xSetOp), uint16(JS), + /*5403*/ uint16(xReadCd), + /*5404*/ uint16(xArgRel32), + /*5405*/ uint16(xMatch), + /*5406*/ uint16(xSetOp), uint16(JS), + /*5408*/ uint16(xReadCd), + /*5409*/ uint16(xArgRel32), + /*5410*/ uint16(xMatch), + /*5411*/ uint16(xCondIs64), 5414, 5428, + /*5414*/ uint16(xCondDataSize), 5418, 5423, 0, + /*5418*/ uint16(xSetOp), uint16(JNS), + /*5420*/ uint16(xReadCw), + /*5421*/ uint16(xArgRel16), + /*5422*/ uint16(xMatch), + /*5423*/ uint16(xSetOp), uint16(JNS), + /*5425*/ uint16(xReadCd), + /*5426*/ uint16(xArgRel32), + /*5427*/ uint16(xMatch), + /*5428*/ uint16(xCondDataSize), 5432, 5423, 5437, + /*5432*/ uint16(xSetOp), uint16(JNS), + /*5434*/ uint16(xReadCd), + /*5435*/ uint16(xArgRel32), + /*5436*/ uint16(xMatch), + /*5437*/ uint16(xSetOp), uint16(JNS), + /*5439*/ uint16(xReadCd), + /*5440*/ uint16(xArgRel32), + /*5441*/ uint16(xMatch), + /*5442*/ uint16(xCondIs64), 5445, 5459, + /*5445*/ uint16(xCondDataSize), 5449, 5454, 0, + /*5449*/ uint16(xSetOp), uint16(JP), + /*5451*/ uint16(xReadCw), + /*5452*/ uint16(xArgRel16), + /*5453*/ uint16(xMatch), + /*5454*/ uint16(xSetOp), uint16(JP), + /*5456*/ uint16(xReadCd), + /*5457*/ uint16(xArgRel32), + /*5458*/ uint16(xMatch), + /*5459*/ uint16(xCondDataSize), 5463, 5454, 5468, + /*5463*/ uint16(xSetOp), uint16(JP), + /*5465*/ uint16(xReadCd), + /*5466*/ uint16(xArgRel32), + /*5467*/ uint16(xMatch), + /*5468*/ uint16(xSetOp), uint16(JP), + /*5470*/ uint16(xReadCd), + /*5471*/ uint16(xArgRel32), + /*5472*/ uint16(xMatch), + /*5473*/ uint16(xCondIs64), 5476, 5490, + /*5476*/ uint16(xCondDataSize), 5480, 5485, 0, + /*5480*/ uint16(xSetOp), uint16(JNP), + /*5482*/ uint16(xReadCw), + /*5483*/ uint16(xArgRel16), + /*5484*/ uint16(xMatch), + /*5485*/ uint16(xSetOp), uint16(JNP), + /*5487*/ uint16(xReadCd), + /*5488*/ uint16(xArgRel32), + /*5489*/ uint16(xMatch), + /*5490*/ uint16(xCondDataSize), 5494, 5485, 5499, + /*5494*/ uint16(xSetOp), uint16(JNP), + /*5496*/ uint16(xReadCd), + /*5497*/ uint16(xArgRel32), + /*5498*/ uint16(xMatch), + /*5499*/ uint16(xSetOp), uint16(JNP), + /*5501*/ uint16(xReadCd), + /*5502*/ uint16(xArgRel32), + /*5503*/ uint16(xMatch), + /*5504*/ uint16(xCondIs64), 5507, 5521, + /*5507*/ uint16(xCondDataSize), 5511, 5516, 0, + /*5511*/ uint16(xSetOp), uint16(JL), + /*5513*/ uint16(xReadCw), + /*5514*/ uint16(xArgRel16), + /*5515*/ uint16(xMatch), + /*5516*/ uint16(xSetOp), uint16(JL), + /*5518*/ uint16(xReadCd), + /*5519*/ uint16(xArgRel32), + /*5520*/ uint16(xMatch), + /*5521*/ uint16(xCondDataSize), 5525, 5516, 5530, + /*5525*/ uint16(xSetOp), uint16(JL), + /*5527*/ uint16(xReadCd), + /*5528*/ uint16(xArgRel32), + /*5529*/ uint16(xMatch), + /*5530*/ uint16(xSetOp), uint16(JL), + /*5532*/ uint16(xReadCd), + /*5533*/ uint16(xArgRel32), + /*5534*/ uint16(xMatch), + /*5535*/ uint16(xCondIs64), 5538, 5552, + /*5538*/ uint16(xCondDataSize), 5542, 5547, 0, + /*5542*/ uint16(xSetOp), uint16(JGE), + /*5544*/ uint16(xReadCw), + /*5545*/ uint16(xArgRel16), + /*5546*/ uint16(xMatch), + /*5547*/ uint16(xSetOp), uint16(JGE), + /*5549*/ uint16(xReadCd), + /*5550*/ uint16(xArgRel32), + /*5551*/ uint16(xMatch), + /*5552*/ uint16(xCondDataSize), 5556, 5547, 5561, + /*5556*/ uint16(xSetOp), uint16(JGE), + /*5558*/ uint16(xReadCd), + /*5559*/ uint16(xArgRel32), + /*5560*/ uint16(xMatch), + /*5561*/ uint16(xSetOp), uint16(JGE), + /*5563*/ uint16(xReadCd), + /*5564*/ uint16(xArgRel32), + /*5565*/ uint16(xMatch), + /*5566*/ uint16(xCondIs64), 5569, 5583, + /*5569*/ uint16(xCondDataSize), 5573, 5578, 0, + /*5573*/ uint16(xSetOp), uint16(JLE), + /*5575*/ uint16(xReadCw), + /*5576*/ uint16(xArgRel16), + /*5577*/ uint16(xMatch), + /*5578*/ uint16(xSetOp), uint16(JLE), + /*5580*/ uint16(xReadCd), + /*5581*/ uint16(xArgRel32), + /*5582*/ uint16(xMatch), + /*5583*/ uint16(xCondDataSize), 5587, 5578, 5592, + /*5587*/ uint16(xSetOp), uint16(JLE), + /*5589*/ uint16(xReadCd), + /*5590*/ uint16(xArgRel32), + /*5591*/ uint16(xMatch), + /*5592*/ uint16(xSetOp), uint16(JLE), + /*5594*/ uint16(xReadCd), + /*5595*/ uint16(xArgRel32), + /*5596*/ uint16(xMatch), + /*5597*/ uint16(xCondIs64), 5600, 5614, + /*5600*/ uint16(xCondDataSize), 5604, 5609, 0, + /*5604*/ uint16(xSetOp), uint16(JG), + /*5606*/ uint16(xReadCw), + /*5607*/ uint16(xArgRel16), + /*5608*/ uint16(xMatch), + /*5609*/ uint16(xSetOp), uint16(JG), + /*5611*/ uint16(xReadCd), + /*5612*/ uint16(xArgRel32), + /*5613*/ uint16(xMatch), + /*5614*/ uint16(xCondDataSize), 5618, 5609, 5623, + /*5618*/ uint16(xSetOp), uint16(JG), + /*5620*/ uint16(xReadCd), + /*5621*/ uint16(xArgRel32), + /*5622*/ uint16(xMatch), + /*5623*/ uint16(xSetOp), uint16(JG), + /*5625*/ uint16(xReadCd), + /*5626*/ uint16(xArgRel32), + /*5627*/ uint16(xMatch), + /*5628*/ uint16(xSetOp), uint16(SETO), + /*5630*/ uint16(xReadSlashR), + /*5631*/ uint16(xArgRM8), + /*5632*/ uint16(xMatch), + /*5633*/ uint16(xSetOp), uint16(SETNO), + /*5635*/ uint16(xReadSlashR), + /*5636*/ uint16(xArgRM8), + /*5637*/ uint16(xMatch), + /*5638*/ uint16(xSetOp), uint16(SETB), + /*5640*/ uint16(xReadSlashR), + /*5641*/ uint16(xArgRM8), + /*5642*/ uint16(xMatch), + /*5643*/ uint16(xSetOp), uint16(SETAE), + /*5645*/ uint16(xReadSlashR), + /*5646*/ uint16(xArgRM8), + /*5647*/ uint16(xMatch), + /*5648*/ uint16(xSetOp), uint16(SETE), + /*5650*/ uint16(xReadSlashR), + /*5651*/ uint16(xArgRM8), + /*5652*/ uint16(xMatch), + /*5653*/ uint16(xSetOp), uint16(SETNE), + /*5655*/ uint16(xReadSlashR), + /*5656*/ uint16(xArgRM8), + /*5657*/ uint16(xMatch), + /*5658*/ uint16(xSetOp), uint16(SETBE), + /*5660*/ uint16(xReadSlashR), + /*5661*/ uint16(xArgRM8), + /*5662*/ uint16(xMatch), + /*5663*/ uint16(xSetOp), uint16(SETA), + /*5665*/ uint16(xReadSlashR), + /*5666*/ uint16(xArgRM8), + /*5667*/ uint16(xMatch), + /*5668*/ uint16(xSetOp), uint16(SETS), + /*5670*/ uint16(xReadSlashR), + /*5671*/ uint16(xArgRM8), + /*5672*/ uint16(xMatch), + /*5673*/ uint16(xSetOp), uint16(SETNS), + /*5675*/ uint16(xReadSlashR), + /*5676*/ uint16(xArgRM8), + /*5677*/ uint16(xMatch), + /*5678*/ uint16(xSetOp), uint16(SETP), + /*5680*/ uint16(xReadSlashR), + /*5681*/ uint16(xArgRM8), + /*5682*/ uint16(xMatch), + /*5683*/ uint16(xSetOp), uint16(SETNP), + /*5685*/ uint16(xReadSlashR), + /*5686*/ uint16(xArgRM8), + /*5687*/ uint16(xMatch), + /*5688*/ uint16(xSetOp), uint16(SETL), + /*5690*/ uint16(xReadSlashR), + /*5691*/ uint16(xArgRM8), + /*5692*/ uint16(xMatch), + /*5693*/ uint16(xSetOp), uint16(SETGE), + /*5695*/ uint16(xReadSlashR), + /*5696*/ uint16(xArgRM8), + /*5697*/ uint16(xMatch), + /*5698*/ uint16(xSetOp), uint16(SETLE), + /*5700*/ uint16(xReadSlashR), + /*5701*/ uint16(xArgRM8), + /*5702*/ uint16(xMatch), + /*5703*/ uint16(xSetOp), uint16(SETG), + /*5705*/ uint16(xReadSlashR), + /*5706*/ uint16(xArgRM8), + /*5707*/ uint16(xMatch), + /*5708*/ uint16(xSetOp), uint16(PUSH), + /*5710*/ uint16(xArgFS), + /*5711*/ uint16(xMatch), + /*5712*/ uint16(xCondIs64), 5715, 5727, + /*5715*/ uint16(xCondDataSize), 5719, 5723, 0, + /*5719*/ uint16(xSetOp), uint16(POP), + /*5721*/ uint16(xArgFS), + /*5722*/ uint16(xMatch), + /*5723*/ uint16(xSetOp), uint16(POP), + /*5725*/ uint16(xArgFS), + /*5726*/ uint16(xMatch), + /*5727*/ uint16(xCondDataSize), 5719, 5731, 5735, + /*5731*/ uint16(xSetOp), uint16(POP), + /*5733*/ uint16(xArgFS), + /*5734*/ uint16(xMatch), + /*5735*/ uint16(xSetOp), uint16(POP), + /*5737*/ uint16(xArgFS), + /*5738*/ uint16(xMatch), + /*5739*/ uint16(xSetOp), uint16(CPUID), + /*5741*/ uint16(xMatch), + /*5742*/ uint16(xCondIs64), 5745, 5761, + /*5745*/ uint16(xCondDataSize), 5749, 5755, 0, + /*5749*/ uint16(xSetOp), uint16(BT), + /*5751*/ uint16(xReadSlashR), + /*5752*/ uint16(xArgRM16), + /*5753*/ uint16(xArgR16), + /*5754*/ uint16(xMatch), + /*5755*/ uint16(xSetOp), uint16(BT), + /*5757*/ uint16(xReadSlashR), + /*5758*/ uint16(xArgRM32), + /*5759*/ uint16(xArgR32), + /*5760*/ uint16(xMatch), + /*5761*/ uint16(xCondDataSize), 5749, 5755, 5765, + /*5765*/ uint16(xSetOp), uint16(BT), + /*5767*/ uint16(xReadSlashR), + /*5768*/ uint16(xArgRM64), + /*5769*/ uint16(xArgR64), + /*5770*/ uint16(xMatch), + /*5771*/ uint16(xCondIs64), 5774, 5794, + /*5774*/ uint16(xCondDataSize), 5778, 5786, 0, + /*5778*/ uint16(xSetOp), uint16(SHLD), + /*5780*/ uint16(xReadSlashR), + /*5781*/ uint16(xReadIb), + /*5782*/ uint16(xArgRM16), + /*5783*/ uint16(xArgR16), + /*5784*/ uint16(xArgImm8u), + /*5785*/ uint16(xMatch), + /*5786*/ uint16(xSetOp), uint16(SHLD), + /*5788*/ uint16(xReadSlashR), + /*5789*/ uint16(xReadIb), + /*5790*/ uint16(xArgRM32), + /*5791*/ uint16(xArgR32), + /*5792*/ uint16(xArgImm8u), + /*5793*/ uint16(xMatch), + /*5794*/ uint16(xCondDataSize), 5778, 5786, 5798, + /*5798*/ uint16(xSetOp), uint16(SHLD), + /*5800*/ uint16(xReadSlashR), + /*5801*/ uint16(xReadIb), + /*5802*/ uint16(xArgRM64), + /*5803*/ uint16(xArgR64), + /*5804*/ uint16(xArgImm8u), + /*5805*/ uint16(xMatch), + /*5806*/ uint16(xCondIs64), 5809, 5827, + /*5809*/ uint16(xCondDataSize), 5813, 5820, 0, + /*5813*/ uint16(xSetOp), uint16(SHLD), + /*5815*/ uint16(xReadSlashR), + /*5816*/ uint16(xArgRM16), + /*5817*/ uint16(xArgR16), + /*5818*/ uint16(xArgCL), + /*5819*/ uint16(xMatch), + /*5820*/ uint16(xSetOp), uint16(SHLD), + /*5822*/ uint16(xReadSlashR), + /*5823*/ uint16(xArgRM32), + /*5824*/ uint16(xArgR32), + /*5825*/ uint16(xArgCL), + /*5826*/ uint16(xMatch), + /*5827*/ uint16(xCondDataSize), 5813, 5820, 5831, + /*5831*/ uint16(xSetOp), uint16(SHLD), + /*5833*/ uint16(xReadSlashR), + /*5834*/ uint16(xArgRM64), + /*5835*/ uint16(xArgR64), + /*5836*/ uint16(xArgCL), + /*5837*/ uint16(xMatch), + /*5838*/ uint16(xSetOp), uint16(PUSH), + /*5840*/ uint16(xArgGS), + /*5841*/ uint16(xMatch), + /*5842*/ uint16(xCondIs64), 5845, 5857, + /*5845*/ uint16(xCondDataSize), 5849, 5853, 0, + /*5849*/ uint16(xSetOp), uint16(POP), + /*5851*/ uint16(xArgGS), + /*5852*/ uint16(xMatch), + /*5853*/ uint16(xSetOp), uint16(POP), + /*5855*/ uint16(xArgGS), + /*5856*/ uint16(xMatch), + /*5857*/ uint16(xCondDataSize), 5849, 5861, 5865, + /*5861*/ uint16(xSetOp), uint16(POP), + /*5863*/ uint16(xArgGS), + /*5864*/ uint16(xMatch), + /*5865*/ uint16(xSetOp), uint16(POP), + /*5867*/ uint16(xArgGS), + /*5868*/ uint16(xMatch), + /*5869*/ uint16(xSetOp), uint16(RSM), + /*5871*/ uint16(xMatch), + /*5872*/ uint16(xCondIs64), 5875, 5891, + /*5875*/ uint16(xCondDataSize), 5879, 5885, 0, + /*5879*/ uint16(xSetOp), uint16(BTS), + /*5881*/ uint16(xReadSlashR), + /*5882*/ uint16(xArgRM16), + /*5883*/ uint16(xArgR16), + /*5884*/ uint16(xMatch), + /*5885*/ uint16(xSetOp), uint16(BTS), + /*5887*/ uint16(xReadSlashR), + /*5888*/ uint16(xArgRM32), + /*5889*/ uint16(xArgR32), + /*5890*/ uint16(xMatch), + /*5891*/ uint16(xCondDataSize), 5879, 5885, 5895, + /*5895*/ uint16(xSetOp), uint16(BTS), + /*5897*/ uint16(xReadSlashR), + /*5898*/ uint16(xArgRM64), + /*5899*/ uint16(xArgR64), + /*5900*/ uint16(xMatch), + /*5901*/ uint16(xCondIs64), 5904, 5924, + /*5904*/ uint16(xCondDataSize), 5908, 5916, 0, + /*5908*/ uint16(xSetOp), uint16(SHRD), + /*5910*/ uint16(xReadSlashR), + /*5911*/ uint16(xReadIb), + /*5912*/ uint16(xArgRM16), + /*5913*/ uint16(xArgR16), + /*5914*/ uint16(xArgImm8u), + /*5915*/ uint16(xMatch), + /*5916*/ uint16(xSetOp), uint16(SHRD), + /*5918*/ uint16(xReadSlashR), + /*5919*/ uint16(xReadIb), + /*5920*/ uint16(xArgRM32), + /*5921*/ uint16(xArgR32), + /*5922*/ uint16(xArgImm8u), + /*5923*/ uint16(xMatch), + /*5924*/ uint16(xCondDataSize), 5908, 5916, 5928, + /*5928*/ uint16(xSetOp), uint16(SHRD), + /*5930*/ uint16(xReadSlashR), + /*5931*/ uint16(xReadIb), + /*5932*/ uint16(xArgRM64), + /*5933*/ uint16(xArgR64), + /*5934*/ uint16(xArgImm8u), + /*5935*/ uint16(xMatch), + /*5936*/ uint16(xCondIs64), 5939, 5957, + /*5939*/ uint16(xCondDataSize), 5943, 5950, 0, + /*5943*/ uint16(xSetOp), uint16(SHRD), + /*5945*/ uint16(xReadSlashR), + /*5946*/ uint16(xArgRM16), + /*5947*/ uint16(xArgR16), + /*5948*/ uint16(xArgCL), + /*5949*/ uint16(xMatch), + /*5950*/ uint16(xSetOp), uint16(SHRD), + /*5952*/ uint16(xReadSlashR), + /*5953*/ uint16(xArgRM32), + /*5954*/ uint16(xArgR32), + /*5955*/ uint16(xArgCL), + /*5956*/ uint16(xMatch), + /*5957*/ uint16(xCondDataSize), 5943, 5950, 5961, + /*5961*/ uint16(xSetOp), uint16(SHRD), + /*5963*/ uint16(xReadSlashR), + /*5964*/ uint16(xArgRM64), + /*5965*/ uint16(xArgR64), + /*5966*/ uint16(xArgCL), + /*5967*/ uint16(xMatch), + /*5968*/ uint16(xCondByte), 3, + 0xE8, 6217, + 0xF0, 6220, + 0xF8, 6223, + /*5976*/ uint16(xCondSlashR), + 5985, // 0 + 6039, // 1 + 6093, // 2 + 6122, // 3 + 6151, // 4 + 6174, // 5 + 6197, // 6 + 6213, // 7 + /*5985*/ uint16(xCondIs64), 5988, 6000, + /*5988*/ uint16(xCondDataSize), 5992, 5996, 0, + /*5992*/ uint16(xSetOp), uint16(FXSAVE), + /*5994*/ uint16(xArgM512byte), + /*5995*/ uint16(xMatch), + /*5996*/ uint16(xSetOp), uint16(FXSAVE), + /*5998*/ uint16(xArgM512byte), + /*5999*/ uint16(xMatch), + /*6000*/ uint16(xCondPrefix), 2, + 0xF3, 6014, + 0x0, 6006, + /*6006*/ uint16(xCondDataSize), 5992, 5996, 6010, + /*6010*/ uint16(xSetOp), uint16(FXSAVE64), + /*6012*/ uint16(xArgM512byte), + /*6013*/ uint16(xMatch), + /*6014*/ uint16(xCondDataSize), 6018, 6025, 6032, + /*6018*/ uint16(xCondIsMem), 6021, 0, + /*6021*/ uint16(xSetOp), uint16(RDFSBASE), + /*6023*/ uint16(xArgRM32), + /*6024*/ uint16(xMatch), + /*6025*/ uint16(xCondIsMem), 6028, 0, + /*6028*/ uint16(xSetOp), uint16(RDFSBASE), + /*6030*/ uint16(xArgRM32), + /*6031*/ uint16(xMatch), + /*6032*/ uint16(xCondIsMem), 6035, 0, + /*6035*/ uint16(xSetOp), uint16(RDFSBASE), + /*6037*/ uint16(xArgRM64), + /*6038*/ uint16(xMatch), + /*6039*/ uint16(xCondIs64), 6042, 6054, + /*6042*/ uint16(xCondDataSize), 6046, 6050, 0, + /*6046*/ uint16(xSetOp), uint16(FXRSTOR), + /*6048*/ uint16(xArgM512byte), + /*6049*/ uint16(xMatch), + /*6050*/ uint16(xSetOp), uint16(FXRSTOR), + /*6052*/ uint16(xArgM512byte), + /*6053*/ uint16(xMatch), + /*6054*/ uint16(xCondPrefix), 2, + 0xF3, 6068, + 0x0, 6060, + /*6060*/ uint16(xCondDataSize), 6046, 6050, 6064, + /*6064*/ uint16(xSetOp), uint16(FXRSTOR64), + /*6066*/ uint16(xArgM512byte), + /*6067*/ uint16(xMatch), + /*6068*/ uint16(xCondDataSize), 6072, 6079, 6086, + /*6072*/ uint16(xCondIsMem), 6075, 0, + /*6075*/ uint16(xSetOp), uint16(RDGSBASE), + /*6077*/ uint16(xArgRM32), + /*6078*/ uint16(xMatch), + /*6079*/ uint16(xCondIsMem), 6082, 0, + /*6082*/ uint16(xSetOp), uint16(RDGSBASE), + /*6084*/ uint16(xArgRM32), + /*6085*/ uint16(xMatch), + /*6086*/ uint16(xCondIsMem), 6089, 0, + /*6089*/ uint16(xSetOp), uint16(RDGSBASE), + /*6091*/ uint16(xArgRM64), + /*6092*/ uint16(xMatch), + /*6093*/ uint16(xCondIs64), 6096, 6100, + /*6096*/ uint16(xSetOp), uint16(LDMXCSR), + /*6098*/ uint16(xArgM32), + /*6099*/ uint16(xMatch), + /*6100*/ uint16(xCondPrefix), 2, + 0xF3, 6106, + 0x0, 6096, + /*6106*/ uint16(xCondDataSize), 6110, 6114, 6118, + /*6110*/ uint16(xSetOp), uint16(WRFSBASE), + /*6112*/ uint16(xArgRM32), + /*6113*/ uint16(xMatch), + /*6114*/ uint16(xSetOp), uint16(WRFSBASE), + /*6116*/ uint16(xArgRM32), + /*6117*/ uint16(xMatch), + /*6118*/ uint16(xSetOp), uint16(WRFSBASE), + /*6120*/ uint16(xArgRM64), + /*6121*/ uint16(xMatch), + /*6122*/ uint16(xCondIs64), 6125, 6129, + /*6125*/ uint16(xSetOp), uint16(STMXCSR), + /*6127*/ uint16(xArgM32), + /*6128*/ uint16(xMatch), + /*6129*/ uint16(xCondPrefix), 2, + 0xF3, 6135, + 0x0, 6125, + /*6135*/ uint16(xCondDataSize), 6139, 6143, 6147, + /*6139*/ uint16(xSetOp), uint16(WRGSBASE), + /*6141*/ uint16(xArgRM32), + /*6142*/ uint16(xMatch), + /*6143*/ uint16(xSetOp), uint16(WRGSBASE), + /*6145*/ uint16(xArgRM32), + /*6146*/ uint16(xMatch), + /*6147*/ uint16(xSetOp), uint16(WRGSBASE), + /*6149*/ uint16(xArgRM64), + /*6150*/ uint16(xMatch), + /*6151*/ uint16(xCondIs64), 6154, 6166, + /*6154*/ uint16(xCondDataSize), 6158, 6162, 0, + /*6158*/ uint16(xSetOp), uint16(XSAVE), + /*6160*/ uint16(xArgMem), + /*6161*/ uint16(xMatch), + /*6162*/ uint16(xSetOp), uint16(XSAVE), + /*6164*/ uint16(xArgMem), + /*6165*/ uint16(xMatch), + /*6166*/ uint16(xCondDataSize), 6158, 6162, 6170, + /*6170*/ uint16(xSetOp), uint16(XSAVE64), + /*6172*/ uint16(xArgMem), + /*6173*/ uint16(xMatch), + /*6174*/ uint16(xCondIs64), 6177, 6189, + /*6177*/ uint16(xCondDataSize), 6181, 6185, 0, + /*6181*/ uint16(xSetOp), uint16(XRSTOR), + /*6183*/ uint16(xArgMem), + /*6184*/ uint16(xMatch), + /*6185*/ uint16(xSetOp), uint16(XRSTOR), + /*6187*/ uint16(xArgMem), + /*6188*/ uint16(xMatch), + /*6189*/ uint16(xCondDataSize), 6181, 6185, 6193, + /*6193*/ uint16(xSetOp), uint16(XRSTOR64), + /*6195*/ uint16(xArgMem), + /*6196*/ uint16(xMatch), + /*6197*/ uint16(xCondDataSize), 6201, 6205, 6209, + /*6201*/ uint16(xSetOp), uint16(XSAVEOPT), + /*6203*/ uint16(xArgMem), + /*6204*/ uint16(xMatch), + /*6205*/ uint16(xSetOp), uint16(XSAVEOPT), + /*6207*/ uint16(xArgMem), + /*6208*/ uint16(xMatch), + /*6209*/ uint16(xSetOp), uint16(XSAVEOPT64), + /*6211*/ uint16(xArgMem), + /*6212*/ uint16(xMatch), + /*6213*/ uint16(xSetOp), uint16(CLFLUSH), + /*6215*/ uint16(xArgM8), + /*6216*/ uint16(xMatch), + /*6217*/ uint16(xSetOp), uint16(LFENCE), + /*6219*/ uint16(xMatch), + /*6220*/ uint16(xSetOp), uint16(MFENCE), + /*6222*/ uint16(xMatch), + /*6223*/ uint16(xSetOp), uint16(SFENCE), + /*6225*/ uint16(xMatch), + /*6226*/ uint16(xCondIs64), 6229, 6245, + /*6229*/ uint16(xCondDataSize), 6233, 6239, 0, + /*6233*/ uint16(xSetOp), uint16(IMUL), + /*6235*/ uint16(xReadSlashR), + /*6236*/ uint16(xArgR16), + /*6237*/ uint16(xArgRM16), + /*6238*/ uint16(xMatch), + /*6239*/ uint16(xSetOp), uint16(IMUL), + /*6241*/ uint16(xReadSlashR), + /*6242*/ uint16(xArgR32), + /*6243*/ uint16(xArgRM32), + /*6244*/ uint16(xMatch), + /*6245*/ uint16(xCondDataSize), 6233, 6239, 6249, + /*6249*/ uint16(xSetOp), uint16(IMUL), + /*6251*/ uint16(xReadSlashR), + /*6252*/ uint16(xArgR64), + /*6253*/ uint16(xArgRM64), + /*6254*/ uint16(xMatch), + /*6255*/ uint16(xSetOp), uint16(CMPXCHG), + /*6257*/ uint16(xReadSlashR), + /*6258*/ uint16(xArgRM8), + /*6259*/ uint16(xArgR8), + /*6260*/ uint16(xMatch), + /*6261*/ uint16(xCondIs64), 6264, 6280, + /*6264*/ uint16(xCondDataSize), 6268, 6274, 0, + /*6268*/ uint16(xSetOp), uint16(CMPXCHG), + /*6270*/ uint16(xReadSlashR), + /*6271*/ uint16(xArgRM16), + /*6272*/ uint16(xArgR16), + /*6273*/ uint16(xMatch), + /*6274*/ uint16(xSetOp), uint16(CMPXCHG), + /*6276*/ uint16(xReadSlashR), + /*6277*/ uint16(xArgRM32), + /*6278*/ uint16(xArgR32), + /*6279*/ uint16(xMatch), + /*6280*/ uint16(xCondDataSize), 6268, 6274, 6284, + /*6284*/ uint16(xSetOp), uint16(CMPXCHG), + /*6286*/ uint16(xReadSlashR), + /*6287*/ uint16(xArgRM64), + /*6288*/ uint16(xArgR64), + /*6289*/ uint16(xMatch), + /*6290*/ uint16(xCondIs64), 6293, 6309, + /*6293*/ uint16(xCondDataSize), 6297, 6303, 0, + /*6297*/ uint16(xSetOp), uint16(LSS), + /*6299*/ uint16(xReadSlashR), + /*6300*/ uint16(xArgR16), + /*6301*/ uint16(xArgM16colon16), + /*6302*/ uint16(xMatch), + /*6303*/ uint16(xSetOp), uint16(LSS), + /*6305*/ uint16(xReadSlashR), + /*6306*/ uint16(xArgR32), + /*6307*/ uint16(xArgM16colon32), + /*6308*/ uint16(xMatch), + /*6309*/ uint16(xCondDataSize), 6297, 6303, 6313, + /*6313*/ uint16(xSetOp), uint16(LSS), + /*6315*/ uint16(xReadSlashR), + /*6316*/ uint16(xArgR64), + /*6317*/ uint16(xArgM16colon64), + /*6318*/ uint16(xMatch), + /*6319*/ uint16(xCondIs64), 6322, 6338, + /*6322*/ uint16(xCondDataSize), 6326, 6332, 0, + /*6326*/ uint16(xSetOp), uint16(BTR), + /*6328*/ uint16(xReadSlashR), + /*6329*/ uint16(xArgRM16), + /*6330*/ uint16(xArgR16), + /*6331*/ uint16(xMatch), + /*6332*/ uint16(xSetOp), uint16(BTR), + /*6334*/ uint16(xReadSlashR), + /*6335*/ uint16(xArgRM32), + /*6336*/ uint16(xArgR32), + /*6337*/ uint16(xMatch), + /*6338*/ uint16(xCondDataSize), 6326, 6332, 6342, + /*6342*/ uint16(xSetOp), uint16(BTR), + /*6344*/ uint16(xReadSlashR), + /*6345*/ uint16(xArgRM64), + /*6346*/ uint16(xArgR64), + /*6347*/ uint16(xMatch), + /*6348*/ uint16(xCondIs64), 6351, 6367, + /*6351*/ uint16(xCondDataSize), 6355, 6361, 0, + /*6355*/ uint16(xSetOp), uint16(LFS), + /*6357*/ uint16(xReadSlashR), + /*6358*/ uint16(xArgR16), + /*6359*/ uint16(xArgM16colon16), + /*6360*/ uint16(xMatch), + /*6361*/ uint16(xSetOp), uint16(LFS), + /*6363*/ uint16(xReadSlashR), + /*6364*/ uint16(xArgR32), + /*6365*/ uint16(xArgM16colon32), + /*6366*/ uint16(xMatch), + /*6367*/ uint16(xCondDataSize), 6355, 6361, 6371, + /*6371*/ uint16(xSetOp), uint16(LFS), + /*6373*/ uint16(xReadSlashR), + /*6374*/ uint16(xArgR64), + /*6375*/ uint16(xArgM16colon64), + /*6376*/ uint16(xMatch), + /*6377*/ uint16(xCondIs64), 6380, 6396, + /*6380*/ uint16(xCondDataSize), 6384, 6390, 0, + /*6384*/ uint16(xSetOp), uint16(LGS), + /*6386*/ uint16(xReadSlashR), + /*6387*/ uint16(xArgR16), + /*6388*/ uint16(xArgM16colon16), + /*6389*/ uint16(xMatch), + /*6390*/ uint16(xSetOp), uint16(LGS), + /*6392*/ uint16(xReadSlashR), + /*6393*/ uint16(xArgR32), + /*6394*/ uint16(xArgM16colon32), + /*6395*/ uint16(xMatch), + /*6396*/ uint16(xCondDataSize), 6384, 6390, 6400, + /*6400*/ uint16(xSetOp), uint16(LGS), + /*6402*/ uint16(xReadSlashR), + /*6403*/ uint16(xArgR64), + /*6404*/ uint16(xArgM16colon64), + /*6405*/ uint16(xMatch), + /*6406*/ uint16(xCondIs64), 6409, 6425, + /*6409*/ uint16(xCondDataSize), 6413, 6419, 0, + /*6413*/ uint16(xSetOp), uint16(MOVZX), + /*6415*/ uint16(xReadSlashR), + /*6416*/ uint16(xArgR16), + /*6417*/ uint16(xArgRM8), + /*6418*/ uint16(xMatch), + /*6419*/ uint16(xSetOp), uint16(MOVZX), + /*6421*/ uint16(xReadSlashR), + /*6422*/ uint16(xArgR32), + /*6423*/ uint16(xArgRM8), + /*6424*/ uint16(xMatch), + /*6425*/ uint16(xCondDataSize), 6413, 6419, 6429, + /*6429*/ uint16(xSetOp), uint16(MOVZX), + /*6431*/ uint16(xReadSlashR), + /*6432*/ uint16(xArgR64), + /*6433*/ uint16(xArgRM8), + /*6434*/ uint16(xMatch), + /*6435*/ uint16(xCondIs64), 6438, 6454, + /*6438*/ uint16(xCondDataSize), 6442, 6448, 0, + /*6442*/ uint16(xSetOp), uint16(MOVZX), + /*6444*/ uint16(xReadSlashR), + /*6445*/ uint16(xArgR16), + /*6446*/ uint16(xArgRM16), + /*6447*/ uint16(xMatch), + /*6448*/ uint16(xSetOp), uint16(MOVZX), + /*6450*/ uint16(xReadSlashR), + /*6451*/ uint16(xArgR32), + /*6452*/ uint16(xArgRM16), + /*6453*/ uint16(xMatch), + /*6454*/ uint16(xCondDataSize), 6442, 6448, 6458, + /*6458*/ uint16(xSetOp), uint16(MOVZX), + /*6460*/ uint16(xReadSlashR), + /*6461*/ uint16(xArgR64), + /*6462*/ uint16(xArgRM16), + /*6463*/ uint16(xMatch), + /*6464*/ uint16(xCondIs64), 6467, 6487, + /*6467*/ uint16(xCondPrefix), 1, + 0xF3, 6471, + /*6471*/ uint16(xCondDataSize), 6475, 6481, 0, + /*6475*/ uint16(xSetOp), uint16(POPCNT), + /*6477*/ uint16(xReadSlashR), + /*6478*/ uint16(xArgR16), + /*6479*/ uint16(xArgRM16), + /*6480*/ uint16(xMatch), + /*6481*/ uint16(xSetOp), uint16(POPCNT), + /*6483*/ uint16(xReadSlashR), + /*6484*/ uint16(xArgR32), + /*6485*/ uint16(xArgRM32), + /*6486*/ uint16(xMatch), + /*6487*/ uint16(xCondPrefix), 1, + 0xF3, 6491, + /*6491*/ uint16(xCondDataSize), 6475, 6481, 6495, + /*6495*/ uint16(xSetOp), uint16(POPCNT), + /*6497*/ uint16(xReadSlashR), + /*6498*/ uint16(xArgR64), + /*6499*/ uint16(xArgRM64), + /*6500*/ uint16(xMatch), + /*6501*/ uint16(xCondDataSize), 0, 6505, 0, + /*6505*/ uint16(xSetOp), uint16(UD1), + /*6507*/ uint16(xReadSlashR), + /*6508*/ uint16(xArgR32), + /*6509*/ uint16(xArgRM32), + /*6510*/ uint16(xMatch), + /*6511*/ uint16(xCondSlashR), 0, // 0 0, // 1 0, // 2 0, // 3 - 6511, // 4 - 6540, // 5 - 6569, // 6 - 6598, // 7 - /*6511*/ uint16(xCondIs64), 6514, 6530, - /*6514*/ uint16(xCondDataSize), 6518, 6524, 0, - /*6518*/ uint16(xSetOp), uint16(BT), - /*6520*/ uint16(xReadIb), - /*6521*/ uint16(xArgRM16), - /*6522*/ uint16(xArgImm8u), - /*6523*/ uint16(xMatch), - /*6524*/ uint16(xSetOp), uint16(BT), - /*6526*/ uint16(xReadIb), - /*6527*/ uint16(xArgRM32), - /*6528*/ uint16(xArgImm8u), - /*6529*/ uint16(xMatch), - /*6530*/ uint16(xCondDataSize), 6518, 6524, 6534, - /*6534*/ uint16(xSetOp), uint16(BT), - /*6536*/ uint16(xReadIb), - /*6537*/ uint16(xArgRM64), - /*6538*/ uint16(xArgImm8u), - /*6539*/ uint16(xMatch), - /*6540*/ uint16(xCondIs64), 6543, 6559, - /*6543*/ uint16(xCondDataSize), 6547, 6553, 0, - /*6547*/ uint16(xSetOp), uint16(BTS), - /*6549*/ uint16(xReadIb), - /*6550*/ uint16(xArgRM16), - /*6551*/ uint16(xArgImm8u), - /*6552*/ uint16(xMatch), - /*6553*/ uint16(xSetOp), uint16(BTS), - /*6555*/ uint16(xReadIb), - /*6556*/ uint16(xArgRM32), - /*6557*/ uint16(xArgImm8u), - /*6558*/ uint16(xMatch), - /*6559*/ uint16(xCondDataSize), 6547, 6553, 6563, - /*6563*/ uint16(xSetOp), uint16(BTS), - /*6565*/ uint16(xReadIb), - /*6566*/ uint16(xArgRM64), - /*6567*/ uint16(xArgImm8u), - /*6568*/ uint16(xMatch), - /*6569*/ uint16(xCondIs64), 6572, 6588, - /*6572*/ uint16(xCondDataSize), 6576, 6582, 0, - /*6576*/ uint16(xSetOp), uint16(BTR), - /*6578*/ uint16(xReadIb), - /*6579*/ uint16(xArgRM16), - /*6580*/ uint16(xArgImm8u), - /*6581*/ uint16(xMatch), - /*6582*/ uint16(xSetOp), uint16(BTR), - /*6584*/ uint16(xReadIb), - /*6585*/ uint16(xArgRM32), - /*6586*/ uint16(xArgImm8u), - /*6587*/ uint16(xMatch), - /*6588*/ uint16(xCondDataSize), 6576, 6582, 6592, - /*6592*/ uint16(xSetOp), uint16(BTR), - /*6594*/ uint16(xReadIb), - /*6595*/ uint16(xArgRM64), - /*6596*/ uint16(xArgImm8u), - /*6597*/ uint16(xMatch), - /*6598*/ uint16(xCondIs64), 6601, 6617, - /*6601*/ uint16(xCondDataSize), 6605, 6611, 0, - /*6605*/ uint16(xSetOp), uint16(BTC), - /*6607*/ uint16(xReadIb), - /*6608*/ uint16(xArgRM16), - /*6609*/ uint16(xArgImm8u), - /*6610*/ uint16(xMatch), - /*6611*/ uint16(xSetOp), uint16(BTC), - /*6613*/ uint16(xReadIb), - /*6614*/ uint16(xArgRM32), - /*6615*/ uint16(xArgImm8u), - /*6616*/ uint16(xMatch), - /*6617*/ uint16(xCondDataSize), 6605, 6611, 6621, - /*6621*/ uint16(xSetOp), uint16(BTC), - /*6623*/ uint16(xReadIb), - /*6624*/ uint16(xArgRM64), - /*6625*/ uint16(xArgImm8u), - /*6626*/ uint16(xMatch), - /*6627*/ uint16(xCondIs64), 6630, 6646, - /*6630*/ uint16(xCondDataSize), 6634, 6640, 0, - /*6634*/ uint16(xSetOp), uint16(BTC), - /*6636*/ uint16(xReadSlashR), - /*6637*/ uint16(xArgRM16), - /*6638*/ uint16(xArgR16), - /*6639*/ uint16(xMatch), - /*6640*/ uint16(xSetOp), uint16(BTC), - /*6642*/ uint16(xReadSlashR), - /*6643*/ uint16(xArgRM32), - /*6644*/ uint16(xArgR32), - /*6645*/ uint16(xMatch), - /*6646*/ uint16(xCondDataSize), 6634, 6640, 6650, - /*6650*/ uint16(xSetOp), uint16(BTC), - /*6652*/ uint16(xReadSlashR), - /*6653*/ uint16(xArgRM64), - /*6654*/ uint16(xArgR64), - /*6655*/ uint16(xMatch), - /*6656*/ uint16(xCondIs64), 6659, 6697, - /*6659*/ uint16(xCondPrefix), 2, - 0xF3, 6681, - 0x0, 6665, - /*6665*/ uint16(xCondDataSize), 6669, 6675, 0, - /*6669*/ uint16(xSetOp), uint16(BSF), - /*6671*/ uint16(xReadSlashR), - /*6672*/ uint16(xArgR16), - /*6673*/ uint16(xArgRM16), - /*6674*/ uint16(xMatch), - /*6675*/ uint16(xSetOp), uint16(BSF), - /*6677*/ uint16(xReadSlashR), - /*6678*/ uint16(xArgR32), - /*6679*/ uint16(xArgRM32), - /*6680*/ uint16(xMatch), - /*6681*/ uint16(xCondDataSize), 6685, 6691, 0, - /*6685*/ uint16(xSetOp), uint16(TZCNT), - /*6687*/ uint16(xReadSlashR), - /*6688*/ uint16(xArgR16), - /*6689*/ uint16(xArgRM16), - /*6690*/ uint16(xMatch), - /*6691*/ uint16(xSetOp), uint16(TZCNT), - /*6693*/ uint16(xReadSlashR), - /*6694*/ uint16(xArgR32), - /*6695*/ uint16(xArgRM32), - /*6696*/ uint16(xMatch), - /*6697*/ uint16(xCondPrefix), 2, - 0xF3, 6713, - 0x0, 6703, - /*6703*/ uint16(xCondDataSize), 6669, 6675, 6707, - /*6707*/ uint16(xSetOp), uint16(BSF), - /*6709*/ uint16(xReadSlashR), - /*6710*/ uint16(xArgR64), - /*6711*/ uint16(xArgRM64), - /*6712*/ uint16(xMatch), - /*6713*/ uint16(xCondDataSize), 6685, 6691, 6717, - /*6717*/ uint16(xSetOp), uint16(TZCNT), - /*6719*/ uint16(xReadSlashR), - /*6720*/ uint16(xArgR64), - /*6721*/ uint16(xArgRM64), - /*6722*/ uint16(xMatch), - /*6723*/ uint16(xCondIs64), 6726, 6764, - /*6726*/ uint16(xCondPrefix), 2, - 0xF3, 6748, - 0x0, 6732, - /*6732*/ uint16(xCondDataSize), 6736, 6742, 0, - /*6736*/ uint16(xSetOp), uint16(BSR), - /*6738*/ uint16(xReadSlashR), - /*6739*/ uint16(xArgR16), - /*6740*/ uint16(xArgRM16), - /*6741*/ uint16(xMatch), - /*6742*/ uint16(xSetOp), uint16(BSR), - /*6744*/ uint16(xReadSlashR), - /*6745*/ uint16(xArgR32), - /*6746*/ uint16(xArgRM32), - /*6747*/ uint16(xMatch), - /*6748*/ uint16(xCondDataSize), 6752, 6758, 0, - /*6752*/ uint16(xSetOp), uint16(LZCNT), - /*6754*/ uint16(xReadSlashR), - /*6755*/ uint16(xArgR16), - /*6756*/ uint16(xArgRM16), - /*6757*/ uint16(xMatch), - /*6758*/ uint16(xSetOp), uint16(LZCNT), - /*6760*/ uint16(xReadSlashR), - /*6761*/ uint16(xArgR32), - /*6762*/ uint16(xArgRM32), - /*6763*/ uint16(xMatch), - /*6764*/ uint16(xCondPrefix), 2, - 0xF3, 6780, - 0x0, 6770, - /*6770*/ uint16(xCondDataSize), 6736, 6742, 6774, - /*6774*/ uint16(xSetOp), uint16(BSR), - /*6776*/ uint16(xReadSlashR), - /*6777*/ uint16(xArgR64), - /*6778*/ uint16(xArgRM64), - /*6779*/ uint16(xMatch), - /*6780*/ uint16(xCondDataSize), 6752, 6758, 6784, - /*6784*/ uint16(xSetOp), uint16(LZCNT), - /*6786*/ uint16(xReadSlashR), - /*6787*/ uint16(xArgR64), - /*6788*/ uint16(xArgRM64), - /*6789*/ uint16(xMatch), - /*6790*/ uint16(xCondIs64), 6793, 6809, - /*6793*/ uint16(xCondDataSize), 6797, 6803, 0, - /*6797*/ uint16(xSetOp), uint16(MOVSX), - /*6799*/ uint16(xReadSlashR), - /*6800*/ uint16(xArgR16), - /*6801*/ uint16(xArgRM8), - /*6802*/ uint16(xMatch), - /*6803*/ uint16(xSetOp), uint16(MOVSX), - /*6805*/ uint16(xReadSlashR), - /*6806*/ uint16(xArgR32), - /*6807*/ uint16(xArgRM8), - /*6808*/ uint16(xMatch), - /*6809*/ uint16(xCondDataSize), 6797, 6803, 6813, - /*6813*/ uint16(xSetOp), uint16(MOVSX), - /*6815*/ uint16(xReadSlashR), - /*6816*/ uint16(xArgR64), - /*6817*/ uint16(xArgRM8), - /*6818*/ uint16(xMatch), - /*6819*/ uint16(xCondIs64), 6822, 6838, - /*6822*/ uint16(xCondDataSize), 6826, 6832, 0, - /*6826*/ uint16(xSetOp), uint16(MOVSX), - /*6828*/ uint16(xReadSlashR), - /*6829*/ uint16(xArgR16), - /*6830*/ uint16(xArgRM16), - /*6831*/ uint16(xMatch), - /*6832*/ uint16(xSetOp), uint16(MOVSX), - /*6834*/ uint16(xReadSlashR), - /*6835*/ uint16(xArgR32), - /*6836*/ uint16(xArgRM16), - /*6837*/ uint16(xMatch), - /*6838*/ uint16(xCondDataSize), 6826, 6832, 6842, - /*6842*/ uint16(xSetOp), uint16(MOVSX), - /*6844*/ uint16(xReadSlashR), - /*6845*/ uint16(xArgR64), - /*6846*/ uint16(xArgRM16), - /*6847*/ uint16(xMatch), - /*6848*/ uint16(xSetOp), uint16(XADD), - /*6850*/ uint16(xReadSlashR), - /*6851*/ uint16(xArgRM8), - /*6852*/ uint16(xArgR8), - /*6853*/ uint16(xMatch), - /*6854*/ uint16(xCondIs64), 6857, 6873, - /*6857*/ uint16(xCondDataSize), 6861, 6867, 0, - /*6861*/ uint16(xSetOp), uint16(XADD), - /*6863*/ uint16(xReadSlashR), - /*6864*/ uint16(xArgRM16), - /*6865*/ uint16(xArgR16), - /*6866*/ uint16(xMatch), - /*6867*/ uint16(xSetOp), uint16(XADD), - /*6869*/ uint16(xReadSlashR), - /*6870*/ uint16(xArgRM32), - /*6871*/ uint16(xArgR32), - /*6872*/ uint16(xMatch), - /*6873*/ uint16(xCondDataSize), 6861, 6867, 6877, - /*6877*/ uint16(xSetOp), uint16(XADD), - /*6879*/ uint16(xReadSlashR), - /*6880*/ uint16(xArgRM64), - /*6881*/ uint16(xArgR64), - /*6882*/ uint16(xMatch), - /*6883*/ uint16(xCondPrefix), 4, - 0xF3, 6917, - 0xF2, 6909, - 0x66, 6901, - 0x0, 6893, - /*6893*/ uint16(xSetOp), uint16(CMPPS), - /*6895*/ uint16(xReadSlashR), - /*6896*/ uint16(xReadIb), - /*6897*/ uint16(xArgXmm1), - /*6898*/ uint16(xArgXmm2M128), - /*6899*/ uint16(xArgImm8u), - /*6900*/ uint16(xMatch), - /*6901*/ uint16(xSetOp), uint16(CMPPD), - /*6903*/ uint16(xReadSlashR), - /*6904*/ uint16(xReadIb), - /*6905*/ uint16(xArgXmm1), - /*6906*/ uint16(xArgXmm2M128), - /*6907*/ uint16(xArgImm8u), - /*6908*/ uint16(xMatch), - /*6909*/ uint16(xSetOp), uint16(CMPSD_XMM), - /*6911*/ uint16(xReadSlashR), - /*6912*/ uint16(xReadIb), - /*6913*/ uint16(xArgXmm1), - /*6914*/ uint16(xArgXmm2M64), - /*6915*/ uint16(xArgImm8u), - /*6916*/ uint16(xMatch), - /*6917*/ uint16(xSetOp), uint16(CMPSS), - /*6919*/ uint16(xReadSlashR), - /*6920*/ uint16(xReadIb), - /*6921*/ uint16(xArgXmm1), - /*6922*/ uint16(xArgXmm2M32), - /*6923*/ uint16(xArgImm8u), - /*6924*/ uint16(xMatch), - /*6925*/ uint16(xCondIs64), 6928, 6944, - /*6928*/ uint16(xCondDataSize), 6932, 6938, 0, - /*6932*/ uint16(xSetOp), uint16(MOVNTI), - /*6934*/ uint16(xReadSlashR), - /*6935*/ uint16(xArgM32), - /*6936*/ uint16(xArgR32), - /*6937*/ uint16(xMatch), - /*6938*/ uint16(xSetOp), uint16(MOVNTI), - /*6940*/ uint16(xReadSlashR), - /*6941*/ uint16(xArgM32), - /*6942*/ uint16(xArgR32), - /*6943*/ uint16(xMatch), - /*6944*/ uint16(xCondDataSize), 6932, 6938, 6948, - /*6948*/ uint16(xSetOp), uint16(MOVNTI), - /*6950*/ uint16(xReadSlashR), - /*6951*/ uint16(xArgM64), - /*6952*/ uint16(xArgR64), - /*6953*/ uint16(xMatch), - /*6954*/ uint16(xCondPrefix), 2, - 0x66, 6968, - 0x0, 6960, - /*6960*/ uint16(xSetOp), uint16(PINSRW), - /*6962*/ uint16(xReadSlashR), - /*6963*/ uint16(xReadIb), - /*6964*/ uint16(xArgMm), - /*6965*/ uint16(xArgR32M16), - /*6966*/ uint16(xArgImm8u), - /*6967*/ uint16(xMatch), - /*6968*/ uint16(xSetOp), uint16(PINSRW), - /*6970*/ uint16(xReadSlashR), - /*6971*/ uint16(xReadIb), - /*6972*/ uint16(xArgXmm), - /*6973*/ uint16(xArgR32M16), - /*6974*/ uint16(xArgImm8u), - /*6975*/ uint16(xMatch), - /*6976*/ uint16(xCondPrefix), 2, - 0x66, 6990, - 0x0, 6982, - /*6982*/ uint16(xSetOp), uint16(PEXTRW), - /*6984*/ uint16(xReadSlashR), - /*6985*/ uint16(xReadIb), - /*6986*/ uint16(xArgR32), - /*6987*/ uint16(xArgMm2), - /*6988*/ uint16(xArgImm8u), - /*6989*/ uint16(xMatch), - /*6990*/ uint16(xSetOp), uint16(PEXTRW), - /*6992*/ uint16(xReadSlashR), - /*6993*/ uint16(xReadIb), - /*6994*/ uint16(xArgR32), - /*6995*/ uint16(xArgXmm2), - /*6996*/ uint16(xArgImm8u), - /*6997*/ uint16(xMatch), - /*6998*/ uint16(xCondPrefix), 2, - 0x66, 7012, - 0x0, 7004, - /*7004*/ uint16(xSetOp), uint16(SHUFPS), - /*7006*/ uint16(xReadSlashR), - /*7007*/ uint16(xReadIb), - /*7008*/ uint16(xArgXmm1), - /*7009*/ uint16(xArgXmm2M128), - /*7010*/ uint16(xArgImm8u), - /*7011*/ uint16(xMatch), - /*7012*/ uint16(xSetOp), uint16(SHUFPD), - /*7014*/ uint16(xReadSlashR), - /*7015*/ uint16(xReadIb), - /*7016*/ uint16(xArgXmm1), - /*7017*/ uint16(xArgXmm2M128), - /*7018*/ uint16(xArgImm8u), - /*7019*/ uint16(xMatch), - /*7020*/ uint16(xCondSlashR), + 6520, // 4 + 6549, // 5 + 6578, // 6 + 6607, // 7 + /*6520*/ uint16(xCondIs64), 6523, 6539, + /*6523*/ uint16(xCondDataSize), 6527, 6533, 0, + /*6527*/ uint16(xSetOp), uint16(BT), + /*6529*/ uint16(xReadIb), + /*6530*/ uint16(xArgRM16), + /*6531*/ uint16(xArgImm8u), + /*6532*/ uint16(xMatch), + /*6533*/ uint16(xSetOp), uint16(BT), + /*6535*/ uint16(xReadIb), + /*6536*/ uint16(xArgRM32), + /*6537*/ uint16(xArgImm8u), + /*6538*/ uint16(xMatch), + /*6539*/ uint16(xCondDataSize), 6527, 6533, 6543, + /*6543*/ uint16(xSetOp), uint16(BT), + /*6545*/ uint16(xReadIb), + /*6546*/ uint16(xArgRM64), + /*6547*/ uint16(xArgImm8u), + /*6548*/ uint16(xMatch), + /*6549*/ uint16(xCondIs64), 6552, 6568, + /*6552*/ uint16(xCondDataSize), 6556, 6562, 0, + /*6556*/ uint16(xSetOp), uint16(BTS), + /*6558*/ uint16(xReadIb), + /*6559*/ uint16(xArgRM16), + /*6560*/ uint16(xArgImm8u), + /*6561*/ uint16(xMatch), + /*6562*/ uint16(xSetOp), uint16(BTS), + /*6564*/ uint16(xReadIb), + /*6565*/ uint16(xArgRM32), + /*6566*/ uint16(xArgImm8u), + /*6567*/ uint16(xMatch), + /*6568*/ uint16(xCondDataSize), 6556, 6562, 6572, + /*6572*/ uint16(xSetOp), uint16(BTS), + /*6574*/ uint16(xReadIb), + /*6575*/ uint16(xArgRM64), + /*6576*/ uint16(xArgImm8u), + /*6577*/ uint16(xMatch), + /*6578*/ uint16(xCondIs64), 6581, 6597, + /*6581*/ uint16(xCondDataSize), 6585, 6591, 0, + /*6585*/ uint16(xSetOp), uint16(BTR), + /*6587*/ uint16(xReadIb), + /*6588*/ uint16(xArgRM16), + /*6589*/ uint16(xArgImm8u), + /*6590*/ uint16(xMatch), + /*6591*/ uint16(xSetOp), uint16(BTR), + /*6593*/ uint16(xReadIb), + /*6594*/ uint16(xArgRM32), + /*6595*/ uint16(xArgImm8u), + /*6596*/ uint16(xMatch), + /*6597*/ uint16(xCondDataSize), 6585, 6591, 6601, + /*6601*/ uint16(xSetOp), uint16(BTR), + /*6603*/ uint16(xReadIb), + /*6604*/ uint16(xArgRM64), + /*6605*/ uint16(xArgImm8u), + /*6606*/ uint16(xMatch), + /*6607*/ uint16(xCondIs64), 6610, 6626, + /*6610*/ uint16(xCondDataSize), 6614, 6620, 0, + /*6614*/ uint16(xSetOp), uint16(BTC), + /*6616*/ uint16(xReadIb), + /*6617*/ uint16(xArgRM16), + /*6618*/ uint16(xArgImm8u), + /*6619*/ uint16(xMatch), + /*6620*/ uint16(xSetOp), uint16(BTC), + /*6622*/ uint16(xReadIb), + /*6623*/ uint16(xArgRM32), + /*6624*/ uint16(xArgImm8u), + /*6625*/ uint16(xMatch), + /*6626*/ uint16(xCondDataSize), 6614, 6620, 6630, + /*6630*/ uint16(xSetOp), uint16(BTC), + /*6632*/ uint16(xReadIb), + /*6633*/ uint16(xArgRM64), + /*6634*/ uint16(xArgImm8u), + /*6635*/ uint16(xMatch), + /*6636*/ uint16(xCondIs64), 6639, 6655, + /*6639*/ uint16(xCondDataSize), 6643, 6649, 0, + /*6643*/ uint16(xSetOp), uint16(BTC), + /*6645*/ uint16(xReadSlashR), + /*6646*/ uint16(xArgRM16), + /*6647*/ uint16(xArgR16), + /*6648*/ uint16(xMatch), + /*6649*/ uint16(xSetOp), uint16(BTC), + /*6651*/ uint16(xReadSlashR), + /*6652*/ uint16(xArgRM32), + /*6653*/ uint16(xArgR32), + /*6654*/ uint16(xMatch), + /*6655*/ uint16(xCondDataSize), 6643, 6649, 6659, + /*6659*/ uint16(xSetOp), uint16(BTC), + /*6661*/ uint16(xReadSlashR), + /*6662*/ uint16(xArgRM64), + /*6663*/ uint16(xArgR64), + /*6664*/ uint16(xMatch), + /*6665*/ uint16(xCondIs64), 6668, 6706, + /*6668*/ uint16(xCondPrefix), 2, + 0xF3, 6690, + 0x0, 6674, + /*6674*/ uint16(xCondDataSize), 6678, 6684, 0, + /*6678*/ uint16(xSetOp), uint16(BSF), + /*6680*/ uint16(xReadSlashR), + /*6681*/ uint16(xArgR16), + /*6682*/ uint16(xArgRM16), + /*6683*/ uint16(xMatch), + /*6684*/ uint16(xSetOp), uint16(BSF), + /*6686*/ uint16(xReadSlashR), + /*6687*/ uint16(xArgR32), + /*6688*/ uint16(xArgRM32), + /*6689*/ uint16(xMatch), + /*6690*/ uint16(xCondDataSize), 6694, 6700, 0, + /*6694*/ uint16(xSetOp), uint16(TZCNT), + /*6696*/ uint16(xReadSlashR), + /*6697*/ uint16(xArgR16), + /*6698*/ uint16(xArgRM16), + /*6699*/ uint16(xMatch), + /*6700*/ uint16(xSetOp), uint16(TZCNT), + /*6702*/ uint16(xReadSlashR), + /*6703*/ uint16(xArgR32), + /*6704*/ uint16(xArgRM32), + /*6705*/ uint16(xMatch), + /*6706*/ uint16(xCondPrefix), 2, + 0xF3, 6722, + 0x0, 6712, + /*6712*/ uint16(xCondDataSize), 6678, 6684, 6716, + /*6716*/ uint16(xSetOp), uint16(BSF), + /*6718*/ uint16(xReadSlashR), + /*6719*/ uint16(xArgR64), + /*6720*/ uint16(xArgRM64), + /*6721*/ uint16(xMatch), + /*6722*/ uint16(xCondDataSize), 6694, 6700, 6726, + /*6726*/ uint16(xSetOp), uint16(TZCNT), + /*6728*/ uint16(xReadSlashR), + /*6729*/ uint16(xArgR64), + /*6730*/ uint16(xArgRM64), + /*6731*/ uint16(xMatch), + /*6732*/ uint16(xCondIs64), 6735, 6773, + /*6735*/ uint16(xCondPrefix), 2, + 0xF3, 6757, + 0x0, 6741, + /*6741*/ uint16(xCondDataSize), 6745, 6751, 0, + /*6745*/ uint16(xSetOp), uint16(BSR), + /*6747*/ uint16(xReadSlashR), + /*6748*/ uint16(xArgR16), + /*6749*/ uint16(xArgRM16), + /*6750*/ uint16(xMatch), + /*6751*/ uint16(xSetOp), uint16(BSR), + /*6753*/ uint16(xReadSlashR), + /*6754*/ uint16(xArgR32), + /*6755*/ uint16(xArgRM32), + /*6756*/ uint16(xMatch), + /*6757*/ uint16(xCondDataSize), 6761, 6767, 0, + /*6761*/ uint16(xSetOp), uint16(LZCNT), + /*6763*/ uint16(xReadSlashR), + /*6764*/ uint16(xArgR16), + /*6765*/ uint16(xArgRM16), + /*6766*/ uint16(xMatch), + /*6767*/ uint16(xSetOp), uint16(LZCNT), + /*6769*/ uint16(xReadSlashR), + /*6770*/ uint16(xArgR32), + /*6771*/ uint16(xArgRM32), + /*6772*/ uint16(xMatch), + /*6773*/ uint16(xCondPrefix), 2, + 0xF3, 6789, + 0x0, 6779, + /*6779*/ uint16(xCondDataSize), 6745, 6751, 6783, + /*6783*/ uint16(xSetOp), uint16(BSR), + /*6785*/ uint16(xReadSlashR), + /*6786*/ uint16(xArgR64), + /*6787*/ uint16(xArgRM64), + /*6788*/ uint16(xMatch), + /*6789*/ uint16(xCondDataSize), 6761, 6767, 6793, + /*6793*/ uint16(xSetOp), uint16(LZCNT), + /*6795*/ uint16(xReadSlashR), + /*6796*/ uint16(xArgR64), + /*6797*/ uint16(xArgRM64), + /*6798*/ uint16(xMatch), + /*6799*/ uint16(xCondIs64), 6802, 6818, + /*6802*/ uint16(xCondDataSize), 6806, 6812, 0, + /*6806*/ uint16(xSetOp), uint16(MOVSX), + /*6808*/ uint16(xReadSlashR), + /*6809*/ uint16(xArgR16), + /*6810*/ uint16(xArgRM8), + /*6811*/ uint16(xMatch), + /*6812*/ uint16(xSetOp), uint16(MOVSX), + /*6814*/ uint16(xReadSlashR), + /*6815*/ uint16(xArgR32), + /*6816*/ uint16(xArgRM8), + /*6817*/ uint16(xMatch), + /*6818*/ uint16(xCondDataSize), 6806, 6812, 6822, + /*6822*/ uint16(xSetOp), uint16(MOVSX), + /*6824*/ uint16(xReadSlashR), + /*6825*/ uint16(xArgR64), + /*6826*/ uint16(xArgRM8), + /*6827*/ uint16(xMatch), + /*6828*/ uint16(xCondIs64), 6831, 6847, + /*6831*/ uint16(xCondDataSize), 6835, 6841, 0, + /*6835*/ uint16(xSetOp), uint16(MOVSX), + /*6837*/ uint16(xReadSlashR), + /*6838*/ uint16(xArgR16), + /*6839*/ uint16(xArgRM16), + /*6840*/ uint16(xMatch), + /*6841*/ uint16(xSetOp), uint16(MOVSX), + /*6843*/ uint16(xReadSlashR), + /*6844*/ uint16(xArgR32), + /*6845*/ uint16(xArgRM16), + /*6846*/ uint16(xMatch), + /*6847*/ uint16(xCondDataSize), 6835, 6841, 6851, + /*6851*/ uint16(xSetOp), uint16(MOVSX), + /*6853*/ uint16(xReadSlashR), + /*6854*/ uint16(xArgR64), + /*6855*/ uint16(xArgRM16), + /*6856*/ uint16(xMatch), + /*6857*/ uint16(xSetOp), uint16(XADD), + /*6859*/ uint16(xReadSlashR), + /*6860*/ uint16(xArgRM8), + /*6861*/ uint16(xArgR8), + /*6862*/ uint16(xMatch), + /*6863*/ uint16(xCondIs64), 6866, 6882, + /*6866*/ uint16(xCondDataSize), 6870, 6876, 0, + /*6870*/ uint16(xSetOp), uint16(XADD), + /*6872*/ uint16(xReadSlashR), + /*6873*/ uint16(xArgRM16), + /*6874*/ uint16(xArgR16), + /*6875*/ uint16(xMatch), + /*6876*/ uint16(xSetOp), uint16(XADD), + /*6878*/ uint16(xReadSlashR), + /*6879*/ uint16(xArgRM32), + /*6880*/ uint16(xArgR32), + /*6881*/ uint16(xMatch), + /*6882*/ uint16(xCondDataSize), 6870, 6876, 6886, + /*6886*/ uint16(xSetOp), uint16(XADD), + /*6888*/ uint16(xReadSlashR), + /*6889*/ uint16(xArgRM64), + /*6890*/ uint16(xArgR64), + /*6891*/ uint16(xMatch), + /*6892*/ uint16(xCondPrefix), 4, + 0xF3, 6926, + 0xF2, 6918, + 0x66, 6910, + 0x0, 6902, + /*6902*/ uint16(xSetOp), uint16(CMPPS), + /*6904*/ uint16(xReadSlashR), + /*6905*/ uint16(xReadIb), + /*6906*/ uint16(xArgXmm1), + /*6907*/ uint16(xArgXmm2M128), + /*6908*/ uint16(xArgImm8u), + /*6909*/ uint16(xMatch), + /*6910*/ uint16(xSetOp), uint16(CMPPD), + /*6912*/ uint16(xReadSlashR), + /*6913*/ uint16(xReadIb), + /*6914*/ uint16(xArgXmm1), + /*6915*/ uint16(xArgXmm2M128), + /*6916*/ uint16(xArgImm8u), + /*6917*/ uint16(xMatch), + /*6918*/ uint16(xSetOp), uint16(CMPSD_XMM), + /*6920*/ uint16(xReadSlashR), + /*6921*/ uint16(xReadIb), + /*6922*/ uint16(xArgXmm1), + /*6923*/ uint16(xArgXmm2M64), + /*6924*/ uint16(xArgImm8u), + /*6925*/ uint16(xMatch), + /*6926*/ uint16(xSetOp), uint16(CMPSS), + /*6928*/ uint16(xReadSlashR), + /*6929*/ uint16(xReadIb), + /*6930*/ uint16(xArgXmm1), + /*6931*/ uint16(xArgXmm2M32), + /*6932*/ uint16(xArgImm8u), + /*6933*/ uint16(xMatch), + /*6934*/ uint16(xCondIs64), 6937, 6953, + /*6937*/ uint16(xCondDataSize), 6941, 6947, 0, + /*6941*/ uint16(xSetOp), uint16(MOVNTI), + /*6943*/ uint16(xReadSlashR), + /*6944*/ uint16(xArgM32), + /*6945*/ uint16(xArgR32), + /*6946*/ uint16(xMatch), + /*6947*/ uint16(xSetOp), uint16(MOVNTI), + /*6949*/ uint16(xReadSlashR), + /*6950*/ uint16(xArgM32), + /*6951*/ uint16(xArgR32), + /*6952*/ uint16(xMatch), + /*6953*/ uint16(xCondDataSize), 6941, 6947, 6957, + /*6957*/ uint16(xSetOp), uint16(MOVNTI), + /*6959*/ uint16(xReadSlashR), + /*6960*/ uint16(xArgM64), + /*6961*/ uint16(xArgR64), + /*6962*/ uint16(xMatch), + /*6963*/ uint16(xCondPrefix), 2, + 0x66, 6977, + 0x0, 6969, + /*6969*/ uint16(xSetOp), uint16(PINSRW), + /*6971*/ uint16(xReadSlashR), + /*6972*/ uint16(xReadIb), + /*6973*/ uint16(xArgMm), + /*6974*/ uint16(xArgR32M16), + /*6975*/ uint16(xArgImm8u), + /*6976*/ uint16(xMatch), + /*6977*/ uint16(xSetOp), uint16(PINSRW), + /*6979*/ uint16(xReadSlashR), + /*6980*/ uint16(xReadIb), + /*6981*/ uint16(xArgXmm), + /*6982*/ uint16(xArgR32M16), + /*6983*/ uint16(xArgImm8u), + /*6984*/ uint16(xMatch), + /*6985*/ uint16(xCondPrefix), 2, + 0x66, 6999, + 0x0, 6991, + /*6991*/ uint16(xSetOp), uint16(PEXTRW), + /*6993*/ uint16(xReadSlashR), + /*6994*/ uint16(xReadIb), + /*6995*/ uint16(xArgR32), + /*6996*/ uint16(xArgMm2), + /*6997*/ uint16(xArgImm8u), + /*6998*/ uint16(xMatch), + /*6999*/ uint16(xSetOp), uint16(PEXTRW), + /*7001*/ uint16(xReadSlashR), + /*7002*/ uint16(xReadIb), + /*7003*/ uint16(xArgR32), + /*7004*/ uint16(xArgXmm2), + /*7005*/ uint16(xArgImm8u), + /*7006*/ uint16(xMatch), + /*7007*/ uint16(xCondPrefix), 2, + 0x66, 7021, + 0x0, 7013, + /*7013*/ uint16(xSetOp), uint16(SHUFPS), + /*7015*/ uint16(xReadSlashR), + /*7016*/ uint16(xReadIb), + /*7017*/ uint16(xArgXmm1), + /*7018*/ uint16(xArgXmm2M128), + /*7019*/ uint16(xArgImm8u), + /*7020*/ uint16(xMatch), + /*7021*/ uint16(xSetOp), uint16(SHUFPD), + /*7023*/ uint16(xReadSlashR), + /*7024*/ uint16(xReadIb), + /*7025*/ uint16(xArgXmm1), + /*7026*/ uint16(xArgXmm2M128), + /*7027*/ uint16(xArgImm8u), + /*7028*/ uint16(xMatch), + /*7029*/ uint16(xCondSlashR), 0, // 0 - 7029, // 1 + 7038, // 1 0, // 2 - 7052, // 3 - 7075, // 4 - 7098, // 5 - 7121, // 6 + 7061, // 3 + 7084, // 4 + 7107, // 5 + 7130, // 6 0, // 7 - /*7029*/ uint16(xCondIs64), 7032, 7044, - /*7032*/ uint16(xCondDataSize), 7036, 7040, 0, - /*7036*/ uint16(xSetOp), uint16(CMPXCHG8B), - /*7038*/ uint16(xArgM64), - /*7039*/ uint16(xMatch), - /*7040*/ uint16(xSetOp), uint16(CMPXCHG8B), - /*7042*/ uint16(xArgM64), - /*7043*/ uint16(xMatch), - /*7044*/ uint16(xCondDataSize), 7036, 7040, 7048, - /*7048*/ uint16(xSetOp), uint16(CMPXCHG16B), - /*7050*/ uint16(xArgM128), - /*7051*/ uint16(xMatch), - /*7052*/ uint16(xCondIs64), 7055, 7067, - /*7055*/ uint16(xCondDataSize), 7059, 7063, 0, - /*7059*/ uint16(xSetOp), uint16(XRSTORS), - /*7061*/ uint16(xArgMem), - /*7062*/ uint16(xMatch), - /*7063*/ uint16(xSetOp), uint16(XRSTORS), - /*7065*/ uint16(xArgMem), - /*7066*/ uint16(xMatch), - /*7067*/ uint16(xCondDataSize), 7059, 7063, 7071, - /*7071*/ uint16(xSetOp), uint16(XRSTORS64), - /*7073*/ uint16(xArgMem), - /*7074*/ uint16(xMatch), - /*7075*/ uint16(xCondIs64), 7078, 7090, - /*7078*/ uint16(xCondDataSize), 7082, 7086, 0, - /*7082*/ uint16(xSetOp), uint16(XSAVEC), - /*7084*/ uint16(xArgMem), - /*7085*/ uint16(xMatch), - /*7086*/ uint16(xSetOp), uint16(XSAVEC), - /*7088*/ uint16(xArgMem), - /*7089*/ uint16(xMatch), - /*7090*/ uint16(xCondDataSize), 7082, 7086, 7094, - /*7094*/ uint16(xSetOp), uint16(XSAVEC64), - /*7096*/ uint16(xArgMem), - /*7097*/ uint16(xMatch), - /*7098*/ uint16(xCondIs64), 7101, 7113, - /*7101*/ uint16(xCondDataSize), 7105, 7109, 0, - /*7105*/ uint16(xSetOp), uint16(XSAVES), - /*7107*/ uint16(xArgMem), - /*7108*/ uint16(xMatch), - /*7109*/ uint16(xSetOp), uint16(XSAVES), - /*7111*/ uint16(xArgMem), - /*7112*/ uint16(xMatch), - /*7113*/ uint16(xCondDataSize), 7105, 7109, 7117, - /*7117*/ uint16(xSetOp), uint16(XSAVES64), - /*7119*/ uint16(xArgMem), - /*7120*/ uint16(xMatch), - /*7121*/ uint16(xCondIs64), 7124, 7142, - /*7124*/ uint16(xCondDataSize), 7128, 7135, 0, - /*7128*/ uint16(xCondIsMem), 7131, 0, - /*7131*/ uint16(xSetOp), uint16(RDRAND), - /*7133*/ uint16(xArgRmf16), - /*7134*/ uint16(xMatch), - /*7135*/ uint16(xCondIsMem), 7138, 0, - /*7138*/ uint16(xSetOp), uint16(RDRAND), - /*7140*/ uint16(xArgRmf32), - /*7141*/ uint16(xMatch), - /*7142*/ uint16(xCondDataSize), 7128, 7135, 7146, - /*7146*/ uint16(xSetOp), uint16(RDRAND), - /*7148*/ uint16(xMatch), - /*7149*/ uint16(xCondIs64), 7152, 7164, - /*7152*/ uint16(xCondDataSize), 7156, 7160, 0, - /*7156*/ uint16(xSetOp), uint16(BSWAP), - /*7158*/ uint16(xArgR16op), - /*7159*/ uint16(xMatch), - /*7160*/ uint16(xSetOp), uint16(BSWAP), - /*7162*/ uint16(xArgR32op), - /*7163*/ uint16(xMatch), - /*7164*/ uint16(xCondDataSize), 7156, 7160, 7168, - /*7168*/ uint16(xSetOp), uint16(BSWAP), - /*7170*/ uint16(xArgR64op), - /*7171*/ uint16(xMatch), - /*7172*/ uint16(xCondPrefix), 2, - 0xF2, 7184, - 0x66, 7178, - /*7178*/ uint16(xSetOp), uint16(ADDSUBPD), - /*7180*/ uint16(xReadSlashR), - /*7181*/ uint16(xArgXmm1), - /*7182*/ uint16(xArgXmm2M128), - /*7183*/ uint16(xMatch), - /*7184*/ uint16(xSetOp), uint16(ADDSUBPS), - /*7186*/ uint16(xReadSlashR), - /*7187*/ uint16(xArgXmm1), - /*7188*/ uint16(xArgXmm2M128), - /*7189*/ uint16(xMatch), - /*7190*/ uint16(xCondPrefix), 2, - 0x66, 7202, - 0x0, 7196, - /*7196*/ uint16(xSetOp), uint16(PSRLW), - /*7198*/ uint16(xReadSlashR), - /*7199*/ uint16(xArgMm), - /*7200*/ uint16(xArgMmM64), - /*7201*/ uint16(xMatch), - /*7202*/ uint16(xSetOp), uint16(PSRLW), - /*7204*/ uint16(xReadSlashR), - /*7205*/ uint16(xArgXmm1), - /*7206*/ uint16(xArgXmm2M128), - /*7207*/ uint16(xMatch), - /*7208*/ uint16(xCondPrefix), 2, - 0x66, 7220, - 0x0, 7214, - /*7214*/ uint16(xSetOp), uint16(PSRLD), - /*7216*/ uint16(xReadSlashR), - /*7217*/ uint16(xArgMm), - /*7218*/ uint16(xArgMmM64), - /*7219*/ uint16(xMatch), - /*7220*/ uint16(xSetOp), uint16(PSRLD), - /*7222*/ uint16(xReadSlashR), - /*7223*/ uint16(xArgXmm1), - /*7224*/ uint16(xArgXmm2M128), - /*7225*/ uint16(xMatch), - /*7226*/ uint16(xCondPrefix), 2, - 0x66, 7238, - 0x0, 7232, - /*7232*/ uint16(xSetOp), uint16(PSRLQ), - /*7234*/ uint16(xReadSlashR), - /*7235*/ uint16(xArgMm), - /*7236*/ uint16(xArgMmM64), - /*7237*/ uint16(xMatch), - /*7238*/ uint16(xSetOp), uint16(PSRLQ), - /*7240*/ uint16(xReadSlashR), - /*7241*/ uint16(xArgXmm1), - /*7242*/ uint16(xArgXmm2M128), - /*7243*/ uint16(xMatch), - /*7244*/ uint16(xCondPrefix), 2, - 0x66, 7256, - 0x0, 7250, - /*7250*/ uint16(xSetOp), uint16(PADDQ), - /*7252*/ uint16(xReadSlashR), - /*7253*/ uint16(xArgMm1), - /*7254*/ uint16(xArgMm2M64), - /*7255*/ uint16(xMatch), - /*7256*/ uint16(xSetOp), uint16(PADDQ), - /*7258*/ uint16(xReadSlashR), - /*7259*/ uint16(xArgXmm1), - /*7260*/ uint16(xArgXmm2M128), - /*7261*/ uint16(xMatch), - /*7262*/ uint16(xCondPrefix), 2, - 0x66, 7274, - 0x0, 7268, - /*7268*/ uint16(xSetOp), uint16(PMULLW), - /*7270*/ uint16(xReadSlashR), - /*7271*/ uint16(xArgMm), - /*7272*/ uint16(xArgMmM64), - /*7273*/ uint16(xMatch), - /*7274*/ uint16(xSetOp), uint16(PMULLW), - /*7276*/ uint16(xReadSlashR), - /*7277*/ uint16(xArgXmm1), - /*7278*/ uint16(xArgXmm2M128), - /*7279*/ uint16(xMatch), - /*7280*/ uint16(xCondPrefix), 3, - 0xF3, 7300, - 0xF2, 7294, - 0x66, 7288, - /*7288*/ uint16(xSetOp), uint16(MOVQ), - /*7290*/ uint16(xReadSlashR), - /*7291*/ uint16(xArgXmm2M64), - /*7292*/ uint16(xArgXmm1), - /*7293*/ uint16(xMatch), - /*7294*/ uint16(xSetOp), uint16(MOVDQ2Q), - /*7296*/ uint16(xReadSlashR), - /*7297*/ uint16(xArgMm), - /*7298*/ uint16(xArgXmm2), - /*7299*/ uint16(xMatch), - /*7300*/ uint16(xSetOp), uint16(MOVQ2DQ), - /*7302*/ uint16(xReadSlashR), - /*7303*/ uint16(xArgXmm1), - /*7304*/ uint16(xArgMm2), - /*7305*/ uint16(xMatch), - /*7306*/ uint16(xCondPrefix), 2, - 0x66, 7318, - 0x0, 7312, - /*7312*/ uint16(xSetOp), uint16(PMOVMSKB), - /*7314*/ uint16(xReadSlashR), - /*7315*/ uint16(xArgR32), - /*7316*/ uint16(xArgMm2), - /*7317*/ uint16(xMatch), - /*7318*/ uint16(xSetOp), uint16(PMOVMSKB), - /*7320*/ uint16(xReadSlashR), - /*7321*/ uint16(xArgR32), - /*7322*/ uint16(xArgXmm2), - /*7323*/ uint16(xMatch), - /*7324*/ uint16(xCondPrefix), 2, - 0x66, 7336, - 0x0, 7330, - /*7330*/ uint16(xSetOp), uint16(PSUBUSB), - /*7332*/ uint16(xReadSlashR), - /*7333*/ uint16(xArgMm), - /*7334*/ uint16(xArgMmM64), - /*7335*/ uint16(xMatch), - /*7336*/ uint16(xSetOp), uint16(PSUBUSB), - /*7338*/ uint16(xReadSlashR), - /*7339*/ uint16(xArgXmm1), - /*7340*/ uint16(xArgXmm2M128), - /*7341*/ uint16(xMatch), - /*7342*/ uint16(xCondPrefix), 2, - 0x66, 7354, - 0x0, 7348, - /*7348*/ uint16(xSetOp), uint16(PSUBUSW), - /*7350*/ uint16(xReadSlashR), - /*7351*/ uint16(xArgMm), - /*7352*/ uint16(xArgMmM64), - /*7353*/ uint16(xMatch), - /*7354*/ uint16(xSetOp), uint16(PSUBUSW), - /*7356*/ uint16(xReadSlashR), - /*7357*/ uint16(xArgXmm1), - /*7358*/ uint16(xArgXmm2M128), - /*7359*/ uint16(xMatch), - /*7360*/ uint16(xCondPrefix), 2, - 0x66, 7372, - 0x0, 7366, - /*7366*/ uint16(xSetOp), uint16(PMINUB), - /*7368*/ uint16(xReadSlashR), - /*7369*/ uint16(xArgMm1), - /*7370*/ uint16(xArgMm2M64), - /*7371*/ uint16(xMatch), - /*7372*/ uint16(xSetOp), uint16(PMINUB), - /*7374*/ uint16(xReadSlashR), - /*7375*/ uint16(xArgXmm1), - /*7376*/ uint16(xArgXmm2M128), - /*7377*/ uint16(xMatch), - /*7378*/ uint16(xCondPrefix), 2, - 0x66, 7390, - 0x0, 7384, - /*7384*/ uint16(xSetOp), uint16(PAND), - /*7386*/ uint16(xReadSlashR), - /*7387*/ uint16(xArgMm), - /*7388*/ uint16(xArgMmM64), - /*7389*/ uint16(xMatch), - /*7390*/ uint16(xSetOp), uint16(PAND), - /*7392*/ uint16(xReadSlashR), - /*7393*/ uint16(xArgXmm1), - /*7394*/ uint16(xArgXmm2M128), - /*7395*/ uint16(xMatch), - /*7396*/ uint16(xCondPrefix), 2, - 0x66, 7408, - 0x0, 7402, - /*7402*/ uint16(xSetOp), uint16(PADDUSB), - /*7404*/ uint16(xReadSlashR), - /*7405*/ uint16(xArgMm), - /*7406*/ uint16(xArgMmM64), - /*7407*/ uint16(xMatch), - /*7408*/ uint16(xSetOp), uint16(PADDUSB), - /*7410*/ uint16(xReadSlashR), - /*7411*/ uint16(xArgXmm1), - /*7412*/ uint16(xArgXmm2M128), - /*7413*/ uint16(xMatch), - /*7414*/ uint16(xCondPrefix), 2, - 0x66, 7426, - 0x0, 7420, - /*7420*/ uint16(xSetOp), uint16(PADDUSW), - /*7422*/ uint16(xReadSlashR), - /*7423*/ uint16(xArgMm), - /*7424*/ uint16(xArgMmM64), - /*7425*/ uint16(xMatch), - /*7426*/ uint16(xSetOp), uint16(PADDUSW), - /*7428*/ uint16(xReadSlashR), - /*7429*/ uint16(xArgXmm1), - /*7430*/ uint16(xArgXmm2M128), - /*7431*/ uint16(xMatch), - /*7432*/ uint16(xCondPrefix), 2, - 0x66, 7444, - 0x0, 7438, - /*7438*/ uint16(xSetOp), uint16(PMAXUB), - /*7440*/ uint16(xReadSlashR), - /*7441*/ uint16(xArgMm1), - /*7442*/ uint16(xArgMm2M64), - /*7443*/ uint16(xMatch), - /*7444*/ uint16(xSetOp), uint16(PMAXUB), - /*7446*/ uint16(xReadSlashR), - /*7447*/ uint16(xArgXmm1), - /*7448*/ uint16(xArgXmm2M128), - /*7449*/ uint16(xMatch), - /*7450*/ uint16(xCondPrefix), 2, - 0x66, 7462, - 0x0, 7456, - /*7456*/ uint16(xSetOp), uint16(PANDN), - /*7458*/ uint16(xReadSlashR), - /*7459*/ uint16(xArgMm), - /*7460*/ uint16(xArgMmM64), - /*7461*/ uint16(xMatch), - /*7462*/ uint16(xSetOp), uint16(PANDN), - /*7464*/ uint16(xReadSlashR), - /*7465*/ uint16(xArgXmm1), - /*7466*/ uint16(xArgXmm2M128), - /*7467*/ uint16(xMatch), - /*7468*/ uint16(xCondPrefix), 2, - 0x66, 7480, - 0x0, 7474, - /*7474*/ uint16(xSetOp), uint16(PAVGB), - /*7476*/ uint16(xReadSlashR), - /*7477*/ uint16(xArgMm1), - /*7478*/ uint16(xArgMm2M64), - /*7479*/ uint16(xMatch), - /*7480*/ uint16(xSetOp), uint16(PAVGB), - /*7482*/ uint16(xReadSlashR), - /*7483*/ uint16(xArgXmm1), - /*7484*/ uint16(xArgXmm2M128), - /*7485*/ uint16(xMatch), - /*7486*/ uint16(xCondPrefix), 2, - 0x66, 7498, - 0x0, 7492, - /*7492*/ uint16(xSetOp), uint16(PSRAW), - /*7494*/ uint16(xReadSlashR), - /*7495*/ uint16(xArgMm), - /*7496*/ uint16(xArgMmM64), - /*7497*/ uint16(xMatch), - /*7498*/ uint16(xSetOp), uint16(PSRAW), - /*7500*/ uint16(xReadSlashR), - /*7501*/ uint16(xArgXmm1), - /*7502*/ uint16(xArgXmm2M128), - /*7503*/ uint16(xMatch), - /*7504*/ uint16(xCondPrefix), 2, - 0x66, 7516, - 0x0, 7510, - /*7510*/ uint16(xSetOp), uint16(PSRAD), - /*7512*/ uint16(xReadSlashR), - /*7513*/ uint16(xArgMm), - /*7514*/ uint16(xArgMmM64), - /*7515*/ uint16(xMatch), - /*7516*/ uint16(xSetOp), uint16(PSRAD), - /*7518*/ uint16(xReadSlashR), - /*7519*/ uint16(xArgXmm1), - /*7520*/ uint16(xArgXmm2M128), - /*7521*/ uint16(xMatch), - /*7522*/ uint16(xCondPrefix), 2, - 0x66, 7534, - 0x0, 7528, - /*7528*/ uint16(xSetOp), uint16(PAVGW), - /*7530*/ uint16(xReadSlashR), - /*7531*/ uint16(xArgMm1), - /*7532*/ uint16(xArgMm2M64), - /*7533*/ uint16(xMatch), - /*7534*/ uint16(xSetOp), uint16(PAVGW), - /*7536*/ uint16(xReadSlashR), - /*7537*/ uint16(xArgXmm1), - /*7538*/ uint16(xArgXmm2M128), - /*7539*/ uint16(xMatch), - /*7540*/ uint16(xCondPrefix), 2, - 0x66, 7552, - 0x0, 7546, - /*7546*/ uint16(xSetOp), uint16(PMULHUW), - /*7548*/ uint16(xReadSlashR), - /*7549*/ uint16(xArgMm1), - /*7550*/ uint16(xArgMm2M64), - /*7551*/ uint16(xMatch), - /*7552*/ uint16(xSetOp), uint16(PMULHUW), - /*7554*/ uint16(xReadSlashR), - /*7555*/ uint16(xArgXmm1), - /*7556*/ uint16(xArgXmm2M128), - /*7557*/ uint16(xMatch), - /*7558*/ uint16(xCondPrefix), 2, - 0x66, 7570, - 0x0, 7564, - /*7564*/ uint16(xSetOp), uint16(PMULHW), - /*7566*/ uint16(xReadSlashR), - /*7567*/ uint16(xArgMm), - /*7568*/ uint16(xArgMmM64), - /*7569*/ uint16(xMatch), - /*7570*/ uint16(xSetOp), uint16(PMULHW), - /*7572*/ uint16(xReadSlashR), - /*7573*/ uint16(xArgXmm1), - /*7574*/ uint16(xArgXmm2M128), - /*7575*/ uint16(xMatch), - /*7576*/ uint16(xCondPrefix), 3, - 0xF3, 7596, - 0xF2, 7590, - 0x66, 7584, - /*7584*/ uint16(xSetOp), uint16(CVTTPD2DQ), - /*7586*/ uint16(xReadSlashR), - /*7587*/ uint16(xArgXmm1), - /*7588*/ uint16(xArgXmm2M128), - /*7589*/ uint16(xMatch), - /*7590*/ uint16(xSetOp), uint16(CVTPD2DQ), - /*7592*/ uint16(xReadSlashR), - /*7593*/ uint16(xArgXmm1), - /*7594*/ uint16(xArgXmm2M128), - /*7595*/ uint16(xMatch), - /*7596*/ uint16(xSetOp), uint16(CVTDQ2PD), - /*7598*/ uint16(xReadSlashR), - /*7599*/ uint16(xArgXmm1), - /*7600*/ uint16(xArgXmm2M64), - /*7601*/ uint16(xMatch), - /*7602*/ uint16(xCondPrefix), 2, - 0x66, 7614, - 0x0, 7608, - /*7608*/ uint16(xSetOp), uint16(MOVNTQ), - /*7610*/ uint16(xReadSlashR), - /*7611*/ uint16(xArgM64), - /*7612*/ uint16(xArgMm), - /*7613*/ uint16(xMatch), - /*7614*/ uint16(xSetOp), uint16(MOVNTDQ), - /*7616*/ uint16(xReadSlashR), - /*7617*/ uint16(xArgM128), - /*7618*/ uint16(xArgXmm), - /*7619*/ uint16(xMatch), - /*7620*/ uint16(xCondPrefix), 2, - 0x66, 7632, - 0x0, 7626, - /*7626*/ uint16(xSetOp), uint16(PSUBSB), - /*7628*/ uint16(xReadSlashR), - /*7629*/ uint16(xArgMm), - /*7630*/ uint16(xArgMmM64), - /*7631*/ uint16(xMatch), - /*7632*/ uint16(xSetOp), uint16(PSUBSB), - /*7634*/ uint16(xReadSlashR), - /*7635*/ uint16(xArgXmm1), - /*7636*/ uint16(xArgXmm2M128), - /*7637*/ uint16(xMatch), - /*7638*/ uint16(xCondPrefix), 2, - 0x66, 7650, - 0x0, 7644, - /*7644*/ uint16(xSetOp), uint16(PSUBSW), - /*7646*/ uint16(xReadSlashR), - /*7647*/ uint16(xArgMm), - /*7648*/ uint16(xArgMmM64), - /*7649*/ uint16(xMatch), - /*7650*/ uint16(xSetOp), uint16(PSUBSW), - /*7652*/ uint16(xReadSlashR), - /*7653*/ uint16(xArgXmm1), - /*7654*/ uint16(xArgXmm2M128), - /*7655*/ uint16(xMatch), - /*7656*/ uint16(xCondPrefix), 2, - 0x66, 7668, - 0x0, 7662, - /*7662*/ uint16(xSetOp), uint16(PMINSW), - /*7664*/ uint16(xReadSlashR), - /*7665*/ uint16(xArgMm1), - /*7666*/ uint16(xArgMm2M64), - /*7667*/ uint16(xMatch), - /*7668*/ uint16(xSetOp), uint16(PMINSW), - /*7670*/ uint16(xReadSlashR), - /*7671*/ uint16(xArgXmm1), - /*7672*/ uint16(xArgXmm2M128), - /*7673*/ uint16(xMatch), - /*7674*/ uint16(xCondPrefix), 2, - 0x66, 7686, - 0x0, 7680, - /*7680*/ uint16(xSetOp), uint16(POR), - /*7682*/ uint16(xReadSlashR), - /*7683*/ uint16(xArgMm), - /*7684*/ uint16(xArgMmM64), - /*7685*/ uint16(xMatch), - /*7686*/ uint16(xSetOp), uint16(POR), - /*7688*/ uint16(xReadSlashR), - /*7689*/ uint16(xArgXmm1), - /*7690*/ uint16(xArgXmm2M128), - /*7691*/ uint16(xMatch), - /*7692*/ uint16(xCondPrefix), 2, - 0x66, 7704, - 0x0, 7698, - /*7698*/ uint16(xSetOp), uint16(PADDSB), - /*7700*/ uint16(xReadSlashR), - /*7701*/ uint16(xArgMm), - /*7702*/ uint16(xArgMmM64), - /*7703*/ uint16(xMatch), - /*7704*/ uint16(xSetOp), uint16(PADDSB), - /*7706*/ uint16(xReadSlashR), - /*7707*/ uint16(xArgXmm1), - /*7708*/ uint16(xArgXmm2M128), - /*7709*/ uint16(xMatch), - /*7710*/ uint16(xCondPrefix), 2, - 0x66, 7722, - 0x0, 7716, - /*7716*/ uint16(xSetOp), uint16(PADDSW), - /*7718*/ uint16(xReadSlashR), - /*7719*/ uint16(xArgMm), - /*7720*/ uint16(xArgMmM64), - /*7721*/ uint16(xMatch), - /*7722*/ uint16(xSetOp), uint16(PADDSW), - /*7724*/ uint16(xReadSlashR), - /*7725*/ uint16(xArgXmm1), - /*7726*/ uint16(xArgXmm2M128), - /*7727*/ uint16(xMatch), - /*7728*/ uint16(xCondPrefix), 2, - 0x66, 7740, - 0x0, 7734, - /*7734*/ uint16(xSetOp), uint16(PMAXSW), - /*7736*/ uint16(xReadSlashR), - /*7737*/ uint16(xArgMm1), - /*7738*/ uint16(xArgMm2M64), - /*7739*/ uint16(xMatch), - /*7740*/ uint16(xSetOp), uint16(PMAXSW), - /*7742*/ uint16(xReadSlashR), - /*7743*/ uint16(xArgXmm1), - /*7744*/ uint16(xArgXmm2M128), - /*7745*/ uint16(xMatch), - /*7746*/ uint16(xCondPrefix), 2, - 0x66, 7758, - 0x0, 7752, - /*7752*/ uint16(xSetOp), uint16(PXOR), - /*7754*/ uint16(xReadSlashR), - /*7755*/ uint16(xArgMm), - /*7756*/ uint16(xArgMmM64), - /*7757*/ uint16(xMatch), - /*7758*/ uint16(xSetOp), uint16(PXOR), - /*7760*/ uint16(xReadSlashR), - /*7761*/ uint16(xArgXmm1), - /*7762*/ uint16(xArgXmm2M128), - /*7763*/ uint16(xMatch), - /*7764*/ uint16(xCondPrefix), 1, - 0xF2, 7768, - /*7768*/ uint16(xSetOp), uint16(LDDQU), - /*7770*/ uint16(xReadSlashR), - /*7771*/ uint16(xArgXmm1), - /*7772*/ uint16(xArgM128), - /*7773*/ uint16(xMatch), - /*7774*/ uint16(xCondPrefix), 2, - 0x66, 7786, - 0x0, 7780, - /*7780*/ uint16(xSetOp), uint16(PSLLW), - /*7782*/ uint16(xReadSlashR), - /*7783*/ uint16(xArgMm), - /*7784*/ uint16(xArgMmM64), - /*7785*/ uint16(xMatch), - /*7786*/ uint16(xSetOp), uint16(PSLLW), - /*7788*/ uint16(xReadSlashR), - /*7789*/ uint16(xArgXmm1), - /*7790*/ uint16(xArgXmm2M128), - /*7791*/ uint16(xMatch), - /*7792*/ uint16(xCondPrefix), 2, - 0x66, 7804, - 0x0, 7798, - /*7798*/ uint16(xSetOp), uint16(PSLLD), - /*7800*/ uint16(xReadSlashR), - /*7801*/ uint16(xArgMm), - /*7802*/ uint16(xArgMmM64), - /*7803*/ uint16(xMatch), - /*7804*/ uint16(xSetOp), uint16(PSLLD), - /*7806*/ uint16(xReadSlashR), - /*7807*/ uint16(xArgXmm1), - /*7808*/ uint16(xArgXmm2M128), - /*7809*/ uint16(xMatch), - /*7810*/ uint16(xCondPrefix), 2, - 0x66, 7822, - 0x0, 7816, - /*7816*/ uint16(xSetOp), uint16(PSLLQ), - /*7818*/ uint16(xReadSlashR), - /*7819*/ uint16(xArgMm), - /*7820*/ uint16(xArgMmM64), - /*7821*/ uint16(xMatch), - /*7822*/ uint16(xSetOp), uint16(PSLLQ), - /*7824*/ uint16(xReadSlashR), - /*7825*/ uint16(xArgXmm1), - /*7826*/ uint16(xArgXmm2M128), - /*7827*/ uint16(xMatch), - /*7828*/ uint16(xCondPrefix), 2, - 0x66, 7840, - 0x0, 7834, - /*7834*/ uint16(xSetOp), uint16(PMULUDQ), - /*7836*/ uint16(xReadSlashR), - /*7837*/ uint16(xArgMm1), - /*7838*/ uint16(xArgMm2M64), - /*7839*/ uint16(xMatch), - /*7840*/ uint16(xSetOp), uint16(PMULUDQ), - /*7842*/ uint16(xReadSlashR), - /*7843*/ uint16(xArgXmm1), - /*7844*/ uint16(xArgXmm2M128), - /*7845*/ uint16(xMatch), - /*7846*/ uint16(xCondPrefix), 2, - 0x66, 7858, - 0x0, 7852, - /*7852*/ uint16(xSetOp), uint16(PMADDWD), - /*7854*/ uint16(xReadSlashR), - /*7855*/ uint16(xArgMm), - /*7856*/ uint16(xArgMmM64), - /*7857*/ uint16(xMatch), - /*7858*/ uint16(xSetOp), uint16(PMADDWD), - /*7860*/ uint16(xReadSlashR), - /*7861*/ uint16(xArgXmm1), - /*7862*/ uint16(xArgXmm2M128), - /*7863*/ uint16(xMatch), - /*7864*/ uint16(xCondPrefix), 2, - 0x66, 7876, - 0x0, 7870, - /*7870*/ uint16(xSetOp), uint16(PSADBW), - /*7872*/ uint16(xReadSlashR), - /*7873*/ uint16(xArgMm1), - /*7874*/ uint16(xArgMm2M64), - /*7875*/ uint16(xMatch), - /*7876*/ uint16(xSetOp), uint16(PSADBW), - /*7878*/ uint16(xReadSlashR), - /*7879*/ uint16(xArgXmm1), - /*7880*/ uint16(xArgXmm2M128), - /*7881*/ uint16(xMatch), - /*7882*/ uint16(xCondPrefix), 2, - 0x66, 7894, - 0x0, 7888, - /*7888*/ uint16(xSetOp), uint16(MASKMOVQ), - /*7890*/ uint16(xReadSlashR), - /*7891*/ uint16(xArgMm1), - /*7892*/ uint16(xArgMm2), - /*7893*/ uint16(xMatch), - /*7894*/ uint16(xSetOp), uint16(MASKMOVDQU), - /*7896*/ uint16(xReadSlashR), - /*7897*/ uint16(xArgXmm1), - /*7898*/ uint16(xArgXmm2), - /*7899*/ uint16(xMatch), - /*7900*/ uint16(xCondPrefix), 2, - 0x66, 7912, - 0x0, 7906, - /*7906*/ uint16(xSetOp), uint16(PSUBB), - /*7908*/ uint16(xReadSlashR), - /*7909*/ uint16(xArgMm), - /*7910*/ uint16(xArgMmM64), - /*7911*/ uint16(xMatch), - /*7912*/ uint16(xSetOp), uint16(PSUBB), - /*7914*/ uint16(xReadSlashR), - /*7915*/ uint16(xArgXmm1), - /*7916*/ uint16(xArgXmm2M128), - /*7917*/ uint16(xMatch), - /*7918*/ uint16(xCondPrefix), 2, - 0x66, 7930, - 0x0, 7924, - /*7924*/ uint16(xSetOp), uint16(PSUBW), - /*7926*/ uint16(xReadSlashR), - /*7927*/ uint16(xArgMm), - /*7928*/ uint16(xArgMmM64), - /*7929*/ uint16(xMatch), - /*7930*/ uint16(xSetOp), uint16(PSUBW), - /*7932*/ uint16(xReadSlashR), - /*7933*/ uint16(xArgXmm1), - /*7934*/ uint16(xArgXmm2M128), - /*7935*/ uint16(xMatch), - /*7936*/ uint16(xCondPrefix), 2, - 0x66, 7948, - 0x0, 7942, - /*7942*/ uint16(xSetOp), uint16(PSUBD), - /*7944*/ uint16(xReadSlashR), - /*7945*/ uint16(xArgMm), - /*7946*/ uint16(xArgMmM64), - /*7947*/ uint16(xMatch), - /*7948*/ uint16(xSetOp), uint16(PSUBD), - /*7950*/ uint16(xReadSlashR), - /*7951*/ uint16(xArgXmm1), - /*7952*/ uint16(xArgXmm2M128), - /*7953*/ uint16(xMatch), - /*7954*/ uint16(xCondPrefix), 2, - 0x66, 7966, - 0x0, 7960, - /*7960*/ uint16(xSetOp), uint16(PSUBQ), - /*7962*/ uint16(xReadSlashR), - /*7963*/ uint16(xArgMm1), - /*7964*/ uint16(xArgMm2M64), - /*7965*/ uint16(xMatch), - /*7966*/ uint16(xSetOp), uint16(PSUBQ), - /*7968*/ uint16(xReadSlashR), - /*7969*/ uint16(xArgXmm1), - /*7970*/ uint16(xArgXmm2M128), - /*7971*/ uint16(xMatch), - /*7972*/ uint16(xCondPrefix), 2, - 0x66, 7984, - 0x0, 7978, - /*7978*/ uint16(xSetOp), uint16(PADDB), - /*7980*/ uint16(xReadSlashR), - /*7981*/ uint16(xArgMm), - /*7982*/ uint16(xArgMmM64), - /*7983*/ uint16(xMatch), - /*7984*/ uint16(xSetOp), uint16(PADDB), - /*7986*/ uint16(xReadSlashR), - /*7987*/ uint16(xArgXmm1), - /*7988*/ uint16(xArgXmm2M128), - /*7989*/ uint16(xMatch), - /*7990*/ uint16(xCondPrefix), 2, - 0x66, 8002, - 0x0, 7996, - /*7996*/ uint16(xSetOp), uint16(PADDW), - /*7998*/ uint16(xReadSlashR), - /*7999*/ uint16(xArgMm), - /*8000*/ uint16(xArgMmM64), - /*8001*/ uint16(xMatch), - /*8002*/ uint16(xSetOp), uint16(PADDW), - /*8004*/ uint16(xReadSlashR), - /*8005*/ uint16(xArgXmm1), - /*8006*/ uint16(xArgXmm2M128), - /*8007*/ uint16(xMatch), - /*8008*/ uint16(xCondPrefix), 2, - 0x66, 8020, - 0x0, 8014, - /*8014*/ uint16(xSetOp), uint16(PADDD), - /*8016*/ uint16(xReadSlashR), - /*8017*/ uint16(xArgMm), - /*8018*/ uint16(xArgMmM64), - /*8019*/ uint16(xMatch), - /*8020*/ uint16(xSetOp), uint16(PADDD), - /*8022*/ uint16(xReadSlashR), - /*8023*/ uint16(xArgXmm1), - /*8024*/ uint16(xArgXmm2M128), - /*8025*/ uint16(xMatch), - /*8026*/ uint16(xSetOp), uint16(ADC), - /*8028*/ uint16(xReadSlashR), - /*8029*/ uint16(xArgRM8), - /*8030*/ uint16(xArgR8), - /*8031*/ uint16(xMatch), - /*8032*/ uint16(xCondIs64), 8035, 8051, - /*8035*/ uint16(xCondDataSize), 8039, 8045, 0, - /*8039*/ uint16(xSetOp), uint16(ADC), + /*7038*/ uint16(xCondIs64), 7041, 7053, + /*7041*/ uint16(xCondDataSize), 7045, 7049, 0, + /*7045*/ uint16(xSetOp), uint16(CMPXCHG8B), + /*7047*/ uint16(xArgM64), + /*7048*/ uint16(xMatch), + /*7049*/ uint16(xSetOp), uint16(CMPXCHG8B), + /*7051*/ uint16(xArgM64), + /*7052*/ uint16(xMatch), + /*7053*/ uint16(xCondDataSize), 7045, 7049, 7057, + /*7057*/ uint16(xSetOp), uint16(CMPXCHG16B), + /*7059*/ uint16(xArgM128), + /*7060*/ uint16(xMatch), + /*7061*/ uint16(xCondIs64), 7064, 7076, + /*7064*/ uint16(xCondDataSize), 7068, 7072, 0, + /*7068*/ uint16(xSetOp), uint16(XRSTORS), + /*7070*/ uint16(xArgMem), + /*7071*/ uint16(xMatch), + /*7072*/ uint16(xSetOp), uint16(XRSTORS), + /*7074*/ uint16(xArgMem), + /*7075*/ uint16(xMatch), + /*7076*/ uint16(xCondDataSize), 7068, 7072, 7080, + /*7080*/ uint16(xSetOp), uint16(XRSTORS64), + /*7082*/ uint16(xArgMem), + /*7083*/ uint16(xMatch), + /*7084*/ uint16(xCondIs64), 7087, 7099, + /*7087*/ uint16(xCondDataSize), 7091, 7095, 0, + /*7091*/ uint16(xSetOp), uint16(XSAVEC), + /*7093*/ uint16(xArgMem), + /*7094*/ uint16(xMatch), + /*7095*/ uint16(xSetOp), uint16(XSAVEC), + /*7097*/ uint16(xArgMem), + /*7098*/ uint16(xMatch), + /*7099*/ uint16(xCondDataSize), 7091, 7095, 7103, + /*7103*/ uint16(xSetOp), uint16(XSAVEC64), + /*7105*/ uint16(xArgMem), + /*7106*/ uint16(xMatch), + /*7107*/ uint16(xCondIs64), 7110, 7122, + /*7110*/ uint16(xCondDataSize), 7114, 7118, 0, + /*7114*/ uint16(xSetOp), uint16(XSAVES), + /*7116*/ uint16(xArgMem), + /*7117*/ uint16(xMatch), + /*7118*/ uint16(xSetOp), uint16(XSAVES), + /*7120*/ uint16(xArgMem), + /*7121*/ uint16(xMatch), + /*7122*/ uint16(xCondDataSize), 7114, 7118, 7126, + /*7126*/ uint16(xSetOp), uint16(XSAVES64), + /*7128*/ uint16(xArgMem), + /*7129*/ uint16(xMatch), + /*7130*/ uint16(xCondIs64), 7133, 7151, + /*7133*/ uint16(xCondDataSize), 7137, 7144, 0, + /*7137*/ uint16(xCondIsMem), 7140, 0, + /*7140*/ uint16(xSetOp), uint16(RDRAND), + /*7142*/ uint16(xArgRmf16), + /*7143*/ uint16(xMatch), + /*7144*/ uint16(xCondIsMem), 7147, 0, + /*7147*/ uint16(xSetOp), uint16(RDRAND), + /*7149*/ uint16(xArgRmf32), + /*7150*/ uint16(xMatch), + /*7151*/ uint16(xCondDataSize), 7137, 7144, 7155, + /*7155*/ uint16(xSetOp), uint16(RDRAND), + /*7157*/ uint16(xMatch), + /*7158*/ uint16(xCondIs64), 7161, 7173, + /*7161*/ uint16(xCondDataSize), 7165, 7169, 0, + /*7165*/ uint16(xSetOp), uint16(BSWAP), + /*7167*/ uint16(xArgR16op), + /*7168*/ uint16(xMatch), + /*7169*/ uint16(xSetOp), uint16(BSWAP), + /*7171*/ uint16(xArgR32op), + /*7172*/ uint16(xMatch), + /*7173*/ uint16(xCondDataSize), 7165, 7169, 7177, + /*7177*/ uint16(xSetOp), uint16(BSWAP), + /*7179*/ uint16(xArgR64op), + /*7180*/ uint16(xMatch), + /*7181*/ uint16(xCondPrefix), 2, + 0xF2, 7193, + 0x66, 7187, + /*7187*/ uint16(xSetOp), uint16(ADDSUBPD), + /*7189*/ uint16(xReadSlashR), + /*7190*/ uint16(xArgXmm1), + /*7191*/ uint16(xArgXmm2M128), + /*7192*/ uint16(xMatch), + /*7193*/ uint16(xSetOp), uint16(ADDSUBPS), + /*7195*/ uint16(xReadSlashR), + /*7196*/ uint16(xArgXmm1), + /*7197*/ uint16(xArgXmm2M128), + /*7198*/ uint16(xMatch), + /*7199*/ uint16(xCondPrefix), 2, + 0x66, 7211, + 0x0, 7205, + /*7205*/ uint16(xSetOp), uint16(PSRLW), + /*7207*/ uint16(xReadSlashR), + /*7208*/ uint16(xArgMm), + /*7209*/ uint16(xArgMmM64), + /*7210*/ uint16(xMatch), + /*7211*/ uint16(xSetOp), uint16(PSRLW), + /*7213*/ uint16(xReadSlashR), + /*7214*/ uint16(xArgXmm1), + /*7215*/ uint16(xArgXmm2M128), + /*7216*/ uint16(xMatch), + /*7217*/ uint16(xCondPrefix), 2, + 0x66, 7229, + 0x0, 7223, + /*7223*/ uint16(xSetOp), uint16(PSRLD), + /*7225*/ uint16(xReadSlashR), + /*7226*/ uint16(xArgMm), + /*7227*/ uint16(xArgMmM64), + /*7228*/ uint16(xMatch), + /*7229*/ uint16(xSetOp), uint16(PSRLD), + /*7231*/ uint16(xReadSlashR), + /*7232*/ uint16(xArgXmm1), + /*7233*/ uint16(xArgXmm2M128), + /*7234*/ uint16(xMatch), + /*7235*/ uint16(xCondPrefix), 2, + 0x66, 7247, + 0x0, 7241, + /*7241*/ uint16(xSetOp), uint16(PSRLQ), + /*7243*/ uint16(xReadSlashR), + /*7244*/ uint16(xArgMm), + /*7245*/ uint16(xArgMmM64), + /*7246*/ uint16(xMatch), + /*7247*/ uint16(xSetOp), uint16(PSRLQ), + /*7249*/ uint16(xReadSlashR), + /*7250*/ uint16(xArgXmm1), + /*7251*/ uint16(xArgXmm2M128), + /*7252*/ uint16(xMatch), + /*7253*/ uint16(xCondPrefix), 2, + 0x66, 7265, + 0x0, 7259, + /*7259*/ uint16(xSetOp), uint16(PADDQ), + /*7261*/ uint16(xReadSlashR), + /*7262*/ uint16(xArgMm1), + /*7263*/ uint16(xArgMm2M64), + /*7264*/ uint16(xMatch), + /*7265*/ uint16(xSetOp), uint16(PADDQ), + /*7267*/ uint16(xReadSlashR), + /*7268*/ uint16(xArgXmm1), + /*7269*/ uint16(xArgXmm2M128), + /*7270*/ uint16(xMatch), + /*7271*/ uint16(xCondPrefix), 2, + 0x66, 7283, + 0x0, 7277, + /*7277*/ uint16(xSetOp), uint16(PMULLW), + /*7279*/ uint16(xReadSlashR), + /*7280*/ uint16(xArgMm), + /*7281*/ uint16(xArgMmM64), + /*7282*/ uint16(xMatch), + /*7283*/ uint16(xSetOp), uint16(PMULLW), + /*7285*/ uint16(xReadSlashR), + /*7286*/ uint16(xArgXmm1), + /*7287*/ uint16(xArgXmm2M128), + /*7288*/ uint16(xMatch), + /*7289*/ uint16(xCondPrefix), 3, + 0xF3, 7309, + 0xF2, 7303, + 0x66, 7297, + /*7297*/ uint16(xSetOp), uint16(MOVQ), + /*7299*/ uint16(xReadSlashR), + /*7300*/ uint16(xArgXmm2M64), + /*7301*/ uint16(xArgXmm1), + /*7302*/ uint16(xMatch), + /*7303*/ uint16(xSetOp), uint16(MOVDQ2Q), + /*7305*/ uint16(xReadSlashR), + /*7306*/ uint16(xArgMm), + /*7307*/ uint16(xArgXmm2), + /*7308*/ uint16(xMatch), + /*7309*/ uint16(xSetOp), uint16(MOVQ2DQ), + /*7311*/ uint16(xReadSlashR), + /*7312*/ uint16(xArgXmm1), + /*7313*/ uint16(xArgMm2), + /*7314*/ uint16(xMatch), + /*7315*/ uint16(xCondPrefix), 2, + 0x66, 7327, + 0x0, 7321, + /*7321*/ uint16(xSetOp), uint16(PMOVMSKB), + /*7323*/ uint16(xReadSlashR), + /*7324*/ uint16(xArgR32), + /*7325*/ uint16(xArgMm2), + /*7326*/ uint16(xMatch), + /*7327*/ uint16(xSetOp), uint16(PMOVMSKB), + /*7329*/ uint16(xReadSlashR), + /*7330*/ uint16(xArgR32), + /*7331*/ uint16(xArgXmm2), + /*7332*/ uint16(xMatch), + /*7333*/ uint16(xCondPrefix), 2, + 0x66, 7345, + 0x0, 7339, + /*7339*/ uint16(xSetOp), uint16(PSUBUSB), + /*7341*/ uint16(xReadSlashR), + /*7342*/ uint16(xArgMm), + /*7343*/ uint16(xArgMmM64), + /*7344*/ uint16(xMatch), + /*7345*/ uint16(xSetOp), uint16(PSUBUSB), + /*7347*/ uint16(xReadSlashR), + /*7348*/ uint16(xArgXmm1), + /*7349*/ uint16(xArgXmm2M128), + /*7350*/ uint16(xMatch), + /*7351*/ uint16(xCondPrefix), 2, + 0x66, 7363, + 0x0, 7357, + /*7357*/ uint16(xSetOp), uint16(PSUBUSW), + /*7359*/ uint16(xReadSlashR), + /*7360*/ uint16(xArgMm), + /*7361*/ uint16(xArgMmM64), + /*7362*/ uint16(xMatch), + /*7363*/ uint16(xSetOp), uint16(PSUBUSW), + /*7365*/ uint16(xReadSlashR), + /*7366*/ uint16(xArgXmm1), + /*7367*/ uint16(xArgXmm2M128), + /*7368*/ uint16(xMatch), + /*7369*/ uint16(xCondPrefix), 2, + 0x66, 7381, + 0x0, 7375, + /*7375*/ uint16(xSetOp), uint16(PMINUB), + /*7377*/ uint16(xReadSlashR), + /*7378*/ uint16(xArgMm1), + /*7379*/ uint16(xArgMm2M64), + /*7380*/ uint16(xMatch), + /*7381*/ uint16(xSetOp), uint16(PMINUB), + /*7383*/ uint16(xReadSlashR), + /*7384*/ uint16(xArgXmm1), + /*7385*/ uint16(xArgXmm2M128), + /*7386*/ uint16(xMatch), + /*7387*/ uint16(xCondPrefix), 2, + 0x66, 7399, + 0x0, 7393, + /*7393*/ uint16(xSetOp), uint16(PAND), + /*7395*/ uint16(xReadSlashR), + /*7396*/ uint16(xArgMm), + /*7397*/ uint16(xArgMmM64), + /*7398*/ uint16(xMatch), + /*7399*/ uint16(xSetOp), uint16(PAND), + /*7401*/ uint16(xReadSlashR), + /*7402*/ uint16(xArgXmm1), + /*7403*/ uint16(xArgXmm2M128), + /*7404*/ uint16(xMatch), + /*7405*/ uint16(xCondPrefix), 2, + 0x66, 7417, + 0x0, 7411, + /*7411*/ uint16(xSetOp), uint16(PADDUSB), + /*7413*/ uint16(xReadSlashR), + /*7414*/ uint16(xArgMm), + /*7415*/ uint16(xArgMmM64), + /*7416*/ uint16(xMatch), + /*7417*/ uint16(xSetOp), uint16(PADDUSB), + /*7419*/ uint16(xReadSlashR), + /*7420*/ uint16(xArgXmm1), + /*7421*/ uint16(xArgXmm2M128), + /*7422*/ uint16(xMatch), + /*7423*/ uint16(xCondPrefix), 2, + 0x66, 7435, + 0x0, 7429, + /*7429*/ uint16(xSetOp), uint16(PADDUSW), + /*7431*/ uint16(xReadSlashR), + /*7432*/ uint16(xArgMm), + /*7433*/ uint16(xArgMmM64), + /*7434*/ uint16(xMatch), + /*7435*/ uint16(xSetOp), uint16(PADDUSW), + /*7437*/ uint16(xReadSlashR), + /*7438*/ uint16(xArgXmm1), + /*7439*/ uint16(xArgXmm2M128), + /*7440*/ uint16(xMatch), + /*7441*/ uint16(xCondPrefix), 2, + 0x66, 7453, + 0x0, 7447, + /*7447*/ uint16(xSetOp), uint16(PMAXUB), + /*7449*/ uint16(xReadSlashR), + /*7450*/ uint16(xArgMm1), + /*7451*/ uint16(xArgMm2M64), + /*7452*/ uint16(xMatch), + /*7453*/ uint16(xSetOp), uint16(PMAXUB), + /*7455*/ uint16(xReadSlashR), + /*7456*/ uint16(xArgXmm1), + /*7457*/ uint16(xArgXmm2M128), + /*7458*/ uint16(xMatch), + /*7459*/ uint16(xCondPrefix), 2, + 0x66, 7471, + 0x0, 7465, + /*7465*/ uint16(xSetOp), uint16(PANDN), + /*7467*/ uint16(xReadSlashR), + /*7468*/ uint16(xArgMm), + /*7469*/ uint16(xArgMmM64), + /*7470*/ uint16(xMatch), + /*7471*/ uint16(xSetOp), uint16(PANDN), + /*7473*/ uint16(xReadSlashR), + /*7474*/ uint16(xArgXmm1), + /*7475*/ uint16(xArgXmm2M128), + /*7476*/ uint16(xMatch), + /*7477*/ uint16(xCondPrefix), 2, + 0x66, 7489, + 0x0, 7483, + /*7483*/ uint16(xSetOp), uint16(PAVGB), + /*7485*/ uint16(xReadSlashR), + /*7486*/ uint16(xArgMm1), + /*7487*/ uint16(xArgMm2M64), + /*7488*/ uint16(xMatch), + /*7489*/ uint16(xSetOp), uint16(PAVGB), + /*7491*/ uint16(xReadSlashR), + /*7492*/ uint16(xArgXmm1), + /*7493*/ uint16(xArgXmm2M128), + /*7494*/ uint16(xMatch), + /*7495*/ uint16(xCondPrefix), 2, + 0x66, 7507, + 0x0, 7501, + /*7501*/ uint16(xSetOp), uint16(PSRAW), + /*7503*/ uint16(xReadSlashR), + /*7504*/ uint16(xArgMm), + /*7505*/ uint16(xArgMmM64), + /*7506*/ uint16(xMatch), + /*7507*/ uint16(xSetOp), uint16(PSRAW), + /*7509*/ uint16(xReadSlashR), + /*7510*/ uint16(xArgXmm1), + /*7511*/ uint16(xArgXmm2M128), + /*7512*/ uint16(xMatch), + /*7513*/ uint16(xCondPrefix), 2, + 0x66, 7525, + 0x0, 7519, + /*7519*/ uint16(xSetOp), uint16(PSRAD), + /*7521*/ uint16(xReadSlashR), + /*7522*/ uint16(xArgMm), + /*7523*/ uint16(xArgMmM64), + /*7524*/ uint16(xMatch), + /*7525*/ uint16(xSetOp), uint16(PSRAD), + /*7527*/ uint16(xReadSlashR), + /*7528*/ uint16(xArgXmm1), + /*7529*/ uint16(xArgXmm2M128), + /*7530*/ uint16(xMatch), + /*7531*/ uint16(xCondPrefix), 2, + 0x66, 7543, + 0x0, 7537, + /*7537*/ uint16(xSetOp), uint16(PAVGW), + /*7539*/ uint16(xReadSlashR), + /*7540*/ uint16(xArgMm1), + /*7541*/ uint16(xArgMm2M64), + /*7542*/ uint16(xMatch), + /*7543*/ uint16(xSetOp), uint16(PAVGW), + /*7545*/ uint16(xReadSlashR), + /*7546*/ uint16(xArgXmm1), + /*7547*/ uint16(xArgXmm2M128), + /*7548*/ uint16(xMatch), + /*7549*/ uint16(xCondPrefix), 2, + 0x66, 7561, + 0x0, 7555, + /*7555*/ uint16(xSetOp), uint16(PMULHUW), + /*7557*/ uint16(xReadSlashR), + /*7558*/ uint16(xArgMm1), + /*7559*/ uint16(xArgMm2M64), + /*7560*/ uint16(xMatch), + /*7561*/ uint16(xSetOp), uint16(PMULHUW), + /*7563*/ uint16(xReadSlashR), + /*7564*/ uint16(xArgXmm1), + /*7565*/ uint16(xArgXmm2M128), + /*7566*/ uint16(xMatch), + /*7567*/ uint16(xCondPrefix), 2, + 0x66, 7579, + 0x0, 7573, + /*7573*/ uint16(xSetOp), uint16(PMULHW), + /*7575*/ uint16(xReadSlashR), + /*7576*/ uint16(xArgMm), + /*7577*/ uint16(xArgMmM64), + /*7578*/ uint16(xMatch), + /*7579*/ uint16(xSetOp), uint16(PMULHW), + /*7581*/ uint16(xReadSlashR), + /*7582*/ uint16(xArgXmm1), + /*7583*/ uint16(xArgXmm2M128), + /*7584*/ uint16(xMatch), + /*7585*/ uint16(xCondPrefix), 3, + 0xF3, 7605, + 0xF2, 7599, + 0x66, 7593, + /*7593*/ uint16(xSetOp), uint16(CVTTPD2DQ), + /*7595*/ uint16(xReadSlashR), + /*7596*/ uint16(xArgXmm1), + /*7597*/ uint16(xArgXmm2M128), + /*7598*/ uint16(xMatch), + /*7599*/ uint16(xSetOp), uint16(CVTPD2DQ), + /*7601*/ uint16(xReadSlashR), + /*7602*/ uint16(xArgXmm1), + /*7603*/ uint16(xArgXmm2M128), + /*7604*/ uint16(xMatch), + /*7605*/ uint16(xSetOp), uint16(CVTDQ2PD), + /*7607*/ uint16(xReadSlashR), + /*7608*/ uint16(xArgXmm1), + /*7609*/ uint16(xArgXmm2M64), + /*7610*/ uint16(xMatch), + /*7611*/ uint16(xCondPrefix), 2, + 0x66, 7623, + 0x0, 7617, + /*7617*/ uint16(xSetOp), uint16(MOVNTQ), + /*7619*/ uint16(xReadSlashR), + /*7620*/ uint16(xArgM64), + /*7621*/ uint16(xArgMm), + /*7622*/ uint16(xMatch), + /*7623*/ uint16(xSetOp), uint16(MOVNTDQ), + /*7625*/ uint16(xReadSlashR), + /*7626*/ uint16(xArgM128), + /*7627*/ uint16(xArgXmm), + /*7628*/ uint16(xMatch), + /*7629*/ uint16(xCondPrefix), 2, + 0x66, 7641, + 0x0, 7635, + /*7635*/ uint16(xSetOp), uint16(PSUBSB), + /*7637*/ uint16(xReadSlashR), + /*7638*/ uint16(xArgMm), + /*7639*/ uint16(xArgMmM64), + /*7640*/ uint16(xMatch), + /*7641*/ uint16(xSetOp), uint16(PSUBSB), + /*7643*/ uint16(xReadSlashR), + /*7644*/ uint16(xArgXmm1), + /*7645*/ uint16(xArgXmm2M128), + /*7646*/ uint16(xMatch), + /*7647*/ uint16(xCondPrefix), 2, + 0x66, 7659, + 0x0, 7653, + /*7653*/ uint16(xSetOp), uint16(PSUBSW), + /*7655*/ uint16(xReadSlashR), + /*7656*/ uint16(xArgMm), + /*7657*/ uint16(xArgMmM64), + /*7658*/ uint16(xMatch), + /*7659*/ uint16(xSetOp), uint16(PSUBSW), + /*7661*/ uint16(xReadSlashR), + /*7662*/ uint16(xArgXmm1), + /*7663*/ uint16(xArgXmm2M128), + /*7664*/ uint16(xMatch), + /*7665*/ uint16(xCondPrefix), 2, + 0x66, 7677, + 0x0, 7671, + /*7671*/ uint16(xSetOp), uint16(PMINSW), + /*7673*/ uint16(xReadSlashR), + /*7674*/ uint16(xArgMm1), + /*7675*/ uint16(xArgMm2M64), + /*7676*/ uint16(xMatch), + /*7677*/ uint16(xSetOp), uint16(PMINSW), + /*7679*/ uint16(xReadSlashR), + /*7680*/ uint16(xArgXmm1), + /*7681*/ uint16(xArgXmm2M128), + /*7682*/ uint16(xMatch), + /*7683*/ uint16(xCondPrefix), 2, + 0x66, 7695, + 0x0, 7689, + /*7689*/ uint16(xSetOp), uint16(POR), + /*7691*/ uint16(xReadSlashR), + /*7692*/ uint16(xArgMm), + /*7693*/ uint16(xArgMmM64), + /*7694*/ uint16(xMatch), + /*7695*/ uint16(xSetOp), uint16(POR), + /*7697*/ uint16(xReadSlashR), + /*7698*/ uint16(xArgXmm1), + /*7699*/ uint16(xArgXmm2M128), + /*7700*/ uint16(xMatch), + /*7701*/ uint16(xCondPrefix), 2, + 0x66, 7713, + 0x0, 7707, + /*7707*/ uint16(xSetOp), uint16(PADDSB), + /*7709*/ uint16(xReadSlashR), + /*7710*/ uint16(xArgMm), + /*7711*/ uint16(xArgMmM64), + /*7712*/ uint16(xMatch), + /*7713*/ uint16(xSetOp), uint16(PADDSB), + /*7715*/ uint16(xReadSlashR), + /*7716*/ uint16(xArgXmm1), + /*7717*/ uint16(xArgXmm2M128), + /*7718*/ uint16(xMatch), + /*7719*/ uint16(xCondPrefix), 2, + 0x66, 7731, + 0x0, 7725, + /*7725*/ uint16(xSetOp), uint16(PADDSW), + /*7727*/ uint16(xReadSlashR), + /*7728*/ uint16(xArgMm), + /*7729*/ uint16(xArgMmM64), + /*7730*/ uint16(xMatch), + /*7731*/ uint16(xSetOp), uint16(PADDSW), + /*7733*/ uint16(xReadSlashR), + /*7734*/ uint16(xArgXmm1), + /*7735*/ uint16(xArgXmm2M128), + /*7736*/ uint16(xMatch), + /*7737*/ uint16(xCondPrefix), 2, + 0x66, 7749, + 0x0, 7743, + /*7743*/ uint16(xSetOp), uint16(PMAXSW), + /*7745*/ uint16(xReadSlashR), + /*7746*/ uint16(xArgMm1), + /*7747*/ uint16(xArgMm2M64), + /*7748*/ uint16(xMatch), + /*7749*/ uint16(xSetOp), uint16(PMAXSW), + /*7751*/ uint16(xReadSlashR), + /*7752*/ uint16(xArgXmm1), + /*7753*/ uint16(xArgXmm2M128), + /*7754*/ uint16(xMatch), + /*7755*/ uint16(xCondPrefix), 2, + 0x66, 7767, + 0x0, 7761, + /*7761*/ uint16(xSetOp), uint16(PXOR), + /*7763*/ uint16(xReadSlashR), + /*7764*/ uint16(xArgMm), + /*7765*/ uint16(xArgMmM64), + /*7766*/ uint16(xMatch), + /*7767*/ uint16(xSetOp), uint16(PXOR), + /*7769*/ uint16(xReadSlashR), + /*7770*/ uint16(xArgXmm1), + /*7771*/ uint16(xArgXmm2M128), + /*7772*/ uint16(xMatch), + /*7773*/ uint16(xCondPrefix), 1, + 0xF2, 7777, + /*7777*/ uint16(xSetOp), uint16(LDDQU), + /*7779*/ uint16(xReadSlashR), + /*7780*/ uint16(xArgXmm1), + /*7781*/ uint16(xArgM128), + /*7782*/ uint16(xMatch), + /*7783*/ uint16(xCondPrefix), 2, + 0x66, 7795, + 0x0, 7789, + /*7789*/ uint16(xSetOp), uint16(PSLLW), + /*7791*/ uint16(xReadSlashR), + /*7792*/ uint16(xArgMm), + /*7793*/ uint16(xArgMmM64), + /*7794*/ uint16(xMatch), + /*7795*/ uint16(xSetOp), uint16(PSLLW), + /*7797*/ uint16(xReadSlashR), + /*7798*/ uint16(xArgXmm1), + /*7799*/ uint16(xArgXmm2M128), + /*7800*/ uint16(xMatch), + /*7801*/ uint16(xCondPrefix), 2, + 0x66, 7813, + 0x0, 7807, + /*7807*/ uint16(xSetOp), uint16(PSLLD), + /*7809*/ uint16(xReadSlashR), + /*7810*/ uint16(xArgMm), + /*7811*/ uint16(xArgMmM64), + /*7812*/ uint16(xMatch), + /*7813*/ uint16(xSetOp), uint16(PSLLD), + /*7815*/ uint16(xReadSlashR), + /*7816*/ uint16(xArgXmm1), + /*7817*/ uint16(xArgXmm2M128), + /*7818*/ uint16(xMatch), + /*7819*/ uint16(xCondPrefix), 2, + 0x66, 7831, + 0x0, 7825, + /*7825*/ uint16(xSetOp), uint16(PSLLQ), + /*7827*/ uint16(xReadSlashR), + /*7828*/ uint16(xArgMm), + /*7829*/ uint16(xArgMmM64), + /*7830*/ uint16(xMatch), + /*7831*/ uint16(xSetOp), uint16(PSLLQ), + /*7833*/ uint16(xReadSlashR), + /*7834*/ uint16(xArgXmm1), + /*7835*/ uint16(xArgXmm2M128), + /*7836*/ uint16(xMatch), + /*7837*/ uint16(xCondPrefix), 2, + 0x66, 7849, + 0x0, 7843, + /*7843*/ uint16(xSetOp), uint16(PMULUDQ), + /*7845*/ uint16(xReadSlashR), + /*7846*/ uint16(xArgMm1), + /*7847*/ uint16(xArgMm2M64), + /*7848*/ uint16(xMatch), + /*7849*/ uint16(xSetOp), uint16(PMULUDQ), + /*7851*/ uint16(xReadSlashR), + /*7852*/ uint16(xArgXmm1), + /*7853*/ uint16(xArgXmm2M128), + /*7854*/ uint16(xMatch), + /*7855*/ uint16(xCondPrefix), 2, + 0x66, 7867, + 0x0, 7861, + /*7861*/ uint16(xSetOp), uint16(PMADDWD), + /*7863*/ uint16(xReadSlashR), + /*7864*/ uint16(xArgMm), + /*7865*/ uint16(xArgMmM64), + /*7866*/ uint16(xMatch), + /*7867*/ uint16(xSetOp), uint16(PMADDWD), + /*7869*/ uint16(xReadSlashR), + /*7870*/ uint16(xArgXmm1), + /*7871*/ uint16(xArgXmm2M128), + /*7872*/ uint16(xMatch), + /*7873*/ uint16(xCondPrefix), 2, + 0x66, 7885, + 0x0, 7879, + /*7879*/ uint16(xSetOp), uint16(PSADBW), + /*7881*/ uint16(xReadSlashR), + /*7882*/ uint16(xArgMm1), + /*7883*/ uint16(xArgMm2M64), + /*7884*/ uint16(xMatch), + /*7885*/ uint16(xSetOp), uint16(PSADBW), + /*7887*/ uint16(xReadSlashR), + /*7888*/ uint16(xArgXmm1), + /*7889*/ uint16(xArgXmm2M128), + /*7890*/ uint16(xMatch), + /*7891*/ uint16(xCondPrefix), 2, + 0x66, 7903, + 0x0, 7897, + /*7897*/ uint16(xSetOp), uint16(MASKMOVQ), + /*7899*/ uint16(xReadSlashR), + /*7900*/ uint16(xArgMm1), + /*7901*/ uint16(xArgMm2), + /*7902*/ uint16(xMatch), + /*7903*/ uint16(xSetOp), uint16(MASKMOVDQU), + /*7905*/ uint16(xReadSlashR), + /*7906*/ uint16(xArgXmm1), + /*7907*/ uint16(xArgXmm2), + /*7908*/ uint16(xMatch), + /*7909*/ uint16(xCondPrefix), 2, + 0x66, 7921, + 0x0, 7915, + /*7915*/ uint16(xSetOp), uint16(PSUBB), + /*7917*/ uint16(xReadSlashR), + /*7918*/ uint16(xArgMm), + /*7919*/ uint16(xArgMmM64), + /*7920*/ uint16(xMatch), + /*7921*/ uint16(xSetOp), uint16(PSUBB), + /*7923*/ uint16(xReadSlashR), + /*7924*/ uint16(xArgXmm1), + /*7925*/ uint16(xArgXmm2M128), + /*7926*/ uint16(xMatch), + /*7927*/ uint16(xCondPrefix), 2, + 0x66, 7939, + 0x0, 7933, + /*7933*/ uint16(xSetOp), uint16(PSUBW), + /*7935*/ uint16(xReadSlashR), + /*7936*/ uint16(xArgMm), + /*7937*/ uint16(xArgMmM64), + /*7938*/ uint16(xMatch), + /*7939*/ uint16(xSetOp), uint16(PSUBW), + /*7941*/ uint16(xReadSlashR), + /*7942*/ uint16(xArgXmm1), + /*7943*/ uint16(xArgXmm2M128), + /*7944*/ uint16(xMatch), + /*7945*/ uint16(xCondPrefix), 2, + 0x66, 7957, + 0x0, 7951, + /*7951*/ uint16(xSetOp), uint16(PSUBD), + /*7953*/ uint16(xReadSlashR), + /*7954*/ uint16(xArgMm), + /*7955*/ uint16(xArgMmM64), + /*7956*/ uint16(xMatch), + /*7957*/ uint16(xSetOp), uint16(PSUBD), + /*7959*/ uint16(xReadSlashR), + /*7960*/ uint16(xArgXmm1), + /*7961*/ uint16(xArgXmm2M128), + /*7962*/ uint16(xMatch), + /*7963*/ uint16(xCondPrefix), 2, + 0x66, 7975, + 0x0, 7969, + /*7969*/ uint16(xSetOp), uint16(PSUBQ), + /*7971*/ uint16(xReadSlashR), + /*7972*/ uint16(xArgMm1), + /*7973*/ uint16(xArgMm2M64), + /*7974*/ uint16(xMatch), + /*7975*/ uint16(xSetOp), uint16(PSUBQ), + /*7977*/ uint16(xReadSlashR), + /*7978*/ uint16(xArgXmm1), + /*7979*/ uint16(xArgXmm2M128), + /*7980*/ uint16(xMatch), + /*7981*/ uint16(xCondPrefix), 2, + 0x66, 7993, + 0x0, 7987, + /*7987*/ uint16(xSetOp), uint16(PADDB), + /*7989*/ uint16(xReadSlashR), + /*7990*/ uint16(xArgMm), + /*7991*/ uint16(xArgMmM64), + /*7992*/ uint16(xMatch), + /*7993*/ uint16(xSetOp), uint16(PADDB), + /*7995*/ uint16(xReadSlashR), + /*7996*/ uint16(xArgXmm1), + /*7997*/ uint16(xArgXmm2M128), + /*7998*/ uint16(xMatch), + /*7999*/ uint16(xCondPrefix), 2, + 0x66, 8011, + 0x0, 8005, + /*8005*/ uint16(xSetOp), uint16(PADDW), + /*8007*/ uint16(xReadSlashR), + /*8008*/ uint16(xArgMm), + /*8009*/ uint16(xArgMmM64), + /*8010*/ uint16(xMatch), + /*8011*/ uint16(xSetOp), uint16(PADDW), + /*8013*/ uint16(xReadSlashR), + /*8014*/ uint16(xArgXmm1), + /*8015*/ uint16(xArgXmm2M128), + /*8016*/ uint16(xMatch), + /*8017*/ uint16(xCondPrefix), 2, + 0x66, 8029, + 0x0, 8023, + /*8023*/ uint16(xSetOp), uint16(PADDD), + /*8025*/ uint16(xReadSlashR), + /*8026*/ uint16(xArgMm), + /*8027*/ uint16(xArgMmM64), + /*8028*/ uint16(xMatch), + /*8029*/ uint16(xSetOp), uint16(PADDD), + /*8031*/ uint16(xReadSlashR), + /*8032*/ uint16(xArgXmm1), + /*8033*/ uint16(xArgXmm2M128), + /*8034*/ uint16(xMatch), + /*8035*/ uint16(xCondDataSize), 0, 8039, 0, + /*8039*/ uint16(xSetOp), uint16(UD0), /*8041*/ uint16(xReadSlashR), - /*8042*/ uint16(xArgRM16), - /*8043*/ uint16(xArgR16), + /*8042*/ uint16(xArgR32), + /*8043*/ uint16(xArgRM32), /*8044*/ uint16(xMatch), /*8045*/ uint16(xSetOp), uint16(ADC), /*8047*/ uint16(xReadSlashR), - /*8048*/ uint16(xArgRM32), - /*8049*/ uint16(xArgR32), + /*8048*/ uint16(xArgRM8), + /*8049*/ uint16(xArgR8), /*8050*/ uint16(xMatch), - /*8051*/ uint16(xCondDataSize), 8039, 8045, 8055, - /*8055*/ uint16(xSetOp), uint16(ADC), - /*8057*/ uint16(xReadSlashR), - /*8058*/ uint16(xArgRM64), - /*8059*/ uint16(xArgR64), - /*8060*/ uint16(xMatch), - /*8061*/ uint16(xSetOp), uint16(ADC), - /*8063*/ uint16(xReadSlashR), - /*8064*/ uint16(xArgR8), - /*8065*/ uint16(xArgRM8), - /*8066*/ uint16(xMatch), - /*8067*/ uint16(xCondIs64), 8070, 8086, - /*8070*/ uint16(xCondDataSize), 8074, 8080, 0, + /*8051*/ uint16(xCondIs64), 8054, 8070, + /*8054*/ uint16(xCondDataSize), 8058, 8064, 0, + /*8058*/ uint16(xSetOp), uint16(ADC), + /*8060*/ uint16(xReadSlashR), + /*8061*/ uint16(xArgRM16), + /*8062*/ uint16(xArgR16), + /*8063*/ uint16(xMatch), + /*8064*/ uint16(xSetOp), uint16(ADC), + /*8066*/ uint16(xReadSlashR), + /*8067*/ uint16(xArgRM32), + /*8068*/ uint16(xArgR32), + /*8069*/ uint16(xMatch), + /*8070*/ uint16(xCondDataSize), 8058, 8064, 8074, /*8074*/ uint16(xSetOp), uint16(ADC), /*8076*/ uint16(xReadSlashR), - /*8077*/ uint16(xArgR16), - /*8078*/ uint16(xArgRM16), + /*8077*/ uint16(xArgRM64), + /*8078*/ uint16(xArgR64), /*8079*/ uint16(xMatch), /*8080*/ uint16(xSetOp), uint16(ADC), /*8082*/ uint16(xReadSlashR), - /*8083*/ uint16(xArgR32), - /*8084*/ uint16(xArgRM32), + /*8083*/ uint16(xArgR8), + /*8084*/ uint16(xArgRM8), /*8085*/ uint16(xMatch), - /*8086*/ uint16(xCondDataSize), 8074, 8080, 8090, - /*8090*/ uint16(xSetOp), uint16(ADC), - /*8092*/ uint16(xReadSlashR), - /*8093*/ uint16(xArgR64), - /*8094*/ uint16(xArgRM64), - /*8095*/ uint16(xMatch), - /*8096*/ uint16(xSetOp), uint16(ADC), - /*8098*/ uint16(xReadIb), - /*8099*/ uint16(xArgAL), - /*8100*/ uint16(xArgImm8u), - /*8101*/ uint16(xMatch), - /*8102*/ uint16(xCondIs64), 8105, 8121, - /*8105*/ uint16(xCondDataSize), 8109, 8115, 0, + /*8086*/ uint16(xCondIs64), 8089, 8105, + /*8089*/ uint16(xCondDataSize), 8093, 8099, 0, + /*8093*/ uint16(xSetOp), uint16(ADC), + /*8095*/ uint16(xReadSlashR), + /*8096*/ uint16(xArgR16), + /*8097*/ uint16(xArgRM16), + /*8098*/ uint16(xMatch), + /*8099*/ uint16(xSetOp), uint16(ADC), + /*8101*/ uint16(xReadSlashR), + /*8102*/ uint16(xArgR32), + /*8103*/ uint16(xArgRM32), + /*8104*/ uint16(xMatch), + /*8105*/ uint16(xCondDataSize), 8093, 8099, 8109, /*8109*/ uint16(xSetOp), uint16(ADC), - /*8111*/ uint16(xReadIw), - /*8112*/ uint16(xArgAX), - /*8113*/ uint16(xArgImm16), + /*8111*/ uint16(xReadSlashR), + /*8112*/ uint16(xArgR64), + /*8113*/ uint16(xArgRM64), /*8114*/ uint16(xMatch), /*8115*/ uint16(xSetOp), uint16(ADC), - /*8117*/ uint16(xReadId), - /*8118*/ uint16(xArgEAX), - /*8119*/ uint16(xArgImm32), + /*8117*/ uint16(xReadIb), + /*8118*/ uint16(xArgAL), + /*8119*/ uint16(xArgImm8u), /*8120*/ uint16(xMatch), - /*8121*/ uint16(xCondDataSize), 8109, 8115, 8125, - /*8125*/ uint16(xSetOp), uint16(ADC), - /*8127*/ uint16(xReadId), - /*8128*/ uint16(xArgRAX), - /*8129*/ uint16(xArgImm32), - /*8130*/ uint16(xMatch), - /*8131*/ uint16(xCondIs64), 8134, 0, - /*8134*/ uint16(xSetOp), uint16(PUSH), - /*8136*/ uint16(xArgSS), - /*8137*/ uint16(xMatch), - /*8138*/ uint16(xCondIs64), 8141, 0, - /*8141*/ uint16(xSetOp), uint16(POP), - /*8143*/ uint16(xArgSS), - /*8144*/ uint16(xMatch), - /*8145*/ uint16(xSetOp), uint16(SBB), - /*8147*/ uint16(xReadSlashR), - /*8148*/ uint16(xArgRM8), - /*8149*/ uint16(xArgR8), - /*8150*/ uint16(xMatch), - /*8151*/ uint16(xCondIs64), 8154, 8170, - /*8154*/ uint16(xCondDataSize), 8158, 8164, 0, - /*8158*/ uint16(xSetOp), uint16(SBB), - /*8160*/ uint16(xReadSlashR), - /*8161*/ uint16(xArgRM16), - /*8162*/ uint16(xArgR16), + /*8121*/ uint16(xCondIs64), 8124, 8140, + /*8124*/ uint16(xCondDataSize), 8128, 8134, 0, + /*8128*/ uint16(xSetOp), uint16(ADC), + /*8130*/ uint16(xReadIw), + /*8131*/ uint16(xArgAX), + /*8132*/ uint16(xArgImm16), + /*8133*/ uint16(xMatch), + /*8134*/ uint16(xSetOp), uint16(ADC), + /*8136*/ uint16(xReadId), + /*8137*/ uint16(xArgEAX), + /*8138*/ uint16(xArgImm32), + /*8139*/ uint16(xMatch), + /*8140*/ uint16(xCondDataSize), 8128, 8134, 8144, + /*8144*/ uint16(xSetOp), uint16(ADC), + /*8146*/ uint16(xReadId), + /*8147*/ uint16(xArgRAX), + /*8148*/ uint16(xArgImm32), + /*8149*/ uint16(xMatch), + /*8150*/ uint16(xCondIs64), 8153, 0, + /*8153*/ uint16(xSetOp), uint16(PUSH), + /*8155*/ uint16(xArgSS), + /*8156*/ uint16(xMatch), + /*8157*/ uint16(xCondIs64), 8160, 0, + /*8160*/ uint16(xSetOp), uint16(POP), + /*8162*/ uint16(xArgSS), /*8163*/ uint16(xMatch), /*8164*/ uint16(xSetOp), uint16(SBB), /*8166*/ uint16(xReadSlashR), - /*8167*/ uint16(xArgRM32), - /*8168*/ uint16(xArgR32), + /*8167*/ uint16(xArgRM8), + /*8168*/ uint16(xArgR8), /*8169*/ uint16(xMatch), - /*8170*/ uint16(xCondDataSize), 8158, 8164, 8174, - /*8174*/ uint16(xSetOp), uint16(SBB), - /*8176*/ uint16(xReadSlashR), - /*8177*/ uint16(xArgRM64), - /*8178*/ uint16(xArgR64), - /*8179*/ uint16(xMatch), - /*8180*/ uint16(xSetOp), uint16(SBB), - /*8182*/ uint16(xReadSlashR), - /*8183*/ uint16(xArgR8), - /*8184*/ uint16(xArgRM8), - /*8185*/ uint16(xMatch), - /*8186*/ uint16(xCondIs64), 8189, 8205, - /*8189*/ uint16(xCondDataSize), 8193, 8199, 0, + /*8170*/ uint16(xCondIs64), 8173, 8189, + /*8173*/ uint16(xCondDataSize), 8177, 8183, 0, + /*8177*/ uint16(xSetOp), uint16(SBB), + /*8179*/ uint16(xReadSlashR), + /*8180*/ uint16(xArgRM16), + /*8181*/ uint16(xArgR16), + /*8182*/ uint16(xMatch), + /*8183*/ uint16(xSetOp), uint16(SBB), + /*8185*/ uint16(xReadSlashR), + /*8186*/ uint16(xArgRM32), + /*8187*/ uint16(xArgR32), + /*8188*/ uint16(xMatch), + /*8189*/ uint16(xCondDataSize), 8177, 8183, 8193, /*8193*/ uint16(xSetOp), uint16(SBB), /*8195*/ uint16(xReadSlashR), - /*8196*/ uint16(xArgR16), - /*8197*/ uint16(xArgRM16), + /*8196*/ uint16(xArgRM64), + /*8197*/ uint16(xArgR64), /*8198*/ uint16(xMatch), /*8199*/ uint16(xSetOp), uint16(SBB), /*8201*/ uint16(xReadSlashR), - /*8202*/ uint16(xArgR32), - /*8203*/ uint16(xArgRM32), + /*8202*/ uint16(xArgR8), + /*8203*/ uint16(xArgRM8), /*8204*/ uint16(xMatch), - /*8205*/ uint16(xCondDataSize), 8193, 8199, 8209, - /*8209*/ uint16(xSetOp), uint16(SBB), - /*8211*/ uint16(xReadSlashR), - /*8212*/ uint16(xArgR64), - /*8213*/ uint16(xArgRM64), - /*8214*/ uint16(xMatch), - /*8215*/ uint16(xSetOp), uint16(SBB), - /*8217*/ uint16(xReadIb), - /*8218*/ uint16(xArgAL), - /*8219*/ uint16(xArgImm8u), - /*8220*/ uint16(xMatch), - /*8221*/ uint16(xCondIs64), 8224, 8240, - /*8224*/ uint16(xCondDataSize), 8228, 8234, 0, + /*8205*/ uint16(xCondIs64), 8208, 8224, + /*8208*/ uint16(xCondDataSize), 8212, 8218, 0, + /*8212*/ uint16(xSetOp), uint16(SBB), + /*8214*/ uint16(xReadSlashR), + /*8215*/ uint16(xArgR16), + /*8216*/ uint16(xArgRM16), + /*8217*/ uint16(xMatch), + /*8218*/ uint16(xSetOp), uint16(SBB), + /*8220*/ uint16(xReadSlashR), + /*8221*/ uint16(xArgR32), + /*8222*/ uint16(xArgRM32), + /*8223*/ uint16(xMatch), + /*8224*/ uint16(xCondDataSize), 8212, 8218, 8228, /*8228*/ uint16(xSetOp), uint16(SBB), - /*8230*/ uint16(xReadIw), - /*8231*/ uint16(xArgAX), - /*8232*/ uint16(xArgImm16), + /*8230*/ uint16(xReadSlashR), + /*8231*/ uint16(xArgR64), + /*8232*/ uint16(xArgRM64), /*8233*/ uint16(xMatch), /*8234*/ uint16(xSetOp), uint16(SBB), - /*8236*/ uint16(xReadId), - /*8237*/ uint16(xArgEAX), - /*8238*/ uint16(xArgImm32), + /*8236*/ uint16(xReadIb), + /*8237*/ uint16(xArgAL), + /*8238*/ uint16(xArgImm8u), /*8239*/ uint16(xMatch), - /*8240*/ uint16(xCondDataSize), 8228, 8234, 8244, - /*8244*/ uint16(xSetOp), uint16(SBB), - /*8246*/ uint16(xReadId), - /*8247*/ uint16(xArgRAX), - /*8248*/ uint16(xArgImm32), - /*8249*/ uint16(xMatch), - /*8250*/ uint16(xCondIs64), 8253, 0, - /*8253*/ uint16(xSetOp), uint16(PUSH), - /*8255*/ uint16(xArgDS), - /*8256*/ uint16(xMatch), - /*8257*/ uint16(xCondIs64), 8260, 0, - /*8260*/ uint16(xSetOp), uint16(POP), - /*8262*/ uint16(xArgDS), - /*8263*/ uint16(xMatch), - /*8264*/ uint16(xSetOp), uint16(AND), - /*8266*/ uint16(xReadSlashR), - /*8267*/ uint16(xArgRM8), - /*8268*/ uint16(xArgR8), - /*8269*/ uint16(xMatch), - /*8270*/ uint16(xCondIs64), 8273, 8289, - /*8273*/ uint16(xCondDataSize), 8277, 8283, 0, - /*8277*/ uint16(xSetOp), uint16(AND), - /*8279*/ uint16(xReadSlashR), - /*8280*/ uint16(xArgRM16), - /*8281*/ uint16(xArgR16), + /*8240*/ uint16(xCondIs64), 8243, 8259, + /*8243*/ uint16(xCondDataSize), 8247, 8253, 0, + /*8247*/ uint16(xSetOp), uint16(SBB), + /*8249*/ uint16(xReadIw), + /*8250*/ uint16(xArgAX), + /*8251*/ uint16(xArgImm16), + /*8252*/ uint16(xMatch), + /*8253*/ uint16(xSetOp), uint16(SBB), + /*8255*/ uint16(xReadId), + /*8256*/ uint16(xArgEAX), + /*8257*/ uint16(xArgImm32), + /*8258*/ uint16(xMatch), + /*8259*/ uint16(xCondDataSize), 8247, 8253, 8263, + /*8263*/ uint16(xSetOp), uint16(SBB), + /*8265*/ uint16(xReadId), + /*8266*/ uint16(xArgRAX), + /*8267*/ uint16(xArgImm32), + /*8268*/ uint16(xMatch), + /*8269*/ uint16(xCondIs64), 8272, 0, + /*8272*/ uint16(xSetOp), uint16(PUSH), + /*8274*/ uint16(xArgDS), + /*8275*/ uint16(xMatch), + /*8276*/ uint16(xCondIs64), 8279, 0, + /*8279*/ uint16(xSetOp), uint16(POP), + /*8281*/ uint16(xArgDS), /*8282*/ uint16(xMatch), /*8283*/ uint16(xSetOp), uint16(AND), /*8285*/ uint16(xReadSlashR), - /*8286*/ uint16(xArgRM32), - /*8287*/ uint16(xArgR32), + /*8286*/ uint16(xArgRM8), + /*8287*/ uint16(xArgR8), /*8288*/ uint16(xMatch), - /*8289*/ uint16(xCondDataSize), 8277, 8283, 8293, - /*8293*/ uint16(xSetOp), uint16(AND), - /*8295*/ uint16(xReadSlashR), - /*8296*/ uint16(xArgRM64), - /*8297*/ uint16(xArgR64), - /*8298*/ uint16(xMatch), - /*8299*/ uint16(xSetOp), uint16(AND), - /*8301*/ uint16(xReadSlashR), - /*8302*/ uint16(xArgR8), - /*8303*/ uint16(xArgRM8), - /*8304*/ uint16(xMatch), - /*8305*/ uint16(xCondIs64), 8308, 8324, - /*8308*/ uint16(xCondDataSize), 8312, 8318, 0, + /*8289*/ uint16(xCondIs64), 8292, 8308, + /*8292*/ uint16(xCondDataSize), 8296, 8302, 0, + /*8296*/ uint16(xSetOp), uint16(AND), + /*8298*/ uint16(xReadSlashR), + /*8299*/ uint16(xArgRM16), + /*8300*/ uint16(xArgR16), + /*8301*/ uint16(xMatch), + /*8302*/ uint16(xSetOp), uint16(AND), + /*8304*/ uint16(xReadSlashR), + /*8305*/ uint16(xArgRM32), + /*8306*/ uint16(xArgR32), + /*8307*/ uint16(xMatch), + /*8308*/ uint16(xCondDataSize), 8296, 8302, 8312, /*8312*/ uint16(xSetOp), uint16(AND), /*8314*/ uint16(xReadSlashR), - /*8315*/ uint16(xArgR16), - /*8316*/ uint16(xArgRM16), + /*8315*/ uint16(xArgRM64), + /*8316*/ uint16(xArgR64), /*8317*/ uint16(xMatch), /*8318*/ uint16(xSetOp), uint16(AND), /*8320*/ uint16(xReadSlashR), - /*8321*/ uint16(xArgR32), - /*8322*/ uint16(xArgRM32), + /*8321*/ uint16(xArgR8), + /*8322*/ uint16(xArgRM8), /*8323*/ uint16(xMatch), - /*8324*/ uint16(xCondDataSize), 8312, 8318, 8328, - /*8328*/ uint16(xSetOp), uint16(AND), - /*8330*/ uint16(xReadSlashR), - /*8331*/ uint16(xArgR64), - /*8332*/ uint16(xArgRM64), - /*8333*/ uint16(xMatch), - /*8334*/ uint16(xSetOp), uint16(AND), - /*8336*/ uint16(xReadIb), - /*8337*/ uint16(xArgAL), - /*8338*/ uint16(xArgImm8u), - /*8339*/ uint16(xMatch), - /*8340*/ uint16(xCondIs64), 8343, 8359, - /*8343*/ uint16(xCondDataSize), 8347, 8353, 0, + /*8324*/ uint16(xCondIs64), 8327, 8343, + /*8327*/ uint16(xCondDataSize), 8331, 8337, 0, + /*8331*/ uint16(xSetOp), uint16(AND), + /*8333*/ uint16(xReadSlashR), + /*8334*/ uint16(xArgR16), + /*8335*/ uint16(xArgRM16), + /*8336*/ uint16(xMatch), + /*8337*/ uint16(xSetOp), uint16(AND), + /*8339*/ uint16(xReadSlashR), + /*8340*/ uint16(xArgR32), + /*8341*/ uint16(xArgRM32), + /*8342*/ uint16(xMatch), + /*8343*/ uint16(xCondDataSize), 8331, 8337, 8347, /*8347*/ uint16(xSetOp), uint16(AND), - /*8349*/ uint16(xReadIw), - /*8350*/ uint16(xArgAX), - /*8351*/ uint16(xArgImm16), + /*8349*/ uint16(xReadSlashR), + /*8350*/ uint16(xArgR64), + /*8351*/ uint16(xArgRM64), /*8352*/ uint16(xMatch), /*8353*/ uint16(xSetOp), uint16(AND), - /*8355*/ uint16(xReadId), - /*8356*/ uint16(xArgEAX), - /*8357*/ uint16(xArgImm32), + /*8355*/ uint16(xReadIb), + /*8356*/ uint16(xArgAL), + /*8357*/ uint16(xArgImm8u), /*8358*/ uint16(xMatch), - /*8359*/ uint16(xCondDataSize), 8347, 8353, 8363, - /*8363*/ uint16(xSetOp), uint16(AND), - /*8365*/ uint16(xReadId), - /*8366*/ uint16(xArgRAX), - /*8367*/ uint16(xArgImm32), - /*8368*/ uint16(xMatch), - /*8369*/ uint16(xCondIs64), 8372, 0, - /*8372*/ uint16(xSetOp), uint16(DAA), - /*8374*/ uint16(xMatch), - /*8375*/ uint16(xSetOp), uint16(SUB), - /*8377*/ uint16(xReadSlashR), - /*8378*/ uint16(xArgRM8), - /*8379*/ uint16(xArgR8), - /*8380*/ uint16(xMatch), - /*8381*/ uint16(xCondIs64), 8384, 8400, - /*8384*/ uint16(xCondDataSize), 8388, 8394, 0, - /*8388*/ uint16(xSetOp), uint16(SUB), - /*8390*/ uint16(xReadSlashR), - /*8391*/ uint16(xArgRM16), - /*8392*/ uint16(xArgR16), + /*8359*/ uint16(xCondIs64), 8362, 8378, + /*8362*/ uint16(xCondDataSize), 8366, 8372, 0, + /*8366*/ uint16(xSetOp), uint16(AND), + /*8368*/ uint16(xReadIw), + /*8369*/ uint16(xArgAX), + /*8370*/ uint16(xArgImm16), + /*8371*/ uint16(xMatch), + /*8372*/ uint16(xSetOp), uint16(AND), + /*8374*/ uint16(xReadId), + /*8375*/ uint16(xArgEAX), + /*8376*/ uint16(xArgImm32), + /*8377*/ uint16(xMatch), + /*8378*/ uint16(xCondDataSize), 8366, 8372, 8382, + /*8382*/ uint16(xSetOp), uint16(AND), + /*8384*/ uint16(xReadId), + /*8385*/ uint16(xArgRAX), + /*8386*/ uint16(xArgImm32), + /*8387*/ uint16(xMatch), + /*8388*/ uint16(xCondIs64), 8391, 0, + /*8391*/ uint16(xSetOp), uint16(DAA), /*8393*/ uint16(xMatch), /*8394*/ uint16(xSetOp), uint16(SUB), /*8396*/ uint16(xReadSlashR), - /*8397*/ uint16(xArgRM32), - /*8398*/ uint16(xArgR32), + /*8397*/ uint16(xArgRM8), + /*8398*/ uint16(xArgR8), /*8399*/ uint16(xMatch), - /*8400*/ uint16(xCondDataSize), 8388, 8394, 8404, - /*8404*/ uint16(xSetOp), uint16(SUB), - /*8406*/ uint16(xReadSlashR), - /*8407*/ uint16(xArgRM64), - /*8408*/ uint16(xArgR64), - /*8409*/ uint16(xMatch), - /*8410*/ uint16(xCondPrefix), 3, - 0xC5, 8438, - 0xC4, 8424, - 0x0, 8418, - /*8418*/ uint16(xSetOp), uint16(SUB), - /*8420*/ uint16(xReadSlashR), - /*8421*/ uint16(xArgR8), - /*8422*/ uint16(xArgRM8), - /*8423*/ uint16(xMatch), - /*8424*/ uint16(xCondPrefix), 1, - 0x66, 8428, - /*8428*/ uint16(xCondPrefix), 1, - 0x0F38, 8432, - /*8432*/ uint16(xSetOp), uint16(VMOVNTDQA), - /*8434*/ uint16(xReadSlashR), - /*8435*/ uint16(xArgYmm1), - /*8436*/ uint16(xArgM256), - /*8437*/ uint16(xMatch), - /*8438*/ uint16(xCondPrefix), 1, - 0x66, 8442, - /*8442*/ uint16(xCondPrefix), 1, - 0x0F38, 8446, - /*8446*/ uint16(xSetOp), uint16(VMOVNTDQA), - /*8448*/ uint16(xReadSlashR), - /*8449*/ uint16(xArgYmm1), - /*8450*/ uint16(xArgM256), - /*8451*/ uint16(xMatch), - /*8452*/ uint16(xCondIs64), 8455, 8471, - /*8455*/ uint16(xCondDataSize), 8459, 8465, 0, - /*8459*/ uint16(xSetOp), uint16(SUB), - /*8461*/ uint16(xReadSlashR), - /*8462*/ uint16(xArgR16), - /*8463*/ uint16(xArgRM16), - /*8464*/ uint16(xMatch), - /*8465*/ uint16(xSetOp), uint16(SUB), + /*8400*/ uint16(xCondIs64), 8403, 8419, + /*8403*/ uint16(xCondDataSize), 8407, 8413, 0, + /*8407*/ uint16(xSetOp), uint16(SUB), + /*8409*/ uint16(xReadSlashR), + /*8410*/ uint16(xArgRM16), + /*8411*/ uint16(xArgR16), + /*8412*/ uint16(xMatch), + /*8413*/ uint16(xSetOp), uint16(SUB), + /*8415*/ uint16(xReadSlashR), + /*8416*/ uint16(xArgRM32), + /*8417*/ uint16(xArgR32), + /*8418*/ uint16(xMatch), + /*8419*/ uint16(xCondDataSize), 8407, 8413, 8423, + /*8423*/ uint16(xSetOp), uint16(SUB), + /*8425*/ uint16(xReadSlashR), + /*8426*/ uint16(xArgRM64), + /*8427*/ uint16(xArgR64), + /*8428*/ uint16(xMatch), + /*8429*/ uint16(xCondPrefix), 3, + 0xC5, 8457, + 0xC4, 8443, + 0x0, 8437, + /*8437*/ uint16(xSetOp), uint16(SUB), + /*8439*/ uint16(xReadSlashR), + /*8440*/ uint16(xArgR8), + /*8441*/ uint16(xArgRM8), + /*8442*/ uint16(xMatch), + /*8443*/ uint16(xCondPrefix), 1, + 0x66, 8447, + /*8447*/ uint16(xCondPrefix), 1, + 0x0F38, 8451, + /*8451*/ uint16(xSetOp), uint16(VMOVNTDQA), + /*8453*/ uint16(xReadSlashR), + /*8454*/ uint16(xArgYmm1), + /*8455*/ uint16(xArgM256), + /*8456*/ uint16(xMatch), + /*8457*/ uint16(xCondPrefix), 1, + 0x66, 8461, + /*8461*/ uint16(xCondPrefix), 1, + 0x0F38, 8465, + /*8465*/ uint16(xSetOp), uint16(VMOVNTDQA), /*8467*/ uint16(xReadSlashR), - /*8468*/ uint16(xArgR32), - /*8469*/ uint16(xArgRM32), + /*8468*/ uint16(xArgYmm1), + /*8469*/ uint16(xArgM256), /*8470*/ uint16(xMatch), - /*8471*/ uint16(xCondDataSize), 8459, 8465, 8475, - /*8475*/ uint16(xSetOp), uint16(SUB), - /*8477*/ uint16(xReadSlashR), - /*8478*/ uint16(xArgR64), - /*8479*/ uint16(xArgRM64), - /*8480*/ uint16(xMatch), - /*8481*/ uint16(xSetOp), uint16(SUB), - /*8483*/ uint16(xReadIb), - /*8484*/ uint16(xArgAL), - /*8485*/ uint16(xArgImm8u), - /*8486*/ uint16(xMatch), - /*8487*/ uint16(xCondIs64), 8490, 8506, - /*8490*/ uint16(xCondDataSize), 8494, 8500, 0, + /*8471*/ uint16(xCondIs64), 8474, 8490, + /*8474*/ uint16(xCondDataSize), 8478, 8484, 0, + /*8478*/ uint16(xSetOp), uint16(SUB), + /*8480*/ uint16(xReadSlashR), + /*8481*/ uint16(xArgR16), + /*8482*/ uint16(xArgRM16), + /*8483*/ uint16(xMatch), + /*8484*/ uint16(xSetOp), uint16(SUB), + /*8486*/ uint16(xReadSlashR), + /*8487*/ uint16(xArgR32), + /*8488*/ uint16(xArgRM32), + /*8489*/ uint16(xMatch), + /*8490*/ uint16(xCondDataSize), 8478, 8484, 8494, /*8494*/ uint16(xSetOp), uint16(SUB), - /*8496*/ uint16(xReadIw), - /*8497*/ uint16(xArgAX), - /*8498*/ uint16(xArgImm16), + /*8496*/ uint16(xReadSlashR), + /*8497*/ uint16(xArgR64), + /*8498*/ uint16(xArgRM64), /*8499*/ uint16(xMatch), /*8500*/ uint16(xSetOp), uint16(SUB), - /*8502*/ uint16(xReadId), - /*8503*/ uint16(xArgEAX), - /*8504*/ uint16(xArgImm32), + /*8502*/ uint16(xReadIb), + /*8503*/ uint16(xArgAL), + /*8504*/ uint16(xArgImm8u), /*8505*/ uint16(xMatch), - /*8506*/ uint16(xCondDataSize), 8494, 8500, 8510, - /*8510*/ uint16(xSetOp), uint16(SUB), - /*8512*/ uint16(xReadId), - /*8513*/ uint16(xArgRAX), - /*8514*/ uint16(xArgImm32), - /*8515*/ uint16(xMatch), - /*8516*/ uint16(xCondIs64), 8519, 0, - /*8519*/ uint16(xSetOp), uint16(DAS), - /*8521*/ uint16(xMatch), - /*8522*/ uint16(xSetOp), uint16(XOR), - /*8524*/ uint16(xReadSlashR), - /*8525*/ uint16(xArgRM8), - /*8526*/ uint16(xArgR8), - /*8527*/ uint16(xMatch), - /*8528*/ uint16(xCondIs64), 8531, 8547, - /*8531*/ uint16(xCondDataSize), 8535, 8541, 0, - /*8535*/ uint16(xSetOp), uint16(XOR), - /*8537*/ uint16(xReadSlashR), - /*8538*/ uint16(xArgRM16), - /*8539*/ uint16(xArgR16), + /*8506*/ uint16(xCondIs64), 8509, 8525, + /*8509*/ uint16(xCondDataSize), 8513, 8519, 0, + /*8513*/ uint16(xSetOp), uint16(SUB), + /*8515*/ uint16(xReadIw), + /*8516*/ uint16(xArgAX), + /*8517*/ uint16(xArgImm16), + /*8518*/ uint16(xMatch), + /*8519*/ uint16(xSetOp), uint16(SUB), + /*8521*/ uint16(xReadId), + /*8522*/ uint16(xArgEAX), + /*8523*/ uint16(xArgImm32), + /*8524*/ uint16(xMatch), + /*8525*/ uint16(xCondDataSize), 8513, 8519, 8529, + /*8529*/ uint16(xSetOp), uint16(SUB), + /*8531*/ uint16(xReadId), + /*8532*/ uint16(xArgRAX), + /*8533*/ uint16(xArgImm32), + /*8534*/ uint16(xMatch), + /*8535*/ uint16(xCondIs64), 8538, 0, + /*8538*/ uint16(xSetOp), uint16(DAS), /*8540*/ uint16(xMatch), /*8541*/ uint16(xSetOp), uint16(XOR), /*8543*/ uint16(xReadSlashR), - /*8544*/ uint16(xArgRM32), - /*8545*/ uint16(xArgR32), + /*8544*/ uint16(xArgRM8), + /*8545*/ uint16(xArgR8), /*8546*/ uint16(xMatch), - /*8547*/ uint16(xCondDataSize), 8535, 8541, 8551, - /*8551*/ uint16(xSetOp), uint16(XOR), - /*8553*/ uint16(xReadSlashR), - /*8554*/ uint16(xArgRM64), - /*8555*/ uint16(xArgR64), - /*8556*/ uint16(xMatch), - /*8557*/ uint16(xSetOp), uint16(XOR), - /*8559*/ uint16(xReadSlashR), - /*8560*/ uint16(xArgR8), - /*8561*/ uint16(xArgRM8), - /*8562*/ uint16(xMatch), - /*8563*/ uint16(xCondIs64), 8566, 8582, - /*8566*/ uint16(xCondDataSize), 8570, 8576, 0, + /*8547*/ uint16(xCondIs64), 8550, 8566, + /*8550*/ uint16(xCondDataSize), 8554, 8560, 0, + /*8554*/ uint16(xSetOp), uint16(XOR), + /*8556*/ uint16(xReadSlashR), + /*8557*/ uint16(xArgRM16), + /*8558*/ uint16(xArgR16), + /*8559*/ uint16(xMatch), + /*8560*/ uint16(xSetOp), uint16(XOR), + /*8562*/ uint16(xReadSlashR), + /*8563*/ uint16(xArgRM32), + /*8564*/ uint16(xArgR32), + /*8565*/ uint16(xMatch), + /*8566*/ uint16(xCondDataSize), 8554, 8560, 8570, /*8570*/ uint16(xSetOp), uint16(XOR), /*8572*/ uint16(xReadSlashR), - /*8573*/ uint16(xArgR16), - /*8574*/ uint16(xArgRM16), + /*8573*/ uint16(xArgRM64), + /*8574*/ uint16(xArgR64), /*8575*/ uint16(xMatch), /*8576*/ uint16(xSetOp), uint16(XOR), /*8578*/ uint16(xReadSlashR), - /*8579*/ uint16(xArgR32), - /*8580*/ uint16(xArgRM32), + /*8579*/ uint16(xArgR8), + /*8580*/ uint16(xArgRM8), /*8581*/ uint16(xMatch), - /*8582*/ uint16(xCondDataSize), 8570, 8576, 8586, - /*8586*/ uint16(xSetOp), uint16(XOR), - /*8588*/ uint16(xReadSlashR), - /*8589*/ uint16(xArgR64), - /*8590*/ uint16(xArgRM64), - /*8591*/ uint16(xMatch), - /*8592*/ uint16(xSetOp), uint16(XOR), - /*8594*/ uint16(xReadIb), - /*8595*/ uint16(xArgAL), - /*8596*/ uint16(xArgImm8u), - /*8597*/ uint16(xMatch), - /*8598*/ uint16(xCondIs64), 8601, 8617, - /*8601*/ uint16(xCondDataSize), 8605, 8611, 0, + /*8582*/ uint16(xCondIs64), 8585, 8601, + /*8585*/ uint16(xCondDataSize), 8589, 8595, 0, + /*8589*/ uint16(xSetOp), uint16(XOR), + /*8591*/ uint16(xReadSlashR), + /*8592*/ uint16(xArgR16), + /*8593*/ uint16(xArgRM16), + /*8594*/ uint16(xMatch), + /*8595*/ uint16(xSetOp), uint16(XOR), + /*8597*/ uint16(xReadSlashR), + /*8598*/ uint16(xArgR32), + /*8599*/ uint16(xArgRM32), + /*8600*/ uint16(xMatch), + /*8601*/ uint16(xCondDataSize), 8589, 8595, 8605, /*8605*/ uint16(xSetOp), uint16(XOR), - /*8607*/ uint16(xReadIw), - /*8608*/ uint16(xArgAX), - /*8609*/ uint16(xArgImm16), + /*8607*/ uint16(xReadSlashR), + /*8608*/ uint16(xArgR64), + /*8609*/ uint16(xArgRM64), /*8610*/ uint16(xMatch), /*8611*/ uint16(xSetOp), uint16(XOR), - /*8613*/ uint16(xReadId), - /*8614*/ uint16(xArgEAX), - /*8615*/ uint16(xArgImm32), + /*8613*/ uint16(xReadIb), + /*8614*/ uint16(xArgAL), + /*8615*/ uint16(xArgImm8u), /*8616*/ uint16(xMatch), - /*8617*/ uint16(xCondDataSize), 8605, 8611, 8621, - /*8621*/ uint16(xSetOp), uint16(XOR), - /*8623*/ uint16(xReadId), - /*8624*/ uint16(xArgRAX), - /*8625*/ uint16(xArgImm32), - /*8626*/ uint16(xMatch), - /*8627*/ uint16(xCondIs64), 8630, 0, - /*8630*/ uint16(xSetOp), uint16(AAA), - /*8632*/ uint16(xMatch), - /*8633*/ uint16(xSetOp), uint16(CMP), - /*8635*/ uint16(xReadSlashR), - /*8636*/ uint16(xArgRM8), - /*8637*/ uint16(xArgR8), - /*8638*/ uint16(xMatch), - /*8639*/ uint16(xCondIs64), 8642, 8658, - /*8642*/ uint16(xCondDataSize), 8646, 8652, 0, - /*8646*/ uint16(xSetOp), uint16(CMP), - /*8648*/ uint16(xReadSlashR), - /*8649*/ uint16(xArgRM16), - /*8650*/ uint16(xArgR16), + /*8617*/ uint16(xCondIs64), 8620, 8636, + /*8620*/ uint16(xCondDataSize), 8624, 8630, 0, + /*8624*/ uint16(xSetOp), uint16(XOR), + /*8626*/ uint16(xReadIw), + /*8627*/ uint16(xArgAX), + /*8628*/ uint16(xArgImm16), + /*8629*/ uint16(xMatch), + /*8630*/ uint16(xSetOp), uint16(XOR), + /*8632*/ uint16(xReadId), + /*8633*/ uint16(xArgEAX), + /*8634*/ uint16(xArgImm32), + /*8635*/ uint16(xMatch), + /*8636*/ uint16(xCondDataSize), 8624, 8630, 8640, + /*8640*/ uint16(xSetOp), uint16(XOR), + /*8642*/ uint16(xReadId), + /*8643*/ uint16(xArgRAX), + /*8644*/ uint16(xArgImm32), + /*8645*/ uint16(xMatch), + /*8646*/ uint16(xCondIs64), 8649, 0, + /*8649*/ uint16(xSetOp), uint16(AAA), /*8651*/ uint16(xMatch), /*8652*/ uint16(xSetOp), uint16(CMP), /*8654*/ uint16(xReadSlashR), - /*8655*/ uint16(xArgRM32), - /*8656*/ uint16(xArgR32), + /*8655*/ uint16(xArgRM8), + /*8656*/ uint16(xArgR8), /*8657*/ uint16(xMatch), - /*8658*/ uint16(xCondDataSize), 8646, 8652, 8662, - /*8662*/ uint16(xSetOp), uint16(CMP), - /*8664*/ uint16(xReadSlashR), - /*8665*/ uint16(xArgRM64), - /*8666*/ uint16(xArgR64), - /*8667*/ uint16(xMatch), - /*8668*/ uint16(xSetOp), uint16(CMP), - /*8670*/ uint16(xReadSlashR), - /*8671*/ uint16(xArgR8), - /*8672*/ uint16(xArgRM8), - /*8673*/ uint16(xMatch), - /*8674*/ uint16(xCondIs64), 8677, 8693, - /*8677*/ uint16(xCondDataSize), 8681, 8687, 0, + /*8658*/ uint16(xCondIs64), 8661, 8677, + /*8661*/ uint16(xCondDataSize), 8665, 8671, 0, + /*8665*/ uint16(xSetOp), uint16(CMP), + /*8667*/ uint16(xReadSlashR), + /*8668*/ uint16(xArgRM16), + /*8669*/ uint16(xArgR16), + /*8670*/ uint16(xMatch), + /*8671*/ uint16(xSetOp), uint16(CMP), + /*8673*/ uint16(xReadSlashR), + /*8674*/ uint16(xArgRM32), + /*8675*/ uint16(xArgR32), + /*8676*/ uint16(xMatch), + /*8677*/ uint16(xCondDataSize), 8665, 8671, 8681, /*8681*/ uint16(xSetOp), uint16(CMP), /*8683*/ uint16(xReadSlashR), - /*8684*/ uint16(xArgR16), - /*8685*/ uint16(xArgRM16), + /*8684*/ uint16(xArgRM64), + /*8685*/ uint16(xArgR64), /*8686*/ uint16(xMatch), /*8687*/ uint16(xSetOp), uint16(CMP), /*8689*/ uint16(xReadSlashR), - /*8690*/ uint16(xArgR32), - /*8691*/ uint16(xArgRM32), + /*8690*/ uint16(xArgR8), + /*8691*/ uint16(xArgRM8), /*8692*/ uint16(xMatch), - /*8693*/ uint16(xCondDataSize), 8681, 8687, 8697, - /*8697*/ uint16(xSetOp), uint16(CMP), - /*8699*/ uint16(xReadSlashR), - /*8700*/ uint16(xArgR64), - /*8701*/ uint16(xArgRM64), - /*8702*/ uint16(xMatch), - /*8703*/ uint16(xSetOp), uint16(CMP), - /*8705*/ uint16(xReadIb), - /*8706*/ uint16(xArgAL), - /*8707*/ uint16(xArgImm8u), - /*8708*/ uint16(xMatch), - /*8709*/ uint16(xCondIs64), 8712, 8728, - /*8712*/ uint16(xCondDataSize), 8716, 8722, 0, + /*8693*/ uint16(xCondIs64), 8696, 8712, + /*8696*/ uint16(xCondDataSize), 8700, 8706, 0, + /*8700*/ uint16(xSetOp), uint16(CMP), + /*8702*/ uint16(xReadSlashR), + /*8703*/ uint16(xArgR16), + /*8704*/ uint16(xArgRM16), + /*8705*/ uint16(xMatch), + /*8706*/ uint16(xSetOp), uint16(CMP), + /*8708*/ uint16(xReadSlashR), + /*8709*/ uint16(xArgR32), + /*8710*/ uint16(xArgRM32), + /*8711*/ uint16(xMatch), + /*8712*/ uint16(xCondDataSize), 8700, 8706, 8716, /*8716*/ uint16(xSetOp), uint16(CMP), - /*8718*/ uint16(xReadIw), - /*8719*/ uint16(xArgAX), - /*8720*/ uint16(xArgImm16), + /*8718*/ uint16(xReadSlashR), + /*8719*/ uint16(xArgR64), + /*8720*/ uint16(xArgRM64), /*8721*/ uint16(xMatch), /*8722*/ uint16(xSetOp), uint16(CMP), - /*8724*/ uint16(xReadId), - /*8725*/ uint16(xArgEAX), - /*8726*/ uint16(xArgImm32), + /*8724*/ uint16(xReadIb), + /*8725*/ uint16(xArgAL), + /*8726*/ uint16(xArgImm8u), /*8727*/ uint16(xMatch), - /*8728*/ uint16(xCondDataSize), 8716, 8722, 8732, - /*8732*/ uint16(xSetOp), uint16(CMP), - /*8734*/ uint16(xReadId), - /*8735*/ uint16(xArgRAX), - /*8736*/ uint16(xArgImm32), - /*8737*/ uint16(xMatch), - /*8738*/ uint16(xCondIs64), 8741, 0, - /*8741*/ uint16(xSetOp), uint16(AAS), - /*8743*/ uint16(xMatch), - /*8744*/ uint16(xCondIs64), 8747, 0, - /*8747*/ uint16(xCondDataSize), 8751, 8755, 0, - /*8751*/ uint16(xSetOp), uint16(INC), - /*8753*/ uint16(xArgR16op), - /*8754*/ uint16(xMatch), - /*8755*/ uint16(xSetOp), uint16(INC), - /*8757*/ uint16(xArgR32op), - /*8758*/ uint16(xMatch), - /*8759*/ uint16(xCondIs64), 8762, 0, - /*8762*/ uint16(xCondDataSize), 8766, 8770, 0, - /*8766*/ uint16(xSetOp), uint16(DEC), - /*8768*/ uint16(xArgR16op), - /*8769*/ uint16(xMatch), - /*8770*/ uint16(xSetOp), uint16(DEC), - /*8772*/ uint16(xArgR32op), + /*8728*/ uint16(xCondIs64), 8731, 8747, + /*8731*/ uint16(xCondDataSize), 8735, 8741, 0, + /*8735*/ uint16(xSetOp), uint16(CMP), + /*8737*/ uint16(xReadIw), + /*8738*/ uint16(xArgAX), + /*8739*/ uint16(xArgImm16), + /*8740*/ uint16(xMatch), + /*8741*/ uint16(xSetOp), uint16(CMP), + /*8743*/ uint16(xReadId), + /*8744*/ uint16(xArgEAX), + /*8745*/ uint16(xArgImm32), + /*8746*/ uint16(xMatch), + /*8747*/ uint16(xCondDataSize), 8735, 8741, 8751, + /*8751*/ uint16(xSetOp), uint16(CMP), + /*8753*/ uint16(xReadId), + /*8754*/ uint16(xArgRAX), + /*8755*/ uint16(xArgImm32), + /*8756*/ uint16(xMatch), + /*8757*/ uint16(xCondIs64), 8760, 0, + /*8760*/ uint16(xSetOp), uint16(AAS), + /*8762*/ uint16(xMatch), + /*8763*/ uint16(xCondIs64), 8766, 0, + /*8766*/ uint16(xCondDataSize), 8770, 8774, 0, + /*8770*/ uint16(xSetOp), uint16(INC), + /*8772*/ uint16(xArgR16op), /*8773*/ uint16(xMatch), - /*8774*/ uint16(xCondIs64), 8777, 8789, - /*8777*/ uint16(xCondDataSize), 8781, 8785, 0, - /*8781*/ uint16(xSetOp), uint16(PUSH), - /*8783*/ uint16(xArgR16op), - /*8784*/ uint16(xMatch), - /*8785*/ uint16(xSetOp), uint16(PUSH), - /*8787*/ uint16(xArgR32op), + /*8774*/ uint16(xSetOp), uint16(INC), + /*8776*/ uint16(xArgR32op), + /*8777*/ uint16(xMatch), + /*8778*/ uint16(xCondIs64), 8781, 0, + /*8781*/ uint16(xCondDataSize), 8785, 8789, 0, + /*8785*/ uint16(xSetOp), uint16(DEC), + /*8787*/ uint16(xArgR16op), /*8788*/ uint16(xMatch), - /*8789*/ uint16(xCondDataSize), 8781, 8793, 8797, - /*8793*/ uint16(xSetOp), uint16(PUSH), - /*8795*/ uint16(xArgR64op), - /*8796*/ uint16(xMatch), - /*8797*/ uint16(xSetOp), uint16(PUSH), - /*8799*/ uint16(xArgR64op), - /*8800*/ uint16(xMatch), - /*8801*/ uint16(xCondIs64), 8804, 8816, - /*8804*/ uint16(xCondDataSize), 8808, 8812, 0, - /*8808*/ uint16(xSetOp), uint16(POP), - /*8810*/ uint16(xArgR16op), - /*8811*/ uint16(xMatch), - /*8812*/ uint16(xSetOp), uint16(POP), - /*8814*/ uint16(xArgR32op), + /*8789*/ uint16(xSetOp), uint16(DEC), + /*8791*/ uint16(xArgR32op), + /*8792*/ uint16(xMatch), + /*8793*/ uint16(xCondIs64), 8796, 8808, + /*8796*/ uint16(xCondDataSize), 8800, 8804, 0, + /*8800*/ uint16(xSetOp), uint16(PUSH), + /*8802*/ uint16(xArgR16op), + /*8803*/ uint16(xMatch), + /*8804*/ uint16(xSetOp), uint16(PUSH), + /*8806*/ uint16(xArgR32op), + /*8807*/ uint16(xMatch), + /*8808*/ uint16(xCondDataSize), 8800, 8812, 8816, + /*8812*/ uint16(xSetOp), uint16(PUSH), + /*8814*/ uint16(xArgR64op), /*8815*/ uint16(xMatch), - /*8816*/ uint16(xCondDataSize), 8808, 8820, 8824, - /*8820*/ uint16(xSetOp), uint16(POP), - /*8822*/ uint16(xArgR64op), - /*8823*/ uint16(xMatch), - /*8824*/ uint16(xSetOp), uint16(POP), - /*8826*/ uint16(xArgR64op), - /*8827*/ uint16(xMatch), - /*8828*/ uint16(xCondIs64), 8831, 0, - /*8831*/ uint16(xCondDataSize), 8835, 8838, 0, - /*8835*/ uint16(xSetOp), uint16(PUSHA), - /*8837*/ uint16(xMatch), - /*8838*/ uint16(xSetOp), uint16(PUSHAD), - /*8840*/ uint16(xMatch), - /*8841*/ uint16(xCondIs64), 8844, 0, - /*8844*/ uint16(xCondDataSize), 8848, 8851, 0, - /*8848*/ uint16(xSetOp), uint16(POPA), - /*8850*/ uint16(xMatch), - /*8851*/ uint16(xSetOp), uint16(POPAD), - /*8853*/ uint16(xMatch), - /*8854*/ uint16(xCondIs64), 8857, 0, - /*8857*/ uint16(xCondDataSize), 8861, 8867, 0, - /*8861*/ uint16(xSetOp), uint16(BOUND), - /*8863*/ uint16(xReadSlashR), - /*8864*/ uint16(xArgR16), - /*8865*/ uint16(xArgM16and16), - /*8866*/ uint16(xMatch), - /*8867*/ uint16(xSetOp), uint16(BOUND), - /*8869*/ uint16(xReadSlashR), - /*8870*/ uint16(xArgR32), - /*8871*/ uint16(xArgM32and32), + /*8816*/ uint16(xSetOp), uint16(PUSH), + /*8818*/ uint16(xArgR64op), + /*8819*/ uint16(xMatch), + /*8820*/ uint16(xCondIs64), 8823, 8835, + /*8823*/ uint16(xCondDataSize), 8827, 8831, 0, + /*8827*/ uint16(xSetOp), uint16(POP), + /*8829*/ uint16(xArgR16op), + /*8830*/ uint16(xMatch), + /*8831*/ uint16(xSetOp), uint16(POP), + /*8833*/ uint16(xArgR32op), + /*8834*/ uint16(xMatch), + /*8835*/ uint16(xCondDataSize), 8827, 8839, 8843, + /*8839*/ uint16(xSetOp), uint16(POP), + /*8841*/ uint16(xArgR64op), + /*8842*/ uint16(xMatch), + /*8843*/ uint16(xSetOp), uint16(POP), + /*8845*/ uint16(xArgR64op), + /*8846*/ uint16(xMatch), + /*8847*/ uint16(xCondIs64), 8850, 0, + /*8850*/ uint16(xCondDataSize), 8854, 8857, 0, + /*8854*/ uint16(xSetOp), uint16(PUSHA), + /*8856*/ uint16(xMatch), + /*8857*/ uint16(xSetOp), uint16(PUSHAD), + /*8859*/ uint16(xMatch), + /*8860*/ uint16(xCondIs64), 8863, 0, + /*8863*/ uint16(xCondDataSize), 8867, 8870, 0, + /*8867*/ uint16(xSetOp), uint16(POPA), + /*8869*/ uint16(xMatch), + /*8870*/ uint16(xSetOp), uint16(POPAD), /*8872*/ uint16(xMatch), - /*8873*/ uint16(xCondIs64), 8876, 8882, - /*8876*/ uint16(xSetOp), uint16(ARPL), - /*8878*/ uint16(xReadSlashR), - /*8879*/ uint16(xArgRM16), - /*8880*/ uint16(xArgR16), - /*8881*/ uint16(xMatch), - /*8882*/ uint16(xCondDataSize), 8886, 8892, 8898, - /*8886*/ uint16(xSetOp), uint16(MOVSXD), + /*8873*/ uint16(xCondIs64), 8876, 0, + /*8876*/ uint16(xCondDataSize), 8880, 8886, 0, + /*8880*/ uint16(xSetOp), uint16(BOUND), + /*8882*/ uint16(xReadSlashR), + /*8883*/ uint16(xArgR16), + /*8884*/ uint16(xArgM16and16), + /*8885*/ uint16(xMatch), + /*8886*/ uint16(xSetOp), uint16(BOUND), /*8888*/ uint16(xReadSlashR), - /*8889*/ uint16(xArgR16), - /*8890*/ uint16(xArgRM32), + /*8889*/ uint16(xArgR32), + /*8890*/ uint16(xArgM32and32), /*8891*/ uint16(xMatch), - /*8892*/ uint16(xSetOp), uint16(MOVSXD), - /*8894*/ uint16(xReadSlashR), - /*8895*/ uint16(xArgR32), - /*8896*/ uint16(xArgRM32), - /*8897*/ uint16(xMatch), - /*8898*/ uint16(xSetOp), uint16(MOVSXD), - /*8900*/ uint16(xReadSlashR), - /*8901*/ uint16(xArgR64), - /*8902*/ uint16(xArgRM32), - /*8903*/ uint16(xMatch), - /*8904*/ uint16(xCondDataSize), 8908, 8913, 8918, - /*8908*/ uint16(xSetOp), uint16(PUSH), - /*8910*/ uint16(xReadIw), - /*8911*/ uint16(xArgImm16), - /*8912*/ uint16(xMatch), - /*8913*/ uint16(xSetOp), uint16(PUSH), - /*8915*/ uint16(xReadId), - /*8916*/ uint16(xArgImm32), - /*8917*/ uint16(xMatch), - /*8918*/ uint16(xSetOp), uint16(PUSH), - /*8920*/ uint16(xReadId), - /*8921*/ uint16(xArgImm32), + /*8892*/ uint16(xCondIs64), 8895, 8901, + /*8895*/ uint16(xSetOp), uint16(ARPL), + /*8897*/ uint16(xReadSlashR), + /*8898*/ uint16(xArgRM16), + /*8899*/ uint16(xArgR16), + /*8900*/ uint16(xMatch), + /*8901*/ uint16(xCondDataSize), 8905, 8911, 8917, + /*8905*/ uint16(xSetOp), uint16(MOVSXD), + /*8907*/ uint16(xReadSlashR), + /*8908*/ uint16(xArgR16), + /*8909*/ uint16(xArgRM32), + /*8910*/ uint16(xMatch), + /*8911*/ uint16(xSetOp), uint16(MOVSXD), + /*8913*/ uint16(xReadSlashR), + /*8914*/ uint16(xArgR32), + /*8915*/ uint16(xArgRM32), + /*8916*/ uint16(xMatch), + /*8917*/ uint16(xSetOp), uint16(MOVSXD), + /*8919*/ uint16(xReadSlashR), + /*8920*/ uint16(xArgR64), + /*8921*/ uint16(xArgRM32), /*8922*/ uint16(xMatch), - /*8923*/ uint16(xCondIs64), 8926, 8946, - /*8926*/ uint16(xCondDataSize), 8930, 8938, 0, - /*8930*/ uint16(xSetOp), uint16(IMUL), - /*8932*/ uint16(xReadSlashR), - /*8933*/ uint16(xReadIw), - /*8934*/ uint16(xArgR16), - /*8935*/ uint16(xArgRM16), - /*8936*/ uint16(xArgImm16), - /*8937*/ uint16(xMatch), - /*8938*/ uint16(xSetOp), uint16(IMUL), - /*8940*/ uint16(xReadSlashR), - /*8941*/ uint16(xReadId), - /*8942*/ uint16(xArgR32), - /*8943*/ uint16(xArgRM32), - /*8944*/ uint16(xArgImm32), - /*8945*/ uint16(xMatch), - /*8946*/ uint16(xCondDataSize), 8930, 8938, 8950, - /*8950*/ uint16(xSetOp), uint16(IMUL), - /*8952*/ uint16(xReadSlashR), - /*8953*/ uint16(xReadId), - /*8954*/ uint16(xArgR64), - /*8955*/ uint16(xArgRM64), - /*8956*/ uint16(xArgImm32), - /*8957*/ uint16(xMatch), - /*8958*/ uint16(xSetOp), uint16(PUSH), - /*8960*/ uint16(xReadIb), - /*8961*/ uint16(xArgImm8), - /*8962*/ uint16(xMatch), - /*8963*/ uint16(xCondIs64), 8966, 8986, - /*8966*/ uint16(xCondDataSize), 8970, 8978, 0, - /*8970*/ uint16(xSetOp), uint16(IMUL), - /*8972*/ uint16(xReadSlashR), - /*8973*/ uint16(xReadIb), - /*8974*/ uint16(xArgR16), - /*8975*/ uint16(xArgRM16), - /*8976*/ uint16(xArgImm8), - /*8977*/ uint16(xMatch), - /*8978*/ uint16(xSetOp), uint16(IMUL), - /*8980*/ uint16(xReadSlashR), - /*8981*/ uint16(xReadIb), - /*8982*/ uint16(xArgR32), - /*8983*/ uint16(xArgRM32), - /*8984*/ uint16(xArgImm8), - /*8985*/ uint16(xMatch), - /*8986*/ uint16(xCondDataSize), 8970, 8978, 8990, - /*8990*/ uint16(xSetOp), uint16(IMUL), - /*8992*/ uint16(xReadSlashR), - /*8993*/ uint16(xReadIb), - /*8994*/ uint16(xArgR64), - /*8995*/ uint16(xArgRM64), - /*8996*/ uint16(xArgImm8), - /*8997*/ uint16(xMatch), - /*8998*/ uint16(xSetOp), uint16(INSB), - /*9000*/ uint16(xMatch), - /*9001*/ uint16(xCondDataSize), 9005, 9008, 9011, - /*9005*/ uint16(xSetOp), uint16(INSW), - /*9007*/ uint16(xMatch), - /*9008*/ uint16(xSetOp), uint16(INSD), - /*9010*/ uint16(xMatch), - /*9011*/ uint16(xSetOp), uint16(INSD), - /*9013*/ uint16(xMatch), - /*9014*/ uint16(xSetOp), uint16(OUTSB), + /*8923*/ uint16(xCondDataSize), 8927, 8932, 8937, + /*8927*/ uint16(xSetOp), uint16(PUSH), + /*8929*/ uint16(xReadIw), + /*8930*/ uint16(xArgImm16), + /*8931*/ uint16(xMatch), + /*8932*/ uint16(xSetOp), uint16(PUSH), + /*8934*/ uint16(xReadId), + /*8935*/ uint16(xArgImm32), + /*8936*/ uint16(xMatch), + /*8937*/ uint16(xSetOp), uint16(PUSH), + /*8939*/ uint16(xReadId), + /*8940*/ uint16(xArgImm32), + /*8941*/ uint16(xMatch), + /*8942*/ uint16(xCondIs64), 8945, 8965, + /*8945*/ uint16(xCondDataSize), 8949, 8957, 0, + /*8949*/ uint16(xSetOp), uint16(IMUL), + /*8951*/ uint16(xReadSlashR), + /*8952*/ uint16(xReadIw), + /*8953*/ uint16(xArgR16), + /*8954*/ uint16(xArgRM16), + /*8955*/ uint16(xArgImm16), + /*8956*/ uint16(xMatch), + /*8957*/ uint16(xSetOp), uint16(IMUL), + /*8959*/ uint16(xReadSlashR), + /*8960*/ uint16(xReadId), + /*8961*/ uint16(xArgR32), + /*8962*/ uint16(xArgRM32), + /*8963*/ uint16(xArgImm32), + /*8964*/ uint16(xMatch), + /*8965*/ uint16(xCondDataSize), 8949, 8957, 8969, + /*8969*/ uint16(xSetOp), uint16(IMUL), + /*8971*/ uint16(xReadSlashR), + /*8972*/ uint16(xReadId), + /*8973*/ uint16(xArgR64), + /*8974*/ uint16(xArgRM64), + /*8975*/ uint16(xArgImm32), + /*8976*/ uint16(xMatch), + /*8977*/ uint16(xSetOp), uint16(PUSH), + /*8979*/ uint16(xReadIb), + /*8980*/ uint16(xArgImm8), + /*8981*/ uint16(xMatch), + /*8982*/ uint16(xCondIs64), 8985, 9005, + /*8985*/ uint16(xCondDataSize), 8989, 8997, 0, + /*8989*/ uint16(xSetOp), uint16(IMUL), + /*8991*/ uint16(xReadSlashR), + /*8992*/ uint16(xReadIb), + /*8993*/ uint16(xArgR16), + /*8994*/ uint16(xArgRM16), + /*8995*/ uint16(xArgImm8), + /*8996*/ uint16(xMatch), + /*8997*/ uint16(xSetOp), uint16(IMUL), + /*8999*/ uint16(xReadSlashR), + /*9000*/ uint16(xReadIb), + /*9001*/ uint16(xArgR32), + /*9002*/ uint16(xArgRM32), + /*9003*/ uint16(xArgImm8), + /*9004*/ uint16(xMatch), + /*9005*/ uint16(xCondDataSize), 8989, 8997, 9009, + /*9009*/ uint16(xSetOp), uint16(IMUL), + /*9011*/ uint16(xReadSlashR), + /*9012*/ uint16(xReadIb), + /*9013*/ uint16(xArgR64), + /*9014*/ uint16(xArgRM64), + /*9015*/ uint16(xArgImm8), /*9016*/ uint16(xMatch), - /*9017*/ uint16(xCondPrefix), 3, - 0xC5, 9064, - 0xC4, 9038, - 0x0, 9025, - /*9025*/ uint16(xCondDataSize), 9029, 9032, 9035, - /*9029*/ uint16(xSetOp), uint16(OUTSW), - /*9031*/ uint16(xMatch), - /*9032*/ uint16(xSetOp), uint16(OUTSD), - /*9034*/ uint16(xMatch), - /*9035*/ uint16(xSetOp), uint16(OUTSD), - /*9037*/ uint16(xMatch), - /*9038*/ uint16(xCondPrefix), 2, - 0xF3, 9054, - 0x66, 9044, - /*9044*/ uint16(xCondPrefix), 1, - 0x0F, 9048, - /*9048*/ uint16(xSetOp), uint16(VMOVDQA), - /*9050*/ uint16(xReadSlashR), - /*9051*/ uint16(xArgYmm1), - /*9052*/ uint16(xArgYmm2M256), + /*9017*/ uint16(xSetOp), uint16(INSB), + /*9019*/ uint16(xMatch), + /*9020*/ uint16(xCondDataSize), 9024, 9027, 9030, + /*9024*/ uint16(xSetOp), uint16(INSW), + /*9026*/ uint16(xMatch), + /*9027*/ uint16(xSetOp), uint16(INSD), + /*9029*/ uint16(xMatch), + /*9030*/ uint16(xSetOp), uint16(INSD), + /*9032*/ uint16(xMatch), + /*9033*/ uint16(xSetOp), uint16(OUTSB), + /*9035*/ uint16(xMatch), + /*9036*/ uint16(xCondPrefix), 3, + 0xC5, 9083, + 0xC4, 9057, + 0x0, 9044, + /*9044*/ uint16(xCondDataSize), 9048, 9051, 9054, + /*9048*/ uint16(xSetOp), uint16(OUTSW), + /*9050*/ uint16(xMatch), + /*9051*/ uint16(xSetOp), uint16(OUTSD), /*9053*/ uint16(xMatch), - /*9054*/ uint16(xCondPrefix), 1, - 0x0F, 9058, - /*9058*/ uint16(xSetOp), uint16(VMOVDQU), - /*9060*/ uint16(xReadSlashR), - /*9061*/ uint16(xArgYmm1), - /*9062*/ uint16(xArgYmm2M256), - /*9063*/ uint16(xMatch), - /*9064*/ uint16(xCondPrefix), 2, - 0xF3, 9080, - 0x66, 9070, - /*9070*/ uint16(xCondPrefix), 1, - 0x0F, 9074, - /*9074*/ uint16(xSetOp), uint16(VMOVDQA), - /*9076*/ uint16(xReadSlashR), - /*9077*/ uint16(xArgYmm1), - /*9078*/ uint16(xArgYmm2M256), - /*9079*/ uint16(xMatch), - /*9080*/ uint16(xCondPrefix), 1, - 0x0F, 9084, - /*9084*/ uint16(xSetOp), uint16(VMOVDQU), - /*9086*/ uint16(xReadSlashR), - /*9087*/ uint16(xArgYmm1), - /*9088*/ uint16(xArgYmm2M256), - /*9089*/ uint16(xMatch), - /*9090*/ uint16(xSetOp), uint16(JO), - /*9092*/ uint16(xReadCb), - /*9093*/ uint16(xArgRel8), - /*9094*/ uint16(xMatch), - /*9095*/ uint16(xSetOp), uint16(JNO), - /*9097*/ uint16(xReadCb), - /*9098*/ uint16(xArgRel8), - /*9099*/ uint16(xMatch), - /*9100*/ uint16(xSetOp), uint16(JB), - /*9102*/ uint16(xReadCb), - /*9103*/ uint16(xArgRel8), - /*9104*/ uint16(xMatch), - /*9105*/ uint16(xSetOp), uint16(JAE), - /*9107*/ uint16(xReadCb), - /*9108*/ uint16(xArgRel8), - /*9109*/ uint16(xMatch), - /*9110*/ uint16(xSetOp), uint16(JE), - /*9112*/ uint16(xReadCb), - /*9113*/ uint16(xArgRel8), - /*9114*/ uint16(xMatch), - /*9115*/ uint16(xSetOp), uint16(JNE), - /*9117*/ uint16(xReadCb), - /*9118*/ uint16(xArgRel8), - /*9119*/ uint16(xMatch), - /*9120*/ uint16(xSetOp), uint16(JBE), - /*9122*/ uint16(xReadCb), - /*9123*/ uint16(xArgRel8), - /*9124*/ uint16(xMatch), - /*9125*/ uint16(xCondPrefix), 3, - 0xC5, 9145, - 0xC4, 9138, - 0x0, 9133, - /*9133*/ uint16(xSetOp), uint16(JA), - /*9135*/ uint16(xReadCb), - /*9136*/ uint16(xArgRel8), - /*9137*/ uint16(xMatch), - /*9138*/ uint16(xCondPrefix), 1, - 0x0F, 9142, - /*9142*/ uint16(xSetOp), uint16(VZEROUPPER), - /*9144*/ uint16(xMatch), - /*9145*/ uint16(xCondPrefix), 1, - 0x0F, 9149, - /*9149*/ uint16(xSetOp), uint16(VZEROUPPER), - /*9151*/ uint16(xMatch), - /*9152*/ uint16(xSetOp), uint16(JS), + /*9054*/ uint16(xSetOp), uint16(OUTSD), + /*9056*/ uint16(xMatch), + /*9057*/ uint16(xCondPrefix), 2, + 0xF3, 9073, + 0x66, 9063, + /*9063*/ uint16(xCondPrefix), 1, + 0x0F, 9067, + /*9067*/ uint16(xSetOp), uint16(VMOVDQA), + /*9069*/ uint16(xReadSlashR), + /*9070*/ uint16(xArgYmm1), + /*9071*/ uint16(xArgYmm2M256), + /*9072*/ uint16(xMatch), + /*9073*/ uint16(xCondPrefix), 1, + 0x0F, 9077, + /*9077*/ uint16(xSetOp), uint16(VMOVDQU), + /*9079*/ uint16(xReadSlashR), + /*9080*/ uint16(xArgYmm1), + /*9081*/ uint16(xArgYmm2M256), + /*9082*/ uint16(xMatch), + /*9083*/ uint16(xCondPrefix), 2, + 0xF3, 9099, + 0x66, 9089, + /*9089*/ uint16(xCondPrefix), 1, + 0x0F, 9093, + /*9093*/ uint16(xSetOp), uint16(VMOVDQA), + /*9095*/ uint16(xReadSlashR), + /*9096*/ uint16(xArgYmm1), + /*9097*/ uint16(xArgYmm2M256), + /*9098*/ uint16(xMatch), + /*9099*/ uint16(xCondPrefix), 1, + 0x0F, 9103, + /*9103*/ uint16(xSetOp), uint16(VMOVDQU), + /*9105*/ uint16(xReadSlashR), + /*9106*/ uint16(xArgYmm1), + /*9107*/ uint16(xArgYmm2M256), + /*9108*/ uint16(xMatch), + /*9109*/ uint16(xSetOp), uint16(JO), + /*9111*/ uint16(xReadCb), + /*9112*/ uint16(xArgRel8), + /*9113*/ uint16(xMatch), + /*9114*/ uint16(xSetOp), uint16(JNO), + /*9116*/ uint16(xReadCb), + /*9117*/ uint16(xArgRel8), + /*9118*/ uint16(xMatch), + /*9119*/ uint16(xSetOp), uint16(JB), + /*9121*/ uint16(xReadCb), + /*9122*/ uint16(xArgRel8), + /*9123*/ uint16(xMatch), + /*9124*/ uint16(xSetOp), uint16(JAE), + /*9126*/ uint16(xReadCb), + /*9127*/ uint16(xArgRel8), + /*9128*/ uint16(xMatch), + /*9129*/ uint16(xSetOp), uint16(JE), + /*9131*/ uint16(xReadCb), + /*9132*/ uint16(xArgRel8), + /*9133*/ uint16(xMatch), + /*9134*/ uint16(xSetOp), uint16(JNE), + /*9136*/ uint16(xReadCb), + /*9137*/ uint16(xArgRel8), + /*9138*/ uint16(xMatch), + /*9139*/ uint16(xSetOp), uint16(JBE), + /*9141*/ uint16(xReadCb), + /*9142*/ uint16(xArgRel8), + /*9143*/ uint16(xMatch), + /*9144*/ uint16(xCondPrefix), 3, + 0xC5, 9164, + 0xC4, 9157, + 0x0, 9152, + /*9152*/ uint16(xSetOp), uint16(JA), /*9154*/ uint16(xReadCb), /*9155*/ uint16(xArgRel8), /*9156*/ uint16(xMatch), - /*9157*/ uint16(xSetOp), uint16(JNS), - /*9159*/ uint16(xReadCb), - /*9160*/ uint16(xArgRel8), - /*9161*/ uint16(xMatch), - /*9162*/ uint16(xSetOp), uint16(JP), - /*9164*/ uint16(xReadCb), - /*9165*/ uint16(xArgRel8), - /*9166*/ uint16(xMatch), - /*9167*/ uint16(xSetOp), uint16(JNP), - /*9169*/ uint16(xReadCb), - /*9170*/ uint16(xArgRel8), - /*9171*/ uint16(xMatch), - /*9172*/ uint16(xSetOp), uint16(JL), - /*9174*/ uint16(xReadCb), - /*9175*/ uint16(xArgRel8), - /*9176*/ uint16(xMatch), - /*9177*/ uint16(xSetOp), uint16(JGE), - /*9179*/ uint16(xReadCb), - /*9180*/ uint16(xArgRel8), - /*9181*/ uint16(xMatch), - /*9182*/ uint16(xSetOp), uint16(JLE), - /*9184*/ uint16(xReadCb), - /*9185*/ uint16(xArgRel8), - /*9186*/ uint16(xMatch), - /*9187*/ uint16(xCondPrefix), 3, - 0xC5, 9226, - 0xC4, 9200, - 0x0, 9195, - /*9195*/ uint16(xSetOp), uint16(JG), - /*9197*/ uint16(xReadCb), - /*9198*/ uint16(xArgRel8), - /*9199*/ uint16(xMatch), - /*9200*/ uint16(xCondPrefix), 2, - 0xF3, 9216, - 0x66, 9206, - /*9206*/ uint16(xCondPrefix), 1, - 0x0F, 9210, - /*9210*/ uint16(xSetOp), uint16(VMOVDQA), - /*9212*/ uint16(xReadSlashR), - /*9213*/ uint16(xArgYmm2M256), - /*9214*/ uint16(xArgYmm1), - /*9215*/ uint16(xMatch), - /*9216*/ uint16(xCondPrefix), 1, - 0x0F, 9220, - /*9220*/ uint16(xSetOp), uint16(VMOVDQU), - /*9222*/ uint16(xReadSlashR), - /*9223*/ uint16(xArgYmm2M256), - /*9224*/ uint16(xArgYmm1), - /*9225*/ uint16(xMatch), - /*9226*/ uint16(xCondPrefix), 2, - 0xF3, 9242, - 0x66, 9232, - /*9232*/ uint16(xCondPrefix), 1, - 0x0F, 9236, - /*9236*/ uint16(xSetOp), uint16(VMOVDQA), - /*9238*/ uint16(xReadSlashR), - /*9239*/ uint16(xArgYmm2M256), - /*9240*/ uint16(xArgYmm1), - /*9241*/ uint16(xMatch), - /*9242*/ uint16(xCondPrefix), 1, - 0x0F, 9246, - /*9246*/ uint16(xSetOp), uint16(VMOVDQU), - /*9248*/ uint16(xReadSlashR), - /*9249*/ uint16(xArgYmm2M256), - /*9250*/ uint16(xArgYmm1), - /*9251*/ uint16(xMatch), - /*9252*/ uint16(xCondSlashR), - 9261, // 0 - 9267, // 1 - 9273, // 2 - 9279, // 3 - 9285, // 4 - 9291, // 5 - 9297, // 6 - 9303, // 7 - /*9261*/ uint16(xSetOp), uint16(ADD), - /*9263*/ uint16(xReadIb), - /*9264*/ uint16(xArgRM8), - /*9265*/ uint16(xArgImm8u), - /*9266*/ uint16(xMatch), - /*9267*/ uint16(xSetOp), uint16(OR), - /*9269*/ uint16(xReadIb), - /*9270*/ uint16(xArgRM8), - /*9271*/ uint16(xArgImm8u), - /*9272*/ uint16(xMatch), - /*9273*/ uint16(xSetOp), uint16(ADC), - /*9275*/ uint16(xReadIb), - /*9276*/ uint16(xArgRM8), - /*9277*/ uint16(xArgImm8u), - /*9278*/ uint16(xMatch), - /*9279*/ uint16(xSetOp), uint16(SBB), - /*9281*/ uint16(xReadIb), - /*9282*/ uint16(xArgRM8), - /*9283*/ uint16(xArgImm8u), - /*9284*/ uint16(xMatch), - /*9285*/ uint16(xSetOp), uint16(AND), - /*9287*/ uint16(xReadIb), - /*9288*/ uint16(xArgRM8), - /*9289*/ uint16(xArgImm8u), - /*9290*/ uint16(xMatch), - /*9291*/ uint16(xSetOp), uint16(SUB), - /*9293*/ uint16(xReadIb), - /*9294*/ uint16(xArgRM8), - /*9295*/ uint16(xArgImm8u), - /*9296*/ uint16(xMatch), - /*9297*/ uint16(xSetOp), uint16(XOR), - /*9299*/ uint16(xReadIb), - /*9300*/ uint16(xArgRM8), - /*9301*/ uint16(xArgImm8u), - /*9302*/ uint16(xMatch), - /*9303*/ uint16(xSetOp), uint16(CMP), - /*9305*/ uint16(xReadIb), - /*9306*/ uint16(xArgRM8), - /*9307*/ uint16(xArgImm8u), - /*9308*/ uint16(xMatch), - /*9309*/ uint16(xCondSlashR), - 9318, // 0 - 9347, // 1 - 9376, // 2 - 9405, // 3 - 9434, // 4 - 9463, // 5 - 9492, // 6 - 9521, // 7 - /*9318*/ uint16(xCondIs64), 9321, 9337, - /*9321*/ uint16(xCondDataSize), 9325, 9331, 0, - /*9325*/ uint16(xSetOp), uint16(ADD), - /*9327*/ uint16(xReadIw), - /*9328*/ uint16(xArgRM16), - /*9329*/ uint16(xArgImm16), - /*9330*/ uint16(xMatch), - /*9331*/ uint16(xSetOp), uint16(ADD), - /*9333*/ uint16(xReadId), - /*9334*/ uint16(xArgRM32), - /*9335*/ uint16(xArgImm32), - /*9336*/ uint16(xMatch), - /*9337*/ uint16(xCondDataSize), 9325, 9331, 9341, - /*9341*/ uint16(xSetOp), uint16(ADD), - /*9343*/ uint16(xReadId), - /*9344*/ uint16(xArgRM64), - /*9345*/ uint16(xArgImm32), - /*9346*/ uint16(xMatch), - /*9347*/ uint16(xCondIs64), 9350, 9366, - /*9350*/ uint16(xCondDataSize), 9354, 9360, 0, - /*9354*/ uint16(xSetOp), uint16(OR), - /*9356*/ uint16(xReadIw), - /*9357*/ uint16(xArgRM16), - /*9358*/ uint16(xArgImm16), - /*9359*/ uint16(xMatch), - /*9360*/ uint16(xSetOp), uint16(OR), + /*9157*/ uint16(xCondPrefix), 1, + 0x0F, 9161, + /*9161*/ uint16(xSetOp), uint16(VZEROUPPER), + /*9163*/ uint16(xMatch), + /*9164*/ uint16(xCondPrefix), 1, + 0x0F, 9168, + /*9168*/ uint16(xSetOp), uint16(VZEROUPPER), + /*9170*/ uint16(xMatch), + /*9171*/ uint16(xSetOp), uint16(JS), + /*9173*/ uint16(xReadCb), + /*9174*/ uint16(xArgRel8), + /*9175*/ uint16(xMatch), + /*9176*/ uint16(xSetOp), uint16(JNS), + /*9178*/ uint16(xReadCb), + /*9179*/ uint16(xArgRel8), + /*9180*/ uint16(xMatch), + /*9181*/ uint16(xSetOp), uint16(JP), + /*9183*/ uint16(xReadCb), + /*9184*/ uint16(xArgRel8), + /*9185*/ uint16(xMatch), + /*9186*/ uint16(xSetOp), uint16(JNP), + /*9188*/ uint16(xReadCb), + /*9189*/ uint16(xArgRel8), + /*9190*/ uint16(xMatch), + /*9191*/ uint16(xSetOp), uint16(JL), + /*9193*/ uint16(xReadCb), + /*9194*/ uint16(xArgRel8), + /*9195*/ uint16(xMatch), + /*9196*/ uint16(xSetOp), uint16(JGE), + /*9198*/ uint16(xReadCb), + /*9199*/ uint16(xArgRel8), + /*9200*/ uint16(xMatch), + /*9201*/ uint16(xSetOp), uint16(JLE), + /*9203*/ uint16(xReadCb), + /*9204*/ uint16(xArgRel8), + /*9205*/ uint16(xMatch), + /*9206*/ uint16(xCondPrefix), 3, + 0xC5, 9245, + 0xC4, 9219, + 0x0, 9214, + /*9214*/ uint16(xSetOp), uint16(JG), + /*9216*/ uint16(xReadCb), + /*9217*/ uint16(xArgRel8), + /*9218*/ uint16(xMatch), + /*9219*/ uint16(xCondPrefix), 2, + 0xF3, 9235, + 0x66, 9225, + /*9225*/ uint16(xCondPrefix), 1, + 0x0F, 9229, + /*9229*/ uint16(xSetOp), uint16(VMOVDQA), + /*9231*/ uint16(xReadSlashR), + /*9232*/ uint16(xArgYmm2M256), + /*9233*/ uint16(xArgYmm1), + /*9234*/ uint16(xMatch), + /*9235*/ uint16(xCondPrefix), 1, + 0x0F, 9239, + /*9239*/ uint16(xSetOp), uint16(VMOVDQU), + /*9241*/ uint16(xReadSlashR), + /*9242*/ uint16(xArgYmm2M256), + /*9243*/ uint16(xArgYmm1), + /*9244*/ uint16(xMatch), + /*9245*/ uint16(xCondPrefix), 2, + 0xF3, 9261, + 0x66, 9251, + /*9251*/ uint16(xCondPrefix), 1, + 0x0F, 9255, + /*9255*/ uint16(xSetOp), uint16(VMOVDQA), + /*9257*/ uint16(xReadSlashR), + /*9258*/ uint16(xArgYmm2M256), + /*9259*/ uint16(xArgYmm1), + /*9260*/ uint16(xMatch), + /*9261*/ uint16(xCondPrefix), 1, + 0x0F, 9265, + /*9265*/ uint16(xSetOp), uint16(VMOVDQU), + /*9267*/ uint16(xReadSlashR), + /*9268*/ uint16(xArgYmm2M256), + /*9269*/ uint16(xArgYmm1), + /*9270*/ uint16(xMatch), + /*9271*/ uint16(xCondSlashR), + 9280, // 0 + 9286, // 1 + 9292, // 2 + 9298, // 3 + 9304, // 4 + 9310, // 5 + 9316, // 6 + 9322, // 7 + /*9280*/ uint16(xSetOp), uint16(ADD), + /*9282*/ uint16(xReadIb), + /*9283*/ uint16(xArgRM8), + /*9284*/ uint16(xArgImm8u), + /*9285*/ uint16(xMatch), + /*9286*/ uint16(xSetOp), uint16(OR), + /*9288*/ uint16(xReadIb), + /*9289*/ uint16(xArgRM8), + /*9290*/ uint16(xArgImm8u), + /*9291*/ uint16(xMatch), + /*9292*/ uint16(xSetOp), uint16(ADC), + /*9294*/ uint16(xReadIb), + /*9295*/ uint16(xArgRM8), + /*9296*/ uint16(xArgImm8u), + /*9297*/ uint16(xMatch), + /*9298*/ uint16(xSetOp), uint16(SBB), + /*9300*/ uint16(xReadIb), + /*9301*/ uint16(xArgRM8), + /*9302*/ uint16(xArgImm8u), + /*9303*/ uint16(xMatch), + /*9304*/ uint16(xSetOp), uint16(AND), + /*9306*/ uint16(xReadIb), + /*9307*/ uint16(xArgRM8), + /*9308*/ uint16(xArgImm8u), + /*9309*/ uint16(xMatch), + /*9310*/ uint16(xSetOp), uint16(SUB), + /*9312*/ uint16(xReadIb), + /*9313*/ uint16(xArgRM8), + /*9314*/ uint16(xArgImm8u), + /*9315*/ uint16(xMatch), + /*9316*/ uint16(xSetOp), uint16(XOR), + /*9318*/ uint16(xReadIb), + /*9319*/ uint16(xArgRM8), + /*9320*/ uint16(xArgImm8u), + /*9321*/ uint16(xMatch), + /*9322*/ uint16(xSetOp), uint16(CMP), + /*9324*/ uint16(xReadIb), + /*9325*/ uint16(xArgRM8), + /*9326*/ uint16(xArgImm8u), + /*9327*/ uint16(xMatch), + /*9328*/ uint16(xCondSlashR), + 9337, // 0 + 9366, // 1 + 9395, // 2 + 9424, // 3 + 9453, // 4 + 9482, // 5 + 9511, // 6 + 9540, // 7 + /*9337*/ uint16(xCondIs64), 9340, 9356, + /*9340*/ uint16(xCondDataSize), 9344, 9350, 0, + /*9344*/ uint16(xSetOp), uint16(ADD), + /*9346*/ uint16(xReadIw), + /*9347*/ uint16(xArgRM16), + /*9348*/ uint16(xArgImm16), + /*9349*/ uint16(xMatch), + /*9350*/ uint16(xSetOp), uint16(ADD), + /*9352*/ uint16(xReadId), + /*9353*/ uint16(xArgRM32), + /*9354*/ uint16(xArgImm32), + /*9355*/ uint16(xMatch), + /*9356*/ uint16(xCondDataSize), 9344, 9350, 9360, + /*9360*/ uint16(xSetOp), uint16(ADD), /*9362*/ uint16(xReadId), - /*9363*/ uint16(xArgRM32), + /*9363*/ uint16(xArgRM64), /*9364*/ uint16(xArgImm32), /*9365*/ uint16(xMatch), - /*9366*/ uint16(xCondDataSize), 9354, 9360, 9370, - /*9370*/ uint16(xSetOp), uint16(OR), - /*9372*/ uint16(xReadId), - /*9373*/ uint16(xArgRM64), - /*9374*/ uint16(xArgImm32), - /*9375*/ uint16(xMatch), - /*9376*/ uint16(xCondIs64), 9379, 9395, - /*9379*/ uint16(xCondDataSize), 9383, 9389, 0, - /*9383*/ uint16(xSetOp), uint16(ADC), - /*9385*/ uint16(xReadIw), - /*9386*/ uint16(xArgRM16), - /*9387*/ uint16(xArgImm16), - /*9388*/ uint16(xMatch), - /*9389*/ uint16(xSetOp), uint16(ADC), + /*9366*/ uint16(xCondIs64), 9369, 9385, + /*9369*/ uint16(xCondDataSize), 9373, 9379, 0, + /*9373*/ uint16(xSetOp), uint16(OR), + /*9375*/ uint16(xReadIw), + /*9376*/ uint16(xArgRM16), + /*9377*/ uint16(xArgImm16), + /*9378*/ uint16(xMatch), + /*9379*/ uint16(xSetOp), uint16(OR), + /*9381*/ uint16(xReadId), + /*9382*/ uint16(xArgRM32), + /*9383*/ uint16(xArgImm32), + /*9384*/ uint16(xMatch), + /*9385*/ uint16(xCondDataSize), 9373, 9379, 9389, + /*9389*/ uint16(xSetOp), uint16(OR), /*9391*/ uint16(xReadId), - /*9392*/ uint16(xArgRM32), + /*9392*/ uint16(xArgRM64), /*9393*/ uint16(xArgImm32), /*9394*/ uint16(xMatch), - /*9395*/ uint16(xCondDataSize), 9383, 9389, 9399, - /*9399*/ uint16(xSetOp), uint16(ADC), - /*9401*/ uint16(xReadId), - /*9402*/ uint16(xArgRM64), - /*9403*/ uint16(xArgImm32), - /*9404*/ uint16(xMatch), - /*9405*/ uint16(xCondIs64), 9408, 9424, - /*9408*/ uint16(xCondDataSize), 9412, 9418, 0, - /*9412*/ uint16(xSetOp), uint16(SBB), - /*9414*/ uint16(xReadIw), - /*9415*/ uint16(xArgRM16), - /*9416*/ uint16(xArgImm16), - /*9417*/ uint16(xMatch), - /*9418*/ uint16(xSetOp), uint16(SBB), + /*9395*/ uint16(xCondIs64), 9398, 9414, + /*9398*/ uint16(xCondDataSize), 9402, 9408, 0, + /*9402*/ uint16(xSetOp), uint16(ADC), + /*9404*/ uint16(xReadIw), + /*9405*/ uint16(xArgRM16), + /*9406*/ uint16(xArgImm16), + /*9407*/ uint16(xMatch), + /*9408*/ uint16(xSetOp), uint16(ADC), + /*9410*/ uint16(xReadId), + /*9411*/ uint16(xArgRM32), + /*9412*/ uint16(xArgImm32), + /*9413*/ uint16(xMatch), + /*9414*/ uint16(xCondDataSize), 9402, 9408, 9418, + /*9418*/ uint16(xSetOp), uint16(ADC), /*9420*/ uint16(xReadId), - /*9421*/ uint16(xArgRM32), + /*9421*/ uint16(xArgRM64), /*9422*/ uint16(xArgImm32), /*9423*/ uint16(xMatch), - /*9424*/ uint16(xCondDataSize), 9412, 9418, 9428, - /*9428*/ uint16(xSetOp), uint16(SBB), - /*9430*/ uint16(xReadId), - /*9431*/ uint16(xArgRM64), - /*9432*/ uint16(xArgImm32), - /*9433*/ uint16(xMatch), - /*9434*/ uint16(xCondIs64), 9437, 9453, - /*9437*/ uint16(xCondDataSize), 9441, 9447, 0, - /*9441*/ uint16(xSetOp), uint16(AND), - /*9443*/ uint16(xReadIw), - /*9444*/ uint16(xArgRM16), - /*9445*/ uint16(xArgImm16), - /*9446*/ uint16(xMatch), - /*9447*/ uint16(xSetOp), uint16(AND), + /*9424*/ uint16(xCondIs64), 9427, 9443, + /*9427*/ uint16(xCondDataSize), 9431, 9437, 0, + /*9431*/ uint16(xSetOp), uint16(SBB), + /*9433*/ uint16(xReadIw), + /*9434*/ uint16(xArgRM16), + /*9435*/ uint16(xArgImm16), + /*9436*/ uint16(xMatch), + /*9437*/ uint16(xSetOp), uint16(SBB), + /*9439*/ uint16(xReadId), + /*9440*/ uint16(xArgRM32), + /*9441*/ uint16(xArgImm32), + /*9442*/ uint16(xMatch), + /*9443*/ uint16(xCondDataSize), 9431, 9437, 9447, + /*9447*/ uint16(xSetOp), uint16(SBB), /*9449*/ uint16(xReadId), - /*9450*/ uint16(xArgRM32), + /*9450*/ uint16(xArgRM64), /*9451*/ uint16(xArgImm32), /*9452*/ uint16(xMatch), - /*9453*/ uint16(xCondDataSize), 9441, 9447, 9457, - /*9457*/ uint16(xSetOp), uint16(AND), - /*9459*/ uint16(xReadId), - /*9460*/ uint16(xArgRM64), - /*9461*/ uint16(xArgImm32), - /*9462*/ uint16(xMatch), - /*9463*/ uint16(xCondIs64), 9466, 9482, - /*9466*/ uint16(xCondDataSize), 9470, 9476, 0, - /*9470*/ uint16(xSetOp), uint16(SUB), - /*9472*/ uint16(xReadIw), - /*9473*/ uint16(xArgRM16), - /*9474*/ uint16(xArgImm16), - /*9475*/ uint16(xMatch), - /*9476*/ uint16(xSetOp), uint16(SUB), + /*9453*/ uint16(xCondIs64), 9456, 9472, + /*9456*/ uint16(xCondDataSize), 9460, 9466, 0, + /*9460*/ uint16(xSetOp), uint16(AND), + /*9462*/ uint16(xReadIw), + /*9463*/ uint16(xArgRM16), + /*9464*/ uint16(xArgImm16), + /*9465*/ uint16(xMatch), + /*9466*/ uint16(xSetOp), uint16(AND), + /*9468*/ uint16(xReadId), + /*9469*/ uint16(xArgRM32), + /*9470*/ uint16(xArgImm32), + /*9471*/ uint16(xMatch), + /*9472*/ uint16(xCondDataSize), 9460, 9466, 9476, + /*9476*/ uint16(xSetOp), uint16(AND), /*9478*/ uint16(xReadId), - /*9479*/ uint16(xArgRM32), + /*9479*/ uint16(xArgRM64), /*9480*/ uint16(xArgImm32), /*9481*/ uint16(xMatch), - /*9482*/ uint16(xCondDataSize), 9470, 9476, 9486, - /*9486*/ uint16(xSetOp), uint16(SUB), - /*9488*/ uint16(xReadId), - /*9489*/ uint16(xArgRM64), - /*9490*/ uint16(xArgImm32), - /*9491*/ uint16(xMatch), - /*9492*/ uint16(xCondIs64), 9495, 9511, - /*9495*/ uint16(xCondDataSize), 9499, 9505, 0, - /*9499*/ uint16(xSetOp), uint16(XOR), - /*9501*/ uint16(xReadIw), - /*9502*/ uint16(xArgRM16), - /*9503*/ uint16(xArgImm16), - /*9504*/ uint16(xMatch), - /*9505*/ uint16(xSetOp), uint16(XOR), + /*9482*/ uint16(xCondIs64), 9485, 9501, + /*9485*/ uint16(xCondDataSize), 9489, 9495, 0, + /*9489*/ uint16(xSetOp), uint16(SUB), + /*9491*/ uint16(xReadIw), + /*9492*/ uint16(xArgRM16), + /*9493*/ uint16(xArgImm16), + /*9494*/ uint16(xMatch), + /*9495*/ uint16(xSetOp), uint16(SUB), + /*9497*/ uint16(xReadId), + /*9498*/ uint16(xArgRM32), + /*9499*/ uint16(xArgImm32), + /*9500*/ uint16(xMatch), + /*9501*/ uint16(xCondDataSize), 9489, 9495, 9505, + /*9505*/ uint16(xSetOp), uint16(SUB), /*9507*/ uint16(xReadId), - /*9508*/ uint16(xArgRM32), + /*9508*/ uint16(xArgRM64), /*9509*/ uint16(xArgImm32), /*9510*/ uint16(xMatch), - /*9511*/ uint16(xCondDataSize), 9499, 9505, 9515, - /*9515*/ uint16(xSetOp), uint16(XOR), - /*9517*/ uint16(xReadId), - /*9518*/ uint16(xArgRM64), - /*9519*/ uint16(xArgImm32), - /*9520*/ uint16(xMatch), - /*9521*/ uint16(xCondIs64), 9524, 9540, - /*9524*/ uint16(xCondDataSize), 9528, 9534, 0, - /*9528*/ uint16(xSetOp), uint16(CMP), - /*9530*/ uint16(xReadIw), - /*9531*/ uint16(xArgRM16), - /*9532*/ uint16(xArgImm16), - /*9533*/ uint16(xMatch), - /*9534*/ uint16(xSetOp), uint16(CMP), + /*9511*/ uint16(xCondIs64), 9514, 9530, + /*9514*/ uint16(xCondDataSize), 9518, 9524, 0, + /*9518*/ uint16(xSetOp), uint16(XOR), + /*9520*/ uint16(xReadIw), + /*9521*/ uint16(xArgRM16), + /*9522*/ uint16(xArgImm16), + /*9523*/ uint16(xMatch), + /*9524*/ uint16(xSetOp), uint16(XOR), + /*9526*/ uint16(xReadId), + /*9527*/ uint16(xArgRM32), + /*9528*/ uint16(xArgImm32), + /*9529*/ uint16(xMatch), + /*9530*/ uint16(xCondDataSize), 9518, 9524, 9534, + /*9534*/ uint16(xSetOp), uint16(XOR), /*9536*/ uint16(xReadId), - /*9537*/ uint16(xArgRM32), + /*9537*/ uint16(xArgRM64), /*9538*/ uint16(xArgImm32), /*9539*/ uint16(xMatch), - /*9540*/ uint16(xCondDataSize), 9528, 9534, 9544, - /*9544*/ uint16(xSetOp), uint16(CMP), - /*9546*/ uint16(xReadId), - /*9547*/ uint16(xArgRM64), - /*9548*/ uint16(xArgImm32), - /*9549*/ uint16(xMatch), - /*9550*/ uint16(xCondSlashR), - 9559, // 0 - 9588, // 1 - 9617, // 2 - 9646, // 3 - 9675, // 4 - 9704, // 5 - 9733, // 6 - 9762, // 7 - /*9559*/ uint16(xCondIs64), 9562, 9578, - /*9562*/ uint16(xCondDataSize), 9566, 9572, 0, - /*9566*/ uint16(xSetOp), uint16(ADD), - /*9568*/ uint16(xReadIb), - /*9569*/ uint16(xArgRM16), - /*9570*/ uint16(xArgImm8), - /*9571*/ uint16(xMatch), - /*9572*/ uint16(xSetOp), uint16(ADD), - /*9574*/ uint16(xReadIb), - /*9575*/ uint16(xArgRM32), - /*9576*/ uint16(xArgImm8), - /*9577*/ uint16(xMatch), - /*9578*/ uint16(xCondDataSize), 9566, 9572, 9582, - /*9582*/ uint16(xSetOp), uint16(ADD), - /*9584*/ uint16(xReadIb), - /*9585*/ uint16(xArgRM64), - /*9586*/ uint16(xArgImm8), - /*9587*/ uint16(xMatch), - /*9588*/ uint16(xCondIs64), 9591, 9607, - /*9591*/ uint16(xCondDataSize), 9595, 9601, 0, - /*9595*/ uint16(xSetOp), uint16(OR), - /*9597*/ uint16(xReadIb), - /*9598*/ uint16(xArgRM16), - /*9599*/ uint16(xArgImm8), - /*9600*/ uint16(xMatch), - /*9601*/ uint16(xSetOp), uint16(OR), + /*9540*/ uint16(xCondIs64), 9543, 9559, + /*9543*/ uint16(xCondDataSize), 9547, 9553, 0, + /*9547*/ uint16(xSetOp), uint16(CMP), + /*9549*/ uint16(xReadIw), + /*9550*/ uint16(xArgRM16), + /*9551*/ uint16(xArgImm16), + /*9552*/ uint16(xMatch), + /*9553*/ uint16(xSetOp), uint16(CMP), + /*9555*/ uint16(xReadId), + /*9556*/ uint16(xArgRM32), + /*9557*/ uint16(xArgImm32), + /*9558*/ uint16(xMatch), + /*9559*/ uint16(xCondDataSize), 9547, 9553, 9563, + /*9563*/ uint16(xSetOp), uint16(CMP), + /*9565*/ uint16(xReadId), + /*9566*/ uint16(xArgRM64), + /*9567*/ uint16(xArgImm32), + /*9568*/ uint16(xMatch), + /*9569*/ uint16(xCondSlashR), + 9578, // 0 + 9607, // 1 + 9636, // 2 + 9665, // 3 + 9694, // 4 + 9723, // 5 + 9752, // 6 + 9781, // 7 + /*9578*/ uint16(xCondIs64), 9581, 9597, + /*9581*/ uint16(xCondDataSize), 9585, 9591, 0, + /*9585*/ uint16(xSetOp), uint16(ADD), + /*9587*/ uint16(xReadIb), + /*9588*/ uint16(xArgRM16), + /*9589*/ uint16(xArgImm8), + /*9590*/ uint16(xMatch), + /*9591*/ uint16(xSetOp), uint16(ADD), + /*9593*/ uint16(xReadIb), + /*9594*/ uint16(xArgRM32), + /*9595*/ uint16(xArgImm8), + /*9596*/ uint16(xMatch), + /*9597*/ uint16(xCondDataSize), 9585, 9591, 9601, + /*9601*/ uint16(xSetOp), uint16(ADD), /*9603*/ uint16(xReadIb), - /*9604*/ uint16(xArgRM32), + /*9604*/ uint16(xArgRM64), /*9605*/ uint16(xArgImm8), /*9606*/ uint16(xMatch), - /*9607*/ uint16(xCondDataSize), 9595, 9601, 9611, - /*9611*/ uint16(xSetOp), uint16(OR), - /*9613*/ uint16(xReadIb), - /*9614*/ uint16(xArgRM64), - /*9615*/ uint16(xArgImm8), - /*9616*/ uint16(xMatch), - /*9617*/ uint16(xCondIs64), 9620, 9636, - /*9620*/ uint16(xCondDataSize), 9624, 9630, 0, - /*9624*/ uint16(xSetOp), uint16(ADC), - /*9626*/ uint16(xReadIb), - /*9627*/ uint16(xArgRM16), - /*9628*/ uint16(xArgImm8), - /*9629*/ uint16(xMatch), - /*9630*/ uint16(xSetOp), uint16(ADC), + /*9607*/ uint16(xCondIs64), 9610, 9626, + /*9610*/ uint16(xCondDataSize), 9614, 9620, 0, + /*9614*/ uint16(xSetOp), uint16(OR), + /*9616*/ uint16(xReadIb), + /*9617*/ uint16(xArgRM16), + /*9618*/ uint16(xArgImm8), + /*9619*/ uint16(xMatch), + /*9620*/ uint16(xSetOp), uint16(OR), + /*9622*/ uint16(xReadIb), + /*9623*/ uint16(xArgRM32), + /*9624*/ uint16(xArgImm8), + /*9625*/ uint16(xMatch), + /*9626*/ uint16(xCondDataSize), 9614, 9620, 9630, + /*9630*/ uint16(xSetOp), uint16(OR), /*9632*/ uint16(xReadIb), - /*9633*/ uint16(xArgRM32), + /*9633*/ uint16(xArgRM64), /*9634*/ uint16(xArgImm8), /*9635*/ uint16(xMatch), - /*9636*/ uint16(xCondDataSize), 9624, 9630, 9640, - /*9640*/ uint16(xSetOp), uint16(ADC), - /*9642*/ uint16(xReadIb), - /*9643*/ uint16(xArgRM64), - /*9644*/ uint16(xArgImm8), - /*9645*/ uint16(xMatch), - /*9646*/ uint16(xCondIs64), 9649, 9665, - /*9649*/ uint16(xCondDataSize), 9653, 9659, 0, - /*9653*/ uint16(xSetOp), uint16(SBB), - /*9655*/ uint16(xReadIb), - /*9656*/ uint16(xArgRM16), - /*9657*/ uint16(xArgImm8), - /*9658*/ uint16(xMatch), - /*9659*/ uint16(xSetOp), uint16(SBB), + /*9636*/ uint16(xCondIs64), 9639, 9655, + /*9639*/ uint16(xCondDataSize), 9643, 9649, 0, + /*9643*/ uint16(xSetOp), uint16(ADC), + /*9645*/ uint16(xReadIb), + /*9646*/ uint16(xArgRM16), + /*9647*/ uint16(xArgImm8), + /*9648*/ uint16(xMatch), + /*9649*/ uint16(xSetOp), uint16(ADC), + /*9651*/ uint16(xReadIb), + /*9652*/ uint16(xArgRM32), + /*9653*/ uint16(xArgImm8), + /*9654*/ uint16(xMatch), + /*9655*/ uint16(xCondDataSize), 9643, 9649, 9659, + /*9659*/ uint16(xSetOp), uint16(ADC), /*9661*/ uint16(xReadIb), - /*9662*/ uint16(xArgRM32), + /*9662*/ uint16(xArgRM64), /*9663*/ uint16(xArgImm8), /*9664*/ uint16(xMatch), - /*9665*/ uint16(xCondDataSize), 9653, 9659, 9669, - /*9669*/ uint16(xSetOp), uint16(SBB), - /*9671*/ uint16(xReadIb), - /*9672*/ uint16(xArgRM64), - /*9673*/ uint16(xArgImm8), - /*9674*/ uint16(xMatch), - /*9675*/ uint16(xCondIs64), 9678, 9694, - /*9678*/ uint16(xCondDataSize), 9682, 9688, 0, - /*9682*/ uint16(xSetOp), uint16(AND), - /*9684*/ uint16(xReadIb), - /*9685*/ uint16(xArgRM16), - /*9686*/ uint16(xArgImm8), - /*9687*/ uint16(xMatch), - /*9688*/ uint16(xSetOp), uint16(AND), + /*9665*/ uint16(xCondIs64), 9668, 9684, + /*9668*/ uint16(xCondDataSize), 9672, 9678, 0, + /*9672*/ uint16(xSetOp), uint16(SBB), + /*9674*/ uint16(xReadIb), + /*9675*/ uint16(xArgRM16), + /*9676*/ uint16(xArgImm8), + /*9677*/ uint16(xMatch), + /*9678*/ uint16(xSetOp), uint16(SBB), + /*9680*/ uint16(xReadIb), + /*9681*/ uint16(xArgRM32), + /*9682*/ uint16(xArgImm8), + /*9683*/ uint16(xMatch), + /*9684*/ uint16(xCondDataSize), 9672, 9678, 9688, + /*9688*/ uint16(xSetOp), uint16(SBB), /*9690*/ uint16(xReadIb), - /*9691*/ uint16(xArgRM32), + /*9691*/ uint16(xArgRM64), /*9692*/ uint16(xArgImm8), /*9693*/ uint16(xMatch), - /*9694*/ uint16(xCondDataSize), 9682, 9688, 9698, - /*9698*/ uint16(xSetOp), uint16(AND), - /*9700*/ uint16(xReadIb), - /*9701*/ uint16(xArgRM64), - /*9702*/ uint16(xArgImm8), - /*9703*/ uint16(xMatch), - /*9704*/ uint16(xCondIs64), 9707, 9723, - /*9707*/ uint16(xCondDataSize), 9711, 9717, 0, - /*9711*/ uint16(xSetOp), uint16(SUB), - /*9713*/ uint16(xReadIb), - /*9714*/ uint16(xArgRM16), - /*9715*/ uint16(xArgImm8), - /*9716*/ uint16(xMatch), - /*9717*/ uint16(xSetOp), uint16(SUB), + /*9694*/ uint16(xCondIs64), 9697, 9713, + /*9697*/ uint16(xCondDataSize), 9701, 9707, 0, + /*9701*/ uint16(xSetOp), uint16(AND), + /*9703*/ uint16(xReadIb), + /*9704*/ uint16(xArgRM16), + /*9705*/ uint16(xArgImm8), + /*9706*/ uint16(xMatch), + /*9707*/ uint16(xSetOp), uint16(AND), + /*9709*/ uint16(xReadIb), + /*9710*/ uint16(xArgRM32), + /*9711*/ uint16(xArgImm8), + /*9712*/ uint16(xMatch), + /*9713*/ uint16(xCondDataSize), 9701, 9707, 9717, + /*9717*/ uint16(xSetOp), uint16(AND), /*9719*/ uint16(xReadIb), - /*9720*/ uint16(xArgRM32), + /*9720*/ uint16(xArgRM64), /*9721*/ uint16(xArgImm8), /*9722*/ uint16(xMatch), - /*9723*/ uint16(xCondDataSize), 9711, 9717, 9727, - /*9727*/ uint16(xSetOp), uint16(SUB), - /*9729*/ uint16(xReadIb), - /*9730*/ uint16(xArgRM64), - /*9731*/ uint16(xArgImm8), - /*9732*/ uint16(xMatch), - /*9733*/ uint16(xCondIs64), 9736, 9752, - /*9736*/ uint16(xCondDataSize), 9740, 9746, 0, - /*9740*/ uint16(xSetOp), uint16(XOR), - /*9742*/ uint16(xReadIb), - /*9743*/ uint16(xArgRM16), - /*9744*/ uint16(xArgImm8), - /*9745*/ uint16(xMatch), - /*9746*/ uint16(xSetOp), uint16(XOR), + /*9723*/ uint16(xCondIs64), 9726, 9742, + /*9726*/ uint16(xCondDataSize), 9730, 9736, 0, + /*9730*/ uint16(xSetOp), uint16(SUB), + /*9732*/ uint16(xReadIb), + /*9733*/ uint16(xArgRM16), + /*9734*/ uint16(xArgImm8), + /*9735*/ uint16(xMatch), + /*9736*/ uint16(xSetOp), uint16(SUB), + /*9738*/ uint16(xReadIb), + /*9739*/ uint16(xArgRM32), + /*9740*/ uint16(xArgImm8), + /*9741*/ uint16(xMatch), + /*9742*/ uint16(xCondDataSize), 9730, 9736, 9746, + /*9746*/ uint16(xSetOp), uint16(SUB), /*9748*/ uint16(xReadIb), - /*9749*/ uint16(xArgRM32), + /*9749*/ uint16(xArgRM64), /*9750*/ uint16(xArgImm8), /*9751*/ uint16(xMatch), - /*9752*/ uint16(xCondDataSize), 9740, 9746, 9756, - /*9756*/ uint16(xSetOp), uint16(XOR), - /*9758*/ uint16(xReadIb), - /*9759*/ uint16(xArgRM64), - /*9760*/ uint16(xArgImm8), - /*9761*/ uint16(xMatch), - /*9762*/ uint16(xCondIs64), 9765, 9781, - /*9765*/ uint16(xCondDataSize), 9769, 9775, 0, - /*9769*/ uint16(xSetOp), uint16(CMP), - /*9771*/ uint16(xReadIb), - /*9772*/ uint16(xArgRM16), - /*9773*/ uint16(xArgImm8), - /*9774*/ uint16(xMatch), - /*9775*/ uint16(xSetOp), uint16(CMP), + /*9752*/ uint16(xCondIs64), 9755, 9771, + /*9755*/ uint16(xCondDataSize), 9759, 9765, 0, + /*9759*/ uint16(xSetOp), uint16(XOR), + /*9761*/ uint16(xReadIb), + /*9762*/ uint16(xArgRM16), + /*9763*/ uint16(xArgImm8), + /*9764*/ uint16(xMatch), + /*9765*/ uint16(xSetOp), uint16(XOR), + /*9767*/ uint16(xReadIb), + /*9768*/ uint16(xArgRM32), + /*9769*/ uint16(xArgImm8), + /*9770*/ uint16(xMatch), + /*9771*/ uint16(xCondDataSize), 9759, 9765, 9775, + /*9775*/ uint16(xSetOp), uint16(XOR), /*9777*/ uint16(xReadIb), - /*9778*/ uint16(xArgRM32), + /*9778*/ uint16(xArgRM64), /*9779*/ uint16(xArgImm8), /*9780*/ uint16(xMatch), - /*9781*/ uint16(xCondDataSize), 9769, 9775, 9785, - /*9785*/ uint16(xSetOp), uint16(CMP), - /*9787*/ uint16(xReadIb), - /*9788*/ uint16(xArgRM64), - /*9789*/ uint16(xArgImm8), - /*9790*/ uint16(xMatch), - /*9791*/ uint16(xSetOp), uint16(TEST), - /*9793*/ uint16(xReadSlashR), - /*9794*/ uint16(xArgRM8), - /*9795*/ uint16(xArgR8), - /*9796*/ uint16(xMatch), - /*9797*/ uint16(xCondIs64), 9800, 9816, - /*9800*/ uint16(xCondDataSize), 9804, 9810, 0, - /*9804*/ uint16(xSetOp), uint16(TEST), - /*9806*/ uint16(xReadSlashR), - /*9807*/ uint16(xArgRM16), - /*9808*/ uint16(xArgR16), + /*9781*/ uint16(xCondIs64), 9784, 9800, + /*9784*/ uint16(xCondDataSize), 9788, 9794, 0, + /*9788*/ uint16(xSetOp), uint16(CMP), + /*9790*/ uint16(xReadIb), + /*9791*/ uint16(xArgRM16), + /*9792*/ uint16(xArgImm8), + /*9793*/ uint16(xMatch), + /*9794*/ uint16(xSetOp), uint16(CMP), + /*9796*/ uint16(xReadIb), + /*9797*/ uint16(xArgRM32), + /*9798*/ uint16(xArgImm8), + /*9799*/ uint16(xMatch), + /*9800*/ uint16(xCondDataSize), 9788, 9794, 9804, + /*9804*/ uint16(xSetOp), uint16(CMP), + /*9806*/ uint16(xReadIb), + /*9807*/ uint16(xArgRM64), + /*9808*/ uint16(xArgImm8), /*9809*/ uint16(xMatch), /*9810*/ uint16(xSetOp), uint16(TEST), /*9812*/ uint16(xReadSlashR), - /*9813*/ uint16(xArgRM32), - /*9814*/ uint16(xArgR32), + /*9813*/ uint16(xArgRM8), + /*9814*/ uint16(xArgR8), /*9815*/ uint16(xMatch), - /*9816*/ uint16(xCondDataSize), 9804, 9810, 9820, - /*9820*/ uint16(xSetOp), uint16(TEST), - /*9822*/ uint16(xReadSlashR), - /*9823*/ uint16(xArgRM64), - /*9824*/ uint16(xArgR64), - /*9825*/ uint16(xMatch), - /*9826*/ uint16(xSetOp), uint16(XCHG), - /*9828*/ uint16(xReadSlashR), - /*9829*/ uint16(xArgRM8), - /*9830*/ uint16(xArgR8), - /*9831*/ uint16(xMatch), - /*9832*/ uint16(xCondIs64), 9835, 9851, - /*9835*/ uint16(xCondDataSize), 9839, 9845, 0, - /*9839*/ uint16(xSetOp), uint16(XCHG), + /*9816*/ uint16(xCondIs64), 9819, 9835, + /*9819*/ uint16(xCondDataSize), 9823, 9829, 0, + /*9823*/ uint16(xSetOp), uint16(TEST), + /*9825*/ uint16(xReadSlashR), + /*9826*/ uint16(xArgRM16), + /*9827*/ uint16(xArgR16), + /*9828*/ uint16(xMatch), + /*9829*/ uint16(xSetOp), uint16(TEST), + /*9831*/ uint16(xReadSlashR), + /*9832*/ uint16(xArgRM32), + /*9833*/ uint16(xArgR32), + /*9834*/ uint16(xMatch), + /*9835*/ uint16(xCondDataSize), 9823, 9829, 9839, + /*9839*/ uint16(xSetOp), uint16(TEST), /*9841*/ uint16(xReadSlashR), - /*9842*/ uint16(xArgRM16), - /*9843*/ uint16(xArgR16), + /*9842*/ uint16(xArgRM64), + /*9843*/ uint16(xArgR64), /*9844*/ uint16(xMatch), /*9845*/ uint16(xSetOp), uint16(XCHG), /*9847*/ uint16(xReadSlashR), - /*9848*/ uint16(xArgRM32), - /*9849*/ uint16(xArgR32), + /*9848*/ uint16(xArgRM8), + /*9849*/ uint16(xArgR8), /*9850*/ uint16(xMatch), - /*9851*/ uint16(xCondDataSize), 9839, 9845, 9855, - /*9855*/ uint16(xSetOp), uint16(XCHG), - /*9857*/ uint16(xReadSlashR), - /*9858*/ uint16(xArgRM64), - /*9859*/ uint16(xArgR64), - /*9860*/ uint16(xMatch), - /*9861*/ uint16(xSetOp), uint16(MOV), - /*9863*/ uint16(xReadSlashR), - /*9864*/ uint16(xArgRM8), - /*9865*/ uint16(xArgR8), - /*9866*/ uint16(xMatch), - /*9867*/ uint16(xCondDataSize), 9871, 9877, 9883, - /*9871*/ uint16(xSetOp), uint16(MOV), - /*9873*/ uint16(xReadSlashR), - /*9874*/ uint16(xArgRM16), - /*9875*/ uint16(xArgR16), - /*9876*/ uint16(xMatch), - /*9877*/ uint16(xSetOp), uint16(MOV), - /*9879*/ uint16(xReadSlashR), - /*9880*/ uint16(xArgRM32), - /*9881*/ uint16(xArgR32), - /*9882*/ uint16(xMatch), - /*9883*/ uint16(xSetOp), uint16(MOV), - /*9885*/ uint16(xReadSlashR), - /*9886*/ uint16(xArgRM64), - /*9887*/ uint16(xArgR64), - /*9888*/ uint16(xMatch), - /*9889*/ uint16(xSetOp), uint16(MOV), - /*9891*/ uint16(xReadSlashR), - /*9892*/ uint16(xArgR8), - /*9893*/ uint16(xArgRM8), - /*9894*/ uint16(xMatch), - /*9895*/ uint16(xCondDataSize), 9899, 9905, 9911, - /*9899*/ uint16(xSetOp), uint16(MOV), - /*9901*/ uint16(xReadSlashR), - /*9902*/ uint16(xArgR16), - /*9903*/ uint16(xArgRM16), - /*9904*/ uint16(xMatch), - /*9905*/ uint16(xSetOp), uint16(MOV), - /*9907*/ uint16(xReadSlashR), - /*9908*/ uint16(xArgR32), - /*9909*/ uint16(xArgRM32), - /*9910*/ uint16(xMatch), - /*9911*/ uint16(xSetOp), uint16(MOV), - /*9913*/ uint16(xReadSlashR), - /*9914*/ uint16(xArgR64), - /*9915*/ uint16(xArgRM64), - /*9916*/ uint16(xMatch), - /*9917*/ uint16(xCondIs64), 9920, 9936, - /*9920*/ uint16(xCondDataSize), 9924, 9930, 0, + /*9851*/ uint16(xCondIs64), 9854, 9870, + /*9854*/ uint16(xCondDataSize), 9858, 9864, 0, + /*9858*/ uint16(xSetOp), uint16(XCHG), + /*9860*/ uint16(xReadSlashR), + /*9861*/ uint16(xArgRM16), + /*9862*/ uint16(xArgR16), + /*9863*/ uint16(xMatch), + /*9864*/ uint16(xSetOp), uint16(XCHG), + /*9866*/ uint16(xReadSlashR), + /*9867*/ uint16(xArgRM32), + /*9868*/ uint16(xArgR32), + /*9869*/ uint16(xMatch), + /*9870*/ uint16(xCondDataSize), 9858, 9864, 9874, + /*9874*/ uint16(xSetOp), uint16(XCHG), + /*9876*/ uint16(xReadSlashR), + /*9877*/ uint16(xArgRM64), + /*9878*/ uint16(xArgR64), + /*9879*/ uint16(xMatch), + /*9880*/ uint16(xSetOp), uint16(MOV), + /*9882*/ uint16(xReadSlashR), + /*9883*/ uint16(xArgRM8), + /*9884*/ uint16(xArgR8), + /*9885*/ uint16(xMatch), + /*9886*/ uint16(xCondDataSize), 9890, 9896, 9902, + /*9890*/ uint16(xSetOp), uint16(MOV), + /*9892*/ uint16(xReadSlashR), + /*9893*/ uint16(xArgRM16), + /*9894*/ uint16(xArgR16), + /*9895*/ uint16(xMatch), + /*9896*/ uint16(xSetOp), uint16(MOV), + /*9898*/ uint16(xReadSlashR), + /*9899*/ uint16(xArgRM32), + /*9900*/ uint16(xArgR32), + /*9901*/ uint16(xMatch), + /*9902*/ uint16(xSetOp), uint16(MOV), + /*9904*/ uint16(xReadSlashR), + /*9905*/ uint16(xArgRM64), + /*9906*/ uint16(xArgR64), + /*9907*/ uint16(xMatch), + /*9908*/ uint16(xSetOp), uint16(MOV), + /*9910*/ uint16(xReadSlashR), + /*9911*/ uint16(xArgR8), + /*9912*/ uint16(xArgRM8), + /*9913*/ uint16(xMatch), + /*9914*/ uint16(xCondDataSize), 9918, 9924, 9930, + /*9918*/ uint16(xSetOp), uint16(MOV), + /*9920*/ uint16(xReadSlashR), + /*9921*/ uint16(xArgR16), + /*9922*/ uint16(xArgRM16), + /*9923*/ uint16(xMatch), /*9924*/ uint16(xSetOp), uint16(MOV), /*9926*/ uint16(xReadSlashR), - /*9927*/ uint16(xArgRM16), - /*9928*/ uint16(xArgSreg), + /*9927*/ uint16(xArgR32), + /*9928*/ uint16(xArgRM32), /*9929*/ uint16(xMatch), /*9930*/ uint16(xSetOp), uint16(MOV), /*9932*/ uint16(xReadSlashR), - /*9933*/ uint16(xArgR32M16), - /*9934*/ uint16(xArgSreg), + /*9933*/ uint16(xArgR64), + /*9934*/ uint16(xArgRM64), /*9935*/ uint16(xMatch), - /*9936*/ uint16(xCondDataSize), 9924, 9930, 9940, - /*9940*/ uint16(xSetOp), uint16(MOV), - /*9942*/ uint16(xReadSlashR), - /*9943*/ uint16(xArgR64M16), - /*9944*/ uint16(xArgSreg), - /*9945*/ uint16(xMatch), - /*9946*/ uint16(xCondIs64), 9949, 9965, - /*9949*/ uint16(xCondDataSize), 9953, 9959, 0, - /*9953*/ uint16(xSetOp), uint16(LEA), - /*9955*/ uint16(xReadSlashR), - /*9956*/ uint16(xArgR16), - /*9957*/ uint16(xArgM), - /*9958*/ uint16(xMatch), - /*9959*/ uint16(xSetOp), uint16(LEA), + /*9936*/ uint16(xCondIs64), 9939, 9955, + /*9939*/ uint16(xCondDataSize), 9943, 9949, 0, + /*9943*/ uint16(xSetOp), uint16(MOV), + /*9945*/ uint16(xReadSlashR), + /*9946*/ uint16(xArgRM16), + /*9947*/ uint16(xArgSreg), + /*9948*/ uint16(xMatch), + /*9949*/ uint16(xSetOp), uint16(MOV), + /*9951*/ uint16(xReadSlashR), + /*9952*/ uint16(xArgR32M16), + /*9953*/ uint16(xArgSreg), + /*9954*/ uint16(xMatch), + /*9955*/ uint16(xCondDataSize), 9943, 9949, 9959, + /*9959*/ uint16(xSetOp), uint16(MOV), /*9961*/ uint16(xReadSlashR), - /*9962*/ uint16(xArgR32), - /*9963*/ uint16(xArgM), + /*9962*/ uint16(xArgR64M16), + /*9963*/ uint16(xArgSreg), /*9964*/ uint16(xMatch), - /*9965*/ uint16(xCondDataSize), 9953, 9959, 9969, - /*9969*/ uint16(xSetOp), uint16(LEA), - /*9971*/ uint16(xReadSlashR), - /*9972*/ uint16(xArgR64), - /*9973*/ uint16(xArgM), - /*9974*/ uint16(xMatch), - /*9975*/ uint16(xCondIs64), 9978, 9994, - /*9978*/ uint16(xCondDataSize), 9982, 9988, 0, - /*9982*/ uint16(xSetOp), uint16(MOV), - /*9984*/ uint16(xReadSlashR), - /*9985*/ uint16(xArgSreg), - /*9986*/ uint16(xArgRM16), - /*9987*/ uint16(xMatch), - /*9988*/ uint16(xSetOp), uint16(MOV), + /*9965*/ uint16(xCondIs64), 9968, 9984, + /*9968*/ uint16(xCondDataSize), 9972, 9978, 0, + /*9972*/ uint16(xSetOp), uint16(LEA), + /*9974*/ uint16(xReadSlashR), + /*9975*/ uint16(xArgR16), + /*9976*/ uint16(xArgM), + /*9977*/ uint16(xMatch), + /*9978*/ uint16(xSetOp), uint16(LEA), + /*9980*/ uint16(xReadSlashR), + /*9981*/ uint16(xArgR32), + /*9982*/ uint16(xArgM), + /*9983*/ uint16(xMatch), + /*9984*/ uint16(xCondDataSize), 9972, 9978, 9988, + /*9988*/ uint16(xSetOp), uint16(LEA), /*9990*/ uint16(xReadSlashR), - /*9991*/ uint16(xArgSreg), - /*9992*/ uint16(xArgR32M16), + /*9991*/ uint16(xArgR64), + /*9992*/ uint16(xArgM), /*9993*/ uint16(xMatch), - /*9994*/ uint16(xCondDataSize), 9982, 9988, 9998, - /*9998*/ uint16(xSetOp), uint16(MOV), - /*10000*/ uint16(xReadSlashR), - /*10001*/ uint16(xArgSreg), - /*10002*/ uint16(xArgR64M16), - /*10003*/ uint16(xMatch), - /*10004*/ uint16(xCondSlashR), - 10013, // 0 + /*9994*/ uint16(xCondIs64), 9997, 10013, + /*9997*/ uint16(xCondDataSize), 10001, 10007, 0, + /*10001*/ uint16(xSetOp), uint16(MOV), + /*10003*/ uint16(xReadSlashR), + /*10004*/ uint16(xArgSreg), + /*10005*/ uint16(xArgRM16), + /*10006*/ uint16(xMatch), + /*10007*/ uint16(xSetOp), uint16(MOV), + /*10009*/ uint16(xReadSlashR), + /*10010*/ uint16(xArgSreg), + /*10011*/ uint16(xArgR32M16), + /*10012*/ uint16(xMatch), + /*10013*/ uint16(xCondDataSize), 10001, 10007, 10017, + /*10017*/ uint16(xSetOp), uint16(MOV), + /*10019*/ uint16(xReadSlashR), + /*10020*/ uint16(xArgSreg), + /*10021*/ uint16(xArgR64M16), + /*10022*/ uint16(xMatch), + /*10023*/ uint16(xCondSlashR), + 10032, // 0 0, // 1 0, // 2 0, // 3 @@ -6540,458 +6550,458 @@ var decoder = [...]uint16{ 0, // 5 0, // 6 0, // 7 - /*10013*/ uint16(xCondIs64), 10016, 10028, - /*10016*/ uint16(xCondDataSize), 10020, 10024, 0, - /*10020*/ uint16(xSetOp), uint16(POP), - /*10022*/ uint16(xArgRM16), - /*10023*/ uint16(xMatch), - /*10024*/ uint16(xSetOp), uint16(POP), - /*10026*/ uint16(xArgRM32), - /*10027*/ uint16(xMatch), - /*10028*/ uint16(xCondDataSize), 10020, 10032, 10036, - /*10032*/ uint16(xSetOp), uint16(POP), - /*10034*/ uint16(xArgRM64), - /*10035*/ uint16(xMatch), - /*10036*/ uint16(xSetOp), uint16(POP), - /*10038*/ uint16(xArgRM64), - /*10039*/ uint16(xMatch), - /*10040*/ uint16(xCondIs64), 10043, 10057, - /*10043*/ uint16(xCondDataSize), 10047, 10052, 0, - /*10047*/ uint16(xSetOp), uint16(XCHG), - /*10049*/ uint16(xArgR16op), - /*10050*/ uint16(xArgAX), - /*10051*/ uint16(xMatch), - /*10052*/ uint16(xSetOp), uint16(XCHG), - /*10054*/ uint16(xArgR32op), - /*10055*/ uint16(xArgEAX), - /*10056*/ uint16(xMatch), - /*10057*/ uint16(xCondDataSize), 10047, 10052, 10061, - /*10061*/ uint16(xSetOp), uint16(XCHG), - /*10063*/ uint16(xArgR64op), - /*10064*/ uint16(xArgRAX), - /*10065*/ uint16(xMatch), - /*10066*/ uint16(xCondIs64), 10069, 10079, - /*10069*/ uint16(xCondDataSize), 10073, 10076, 0, - /*10073*/ uint16(xSetOp), uint16(CBW), + /*10032*/ uint16(xCondIs64), 10035, 10047, + /*10035*/ uint16(xCondDataSize), 10039, 10043, 0, + /*10039*/ uint16(xSetOp), uint16(POP), + /*10041*/ uint16(xArgRM16), + /*10042*/ uint16(xMatch), + /*10043*/ uint16(xSetOp), uint16(POP), + /*10045*/ uint16(xArgRM32), + /*10046*/ uint16(xMatch), + /*10047*/ uint16(xCondDataSize), 10039, 10051, 10055, + /*10051*/ uint16(xSetOp), uint16(POP), + /*10053*/ uint16(xArgRM64), + /*10054*/ uint16(xMatch), + /*10055*/ uint16(xSetOp), uint16(POP), + /*10057*/ uint16(xArgRM64), + /*10058*/ uint16(xMatch), + /*10059*/ uint16(xCondIs64), 10062, 10076, + /*10062*/ uint16(xCondDataSize), 10066, 10071, 0, + /*10066*/ uint16(xSetOp), uint16(XCHG), + /*10068*/ uint16(xArgR16op), + /*10069*/ uint16(xArgAX), + /*10070*/ uint16(xMatch), + /*10071*/ uint16(xSetOp), uint16(XCHG), + /*10073*/ uint16(xArgR32op), + /*10074*/ uint16(xArgEAX), /*10075*/ uint16(xMatch), - /*10076*/ uint16(xSetOp), uint16(CWDE), - /*10078*/ uint16(xMatch), - /*10079*/ uint16(xCondDataSize), 10073, 10076, 10083, - /*10083*/ uint16(xSetOp), uint16(CDQE), - /*10085*/ uint16(xMatch), - /*10086*/ uint16(xCondIs64), 10089, 10099, - /*10089*/ uint16(xCondDataSize), 10093, 10096, 0, - /*10093*/ uint16(xSetOp), uint16(CWD), - /*10095*/ uint16(xMatch), - /*10096*/ uint16(xSetOp), uint16(CDQ), - /*10098*/ uint16(xMatch), - /*10099*/ uint16(xCondDataSize), 10093, 10096, 10103, - /*10103*/ uint16(xSetOp), uint16(CQO), - /*10105*/ uint16(xMatch), - /*10106*/ uint16(xCondIs64), 10109, 0, - /*10109*/ uint16(xCondDataSize), 10113, 10118, 0, - /*10113*/ uint16(xSetOp), uint16(LCALL), - /*10115*/ uint16(xReadCd), - /*10116*/ uint16(xArgPtr16colon16), + /*10076*/ uint16(xCondDataSize), 10066, 10071, 10080, + /*10080*/ uint16(xSetOp), uint16(XCHG), + /*10082*/ uint16(xArgR64op), + /*10083*/ uint16(xArgRAX), + /*10084*/ uint16(xMatch), + /*10085*/ uint16(xCondIs64), 10088, 10098, + /*10088*/ uint16(xCondDataSize), 10092, 10095, 0, + /*10092*/ uint16(xSetOp), uint16(CBW), + /*10094*/ uint16(xMatch), + /*10095*/ uint16(xSetOp), uint16(CWDE), + /*10097*/ uint16(xMatch), + /*10098*/ uint16(xCondDataSize), 10092, 10095, 10102, + /*10102*/ uint16(xSetOp), uint16(CDQE), + /*10104*/ uint16(xMatch), + /*10105*/ uint16(xCondIs64), 10108, 10118, + /*10108*/ uint16(xCondDataSize), 10112, 10115, 0, + /*10112*/ uint16(xSetOp), uint16(CWD), + /*10114*/ uint16(xMatch), + /*10115*/ uint16(xSetOp), uint16(CDQ), /*10117*/ uint16(xMatch), - /*10118*/ uint16(xSetOp), uint16(LCALL), - /*10120*/ uint16(xReadCp), - /*10121*/ uint16(xArgPtr16colon32), - /*10122*/ uint16(xMatch), - /*10123*/ uint16(xSetOp), uint16(FWAIT), - /*10125*/ uint16(xMatch), - /*10126*/ uint16(xCondIs64), 10129, 10139, - /*10129*/ uint16(xCondDataSize), 10133, 10136, 0, - /*10133*/ uint16(xSetOp), uint16(PUSHF), - /*10135*/ uint16(xMatch), - /*10136*/ uint16(xSetOp), uint16(PUSHFD), - /*10138*/ uint16(xMatch), - /*10139*/ uint16(xCondDataSize), 10133, 10143, 10146, - /*10143*/ uint16(xSetOp), uint16(PUSHFQ), - /*10145*/ uint16(xMatch), - /*10146*/ uint16(xSetOp), uint16(PUSHFQ), - /*10148*/ uint16(xMatch), - /*10149*/ uint16(xCondIs64), 10152, 10162, - /*10152*/ uint16(xCondDataSize), 10156, 10159, 0, - /*10156*/ uint16(xSetOp), uint16(POPF), - /*10158*/ uint16(xMatch), - /*10159*/ uint16(xSetOp), uint16(POPFD), - /*10161*/ uint16(xMatch), - /*10162*/ uint16(xCondDataSize), 10156, 10166, 10169, - /*10166*/ uint16(xSetOp), uint16(POPFQ), - /*10168*/ uint16(xMatch), - /*10169*/ uint16(xSetOp), uint16(POPFQ), - /*10171*/ uint16(xMatch), - /*10172*/ uint16(xSetOp), uint16(SAHF), - /*10174*/ uint16(xMatch), - /*10175*/ uint16(xSetOp), uint16(LAHF), + /*10118*/ uint16(xCondDataSize), 10112, 10115, 10122, + /*10122*/ uint16(xSetOp), uint16(CQO), + /*10124*/ uint16(xMatch), + /*10125*/ uint16(xCondIs64), 10128, 0, + /*10128*/ uint16(xCondDataSize), 10132, 10137, 0, + /*10132*/ uint16(xSetOp), uint16(LCALL), + /*10134*/ uint16(xReadCd), + /*10135*/ uint16(xArgPtr16colon16), + /*10136*/ uint16(xMatch), + /*10137*/ uint16(xSetOp), uint16(LCALL), + /*10139*/ uint16(xReadCp), + /*10140*/ uint16(xArgPtr16colon32), + /*10141*/ uint16(xMatch), + /*10142*/ uint16(xSetOp), uint16(FWAIT), + /*10144*/ uint16(xMatch), + /*10145*/ uint16(xCondIs64), 10148, 10158, + /*10148*/ uint16(xCondDataSize), 10152, 10155, 0, + /*10152*/ uint16(xSetOp), uint16(PUSHF), + /*10154*/ uint16(xMatch), + /*10155*/ uint16(xSetOp), uint16(PUSHFD), + /*10157*/ uint16(xMatch), + /*10158*/ uint16(xCondDataSize), 10152, 10162, 10165, + /*10162*/ uint16(xSetOp), uint16(PUSHFQ), + /*10164*/ uint16(xMatch), + /*10165*/ uint16(xSetOp), uint16(PUSHFQ), + /*10167*/ uint16(xMatch), + /*10168*/ uint16(xCondIs64), 10171, 10181, + /*10171*/ uint16(xCondDataSize), 10175, 10178, 0, + /*10175*/ uint16(xSetOp), uint16(POPF), /*10177*/ uint16(xMatch), - /*10178*/ uint16(xCondIs64), 10181, 10187, - /*10181*/ uint16(xSetOp), uint16(MOV), - /*10183*/ uint16(xReadCm), - /*10184*/ uint16(xArgAL), - /*10185*/ uint16(xArgMoffs8), - /*10186*/ uint16(xMatch), - /*10187*/ uint16(xCondDataSize), 10181, 10181, 10191, - /*10191*/ uint16(xSetOp), uint16(MOV), - /*10193*/ uint16(xReadCm), - /*10194*/ uint16(xArgAL), - /*10195*/ uint16(xArgMoffs8), + /*10178*/ uint16(xSetOp), uint16(POPFD), + /*10180*/ uint16(xMatch), + /*10181*/ uint16(xCondDataSize), 10175, 10185, 10188, + /*10185*/ uint16(xSetOp), uint16(POPFQ), + /*10187*/ uint16(xMatch), + /*10188*/ uint16(xSetOp), uint16(POPFQ), + /*10190*/ uint16(xMatch), + /*10191*/ uint16(xSetOp), uint16(SAHF), + /*10193*/ uint16(xMatch), + /*10194*/ uint16(xSetOp), uint16(LAHF), /*10196*/ uint16(xMatch), - /*10197*/ uint16(xCondDataSize), 10201, 10207, 10213, - /*10201*/ uint16(xSetOp), uint16(MOV), - /*10203*/ uint16(xReadCm), - /*10204*/ uint16(xArgAX), - /*10205*/ uint16(xArgMoffs16), - /*10206*/ uint16(xMatch), - /*10207*/ uint16(xSetOp), uint16(MOV), - /*10209*/ uint16(xReadCm), - /*10210*/ uint16(xArgEAX), - /*10211*/ uint16(xArgMoffs32), - /*10212*/ uint16(xMatch), - /*10213*/ uint16(xSetOp), uint16(MOV), - /*10215*/ uint16(xReadCm), - /*10216*/ uint16(xArgRAX), - /*10217*/ uint16(xArgMoffs64), - /*10218*/ uint16(xMatch), - /*10219*/ uint16(xCondIs64), 10222, 10228, - /*10222*/ uint16(xSetOp), uint16(MOV), - /*10224*/ uint16(xReadCm), - /*10225*/ uint16(xArgMoffs8), - /*10226*/ uint16(xArgAL), - /*10227*/ uint16(xMatch), - /*10228*/ uint16(xCondDataSize), 10222, 10222, 10232, + /*10197*/ uint16(xCondIs64), 10200, 10206, + /*10200*/ uint16(xSetOp), uint16(MOV), + /*10202*/ uint16(xReadCm), + /*10203*/ uint16(xArgAL), + /*10204*/ uint16(xArgMoffs8), + /*10205*/ uint16(xMatch), + /*10206*/ uint16(xCondDataSize), 10200, 10200, 10210, + /*10210*/ uint16(xSetOp), uint16(MOV), + /*10212*/ uint16(xReadCm), + /*10213*/ uint16(xArgAL), + /*10214*/ uint16(xArgMoffs8), + /*10215*/ uint16(xMatch), + /*10216*/ uint16(xCondDataSize), 10220, 10226, 10232, + /*10220*/ uint16(xSetOp), uint16(MOV), + /*10222*/ uint16(xReadCm), + /*10223*/ uint16(xArgAX), + /*10224*/ uint16(xArgMoffs16), + /*10225*/ uint16(xMatch), + /*10226*/ uint16(xSetOp), uint16(MOV), + /*10228*/ uint16(xReadCm), + /*10229*/ uint16(xArgEAX), + /*10230*/ uint16(xArgMoffs32), + /*10231*/ uint16(xMatch), /*10232*/ uint16(xSetOp), uint16(MOV), /*10234*/ uint16(xReadCm), - /*10235*/ uint16(xArgMoffs8), - /*10236*/ uint16(xArgAL), + /*10235*/ uint16(xArgRAX), + /*10236*/ uint16(xArgMoffs64), /*10237*/ uint16(xMatch), - /*10238*/ uint16(xCondDataSize), 10242, 10248, 10254, - /*10242*/ uint16(xSetOp), uint16(MOV), - /*10244*/ uint16(xReadCm), - /*10245*/ uint16(xArgMoffs16), - /*10246*/ uint16(xArgAX), - /*10247*/ uint16(xMatch), - /*10248*/ uint16(xSetOp), uint16(MOV), - /*10250*/ uint16(xReadCm), - /*10251*/ uint16(xArgMoffs32), - /*10252*/ uint16(xArgEAX), - /*10253*/ uint16(xMatch), - /*10254*/ uint16(xSetOp), uint16(MOV), - /*10256*/ uint16(xReadCm), - /*10257*/ uint16(xArgMoffs64), - /*10258*/ uint16(xArgRAX), - /*10259*/ uint16(xMatch), - /*10260*/ uint16(xSetOp), uint16(MOVSB), - /*10262*/ uint16(xMatch), - /*10263*/ uint16(xCondIs64), 10266, 10276, - /*10266*/ uint16(xCondDataSize), 10270, 10273, 0, - /*10270*/ uint16(xSetOp), uint16(MOVSW), + /*10238*/ uint16(xCondIs64), 10241, 10247, + /*10241*/ uint16(xSetOp), uint16(MOV), + /*10243*/ uint16(xReadCm), + /*10244*/ uint16(xArgMoffs8), + /*10245*/ uint16(xArgAL), + /*10246*/ uint16(xMatch), + /*10247*/ uint16(xCondDataSize), 10241, 10241, 10251, + /*10251*/ uint16(xSetOp), uint16(MOV), + /*10253*/ uint16(xReadCm), + /*10254*/ uint16(xArgMoffs8), + /*10255*/ uint16(xArgAL), + /*10256*/ uint16(xMatch), + /*10257*/ uint16(xCondDataSize), 10261, 10267, 10273, + /*10261*/ uint16(xSetOp), uint16(MOV), + /*10263*/ uint16(xReadCm), + /*10264*/ uint16(xArgMoffs16), + /*10265*/ uint16(xArgAX), + /*10266*/ uint16(xMatch), + /*10267*/ uint16(xSetOp), uint16(MOV), + /*10269*/ uint16(xReadCm), + /*10270*/ uint16(xArgMoffs32), + /*10271*/ uint16(xArgEAX), /*10272*/ uint16(xMatch), - /*10273*/ uint16(xSetOp), uint16(MOVSD), - /*10275*/ uint16(xMatch), - /*10276*/ uint16(xCondDataSize), 10270, 10273, 10280, - /*10280*/ uint16(xSetOp), uint16(MOVSQ), - /*10282*/ uint16(xMatch), - /*10283*/ uint16(xSetOp), uint16(CMPSB), - /*10285*/ uint16(xMatch), - /*10286*/ uint16(xCondIs64), 10289, 10299, - /*10289*/ uint16(xCondDataSize), 10293, 10296, 0, - /*10293*/ uint16(xSetOp), uint16(CMPSW), - /*10295*/ uint16(xMatch), - /*10296*/ uint16(xSetOp), uint16(CMPSD), - /*10298*/ uint16(xMatch), - /*10299*/ uint16(xCondDataSize), 10293, 10296, 10303, - /*10303*/ uint16(xSetOp), uint16(CMPSQ), - /*10305*/ uint16(xMatch), - /*10306*/ uint16(xSetOp), uint16(TEST), - /*10308*/ uint16(xReadIb), - /*10309*/ uint16(xArgAL), - /*10310*/ uint16(xArgImm8u), - /*10311*/ uint16(xMatch), - /*10312*/ uint16(xCondIs64), 10315, 10331, - /*10315*/ uint16(xCondDataSize), 10319, 10325, 0, - /*10319*/ uint16(xSetOp), uint16(TEST), - /*10321*/ uint16(xReadIw), - /*10322*/ uint16(xArgAX), - /*10323*/ uint16(xArgImm16), + /*10273*/ uint16(xSetOp), uint16(MOV), + /*10275*/ uint16(xReadCm), + /*10276*/ uint16(xArgMoffs64), + /*10277*/ uint16(xArgRAX), + /*10278*/ uint16(xMatch), + /*10279*/ uint16(xSetOp), uint16(MOVSB), + /*10281*/ uint16(xMatch), + /*10282*/ uint16(xCondIs64), 10285, 10295, + /*10285*/ uint16(xCondDataSize), 10289, 10292, 0, + /*10289*/ uint16(xSetOp), uint16(MOVSW), + /*10291*/ uint16(xMatch), + /*10292*/ uint16(xSetOp), uint16(MOVSD), + /*10294*/ uint16(xMatch), + /*10295*/ uint16(xCondDataSize), 10289, 10292, 10299, + /*10299*/ uint16(xSetOp), uint16(MOVSQ), + /*10301*/ uint16(xMatch), + /*10302*/ uint16(xSetOp), uint16(CMPSB), + /*10304*/ uint16(xMatch), + /*10305*/ uint16(xCondIs64), 10308, 10318, + /*10308*/ uint16(xCondDataSize), 10312, 10315, 0, + /*10312*/ uint16(xSetOp), uint16(CMPSW), + /*10314*/ uint16(xMatch), + /*10315*/ uint16(xSetOp), uint16(CMPSD), + /*10317*/ uint16(xMatch), + /*10318*/ uint16(xCondDataSize), 10312, 10315, 10322, + /*10322*/ uint16(xSetOp), uint16(CMPSQ), /*10324*/ uint16(xMatch), /*10325*/ uint16(xSetOp), uint16(TEST), - /*10327*/ uint16(xReadId), - /*10328*/ uint16(xArgEAX), - /*10329*/ uint16(xArgImm32), + /*10327*/ uint16(xReadIb), + /*10328*/ uint16(xArgAL), + /*10329*/ uint16(xArgImm8u), /*10330*/ uint16(xMatch), - /*10331*/ uint16(xCondDataSize), 10319, 10325, 10335, - /*10335*/ uint16(xSetOp), uint16(TEST), - /*10337*/ uint16(xReadId), - /*10338*/ uint16(xArgRAX), - /*10339*/ uint16(xArgImm32), - /*10340*/ uint16(xMatch), - /*10341*/ uint16(xSetOp), uint16(STOSB), + /*10331*/ uint16(xCondIs64), 10334, 10350, + /*10334*/ uint16(xCondDataSize), 10338, 10344, 0, + /*10338*/ uint16(xSetOp), uint16(TEST), + /*10340*/ uint16(xReadIw), + /*10341*/ uint16(xArgAX), + /*10342*/ uint16(xArgImm16), /*10343*/ uint16(xMatch), - /*10344*/ uint16(xCondIs64), 10347, 10357, - /*10347*/ uint16(xCondDataSize), 10351, 10354, 0, - /*10351*/ uint16(xSetOp), uint16(STOSW), - /*10353*/ uint16(xMatch), - /*10354*/ uint16(xSetOp), uint16(STOSD), - /*10356*/ uint16(xMatch), - /*10357*/ uint16(xCondDataSize), 10351, 10354, 10361, - /*10361*/ uint16(xSetOp), uint16(STOSQ), - /*10363*/ uint16(xMatch), - /*10364*/ uint16(xSetOp), uint16(LODSB), - /*10366*/ uint16(xMatch), - /*10367*/ uint16(xCondIs64), 10370, 10380, - /*10370*/ uint16(xCondDataSize), 10374, 10377, 0, - /*10374*/ uint16(xSetOp), uint16(LODSW), - /*10376*/ uint16(xMatch), - /*10377*/ uint16(xSetOp), uint16(LODSD), - /*10379*/ uint16(xMatch), - /*10380*/ uint16(xCondDataSize), 10374, 10377, 10384, - /*10384*/ uint16(xSetOp), uint16(LODSQ), - /*10386*/ uint16(xMatch), - /*10387*/ uint16(xSetOp), uint16(SCASB), - /*10389*/ uint16(xMatch), - /*10390*/ uint16(xCondIs64), 10393, 10403, - /*10393*/ uint16(xCondDataSize), 10397, 10400, 0, - /*10397*/ uint16(xSetOp), uint16(SCASW), - /*10399*/ uint16(xMatch), - /*10400*/ uint16(xSetOp), uint16(SCASD), - /*10402*/ uint16(xMatch), - /*10403*/ uint16(xCondDataSize), 10397, 10400, 10407, - /*10407*/ uint16(xSetOp), uint16(SCASQ), - /*10409*/ uint16(xMatch), - /*10410*/ uint16(xSetOp), uint16(MOV), - /*10412*/ uint16(xReadIb), - /*10413*/ uint16(xArgR8op), - /*10414*/ uint16(xArgImm8u), - /*10415*/ uint16(xMatch), - /*10416*/ uint16(xCondIs64), 10419, 10435, - /*10419*/ uint16(xCondDataSize), 10423, 10429, 0, - /*10423*/ uint16(xSetOp), uint16(MOV), - /*10425*/ uint16(xReadIw), - /*10426*/ uint16(xArgR16op), - /*10427*/ uint16(xArgImm16), + /*10344*/ uint16(xSetOp), uint16(TEST), + /*10346*/ uint16(xReadId), + /*10347*/ uint16(xArgEAX), + /*10348*/ uint16(xArgImm32), + /*10349*/ uint16(xMatch), + /*10350*/ uint16(xCondDataSize), 10338, 10344, 10354, + /*10354*/ uint16(xSetOp), uint16(TEST), + /*10356*/ uint16(xReadId), + /*10357*/ uint16(xArgRAX), + /*10358*/ uint16(xArgImm32), + /*10359*/ uint16(xMatch), + /*10360*/ uint16(xSetOp), uint16(STOSB), + /*10362*/ uint16(xMatch), + /*10363*/ uint16(xCondIs64), 10366, 10376, + /*10366*/ uint16(xCondDataSize), 10370, 10373, 0, + /*10370*/ uint16(xSetOp), uint16(STOSW), + /*10372*/ uint16(xMatch), + /*10373*/ uint16(xSetOp), uint16(STOSD), + /*10375*/ uint16(xMatch), + /*10376*/ uint16(xCondDataSize), 10370, 10373, 10380, + /*10380*/ uint16(xSetOp), uint16(STOSQ), + /*10382*/ uint16(xMatch), + /*10383*/ uint16(xSetOp), uint16(LODSB), + /*10385*/ uint16(xMatch), + /*10386*/ uint16(xCondIs64), 10389, 10399, + /*10389*/ uint16(xCondDataSize), 10393, 10396, 0, + /*10393*/ uint16(xSetOp), uint16(LODSW), + /*10395*/ uint16(xMatch), + /*10396*/ uint16(xSetOp), uint16(LODSD), + /*10398*/ uint16(xMatch), + /*10399*/ uint16(xCondDataSize), 10393, 10396, 10403, + /*10403*/ uint16(xSetOp), uint16(LODSQ), + /*10405*/ uint16(xMatch), + /*10406*/ uint16(xSetOp), uint16(SCASB), + /*10408*/ uint16(xMatch), + /*10409*/ uint16(xCondIs64), 10412, 10422, + /*10412*/ uint16(xCondDataSize), 10416, 10419, 0, + /*10416*/ uint16(xSetOp), uint16(SCASW), + /*10418*/ uint16(xMatch), + /*10419*/ uint16(xSetOp), uint16(SCASD), + /*10421*/ uint16(xMatch), + /*10422*/ uint16(xCondDataSize), 10416, 10419, 10426, + /*10426*/ uint16(xSetOp), uint16(SCASQ), /*10428*/ uint16(xMatch), /*10429*/ uint16(xSetOp), uint16(MOV), - /*10431*/ uint16(xReadId), - /*10432*/ uint16(xArgR32op), - /*10433*/ uint16(xArgImm32), + /*10431*/ uint16(xReadIb), + /*10432*/ uint16(xArgR8op), + /*10433*/ uint16(xArgImm8u), /*10434*/ uint16(xMatch), - /*10435*/ uint16(xCondDataSize), 10423, 10429, 10439, - /*10439*/ uint16(xSetOp), uint16(MOV), - /*10441*/ uint16(xReadIo), - /*10442*/ uint16(xArgR64op), - /*10443*/ uint16(xArgImm64), - /*10444*/ uint16(xMatch), - /*10445*/ uint16(xCondSlashR), - 10454, // 0 - 10460, // 1 - 10466, // 2 - 10472, // 3 - 10478, // 4 - 10484, // 5 + /*10435*/ uint16(xCondIs64), 10438, 10454, + /*10438*/ uint16(xCondDataSize), 10442, 10448, 0, + /*10442*/ uint16(xSetOp), uint16(MOV), + /*10444*/ uint16(xReadIw), + /*10445*/ uint16(xArgR16op), + /*10446*/ uint16(xArgImm16), + /*10447*/ uint16(xMatch), + /*10448*/ uint16(xSetOp), uint16(MOV), + /*10450*/ uint16(xReadId), + /*10451*/ uint16(xArgR32op), + /*10452*/ uint16(xArgImm32), + /*10453*/ uint16(xMatch), + /*10454*/ uint16(xCondDataSize), 10442, 10448, 10458, + /*10458*/ uint16(xSetOp), uint16(MOV), + /*10460*/ uint16(xReadIo), + /*10461*/ uint16(xArgR64op), + /*10462*/ uint16(xArgImm64), + /*10463*/ uint16(xMatch), + /*10464*/ uint16(xCondSlashR), + 10473, // 0 + 10479, // 1 + 10485, // 2 + 10491, // 3 + 10497, // 4 + 10503, // 5 0, // 6 - 10490, // 7 - /*10454*/ uint16(xSetOp), uint16(ROL), - /*10456*/ uint16(xReadIb), - /*10457*/ uint16(xArgRM8), - /*10458*/ uint16(xArgImm8u), - /*10459*/ uint16(xMatch), - /*10460*/ uint16(xSetOp), uint16(ROR), - /*10462*/ uint16(xReadIb), - /*10463*/ uint16(xArgRM8), - /*10464*/ uint16(xArgImm8u), - /*10465*/ uint16(xMatch), - /*10466*/ uint16(xSetOp), uint16(RCL), - /*10468*/ uint16(xReadIb), - /*10469*/ uint16(xArgRM8), - /*10470*/ uint16(xArgImm8u), - /*10471*/ uint16(xMatch), - /*10472*/ uint16(xSetOp), uint16(RCR), - /*10474*/ uint16(xReadIb), - /*10475*/ uint16(xArgRM8), - /*10476*/ uint16(xArgImm8u), - /*10477*/ uint16(xMatch), - /*10478*/ uint16(xSetOp), uint16(SHL), - /*10480*/ uint16(xReadIb), - /*10481*/ uint16(xArgRM8), - /*10482*/ uint16(xArgImm8u), - /*10483*/ uint16(xMatch), - /*10484*/ uint16(xSetOp), uint16(SHR), - /*10486*/ uint16(xReadIb), - /*10487*/ uint16(xArgRM8), - /*10488*/ uint16(xArgImm8u), - /*10489*/ uint16(xMatch), - /*10490*/ uint16(xSetOp), uint16(SAR), - /*10492*/ uint16(xReadIb), - /*10493*/ uint16(xArgRM8), - /*10494*/ uint16(xArgImm8u), - /*10495*/ uint16(xMatch), - /*10496*/ uint16(xCondSlashR), - 10505, // 0 - 10527, // 1 - 10549, // 2 - 10578, // 3 - 10607, // 4 - 10636, // 5 - 0, // 6 - 10665, // 7 - /*10505*/ uint16(xCondDataSize), 10509, 10515, 10521, - /*10509*/ uint16(xSetOp), uint16(ROL), + 10509, // 7 + /*10473*/ uint16(xSetOp), uint16(ROL), + /*10475*/ uint16(xReadIb), + /*10476*/ uint16(xArgRM8), + /*10477*/ uint16(xArgImm8u), + /*10478*/ uint16(xMatch), + /*10479*/ uint16(xSetOp), uint16(ROR), + /*10481*/ uint16(xReadIb), + /*10482*/ uint16(xArgRM8), + /*10483*/ uint16(xArgImm8u), + /*10484*/ uint16(xMatch), + /*10485*/ uint16(xSetOp), uint16(RCL), + /*10487*/ uint16(xReadIb), + /*10488*/ uint16(xArgRM8), + /*10489*/ uint16(xArgImm8u), + /*10490*/ uint16(xMatch), + /*10491*/ uint16(xSetOp), uint16(RCR), + /*10493*/ uint16(xReadIb), + /*10494*/ uint16(xArgRM8), + /*10495*/ uint16(xArgImm8u), + /*10496*/ uint16(xMatch), + /*10497*/ uint16(xSetOp), uint16(SHL), + /*10499*/ uint16(xReadIb), + /*10500*/ uint16(xArgRM8), + /*10501*/ uint16(xArgImm8u), + /*10502*/ uint16(xMatch), + /*10503*/ uint16(xSetOp), uint16(SHR), + /*10505*/ uint16(xReadIb), + /*10506*/ uint16(xArgRM8), + /*10507*/ uint16(xArgImm8u), + /*10508*/ uint16(xMatch), + /*10509*/ uint16(xSetOp), uint16(SAR), /*10511*/ uint16(xReadIb), - /*10512*/ uint16(xArgRM16), + /*10512*/ uint16(xArgRM8), /*10513*/ uint16(xArgImm8u), /*10514*/ uint16(xMatch), - /*10515*/ uint16(xSetOp), uint16(ROL), - /*10517*/ uint16(xReadIb), - /*10518*/ uint16(xArgRM32), - /*10519*/ uint16(xArgImm8u), - /*10520*/ uint16(xMatch), - /*10521*/ uint16(xSetOp), uint16(ROL), - /*10523*/ uint16(xReadIb), - /*10524*/ uint16(xArgRM64), - /*10525*/ uint16(xArgImm8u), - /*10526*/ uint16(xMatch), - /*10527*/ uint16(xCondDataSize), 10531, 10537, 10543, - /*10531*/ uint16(xSetOp), uint16(ROR), - /*10533*/ uint16(xReadIb), - /*10534*/ uint16(xArgRM16), - /*10535*/ uint16(xArgImm8u), - /*10536*/ uint16(xMatch), - /*10537*/ uint16(xSetOp), uint16(ROR), - /*10539*/ uint16(xReadIb), - /*10540*/ uint16(xArgRM32), - /*10541*/ uint16(xArgImm8u), - /*10542*/ uint16(xMatch), - /*10543*/ uint16(xSetOp), uint16(ROR), - /*10545*/ uint16(xReadIb), - /*10546*/ uint16(xArgRM64), - /*10547*/ uint16(xArgImm8u), - /*10548*/ uint16(xMatch), - /*10549*/ uint16(xCondIs64), 10552, 10568, - /*10552*/ uint16(xCondDataSize), 10556, 10562, 0, - /*10556*/ uint16(xSetOp), uint16(RCL), + /*10515*/ uint16(xCondSlashR), + 10524, // 0 + 10546, // 1 + 10568, // 2 + 10597, // 3 + 10626, // 4 + 10655, // 5 + 0, // 6 + 10684, // 7 + /*10524*/ uint16(xCondDataSize), 10528, 10534, 10540, + /*10528*/ uint16(xSetOp), uint16(ROL), + /*10530*/ uint16(xReadIb), + /*10531*/ uint16(xArgRM16), + /*10532*/ uint16(xArgImm8u), + /*10533*/ uint16(xMatch), + /*10534*/ uint16(xSetOp), uint16(ROL), + /*10536*/ uint16(xReadIb), + /*10537*/ uint16(xArgRM32), + /*10538*/ uint16(xArgImm8u), + /*10539*/ uint16(xMatch), + /*10540*/ uint16(xSetOp), uint16(ROL), + /*10542*/ uint16(xReadIb), + /*10543*/ uint16(xArgRM64), + /*10544*/ uint16(xArgImm8u), + /*10545*/ uint16(xMatch), + /*10546*/ uint16(xCondDataSize), 10550, 10556, 10562, + /*10550*/ uint16(xSetOp), uint16(ROR), + /*10552*/ uint16(xReadIb), + /*10553*/ uint16(xArgRM16), + /*10554*/ uint16(xArgImm8u), + /*10555*/ uint16(xMatch), + /*10556*/ uint16(xSetOp), uint16(ROR), /*10558*/ uint16(xReadIb), - /*10559*/ uint16(xArgRM16), + /*10559*/ uint16(xArgRM32), /*10560*/ uint16(xArgImm8u), /*10561*/ uint16(xMatch), - /*10562*/ uint16(xSetOp), uint16(RCL), + /*10562*/ uint16(xSetOp), uint16(ROR), /*10564*/ uint16(xReadIb), - /*10565*/ uint16(xArgRM32), + /*10565*/ uint16(xArgRM64), /*10566*/ uint16(xArgImm8u), /*10567*/ uint16(xMatch), - /*10568*/ uint16(xCondDataSize), 10556, 10562, 10572, - /*10572*/ uint16(xSetOp), uint16(RCL), - /*10574*/ uint16(xReadIb), - /*10575*/ uint16(xArgRM64), - /*10576*/ uint16(xArgImm8u), - /*10577*/ uint16(xMatch), - /*10578*/ uint16(xCondIs64), 10581, 10597, - /*10581*/ uint16(xCondDataSize), 10585, 10591, 0, - /*10585*/ uint16(xSetOp), uint16(RCR), - /*10587*/ uint16(xReadIb), - /*10588*/ uint16(xArgRM16), - /*10589*/ uint16(xArgImm8u), - /*10590*/ uint16(xMatch), - /*10591*/ uint16(xSetOp), uint16(RCR), + /*10568*/ uint16(xCondIs64), 10571, 10587, + /*10571*/ uint16(xCondDataSize), 10575, 10581, 0, + /*10575*/ uint16(xSetOp), uint16(RCL), + /*10577*/ uint16(xReadIb), + /*10578*/ uint16(xArgRM16), + /*10579*/ uint16(xArgImm8u), + /*10580*/ uint16(xMatch), + /*10581*/ uint16(xSetOp), uint16(RCL), + /*10583*/ uint16(xReadIb), + /*10584*/ uint16(xArgRM32), + /*10585*/ uint16(xArgImm8u), + /*10586*/ uint16(xMatch), + /*10587*/ uint16(xCondDataSize), 10575, 10581, 10591, + /*10591*/ uint16(xSetOp), uint16(RCL), /*10593*/ uint16(xReadIb), - /*10594*/ uint16(xArgRM32), + /*10594*/ uint16(xArgRM64), /*10595*/ uint16(xArgImm8u), /*10596*/ uint16(xMatch), - /*10597*/ uint16(xCondDataSize), 10585, 10591, 10601, - /*10601*/ uint16(xSetOp), uint16(RCR), - /*10603*/ uint16(xReadIb), - /*10604*/ uint16(xArgRM64), - /*10605*/ uint16(xArgImm8u), - /*10606*/ uint16(xMatch), - /*10607*/ uint16(xCondIs64), 10610, 10626, - /*10610*/ uint16(xCondDataSize), 10614, 10620, 0, - /*10614*/ uint16(xSetOp), uint16(SHL), - /*10616*/ uint16(xReadIb), - /*10617*/ uint16(xArgRM16), - /*10618*/ uint16(xArgImm8u), - /*10619*/ uint16(xMatch), - /*10620*/ uint16(xSetOp), uint16(SHL), + /*10597*/ uint16(xCondIs64), 10600, 10616, + /*10600*/ uint16(xCondDataSize), 10604, 10610, 0, + /*10604*/ uint16(xSetOp), uint16(RCR), + /*10606*/ uint16(xReadIb), + /*10607*/ uint16(xArgRM16), + /*10608*/ uint16(xArgImm8u), + /*10609*/ uint16(xMatch), + /*10610*/ uint16(xSetOp), uint16(RCR), + /*10612*/ uint16(xReadIb), + /*10613*/ uint16(xArgRM32), + /*10614*/ uint16(xArgImm8u), + /*10615*/ uint16(xMatch), + /*10616*/ uint16(xCondDataSize), 10604, 10610, 10620, + /*10620*/ uint16(xSetOp), uint16(RCR), /*10622*/ uint16(xReadIb), - /*10623*/ uint16(xArgRM32), + /*10623*/ uint16(xArgRM64), /*10624*/ uint16(xArgImm8u), /*10625*/ uint16(xMatch), - /*10626*/ uint16(xCondDataSize), 10614, 10620, 10630, - /*10630*/ uint16(xSetOp), uint16(SHL), - /*10632*/ uint16(xReadIb), - /*10633*/ uint16(xArgRM64), - /*10634*/ uint16(xArgImm8u), - /*10635*/ uint16(xMatch), - /*10636*/ uint16(xCondIs64), 10639, 10655, - /*10639*/ uint16(xCondDataSize), 10643, 10649, 0, - /*10643*/ uint16(xSetOp), uint16(SHR), - /*10645*/ uint16(xReadIb), - /*10646*/ uint16(xArgRM16), - /*10647*/ uint16(xArgImm8u), - /*10648*/ uint16(xMatch), - /*10649*/ uint16(xSetOp), uint16(SHR), + /*10626*/ uint16(xCondIs64), 10629, 10645, + /*10629*/ uint16(xCondDataSize), 10633, 10639, 0, + /*10633*/ uint16(xSetOp), uint16(SHL), + /*10635*/ uint16(xReadIb), + /*10636*/ uint16(xArgRM16), + /*10637*/ uint16(xArgImm8u), + /*10638*/ uint16(xMatch), + /*10639*/ uint16(xSetOp), uint16(SHL), + /*10641*/ uint16(xReadIb), + /*10642*/ uint16(xArgRM32), + /*10643*/ uint16(xArgImm8u), + /*10644*/ uint16(xMatch), + /*10645*/ uint16(xCondDataSize), 10633, 10639, 10649, + /*10649*/ uint16(xSetOp), uint16(SHL), /*10651*/ uint16(xReadIb), - /*10652*/ uint16(xArgRM32), + /*10652*/ uint16(xArgRM64), /*10653*/ uint16(xArgImm8u), /*10654*/ uint16(xMatch), - /*10655*/ uint16(xCondDataSize), 10643, 10649, 10659, - /*10659*/ uint16(xSetOp), uint16(SHR), - /*10661*/ uint16(xReadIb), - /*10662*/ uint16(xArgRM64), - /*10663*/ uint16(xArgImm8u), - /*10664*/ uint16(xMatch), - /*10665*/ uint16(xCondIs64), 10668, 10684, - /*10668*/ uint16(xCondDataSize), 10672, 10678, 0, - /*10672*/ uint16(xSetOp), uint16(SAR), - /*10674*/ uint16(xReadIb), - /*10675*/ uint16(xArgRM16), - /*10676*/ uint16(xArgImm8u), - /*10677*/ uint16(xMatch), - /*10678*/ uint16(xSetOp), uint16(SAR), + /*10655*/ uint16(xCondIs64), 10658, 10674, + /*10658*/ uint16(xCondDataSize), 10662, 10668, 0, + /*10662*/ uint16(xSetOp), uint16(SHR), + /*10664*/ uint16(xReadIb), + /*10665*/ uint16(xArgRM16), + /*10666*/ uint16(xArgImm8u), + /*10667*/ uint16(xMatch), + /*10668*/ uint16(xSetOp), uint16(SHR), + /*10670*/ uint16(xReadIb), + /*10671*/ uint16(xArgRM32), + /*10672*/ uint16(xArgImm8u), + /*10673*/ uint16(xMatch), + /*10674*/ uint16(xCondDataSize), 10662, 10668, 10678, + /*10678*/ uint16(xSetOp), uint16(SHR), /*10680*/ uint16(xReadIb), - /*10681*/ uint16(xArgRM32), + /*10681*/ uint16(xArgRM64), /*10682*/ uint16(xArgImm8u), /*10683*/ uint16(xMatch), - /*10684*/ uint16(xCondDataSize), 10672, 10678, 10688, - /*10688*/ uint16(xSetOp), uint16(SAR), - /*10690*/ uint16(xReadIb), - /*10691*/ uint16(xArgRM64), - /*10692*/ uint16(xArgImm8u), - /*10693*/ uint16(xMatch), - /*10694*/ uint16(xSetOp), uint16(RET), - /*10696*/ uint16(xReadIw), - /*10697*/ uint16(xArgImm16u), - /*10698*/ uint16(xMatch), - /*10699*/ uint16(xSetOp), uint16(RET), - /*10701*/ uint16(xMatch), - /*10702*/ uint16(xCondIs64), 10705, 0, - /*10705*/ uint16(xCondDataSize), 10709, 10715, 0, - /*10709*/ uint16(xSetOp), uint16(LES), - /*10711*/ uint16(xReadSlashR), - /*10712*/ uint16(xArgR16), - /*10713*/ uint16(xArgM16colon16), - /*10714*/ uint16(xMatch), - /*10715*/ uint16(xSetOp), uint16(LES), - /*10717*/ uint16(xReadSlashR), - /*10718*/ uint16(xArgR32), - /*10719*/ uint16(xArgM16colon32), + /*10684*/ uint16(xCondIs64), 10687, 10703, + /*10687*/ uint16(xCondDataSize), 10691, 10697, 0, + /*10691*/ uint16(xSetOp), uint16(SAR), + /*10693*/ uint16(xReadIb), + /*10694*/ uint16(xArgRM16), + /*10695*/ uint16(xArgImm8u), + /*10696*/ uint16(xMatch), + /*10697*/ uint16(xSetOp), uint16(SAR), + /*10699*/ uint16(xReadIb), + /*10700*/ uint16(xArgRM32), + /*10701*/ uint16(xArgImm8u), + /*10702*/ uint16(xMatch), + /*10703*/ uint16(xCondDataSize), 10691, 10697, 10707, + /*10707*/ uint16(xSetOp), uint16(SAR), + /*10709*/ uint16(xReadIb), + /*10710*/ uint16(xArgRM64), + /*10711*/ uint16(xArgImm8u), + /*10712*/ uint16(xMatch), + /*10713*/ uint16(xSetOp), uint16(RET), + /*10715*/ uint16(xReadIw), + /*10716*/ uint16(xArgImm16u), + /*10717*/ uint16(xMatch), + /*10718*/ uint16(xSetOp), uint16(RET), /*10720*/ uint16(xMatch), /*10721*/ uint16(xCondIs64), 10724, 0, /*10724*/ uint16(xCondDataSize), 10728, 10734, 0, - /*10728*/ uint16(xSetOp), uint16(LDS), + /*10728*/ uint16(xSetOp), uint16(LES), /*10730*/ uint16(xReadSlashR), /*10731*/ uint16(xArgR16), /*10732*/ uint16(xArgM16colon16), /*10733*/ uint16(xMatch), - /*10734*/ uint16(xSetOp), uint16(LDS), + /*10734*/ uint16(xSetOp), uint16(LES), /*10736*/ uint16(xReadSlashR), /*10737*/ uint16(xArgR32), /*10738*/ uint16(xArgM16colon32), /*10739*/ uint16(xMatch), - /*10740*/ uint16(xCondByte), 1, - 0xF8, 10759, - /*10744*/ uint16(xCondSlashR), - 10753, // 0 + /*10740*/ uint16(xCondIs64), 10743, 0, + /*10743*/ uint16(xCondDataSize), 10747, 10753, 0, + /*10747*/ uint16(xSetOp), uint16(LDS), + /*10749*/ uint16(xReadSlashR), + /*10750*/ uint16(xArgR16), + /*10751*/ uint16(xArgM16colon16), + /*10752*/ uint16(xMatch), + /*10753*/ uint16(xSetOp), uint16(LDS), + /*10755*/ uint16(xReadSlashR), + /*10756*/ uint16(xArgR32), + /*10757*/ uint16(xArgM16colon32), + /*10758*/ uint16(xMatch), + /*10759*/ uint16(xCondByte), 1, + 0xF8, 10778, + /*10763*/ uint16(xCondSlashR), + 10772, // 0 0, // 1 0, // 2 0, // 3 @@ -6999,19 +7009,19 @@ var decoder = [...]uint16{ 0, // 5 0, // 6 0, // 7 - /*10753*/ uint16(xSetOp), uint16(MOV), - /*10755*/ uint16(xReadIb), - /*10756*/ uint16(xArgRM8), - /*10757*/ uint16(xArgImm8u), - /*10758*/ uint16(xMatch), - /*10759*/ uint16(xSetOp), uint16(XABORT), - /*10761*/ uint16(xReadIb), - /*10762*/ uint16(xArgImm8u), - /*10763*/ uint16(xMatch), - /*10764*/ uint16(xCondByte), 1, - 0xF8, 10806, - /*10768*/ uint16(xCondSlashR), - 10777, // 0 + /*10772*/ uint16(xSetOp), uint16(MOV), + /*10774*/ uint16(xReadIb), + /*10775*/ uint16(xArgRM8), + /*10776*/ uint16(xArgImm8u), + /*10777*/ uint16(xMatch), + /*10778*/ uint16(xSetOp), uint16(XABORT), + /*10780*/ uint16(xReadIb), + /*10781*/ uint16(xArgImm8u), + /*10782*/ uint16(xMatch), + /*10783*/ uint16(xCondByte), 1, + 0xF8, 10825, + /*10787*/ uint16(xCondSlashR), + 10796, // 0 0, // 1 0, // 2 0, // 3 @@ -7019,1656 +7029,1662 @@ var decoder = [...]uint16{ 0, // 5 0, // 6 0, // 7 - /*10777*/ uint16(xCondIs64), 10780, 10796, - /*10780*/ uint16(xCondDataSize), 10784, 10790, 0, - /*10784*/ uint16(xSetOp), uint16(MOV), - /*10786*/ uint16(xReadIw), - /*10787*/ uint16(xArgRM16), - /*10788*/ uint16(xArgImm16), - /*10789*/ uint16(xMatch), - /*10790*/ uint16(xSetOp), uint16(MOV), - /*10792*/ uint16(xReadId), - /*10793*/ uint16(xArgRM32), - /*10794*/ uint16(xArgImm32), - /*10795*/ uint16(xMatch), - /*10796*/ uint16(xCondDataSize), 10784, 10790, 10800, - /*10800*/ uint16(xSetOp), uint16(MOV), - /*10802*/ uint16(xReadId), - /*10803*/ uint16(xArgRM64), - /*10804*/ uint16(xArgImm32), - /*10805*/ uint16(xMatch), - /*10806*/ uint16(xCondDataSize), 10810, 10815, 10820, - /*10810*/ uint16(xSetOp), uint16(XBEGIN), - /*10812*/ uint16(xReadCw), - /*10813*/ uint16(xArgRel16), + /*10796*/ uint16(xCondIs64), 10799, 10815, + /*10799*/ uint16(xCondDataSize), 10803, 10809, 0, + /*10803*/ uint16(xSetOp), uint16(MOV), + /*10805*/ uint16(xReadIw), + /*10806*/ uint16(xArgRM16), + /*10807*/ uint16(xArgImm16), + /*10808*/ uint16(xMatch), + /*10809*/ uint16(xSetOp), uint16(MOV), + /*10811*/ uint16(xReadId), + /*10812*/ uint16(xArgRM32), + /*10813*/ uint16(xArgImm32), /*10814*/ uint16(xMatch), - /*10815*/ uint16(xSetOp), uint16(XBEGIN), - /*10817*/ uint16(xReadCd), - /*10818*/ uint16(xArgRel32), - /*10819*/ uint16(xMatch), - /*10820*/ uint16(xSetOp), uint16(XBEGIN), - /*10822*/ uint16(xReadCd), - /*10823*/ uint16(xArgRel32), + /*10815*/ uint16(xCondDataSize), 10803, 10809, 10819, + /*10819*/ uint16(xSetOp), uint16(MOV), + /*10821*/ uint16(xReadId), + /*10822*/ uint16(xArgRM64), + /*10823*/ uint16(xArgImm32), /*10824*/ uint16(xMatch), - /*10825*/ uint16(xSetOp), uint16(ENTER), - /*10827*/ uint16(xReadIw), - /*10828*/ uint16(xReadIb), - /*10829*/ uint16(xArgImm16u), - /*10830*/ uint16(xArgImm8u), - /*10831*/ uint16(xMatch), - /*10832*/ uint16(xCondIs64), 10835, 10845, - /*10835*/ uint16(xCondDataSize), 10839, 10842, 0, - /*10839*/ uint16(xSetOp), uint16(LEAVE), - /*10841*/ uint16(xMatch), - /*10842*/ uint16(xSetOp), uint16(LEAVE), - /*10844*/ uint16(xMatch), - /*10845*/ uint16(xCondDataSize), 10839, 10849, 10852, - /*10849*/ uint16(xSetOp), uint16(LEAVE), - /*10851*/ uint16(xMatch), - /*10852*/ uint16(xSetOp), uint16(LEAVE), - /*10854*/ uint16(xMatch), - /*10855*/ uint16(xSetOp), uint16(LRET), - /*10857*/ uint16(xReadIw), - /*10858*/ uint16(xArgImm16u), - /*10859*/ uint16(xMatch), - /*10860*/ uint16(xSetOp), uint16(LRET), - /*10862*/ uint16(xMatch), - /*10863*/ uint16(xSetOp), uint16(INT), - /*10865*/ uint16(xArg3), - /*10866*/ uint16(xMatch), - /*10867*/ uint16(xSetOp), uint16(INT), - /*10869*/ uint16(xReadIb), - /*10870*/ uint16(xArgImm8u), - /*10871*/ uint16(xMatch), - /*10872*/ uint16(xCondIs64), 10875, 0, - /*10875*/ uint16(xSetOp), uint16(INTO), - /*10877*/ uint16(xMatch), - /*10878*/ uint16(xCondIs64), 10881, 10891, - /*10881*/ uint16(xCondDataSize), 10885, 10888, 0, - /*10885*/ uint16(xSetOp), uint16(IRET), - /*10887*/ uint16(xMatch), - /*10888*/ uint16(xSetOp), uint16(IRETD), + /*10825*/ uint16(xCondDataSize), 10829, 10834, 10839, + /*10829*/ uint16(xSetOp), uint16(XBEGIN), + /*10831*/ uint16(xReadCw), + /*10832*/ uint16(xArgRel16), + /*10833*/ uint16(xMatch), + /*10834*/ uint16(xSetOp), uint16(XBEGIN), + /*10836*/ uint16(xReadCd), + /*10837*/ uint16(xArgRel32), + /*10838*/ uint16(xMatch), + /*10839*/ uint16(xSetOp), uint16(XBEGIN), + /*10841*/ uint16(xReadCd), + /*10842*/ uint16(xArgRel32), + /*10843*/ uint16(xMatch), + /*10844*/ uint16(xSetOp), uint16(ENTER), + /*10846*/ uint16(xReadIw), + /*10847*/ uint16(xReadIb), + /*10848*/ uint16(xArgImm16u), + /*10849*/ uint16(xArgImm8u), + /*10850*/ uint16(xMatch), + /*10851*/ uint16(xCondIs64), 10854, 10864, + /*10854*/ uint16(xCondDataSize), 10858, 10861, 0, + /*10858*/ uint16(xSetOp), uint16(LEAVE), + /*10860*/ uint16(xMatch), + /*10861*/ uint16(xSetOp), uint16(LEAVE), + /*10863*/ uint16(xMatch), + /*10864*/ uint16(xCondDataSize), 10858, 10868, 10871, + /*10868*/ uint16(xSetOp), uint16(LEAVE), + /*10870*/ uint16(xMatch), + /*10871*/ uint16(xSetOp), uint16(LEAVE), + /*10873*/ uint16(xMatch), + /*10874*/ uint16(xSetOp), uint16(LRET), + /*10876*/ uint16(xReadIw), + /*10877*/ uint16(xArgImm16u), + /*10878*/ uint16(xMatch), + /*10879*/ uint16(xSetOp), uint16(LRET), + /*10881*/ uint16(xMatch), + /*10882*/ uint16(xSetOp), uint16(INT), + /*10884*/ uint16(xArg3), + /*10885*/ uint16(xMatch), + /*10886*/ uint16(xSetOp), uint16(INT), + /*10888*/ uint16(xReadIb), + /*10889*/ uint16(xArgImm8u), /*10890*/ uint16(xMatch), - /*10891*/ uint16(xCondDataSize), 10885, 10888, 10895, - /*10895*/ uint16(xSetOp), uint16(IRETQ), - /*10897*/ uint16(xMatch), - /*10898*/ uint16(xCondSlashR), - 10907, // 0 - 10912, // 1 - 10917, // 2 - 10922, // 3 - 10927, // 4 - 10932, // 5 - 0, // 6 - 10937, // 7 - /*10907*/ uint16(xSetOp), uint16(ROL), - /*10909*/ uint16(xArgRM8), - /*10910*/ uint16(xArg1), - /*10911*/ uint16(xMatch), - /*10912*/ uint16(xSetOp), uint16(ROR), - /*10914*/ uint16(xArgRM8), - /*10915*/ uint16(xArg1), + /*10891*/ uint16(xCondIs64), 10894, 0, + /*10894*/ uint16(xSetOp), uint16(INTO), + /*10896*/ uint16(xMatch), + /*10897*/ uint16(xCondIs64), 10900, 10910, + /*10900*/ uint16(xCondDataSize), 10904, 10907, 0, + /*10904*/ uint16(xSetOp), uint16(IRET), + /*10906*/ uint16(xMatch), + /*10907*/ uint16(xSetOp), uint16(IRETD), + /*10909*/ uint16(xMatch), + /*10910*/ uint16(xCondDataSize), 10904, 10907, 10914, + /*10914*/ uint16(xSetOp), uint16(IRETQ), /*10916*/ uint16(xMatch), - /*10917*/ uint16(xSetOp), uint16(RCL), - /*10919*/ uint16(xArgRM8), - /*10920*/ uint16(xArg1), - /*10921*/ uint16(xMatch), - /*10922*/ uint16(xSetOp), uint16(RCR), - /*10924*/ uint16(xArgRM8), - /*10925*/ uint16(xArg1), - /*10926*/ uint16(xMatch), - /*10927*/ uint16(xSetOp), uint16(SHL), - /*10929*/ uint16(xArgRM8), - /*10930*/ uint16(xArg1), - /*10931*/ uint16(xMatch), - /*10932*/ uint16(xSetOp), uint16(SHR), - /*10934*/ uint16(xArgRM8), - /*10935*/ uint16(xArg1), - /*10936*/ uint16(xMatch), - /*10937*/ uint16(xSetOp), uint16(SAR), - /*10939*/ uint16(xArgRM8), - /*10940*/ uint16(xArg1), - /*10941*/ uint16(xMatch), - /*10942*/ uint16(xCondSlashR), - 10951, // 0 - 10977, // 1 - 11003, // 2 - 11029, // 3 - 11055, // 4 - 11081, // 5 + /*10917*/ uint16(xCondSlashR), + 10926, // 0 + 10931, // 1 + 10936, // 2 + 10941, // 3 + 10946, // 4 + 10951, // 5 0, // 6 - 11107, // 7 - /*10951*/ uint16(xCondIs64), 10954, 10968, - /*10954*/ uint16(xCondDataSize), 10958, 10963, 0, - /*10958*/ uint16(xSetOp), uint16(ROL), - /*10960*/ uint16(xArgRM16), - /*10961*/ uint16(xArg1), - /*10962*/ uint16(xMatch), - /*10963*/ uint16(xSetOp), uint16(ROL), - /*10965*/ uint16(xArgRM32), - /*10966*/ uint16(xArg1), - /*10967*/ uint16(xMatch), - /*10968*/ uint16(xCondDataSize), 10958, 10963, 10972, - /*10972*/ uint16(xSetOp), uint16(ROL), - /*10974*/ uint16(xArgRM64), - /*10975*/ uint16(xArg1), - /*10976*/ uint16(xMatch), - /*10977*/ uint16(xCondIs64), 10980, 10994, - /*10980*/ uint16(xCondDataSize), 10984, 10989, 0, - /*10984*/ uint16(xSetOp), uint16(ROR), - /*10986*/ uint16(xArgRM16), - /*10987*/ uint16(xArg1), - /*10988*/ uint16(xMatch), - /*10989*/ uint16(xSetOp), uint16(ROR), - /*10991*/ uint16(xArgRM32), - /*10992*/ uint16(xArg1), - /*10993*/ uint16(xMatch), - /*10994*/ uint16(xCondDataSize), 10984, 10989, 10998, - /*10998*/ uint16(xSetOp), uint16(ROR), - /*11000*/ uint16(xArgRM64), - /*11001*/ uint16(xArg1), - /*11002*/ uint16(xMatch), - /*11003*/ uint16(xCondIs64), 11006, 11020, - /*11006*/ uint16(xCondDataSize), 11010, 11015, 0, - /*11010*/ uint16(xSetOp), uint16(RCL), - /*11012*/ uint16(xArgRM16), - /*11013*/ uint16(xArg1), - /*11014*/ uint16(xMatch), - /*11015*/ uint16(xSetOp), uint16(RCL), - /*11017*/ uint16(xArgRM32), - /*11018*/ uint16(xArg1), - /*11019*/ uint16(xMatch), - /*11020*/ uint16(xCondDataSize), 11010, 11015, 11024, - /*11024*/ uint16(xSetOp), uint16(RCL), - /*11026*/ uint16(xArgRM64), - /*11027*/ uint16(xArg1), - /*11028*/ uint16(xMatch), - /*11029*/ uint16(xCondIs64), 11032, 11046, - /*11032*/ uint16(xCondDataSize), 11036, 11041, 0, - /*11036*/ uint16(xSetOp), uint16(RCR), - /*11038*/ uint16(xArgRM16), - /*11039*/ uint16(xArg1), - /*11040*/ uint16(xMatch), - /*11041*/ uint16(xSetOp), uint16(RCR), - /*11043*/ uint16(xArgRM32), - /*11044*/ uint16(xArg1), - /*11045*/ uint16(xMatch), - /*11046*/ uint16(xCondDataSize), 11036, 11041, 11050, - /*11050*/ uint16(xSetOp), uint16(RCR), - /*11052*/ uint16(xArgRM64), - /*11053*/ uint16(xArg1), - /*11054*/ uint16(xMatch), - /*11055*/ uint16(xCondIs64), 11058, 11072, - /*11058*/ uint16(xCondDataSize), 11062, 11067, 0, - /*11062*/ uint16(xSetOp), uint16(SHL), - /*11064*/ uint16(xArgRM16), - /*11065*/ uint16(xArg1), - /*11066*/ uint16(xMatch), - /*11067*/ uint16(xSetOp), uint16(SHL), - /*11069*/ uint16(xArgRM32), - /*11070*/ uint16(xArg1), - /*11071*/ uint16(xMatch), - /*11072*/ uint16(xCondDataSize), 11062, 11067, 11076, - /*11076*/ uint16(xSetOp), uint16(SHL), - /*11078*/ uint16(xArgRM64), - /*11079*/ uint16(xArg1), - /*11080*/ uint16(xMatch), - /*11081*/ uint16(xCondIs64), 11084, 11098, - /*11084*/ uint16(xCondDataSize), 11088, 11093, 0, - /*11088*/ uint16(xSetOp), uint16(SHR), - /*11090*/ uint16(xArgRM16), - /*11091*/ uint16(xArg1), - /*11092*/ uint16(xMatch), - /*11093*/ uint16(xSetOp), uint16(SHR), - /*11095*/ uint16(xArgRM32), - /*11096*/ uint16(xArg1), - /*11097*/ uint16(xMatch), - /*11098*/ uint16(xCondDataSize), 11088, 11093, 11102, - /*11102*/ uint16(xSetOp), uint16(SHR), - /*11104*/ uint16(xArgRM64), - /*11105*/ uint16(xArg1), - /*11106*/ uint16(xMatch), - /*11107*/ uint16(xCondIs64), 11110, 11124, - /*11110*/ uint16(xCondDataSize), 11114, 11119, 0, - /*11114*/ uint16(xSetOp), uint16(SAR), - /*11116*/ uint16(xArgRM16), - /*11117*/ uint16(xArg1), - /*11118*/ uint16(xMatch), - /*11119*/ uint16(xSetOp), uint16(SAR), - /*11121*/ uint16(xArgRM32), - /*11122*/ uint16(xArg1), - /*11123*/ uint16(xMatch), - /*11124*/ uint16(xCondDataSize), 11114, 11119, 11128, - /*11128*/ uint16(xSetOp), uint16(SAR), - /*11130*/ uint16(xArgRM64), - /*11131*/ uint16(xArg1), - /*11132*/ uint16(xMatch), - /*11133*/ uint16(xCondSlashR), - 11142, // 0 - 11147, // 1 - 11152, // 2 - 11157, // 3 - 11162, // 4 - 11167, // 5 + 10956, // 7 + /*10926*/ uint16(xSetOp), uint16(ROL), + /*10928*/ uint16(xArgRM8), + /*10929*/ uint16(xArg1), + /*10930*/ uint16(xMatch), + /*10931*/ uint16(xSetOp), uint16(ROR), + /*10933*/ uint16(xArgRM8), + /*10934*/ uint16(xArg1), + /*10935*/ uint16(xMatch), + /*10936*/ uint16(xSetOp), uint16(RCL), + /*10938*/ uint16(xArgRM8), + /*10939*/ uint16(xArg1), + /*10940*/ uint16(xMatch), + /*10941*/ uint16(xSetOp), uint16(RCR), + /*10943*/ uint16(xArgRM8), + /*10944*/ uint16(xArg1), + /*10945*/ uint16(xMatch), + /*10946*/ uint16(xSetOp), uint16(SHL), + /*10948*/ uint16(xArgRM8), + /*10949*/ uint16(xArg1), + /*10950*/ uint16(xMatch), + /*10951*/ uint16(xSetOp), uint16(SHR), + /*10953*/ uint16(xArgRM8), + /*10954*/ uint16(xArg1), + /*10955*/ uint16(xMatch), + /*10956*/ uint16(xSetOp), uint16(SAR), + /*10958*/ uint16(xArgRM8), + /*10959*/ uint16(xArg1), + /*10960*/ uint16(xMatch), + /*10961*/ uint16(xCondSlashR), + 10970, // 0 + 10996, // 1 + 11022, // 2 + 11048, // 3 + 11074, // 4 + 11100, // 5 0, // 6 - 11172, // 7 - /*11142*/ uint16(xSetOp), uint16(ROL), - /*11144*/ uint16(xArgRM8), - /*11145*/ uint16(xArgCL), - /*11146*/ uint16(xMatch), - /*11147*/ uint16(xSetOp), uint16(ROR), - /*11149*/ uint16(xArgRM8), - /*11150*/ uint16(xArgCL), + 11126, // 7 + /*10970*/ uint16(xCondIs64), 10973, 10987, + /*10973*/ uint16(xCondDataSize), 10977, 10982, 0, + /*10977*/ uint16(xSetOp), uint16(ROL), + /*10979*/ uint16(xArgRM16), + /*10980*/ uint16(xArg1), + /*10981*/ uint16(xMatch), + /*10982*/ uint16(xSetOp), uint16(ROL), + /*10984*/ uint16(xArgRM32), + /*10985*/ uint16(xArg1), + /*10986*/ uint16(xMatch), + /*10987*/ uint16(xCondDataSize), 10977, 10982, 10991, + /*10991*/ uint16(xSetOp), uint16(ROL), + /*10993*/ uint16(xArgRM64), + /*10994*/ uint16(xArg1), + /*10995*/ uint16(xMatch), + /*10996*/ uint16(xCondIs64), 10999, 11013, + /*10999*/ uint16(xCondDataSize), 11003, 11008, 0, + /*11003*/ uint16(xSetOp), uint16(ROR), + /*11005*/ uint16(xArgRM16), + /*11006*/ uint16(xArg1), + /*11007*/ uint16(xMatch), + /*11008*/ uint16(xSetOp), uint16(ROR), + /*11010*/ uint16(xArgRM32), + /*11011*/ uint16(xArg1), + /*11012*/ uint16(xMatch), + /*11013*/ uint16(xCondDataSize), 11003, 11008, 11017, + /*11017*/ uint16(xSetOp), uint16(ROR), + /*11019*/ uint16(xArgRM64), + /*11020*/ uint16(xArg1), + /*11021*/ uint16(xMatch), + /*11022*/ uint16(xCondIs64), 11025, 11039, + /*11025*/ uint16(xCondDataSize), 11029, 11034, 0, + /*11029*/ uint16(xSetOp), uint16(RCL), + /*11031*/ uint16(xArgRM16), + /*11032*/ uint16(xArg1), + /*11033*/ uint16(xMatch), + /*11034*/ uint16(xSetOp), uint16(RCL), + /*11036*/ uint16(xArgRM32), + /*11037*/ uint16(xArg1), + /*11038*/ uint16(xMatch), + /*11039*/ uint16(xCondDataSize), 11029, 11034, 11043, + /*11043*/ uint16(xSetOp), uint16(RCL), + /*11045*/ uint16(xArgRM64), + /*11046*/ uint16(xArg1), + /*11047*/ uint16(xMatch), + /*11048*/ uint16(xCondIs64), 11051, 11065, + /*11051*/ uint16(xCondDataSize), 11055, 11060, 0, + /*11055*/ uint16(xSetOp), uint16(RCR), + /*11057*/ uint16(xArgRM16), + /*11058*/ uint16(xArg1), + /*11059*/ uint16(xMatch), + /*11060*/ uint16(xSetOp), uint16(RCR), + /*11062*/ uint16(xArgRM32), + /*11063*/ uint16(xArg1), + /*11064*/ uint16(xMatch), + /*11065*/ uint16(xCondDataSize), 11055, 11060, 11069, + /*11069*/ uint16(xSetOp), uint16(RCR), + /*11071*/ uint16(xArgRM64), + /*11072*/ uint16(xArg1), + /*11073*/ uint16(xMatch), + /*11074*/ uint16(xCondIs64), 11077, 11091, + /*11077*/ uint16(xCondDataSize), 11081, 11086, 0, + /*11081*/ uint16(xSetOp), uint16(SHL), + /*11083*/ uint16(xArgRM16), + /*11084*/ uint16(xArg1), + /*11085*/ uint16(xMatch), + /*11086*/ uint16(xSetOp), uint16(SHL), + /*11088*/ uint16(xArgRM32), + /*11089*/ uint16(xArg1), + /*11090*/ uint16(xMatch), + /*11091*/ uint16(xCondDataSize), 11081, 11086, 11095, + /*11095*/ uint16(xSetOp), uint16(SHL), + /*11097*/ uint16(xArgRM64), + /*11098*/ uint16(xArg1), + /*11099*/ uint16(xMatch), + /*11100*/ uint16(xCondIs64), 11103, 11117, + /*11103*/ uint16(xCondDataSize), 11107, 11112, 0, + /*11107*/ uint16(xSetOp), uint16(SHR), + /*11109*/ uint16(xArgRM16), + /*11110*/ uint16(xArg1), + /*11111*/ uint16(xMatch), + /*11112*/ uint16(xSetOp), uint16(SHR), + /*11114*/ uint16(xArgRM32), + /*11115*/ uint16(xArg1), + /*11116*/ uint16(xMatch), + /*11117*/ uint16(xCondDataSize), 11107, 11112, 11121, + /*11121*/ uint16(xSetOp), uint16(SHR), + /*11123*/ uint16(xArgRM64), + /*11124*/ uint16(xArg1), + /*11125*/ uint16(xMatch), + /*11126*/ uint16(xCondIs64), 11129, 11143, + /*11129*/ uint16(xCondDataSize), 11133, 11138, 0, + /*11133*/ uint16(xSetOp), uint16(SAR), + /*11135*/ uint16(xArgRM16), + /*11136*/ uint16(xArg1), + /*11137*/ uint16(xMatch), + /*11138*/ uint16(xSetOp), uint16(SAR), + /*11140*/ uint16(xArgRM32), + /*11141*/ uint16(xArg1), + /*11142*/ uint16(xMatch), + /*11143*/ uint16(xCondDataSize), 11133, 11138, 11147, + /*11147*/ uint16(xSetOp), uint16(SAR), + /*11149*/ uint16(xArgRM64), + /*11150*/ uint16(xArg1), /*11151*/ uint16(xMatch), - /*11152*/ uint16(xSetOp), uint16(RCL), - /*11154*/ uint16(xArgRM8), - /*11155*/ uint16(xArgCL), - /*11156*/ uint16(xMatch), - /*11157*/ uint16(xSetOp), uint16(RCR), - /*11159*/ uint16(xArgRM8), - /*11160*/ uint16(xArgCL), - /*11161*/ uint16(xMatch), - /*11162*/ uint16(xSetOp), uint16(SHL), - /*11164*/ uint16(xArgRM8), - /*11165*/ uint16(xArgCL), - /*11166*/ uint16(xMatch), - /*11167*/ uint16(xSetOp), uint16(SHR), - /*11169*/ uint16(xArgRM8), - /*11170*/ uint16(xArgCL), - /*11171*/ uint16(xMatch), - /*11172*/ uint16(xSetOp), uint16(SAR), - /*11174*/ uint16(xArgRM8), - /*11175*/ uint16(xArgCL), - /*11176*/ uint16(xMatch), - /*11177*/ uint16(xCondSlashR), - 11186, // 0 - 11212, // 1 - 11238, // 2 - 11264, // 3 - 11290, // 4 - 11316, // 5 + /*11152*/ uint16(xCondSlashR), + 11161, // 0 + 11166, // 1 + 11171, // 2 + 11176, // 3 + 11181, // 4 + 11186, // 5 0, // 6 - 11342, // 7 - /*11186*/ uint16(xCondIs64), 11189, 11203, - /*11189*/ uint16(xCondDataSize), 11193, 11198, 0, - /*11193*/ uint16(xSetOp), uint16(ROL), - /*11195*/ uint16(xArgRM16), - /*11196*/ uint16(xArgCL), - /*11197*/ uint16(xMatch), - /*11198*/ uint16(xSetOp), uint16(ROL), - /*11200*/ uint16(xArgRM32), - /*11201*/ uint16(xArgCL), - /*11202*/ uint16(xMatch), - /*11203*/ uint16(xCondDataSize), 11193, 11198, 11207, - /*11207*/ uint16(xSetOp), uint16(ROL), - /*11209*/ uint16(xArgRM64), - /*11210*/ uint16(xArgCL), - /*11211*/ uint16(xMatch), - /*11212*/ uint16(xCondIs64), 11215, 11229, - /*11215*/ uint16(xCondDataSize), 11219, 11224, 0, - /*11219*/ uint16(xSetOp), uint16(ROR), - /*11221*/ uint16(xArgRM16), - /*11222*/ uint16(xArgCL), - /*11223*/ uint16(xMatch), - /*11224*/ uint16(xSetOp), uint16(ROR), - /*11226*/ uint16(xArgRM32), - /*11227*/ uint16(xArgCL), - /*11228*/ uint16(xMatch), - /*11229*/ uint16(xCondDataSize), 11219, 11224, 11233, - /*11233*/ uint16(xSetOp), uint16(ROR), - /*11235*/ uint16(xArgRM64), - /*11236*/ uint16(xArgCL), - /*11237*/ uint16(xMatch), - /*11238*/ uint16(xCondIs64), 11241, 11255, - /*11241*/ uint16(xCondDataSize), 11245, 11250, 0, - /*11245*/ uint16(xSetOp), uint16(RCL), - /*11247*/ uint16(xArgRM16), - /*11248*/ uint16(xArgCL), - /*11249*/ uint16(xMatch), - /*11250*/ uint16(xSetOp), uint16(RCL), - /*11252*/ uint16(xArgRM32), - /*11253*/ uint16(xArgCL), - /*11254*/ uint16(xMatch), - /*11255*/ uint16(xCondDataSize), 11245, 11250, 11259, - /*11259*/ uint16(xSetOp), uint16(RCL), - /*11261*/ uint16(xArgRM64), - /*11262*/ uint16(xArgCL), - /*11263*/ uint16(xMatch), - /*11264*/ uint16(xCondIs64), 11267, 11281, - /*11267*/ uint16(xCondDataSize), 11271, 11276, 0, - /*11271*/ uint16(xSetOp), uint16(RCR), - /*11273*/ uint16(xArgRM16), - /*11274*/ uint16(xArgCL), - /*11275*/ uint16(xMatch), - /*11276*/ uint16(xSetOp), uint16(RCR), - /*11278*/ uint16(xArgRM32), - /*11279*/ uint16(xArgCL), - /*11280*/ uint16(xMatch), - /*11281*/ uint16(xCondDataSize), 11271, 11276, 11285, - /*11285*/ uint16(xSetOp), uint16(RCR), - /*11287*/ uint16(xArgRM64), - /*11288*/ uint16(xArgCL), - /*11289*/ uint16(xMatch), - /*11290*/ uint16(xCondIs64), 11293, 11307, - /*11293*/ uint16(xCondDataSize), 11297, 11302, 0, - /*11297*/ uint16(xSetOp), uint16(SHL), - /*11299*/ uint16(xArgRM16), - /*11300*/ uint16(xArgCL), - /*11301*/ uint16(xMatch), - /*11302*/ uint16(xSetOp), uint16(SHL), - /*11304*/ uint16(xArgRM32), - /*11305*/ uint16(xArgCL), - /*11306*/ uint16(xMatch), - /*11307*/ uint16(xCondDataSize), 11297, 11302, 11311, - /*11311*/ uint16(xSetOp), uint16(SHL), - /*11313*/ uint16(xArgRM64), - /*11314*/ uint16(xArgCL), - /*11315*/ uint16(xMatch), - /*11316*/ uint16(xCondIs64), 11319, 11333, - /*11319*/ uint16(xCondDataSize), 11323, 11328, 0, - /*11323*/ uint16(xSetOp), uint16(SHR), - /*11325*/ uint16(xArgRM16), - /*11326*/ uint16(xArgCL), - /*11327*/ uint16(xMatch), - /*11328*/ uint16(xSetOp), uint16(SHR), - /*11330*/ uint16(xArgRM32), - /*11331*/ uint16(xArgCL), - /*11332*/ uint16(xMatch), - /*11333*/ uint16(xCondDataSize), 11323, 11328, 11337, - /*11337*/ uint16(xSetOp), uint16(SHR), - /*11339*/ uint16(xArgRM64), - /*11340*/ uint16(xArgCL), - /*11341*/ uint16(xMatch), - /*11342*/ uint16(xCondIs64), 11345, 11359, - /*11345*/ uint16(xCondDataSize), 11349, 11354, 0, - /*11349*/ uint16(xSetOp), uint16(SAR), - /*11351*/ uint16(xArgRM16), - /*11352*/ uint16(xArgCL), - /*11353*/ uint16(xMatch), - /*11354*/ uint16(xSetOp), uint16(SAR), - /*11356*/ uint16(xArgRM32), - /*11357*/ uint16(xArgCL), - /*11358*/ uint16(xMatch), - /*11359*/ uint16(xCondDataSize), 11349, 11354, 11363, - /*11363*/ uint16(xSetOp), uint16(SAR), - /*11365*/ uint16(xArgRM64), - /*11366*/ uint16(xArgCL), - /*11367*/ uint16(xMatch), - /*11368*/ uint16(xCondIs64), 11371, 0, - /*11371*/ uint16(xSetOp), uint16(AAM), - /*11373*/ uint16(xReadIb), - /*11374*/ uint16(xArgImm8u), - /*11375*/ uint16(xMatch), - /*11376*/ uint16(xCondIs64), 11379, 0, - /*11379*/ uint16(xSetOp), uint16(AAD), - /*11381*/ uint16(xReadIb), - /*11382*/ uint16(xArgImm8u), - /*11383*/ uint16(xMatch), - /*11384*/ uint16(xCondIs64), 11387, 11390, - /*11387*/ uint16(xSetOp), uint16(XLATB), - /*11389*/ uint16(xMatch), - /*11390*/ uint16(xCondDataSize), 11387, 11387, 11394, - /*11394*/ uint16(xSetOp), uint16(XLATB), - /*11396*/ uint16(xMatch), - /*11397*/ uint16(xCondByte), 64, - 0xc0, 11568, - 0xc1, 11568, - 0xc2, 11568, - 0xc3, 11568, - 0xc4, 11568, - 0xc5, 11568, - 0xc6, 11568, - 0xc7, 11568, - 0xc8, 11573, - 0xc9, 11573, - 0xca, 11573, - 0xcb, 11573, - 0xcc, 11573, - 0xcd, 11573, - 0xce, 11573, - 0xcf, 11573, - 0xd0, 11578, - 0xd1, 11578, - 0xd2, 11578, - 0xd3, 11578, - 0xd4, 11578, - 0xd5, 11578, - 0xd6, 11578, - 0xd7, 11578, - 0xd8, 11582, - 0xd9, 11582, - 0xda, 11582, - 0xdb, 11582, - 0xdc, 11582, - 0xdd, 11582, - 0xde, 11582, - 0xdf, 11582, - 0xe0, 11586, - 0xe1, 11586, - 0xe2, 11586, - 0xe3, 11586, - 0xe4, 11586, - 0xe5, 11586, - 0xe6, 11586, - 0xe7, 11586, - 0xe8, 11591, - 0xe9, 11591, - 0xea, 11591, - 0xeb, 11591, - 0xec, 11591, - 0xed, 11591, - 0xee, 11591, - 0xef, 11591, - 0xf0, 11596, - 0xf1, 11596, - 0xf2, 11596, - 0xf3, 11596, - 0xf4, 11596, - 0xf5, 11596, - 0xf6, 11596, - 0xf7, 11596, - 0xf8, 11601, - 0xf9, 11601, - 0xfa, 11601, - 0xfb, 11601, - 0xfc, 11601, - 0xfd, 11601, - 0xfe, 11601, - 0xff, 11601, - /*11527*/ uint16(xCondSlashR), - 11536, // 0 - 11540, // 1 - 11544, // 2 - 11548, // 3 - 11552, // 4 - 11556, // 5 - 11560, // 6 - 11564, // 7 - /*11536*/ uint16(xSetOp), uint16(FADD), - /*11538*/ uint16(xArgM32fp), - /*11539*/ uint16(xMatch), - /*11540*/ uint16(xSetOp), uint16(FMUL), - /*11542*/ uint16(xArgM32fp), - /*11543*/ uint16(xMatch), - /*11544*/ uint16(xSetOp), uint16(FCOM), - /*11546*/ uint16(xArgM32fp), - /*11547*/ uint16(xMatch), - /*11548*/ uint16(xSetOp), uint16(FCOMP), - /*11550*/ uint16(xArgM32fp), - /*11551*/ uint16(xMatch), - /*11552*/ uint16(xSetOp), uint16(FSUB), - /*11554*/ uint16(xArgM32fp), - /*11555*/ uint16(xMatch), - /*11556*/ uint16(xSetOp), uint16(FSUBR), - /*11558*/ uint16(xArgM32fp), - /*11559*/ uint16(xMatch), - /*11560*/ uint16(xSetOp), uint16(FDIV), - /*11562*/ uint16(xArgM32fp), - /*11563*/ uint16(xMatch), - /*11564*/ uint16(xSetOp), uint16(FDIVR), - /*11566*/ uint16(xArgM32fp), - /*11567*/ uint16(xMatch), - /*11568*/ uint16(xSetOp), uint16(FADD), - /*11570*/ uint16(xArgST), - /*11571*/ uint16(xArgSTi), - /*11572*/ uint16(xMatch), - /*11573*/ uint16(xSetOp), uint16(FMUL), - /*11575*/ uint16(xArgST), - /*11576*/ uint16(xArgSTi), - /*11577*/ uint16(xMatch), - /*11578*/ uint16(xSetOp), uint16(FCOM), - /*11580*/ uint16(xArgSTi), - /*11581*/ uint16(xMatch), - /*11582*/ uint16(xSetOp), uint16(FCOMP), - /*11584*/ uint16(xArgSTi), - /*11585*/ uint16(xMatch), - /*11586*/ uint16(xSetOp), uint16(FSUB), - /*11588*/ uint16(xArgST), - /*11589*/ uint16(xArgSTi), - /*11590*/ uint16(xMatch), - /*11591*/ uint16(xSetOp), uint16(FSUBR), - /*11593*/ uint16(xArgST), - /*11594*/ uint16(xArgSTi), - /*11595*/ uint16(xMatch), - /*11596*/ uint16(xSetOp), uint16(FDIV), - /*11598*/ uint16(xArgST), + 11191, // 7 + /*11161*/ uint16(xSetOp), uint16(ROL), + /*11163*/ uint16(xArgRM8), + /*11164*/ uint16(xArgCL), + /*11165*/ uint16(xMatch), + /*11166*/ uint16(xSetOp), uint16(ROR), + /*11168*/ uint16(xArgRM8), + /*11169*/ uint16(xArgCL), + /*11170*/ uint16(xMatch), + /*11171*/ uint16(xSetOp), uint16(RCL), + /*11173*/ uint16(xArgRM8), + /*11174*/ uint16(xArgCL), + /*11175*/ uint16(xMatch), + /*11176*/ uint16(xSetOp), uint16(RCR), + /*11178*/ uint16(xArgRM8), + /*11179*/ uint16(xArgCL), + /*11180*/ uint16(xMatch), + /*11181*/ uint16(xSetOp), uint16(SHL), + /*11183*/ uint16(xArgRM8), + /*11184*/ uint16(xArgCL), + /*11185*/ uint16(xMatch), + /*11186*/ uint16(xSetOp), uint16(SHR), + /*11188*/ uint16(xArgRM8), + /*11189*/ uint16(xArgCL), + /*11190*/ uint16(xMatch), + /*11191*/ uint16(xSetOp), uint16(SAR), + /*11193*/ uint16(xArgRM8), + /*11194*/ uint16(xArgCL), + /*11195*/ uint16(xMatch), + /*11196*/ uint16(xCondSlashR), + 11205, // 0 + 11231, // 1 + 11257, // 2 + 11283, // 3 + 11309, // 4 + 11335, // 5 + 0, // 6 + 11361, // 7 + /*11205*/ uint16(xCondIs64), 11208, 11222, + /*11208*/ uint16(xCondDataSize), 11212, 11217, 0, + /*11212*/ uint16(xSetOp), uint16(ROL), + /*11214*/ uint16(xArgRM16), + /*11215*/ uint16(xArgCL), + /*11216*/ uint16(xMatch), + /*11217*/ uint16(xSetOp), uint16(ROL), + /*11219*/ uint16(xArgRM32), + /*11220*/ uint16(xArgCL), + /*11221*/ uint16(xMatch), + /*11222*/ uint16(xCondDataSize), 11212, 11217, 11226, + /*11226*/ uint16(xSetOp), uint16(ROL), + /*11228*/ uint16(xArgRM64), + /*11229*/ uint16(xArgCL), + /*11230*/ uint16(xMatch), + /*11231*/ uint16(xCondIs64), 11234, 11248, + /*11234*/ uint16(xCondDataSize), 11238, 11243, 0, + /*11238*/ uint16(xSetOp), uint16(ROR), + /*11240*/ uint16(xArgRM16), + /*11241*/ uint16(xArgCL), + /*11242*/ uint16(xMatch), + /*11243*/ uint16(xSetOp), uint16(ROR), + /*11245*/ uint16(xArgRM32), + /*11246*/ uint16(xArgCL), + /*11247*/ uint16(xMatch), + /*11248*/ uint16(xCondDataSize), 11238, 11243, 11252, + /*11252*/ uint16(xSetOp), uint16(ROR), + /*11254*/ uint16(xArgRM64), + /*11255*/ uint16(xArgCL), + /*11256*/ uint16(xMatch), + /*11257*/ uint16(xCondIs64), 11260, 11274, + /*11260*/ uint16(xCondDataSize), 11264, 11269, 0, + /*11264*/ uint16(xSetOp), uint16(RCL), + /*11266*/ uint16(xArgRM16), + /*11267*/ uint16(xArgCL), + /*11268*/ uint16(xMatch), + /*11269*/ uint16(xSetOp), uint16(RCL), + /*11271*/ uint16(xArgRM32), + /*11272*/ uint16(xArgCL), + /*11273*/ uint16(xMatch), + /*11274*/ uint16(xCondDataSize), 11264, 11269, 11278, + /*11278*/ uint16(xSetOp), uint16(RCL), + /*11280*/ uint16(xArgRM64), + /*11281*/ uint16(xArgCL), + /*11282*/ uint16(xMatch), + /*11283*/ uint16(xCondIs64), 11286, 11300, + /*11286*/ uint16(xCondDataSize), 11290, 11295, 0, + /*11290*/ uint16(xSetOp), uint16(RCR), + /*11292*/ uint16(xArgRM16), + /*11293*/ uint16(xArgCL), + /*11294*/ uint16(xMatch), + /*11295*/ uint16(xSetOp), uint16(RCR), + /*11297*/ uint16(xArgRM32), + /*11298*/ uint16(xArgCL), + /*11299*/ uint16(xMatch), + /*11300*/ uint16(xCondDataSize), 11290, 11295, 11304, + /*11304*/ uint16(xSetOp), uint16(RCR), + /*11306*/ uint16(xArgRM64), + /*11307*/ uint16(xArgCL), + /*11308*/ uint16(xMatch), + /*11309*/ uint16(xCondIs64), 11312, 11326, + /*11312*/ uint16(xCondDataSize), 11316, 11321, 0, + /*11316*/ uint16(xSetOp), uint16(SHL), + /*11318*/ uint16(xArgRM16), + /*11319*/ uint16(xArgCL), + /*11320*/ uint16(xMatch), + /*11321*/ uint16(xSetOp), uint16(SHL), + /*11323*/ uint16(xArgRM32), + /*11324*/ uint16(xArgCL), + /*11325*/ uint16(xMatch), + /*11326*/ uint16(xCondDataSize), 11316, 11321, 11330, + /*11330*/ uint16(xSetOp), uint16(SHL), + /*11332*/ uint16(xArgRM64), + /*11333*/ uint16(xArgCL), + /*11334*/ uint16(xMatch), + /*11335*/ uint16(xCondIs64), 11338, 11352, + /*11338*/ uint16(xCondDataSize), 11342, 11347, 0, + /*11342*/ uint16(xSetOp), uint16(SHR), + /*11344*/ uint16(xArgRM16), + /*11345*/ uint16(xArgCL), + /*11346*/ uint16(xMatch), + /*11347*/ uint16(xSetOp), uint16(SHR), + /*11349*/ uint16(xArgRM32), + /*11350*/ uint16(xArgCL), + /*11351*/ uint16(xMatch), + /*11352*/ uint16(xCondDataSize), 11342, 11347, 11356, + /*11356*/ uint16(xSetOp), uint16(SHR), + /*11358*/ uint16(xArgRM64), + /*11359*/ uint16(xArgCL), + /*11360*/ uint16(xMatch), + /*11361*/ uint16(xCondIs64), 11364, 11378, + /*11364*/ uint16(xCondDataSize), 11368, 11373, 0, + /*11368*/ uint16(xSetOp), uint16(SAR), + /*11370*/ uint16(xArgRM16), + /*11371*/ uint16(xArgCL), + /*11372*/ uint16(xMatch), + /*11373*/ uint16(xSetOp), uint16(SAR), + /*11375*/ uint16(xArgRM32), + /*11376*/ uint16(xArgCL), + /*11377*/ uint16(xMatch), + /*11378*/ uint16(xCondDataSize), 11368, 11373, 11382, + /*11382*/ uint16(xSetOp), uint16(SAR), + /*11384*/ uint16(xArgRM64), + /*11385*/ uint16(xArgCL), + /*11386*/ uint16(xMatch), + /*11387*/ uint16(xCondIs64), 11390, 0, + /*11390*/ uint16(xSetOp), uint16(AAM), + /*11392*/ uint16(xReadIb), + /*11393*/ uint16(xArgImm8u), + /*11394*/ uint16(xMatch), + /*11395*/ uint16(xCondIs64), 11398, 0, + /*11398*/ uint16(xSetOp), uint16(AAD), + /*11400*/ uint16(xReadIb), + /*11401*/ uint16(xArgImm8u), + /*11402*/ uint16(xMatch), + /*11403*/ uint16(xCondIs64), 11406, 11409, + /*11406*/ uint16(xSetOp), uint16(XLATB), + /*11408*/ uint16(xMatch), + /*11409*/ uint16(xCondDataSize), 11406, 11406, 11413, + /*11413*/ uint16(xSetOp), uint16(XLATB), + /*11415*/ uint16(xMatch), + /*11416*/ uint16(xCondByte), 64, + 0xc0, 11587, + 0xc1, 11587, + 0xc2, 11587, + 0xc3, 11587, + 0xc4, 11587, + 0xc5, 11587, + 0xc6, 11587, + 0xc7, 11587, + 0xc8, 11592, + 0xc9, 11592, + 0xca, 11592, + 0xcb, 11592, + 0xcc, 11592, + 0xcd, 11592, + 0xce, 11592, + 0xcf, 11592, + 0xd0, 11597, + 0xd1, 11597, + 0xd2, 11597, + 0xd3, 11597, + 0xd4, 11597, + 0xd5, 11597, + 0xd6, 11597, + 0xd7, 11597, + 0xd8, 11601, + 0xd9, 11601, + 0xda, 11601, + 0xdb, 11601, + 0xdc, 11601, + 0xdd, 11601, + 0xde, 11601, + 0xdf, 11601, + 0xe0, 11605, + 0xe1, 11605, + 0xe2, 11605, + 0xe3, 11605, + 0xe4, 11605, + 0xe5, 11605, + 0xe6, 11605, + 0xe7, 11605, + 0xe8, 11610, + 0xe9, 11610, + 0xea, 11610, + 0xeb, 11610, + 0xec, 11610, + 0xed, 11610, + 0xee, 11610, + 0xef, 11610, + 0xf0, 11615, + 0xf1, 11615, + 0xf2, 11615, + 0xf3, 11615, + 0xf4, 11615, + 0xf5, 11615, + 0xf6, 11615, + 0xf7, 11615, + 0xf8, 11620, + 0xf9, 11620, + 0xfa, 11620, + 0xfb, 11620, + 0xfc, 11620, + 0xfd, 11620, + 0xfe, 11620, + 0xff, 11620, + /*11546*/ uint16(xCondSlashR), + 11555, // 0 + 11559, // 1 + 11563, // 2 + 11567, // 3 + 11571, // 4 + 11575, // 5 + 11579, // 6 + 11583, // 7 + /*11555*/ uint16(xSetOp), uint16(FADD), + /*11557*/ uint16(xArgM32fp), + /*11558*/ uint16(xMatch), + /*11559*/ uint16(xSetOp), uint16(FMUL), + /*11561*/ uint16(xArgM32fp), + /*11562*/ uint16(xMatch), + /*11563*/ uint16(xSetOp), uint16(FCOM), + /*11565*/ uint16(xArgM32fp), + /*11566*/ uint16(xMatch), + /*11567*/ uint16(xSetOp), uint16(FCOMP), + /*11569*/ uint16(xArgM32fp), + /*11570*/ uint16(xMatch), + /*11571*/ uint16(xSetOp), uint16(FSUB), + /*11573*/ uint16(xArgM32fp), + /*11574*/ uint16(xMatch), + /*11575*/ uint16(xSetOp), uint16(FSUBR), + /*11577*/ uint16(xArgM32fp), + /*11578*/ uint16(xMatch), + /*11579*/ uint16(xSetOp), uint16(FDIV), + /*11581*/ uint16(xArgM32fp), + /*11582*/ uint16(xMatch), + /*11583*/ uint16(xSetOp), uint16(FDIVR), + /*11585*/ uint16(xArgM32fp), + /*11586*/ uint16(xMatch), + /*11587*/ uint16(xSetOp), uint16(FADD), + /*11589*/ uint16(xArgST), + /*11590*/ uint16(xArgSTi), + /*11591*/ uint16(xMatch), + /*11592*/ uint16(xSetOp), uint16(FMUL), + /*11594*/ uint16(xArgST), + /*11595*/ uint16(xArgSTi), + /*11596*/ uint16(xMatch), + /*11597*/ uint16(xSetOp), uint16(FCOM), /*11599*/ uint16(xArgSTi), /*11600*/ uint16(xMatch), - /*11601*/ uint16(xSetOp), uint16(FDIVR), - /*11603*/ uint16(xArgST), - /*11604*/ uint16(xArgSTi), - /*11605*/ uint16(xMatch), - /*11606*/ uint16(xCondByte), 42, - 0xc0, 11729, - 0xc1, 11729, - 0xc2, 11729, - 0xc3, 11729, - 0xc4, 11729, - 0xc5, 11729, - 0xc6, 11729, - 0xc7, 11729, - 0xc8, 11733, - 0xc9, 11733, - 0xca, 11733, - 0xcb, 11733, - 0xcc, 11733, - 0xcd, 11733, - 0xce, 11733, - 0xcf, 11733, - 0xD0, 11737, - 0xE0, 11740, - 0xE1, 11743, - 0xE4, 11746, - 0xE5, 11749, - 0xE8, 11752, - 0xE9, 11755, - 0xEA, 11758, - 0xEB, 11761, - 0xEC, 11764, - 0xF0, 11767, - 0xF1, 11770, - 0xF2, 11773, - 0xF3, 11776, - 0xF4, 11779, - 0xF5, 11782, - 0xF6, 11785, - 0xF7, 11788, - 0xF8, 11791, - 0xF9, 11794, - 0xFA, 11797, - 0xFB, 11800, - 0xFC, 11803, - 0xFD, 11806, - 0xFE, 11809, - 0xFF, 11812, - /*11692*/ uint16(xCondSlashR), - 11701, // 0 + /*11601*/ uint16(xSetOp), uint16(FCOMP), + /*11603*/ uint16(xArgSTi), + /*11604*/ uint16(xMatch), + /*11605*/ uint16(xSetOp), uint16(FSUB), + /*11607*/ uint16(xArgST), + /*11608*/ uint16(xArgSTi), + /*11609*/ uint16(xMatch), + /*11610*/ uint16(xSetOp), uint16(FSUBR), + /*11612*/ uint16(xArgST), + /*11613*/ uint16(xArgSTi), + /*11614*/ uint16(xMatch), + /*11615*/ uint16(xSetOp), uint16(FDIV), + /*11617*/ uint16(xArgST), + /*11618*/ uint16(xArgSTi), + /*11619*/ uint16(xMatch), + /*11620*/ uint16(xSetOp), uint16(FDIVR), + /*11622*/ uint16(xArgST), + /*11623*/ uint16(xArgSTi), + /*11624*/ uint16(xMatch), + /*11625*/ uint16(xCondByte), 44, + 0xc0, 11752, + 0xc1, 11752, + 0xc2, 11752, + 0xc3, 11752, + 0xc4, 11752, + 0xc5, 11752, + 0xc6, 11752, + 0xc7, 11752, + 0xc8, 11756, + 0xc9, 11756, + 0xca, 11756, + 0xcb, 11756, + 0xcc, 11756, + 0xcd, 11756, + 0xce, 11756, + 0xcf, 11756, + 0xD0, 11760, + 0xE0, 11763, + 0xE1, 11766, + 0xE4, 11769, + 0xE5, 11772, + 0xE8, 11775, + 0xE9, 11778, + 0xEA, 11781, + 0xEB, 11784, + 0xEC, 11787, + 0xED, 11790, + 0xEE, 11793, + 0xF0, 11796, + 0xF1, 11799, + 0xF2, 11802, + 0xF3, 11805, + 0xF4, 11808, + 0xF5, 11811, + 0xF6, 11814, + 0xF7, 11817, + 0xF8, 11820, + 0xF9, 11823, + 0xFA, 11826, + 0xFB, 11829, + 0xFC, 11832, + 0xFD, 11835, + 0xFE, 11838, + 0xFF, 11841, + /*11715*/ uint16(xCondSlashR), + 11724, // 0 0, // 1 - 11705, // 2 - 11709, // 3 - 11713, // 4 - 11717, // 5 - 11721, // 6 - 11725, // 7 - /*11701*/ uint16(xSetOp), uint16(FLD), - /*11703*/ uint16(xArgM32fp), - /*11704*/ uint16(xMatch), - /*11705*/ uint16(xSetOp), uint16(FST), - /*11707*/ uint16(xArgM32fp), - /*11708*/ uint16(xMatch), - /*11709*/ uint16(xSetOp), uint16(FSTP), - /*11711*/ uint16(xArgM32fp), - /*11712*/ uint16(xMatch), - /*11713*/ uint16(xSetOp), uint16(FLDENV), - /*11715*/ uint16(xArgM1428byte), - /*11716*/ uint16(xMatch), - /*11717*/ uint16(xSetOp), uint16(FLDCW), - /*11719*/ uint16(xArgM2byte), - /*11720*/ uint16(xMatch), - /*11721*/ uint16(xSetOp), uint16(FNSTENV), - /*11723*/ uint16(xArgM1428byte), - /*11724*/ uint16(xMatch), - /*11725*/ uint16(xSetOp), uint16(FNSTCW), - /*11727*/ uint16(xArgM2byte), - /*11728*/ uint16(xMatch), - /*11729*/ uint16(xSetOp), uint16(FLD), - /*11731*/ uint16(xArgSTi), - /*11732*/ uint16(xMatch), - /*11733*/ uint16(xSetOp), uint16(FXCH), - /*11735*/ uint16(xArgSTi), - /*11736*/ uint16(xMatch), - /*11737*/ uint16(xSetOp), uint16(FNOP), + 11728, // 2 + 11732, // 3 + 11736, // 4 + 11740, // 5 + 11744, // 6 + 11748, // 7 + /*11724*/ uint16(xSetOp), uint16(FLD), + /*11726*/ uint16(xArgM32fp), + /*11727*/ uint16(xMatch), + /*11728*/ uint16(xSetOp), uint16(FST), + /*11730*/ uint16(xArgM32fp), + /*11731*/ uint16(xMatch), + /*11732*/ uint16(xSetOp), uint16(FSTP), + /*11734*/ uint16(xArgM32fp), + /*11735*/ uint16(xMatch), + /*11736*/ uint16(xSetOp), uint16(FLDENV), + /*11738*/ uint16(xArgM1428byte), /*11739*/ uint16(xMatch), - /*11740*/ uint16(xSetOp), uint16(FCHS), - /*11742*/ uint16(xMatch), - /*11743*/ uint16(xSetOp), uint16(FABS), - /*11745*/ uint16(xMatch), - /*11746*/ uint16(xSetOp), uint16(FTST), - /*11748*/ uint16(xMatch), - /*11749*/ uint16(xSetOp), uint16(FXAM), + /*11740*/ uint16(xSetOp), uint16(FLDCW), + /*11742*/ uint16(xArgM2byte), + /*11743*/ uint16(xMatch), + /*11744*/ uint16(xSetOp), uint16(FNSTENV), + /*11746*/ uint16(xArgM1428byte), + /*11747*/ uint16(xMatch), + /*11748*/ uint16(xSetOp), uint16(FNSTCW), + /*11750*/ uint16(xArgM2byte), /*11751*/ uint16(xMatch), - /*11752*/ uint16(xSetOp), uint16(FLD1), - /*11754*/ uint16(xMatch), - /*11755*/ uint16(xSetOp), uint16(FLDL2T), - /*11757*/ uint16(xMatch), - /*11758*/ uint16(xSetOp), uint16(FLDL2E), - /*11760*/ uint16(xMatch), - /*11761*/ uint16(xSetOp), uint16(FLDPI), - /*11763*/ uint16(xMatch), - /*11764*/ uint16(xSetOp), uint16(FLDLG2), - /*11766*/ uint16(xMatch), - /*11767*/ uint16(xSetOp), uint16(F2XM1), - /*11769*/ uint16(xMatch), - /*11770*/ uint16(xSetOp), uint16(FYL2X), - /*11772*/ uint16(xMatch), - /*11773*/ uint16(xSetOp), uint16(FPTAN), - /*11775*/ uint16(xMatch), - /*11776*/ uint16(xSetOp), uint16(FPATAN), - /*11778*/ uint16(xMatch), - /*11779*/ uint16(xSetOp), uint16(FXTRACT), - /*11781*/ uint16(xMatch), - /*11782*/ uint16(xSetOp), uint16(FPREM1), - /*11784*/ uint16(xMatch), - /*11785*/ uint16(xSetOp), uint16(FDECSTP), - /*11787*/ uint16(xMatch), - /*11788*/ uint16(xSetOp), uint16(FINCSTP), - /*11790*/ uint16(xMatch), - /*11791*/ uint16(xSetOp), uint16(FPREM), - /*11793*/ uint16(xMatch), - /*11794*/ uint16(xSetOp), uint16(FYL2XP1), - /*11796*/ uint16(xMatch), - /*11797*/ uint16(xSetOp), uint16(FSQRT), - /*11799*/ uint16(xMatch), - /*11800*/ uint16(xSetOp), uint16(FSINCOS), - /*11802*/ uint16(xMatch), - /*11803*/ uint16(xSetOp), uint16(FRNDINT), - /*11805*/ uint16(xMatch), - /*11806*/ uint16(xSetOp), uint16(FSCALE), - /*11808*/ uint16(xMatch), - /*11809*/ uint16(xSetOp), uint16(FSIN), - /*11811*/ uint16(xMatch), - /*11812*/ uint16(xSetOp), uint16(FCOS), - /*11814*/ uint16(xMatch), - /*11815*/ uint16(xCondByte), 33, - 0xc0, 11924, - 0xc1, 11924, - 0xc2, 11924, - 0xc3, 11924, - 0xc4, 11924, - 0xc5, 11924, - 0xc6, 11924, - 0xc7, 11924, - 0xc8, 11929, - 0xc9, 11929, - 0xca, 11929, - 0xcb, 11929, - 0xcc, 11929, - 0xcd, 11929, - 0xce, 11929, - 0xcf, 11929, - 0xd0, 11934, - 0xd1, 11934, - 0xd2, 11934, - 0xd3, 11934, - 0xd4, 11934, - 0xd5, 11934, - 0xd6, 11934, - 0xd7, 11934, - 0xd8, 11939, - 0xd9, 11939, - 0xda, 11939, - 0xdb, 11939, - 0xdc, 11939, - 0xdd, 11939, - 0xde, 11939, - 0xdf, 11939, - 0xE9, 11944, - /*11883*/ uint16(xCondSlashR), - 11892, // 0 - 11896, // 1 - 11900, // 2 - 11904, // 3 - 11908, // 4 - 11912, // 5 - 11916, // 6 - 11920, // 7 - /*11892*/ uint16(xSetOp), uint16(FIADD), - /*11894*/ uint16(xArgM32int), - /*11895*/ uint16(xMatch), - /*11896*/ uint16(xSetOp), uint16(FIMUL), - /*11898*/ uint16(xArgM32int), - /*11899*/ uint16(xMatch), - /*11900*/ uint16(xSetOp), uint16(FICOM), - /*11902*/ uint16(xArgM32int), - /*11903*/ uint16(xMatch), - /*11904*/ uint16(xSetOp), uint16(FICOMP), - /*11906*/ uint16(xArgM32int), - /*11907*/ uint16(xMatch), - /*11908*/ uint16(xSetOp), uint16(FISUB), - /*11910*/ uint16(xArgM32int), - /*11911*/ uint16(xMatch), - /*11912*/ uint16(xSetOp), uint16(FISUBR), - /*11914*/ uint16(xArgM32int), - /*11915*/ uint16(xMatch), - /*11916*/ uint16(xSetOp), uint16(FIDIV), - /*11918*/ uint16(xArgM32int), - /*11919*/ uint16(xMatch), - /*11920*/ uint16(xSetOp), uint16(FIDIVR), - /*11922*/ uint16(xArgM32int), - /*11923*/ uint16(xMatch), - /*11924*/ uint16(xSetOp), uint16(FCMOVB), - /*11926*/ uint16(xArgST), - /*11927*/ uint16(xArgSTi), + /*11752*/ uint16(xSetOp), uint16(FLD), + /*11754*/ uint16(xArgSTi), + /*11755*/ uint16(xMatch), + /*11756*/ uint16(xSetOp), uint16(FXCH), + /*11758*/ uint16(xArgSTi), + /*11759*/ uint16(xMatch), + /*11760*/ uint16(xSetOp), uint16(FNOP), + /*11762*/ uint16(xMatch), + /*11763*/ uint16(xSetOp), uint16(FCHS), + /*11765*/ uint16(xMatch), + /*11766*/ uint16(xSetOp), uint16(FABS), + /*11768*/ uint16(xMatch), + /*11769*/ uint16(xSetOp), uint16(FTST), + /*11771*/ uint16(xMatch), + /*11772*/ uint16(xSetOp), uint16(FXAM), + /*11774*/ uint16(xMatch), + /*11775*/ uint16(xSetOp), uint16(FLD1), + /*11777*/ uint16(xMatch), + /*11778*/ uint16(xSetOp), uint16(FLDL2T), + /*11780*/ uint16(xMatch), + /*11781*/ uint16(xSetOp), uint16(FLDL2E), + /*11783*/ uint16(xMatch), + /*11784*/ uint16(xSetOp), uint16(FLDPI), + /*11786*/ uint16(xMatch), + /*11787*/ uint16(xSetOp), uint16(FLDLG2), + /*11789*/ uint16(xMatch), + /*11790*/ uint16(xSetOp), uint16(FLDLN2), + /*11792*/ uint16(xMatch), + /*11793*/ uint16(xSetOp), uint16(FLDZ), + /*11795*/ uint16(xMatch), + /*11796*/ uint16(xSetOp), uint16(F2XM1), + /*11798*/ uint16(xMatch), + /*11799*/ uint16(xSetOp), uint16(FYL2X), + /*11801*/ uint16(xMatch), + /*11802*/ uint16(xSetOp), uint16(FPTAN), + /*11804*/ uint16(xMatch), + /*11805*/ uint16(xSetOp), uint16(FPATAN), + /*11807*/ uint16(xMatch), + /*11808*/ uint16(xSetOp), uint16(FXTRACT), + /*11810*/ uint16(xMatch), + /*11811*/ uint16(xSetOp), uint16(FPREM1), + /*11813*/ uint16(xMatch), + /*11814*/ uint16(xSetOp), uint16(FDECSTP), + /*11816*/ uint16(xMatch), + /*11817*/ uint16(xSetOp), uint16(FINCSTP), + /*11819*/ uint16(xMatch), + /*11820*/ uint16(xSetOp), uint16(FPREM), + /*11822*/ uint16(xMatch), + /*11823*/ uint16(xSetOp), uint16(FYL2XP1), + /*11825*/ uint16(xMatch), + /*11826*/ uint16(xSetOp), uint16(FSQRT), + /*11828*/ uint16(xMatch), + /*11829*/ uint16(xSetOp), uint16(FSINCOS), + /*11831*/ uint16(xMatch), + /*11832*/ uint16(xSetOp), uint16(FRNDINT), + /*11834*/ uint16(xMatch), + /*11835*/ uint16(xSetOp), uint16(FSCALE), + /*11837*/ uint16(xMatch), + /*11838*/ uint16(xSetOp), uint16(FSIN), + /*11840*/ uint16(xMatch), + /*11841*/ uint16(xSetOp), uint16(FCOS), + /*11843*/ uint16(xMatch), + /*11844*/ uint16(xCondByte), 33, + 0xc0, 11953, + 0xc1, 11953, + 0xc2, 11953, + 0xc3, 11953, + 0xc4, 11953, + 0xc5, 11953, + 0xc6, 11953, + 0xc7, 11953, + 0xc8, 11958, + 0xc9, 11958, + 0xca, 11958, + 0xcb, 11958, + 0xcc, 11958, + 0xcd, 11958, + 0xce, 11958, + 0xcf, 11958, + 0xd0, 11963, + 0xd1, 11963, + 0xd2, 11963, + 0xd3, 11963, + 0xd4, 11963, + 0xd5, 11963, + 0xd6, 11963, + 0xd7, 11963, + 0xd8, 11968, + 0xd9, 11968, + 0xda, 11968, + 0xdb, 11968, + 0xdc, 11968, + 0xdd, 11968, + 0xde, 11968, + 0xdf, 11968, + 0xE9, 11973, + /*11912*/ uint16(xCondSlashR), + 11921, // 0 + 11925, // 1 + 11929, // 2 + 11933, // 3 + 11937, // 4 + 11941, // 5 + 11945, // 6 + 11949, // 7 + /*11921*/ uint16(xSetOp), uint16(FIADD), + /*11923*/ uint16(xArgM32int), + /*11924*/ uint16(xMatch), + /*11925*/ uint16(xSetOp), uint16(FIMUL), + /*11927*/ uint16(xArgM32int), /*11928*/ uint16(xMatch), - /*11929*/ uint16(xSetOp), uint16(FCMOVE), - /*11931*/ uint16(xArgST), - /*11932*/ uint16(xArgSTi), - /*11933*/ uint16(xMatch), - /*11934*/ uint16(xSetOp), uint16(FCMOVBE), - /*11936*/ uint16(xArgST), - /*11937*/ uint16(xArgSTi), - /*11938*/ uint16(xMatch), - /*11939*/ uint16(xSetOp), uint16(FCMOVU), - /*11941*/ uint16(xArgST), - /*11942*/ uint16(xArgSTi), - /*11943*/ uint16(xMatch), - /*11944*/ uint16(xSetOp), uint16(FUCOMPP), - /*11946*/ uint16(xMatch), - /*11947*/ uint16(xCondByte), 50, - 0xc0, 12082, - 0xc1, 12082, - 0xc2, 12082, - 0xc3, 12082, - 0xc4, 12082, - 0xc5, 12082, - 0xc6, 12082, - 0xc7, 12082, - 0xc8, 12087, - 0xc9, 12087, - 0xca, 12087, - 0xcb, 12087, - 0xcc, 12087, - 0xcd, 12087, - 0xce, 12087, - 0xcf, 12087, - 0xd0, 12092, - 0xd1, 12092, - 0xd2, 12092, - 0xd3, 12092, - 0xd4, 12092, - 0xd5, 12092, - 0xd6, 12092, - 0xd7, 12092, - 0xd8, 12097, - 0xd9, 12097, - 0xda, 12097, - 0xdb, 12097, - 0xdc, 12097, - 0xdd, 12097, - 0xde, 12097, - 0xdf, 12097, - 0xE2, 12102, - 0xE3, 12105, - 0xe8, 12108, - 0xe9, 12108, - 0xea, 12108, - 0xeb, 12108, - 0xec, 12108, - 0xed, 12108, - 0xee, 12108, - 0xef, 12108, - 0xf0, 12113, - 0xf1, 12113, - 0xf2, 12113, - 0xf3, 12113, - 0xf4, 12113, - 0xf5, 12113, - 0xf6, 12113, - 0xf7, 12113, - /*12049*/ uint16(xCondSlashR), - 12058, // 0 - 12062, // 1 - 12066, // 2 - 12070, // 3 + /*11929*/ uint16(xSetOp), uint16(FICOM), + /*11931*/ uint16(xArgM32int), + /*11932*/ uint16(xMatch), + /*11933*/ uint16(xSetOp), uint16(FICOMP), + /*11935*/ uint16(xArgM32int), + /*11936*/ uint16(xMatch), + /*11937*/ uint16(xSetOp), uint16(FISUB), + /*11939*/ uint16(xArgM32int), + /*11940*/ uint16(xMatch), + /*11941*/ uint16(xSetOp), uint16(FISUBR), + /*11943*/ uint16(xArgM32int), + /*11944*/ uint16(xMatch), + /*11945*/ uint16(xSetOp), uint16(FIDIV), + /*11947*/ uint16(xArgM32int), + /*11948*/ uint16(xMatch), + /*11949*/ uint16(xSetOp), uint16(FIDIVR), + /*11951*/ uint16(xArgM32int), + /*11952*/ uint16(xMatch), + /*11953*/ uint16(xSetOp), uint16(FCMOVB), + /*11955*/ uint16(xArgST), + /*11956*/ uint16(xArgSTi), + /*11957*/ uint16(xMatch), + /*11958*/ uint16(xSetOp), uint16(FCMOVE), + /*11960*/ uint16(xArgST), + /*11961*/ uint16(xArgSTi), + /*11962*/ uint16(xMatch), + /*11963*/ uint16(xSetOp), uint16(FCMOVBE), + /*11965*/ uint16(xArgST), + /*11966*/ uint16(xArgSTi), + /*11967*/ uint16(xMatch), + /*11968*/ uint16(xSetOp), uint16(FCMOVU), + /*11970*/ uint16(xArgST), + /*11971*/ uint16(xArgSTi), + /*11972*/ uint16(xMatch), + /*11973*/ uint16(xSetOp), uint16(FUCOMPP), + /*11975*/ uint16(xMatch), + /*11976*/ uint16(xCondByte), 50, + 0xc0, 12111, + 0xc1, 12111, + 0xc2, 12111, + 0xc3, 12111, + 0xc4, 12111, + 0xc5, 12111, + 0xc6, 12111, + 0xc7, 12111, + 0xc8, 12116, + 0xc9, 12116, + 0xca, 12116, + 0xcb, 12116, + 0xcc, 12116, + 0xcd, 12116, + 0xce, 12116, + 0xcf, 12116, + 0xd0, 12121, + 0xd1, 12121, + 0xd2, 12121, + 0xd3, 12121, + 0xd4, 12121, + 0xd5, 12121, + 0xd6, 12121, + 0xd7, 12121, + 0xd8, 12126, + 0xd9, 12126, + 0xda, 12126, + 0xdb, 12126, + 0xdc, 12126, + 0xdd, 12126, + 0xde, 12126, + 0xdf, 12126, + 0xE2, 12131, + 0xE3, 12134, + 0xe8, 12137, + 0xe9, 12137, + 0xea, 12137, + 0xeb, 12137, + 0xec, 12137, + 0xed, 12137, + 0xee, 12137, + 0xef, 12137, + 0xf0, 12142, + 0xf1, 12142, + 0xf2, 12142, + 0xf3, 12142, + 0xf4, 12142, + 0xf5, 12142, + 0xf6, 12142, + 0xf7, 12142, + /*12078*/ uint16(xCondSlashR), + 12087, // 0 + 12091, // 1 + 12095, // 2 + 12099, // 3 0, // 4 - 12074, // 5 + 12103, // 5 0, // 6 - 12078, // 7 - /*12058*/ uint16(xSetOp), uint16(FILD), - /*12060*/ uint16(xArgM32int), - /*12061*/ uint16(xMatch), - /*12062*/ uint16(xSetOp), uint16(FISTTP), - /*12064*/ uint16(xArgM32int), - /*12065*/ uint16(xMatch), - /*12066*/ uint16(xSetOp), uint16(FIST), - /*12068*/ uint16(xArgM32int), - /*12069*/ uint16(xMatch), - /*12070*/ uint16(xSetOp), uint16(FISTP), - /*12072*/ uint16(xArgM32int), - /*12073*/ uint16(xMatch), - /*12074*/ uint16(xSetOp), uint16(FLD), - /*12076*/ uint16(xArgM80fp), - /*12077*/ uint16(xMatch), - /*12078*/ uint16(xSetOp), uint16(FSTP), - /*12080*/ uint16(xArgM80fp), - /*12081*/ uint16(xMatch), - /*12082*/ uint16(xSetOp), uint16(FCMOVNB), - /*12084*/ uint16(xArgST), - /*12085*/ uint16(xArgSTi), - /*12086*/ uint16(xMatch), - /*12087*/ uint16(xSetOp), uint16(FCMOVNE), - /*12089*/ uint16(xArgST), - /*12090*/ uint16(xArgSTi), - /*12091*/ uint16(xMatch), - /*12092*/ uint16(xSetOp), uint16(FCMOVNBE), - /*12094*/ uint16(xArgST), - /*12095*/ uint16(xArgSTi), - /*12096*/ uint16(xMatch), - /*12097*/ uint16(xSetOp), uint16(FCMOVNU), - /*12099*/ uint16(xArgST), - /*12100*/ uint16(xArgSTi), - /*12101*/ uint16(xMatch), - /*12102*/ uint16(xSetOp), uint16(FNCLEX), - /*12104*/ uint16(xMatch), - /*12105*/ uint16(xSetOp), uint16(FNINIT), - /*12107*/ uint16(xMatch), - /*12108*/ uint16(xSetOp), uint16(FUCOMI), - /*12110*/ uint16(xArgST), - /*12111*/ uint16(xArgSTi), - /*12112*/ uint16(xMatch), - /*12113*/ uint16(xSetOp), uint16(FCOMI), - /*12115*/ uint16(xArgST), - /*12116*/ uint16(xArgSTi), - /*12117*/ uint16(xMatch), - /*12118*/ uint16(xCondByte), 48, - 0xc0, 12257, - 0xc1, 12257, - 0xc2, 12257, - 0xc3, 12257, - 0xc4, 12257, - 0xc5, 12257, - 0xc6, 12257, - 0xc7, 12257, - 0xc8, 12262, - 0xc9, 12262, - 0xca, 12262, - 0xcb, 12262, - 0xcc, 12262, - 0xcd, 12262, - 0xce, 12262, - 0xcf, 12262, - 0xe0, 12267, - 0xe1, 12267, - 0xe2, 12267, - 0xe3, 12267, - 0xe4, 12267, - 0xe5, 12267, - 0xe6, 12267, - 0xe7, 12267, - 0xe8, 12272, - 0xe9, 12272, - 0xea, 12272, - 0xeb, 12272, - 0xec, 12272, - 0xed, 12272, - 0xee, 12272, - 0xef, 12272, - 0xf0, 12277, - 0xf1, 12277, - 0xf2, 12277, - 0xf3, 12277, - 0xf4, 12277, - 0xf5, 12277, - 0xf6, 12277, - 0xf7, 12277, - 0xf8, 12282, - 0xf9, 12282, - 0xfa, 12282, - 0xfb, 12282, - 0xfc, 12282, - 0xfd, 12282, - 0xfe, 12282, - 0xff, 12282, - /*12216*/ uint16(xCondSlashR), - 12225, // 0 - 12229, // 1 - 12233, // 2 - 12237, // 3 - 12241, // 4 - 12245, // 5 - 12249, // 6 - 12253, // 7 - /*12225*/ uint16(xSetOp), uint16(FADD), - /*12227*/ uint16(xArgM64fp), - /*12228*/ uint16(xMatch), - /*12229*/ uint16(xSetOp), uint16(FMUL), - /*12231*/ uint16(xArgM64fp), - /*12232*/ uint16(xMatch), - /*12233*/ uint16(xSetOp), uint16(FCOM), - /*12235*/ uint16(xArgM64fp), - /*12236*/ uint16(xMatch), - /*12237*/ uint16(xSetOp), uint16(FCOMP), - /*12239*/ uint16(xArgM64fp), - /*12240*/ uint16(xMatch), - /*12241*/ uint16(xSetOp), uint16(FSUB), - /*12243*/ uint16(xArgM64fp), - /*12244*/ uint16(xMatch), - /*12245*/ uint16(xSetOp), uint16(FSUBR), - /*12247*/ uint16(xArgM64fp), - /*12248*/ uint16(xMatch), - /*12249*/ uint16(xSetOp), uint16(FDIV), - /*12251*/ uint16(xArgM64fp), - /*12252*/ uint16(xMatch), - /*12253*/ uint16(xSetOp), uint16(FDIVR), - /*12255*/ uint16(xArgM64fp), - /*12256*/ uint16(xMatch), - /*12257*/ uint16(xSetOp), uint16(FADD), - /*12259*/ uint16(xArgSTi), - /*12260*/ uint16(xArgST), + 12107, // 7 + /*12087*/ uint16(xSetOp), uint16(FILD), + /*12089*/ uint16(xArgM32int), + /*12090*/ uint16(xMatch), + /*12091*/ uint16(xSetOp), uint16(FISTTP), + /*12093*/ uint16(xArgM32int), + /*12094*/ uint16(xMatch), + /*12095*/ uint16(xSetOp), uint16(FIST), + /*12097*/ uint16(xArgM32int), + /*12098*/ uint16(xMatch), + /*12099*/ uint16(xSetOp), uint16(FISTP), + /*12101*/ uint16(xArgM32int), + /*12102*/ uint16(xMatch), + /*12103*/ uint16(xSetOp), uint16(FLD), + /*12105*/ uint16(xArgM80fp), + /*12106*/ uint16(xMatch), + /*12107*/ uint16(xSetOp), uint16(FSTP), + /*12109*/ uint16(xArgM80fp), + /*12110*/ uint16(xMatch), + /*12111*/ uint16(xSetOp), uint16(FCMOVNB), + /*12113*/ uint16(xArgST), + /*12114*/ uint16(xArgSTi), + /*12115*/ uint16(xMatch), + /*12116*/ uint16(xSetOp), uint16(FCMOVNE), + /*12118*/ uint16(xArgST), + /*12119*/ uint16(xArgSTi), + /*12120*/ uint16(xMatch), + /*12121*/ uint16(xSetOp), uint16(FCMOVNBE), + /*12123*/ uint16(xArgST), + /*12124*/ uint16(xArgSTi), + /*12125*/ uint16(xMatch), + /*12126*/ uint16(xSetOp), uint16(FCMOVNU), + /*12128*/ uint16(xArgST), + /*12129*/ uint16(xArgSTi), + /*12130*/ uint16(xMatch), + /*12131*/ uint16(xSetOp), uint16(FNCLEX), + /*12133*/ uint16(xMatch), + /*12134*/ uint16(xSetOp), uint16(FNINIT), + /*12136*/ uint16(xMatch), + /*12137*/ uint16(xSetOp), uint16(FUCOMI), + /*12139*/ uint16(xArgST), + /*12140*/ uint16(xArgSTi), + /*12141*/ uint16(xMatch), + /*12142*/ uint16(xSetOp), uint16(FCOMI), + /*12144*/ uint16(xArgST), + /*12145*/ uint16(xArgSTi), + /*12146*/ uint16(xMatch), + /*12147*/ uint16(xCondByte), 48, + 0xc0, 12286, + 0xc1, 12286, + 0xc2, 12286, + 0xc3, 12286, + 0xc4, 12286, + 0xc5, 12286, + 0xc6, 12286, + 0xc7, 12286, + 0xc8, 12291, + 0xc9, 12291, + 0xca, 12291, + 0xcb, 12291, + 0xcc, 12291, + 0xcd, 12291, + 0xce, 12291, + 0xcf, 12291, + 0xe0, 12296, + 0xe1, 12296, + 0xe2, 12296, + 0xe3, 12296, + 0xe4, 12296, + 0xe5, 12296, + 0xe6, 12296, + 0xe7, 12296, + 0xe8, 12301, + 0xe9, 12301, + 0xea, 12301, + 0xeb, 12301, + 0xec, 12301, + 0xed, 12301, + 0xee, 12301, + 0xef, 12301, + 0xf0, 12306, + 0xf1, 12306, + 0xf2, 12306, + 0xf3, 12306, + 0xf4, 12306, + 0xf5, 12306, + 0xf6, 12306, + 0xf7, 12306, + 0xf8, 12311, + 0xf9, 12311, + 0xfa, 12311, + 0xfb, 12311, + 0xfc, 12311, + 0xfd, 12311, + 0xfe, 12311, + 0xff, 12311, + /*12245*/ uint16(xCondSlashR), + 12254, // 0 + 12258, // 1 + 12262, // 2 + 12266, // 3 + 12270, // 4 + 12274, // 5 + 12278, // 6 + 12282, // 7 + /*12254*/ uint16(xSetOp), uint16(FADD), + /*12256*/ uint16(xArgM64fp), + /*12257*/ uint16(xMatch), + /*12258*/ uint16(xSetOp), uint16(FMUL), + /*12260*/ uint16(xArgM64fp), /*12261*/ uint16(xMatch), - /*12262*/ uint16(xSetOp), uint16(FMUL), - /*12264*/ uint16(xArgSTi), - /*12265*/ uint16(xArgST), - /*12266*/ uint16(xMatch), - /*12267*/ uint16(xSetOp), uint16(FSUBR), - /*12269*/ uint16(xArgSTi), - /*12270*/ uint16(xArgST), - /*12271*/ uint16(xMatch), - /*12272*/ uint16(xSetOp), uint16(FSUB), - /*12274*/ uint16(xArgSTi), - /*12275*/ uint16(xArgST), - /*12276*/ uint16(xMatch), - /*12277*/ uint16(xSetOp), uint16(FDIVR), - /*12279*/ uint16(xArgSTi), - /*12280*/ uint16(xArgST), + /*12262*/ uint16(xSetOp), uint16(FCOM), + /*12264*/ uint16(xArgM64fp), + /*12265*/ uint16(xMatch), + /*12266*/ uint16(xSetOp), uint16(FCOMP), + /*12268*/ uint16(xArgM64fp), + /*12269*/ uint16(xMatch), + /*12270*/ uint16(xSetOp), uint16(FSUB), + /*12272*/ uint16(xArgM64fp), + /*12273*/ uint16(xMatch), + /*12274*/ uint16(xSetOp), uint16(FSUBR), + /*12276*/ uint16(xArgM64fp), + /*12277*/ uint16(xMatch), + /*12278*/ uint16(xSetOp), uint16(FDIV), + /*12280*/ uint16(xArgM64fp), /*12281*/ uint16(xMatch), - /*12282*/ uint16(xSetOp), uint16(FDIV), - /*12284*/ uint16(xArgSTi), - /*12285*/ uint16(xArgST), - /*12286*/ uint16(xMatch), - /*12287*/ uint16(xCondByte), 40, - 0xc0, 12406, - 0xc1, 12406, - 0xc2, 12406, - 0xc3, 12406, - 0xc4, 12406, - 0xc5, 12406, - 0xc6, 12406, - 0xc7, 12406, - 0xd0, 12410, - 0xd1, 12410, - 0xd2, 12410, - 0xd3, 12410, - 0xd4, 12410, - 0xd5, 12410, - 0xd6, 12410, - 0xd7, 12410, - 0xd8, 12414, - 0xd9, 12414, - 0xda, 12414, - 0xdb, 12414, - 0xdc, 12414, - 0xdd, 12414, - 0xde, 12414, - 0xdf, 12414, - 0xe0, 12418, - 0xe1, 12418, - 0xe2, 12418, - 0xe3, 12418, - 0xe4, 12418, - 0xe5, 12418, - 0xe6, 12418, - 0xe7, 12418, - 0xe8, 12422, - 0xe9, 12422, - 0xea, 12422, - 0xeb, 12422, - 0xec, 12422, - 0xed, 12422, - 0xee, 12422, - 0xef, 12422, - /*12369*/ uint16(xCondSlashR), - 12378, // 0 - 12382, // 1 - 12386, // 2 - 12390, // 3 - 12394, // 4 + /*12282*/ uint16(xSetOp), uint16(FDIVR), + /*12284*/ uint16(xArgM64fp), + /*12285*/ uint16(xMatch), + /*12286*/ uint16(xSetOp), uint16(FADD), + /*12288*/ uint16(xArgSTi), + /*12289*/ uint16(xArgST), + /*12290*/ uint16(xMatch), + /*12291*/ uint16(xSetOp), uint16(FMUL), + /*12293*/ uint16(xArgSTi), + /*12294*/ uint16(xArgST), + /*12295*/ uint16(xMatch), + /*12296*/ uint16(xSetOp), uint16(FSUBR), + /*12298*/ uint16(xArgSTi), + /*12299*/ uint16(xArgST), + /*12300*/ uint16(xMatch), + /*12301*/ uint16(xSetOp), uint16(FSUB), + /*12303*/ uint16(xArgSTi), + /*12304*/ uint16(xArgST), + /*12305*/ uint16(xMatch), + /*12306*/ uint16(xSetOp), uint16(FDIVR), + /*12308*/ uint16(xArgSTi), + /*12309*/ uint16(xArgST), + /*12310*/ uint16(xMatch), + /*12311*/ uint16(xSetOp), uint16(FDIV), + /*12313*/ uint16(xArgSTi), + /*12314*/ uint16(xArgST), + /*12315*/ uint16(xMatch), + /*12316*/ uint16(xCondByte), 40, + 0xc0, 12435, + 0xc1, 12435, + 0xc2, 12435, + 0xc3, 12435, + 0xc4, 12435, + 0xc5, 12435, + 0xc6, 12435, + 0xc7, 12435, + 0xd0, 12439, + 0xd1, 12439, + 0xd2, 12439, + 0xd3, 12439, + 0xd4, 12439, + 0xd5, 12439, + 0xd6, 12439, + 0xd7, 12439, + 0xd8, 12443, + 0xd9, 12443, + 0xda, 12443, + 0xdb, 12443, + 0xdc, 12443, + 0xdd, 12443, + 0xde, 12443, + 0xdf, 12443, + 0xe0, 12447, + 0xe1, 12447, + 0xe2, 12447, + 0xe3, 12447, + 0xe4, 12447, + 0xe5, 12447, + 0xe6, 12447, + 0xe7, 12447, + 0xe8, 12451, + 0xe9, 12451, + 0xea, 12451, + 0xeb, 12451, + 0xec, 12451, + 0xed, 12451, + 0xee, 12451, + 0xef, 12451, + /*12398*/ uint16(xCondSlashR), + 12407, // 0 + 12411, // 1 + 12415, // 2 + 12419, // 3 + 12423, // 4 0, // 5 - 12398, // 6 - 12402, // 7 - /*12378*/ uint16(xSetOp), uint16(FLD), - /*12380*/ uint16(xArgM64fp), - /*12381*/ uint16(xMatch), - /*12382*/ uint16(xSetOp), uint16(FISTTP), - /*12384*/ uint16(xArgM64int), - /*12385*/ uint16(xMatch), - /*12386*/ uint16(xSetOp), uint16(FST), - /*12388*/ uint16(xArgM64fp), - /*12389*/ uint16(xMatch), - /*12390*/ uint16(xSetOp), uint16(FSTP), - /*12392*/ uint16(xArgM64fp), - /*12393*/ uint16(xMatch), - /*12394*/ uint16(xSetOp), uint16(FRSTOR), - /*12396*/ uint16(xArgM94108byte), - /*12397*/ uint16(xMatch), - /*12398*/ uint16(xSetOp), uint16(FNSAVE), - /*12400*/ uint16(xArgM94108byte), - /*12401*/ uint16(xMatch), - /*12402*/ uint16(xSetOp), uint16(FNSTSW), - /*12404*/ uint16(xArgM2byte), - /*12405*/ uint16(xMatch), - /*12406*/ uint16(xSetOp), uint16(FFREE), - /*12408*/ uint16(xArgSTi), - /*12409*/ uint16(xMatch), - /*12410*/ uint16(xSetOp), uint16(FST), - /*12412*/ uint16(xArgSTi), - /*12413*/ uint16(xMatch), - /*12414*/ uint16(xSetOp), uint16(FSTP), - /*12416*/ uint16(xArgSTi), - /*12417*/ uint16(xMatch), - /*12418*/ uint16(xSetOp), uint16(FUCOM), - /*12420*/ uint16(xArgSTi), - /*12421*/ uint16(xMatch), - /*12422*/ uint16(xSetOp), uint16(FUCOMP), - /*12424*/ uint16(xArgSTi), - /*12425*/ uint16(xMatch), - /*12426*/ uint16(xCondByte), 49, - 0xc0, 12567, - 0xc1, 12567, - 0xc2, 12567, - 0xc3, 12567, - 0xc4, 12567, - 0xc5, 12567, - 0xc6, 12567, - 0xc7, 12567, - 0xc8, 12572, - 0xc9, 12572, - 0xca, 12572, - 0xcb, 12572, - 0xcc, 12572, - 0xcd, 12572, - 0xce, 12572, - 0xcf, 12572, - 0xD9, 12577, - 0xe0, 12580, - 0xe1, 12580, - 0xe2, 12580, - 0xe3, 12580, - 0xe4, 12580, - 0xe5, 12580, - 0xe6, 12580, - 0xe7, 12580, - 0xe8, 12585, - 0xe9, 12585, - 0xea, 12585, - 0xeb, 12585, - 0xec, 12585, - 0xed, 12585, - 0xee, 12585, - 0xef, 12585, - 0xf0, 12590, - 0xf1, 12590, - 0xf2, 12590, - 0xf3, 12590, - 0xf4, 12590, - 0xf5, 12590, - 0xf6, 12590, - 0xf7, 12590, - 0xf8, 12595, - 0xf9, 12595, - 0xfa, 12595, - 0xfb, 12595, - 0xfc, 12595, - 0xfd, 12595, - 0xfe, 12595, - 0xff, 12595, - /*12526*/ uint16(xCondSlashR), - 12535, // 0 - 12539, // 1 - 12543, // 2 - 12547, // 3 - 12551, // 4 - 12555, // 5 - 12559, // 6 - 12563, // 7 - /*12535*/ uint16(xSetOp), uint16(FIADD), - /*12537*/ uint16(xArgM16int), - /*12538*/ uint16(xMatch), - /*12539*/ uint16(xSetOp), uint16(FIMUL), - /*12541*/ uint16(xArgM16int), - /*12542*/ uint16(xMatch), - /*12543*/ uint16(xSetOp), uint16(FICOM), - /*12545*/ uint16(xArgM16int), - /*12546*/ uint16(xMatch), - /*12547*/ uint16(xSetOp), uint16(FICOMP), - /*12549*/ uint16(xArgM16int), - /*12550*/ uint16(xMatch), - /*12551*/ uint16(xSetOp), uint16(FISUB), - /*12553*/ uint16(xArgM16int), - /*12554*/ uint16(xMatch), - /*12555*/ uint16(xSetOp), uint16(FISUBR), - /*12557*/ uint16(xArgM16int), - /*12558*/ uint16(xMatch), - /*12559*/ uint16(xSetOp), uint16(FIDIV), - /*12561*/ uint16(xArgM16int), - /*12562*/ uint16(xMatch), - /*12563*/ uint16(xSetOp), uint16(FIDIVR), - /*12565*/ uint16(xArgM16int), - /*12566*/ uint16(xMatch), - /*12567*/ uint16(xSetOp), uint16(FADDP), - /*12569*/ uint16(xArgSTi), - /*12570*/ uint16(xArgST), + 12427, // 6 + 12431, // 7 + /*12407*/ uint16(xSetOp), uint16(FLD), + /*12409*/ uint16(xArgM64fp), + /*12410*/ uint16(xMatch), + /*12411*/ uint16(xSetOp), uint16(FISTTP), + /*12413*/ uint16(xArgM64int), + /*12414*/ uint16(xMatch), + /*12415*/ uint16(xSetOp), uint16(FST), + /*12417*/ uint16(xArgM64fp), + /*12418*/ uint16(xMatch), + /*12419*/ uint16(xSetOp), uint16(FSTP), + /*12421*/ uint16(xArgM64fp), + /*12422*/ uint16(xMatch), + /*12423*/ uint16(xSetOp), uint16(FRSTOR), + /*12425*/ uint16(xArgM94108byte), + /*12426*/ uint16(xMatch), + /*12427*/ uint16(xSetOp), uint16(FNSAVE), + /*12429*/ uint16(xArgM94108byte), + /*12430*/ uint16(xMatch), + /*12431*/ uint16(xSetOp), uint16(FNSTSW), + /*12433*/ uint16(xArgM2byte), + /*12434*/ uint16(xMatch), + /*12435*/ uint16(xSetOp), uint16(FFREE), + /*12437*/ uint16(xArgSTi), + /*12438*/ uint16(xMatch), + /*12439*/ uint16(xSetOp), uint16(FST), + /*12441*/ uint16(xArgSTi), + /*12442*/ uint16(xMatch), + /*12443*/ uint16(xSetOp), uint16(FSTP), + /*12445*/ uint16(xArgSTi), + /*12446*/ uint16(xMatch), + /*12447*/ uint16(xSetOp), uint16(FUCOM), + /*12449*/ uint16(xArgSTi), + /*12450*/ uint16(xMatch), + /*12451*/ uint16(xSetOp), uint16(FUCOMP), + /*12453*/ uint16(xArgSTi), + /*12454*/ uint16(xMatch), + /*12455*/ uint16(xCondByte), 49, + 0xc0, 12596, + 0xc1, 12596, + 0xc2, 12596, + 0xc3, 12596, + 0xc4, 12596, + 0xc5, 12596, + 0xc6, 12596, + 0xc7, 12596, + 0xc8, 12601, + 0xc9, 12601, + 0xca, 12601, + 0xcb, 12601, + 0xcc, 12601, + 0xcd, 12601, + 0xce, 12601, + 0xcf, 12601, + 0xD9, 12606, + 0xe0, 12609, + 0xe1, 12609, + 0xe2, 12609, + 0xe3, 12609, + 0xe4, 12609, + 0xe5, 12609, + 0xe6, 12609, + 0xe7, 12609, + 0xe8, 12614, + 0xe9, 12614, + 0xea, 12614, + 0xeb, 12614, + 0xec, 12614, + 0xed, 12614, + 0xee, 12614, + 0xef, 12614, + 0xf0, 12619, + 0xf1, 12619, + 0xf2, 12619, + 0xf3, 12619, + 0xf4, 12619, + 0xf5, 12619, + 0xf6, 12619, + 0xf7, 12619, + 0xf8, 12624, + 0xf9, 12624, + 0xfa, 12624, + 0xfb, 12624, + 0xfc, 12624, + 0xfd, 12624, + 0xfe, 12624, + 0xff, 12624, + /*12555*/ uint16(xCondSlashR), + 12564, // 0 + 12568, // 1 + 12572, // 2 + 12576, // 3 + 12580, // 4 + 12584, // 5 + 12588, // 6 + 12592, // 7 + /*12564*/ uint16(xSetOp), uint16(FIADD), + /*12566*/ uint16(xArgM16int), + /*12567*/ uint16(xMatch), + /*12568*/ uint16(xSetOp), uint16(FIMUL), + /*12570*/ uint16(xArgM16int), /*12571*/ uint16(xMatch), - /*12572*/ uint16(xSetOp), uint16(FMULP), - /*12574*/ uint16(xArgSTi), - /*12575*/ uint16(xArgST), - /*12576*/ uint16(xMatch), - /*12577*/ uint16(xSetOp), uint16(FCOMPP), + /*12572*/ uint16(xSetOp), uint16(FICOM), + /*12574*/ uint16(xArgM16int), + /*12575*/ uint16(xMatch), + /*12576*/ uint16(xSetOp), uint16(FICOMP), + /*12578*/ uint16(xArgM16int), /*12579*/ uint16(xMatch), - /*12580*/ uint16(xSetOp), uint16(FSUBRP), - /*12582*/ uint16(xArgSTi), - /*12583*/ uint16(xArgST), - /*12584*/ uint16(xMatch), - /*12585*/ uint16(xSetOp), uint16(FSUBP), - /*12587*/ uint16(xArgSTi), - /*12588*/ uint16(xArgST), - /*12589*/ uint16(xMatch), - /*12590*/ uint16(xSetOp), uint16(FDIVRP), - /*12592*/ uint16(xArgSTi), - /*12593*/ uint16(xArgST), - /*12594*/ uint16(xMatch), - /*12595*/ uint16(xSetOp), uint16(FDIVP), - /*12597*/ uint16(xArgSTi), - /*12598*/ uint16(xArgST), - /*12599*/ uint16(xMatch), - /*12600*/ uint16(xCondByte), 25, - 0xc0, 12693, - 0xc1, 12693, - 0xc2, 12693, - 0xc3, 12693, - 0xc4, 12693, - 0xc5, 12693, - 0xc6, 12693, - 0xc7, 12693, - 0xE0, 12697, - 0xe8, 12701, - 0xe9, 12701, - 0xea, 12701, - 0xeb, 12701, - 0xec, 12701, - 0xed, 12701, - 0xee, 12701, - 0xef, 12701, - 0xf0, 12706, - 0xf1, 12706, - 0xf2, 12706, - 0xf3, 12706, - 0xf4, 12706, - 0xf5, 12706, - 0xf6, 12706, - 0xf7, 12706, - /*12652*/ uint16(xCondSlashR), - 12661, // 0 - 12665, // 1 - 12669, // 2 - 12673, // 3 - 12677, // 4 - 12681, // 5 - 12685, // 6 - 12689, // 7 - /*12661*/ uint16(xSetOp), uint16(FILD), - /*12663*/ uint16(xArgM16int), - /*12664*/ uint16(xMatch), - /*12665*/ uint16(xSetOp), uint16(FISTTP), - /*12667*/ uint16(xArgM16int), - /*12668*/ uint16(xMatch), - /*12669*/ uint16(xSetOp), uint16(FIST), - /*12671*/ uint16(xArgM16int), - /*12672*/ uint16(xMatch), - /*12673*/ uint16(xSetOp), uint16(FISTP), - /*12675*/ uint16(xArgM16int), - /*12676*/ uint16(xMatch), - /*12677*/ uint16(xSetOp), uint16(FBLD), - /*12679*/ uint16(xArgM80dec), - /*12680*/ uint16(xMatch), - /*12681*/ uint16(xSetOp), uint16(FILD), - /*12683*/ uint16(xArgM64int), - /*12684*/ uint16(xMatch), - /*12685*/ uint16(xSetOp), uint16(FBSTP), - /*12687*/ uint16(xArgM80bcd), - /*12688*/ uint16(xMatch), - /*12689*/ uint16(xSetOp), uint16(FISTP), - /*12691*/ uint16(xArgM64int), - /*12692*/ uint16(xMatch), - /*12693*/ uint16(xSetOp), uint16(FFREEP), - /*12695*/ uint16(xArgSTi), - /*12696*/ uint16(xMatch), - /*12697*/ uint16(xSetOp), uint16(FNSTSW), - /*12699*/ uint16(xArgAX), - /*12700*/ uint16(xMatch), - /*12701*/ uint16(xSetOp), uint16(FUCOMIP), - /*12703*/ uint16(xArgST), - /*12704*/ uint16(xArgSTi), + /*12580*/ uint16(xSetOp), uint16(FISUB), + /*12582*/ uint16(xArgM16int), + /*12583*/ uint16(xMatch), + /*12584*/ uint16(xSetOp), uint16(FISUBR), + /*12586*/ uint16(xArgM16int), + /*12587*/ uint16(xMatch), + /*12588*/ uint16(xSetOp), uint16(FIDIV), + /*12590*/ uint16(xArgM16int), + /*12591*/ uint16(xMatch), + /*12592*/ uint16(xSetOp), uint16(FIDIVR), + /*12594*/ uint16(xArgM16int), + /*12595*/ uint16(xMatch), + /*12596*/ uint16(xSetOp), uint16(FADDP), + /*12598*/ uint16(xArgSTi), + /*12599*/ uint16(xArgST), + /*12600*/ uint16(xMatch), + /*12601*/ uint16(xSetOp), uint16(FMULP), + /*12603*/ uint16(xArgSTi), + /*12604*/ uint16(xArgST), + /*12605*/ uint16(xMatch), + /*12606*/ uint16(xSetOp), uint16(FCOMPP), + /*12608*/ uint16(xMatch), + /*12609*/ uint16(xSetOp), uint16(FSUBRP), + /*12611*/ uint16(xArgSTi), + /*12612*/ uint16(xArgST), + /*12613*/ uint16(xMatch), + /*12614*/ uint16(xSetOp), uint16(FSUBP), + /*12616*/ uint16(xArgSTi), + /*12617*/ uint16(xArgST), + /*12618*/ uint16(xMatch), + /*12619*/ uint16(xSetOp), uint16(FDIVRP), + /*12621*/ uint16(xArgSTi), + /*12622*/ uint16(xArgST), + /*12623*/ uint16(xMatch), + /*12624*/ uint16(xSetOp), uint16(FDIVP), + /*12626*/ uint16(xArgSTi), + /*12627*/ uint16(xArgST), + /*12628*/ uint16(xMatch), + /*12629*/ uint16(xCondByte), 25, + 0xc0, 12722, + 0xc1, 12722, + 0xc2, 12722, + 0xc3, 12722, + 0xc4, 12722, + 0xc5, 12722, + 0xc6, 12722, + 0xc7, 12722, + 0xE0, 12726, + 0xe8, 12730, + 0xe9, 12730, + 0xea, 12730, + 0xeb, 12730, + 0xec, 12730, + 0xed, 12730, + 0xee, 12730, + 0xef, 12730, + 0xf0, 12735, + 0xf1, 12735, + 0xf2, 12735, + 0xf3, 12735, + 0xf4, 12735, + 0xf5, 12735, + 0xf6, 12735, + 0xf7, 12735, + /*12681*/ uint16(xCondSlashR), + 12690, // 0 + 12694, // 1 + 12698, // 2 + 12702, // 3 + 12706, // 4 + 12710, // 5 + 12714, // 6 + 12718, // 7 + /*12690*/ uint16(xSetOp), uint16(FILD), + /*12692*/ uint16(xArgM16int), + /*12693*/ uint16(xMatch), + /*12694*/ uint16(xSetOp), uint16(FISTTP), + /*12696*/ uint16(xArgM16int), + /*12697*/ uint16(xMatch), + /*12698*/ uint16(xSetOp), uint16(FIST), + /*12700*/ uint16(xArgM16int), + /*12701*/ uint16(xMatch), + /*12702*/ uint16(xSetOp), uint16(FISTP), + /*12704*/ uint16(xArgM16int), /*12705*/ uint16(xMatch), - /*12706*/ uint16(xSetOp), uint16(FCOMIP), - /*12708*/ uint16(xArgST), - /*12709*/ uint16(xArgSTi), - /*12710*/ uint16(xMatch), - /*12711*/ uint16(xSetOp), uint16(LOOPNE), - /*12713*/ uint16(xReadCb), - /*12714*/ uint16(xArgRel8), - /*12715*/ uint16(xMatch), - /*12716*/ uint16(xSetOp), uint16(LOOPE), - /*12718*/ uint16(xReadCb), - /*12719*/ uint16(xArgRel8), - /*12720*/ uint16(xMatch), - /*12721*/ uint16(xSetOp), uint16(LOOP), - /*12723*/ uint16(xReadCb), - /*12724*/ uint16(xArgRel8), + /*12706*/ uint16(xSetOp), uint16(FBLD), + /*12708*/ uint16(xArgM80dec), + /*12709*/ uint16(xMatch), + /*12710*/ uint16(xSetOp), uint16(FILD), + /*12712*/ uint16(xArgM64int), + /*12713*/ uint16(xMatch), + /*12714*/ uint16(xSetOp), uint16(FBSTP), + /*12716*/ uint16(xArgM80bcd), + /*12717*/ uint16(xMatch), + /*12718*/ uint16(xSetOp), uint16(FISTP), + /*12720*/ uint16(xArgM64int), + /*12721*/ uint16(xMatch), + /*12722*/ uint16(xSetOp), uint16(FFREEP), + /*12724*/ uint16(xArgSTi), /*12725*/ uint16(xMatch), - /*12726*/ uint16(xCondIs64), 12729, 12743, - /*12729*/ uint16(xCondAddrSize), 12733, 12738, 0, - /*12733*/ uint16(xSetOp), uint16(JCXZ), - /*12735*/ uint16(xReadCb), - /*12736*/ uint16(xArgRel8), - /*12737*/ uint16(xMatch), - /*12738*/ uint16(xSetOp), uint16(JECXZ), - /*12740*/ uint16(xReadCb), - /*12741*/ uint16(xArgRel8), - /*12742*/ uint16(xMatch), - /*12743*/ uint16(xCondAddrSize), 0, 12738, 12747, - /*12747*/ uint16(xSetOp), uint16(JRCXZ), - /*12749*/ uint16(xReadCb), - /*12750*/ uint16(xArgRel8), - /*12751*/ uint16(xMatch), - /*12752*/ uint16(xSetOp), uint16(IN), - /*12754*/ uint16(xReadIb), - /*12755*/ uint16(xArgAL), - /*12756*/ uint16(xArgImm8u), - /*12757*/ uint16(xMatch), - /*12758*/ uint16(xCondDataSize), 12762, 12768, 12774, - /*12762*/ uint16(xSetOp), uint16(IN), - /*12764*/ uint16(xReadIb), - /*12765*/ uint16(xArgAX), - /*12766*/ uint16(xArgImm8u), - /*12767*/ uint16(xMatch), - /*12768*/ uint16(xSetOp), uint16(IN), - /*12770*/ uint16(xReadIb), - /*12771*/ uint16(xArgEAX), - /*12772*/ uint16(xArgImm8u), - /*12773*/ uint16(xMatch), - /*12774*/ uint16(xSetOp), uint16(IN), - /*12776*/ uint16(xReadIb), - /*12777*/ uint16(xArgEAX), - /*12778*/ uint16(xArgImm8u), - /*12779*/ uint16(xMatch), - /*12780*/ uint16(xSetOp), uint16(OUT), - /*12782*/ uint16(xReadIb), - /*12783*/ uint16(xArgImm8u), + /*12726*/ uint16(xSetOp), uint16(FNSTSW), + /*12728*/ uint16(xArgAX), + /*12729*/ uint16(xMatch), + /*12730*/ uint16(xSetOp), uint16(FUCOMIP), + /*12732*/ uint16(xArgST), + /*12733*/ uint16(xArgSTi), + /*12734*/ uint16(xMatch), + /*12735*/ uint16(xSetOp), uint16(FCOMIP), + /*12737*/ uint16(xArgST), + /*12738*/ uint16(xArgSTi), + /*12739*/ uint16(xMatch), + /*12740*/ uint16(xSetOp), uint16(LOOPNE), + /*12742*/ uint16(xReadCb), + /*12743*/ uint16(xArgRel8), + /*12744*/ uint16(xMatch), + /*12745*/ uint16(xSetOp), uint16(LOOPE), + /*12747*/ uint16(xReadCb), + /*12748*/ uint16(xArgRel8), + /*12749*/ uint16(xMatch), + /*12750*/ uint16(xSetOp), uint16(LOOP), + /*12752*/ uint16(xReadCb), + /*12753*/ uint16(xArgRel8), + /*12754*/ uint16(xMatch), + /*12755*/ uint16(xCondIs64), 12758, 12772, + /*12758*/ uint16(xCondAddrSize), 12762, 12767, 0, + /*12762*/ uint16(xSetOp), uint16(JCXZ), + /*12764*/ uint16(xReadCb), + /*12765*/ uint16(xArgRel8), + /*12766*/ uint16(xMatch), + /*12767*/ uint16(xSetOp), uint16(JECXZ), + /*12769*/ uint16(xReadCb), + /*12770*/ uint16(xArgRel8), + /*12771*/ uint16(xMatch), + /*12772*/ uint16(xCondAddrSize), 0, 12767, 12776, + /*12776*/ uint16(xSetOp), uint16(JRCXZ), + /*12778*/ uint16(xReadCb), + /*12779*/ uint16(xArgRel8), + /*12780*/ uint16(xMatch), + /*12781*/ uint16(xSetOp), uint16(IN), + /*12783*/ uint16(xReadIb), /*12784*/ uint16(xArgAL), - /*12785*/ uint16(xMatch), - /*12786*/ uint16(xCondPrefix), 3, - 0xC5, 12830, - 0xC4, 12816, - 0x0, 12794, - /*12794*/ uint16(xCondDataSize), 12798, 12804, 12810, - /*12798*/ uint16(xSetOp), uint16(OUT), - /*12800*/ uint16(xReadIb), + /*12785*/ uint16(xArgImm8u), + /*12786*/ uint16(xMatch), + /*12787*/ uint16(xCondDataSize), 12791, 12797, 12803, + /*12791*/ uint16(xSetOp), uint16(IN), + /*12793*/ uint16(xReadIb), + /*12794*/ uint16(xArgAX), + /*12795*/ uint16(xArgImm8u), + /*12796*/ uint16(xMatch), + /*12797*/ uint16(xSetOp), uint16(IN), + /*12799*/ uint16(xReadIb), + /*12800*/ uint16(xArgEAX), /*12801*/ uint16(xArgImm8u), - /*12802*/ uint16(xArgAX), - /*12803*/ uint16(xMatch), - /*12804*/ uint16(xSetOp), uint16(OUT), - /*12806*/ uint16(xReadIb), + /*12802*/ uint16(xMatch), + /*12803*/ uint16(xSetOp), uint16(IN), + /*12805*/ uint16(xReadIb), + /*12806*/ uint16(xArgEAX), /*12807*/ uint16(xArgImm8u), - /*12808*/ uint16(xArgEAX), - /*12809*/ uint16(xMatch), - /*12810*/ uint16(xSetOp), uint16(OUT), - /*12812*/ uint16(xReadIb), - /*12813*/ uint16(xArgImm8u), - /*12814*/ uint16(xArgEAX), - /*12815*/ uint16(xMatch), - /*12816*/ uint16(xCondPrefix), 1, - 0x66, 12820, - /*12820*/ uint16(xCondPrefix), 1, - 0x0F, 12824, - /*12824*/ uint16(xSetOp), uint16(VMOVNTDQ), - /*12826*/ uint16(xReadSlashR), - /*12827*/ uint16(xArgM256), - /*12828*/ uint16(xArgYmm1), - /*12829*/ uint16(xMatch), - /*12830*/ uint16(xCondPrefix), 1, - 0x66, 12834, - /*12834*/ uint16(xCondPrefix), 1, - 0x0F, 12838, - /*12838*/ uint16(xSetOp), uint16(VMOVNTDQ), - /*12840*/ uint16(xReadSlashR), - /*12841*/ uint16(xArgM256), - /*12842*/ uint16(xArgYmm1), - /*12843*/ uint16(xMatch), - /*12844*/ uint16(xCondIs64), 12847, 12861, - /*12847*/ uint16(xCondDataSize), 12851, 12856, 0, - /*12851*/ uint16(xSetOp), uint16(CALL), - /*12853*/ uint16(xReadCw), - /*12854*/ uint16(xArgRel16), - /*12855*/ uint16(xMatch), - /*12856*/ uint16(xSetOp), uint16(CALL), - /*12858*/ uint16(xReadCd), - /*12859*/ uint16(xArgRel32), - /*12860*/ uint16(xMatch), - /*12861*/ uint16(xCondDataSize), 12865, 12856, 12870, - /*12865*/ uint16(xSetOp), uint16(CALL), - /*12867*/ uint16(xReadCd), - /*12868*/ uint16(xArgRel32), - /*12869*/ uint16(xMatch), - /*12870*/ uint16(xSetOp), uint16(CALL), - /*12872*/ uint16(xReadCd), - /*12873*/ uint16(xArgRel32), - /*12874*/ uint16(xMatch), - /*12875*/ uint16(xCondIs64), 12878, 12892, - /*12878*/ uint16(xCondDataSize), 12882, 12887, 0, - /*12882*/ uint16(xSetOp), uint16(JMP), - /*12884*/ uint16(xReadCw), - /*12885*/ uint16(xArgRel16), - /*12886*/ uint16(xMatch), - /*12887*/ uint16(xSetOp), uint16(JMP), - /*12889*/ uint16(xReadCd), - /*12890*/ uint16(xArgRel32), - /*12891*/ uint16(xMatch), - /*12892*/ uint16(xCondDataSize), 12896, 12887, 12901, - /*12896*/ uint16(xSetOp), uint16(JMP), - /*12898*/ uint16(xReadCd), - /*12899*/ uint16(xArgRel32), - /*12900*/ uint16(xMatch), - /*12901*/ uint16(xSetOp), uint16(JMP), - /*12903*/ uint16(xReadCd), - /*12904*/ uint16(xArgRel32), - /*12905*/ uint16(xMatch), - /*12906*/ uint16(xCondIs64), 12909, 0, - /*12909*/ uint16(xCondDataSize), 12913, 12918, 0, - /*12913*/ uint16(xSetOp), uint16(LJMP), - /*12915*/ uint16(xReadCd), - /*12916*/ uint16(xArgPtr16colon16), - /*12917*/ uint16(xMatch), - /*12918*/ uint16(xSetOp), uint16(LJMP), - /*12920*/ uint16(xReadCp), - /*12921*/ uint16(xArgPtr16colon32), - /*12922*/ uint16(xMatch), - /*12923*/ uint16(xSetOp), uint16(JMP), - /*12925*/ uint16(xReadCb), - /*12926*/ uint16(xArgRel8), - /*12927*/ uint16(xMatch), - /*12928*/ uint16(xSetOp), uint16(IN), - /*12930*/ uint16(xArgAL), - /*12931*/ uint16(xArgDX), - /*12932*/ uint16(xMatch), - /*12933*/ uint16(xCondDataSize), 12937, 12942, 12947, - /*12937*/ uint16(xSetOp), uint16(IN), - /*12939*/ uint16(xArgAX), - /*12940*/ uint16(xArgDX), - /*12941*/ uint16(xMatch), - /*12942*/ uint16(xSetOp), uint16(IN), - /*12944*/ uint16(xArgEAX), - /*12945*/ uint16(xArgDX), + /*12808*/ uint16(xMatch), + /*12809*/ uint16(xSetOp), uint16(OUT), + /*12811*/ uint16(xReadIb), + /*12812*/ uint16(xArgImm8u), + /*12813*/ uint16(xArgAL), + /*12814*/ uint16(xMatch), + /*12815*/ uint16(xCondPrefix), 3, + 0xC5, 12859, + 0xC4, 12845, + 0x0, 12823, + /*12823*/ uint16(xCondDataSize), 12827, 12833, 12839, + /*12827*/ uint16(xSetOp), uint16(OUT), + /*12829*/ uint16(xReadIb), + /*12830*/ uint16(xArgImm8u), + /*12831*/ uint16(xArgAX), + /*12832*/ uint16(xMatch), + /*12833*/ uint16(xSetOp), uint16(OUT), + /*12835*/ uint16(xReadIb), + /*12836*/ uint16(xArgImm8u), + /*12837*/ uint16(xArgEAX), + /*12838*/ uint16(xMatch), + /*12839*/ uint16(xSetOp), uint16(OUT), + /*12841*/ uint16(xReadIb), + /*12842*/ uint16(xArgImm8u), + /*12843*/ uint16(xArgEAX), + /*12844*/ uint16(xMatch), + /*12845*/ uint16(xCondPrefix), 1, + 0x66, 12849, + /*12849*/ uint16(xCondPrefix), 1, + 0x0F, 12853, + /*12853*/ uint16(xSetOp), uint16(VMOVNTDQ), + /*12855*/ uint16(xReadSlashR), + /*12856*/ uint16(xArgM256), + /*12857*/ uint16(xArgYmm1), + /*12858*/ uint16(xMatch), + /*12859*/ uint16(xCondPrefix), 1, + 0x66, 12863, + /*12863*/ uint16(xCondPrefix), 1, + 0x0F, 12867, + /*12867*/ uint16(xSetOp), uint16(VMOVNTDQ), + /*12869*/ uint16(xReadSlashR), + /*12870*/ uint16(xArgM256), + /*12871*/ uint16(xArgYmm1), + /*12872*/ uint16(xMatch), + /*12873*/ uint16(xCondIs64), 12876, 12890, + /*12876*/ uint16(xCondDataSize), 12880, 12885, 0, + /*12880*/ uint16(xSetOp), uint16(CALL), + /*12882*/ uint16(xReadCw), + /*12883*/ uint16(xArgRel16), + /*12884*/ uint16(xMatch), + /*12885*/ uint16(xSetOp), uint16(CALL), + /*12887*/ uint16(xReadCd), + /*12888*/ uint16(xArgRel32), + /*12889*/ uint16(xMatch), + /*12890*/ uint16(xCondDataSize), 12894, 12885, 12899, + /*12894*/ uint16(xSetOp), uint16(CALL), + /*12896*/ uint16(xReadCd), + /*12897*/ uint16(xArgRel32), + /*12898*/ uint16(xMatch), + /*12899*/ uint16(xSetOp), uint16(CALL), + /*12901*/ uint16(xReadCd), + /*12902*/ uint16(xArgRel32), + /*12903*/ uint16(xMatch), + /*12904*/ uint16(xCondIs64), 12907, 12921, + /*12907*/ uint16(xCondDataSize), 12911, 12916, 0, + /*12911*/ uint16(xSetOp), uint16(JMP), + /*12913*/ uint16(xReadCw), + /*12914*/ uint16(xArgRel16), + /*12915*/ uint16(xMatch), + /*12916*/ uint16(xSetOp), uint16(JMP), + /*12918*/ uint16(xReadCd), + /*12919*/ uint16(xArgRel32), + /*12920*/ uint16(xMatch), + /*12921*/ uint16(xCondDataSize), 12925, 12916, 12930, + /*12925*/ uint16(xSetOp), uint16(JMP), + /*12927*/ uint16(xReadCd), + /*12928*/ uint16(xArgRel32), + /*12929*/ uint16(xMatch), + /*12930*/ uint16(xSetOp), uint16(JMP), + /*12932*/ uint16(xReadCd), + /*12933*/ uint16(xArgRel32), + /*12934*/ uint16(xMatch), + /*12935*/ uint16(xCondIs64), 12938, 0, + /*12938*/ uint16(xCondDataSize), 12942, 12947, 0, + /*12942*/ uint16(xSetOp), uint16(LJMP), + /*12944*/ uint16(xReadCd), + /*12945*/ uint16(xArgPtr16colon16), /*12946*/ uint16(xMatch), - /*12947*/ uint16(xSetOp), uint16(IN), - /*12949*/ uint16(xArgEAX), - /*12950*/ uint16(xArgDX), + /*12947*/ uint16(xSetOp), uint16(LJMP), + /*12949*/ uint16(xReadCp), + /*12950*/ uint16(xArgPtr16colon32), /*12951*/ uint16(xMatch), - /*12952*/ uint16(xSetOp), uint16(OUT), - /*12954*/ uint16(xArgDX), - /*12955*/ uint16(xArgAL), + /*12952*/ uint16(xSetOp), uint16(JMP), + /*12954*/ uint16(xReadCb), + /*12955*/ uint16(xArgRel8), /*12956*/ uint16(xMatch), - /*12957*/ uint16(xCondDataSize), 12961, 12966, 12971, - /*12961*/ uint16(xSetOp), uint16(OUT), - /*12963*/ uint16(xArgDX), - /*12964*/ uint16(xArgAX), - /*12965*/ uint16(xMatch), - /*12966*/ uint16(xSetOp), uint16(OUT), - /*12968*/ uint16(xArgDX), - /*12969*/ uint16(xArgEAX), + /*12957*/ uint16(xSetOp), uint16(IN), + /*12959*/ uint16(xArgAL), + /*12960*/ uint16(xArgDX), + /*12961*/ uint16(xMatch), + /*12962*/ uint16(xCondDataSize), 12966, 12971, 12976, + /*12966*/ uint16(xSetOp), uint16(IN), + /*12968*/ uint16(xArgAX), + /*12969*/ uint16(xArgDX), /*12970*/ uint16(xMatch), - /*12971*/ uint16(xSetOp), uint16(OUT), - /*12973*/ uint16(xArgDX), - /*12974*/ uint16(xArgEAX), + /*12971*/ uint16(xSetOp), uint16(IN), + /*12973*/ uint16(xArgEAX), + /*12974*/ uint16(xArgDX), /*12975*/ uint16(xMatch), - /*12976*/ uint16(xSetOp), uint16(ICEBP), - /*12978*/ uint16(xMatch), - /*12979*/ uint16(xSetOp), uint16(HLT), - /*12981*/ uint16(xMatch), - /*12982*/ uint16(xSetOp), uint16(CMC), - /*12984*/ uint16(xMatch), - /*12985*/ uint16(xCondSlashR), - 12994, // 0 - 0, // 1 - 13000, // 2 - 13004, // 3 - 13008, // 4 - 13012, // 5 - 13016, // 6 - 13020, // 7 - /*12994*/ uint16(xSetOp), uint16(TEST), - /*12996*/ uint16(xReadIb), - /*12997*/ uint16(xArgRM8), - /*12998*/ uint16(xArgImm8u), + /*12976*/ uint16(xSetOp), uint16(IN), + /*12978*/ uint16(xArgEAX), + /*12979*/ uint16(xArgDX), + /*12980*/ uint16(xMatch), + /*12981*/ uint16(xSetOp), uint16(OUT), + /*12983*/ uint16(xArgDX), + /*12984*/ uint16(xArgAL), + /*12985*/ uint16(xMatch), + /*12986*/ uint16(xCondDataSize), 12990, 12995, 13000, + /*12990*/ uint16(xSetOp), uint16(OUT), + /*12992*/ uint16(xArgDX), + /*12993*/ uint16(xArgAX), + /*12994*/ uint16(xMatch), + /*12995*/ uint16(xSetOp), uint16(OUT), + /*12997*/ uint16(xArgDX), + /*12998*/ uint16(xArgEAX), /*12999*/ uint16(xMatch), - /*13000*/ uint16(xSetOp), uint16(NOT), - /*13002*/ uint16(xArgRM8), - /*13003*/ uint16(xMatch), - /*13004*/ uint16(xSetOp), uint16(NEG), - /*13006*/ uint16(xArgRM8), + /*13000*/ uint16(xSetOp), uint16(OUT), + /*13002*/ uint16(xArgDX), + /*13003*/ uint16(xArgEAX), + /*13004*/ uint16(xMatch), + /*13005*/ uint16(xSetOp), uint16(ICEBP), /*13007*/ uint16(xMatch), - /*13008*/ uint16(xSetOp), uint16(MUL), - /*13010*/ uint16(xArgRM8), - /*13011*/ uint16(xMatch), - /*13012*/ uint16(xSetOp), uint16(IMUL), - /*13014*/ uint16(xArgRM8), - /*13015*/ uint16(xMatch), - /*13016*/ uint16(xSetOp), uint16(DIV), - /*13018*/ uint16(xArgRM8), - /*13019*/ uint16(xMatch), - /*13020*/ uint16(xSetOp), uint16(IDIV), - /*13022*/ uint16(xArgRM8), - /*13023*/ uint16(xMatch), - /*13024*/ uint16(xCondSlashR), - 13033, // 0 + /*13008*/ uint16(xSetOp), uint16(HLT), + /*13010*/ uint16(xMatch), + /*13011*/ uint16(xSetOp), uint16(CMC), + /*13013*/ uint16(xMatch), + /*13014*/ uint16(xCondSlashR), + 13023, // 0 + 0, // 1 + 13029, // 2 + 13033, // 3 + 13037, // 4 + 13041, // 5 + 13045, // 6 + 13049, // 7 + /*13023*/ uint16(xSetOp), uint16(TEST), + /*13025*/ uint16(xReadIb), + /*13026*/ uint16(xArgRM8), + /*13027*/ uint16(xArgImm8u), + /*13028*/ uint16(xMatch), + /*13029*/ uint16(xSetOp), uint16(NOT), + /*13031*/ uint16(xArgRM8), + /*13032*/ uint16(xMatch), + /*13033*/ uint16(xSetOp), uint16(NEG), + /*13035*/ uint16(xArgRM8), + /*13036*/ uint16(xMatch), + /*13037*/ uint16(xSetOp), uint16(MUL), + /*13039*/ uint16(xArgRM8), + /*13040*/ uint16(xMatch), + /*13041*/ uint16(xSetOp), uint16(IMUL), + /*13043*/ uint16(xArgRM8), + /*13044*/ uint16(xMatch), + /*13045*/ uint16(xSetOp), uint16(DIV), + /*13047*/ uint16(xArgRM8), + /*13048*/ uint16(xMatch), + /*13049*/ uint16(xSetOp), uint16(IDIV), + /*13051*/ uint16(xArgRM8), + /*13052*/ uint16(xMatch), + /*13053*/ uint16(xCondSlashR), + 13062, // 0 0, // 1 - 13062, // 2 - 13085, // 3 - 13108, // 4 - 13131, // 5 - 13154, // 6 - 13177, // 7 - /*13033*/ uint16(xCondIs64), 13036, 13052, - /*13036*/ uint16(xCondDataSize), 13040, 13046, 0, - /*13040*/ uint16(xSetOp), uint16(TEST), - /*13042*/ uint16(xReadIw), - /*13043*/ uint16(xArgRM16), - /*13044*/ uint16(xArgImm16), - /*13045*/ uint16(xMatch), - /*13046*/ uint16(xSetOp), uint16(TEST), - /*13048*/ uint16(xReadId), - /*13049*/ uint16(xArgRM32), - /*13050*/ uint16(xArgImm32), - /*13051*/ uint16(xMatch), - /*13052*/ uint16(xCondDataSize), 13040, 13046, 13056, - /*13056*/ uint16(xSetOp), uint16(TEST), - /*13058*/ uint16(xReadId), - /*13059*/ uint16(xArgRM64), - /*13060*/ uint16(xArgImm32), - /*13061*/ uint16(xMatch), - /*13062*/ uint16(xCondIs64), 13065, 13077, - /*13065*/ uint16(xCondDataSize), 13069, 13073, 0, - /*13069*/ uint16(xSetOp), uint16(NOT), - /*13071*/ uint16(xArgRM16), - /*13072*/ uint16(xMatch), - /*13073*/ uint16(xSetOp), uint16(NOT), - /*13075*/ uint16(xArgRM32), - /*13076*/ uint16(xMatch), - /*13077*/ uint16(xCondDataSize), 13069, 13073, 13081, - /*13081*/ uint16(xSetOp), uint16(NOT), - /*13083*/ uint16(xArgRM64), - /*13084*/ uint16(xMatch), - /*13085*/ uint16(xCondIs64), 13088, 13100, - /*13088*/ uint16(xCondDataSize), 13092, 13096, 0, - /*13092*/ uint16(xSetOp), uint16(NEG), - /*13094*/ uint16(xArgRM16), - /*13095*/ uint16(xMatch), - /*13096*/ uint16(xSetOp), uint16(NEG), - /*13098*/ uint16(xArgRM32), - /*13099*/ uint16(xMatch), - /*13100*/ uint16(xCondDataSize), 13092, 13096, 13104, - /*13104*/ uint16(xSetOp), uint16(NEG), - /*13106*/ uint16(xArgRM64), - /*13107*/ uint16(xMatch), - /*13108*/ uint16(xCondIs64), 13111, 13123, - /*13111*/ uint16(xCondDataSize), 13115, 13119, 0, - /*13115*/ uint16(xSetOp), uint16(MUL), - /*13117*/ uint16(xArgRM16), - /*13118*/ uint16(xMatch), - /*13119*/ uint16(xSetOp), uint16(MUL), - /*13121*/ uint16(xArgRM32), - /*13122*/ uint16(xMatch), - /*13123*/ uint16(xCondDataSize), 13115, 13119, 13127, - /*13127*/ uint16(xSetOp), uint16(MUL), - /*13129*/ uint16(xArgRM64), - /*13130*/ uint16(xMatch), - /*13131*/ uint16(xCondIs64), 13134, 13146, - /*13134*/ uint16(xCondDataSize), 13138, 13142, 0, - /*13138*/ uint16(xSetOp), uint16(IMUL), - /*13140*/ uint16(xArgRM16), - /*13141*/ uint16(xMatch), - /*13142*/ uint16(xSetOp), uint16(IMUL), - /*13144*/ uint16(xArgRM32), - /*13145*/ uint16(xMatch), - /*13146*/ uint16(xCondDataSize), 13138, 13142, 13150, - /*13150*/ uint16(xSetOp), uint16(IMUL), - /*13152*/ uint16(xArgRM64), - /*13153*/ uint16(xMatch), - /*13154*/ uint16(xCondIs64), 13157, 13169, - /*13157*/ uint16(xCondDataSize), 13161, 13165, 0, - /*13161*/ uint16(xSetOp), uint16(DIV), - /*13163*/ uint16(xArgRM16), - /*13164*/ uint16(xMatch), - /*13165*/ uint16(xSetOp), uint16(DIV), - /*13167*/ uint16(xArgRM32), - /*13168*/ uint16(xMatch), - /*13169*/ uint16(xCondDataSize), 13161, 13165, 13173, - /*13173*/ uint16(xSetOp), uint16(DIV), - /*13175*/ uint16(xArgRM64), - /*13176*/ uint16(xMatch), - /*13177*/ uint16(xCondIs64), 13180, 13192, - /*13180*/ uint16(xCondDataSize), 13184, 13188, 0, - /*13184*/ uint16(xSetOp), uint16(IDIV), - /*13186*/ uint16(xArgRM16), - /*13187*/ uint16(xMatch), - /*13188*/ uint16(xSetOp), uint16(IDIV), - /*13190*/ uint16(xArgRM32), - /*13191*/ uint16(xMatch), - /*13192*/ uint16(xCondDataSize), 13184, 13188, 13196, - /*13196*/ uint16(xSetOp), uint16(IDIV), - /*13198*/ uint16(xArgRM64), - /*13199*/ uint16(xMatch), - /*13200*/ uint16(xSetOp), uint16(CLC), - /*13202*/ uint16(xMatch), - /*13203*/ uint16(xSetOp), uint16(STC), + 13091, // 2 + 13114, // 3 + 13137, // 4 + 13160, // 5 + 13183, // 6 + 13206, // 7 + /*13062*/ uint16(xCondIs64), 13065, 13081, + /*13065*/ uint16(xCondDataSize), 13069, 13075, 0, + /*13069*/ uint16(xSetOp), uint16(TEST), + /*13071*/ uint16(xReadIw), + /*13072*/ uint16(xArgRM16), + /*13073*/ uint16(xArgImm16), + /*13074*/ uint16(xMatch), + /*13075*/ uint16(xSetOp), uint16(TEST), + /*13077*/ uint16(xReadId), + /*13078*/ uint16(xArgRM32), + /*13079*/ uint16(xArgImm32), + /*13080*/ uint16(xMatch), + /*13081*/ uint16(xCondDataSize), 13069, 13075, 13085, + /*13085*/ uint16(xSetOp), uint16(TEST), + /*13087*/ uint16(xReadId), + /*13088*/ uint16(xArgRM64), + /*13089*/ uint16(xArgImm32), + /*13090*/ uint16(xMatch), + /*13091*/ uint16(xCondIs64), 13094, 13106, + /*13094*/ uint16(xCondDataSize), 13098, 13102, 0, + /*13098*/ uint16(xSetOp), uint16(NOT), + /*13100*/ uint16(xArgRM16), + /*13101*/ uint16(xMatch), + /*13102*/ uint16(xSetOp), uint16(NOT), + /*13104*/ uint16(xArgRM32), + /*13105*/ uint16(xMatch), + /*13106*/ uint16(xCondDataSize), 13098, 13102, 13110, + /*13110*/ uint16(xSetOp), uint16(NOT), + /*13112*/ uint16(xArgRM64), + /*13113*/ uint16(xMatch), + /*13114*/ uint16(xCondIs64), 13117, 13129, + /*13117*/ uint16(xCondDataSize), 13121, 13125, 0, + /*13121*/ uint16(xSetOp), uint16(NEG), + /*13123*/ uint16(xArgRM16), + /*13124*/ uint16(xMatch), + /*13125*/ uint16(xSetOp), uint16(NEG), + /*13127*/ uint16(xArgRM32), + /*13128*/ uint16(xMatch), + /*13129*/ uint16(xCondDataSize), 13121, 13125, 13133, + /*13133*/ uint16(xSetOp), uint16(NEG), + /*13135*/ uint16(xArgRM64), + /*13136*/ uint16(xMatch), + /*13137*/ uint16(xCondIs64), 13140, 13152, + /*13140*/ uint16(xCondDataSize), 13144, 13148, 0, + /*13144*/ uint16(xSetOp), uint16(MUL), + /*13146*/ uint16(xArgRM16), + /*13147*/ uint16(xMatch), + /*13148*/ uint16(xSetOp), uint16(MUL), + /*13150*/ uint16(xArgRM32), + /*13151*/ uint16(xMatch), + /*13152*/ uint16(xCondDataSize), 13144, 13148, 13156, + /*13156*/ uint16(xSetOp), uint16(MUL), + /*13158*/ uint16(xArgRM64), + /*13159*/ uint16(xMatch), + /*13160*/ uint16(xCondIs64), 13163, 13175, + /*13163*/ uint16(xCondDataSize), 13167, 13171, 0, + /*13167*/ uint16(xSetOp), uint16(IMUL), + /*13169*/ uint16(xArgRM16), + /*13170*/ uint16(xMatch), + /*13171*/ uint16(xSetOp), uint16(IMUL), + /*13173*/ uint16(xArgRM32), + /*13174*/ uint16(xMatch), + /*13175*/ uint16(xCondDataSize), 13167, 13171, 13179, + /*13179*/ uint16(xSetOp), uint16(IMUL), + /*13181*/ uint16(xArgRM64), + /*13182*/ uint16(xMatch), + /*13183*/ uint16(xCondIs64), 13186, 13198, + /*13186*/ uint16(xCondDataSize), 13190, 13194, 0, + /*13190*/ uint16(xSetOp), uint16(DIV), + /*13192*/ uint16(xArgRM16), + /*13193*/ uint16(xMatch), + /*13194*/ uint16(xSetOp), uint16(DIV), + /*13196*/ uint16(xArgRM32), + /*13197*/ uint16(xMatch), + /*13198*/ uint16(xCondDataSize), 13190, 13194, 13202, + /*13202*/ uint16(xSetOp), uint16(DIV), + /*13204*/ uint16(xArgRM64), /*13205*/ uint16(xMatch), - /*13206*/ uint16(xSetOp), uint16(CLI), - /*13208*/ uint16(xMatch), - /*13209*/ uint16(xSetOp), uint16(STI), - /*13211*/ uint16(xMatch), - /*13212*/ uint16(xSetOp), uint16(CLD), - /*13214*/ uint16(xMatch), - /*13215*/ uint16(xSetOp), uint16(STD), - /*13217*/ uint16(xMatch), - /*13218*/ uint16(xCondSlashR), - 13227, // 0 - 13231, // 1 + /*13206*/ uint16(xCondIs64), 13209, 13221, + /*13209*/ uint16(xCondDataSize), 13213, 13217, 0, + /*13213*/ uint16(xSetOp), uint16(IDIV), + /*13215*/ uint16(xArgRM16), + /*13216*/ uint16(xMatch), + /*13217*/ uint16(xSetOp), uint16(IDIV), + /*13219*/ uint16(xArgRM32), + /*13220*/ uint16(xMatch), + /*13221*/ uint16(xCondDataSize), 13213, 13217, 13225, + /*13225*/ uint16(xSetOp), uint16(IDIV), + /*13227*/ uint16(xArgRM64), + /*13228*/ uint16(xMatch), + /*13229*/ uint16(xSetOp), uint16(CLC), + /*13231*/ uint16(xMatch), + /*13232*/ uint16(xSetOp), uint16(STC), + /*13234*/ uint16(xMatch), + /*13235*/ uint16(xSetOp), uint16(CLI), + /*13237*/ uint16(xMatch), + /*13238*/ uint16(xSetOp), uint16(STI), + /*13240*/ uint16(xMatch), + /*13241*/ uint16(xSetOp), uint16(CLD), + /*13243*/ uint16(xMatch), + /*13244*/ uint16(xSetOp), uint16(STD), + /*13246*/ uint16(xMatch), + /*13247*/ uint16(xCondSlashR), + 13256, // 0 + 13260, // 1 0, // 2 0, // 3 0, // 4 0, // 5 0, // 6 0, // 7 - /*13227*/ uint16(xSetOp), uint16(INC), - /*13229*/ uint16(xArgRM8), - /*13230*/ uint16(xMatch), - /*13231*/ uint16(xSetOp), uint16(DEC), - /*13233*/ uint16(xArgRM8), - /*13234*/ uint16(xMatch), - /*13235*/ uint16(xCondSlashR), - 13244, // 0 - 13267, // 1 - 13290, // 2 - 13309, // 3 - 13332, // 4 - 13351, // 5 - 13374, // 6 + /*13256*/ uint16(xSetOp), uint16(INC), + /*13258*/ uint16(xArgRM8), + /*13259*/ uint16(xMatch), + /*13260*/ uint16(xSetOp), uint16(DEC), + /*13262*/ uint16(xArgRM8), + /*13263*/ uint16(xMatch), + /*13264*/ uint16(xCondSlashR), + 13273, // 0 + 13296, // 1 + 13319, // 2 + 13338, // 3 + 13361, // 4 + 13380, // 5 + 13403, // 6 0, // 7 - /*13244*/ uint16(xCondIs64), 13247, 13259, - /*13247*/ uint16(xCondDataSize), 13251, 13255, 0, - /*13251*/ uint16(xSetOp), uint16(INC), - /*13253*/ uint16(xArgRM16), - /*13254*/ uint16(xMatch), - /*13255*/ uint16(xSetOp), uint16(INC), - /*13257*/ uint16(xArgRM32), - /*13258*/ uint16(xMatch), - /*13259*/ uint16(xCondDataSize), 13251, 13255, 13263, - /*13263*/ uint16(xSetOp), uint16(INC), - /*13265*/ uint16(xArgRM64), - /*13266*/ uint16(xMatch), - /*13267*/ uint16(xCondIs64), 13270, 13282, - /*13270*/ uint16(xCondDataSize), 13274, 13278, 0, - /*13274*/ uint16(xSetOp), uint16(DEC), - /*13276*/ uint16(xArgRM16), - /*13277*/ uint16(xMatch), - /*13278*/ uint16(xSetOp), uint16(DEC), - /*13280*/ uint16(xArgRM32), - /*13281*/ uint16(xMatch), - /*13282*/ uint16(xCondDataSize), 13274, 13278, 13286, - /*13286*/ uint16(xSetOp), uint16(DEC), - /*13288*/ uint16(xArgRM64), - /*13289*/ uint16(xMatch), - /*13290*/ uint16(xCondIs64), 13293, 13305, - /*13293*/ uint16(xCondDataSize), 13297, 13301, 0, - /*13297*/ uint16(xSetOp), uint16(CALL), - /*13299*/ uint16(xArgRM16), - /*13300*/ uint16(xMatch), - /*13301*/ uint16(xSetOp), uint16(CALL), - /*13303*/ uint16(xArgRM32), - /*13304*/ uint16(xMatch), - /*13305*/ uint16(xSetOp), uint16(CALL), - /*13307*/ uint16(xArgRM64), - /*13308*/ uint16(xMatch), - /*13309*/ uint16(xCondIs64), 13312, 13324, - /*13312*/ uint16(xCondDataSize), 13316, 13320, 0, - /*13316*/ uint16(xSetOp), uint16(LCALL), - /*13318*/ uint16(xArgM16colon16), - /*13319*/ uint16(xMatch), - /*13320*/ uint16(xSetOp), uint16(LCALL), - /*13322*/ uint16(xArgM16colon32), - /*13323*/ uint16(xMatch), - /*13324*/ uint16(xCondDataSize), 13316, 13320, 13328, - /*13328*/ uint16(xSetOp), uint16(LCALL), - /*13330*/ uint16(xArgM16colon64), - /*13331*/ uint16(xMatch), - /*13332*/ uint16(xCondIs64), 13335, 13347, - /*13335*/ uint16(xCondDataSize), 13339, 13343, 0, - /*13339*/ uint16(xSetOp), uint16(JMP), - /*13341*/ uint16(xArgRM16), - /*13342*/ uint16(xMatch), - /*13343*/ uint16(xSetOp), uint16(JMP), - /*13345*/ uint16(xArgRM32), - /*13346*/ uint16(xMatch), - /*13347*/ uint16(xSetOp), uint16(JMP), - /*13349*/ uint16(xArgRM64), - /*13350*/ uint16(xMatch), - /*13351*/ uint16(xCondIs64), 13354, 13366, - /*13354*/ uint16(xCondDataSize), 13358, 13362, 0, - /*13358*/ uint16(xSetOp), uint16(LJMP), - /*13360*/ uint16(xArgM16colon16), - /*13361*/ uint16(xMatch), - /*13362*/ uint16(xSetOp), uint16(LJMP), - /*13364*/ uint16(xArgM16colon32), - /*13365*/ uint16(xMatch), - /*13366*/ uint16(xCondDataSize), 13358, 13362, 13370, - /*13370*/ uint16(xSetOp), uint16(LJMP), - /*13372*/ uint16(xArgM16colon64), - /*13373*/ uint16(xMatch), - /*13374*/ uint16(xCondIs64), 13377, 13389, - /*13377*/ uint16(xCondDataSize), 13381, 13385, 0, - /*13381*/ uint16(xSetOp), uint16(PUSH), - /*13383*/ uint16(xArgRM16), - /*13384*/ uint16(xMatch), - /*13385*/ uint16(xSetOp), uint16(PUSH), - /*13387*/ uint16(xArgRM32), - /*13388*/ uint16(xMatch), - /*13389*/ uint16(xCondDataSize), 13381, 13393, 13397, - /*13393*/ uint16(xSetOp), uint16(PUSH), - /*13395*/ uint16(xArgRM64), - /*13396*/ uint16(xMatch), - /*13397*/ uint16(xSetOp), uint16(PUSH), - /*13399*/ uint16(xArgRM64), - /*13400*/ uint16(xMatch), + /*13273*/ uint16(xCondIs64), 13276, 13288, + /*13276*/ uint16(xCondDataSize), 13280, 13284, 0, + /*13280*/ uint16(xSetOp), uint16(INC), + /*13282*/ uint16(xArgRM16), + /*13283*/ uint16(xMatch), + /*13284*/ uint16(xSetOp), uint16(INC), + /*13286*/ uint16(xArgRM32), + /*13287*/ uint16(xMatch), + /*13288*/ uint16(xCondDataSize), 13280, 13284, 13292, + /*13292*/ uint16(xSetOp), uint16(INC), + /*13294*/ uint16(xArgRM64), + /*13295*/ uint16(xMatch), + /*13296*/ uint16(xCondIs64), 13299, 13311, + /*13299*/ uint16(xCondDataSize), 13303, 13307, 0, + /*13303*/ uint16(xSetOp), uint16(DEC), + /*13305*/ uint16(xArgRM16), + /*13306*/ uint16(xMatch), + /*13307*/ uint16(xSetOp), uint16(DEC), + /*13309*/ uint16(xArgRM32), + /*13310*/ uint16(xMatch), + /*13311*/ uint16(xCondDataSize), 13303, 13307, 13315, + /*13315*/ uint16(xSetOp), uint16(DEC), + /*13317*/ uint16(xArgRM64), + /*13318*/ uint16(xMatch), + /*13319*/ uint16(xCondIs64), 13322, 13334, + /*13322*/ uint16(xCondDataSize), 13326, 13330, 0, + /*13326*/ uint16(xSetOp), uint16(CALL), + /*13328*/ uint16(xArgRM16), + /*13329*/ uint16(xMatch), + /*13330*/ uint16(xSetOp), uint16(CALL), + /*13332*/ uint16(xArgRM32), + /*13333*/ uint16(xMatch), + /*13334*/ uint16(xSetOp), uint16(CALL), + /*13336*/ uint16(xArgRM64), + /*13337*/ uint16(xMatch), + /*13338*/ uint16(xCondIs64), 13341, 13353, + /*13341*/ uint16(xCondDataSize), 13345, 13349, 0, + /*13345*/ uint16(xSetOp), uint16(LCALL), + /*13347*/ uint16(xArgM16colon16), + /*13348*/ uint16(xMatch), + /*13349*/ uint16(xSetOp), uint16(LCALL), + /*13351*/ uint16(xArgM16colon32), + /*13352*/ uint16(xMatch), + /*13353*/ uint16(xCondDataSize), 13345, 13349, 13357, + /*13357*/ uint16(xSetOp), uint16(LCALL), + /*13359*/ uint16(xArgM16colon64), + /*13360*/ uint16(xMatch), + /*13361*/ uint16(xCondIs64), 13364, 13376, + /*13364*/ uint16(xCondDataSize), 13368, 13372, 0, + /*13368*/ uint16(xSetOp), uint16(JMP), + /*13370*/ uint16(xArgRM16), + /*13371*/ uint16(xMatch), + /*13372*/ uint16(xSetOp), uint16(JMP), + /*13374*/ uint16(xArgRM32), + /*13375*/ uint16(xMatch), + /*13376*/ uint16(xSetOp), uint16(JMP), + /*13378*/ uint16(xArgRM64), + /*13379*/ uint16(xMatch), + /*13380*/ uint16(xCondIs64), 13383, 13395, + /*13383*/ uint16(xCondDataSize), 13387, 13391, 0, + /*13387*/ uint16(xSetOp), uint16(LJMP), + /*13389*/ uint16(xArgM16colon16), + /*13390*/ uint16(xMatch), + /*13391*/ uint16(xSetOp), uint16(LJMP), + /*13393*/ uint16(xArgM16colon32), + /*13394*/ uint16(xMatch), + /*13395*/ uint16(xCondDataSize), 13387, 13391, 13399, + /*13399*/ uint16(xSetOp), uint16(LJMP), + /*13401*/ uint16(xArgM16colon64), + /*13402*/ uint16(xMatch), + /*13403*/ uint16(xCondIs64), 13406, 13418, + /*13406*/ uint16(xCondDataSize), 13410, 13414, 0, + /*13410*/ uint16(xSetOp), uint16(PUSH), + /*13412*/ uint16(xArgRM16), + /*13413*/ uint16(xMatch), + /*13414*/ uint16(xSetOp), uint16(PUSH), + /*13416*/ uint16(xArgRM32), + /*13417*/ uint16(xMatch), + /*13418*/ uint16(xCondDataSize), 13410, 13422, 13426, + /*13422*/ uint16(xSetOp), uint16(PUSH), + /*13424*/ uint16(xArgRM64), + /*13425*/ uint16(xMatch), + /*13426*/ uint16(xSetOp), uint16(PUSH), + /*13428*/ uint16(xArgRM64), + /*13429*/ uint16(xMatch), } const ( @@ -8838,7 +8854,9 @@ const ( FLDL2E FLDL2T FLDLG2 + FLDLN2 FLDPI + FLDZ FMUL FMULP FNCLEX @@ -9243,6 +9261,7 @@ const ( TZCNT UCOMISD UCOMISS + UD0 UD1 UD2 UNPCKHPD @@ -9453,7 +9472,9 @@ var opNames = [...]string{ FLDL2E: "FLDL2E", FLDL2T: "FLDL2T", FLDLG2: "FLDLG2", + FLDLN2: "FLDLN2", FLDPI: "FLDPI", + FLDZ: "FLDZ", FMUL: "FMUL", FMULP: "FMULP", FNCLEX: "FNCLEX", @@ -9858,6 +9879,7 @@ var opNames = [...]string{ TZCNT: "TZCNT", UCOMISD: "UCOMISD", UCOMISS: "UCOMISS", + UD0: "UD0", UD1: "UD1", UD2: "UD2", UNPCKHPD: "UNPCKHPD", diff --git a/vendor/golang.org/x/sys/internal/unsafeheader/unsafeheader.go b/vendor/golang.org/x/sys/internal/unsafeheader/unsafeheader.go deleted file mode 100644 index e07899b909..0000000000 --- a/vendor/golang.org/x/sys/internal/unsafeheader/unsafeheader.go +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2020 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 unsafeheader contains header declarations for the Go runtime's -// slice and string implementations. -// -// This package allows x/sys to use types equivalent to -// reflect.SliceHeader and reflect.StringHeader without introducing -// a dependency on the (relatively heavy) "reflect" package. -package unsafeheader - -import ( - "unsafe" -) - -// Slice is the runtime representation of a slice. -// It cannot be used safely or portably and its representation may change in a later release. -type Slice struct { - Data unsafe.Pointer - Len int - Cap int -} - -// String is the runtime representation of a string. -// It cannot be used safely or portably and its representation may change in a later release. -type String struct { - Data unsafe.Pointer - Len int -} diff --git a/vendor/golang.org/x/sys/unix/ptrace_darwin.go b/vendor/golang.org/x/sys/unix/ptrace_darwin.go index 39dba6ca6a..463c3eff7f 100644 --- a/vendor/golang.org/x/sys/unix/ptrace_darwin.go +++ b/vendor/golang.org/x/sys/unix/ptrace_darwin.go @@ -7,12 +7,6 @@ package unix -import "unsafe" - func ptrace(request int, pid int, addr uintptr, data uintptr) error { return ptrace1(request, pid, addr, data) } - -func ptracePtr(request int, pid int, addr uintptr, data unsafe.Pointer) error { - return ptrace1Ptr(request, pid, addr, data) -} diff --git a/vendor/golang.org/x/sys/unix/ptrace_ios.go b/vendor/golang.org/x/sys/unix/ptrace_ios.go index 9ea66330a9..ed0509a011 100644 --- a/vendor/golang.org/x/sys/unix/ptrace_ios.go +++ b/vendor/golang.org/x/sys/unix/ptrace_ios.go @@ -7,12 +7,6 @@ package unix -import "unsafe" - func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { return ENOTSUP } - -func ptracePtr(request int, pid int, addr uintptr, data unsafe.Pointer) (err error) { - return ENOTSUP -} diff --git a/vendor/golang.org/x/sys/unix/syscall_aix.go b/vendor/golang.org/x/sys/unix/syscall_aix.go index 9a6e5acacb..e94e6cdac8 100644 --- a/vendor/golang.org/x/sys/unix/syscall_aix.go +++ b/vendor/golang.org/x/sys/unix/syscall_aix.go @@ -487,8 +487,6 @@ func Fsync(fd int) error { //sys Unlinkat(dirfd int, path string, flags int) (err error) //sys Ustat(dev int, ubuf *Ustat_t) (err error) //sys write(fd int, p []byte) (n int, err error) -//sys readlen(fd int, p *byte, np int) (n int, err error) = read -//sys writelen(fd int, p *byte, np int) (n int, err error) = write //sys Dup2(oldfd int, newfd int) (err error) //sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = posix_fadvise64 diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.go b/vendor/golang.org/x/sys/unix/syscall_darwin.go index 135cc3cd75..59542a897d 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin.go @@ -644,189 +644,3 @@ func SysctlKinfoProcSlice(name string, args ...int) ([]KinfoProc, error) { //sys write(fd int, p []byte) (n int, err error) //sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) //sys munmap(addr uintptr, length uintptr) (err error) -//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ -//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE - -/* - * Unimplemented - */ -// Profil -// Sigaction -// Sigprocmask -// Getlogin -// Sigpending -// Sigaltstack -// Ioctl -// Reboot -// Execve -// Vfork -// Sbrk -// Sstk -// Ovadvise -// Mincore -// Setitimer -// Swapon -// Select -// Sigsuspend -// Readv -// Writev -// Nfssvc -// Getfh -// Quotactl -// Csops -// Waitid -// Add_profil -// Kdebug_trace -// Sigreturn -// Atsocket -// Kqueue_from_portset_np -// Kqueue_portset -// Getattrlist -// Getdirentriesattr -// Searchfs -// Delete -// Copyfile -// Watchevent -// Waitevent -// Modwatch -// Fsctl -// Initgroups -// Posix_spawn -// Nfsclnt -// Fhopen -// Minherit -// Semsys -// Msgsys -// Shmsys -// Semctl -// Semget -// Semop -// Msgctl -// Msgget -// Msgsnd -// Msgrcv -// Shm_open -// Shm_unlink -// Sem_open -// Sem_close -// Sem_unlink -// Sem_wait -// Sem_trywait -// Sem_post -// Sem_getvalue -// Sem_init -// Sem_destroy -// Open_extended -// Umask_extended -// Stat_extended -// Lstat_extended -// Fstat_extended -// Chmod_extended -// Fchmod_extended -// Access_extended -// Settid -// Gettid -// Setsgroups -// Getsgroups -// Setwgroups -// Getwgroups -// Mkfifo_extended -// Mkdir_extended -// Identitysvc -// Shared_region_check_np -// Shared_region_map_np -// __pthread_mutex_destroy -// __pthread_mutex_init -// __pthread_mutex_lock -// __pthread_mutex_trylock -// __pthread_mutex_unlock -// __pthread_cond_init -// __pthread_cond_destroy -// __pthread_cond_broadcast -// __pthread_cond_signal -// Setsid_with_pid -// __pthread_cond_timedwait -// Aio_fsync -// Aio_return -// Aio_suspend -// Aio_cancel -// Aio_error -// Aio_read -// Aio_write -// Lio_listio -// __pthread_cond_wait -// Iopolicysys -// __pthread_kill -// __pthread_sigmask -// __sigwait -// __disable_threadsignal -// __pthread_markcancel -// __pthread_canceled -// __semwait_signal -// Proc_info -// sendfile -// Stat64_extended -// Lstat64_extended -// Fstat64_extended -// __pthread_chdir -// __pthread_fchdir -// Audit -// Auditon -// Getauid -// Setauid -// Getaudit -// Setaudit -// Getaudit_addr -// Setaudit_addr -// Auditctl -// Bsdthread_create -// Bsdthread_terminate -// Stack_snapshot -// Bsdthread_register -// Workq_open -// Workq_ops -// __mac_execve -// __mac_syscall -// __mac_get_file -// __mac_set_file -// __mac_get_link -// __mac_set_link -// __mac_get_proc -// __mac_set_proc -// __mac_get_fd -// __mac_set_fd -// __mac_get_pid -// __mac_get_lcid -// __mac_get_lctx -// __mac_set_lctx -// Setlcid -// Read_nocancel -// Write_nocancel -// Open_nocancel -// Close_nocancel -// Wait4_nocancel -// Recvmsg_nocancel -// Sendmsg_nocancel -// Recvfrom_nocancel -// Accept_nocancel -// Fcntl_nocancel -// Select_nocancel -// Fsync_nocancel -// Connect_nocancel -// Sigsuspend_nocancel -// Readv_nocancel -// Writev_nocancel -// Sendto_nocancel -// Pread_nocancel -// Pwrite_nocancel -// Waitid_nocancel -// Poll_nocancel -// Msgsnd_nocancel -// Msgrcv_nocancel -// Sem_wait_nocancel -// Aio_suspend_nocancel -// __sigwait_nocancel -// __semwait_signal_nocancel -// __mac_mount -// __mac_get_mount -// __mac_getfsstat diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go index 9fa879806b..b37310ce9b 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go @@ -47,6 +47,5 @@ func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, //sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64 //sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 //sys ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) = SYS_ptrace -//sys ptrace1Ptr(request int, pid int, addr unsafe.Pointer, data uintptr) (err error) = SYS_ptrace //sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 //sys Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64 diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go index f17b8c526a..d51ec99630 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go @@ -47,6 +47,5 @@ func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, //sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT //sys Lstat(path string, stat *Stat_t) (err error) //sys ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) = SYS_ptrace -//sys ptrace1Ptr(request int, pid int, addr unsafe.Pointer, data uintptr) (err error) = SYS_ptrace //sys Stat(path string, stat *Stat_t) (err error) //sys Statfs(path string, stat *Statfs_t) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go index d4ce988e72..97cb916f2c 100644 --- a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go +++ b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go @@ -343,203 +343,5 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys write(fd int, p []byte) (n int, err error) //sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) //sys munmap(addr uintptr, length uintptr) (err error) -//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ -//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE //sys accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) //sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) - -/* - * Unimplemented - * TODO(jsing): Update this list for DragonFly. - */ -// Profil -// Sigaction -// Sigprocmask -// Getlogin -// Sigpending -// Sigaltstack -// Reboot -// Execve -// Vfork -// Sbrk -// Sstk -// Ovadvise -// Mincore -// Setitimer -// Swapon -// Select -// Sigsuspend -// Readv -// Writev -// Nfssvc -// Getfh -// Quotactl -// Mount -// Csops -// Waitid -// Add_profil -// Kdebug_trace -// Sigreturn -// Atsocket -// Kqueue_from_portset_np -// Kqueue_portset -// Getattrlist -// Setattrlist -// Getdirentriesattr -// Searchfs -// Delete -// Copyfile -// Watchevent -// Waitevent -// Modwatch -// Getxattr -// Fgetxattr -// Setxattr -// Fsetxattr -// Removexattr -// Fremovexattr -// Listxattr -// Flistxattr -// Fsctl -// Initgroups -// Posix_spawn -// Nfsclnt -// Fhopen -// Minherit -// Semsys -// Msgsys -// Shmsys -// Semctl -// Semget -// Semop -// Msgctl -// Msgget -// Msgsnd -// Msgrcv -// Shmat -// Shmctl -// Shmdt -// Shmget -// Shm_open -// Shm_unlink -// Sem_open -// Sem_close -// Sem_unlink -// Sem_wait -// Sem_trywait -// Sem_post -// Sem_getvalue -// Sem_init -// Sem_destroy -// Open_extended -// Umask_extended -// Stat_extended -// Lstat_extended -// Fstat_extended -// Chmod_extended -// Fchmod_extended -// Access_extended -// Settid -// Gettid -// Setsgroups -// Getsgroups -// Setwgroups -// Getwgroups -// Mkfifo_extended -// Mkdir_extended -// Identitysvc -// Shared_region_check_np -// Shared_region_map_np -// __pthread_mutex_destroy -// __pthread_mutex_init -// __pthread_mutex_lock -// __pthread_mutex_trylock -// __pthread_mutex_unlock -// __pthread_cond_init -// __pthread_cond_destroy -// __pthread_cond_broadcast -// __pthread_cond_signal -// Setsid_with_pid -// __pthread_cond_timedwait -// Aio_fsync -// Aio_return -// Aio_suspend -// Aio_cancel -// Aio_error -// Aio_read -// Aio_write -// Lio_listio -// __pthread_cond_wait -// Iopolicysys -// __pthread_kill -// __pthread_sigmask -// __sigwait -// __disable_threadsignal -// __pthread_markcancel -// __pthread_canceled -// __semwait_signal -// Proc_info -// Stat64_extended -// Lstat64_extended -// Fstat64_extended -// __pthread_chdir -// __pthread_fchdir -// Audit -// Auditon -// Getauid -// Setauid -// Getaudit -// Setaudit -// Getaudit_addr -// Setaudit_addr -// Auditctl -// Bsdthread_create -// Bsdthread_terminate -// Stack_snapshot -// Bsdthread_register -// Workq_open -// Workq_ops -// __mac_execve -// __mac_syscall -// __mac_get_file -// __mac_set_file -// __mac_get_link -// __mac_set_link -// __mac_get_proc -// __mac_set_proc -// __mac_get_fd -// __mac_set_fd -// __mac_get_pid -// __mac_get_lcid -// __mac_get_lctx -// __mac_set_lctx -// Setlcid -// Read_nocancel -// Write_nocancel -// Open_nocancel -// Close_nocancel -// Wait4_nocancel -// Recvmsg_nocancel -// Sendmsg_nocancel -// Recvfrom_nocancel -// Accept_nocancel -// Fcntl_nocancel -// Select_nocancel -// Fsync_nocancel -// Connect_nocancel -// Sigsuspend_nocancel -// Readv_nocancel -// Writev_nocancel -// Sendto_nocancel -// Pread_nocancel -// Pwrite_nocancel -// Waitid_nocancel -// Msgsnd_nocancel -// Msgrcv_nocancel -// Sem_wait_nocancel -// Aio_suspend_nocancel -// __sigwait_nocancel -// __semwait_signal_nocancel -// __mac_mount -// __mac_get_mount -// __mac_getfsstat diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd.go b/vendor/golang.org/x/sys/unix/syscall_freebsd.go index afb10106f6..64d1bb4dba 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd.go @@ -449,197 +449,5 @@ func Dup3(oldfd, newfd, flags int) error { //sys write(fd int, p []byte) (n int, err error) //sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) //sys munmap(addr uintptr, length uintptr) (err error) -//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ -//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE //sys accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) //sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) - -/* - * Unimplemented - */ -// Profil -// Sigaction -// Sigprocmask -// Getlogin -// Sigpending -// Sigaltstack -// Ioctl -// Reboot -// Execve -// Vfork -// Sbrk -// Sstk -// Ovadvise -// Mincore -// Setitimer -// Swapon -// Select -// Sigsuspend -// Readv -// Writev -// Nfssvc -// Getfh -// Quotactl -// Mount -// Csops -// Waitid -// Add_profil -// Kdebug_trace -// Sigreturn -// Atsocket -// Kqueue_from_portset_np -// Kqueue_portset -// Getattrlist -// Setattrlist -// Getdents -// Getdirentriesattr -// Searchfs -// Delete -// Copyfile -// Watchevent -// Waitevent -// Modwatch -// Fsctl -// Initgroups -// Posix_spawn -// Nfsclnt -// Fhopen -// Minherit -// Semsys -// Msgsys -// Shmsys -// Semctl -// Semget -// Semop -// Msgctl -// Msgget -// Msgsnd -// Msgrcv -// Shmat -// Shmctl -// Shmdt -// Shmget -// Shm_open -// Shm_unlink -// Sem_open -// Sem_close -// Sem_unlink -// Sem_wait -// Sem_trywait -// Sem_post -// Sem_getvalue -// Sem_init -// Sem_destroy -// Open_extended -// Umask_extended -// Stat_extended -// Lstat_extended -// Fstat_extended -// Chmod_extended -// Fchmod_extended -// Access_extended -// Settid -// Gettid -// Setsgroups -// Getsgroups -// Setwgroups -// Getwgroups -// Mkfifo_extended -// Mkdir_extended -// Identitysvc -// Shared_region_check_np -// Shared_region_map_np -// __pthread_mutex_destroy -// __pthread_mutex_init -// __pthread_mutex_lock -// __pthread_mutex_trylock -// __pthread_mutex_unlock -// __pthread_cond_init -// __pthread_cond_destroy -// __pthread_cond_broadcast -// __pthread_cond_signal -// Setsid_with_pid -// __pthread_cond_timedwait -// Aio_fsync -// Aio_return -// Aio_suspend -// Aio_cancel -// Aio_error -// Aio_read -// Aio_write -// Lio_listio -// __pthread_cond_wait -// Iopolicysys -// __pthread_kill -// __pthread_sigmask -// __sigwait -// __disable_threadsignal -// __pthread_markcancel -// __pthread_canceled -// __semwait_signal -// Proc_info -// Stat64_extended -// Lstat64_extended -// Fstat64_extended -// __pthread_chdir -// __pthread_fchdir -// Audit -// Auditon -// Getauid -// Setauid -// Getaudit -// Setaudit -// Getaudit_addr -// Setaudit_addr -// Auditctl -// Bsdthread_create -// Bsdthread_terminate -// Stack_snapshot -// Bsdthread_register -// Workq_open -// Workq_ops -// __mac_execve -// __mac_syscall -// __mac_get_file -// __mac_set_file -// __mac_get_link -// __mac_set_link -// __mac_get_proc -// __mac_set_proc -// __mac_get_fd -// __mac_set_fd -// __mac_get_pid -// __mac_get_lcid -// __mac_get_lctx -// __mac_set_lctx -// Setlcid -// Read_nocancel -// Write_nocancel -// Open_nocancel -// Close_nocancel -// Wait4_nocancel -// Recvmsg_nocancel -// Sendmsg_nocancel -// Recvfrom_nocancel -// Accept_nocancel -// Fcntl_nocancel -// Select_nocancel -// Fsync_nocancel -// Connect_nocancel -// Sigsuspend_nocancel -// Readv_nocancel -// Writev_nocancel -// Sendto_nocancel -// Pread_nocancel -// Pwrite_nocancel -// Waitid_nocancel -// Poll_nocancel -// Msgsnd_nocancel -// Msgrcv_nocancel -// Sem_wait_nocancel -// Aio_suspend_nocancel -// __sigwait_nocancel -// __semwait_signal_nocancel -// __mac_mount -// __mac_get_mount -// __mac_getfsstat diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go index 0ba030197f..fb4e50224c 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux.go @@ -693,10 +693,10 @@ type SockaddrALG struct { func (sa *SockaddrALG) sockaddr() (unsafe.Pointer, _Socklen, error) { // Leave room for NUL byte terminator. - if len(sa.Type) > 13 { + if len(sa.Type) > len(sa.raw.Type)-1 { return nil, 0, EINVAL } - if len(sa.Name) > 63 { + if len(sa.Name) > len(sa.raw.Name)-1 { return nil, 0, EINVAL } @@ -704,17 +704,8 @@ func (sa *SockaddrALG) sockaddr() (unsafe.Pointer, _Socklen, error) { sa.raw.Feat = sa.Feature sa.raw.Mask = sa.Mask - typ, err := ByteSliceFromString(sa.Type) - if err != nil { - return nil, 0, err - } - name, err := ByteSliceFromString(sa.Name) - if err != nil { - return nil, 0, err - } - - copy(sa.raw.Type[:], typ) - copy(sa.raw.Name[:], name) + copy(sa.raw.Type[:], sa.Type) + copy(sa.raw.Name[:], sa.Name) return unsafe.Pointer(&sa.raw), SizeofSockaddrALG, nil } @@ -1988,8 +1979,6 @@ func Signalfd(fd int, sigmask *Sigset_t, flags int) (newfd int, err error) { //sys Unshare(flags int) (err error) //sys write(fd int, p []byte) (n int, err error) //sys exitThread(code int) (err error) = SYS_EXIT -//sys readlen(fd int, p *byte, np int) (n int, err error) = SYS_READ -//sys writelen(fd int, p *byte, np int) (n int, err error) = SYS_WRITE //sys readv(fd int, iovs []Iovec) (n int, err error) = SYS_READV //sys writev(fd int, iovs []Iovec) (n int, err error) = SYS_WRITEV //sys preadv(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) = SYS_PREADV @@ -2493,99 +2482,3 @@ func SchedGetAttr(pid int, flags uint) (*SchedAttr, error) { } return attr, nil } - -/* - * Unimplemented - */ -// AfsSyscall -// ArchPrctl -// Brk -// ClockNanosleep -// ClockSettime -// Clone -// EpollCtlOld -// EpollPwait -// EpollWaitOld -// Execve -// Fork -// Futex -// GetKernelSyms -// GetMempolicy -// GetRobustList -// GetThreadArea -// Getpmsg -// IoCancel -// IoDestroy -// IoGetevents -// IoSetup -// IoSubmit -// IoprioGet -// IoprioSet -// KexecLoad -// LookupDcookie -// Mbind -// MigratePages -// Mincore -// ModifyLdt -// Mount -// MovePages -// MqGetsetattr -// MqNotify -// MqOpen -// MqTimedreceive -// MqTimedsend -// MqUnlink -// Msgctl -// Msgget -// Msgrcv -// Msgsnd -// Nfsservctl -// Personality -// Pselect6 -// Ptrace -// Putpmsg -// Quotactl -// Readahead -// Readv -// RemapFilePages -// RestartSyscall -// RtSigaction -// RtSigpending -// RtSigqueueinfo -// RtSigreturn -// RtSigsuspend -// RtSigtimedwait -// SchedGetPriorityMax -// SchedGetPriorityMin -// SchedGetparam -// SchedGetscheduler -// SchedRrGetInterval -// SchedSetparam -// SchedYield -// Security -// Semctl -// Semget -// Semop -// Semtimedop -// SetMempolicy -// SetRobustList -// SetThreadArea -// SetTidAddress -// Sigaltstack -// Swapoff -// Swapon -// Sysfs -// TimerCreate -// TimerDelete -// TimerGetoverrun -// TimerGettime -// TimerSettime -// Tkill (obsolete) -// Tuxcall -// Umount2 -// Uselib -// Utimensat -// Vfork -// Vhangup -// Vserver -// _Sysctl diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd.go b/vendor/golang.org/x/sys/unix/syscall_netbsd.go index ddd1ac8534..88162099af 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd.go @@ -356,8 +356,6 @@ func Statvfs(path string, buf *Statvfs_t) (err error) { //sys write(fd int, p []byte) (n int, err error) //sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) //sys munmap(addr uintptr, length uintptr) (err error) -//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ -//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE //sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) const ( @@ -371,262 +369,3 @@ const ( func mremap(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (uintptr, error) { return mremapNetBSD(oldaddr, oldlength, newaddr, newlength, flags) } - -/* - * Unimplemented - */ -// ____semctl13 -// __clone -// __fhopen40 -// __fhstat40 -// __fhstatvfs140 -// __fstat30 -// __getcwd -// __getfh30 -// __getlogin -// __lstat30 -// __mount50 -// __msgctl13 -// __msync13 -// __ntp_gettime30 -// __posix_chown -// __posix_fchown -// __posix_lchown -// __posix_rename -// __setlogin -// __shmctl13 -// __sigaction_sigtramp -// __sigaltstack14 -// __sigpending14 -// __sigprocmask14 -// __sigsuspend14 -// __sigtimedwait -// __stat30 -// __syscall -// __vfork14 -// _ksem_close -// _ksem_destroy -// _ksem_getvalue -// _ksem_init -// _ksem_open -// _ksem_post -// _ksem_trywait -// _ksem_unlink -// _ksem_wait -// _lwp_continue -// _lwp_create -// _lwp_ctl -// _lwp_detach -// _lwp_exit -// _lwp_getname -// _lwp_getprivate -// _lwp_kill -// _lwp_park -// _lwp_self -// _lwp_setname -// _lwp_setprivate -// _lwp_suspend -// _lwp_unpark -// _lwp_unpark_all -// _lwp_wait -// _lwp_wakeup -// _pset_bind -// _sched_getaffinity -// _sched_getparam -// _sched_setaffinity -// _sched_setparam -// acct -// aio_cancel -// aio_error -// aio_fsync -// aio_read -// aio_return -// aio_suspend -// aio_write -// break -// clock_getres -// clock_gettime -// clock_settime -// compat_09_ogetdomainname -// compat_09_osetdomainname -// compat_09_ouname -// compat_10_omsgsys -// compat_10_osemsys -// compat_10_oshmsys -// compat_12_fstat12 -// compat_12_getdirentries -// compat_12_lstat12 -// compat_12_msync -// compat_12_oreboot -// compat_12_oswapon -// compat_12_stat12 -// compat_13_sigaction13 -// compat_13_sigaltstack13 -// compat_13_sigpending13 -// compat_13_sigprocmask13 -// compat_13_sigreturn13 -// compat_13_sigsuspend13 -// compat_14___semctl -// compat_14_msgctl -// compat_14_shmctl -// compat_16___sigaction14 -// compat_16___sigreturn14 -// compat_20_fhstatfs -// compat_20_fstatfs -// compat_20_getfsstat -// compat_20_statfs -// compat_30___fhstat30 -// compat_30___fstat13 -// compat_30___lstat13 -// compat_30___stat13 -// compat_30_fhopen -// compat_30_fhstat -// compat_30_fhstatvfs1 -// compat_30_getdents -// compat_30_getfh -// compat_30_ntp_gettime -// compat_30_socket -// compat_40_mount -// compat_43_fstat43 -// compat_43_lstat43 -// compat_43_oaccept -// compat_43_ocreat -// compat_43_oftruncate -// compat_43_ogetdirentries -// compat_43_ogetdtablesize -// compat_43_ogethostid -// compat_43_ogethostname -// compat_43_ogetkerninfo -// compat_43_ogetpagesize -// compat_43_ogetpeername -// compat_43_ogetrlimit -// compat_43_ogetsockname -// compat_43_okillpg -// compat_43_olseek -// compat_43_ommap -// compat_43_oquota -// compat_43_orecv -// compat_43_orecvfrom -// compat_43_orecvmsg -// compat_43_osend -// compat_43_osendmsg -// compat_43_osethostid -// compat_43_osethostname -// compat_43_osigblock -// compat_43_osigsetmask -// compat_43_osigstack -// compat_43_osigvec -// compat_43_otruncate -// compat_43_owait -// compat_43_stat43 -// execve -// extattr_delete_fd -// extattr_delete_file -// extattr_delete_link -// extattr_get_fd -// extattr_get_file -// extattr_get_link -// extattr_list_fd -// extattr_list_file -// extattr_list_link -// extattr_set_fd -// extattr_set_file -// extattr_set_link -// extattrctl -// fchroot -// fdatasync -// fgetxattr -// fktrace -// flistxattr -// fork -// fremovexattr -// fsetxattr -// fstatvfs1 -// fsync_range -// getcontext -// getitimer -// getvfsstat -// getxattr -// ktrace -// lchflags -// lchmod -// lfs_bmapv -// lfs_markv -// lfs_segclean -// lfs_segwait -// lgetxattr -// lio_listio -// listxattr -// llistxattr -// lremovexattr -// lseek -// lsetxattr -// lutimes -// madvise -// mincore -// minherit -// modctl -// mq_close -// mq_getattr -// mq_notify -// mq_open -// mq_receive -// mq_send -// mq_setattr -// mq_timedreceive -// mq_timedsend -// mq_unlink -// msgget -// msgrcv -// msgsnd -// nfssvc -// ntp_adjtime -// pmc_control -// pmc_get_info -// pollts -// preadv -// profil -// pselect -// pset_assign -// pset_create -// pset_destroy -// ptrace -// pwritev -// quotactl -// rasctl -// readv -// reboot -// removexattr -// sa_enable -// sa_preempt -// sa_register -// sa_setconcurrency -// sa_stacks -// sa_yield -// sbrk -// sched_yield -// semconfig -// semget -// semop -// setcontext -// setitimer -// setxattr -// shmat -// shmdt -// shmget -// sstk -// statvfs1 -// swapctl -// sysarch -// syscall -// timer_create -// timer_delete -// timer_getoverrun -// timer_gettime -// timer_settime -// undelete -// utrace -// uuidgen -// vadvise -// vfork -// writev diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd.go b/vendor/golang.org/x/sys/unix/syscall_openbsd.go index c5f166a115..6f34479b59 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd.go @@ -326,78 +326,4 @@ func Uname(uname *Utsname) error { //sys write(fd int, p []byte) (n int, err error) //sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) //sys munmap(addr uintptr, length uintptr) (err error) -//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ -//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE //sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) - -/* - * Unimplemented - */ -// __getcwd -// __semctl -// __syscall -// __sysctl -// adjfreq -// break -// clock_getres -// clock_gettime -// clock_settime -// closefrom -// execve -// fhopen -// fhstat -// fhstatfs -// fork -// futimens -// getfh -// getgid -// getitimer -// getlogin -// getthrid -// ktrace -// lfs_bmapv -// lfs_markv -// lfs_segclean -// lfs_segwait -// mincore -// minherit -// mount -// mquery -// msgctl -// msgget -// msgrcv -// msgsnd -// nfssvc -// nnpfspioctl -// preadv -// profil -// pwritev -// quotactl -// readv -// reboot -// renameat -// rfork -// sched_yield -// semget -// semop -// setgroups -// setitimer -// setsockopt -// shmat -// shmctl -// shmdt -// shmget -// sigaction -// sigaltstack -// sigpending -// sigprocmask -// sigreturn -// sigsuspend -// sysarch -// syscall -// threxit -// thrsigdivert -// thrsleep -// thrwakeup -// vfork -// writev diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris.go b/vendor/golang.org/x/sys/unix/syscall_solaris.go index 72d23575fa..b99cfa1342 100644 --- a/vendor/golang.org/x/sys/unix/syscall_solaris.go +++ b/vendor/golang.org/x/sys/unix/syscall_solaris.go @@ -698,24 +698,6 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) = libsocket.setsockopt //sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) = libsocket.recvfrom -func readlen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procread)), 3, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf), 0, 0, 0) - n = int(r0) - if e1 != 0 { - err = e1 - } - return -} - -func writelen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwrite)), 3, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf), 0, 0, 0) - n = int(r0) - if e1 != 0 { - err = e1 - } - return -} - // Event Ports type fileObjCookie struct { diff --git a/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go b/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go index 44e72edb42..4596d041ce 100644 --- a/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go +++ b/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go @@ -192,7 +192,6 @@ func (cmsg *Cmsghdr) SetLen(length int) { //sys fcntl(fd int, cmd int, arg int) (val int, err error) //sys read(fd int, p []byte) (n int, err error) -//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ //sys write(fd int, p []byte) (n int, err error) //sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) = SYS___ACCEPT_A diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux.go b/vendor/golang.org/x/sys/unix/zerrors_linux.go index 0787a043be..f9c7f479b0 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux.go @@ -2421,6 +2421,15 @@ const ( PR_PAC_GET_ENABLED_KEYS = 0x3d PR_PAC_RESET_KEYS = 0x36 PR_PAC_SET_ENABLED_KEYS = 0x3c + PR_RISCV_V_GET_CONTROL = 0x46 + PR_RISCV_V_SET_CONTROL = 0x45 + PR_RISCV_V_VSTATE_CTRL_CUR_MASK = 0x3 + PR_RISCV_V_VSTATE_CTRL_DEFAULT = 0x0 + PR_RISCV_V_VSTATE_CTRL_INHERIT = 0x10 + PR_RISCV_V_VSTATE_CTRL_MASK = 0x1f + PR_RISCV_V_VSTATE_CTRL_NEXT_MASK = 0xc + PR_RISCV_V_VSTATE_CTRL_OFF = 0x1 + PR_RISCV_V_VSTATE_CTRL_ON = 0x2 PR_SCHED_CORE = 0x3e PR_SCHED_CORE_CREATE = 0x1 PR_SCHED_CORE_GET = 0x0 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go index cfb1430018..30aee00a53 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go @@ -326,10 +326,12 @@ const ( SO_NOFCS = 0x2b SO_OOBINLINE = 0xa SO_PASSCRED = 0x10 + SO_PASSPIDFD = 0x4c SO_PASSSEC = 0x22 SO_PEEK_OFF = 0x2a SO_PEERCRED = 0x11 SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d SO_PEERSEC = 0x1f SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x26 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go index df64f2d590..8ebfa51278 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go @@ -327,10 +327,12 @@ const ( SO_NOFCS = 0x2b SO_OOBINLINE = 0xa SO_PASSCRED = 0x10 + SO_PASSPIDFD = 0x4c SO_PASSSEC = 0x22 SO_PEEK_OFF = 0x2a SO_PEERCRED = 0x11 SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d SO_PEERSEC = 0x1f SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x26 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go index 3025cd5b2d..271a21cdc7 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go @@ -333,10 +333,12 @@ const ( SO_NOFCS = 0x2b SO_OOBINLINE = 0xa SO_PASSCRED = 0x10 + SO_PASSPIDFD = 0x4c SO_PASSSEC = 0x22 SO_PEEK_OFF = 0x2a SO_PEERCRED = 0x11 SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d SO_PEERSEC = 0x1f SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x26 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go index 09e1ffbef9..910c330a39 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go @@ -323,10 +323,12 @@ const ( SO_NOFCS = 0x2b SO_OOBINLINE = 0xa SO_PASSCRED = 0x10 + SO_PASSPIDFD = 0x4c SO_PASSSEC = 0x22 SO_PEEK_OFF = 0x2a SO_PEERCRED = 0x11 SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d SO_PEERSEC = 0x1f SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x26 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go index a457235407..a640798c93 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go @@ -118,6 +118,8 @@ const ( IUCLC = 0x200 IXOFF = 0x1000 IXON = 0x400 + LASX_CTX_MAGIC = 0x41535801 + LSX_CTX_MAGIC = 0x53580001 MAP_ANON = 0x20 MAP_ANONYMOUS = 0x20 MAP_DENYWRITE = 0x800 @@ -317,10 +319,12 @@ const ( SO_NOFCS = 0x2b SO_OOBINLINE = 0xa SO_PASSCRED = 0x10 + SO_PASSPIDFD = 0x4c SO_PASSSEC = 0x22 SO_PEEK_OFF = 0x2a SO_PEERCRED = 0x11 SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d SO_PEERSEC = 0x1f SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x26 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go index fee7dfb819..0d5925d340 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go @@ -326,10 +326,12 @@ const ( SO_NOFCS = 0x2b SO_OOBINLINE = 0x100 SO_PASSCRED = 0x11 + SO_PASSPIDFD = 0x4c SO_PASSSEC = 0x22 SO_PEEK_OFF = 0x2a SO_PEERCRED = 0x12 SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d SO_PEERSEC = 0x1e SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x1028 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go index a5b2373aea..d72a00e0b6 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go @@ -326,10 +326,12 @@ const ( SO_NOFCS = 0x2b SO_OOBINLINE = 0x100 SO_PASSCRED = 0x11 + SO_PASSPIDFD = 0x4c SO_PASSSEC = 0x22 SO_PEEK_OFF = 0x2a SO_PEERCRED = 0x12 SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d SO_PEERSEC = 0x1e SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x1028 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go index 5dde82c98a..02ba129f85 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go @@ -326,10 +326,12 @@ const ( SO_NOFCS = 0x2b SO_OOBINLINE = 0x100 SO_PASSCRED = 0x11 + SO_PASSPIDFD = 0x4c SO_PASSSEC = 0x22 SO_PEEK_OFF = 0x2a SO_PEERCRED = 0x12 SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d SO_PEERSEC = 0x1e SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x1028 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go index 2e80ea6b33..8daa6dd968 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go @@ -326,10 +326,12 @@ const ( SO_NOFCS = 0x2b SO_OOBINLINE = 0x100 SO_PASSCRED = 0x11 + SO_PASSPIDFD = 0x4c SO_PASSSEC = 0x22 SO_PEEK_OFF = 0x2a SO_PEERCRED = 0x12 SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d SO_PEERSEC = 0x1e SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x1028 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go index a65dcd7cbe..63c8fa2f7f 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go @@ -381,10 +381,12 @@ const ( SO_NOFCS = 0x2b SO_OOBINLINE = 0xa SO_PASSCRED = 0x14 + SO_PASSPIDFD = 0x4c SO_PASSSEC = 0x22 SO_PEEK_OFF = 0x2a SO_PEERCRED = 0x15 SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d SO_PEERSEC = 0x1f SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x26 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go index cbd34e3d89..930799ec1b 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go @@ -385,10 +385,12 @@ const ( SO_NOFCS = 0x2b SO_OOBINLINE = 0xa SO_PASSCRED = 0x14 + SO_PASSPIDFD = 0x4c SO_PASSSEC = 0x22 SO_PEEK_OFF = 0x2a SO_PEERCRED = 0x15 SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d SO_PEERSEC = 0x1f SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x26 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go index e4afa7a317..8605a7dd7e 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go @@ -385,10 +385,12 @@ const ( SO_NOFCS = 0x2b SO_OOBINLINE = 0xa SO_PASSCRED = 0x14 + SO_PASSPIDFD = 0x4c SO_PASSSEC = 0x22 SO_PEEK_OFF = 0x2a SO_PEERCRED = 0x15 SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d SO_PEERSEC = 0x1f SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x26 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go index 44f45a039d..95a016f1c0 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go @@ -314,10 +314,12 @@ const ( SO_NOFCS = 0x2b SO_OOBINLINE = 0xa SO_PASSCRED = 0x10 + SO_PASSPIDFD = 0x4c SO_PASSSEC = 0x22 SO_PEEK_OFF = 0x2a SO_PEERCRED = 0x11 SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d SO_PEERSEC = 0x1f SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x26 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go index 74733e260f..1ae0108f57 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go @@ -389,10 +389,12 @@ const ( SO_NOFCS = 0x2b SO_OOBINLINE = 0xa SO_PASSCRED = 0x10 + SO_PASSPIDFD = 0x4c SO_PASSSEC = 0x22 SO_PEEK_OFF = 0x2a SO_PEERCRED = 0x11 SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d SO_PEERSEC = 0x1f SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x26 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go index f5f3934b1a..1bb7c6333b 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go @@ -428,10 +428,12 @@ const ( SO_NOFCS = 0x27 SO_OOBINLINE = 0x100 SO_PASSCRED = 0x2 + SO_PASSPIDFD = 0x55 SO_PASSSEC = 0x1f SO_PEEK_OFF = 0x26 SO_PEERCRED = 0x40 SO_PEERGROUPS = 0x3d + SO_PEERPIDFD = 0x56 SO_PEERSEC = 0x1e SO_PREFER_BUSY_POLL = 0x48 SO_PROTOCOL = 0x1028 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go index 9a257219d7..d1d1d23311 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go @@ -817,28 +817,6 @@ func write(fd int, p []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlen(fd int, p *byte, np int) (n int, err error) { - r0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(p))), C.size_t(np)) - n = int(r0) - if r0 == -1 && er != nil { - err = er - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func writelen(fd int, p *byte, np int) (n int, err error) { - r0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(p))), C.size_t(np)) - n = int(r0) - if r0 == -1 && er != nil { - err = er - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Dup2(oldfd int, newfd int) (err error) { r0, er := C.dup2(C.int(oldfd), C.int(newfd)) if r0 == -1 && er != nil { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go index 6de80c20cf..f99a18adc3 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go @@ -762,28 +762,6 @@ func write(fd int, p []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlen(fd int, p *byte, np int) (n int, err error) { - r0, e1 := callread(fd, uintptr(unsafe.Pointer(p)), np) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func writelen(fd int, p *byte, np int) (n int, err error) { - r0, e1 := callwrite(fd, uintptr(unsafe.Pointer(p)), np) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Dup2(oldfd int, newfd int) (err error) { _, e1 := calldup2(oldfd, newfd) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go index 4037ccf7a9..1cad561e98 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go @@ -725,6 +725,12 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { return } +var libc_ioctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) if e1 != 0 { @@ -733,10 +739,6 @@ func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { return } -var libc_ioctl_trampoline_addr uintptr - -//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib" - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { @@ -2410,28 +2412,6 @@ var libc_munmap_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func writelen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fstat(fd int, stat *Stat_t) (err error) { _, _, e1 := syscall_syscall(libc_fstat64_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { @@ -2521,14 +2501,6 @@ func ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) { return } -func ptrace1Ptr(request int, pid int, addr uintptr, data unsafe.Pointer) (err error) { - _, _, e1 := syscall_syscall6(libc_ptrace_trampoline_addr, uintptr(request), uintptr(pid), addr, uintptr(data), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - var libc_ptrace_trampoline_addr uintptr //go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s index 4baaed0bc1..8b8bb28402 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s @@ -5,703 +5,586 @@ TEXT libc_fdopendir_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fdopendir(SB) - GLOBL ·libc_fdopendir_trampoline_addr(SB), RODATA, $8 DATA ·libc_fdopendir_trampoline_addr(SB)/8, $libc_fdopendir_trampoline<>(SB) TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getgroups(SB) - GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $8 DATA ·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB) TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setgroups(SB) - GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $8 DATA ·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB) TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_wait4(SB) - GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $8 DATA ·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB) TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_accept(SB) - GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $8 DATA ·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB) TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_bind(SB) - GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $8 DATA ·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB) TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_connect(SB) - GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $8 DATA ·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB) TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_socket(SB) - GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $8 DATA ·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB) TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getsockopt(SB) - GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $8 DATA ·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB) TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setsockopt(SB) - GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $8 DATA ·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB) TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getpeername(SB) - GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $8 DATA ·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB) TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getsockname(SB) - GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $8 DATA ·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB) TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_shutdown(SB) - GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $8 DATA ·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB) TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_socketpair(SB) - GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $8 DATA ·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB) TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_recvfrom(SB) - GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $8 DATA ·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB) TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_sendto(SB) - GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $8 DATA ·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB) TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_recvmsg(SB) - GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $8 DATA ·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB) TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_sendmsg(SB) - GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $8 DATA ·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB) TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_kevent(SB) - GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $8 DATA ·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB) TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_utimes(SB) - GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $8 DATA ·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB) TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_futimes(SB) - GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $8 DATA ·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB) TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_poll(SB) - GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8 DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB) TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_madvise(SB) - GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $8 DATA ·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB) TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mlock(SB) - GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $8 DATA ·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB) TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mlockall(SB) - GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $8 DATA ·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB) TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mprotect(SB) - GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $8 DATA ·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB) TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_msync(SB) - GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $8 DATA ·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB) TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_munlock(SB) - GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $8 DATA ·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB) TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_munlockall(SB) - GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8 DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB) TEXT libc_closedir_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_closedir(SB) - GLOBL ·libc_closedir_trampoline_addr(SB), RODATA, $8 DATA ·libc_closedir_trampoline_addr(SB)/8, $libc_closedir_trampoline<>(SB) TEXT libc_readdir_r_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_readdir_r(SB) - GLOBL ·libc_readdir_r_trampoline_addr(SB), RODATA, $8 DATA ·libc_readdir_r_trampoline_addr(SB)/8, $libc_readdir_r_trampoline<>(SB) TEXT libc_pipe_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_pipe(SB) - GLOBL ·libc_pipe_trampoline_addr(SB), RODATA, $8 DATA ·libc_pipe_trampoline_addr(SB)/8, $libc_pipe_trampoline<>(SB) TEXT libc_getxattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getxattr(SB) - GLOBL ·libc_getxattr_trampoline_addr(SB), RODATA, $8 DATA ·libc_getxattr_trampoline_addr(SB)/8, $libc_getxattr_trampoline<>(SB) TEXT libc_fgetxattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fgetxattr(SB) - GLOBL ·libc_fgetxattr_trampoline_addr(SB), RODATA, $8 DATA ·libc_fgetxattr_trampoline_addr(SB)/8, $libc_fgetxattr_trampoline<>(SB) TEXT libc_setxattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setxattr(SB) - GLOBL ·libc_setxattr_trampoline_addr(SB), RODATA, $8 DATA ·libc_setxattr_trampoline_addr(SB)/8, $libc_setxattr_trampoline<>(SB) TEXT libc_fsetxattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fsetxattr(SB) - GLOBL ·libc_fsetxattr_trampoline_addr(SB), RODATA, $8 DATA ·libc_fsetxattr_trampoline_addr(SB)/8, $libc_fsetxattr_trampoline<>(SB) TEXT libc_removexattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_removexattr(SB) - GLOBL ·libc_removexattr_trampoline_addr(SB), RODATA, $8 DATA ·libc_removexattr_trampoline_addr(SB)/8, $libc_removexattr_trampoline<>(SB) TEXT libc_fremovexattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fremovexattr(SB) - GLOBL ·libc_fremovexattr_trampoline_addr(SB), RODATA, $8 DATA ·libc_fremovexattr_trampoline_addr(SB)/8, $libc_fremovexattr_trampoline<>(SB) TEXT libc_listxattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_listxattr(SB) - GLOBL ·libc_listxattr_trampoline_addr(SB), RODATA, $8 DATA ·libc_listxattr_trampoline_addr(SB)/8, $libc_listxattr_trampoline<>(SB) TEXT libc_flistxattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_flistxattr(SB) - GLOBL ·libc_flistxattr_trampoline_addr(SB), RODATA, $8 DATA ·libc_flistxattr_trampoline_addr(SB)/8, $libc_flistxattr_trampoline<>(SB) TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_utimensat(SB) - GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8 DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB) TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fcntl(SB) - GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $8 DATA ·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB) TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_kill(SB) - GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $8 DATA ·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB) TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_ioctl(SB) - GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8 DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB) TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_sysctl(SB) - GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) TEXT libc_sendfile_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_sendfile(SB) - GLOBL ·libc_sendfile_trampoline_addr(SB), RODATA, $8 DATA ·libc_sendfile_trampoline_addr(SB)/8, $libc_sendfile_trampoline<>(SB) TEXT libc_shmat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_shmat(SB) - GLOBL ·libc_shmat_trampoline_addr(SB), RODATA, $8 DATA ·libc_shmat_trampoline_addr(SB)/8, $libc_shmat_trampoline<>(SB) TEXT libc_shmctl_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_shmctl(SB) - GLOBL ·libc_shmctl_trampoline_addr(SB), RODATA, $8 DATA ·libc_shmctl_trampoline_addr(SB)/8, $libc_shmctl_trampoline<>(SB) TEXT libc_shmdt_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_shmdt(SB) - GLOBL ·libc_shmdt_trampoline_addr(SB), RODATA, $8 DATA ·libc_shmdt_trampoline_addr(SB)/8, $libc_shmdt_trampoline<>(SB) TEXT libc_shmget_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_shmget(SB) - GLOBL ·libc_shmget_trampoline_addr(SB), RODATA, $8 DATA ·libc_shmget_trampoline_addr(SB)/8, $libc_shmget_trampoline<>(SB) TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_access(SB) - GLOBL ·libc_access_trampoline_addr(SB), RODATA, $8 DATA ·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB) TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_adjtime(SB) - GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $8 DATA ·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB) TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_chdir(SB) - GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $8 DATA ·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB) TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_chflags(SB) - GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $8 DATA ·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB) TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_chmod(SB) - GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $8 DATA ·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB) TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_chown(SB) - GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $8 DATA ·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB) TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_chroot(SB) - GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8 DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB) TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_clock_gettime(SB) - GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $8 DATA ·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB) TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_close(SB) - GLOBL ·libc_close_trampoline_addr(SB), RODATA, $8 DATA ·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB) TEXT libc_clonefile_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_clonefile(SB) - GLOBL ·libc_clonefile_trampoline_addr(SB), RODATA, $8 DATA ·libc_clonefile_trampoline_addr(SB)/8, $libc_clonefile_trampoline<>(SB) TEXT libc_clonefileat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_clonefileat(SB) - GLOBL ·libc_clonefileat_trampoline_addr(SB), RODATA, $8 DATA ·libc_clonefileat_trampoline_addr(SB)/8, $libc_clonefileat_trampoline<>(SB) TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_dup(SB) - GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $8 DATA ·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB) TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_dup2(SB) - GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $8 DATA ·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB) TEXT libc_exchangedata_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_exchangedata(SB) - GLOBL ·libc_exchangedata_trampoline_addr(SB), RODATA, $8 DATA ·libc_exchangedata_trampoline_addr(SB)/8, $libc_exchangedata_trampoline<>(SB) TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_exit(SB) - GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $8 DATA ·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB) TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_faccessat(SB) - GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $8 DATA ·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB) TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fchdir(SB) - GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $8 DATA ·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB) TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fchflags(SB) - GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $8 DATA ·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB) TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fchmod(SB) - GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $8 DATA ·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB) TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fchmodat(SB) - GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $8 DATA ·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB) TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fchown(SB) - GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $8 DATA ·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB) TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fchownat(SB) - GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $8 DATA ·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB) TEXT libc_fclonefileat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fclonefileat(SB) - GLOBL ·libc_fclonefileat_trampoline_addr(SB), RODATA, $8 DATA ·libc_fclonefileat_trampoline_addr(SB)/8, $libc_fclonefileat_trampoline<>(SB) TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_flock(SB) - GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $8 DATA ·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB) TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fpathconf(SB) - GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $8 DATA ·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB) TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fsync(SB) - GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $8 DATA ·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB) TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_ftruncate(SB) - GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $8 DATA ·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB) TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getcwd(SB) - GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8 DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB) TEXT libc_getdtablesize_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getdtablesize(SB) - GLOBL ·libc_getdtablesize_trampoline_addr(SB), RODATA, $8 DATA ·libc_getdtablesize_trampoline_addr(SB)/8, $libc_getdtablesize_trampoline<>(SB) TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getegid(SB) - GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $8 DATA ·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB) TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_geteuid(SB) - GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $8 DATA ·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB) TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getgid(SB) - GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $8 DATA ·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB) TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getpgid(SB) - GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $8 DATA ·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB) TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getpgrp(SB) - GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $8 DATA ·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB) TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getpid(SB) - GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $8 DATA ·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB) TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getppid(SB) - GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $8 DATA ·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB) TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getpriority(SB) - GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $8 DATA ·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB) TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getrlimit(SB) - GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $8 DATA ·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB) TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getrusage(SB) - GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $8 DATA ·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB) TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getsid(SB) - GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $8 DATA ·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB) TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_gettimeofday(SB) - GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $8 DATA ·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB) TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getuid(SB) - GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $8 DATA ·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB) TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_issetugid(SB) - GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $8 DATA ·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB) TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_kqueue(SB) - GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $8 DATA ·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB) TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_lchown(SB) - GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $8 DATA ·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB) TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_link(SB) - GLOBL ·libc_link_trampoline_addr(SB), RODATA, $8 DATA ·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB) TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_linkat(SB) - GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $8 DATA ·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB) TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_listen(SB) - GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $8 DATA ·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB) TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mkdir(SB) - GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $8 DATA ·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB) TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mkdirat(SB) - GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $8 DATA ·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB) TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mkfifo(SB) - GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $8 DATA ·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB) TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mknod(SB) - GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8 DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB) TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mount(SB) - GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_open(SB) - GLOBL ·libc_open_trampoline_addr(SB), RODATA, $8 DATA ·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB) TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_openat(SB) - GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $8 DATA ·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB) TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_pathconf(SB) - GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $8 DATA ·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB) TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_pread(SB) - GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $8 DATA ·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB) TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_pwrite(SB) - GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $8 DATA ·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB) TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_read(SB) - GLOBL ·libc_read_trampoline_addr(SB), RODATA, $8 DATA ·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB) TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_readlink(SB) - GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $8 DATA ·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB) TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_readlinkat(SB) - GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $8 DATA ·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB) TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_rename(SB) - GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $8 DATA ·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB) TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_renameat(SB) - GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $8 DATA ·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB) TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_revoke(SB) - GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $8 DATA ·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB) TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_rmdir(SB) - GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $8 DATA ·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB) TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_lseek(SB) - GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $8 DATA ·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB) TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_select(SB) - GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8 DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB) @@ -712,192 +595,160 @@ DATA ·libc_setattrlist_trampoline_addr(SB)/8, $libc_setattrlist_trampoline<>(SB TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setegid(SB) - GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $8 DATA ·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB) TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_seteuid(SB) - GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $8 DATA ·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB) TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setgid(SB) - GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $8 DATA ·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB) TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setlogin(SB) - GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $8 DATA ·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB) TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setpgid(SB) - GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $8 DATA ·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB) TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setpriority(SB) - GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $8 DATA ·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB) TEXT libc_setprivexec_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setprivexec(SB) - GLOBL ·libc_setprivexec_trampoline_addr(SB), RODATA, $8 DATA ·libc_setprivexec_trampoline_addr(SB)/8, $libc_setprivexec_trampoline<>(SB) TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setregid(SB) - GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $8 DATA ·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB) TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setreuid(SB) - GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $8 DATA ·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB) TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setsid(SB) - GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $8 DATA ·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB) TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_settimeofday(SB) - GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $8 DATA ·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB) TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setuid(SB) - GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $8 DATA ·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB) TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_symlink(SB) - GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $8 DATA ·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB) TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_symlinkat(SB) - GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $8 DATA ·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB) TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_sync(SB) - GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $8 DATA ·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB) TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_truncate(SB) - GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $8 DATA ·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB) TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_umask(SB) - GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $8 DATA ·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB) TEXT libc_undelete_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_undelete(SB) - GLOBL ·libc_undelete_trampoline_addr(SB), RODATA, $8 DATA ·libc_undelete_trampoline_addr(SB)/8, $libc_undelete_trampoline<>(SB) TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_unlink(SB) - GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $8 DATA ·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB) TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_unlinkat(SB) - GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $8 DATA ·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB) TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_unmount(SB) - GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $8 DATA ·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB) TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_write(SB) - GLOBL ·libc_write_trampoline_addr(SB), RODATA, $8 DATA ·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB) TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mmap(SB) - GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $8 DATA ·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB) TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_munmap(SB) - GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) TEXT libc_fstat64_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fstat64(SB) - GLOBL ·libc_fstat64_trampoline_addr(SB), RODATA, $8 DATA ·libc_fstat64_trampoline_addr(SB)/8, $libc_fstat64_trampoline<>(SB) TEXT libc_fstatat64_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fstatat64(SB) - GLOBL ·libc_fstatat64_trampoline_addr(SB), RODATA, $8 DATA ·libc_fstatat64_trampoline_addr(SB)/8, $libc_fstatat64_trampoline<>(SB) TEXT libc_fstatfs64_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fstatfs64(SB) - GLOBL ·libc_fstatfs64_trampoline_addr(SB), RODATA, $8 DATA ·libc_fstatfs64_trampoline_addr(SB)/8, $libc_fstatfs64_trampoline<>(SB) TEXT libc_getfsstat64_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getfsstat64(SB) - GLOBL ·libc_getfsstat64_trampoline_addr(SB), RODATA, $8 DATA ·libc_getfsstat64_trampoline_addr(SB)/8, $libc_getfsstat64_trampoline<>(SB) TEXT libc_lstat64_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_lstat64(SB) - GLOBL ·libc_lstat64_trampoline_addr(SB), RODATA, $8 DATA ·libc_lstat64_trampoline_addr(SB)/8, $libc_lstat64_trampoline<>(SB) TEXT libc_ptrace_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_ptrace(SB) - GLOBL ·libc_ptrace_trampoline_addr(SB), RODATA, $8 DATA ·libc_ptrace_trampoline_addr(SB)/8, $libc_ptrace_trampoline<>(SB) TEXT libc_stat64_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_stat64(SB) - GLOBL ·libc_stat64_trampoline_addr(SB), RODATA, $8 DATA ·libc_stat64_trampoline_addr(SB)/8, $libc_stat64_trampoline<>(SB) TEXT libc_statfs64_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_statfs64(SB) - GLOBL ·libc_statfs64_trampoline_addr(SB), RODATA, $8 DATA ·libc_statfs64_trampoline_addr(SB)/8, $libc_statfs64_trampoline<>(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go index 51d6f3fb25..b18edbd0e3 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go @@ -725,6 +725,12 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { return } +var libc_ioctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) if e1 != 0 { @@ -733,10 +739,6 @@ func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { return } -var libc_ioctl_trampoline_addr uintptr - -//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib" - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { @@ -2410,28 +2412,6 @@ var libc_munmap_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func writelen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fstat(fd int, stat *Stat_t) (err error) { _, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { @@ -2521,14 +2501,6 @@ func ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) { return } -func ptrace1Ptr(request int, pid int, addr uintptr, data unsafe.Pointer) (err error) { - _, _, e1 := syscall_syscall6(libc_ptrace_trampoline_addr, uintptr(request), uintptr(pid), addr, uintptr(data), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - var libc_ptrace_trampoline_addr uintptr //go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s index c3b82c0379..08362c1ab7 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s @@ -5,703 +5,586 @@ TEXT libc_fdopendir_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fdopendir(SB) - GLOBL ·libc_fdopendir_trampoline_addr(SB), RODATA, $8 DATA ·libc_fdopendir_trampoline_addr(SB)/8, $libc_fdopendir_trampoline<>(SB) TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getgroups(SB) - GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $8 DATA ·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB) TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setgroups(SB) - GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $8 DATA ·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB) TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_wait4(SB) - GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $8 DATA ·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB) TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_accept(SB) - GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $8 DATA ·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB) TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_bind(SB) - GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $8 DATA ·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB) TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_connect(SB) - GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $8 DATA ·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB) TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_socket(SB) - GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $8 DATA ·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB) TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getsockopt(SB) - GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $8 DATA ·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB) TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setsockopt(SB) - GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $8 DATA ·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB) TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getpeername(SB) - GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $8 DATA ·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB) TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getsockname(SB) - GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $8 DATA ·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB) TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_shutdown(SB) - GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $8 DATA ·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB) TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_socketpair(SB) - GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $8 DATA ·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB) TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_recvfrom(SB) - GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $8 DATA ·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB) TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_sendto(SB) - GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $8 DATA ·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB) TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_recvmsg(SB) - GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $8 DATA ·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB) TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_sendmsg(SB) - GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $8 DATA ·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB) TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_kevent(SB) - GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $8 DATA ·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB) TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_utimes(SB) - GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $8 DATA ·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB) TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_futimes(SB) - GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $8 DATA ·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB) TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_poll(SB) - GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8 DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB) TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_madvise(SB) - GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $8 DATA ·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB) TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mlock(SB) - GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $8 DATA ·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB) TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mlockall(SB) - GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $8 DATA ·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB) TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mprotect(SB) - GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $8 DATA ·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB) TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_msync(SB) - GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $8 DATA ·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB) TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_munlock(SB) - GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $8 DATA ·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB) TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_munlockall(SB) - GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8 DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB) TEXT libc_closedir_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_closedir(SB) - GLOBL ·libc_closedir_trampoline_addr(SB), RODATA, $8 DATA ·libc_closedir_trampoline_addr(SB)/8, $libc_closedir_trampoline<>(SB) TEXT libc_readdir_r_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_readdir_r(SB) - GLOBL ·libc_readdir_r_trampoline_addr(SB), RODATA, $8 DATA ·libc_readdir_r_trampoline_addr(SB)/8, $libc_readdir_r_trampoline<>(SB) TEXT libc_pipe_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_pipe(SB) - GLOBL ·libc_pipe_trampoline_addr(SB), RODATA, $8 DATA ·libc_pipe_trampoline_addr(SB)/8, $libc_pipe_trampoline<>(SB) TEXT libc_getxattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getxattr(SB) - GLOBL ·libc_getxattr_trampoline_addr(SB), RODATA, $8 DATA ·libc_getxattr_trampoline_addr(SB)/8, $libc_getxattr_trampoline<>(SB) TEXT libc_fgetxattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fgetxattr(SB) - GLOBL ·libc_fgetxattr_trampoline_addr(SB), RODATA, $8 DATA ·libc_fgetxattr_trampoline_addr(SB)/8, $libc_fgetxattr_trampoline<>(SB) TEXT libc_setxattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setxattr(SB) - GLOBL ·libc_setxattr_trampoline_addr(SB), RODATA, $8 DATA ·libc_setxattr_trampoline_addr(SB)/8, $libc_setxattr_trampoline<>(SB) TEXT libc_fsetxattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fsetxattr(SB) - GLOBL ·libc_fsetxattr_trampoline_addr(SB), RODATA, $8 DATA ·libc_fsetxattr_trampoline_addr(SB)/8, $libc_fsetxattr_trampoline<>(SB) TEXT libc_removexattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_removexattr(SB) - GLOBL ·libc_removexattr_trampoline_addr(SB), RODATA, $8 DATA ·libc_removexattr_trampoline_addr(SB)/8, $libc_removexattr_trampoline<>(SB) TEXT libc_fremovexattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fremovexattr(SB) - GLOBL ·libc_fremovexattr_trampoline_addr(SB), RODATA, $8 DATA ·libc_fremovexattr_trampoline_addr(SB)/8, $libc_fremovexattr_trampoline<>(SB) TEXT libc_listxattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_listxattr(SB) - GLOBL ·libc_listxattr_trampoline_addr(SB), RODATA, $8 DATA ·libc_listxattr_trampoline_addr(SB)/8, $libc_listxattr_trampoline<>(SB) TEXT libc_flistxattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_flistxattr(SB) - GLOBL ·libc_flistxattr_trampoline_addr(SB), RODATA, $8 DATA ·libc_flistxattr_trampoline_addr(SB)/8, $libc_flistxattr_trampoline<>(SB) TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_utimensat(SB) - GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8 DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB) TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fcntl(SB) - GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $8 DATA ·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB) TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_kill(SB) - GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $8 DATA ·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB) TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_ioctl(SB) - GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8 DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB) TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_sysctl(SB) - GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) TEXT libc_sendfile_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_sendfile(SB) - GLOBL ·libc_sendfile_trampoline_addr(SB), RODATA, $8 DATA ·libc_sendfile_trampoline_addr(SB)/8, $libc_sendfile_trampoline<>(SB) TEXT libc_shmat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_shmat(SB) - GLOBL ·libc_shmat_trampoline_addr(SB), RODATA, $8 DATA ·libc_shmat_trampoline_addr(SB)/8, $libc_shmat_trampoline<>(SB) TEXT libc_shmctl_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_shmctl(SB) - GLOBL ·libc_shmctl_trampoline_addr(SB), RODATA, $8 DATA ·libc_shmctl_trampoline_addr(SB)/8, $libc_shmctl_trampoline<>(SB) TEXT libc_shmdt_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_shmdt(SB) - GLOBL ·libc_shmdt_trampoline_addr(SB), RODATA, $8 DATA ·libc_shmdt_trampoline_addr(SB)/8, $libc_shmdt_trampoline<>(SB) TEXT libc_shmget_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_shmget(SB) - GLOBL ·libc_shmget_trampoline_addr(SB), RODATA, $8 DATA ·libc_shmget_trampoline_addr(SB)/8, $libc_shmget_trampoline<>(SB) TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_access(SB) - GLOBL ·libc_access_trampoline_addr(SB), RODATA, $8 DATA ·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB) TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_adjtime(SB) - GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $8 DATA ·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB) TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_chdir(SB) - GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $8 DATA ·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB) TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_chflags(SB) - GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $8 DATA ·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB) TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_chmod(SB) - GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $8 DATA ·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB) TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_chown(SB) - GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $8 DATA ·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB) TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_chroot(SB) - GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8 DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB) TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_clock_gettime(SB) - GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $8 DATA ·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB) TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_close(SB) - GLOBL ·libc_close_trampoline_addr(SB), RODATA, $8 DATA ·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB) TEXT libc_clonefile_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_clonefile(SB) - GLOBL ·libc_clonefile_trampoline_addr(SB), RODATA, $8 DATA ·libc_clonefile_trampoline_addr(SB)/8, $libc_clonefile_trampoline<>(SB) TEXT libc_clonefileat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_clonefileat(SB) - GLOBL ·libc_clonefileat_trampoline_addr(SB), RODATA, $8 DATA ·libc_clonefileat_trampoline_addr(SB)/8, $libc_clonefileat_trampoline<>(SB) TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_dup(SB) - GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $8 DATA ·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB) TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_dup2(SB) - GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $8 DATA ·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB) TEXT libc_exchangedata_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_exchangedata(SB) - GLOBL ·libc_exchangedata_trampoline_addr(SB), RODATA, $8 DATA ·libc_exchangedata_trampoline_addr(SB)/8, $libc_exchangedata_trampoline<>(SB) TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_exit(SB) - GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $8 DATA ·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB) TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_faccessat(SB) - GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $8 DATA ·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB) TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fchdir(SB) - GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $8 DATA ·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB) TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fchflags(SB) - GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $8 DATA ·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB) TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fchmod(SB) - GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $8 DATA ·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB) TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fchmodat(SB) - GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $8 DATA ·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB) TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fchown(SB) - GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $8 DATA ·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB) TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fchownat(SB) - GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $8 DATA ·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB) TEXT libc_fclonefileat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fclonefileat(SB) - GLOBL ·libc_fclonefileat_trampoline_addr(SB), RODATA, $8 DATA ·libc_fclonefileat_trampoline_addr(SB)/8, $libc_fclonefileat_trampoline<>(SB) TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_flock(SB) - GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $8 DATA ·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB) TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fpathconf(SB) - GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $8 DATA ·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB) TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fsync(SB) - GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $8 DATA ·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB) TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_ftruncate(SB) - GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $8 DATA ·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB) TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getcwd(SB) - GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8 DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB) TEXT libc_getdtablesize_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getdtablesize(SB) - GLOBL ·libc_getdtablesize_trampoline_addr(SB), RODATA, $8 DATA ·libc_getdtablesize_trampoline_addr(SB)/8, $libc_getdtablesize_trampoline<>(SB) TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getegid(SB) - GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $8 DATA ·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB) TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_geteuid(SB) - GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $8 DATA ·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB) TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getgid(SB) - GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $8 DATA ·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB) TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getpgid(SB) - GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $8 DATA ·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB) TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getpgrp(SB) - GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $8 DATA ·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB) TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getpid(SB) - GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $8 DATA ·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB) TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getppid(SB) - GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $8 DATA ·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB) TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getpriority(SB) - GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $8 DATA ·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB) TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getrlimit(SB) - GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $8 DATA ·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB) TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getrusage(SB) - GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $8 DATA ·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB) TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getsid(SB) - GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $8 DATA ·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB) TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_gettimeofday(SB) - GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $8 DATA ·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB) TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getuid(SB) - GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $8 DATA ·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB) TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_issetugid(SB) - GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $8 DATA ·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB) TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_kqueue(SB) - GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $8 DATA ·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB) TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_lchown(SB) - GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $8 DATA ·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB) TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_link(SB) - GLOBL ·libc_link_trampoline_addr(SB), RODATA, $8 DATA ·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB) TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_linkat(SB) - GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $8 DATA ·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB) TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_listen(SB) - GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $8 DATA ·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB) TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mkdir(SB) - GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $8 DATA ·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB) TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mkdirat(SB) - GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $8 DATA ·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB) TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mkfifo(SB) - GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $8 DATA ·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB) TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mknod(SB) - GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8 DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB) TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mount(SB) - GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_open(SB) - GLOBL ·libc_open_trampoline_addr(SB), RODATA, $8 DATA ·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB) TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_openat(SB) - GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $8 DATA ·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB) TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_pathconf(SB) - GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $8 DATA ·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB) TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_pread(SB) - GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $8 DATA ·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB) TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_pwrite(SB) - GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $8 DATA ·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB) TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_read(SB) - GLOBL ·libc_read_trampoline_addr(SB), RODATA, $8 DATA ·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB) TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_readlink(SB) - GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $8 DATA ·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB) TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_readlinkat(SB) - GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $8 DATA ·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB) TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_rename(SB) - GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $8 DATA ·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB) TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_renameat(SB) - GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $8 DATA ·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB) TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_revoke(SB) - GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $8 DATA ·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB) TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_rmdir(SB) - GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $8 DATA ·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB) TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_lseek(SB) - GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $8 DATA ·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB) TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_select(SB) - GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8 DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB) @@ -712,192 +595,160 @@ DATA ·libc_setattrlist_trampoline_addr(SB)/8, $libc_setattrlist_trampoline<>(SB TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setegid(SB) - GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $8 DATA ·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB) TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_seteuid(SB) - GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $8 DATA ·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB) TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setgid(SB) - GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $8 DATA ·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB) TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setlogin(SB) - GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $8 DATA ·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB) TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setpgid(SB) - GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $8 DATA ·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB) TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setpriority(SB) - GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $8 DATA ·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB) TEXT libc_setprivexec_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setprivexec(SB) - GLOBL ·libc_setprivexec_trampoline_addr(SB), RODATA, $8 DATA ·libc_setprivexec_trampoline_addr(SB)/8, $libc_setprivexec_trampoline<>(SB) TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setregid(SB) - GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $8 DATA ·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB) TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setreuid(SB) - GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $8 DATA ·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB) TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setsid(SB) - GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $8 DATA ·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB) TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_settimeofday(SB) - GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $8 DATA ·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB) TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setuid(SB) - GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $8 DATA ·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB) TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_symlink(SB) - GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $8 DATA ·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB) TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_symlinkat(SB) - GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $8 DATA ·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB) TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_sync(SB) - GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $8 DATA ·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB) TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_truncate(SB) - GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $8 DATA ·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB) TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_umask(SB) - GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $8 DATA ·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB) TEXT libc_undelete_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_undelete(SB) - GLOBL ·libc_undelete_trampoline_addr(SB), RODATA, $8 DATA ·libc_undelete_trampoline_addr(SB)/8, $libc_undelete_trampoline<>(SB) TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_unlink(SB) - GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $8 DATA ·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB) TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_unlinkat(SB) - GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $8 DATA ·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB) TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_unmount(SB) - GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $8 DATA ·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB) TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_write(SB) - GLOBL ·libc_write_trampoline_addr(SB), RODATA, $8 DATA ·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB) TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mmap(SB) - GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $8 DATA ·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB) TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_munmap(SB) - GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fstat(SB) - GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $8 DATA ·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB) TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fstatat(SB) - GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $8 DATA ·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB) TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fstatfs(SB) - GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $8 DATA ·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB) TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getfsstat(SB) - GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $8 DATA ·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB) TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_lstat(SB) - GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $8 DATA ·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB) TEXT libc_ptrace_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_ptrace(SB) - GLOBL ·libc_ptrace_trampoline_addr(SB), RODATA, $8 DATA ·libc_ptrace_trampoline_addr(SB)/8, $libc_ptrace_trampoline<>(SB) TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_stat(SB) - GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $8 DATA ·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB) TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_statfs(SB) - GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $8 DATA ·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go index 0eabac7ade..0c67df64a5 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go @@ -1642,28 +1642,6 @@ func munmap(addr uintptr, length uintptr) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func writelen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) nfd = int(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go index ee313eb007..e6e05d145b 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go @@ -1862,28 +1862,6 @@ func munmap(addr uintptr, length uintptr) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func writelen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) nfd = int(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go index 4c986e448e..7508accac9 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go @@ -1862,28 +1862,6 @@ func munmap(addr uintptr, length uintptr) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func writelen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) nfd = int(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go index 555216944a..7b56aead46 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go @@ -1862,28 +1862,6 @@ func munmap(addr uintptr, length uintptr) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func writelen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) nfd = int(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go index 67a226fbf5..cc623dcaae 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go @@ -1862,28 +1862,6 @@ func munmap(addr uintptr, length uintptr) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func writelen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) nfd = int(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go index f0b9ddaaa2..5818491974 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go @@ -1862,28 +1862,6 @@ func munmap(addr uintptr, length uintptr) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func writelen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) nfd = int(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go index b57c7050d7..6be25cd190 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go @@ -40,7 +40,7 @@ func readv(fd int, iovs []Iovec) (n int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procreadv)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), 0, 0, 0) n = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -55,7 +55,7 @@ func preadv(fd int, iovs []Iovec, off int64) (n int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpreadv)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), uintptr(off), 0, 0) n = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -70,7 +70,7 @@ func writev(fd int, iovs []Iovec) (n int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwritev)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), 0, 0, 0) n = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -85,7 +85,7 @@ func pwritev(fd int, iovs []Iovec, off int64) (n int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpwritev)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), uintptr(off), 0, 0) n = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -96,7 +96,7 @@ func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procaccept4)), 4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) fd = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux.go b/vendor/golang.org/x/sys/unix/zsyscall_linux.go index 14ab34a565..1ff3aec74c 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux.go @@ -1734,28 +1734,6 @@ func exitThread(code int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlen(fd int, p *byte, np int) (n int, err error) { - r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func writelen(fd int, p *byte, np int) (n int, err error) { - r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func readv(fd int, iovs []Iovec) (n int, err error) { var _p0 unsafe.Pointer if len(iovs) > 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go index 35f499b32a..2df3c5bac6 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go @@ -1824,28 +1824,6 @@ func munmap(addr uintptr, length uintptr) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func writelen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go index 3cda65b0da..a60556babb 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go @@ -1824,28 +1824,6 @@ func munmap(addr uintptr, length uintptr) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func writelen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go index 1e1fea902b..9f788917a4 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go @@ -1824,28 +1824,6 @@ func munmap(addr uintptr, length uintptr) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func writelen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go index 3b77da1107..82a4cb2dc4 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go @@ -1824,28 +1824,6 @@ func munmap(addr uintptr, length uintptr) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func writelen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go index 9ab9abf721..66b3b64563 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go @@ -549,6 +549,12 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { return } +var libc_ioctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) if e1 != 0 { @@ -557,10 +563,6 @@ func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { return } -var libc_ioctl_trampoline_addr uintptr - -//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { @@ -2211,28 +2213,6 @@ var libc_munmap_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func writelen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go index 915761eab7..c5c4cc112e 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go @@ -2213,28 +2213,6 @@ var libc_munmap_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func writelen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go index 8e87fdf153..93bfbb3287 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go @@ -549,6 +549,12 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { return } +var libc_ioctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) if e1 != 0 { @@ -557,10 +563,6 @@ func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { return } -var libc_ioctl_trampoline_addr uintptr - -//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { @@ -2211,28 +2213,6 @@ var libc_munmap_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func writelen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go index 12a7a2160e..a107b8fda5 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go @@ -549,6 +549,12 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { return } +var libc_ioctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) if e1 != 0 { @@ -557,10 +563,6 @@ func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { return } -var libc_ioctl_trampoline_addr uintptr - -//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { @@ -2211,28 +2213,6 @@ var libc_munmap_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func writelen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go index b19e8aa031..c427de509e 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go @@ -549,6 +549,12 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { return } +var libc_ioctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) if e1 != 0 { @@ -557,10 +563,6 @@ func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { return } -var libc_ioctl_trampoline_addr uintptr - -//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { @@ -2211,28 +2213,6 @@ var libc_munmap_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func writelen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go index fb99594c93..60c1a99ae4 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go @@ -549,6 +549,12 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { return } +var libc_ioctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) if e1 != 0 { @@ -557,10 +563,6 @@ func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { return } -var libc_ioctl_trampoline_addr uintptr - -//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { @@ -2211,28 +2213,6 @@ var libc_munmap_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func writelen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go index 32cbbbc52b..52eba360f8 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go @@ -549,6 +549,12 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { return } +var libc_ioctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) if e1 != 0 { @@ -557,10 +563,6 @@ func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { return } -var libc_ioctl_trampoline_addr uintptr - -//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" - // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { @@ -2211,28 +2213,6 @@ var libc_munmap_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func writelen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go index 609d1c598a..b401894644 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go @@ -436,7 +436,7 @@ func pipe(p *[2]_C_int) (n int, err error) { r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procpipe)), 1, uintptr(unsafe.Pointer(p)), 0, 0, 0, 0, 0) n = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -446,7 +446,7 @@ func pipe(p *[2]_C_int) (n int, err error) { func pipe2(p *[2]_C_int, flags int) (err error) { _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procpipe2)), 2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -456,7 +456,7 @@ func pipe2(p *[2]_C_int, flags int) (err error) { func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetsockname)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -471,7 +471,7 @@ func Getcwd(buf []byte) (n int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetcwd)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0, 0, 0, 0) n = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -482,7 +482,7 @@ func getgroups(ngid int, gid *_Gid_t) (n int, err error) { r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0) n = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -492,7 +492,7 @@ func getgroups(ngid int, gid *_Gid_t) (n int, err error) { func setgroups(ngid int, gid *_Gid_t) (err error) { _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procsetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -503,7 +503,7 @@ func wait4(pid int32, statusp *_C_int, options int, rusage *Rusage) (wpid int32, r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwait4)), 4, uintptr(pid), uintptr(unsafe.Pointer(statusp)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) wpid = int32(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -518,7 +518,7 @@ func gethostname(buf []byte) (n int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgethostname)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0, 0, 0, 0) n = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -533,7 +533,7 @@ func utimes(path string, times *[2]Timeval) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procutimes)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -548,7 +548,7 @@ func utimensat(fd int, path string, times *[2]Timespec, flag int) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procutimensat)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flag), 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -559,7 +559,7 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0) val = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -569,7 +569,7 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { func futimesat(fildes int, path *byte, times *[2]Timeval) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfutimesat)), 3, uintptr(fildes), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)), 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -580,7 +580,7 @@ func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procaccept)), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) fd = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -591,7 +591,7 @@ func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_recvmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0) n = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -602,7 +602,7 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_sendmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0) n = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -612,7 +612,7 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { func acct(path *byte) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procacct)), 1, uintptr(unsafe.Pointer(path)), 0, 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -647,7 +647,7 @@ func ioctlRet(fd int, req int, arg uintptr) (ret int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0) ret = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -658,7 +658,7 @@ func ioctlPtrRet(fd int, req int, arg unsafe.Pointer) (ret int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0) ret = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -669,7 +669,7 @@ func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpoll)), 3, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout), 0, 0, 0) n = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -684,7 +684,7 @@ func Access(path string, mode uint32) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAccess)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -694,7 +694,7 @@ func Access(path string, mode uint32) (err error) { func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAdjtime)), 2, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -709,7 +709,7 @@ func Chdir(path string) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChdir)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -724,7 +724,7 @@ func Chmod(path string, mode uint32) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChmod)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -739,7 +739,7 @@ func Chown(path string, uid int, gid int) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChown)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -754,7 +754,7 @@ func Chroot(path string) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChroot)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -764,7 +764,7 @@ func Chroot(path string) (err error) { func ClockGettime(clockid int32, time *Timespec) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procClockGettime)), 2, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -774,7 +774,7 @@ func ClockGettime(clockid int32, time *Timespec) (err error) { func Close(fd int) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procClose)), 1, uintptr(fd), 0, 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -790,7 +790,7 @@ func Creat(path string, mode uint32) (fd int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procCreat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) fd = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -801,7 +801,7 @@ func Dup(fd int) (nfd int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup)), 1, uintptr(fd), 0, 0, 0, 0, 0) nfd = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -811,7 +811,7 @@ func Dup(fd int) (nfd int, err error) { func Dup2(oldfd int, newfd int) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup2)), 2, uintptr(oldfd), uintptr(newfd), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -833,7 +833,7 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFaccessat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -843,7 +843,7 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { func Fchdir(fd int) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -853,7 +853,7 @@ func Fchdir(fd int) (err error) { func Fchmod(fd int, mode uint32) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmod)), 2, uintptr(fd), uintptr(mode), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -868,7 +868,7 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmodat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -878,7 +878,7 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { func Fchown(fd int, uid int, gid int) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchown)), 3, uintptr(fd), uintptr(uid), uintptr(gid), 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -893,7 +893,7 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchownat)), 5, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -903,7 +903,7 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { func Fdatasync(fd int) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFdatasync)), 1, uintptr(fd), 0, 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -913,7 +913,7 @@ func Fdatasync(fd int) (err error) { func Flock(fd int, how int) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFlock)), 2, uintptr(fd), uintptr(how), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -924,7 +924,7 @@ func Fpathconf(fd int, name int) (val int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFpathconf)), 2, uintptr(fd), uintptr(name), 0, 0, 0, 0) val = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -934,7 +934,7 @@ func Fpathconf(fd int, name int) (val int, err error) { func Fstat(fd int, stat *Stat_t) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstat)), 2, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -949,7 +949,7 @@ func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstatat)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -959,7 +959,7 @@ func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { func Fstatvfs(fd int, vfsstat *Statvfs_t) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstatvfs)), 2, uintptr(fd), uintptr(unsafe.Pointer(vfsstat)), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -974,7 +974,7 @@ func Getdents(fd int, buf []byte, basep *uintptr) (n int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetdents)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) n = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1001,7 +1001,7 @@ func Getpgid(pid int) (pgid int, err error) { r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0) pgid = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1012,7 +1012,7 @@ func Getpgrp() (pgid int, err error) { r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgrp)), 0, 0, 0, 0, 0, 0, 0) pgid = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1047,7 +1047,7 @@ func Getpriority(which int, who int) (n int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetpriority)), 2, uintptr(which), uintptr(who), 0, 0, 0, 0) n = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1057,7 +1057,7 @@ func Getpriority(which int, who int) (n int, err error) { func Getrlimit(which int, lim *Rlimit) (err error) { _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrlimit)), 2, uintptr(which), uintptr(unsafe.Pointer(lim)), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1067,7 +1067,7 @@ func Getrlimit(which int, lim *Rlimit) (err error) { func Getrusage(who int, rusage *Rusage) (err error) { _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrusage)), 2, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1078,7 +1078,7 @@ func Getsid(pid int) (sid int, err error) { r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetsid)), 1, uintptr(pid), 0, 0, 0, 0, 0) sid = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1088,7 +1088,7 @@ func Getsid(pid int) (sid int, err error) { func Gettimeofday(tv *Timeval) (err error) { _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGettimeofday)), 1, uintptr(unsafe.Pointer(tv)), 0, 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1106,7 +1106,7 @@ func Getuid() (uid int) { func Kill(pid int, signum syscall.Signal) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procKill)), 2, uintptr(pid), uintptr(signum), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1121,7 +1121,7 @@ func Lchown(path string, uid int, gid int) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLchown)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1141,7 +1141,7 @@ func Link(path string, link string) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLink)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1151,7 +1151,7 @@ func Link(path string, link string) (err error) { func Listen(s int, backlog int) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_llisten)), 2, uintptr(s), uintptr(backlog), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1166,7 +1166,7 @@ func Lstat(path string, stat *Stat_t) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLstat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1180,7 +1180,7 @@ func Madvise(b []byte, advice int) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMadvise)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(advice), 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1195,7 +1195,7 @@ func Mkdir(path string, mode uint32) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkdir)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1210,7 +1210,7 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkdirat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1225,7 +1225,7 @@ func Mkfifo(path string, mode uint32) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkfifo)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1240,7 +1240,7 @@ func Mkfifoat(dirfd int, path string, mode uint32) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkfifoat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1255,7 +1255,7 @@ func Mknod(path string, mode uint32, dev int) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMknod)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1270,7 +1270,7 @@ func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMknodat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1284,7 +1284,7 @@ func Mlock(b []byte) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMlock)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1294,7 +1294,7 @@ func Mlock(b []byte) (err error) { func Mlockall(flags int) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMlockall)), 1, uintptr(flags), 0, 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1308,7 +1308,7 @@ func Mprotect(b []byte, prot int) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMprotect)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(prot), 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1322,7 +1322,7 @@ func Msync(b []byte, flags int) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMsync)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(flags), 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1336,7 +1336,7 @@ func Munlock(b []byte) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMunlock)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1346,7 +1346,7 @@ func Munlock(b []byte) (err error) { func Munlockall() (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMunlockall)), 0, 0, 0, 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1356,7 +1356,7 @@ func Munlockall() (err error) { func Nanosleep(time *Timespec, leftover *Timespec) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procNanosleep)), 2, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1372,7 +1372,7 @@ func Open(path string, mode int, perm uint32) (fd int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procOpen)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0, 0) fd = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1388,7 +1388,7 @@ func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procOpenat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) fd = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1404,7 +1404,7 @@ func Pathconf(path string, name int) (val int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPathconf)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0, 0, 0, 0) val = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1414,7 +1414,7 @@ func Pathconf(path string, name int) (val int, err error) { func Pause() (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPause)), 0, 0, 0, 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1429,7 +1429,7 @@ func pread(fd int, p []byte, offset int64) (n int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpread)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0) n = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1444,7 +1444,7 @@ func pwrite(fd int, p []byte, offset int64) (n int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpwrite)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0) n = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1459,7 +1459,7 @@ func read(fd int, p []byte) (n int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procread)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0) n = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1479,7 +1479,7 @@ func Readlink(path string, buf []byte) (n int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procReadlink)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(len(buf)), 0, 0, 0) n = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1499,7 +1499,7 @@ func Rename(from string, to string) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRename)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1519,7 +1519,7 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRenameat)), 4, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1534,7 +1534,7 @@ func Rmdir(path string) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRmdir)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1545,7 +1545,7 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proclseek)), 3, uintptr(fd), uintptr(offset), uintptr(whence), 0, 0, 0) newoffset = int64(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1556,7 +1556,7 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSelect)), 5, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) n = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1566,7 +1566,7 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err func Setegid(egid int) (err error) { _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetegid)), 1, uintptr(egid), 0, 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1576,7 +1576,7 @@ func Setegid(egid int) (err error) { func Seteuid(euid int) (err error) { _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSeteuid)), 1, uintptr(euid), 0, 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1586,7 +1586,7 @@ func Seteuid(euid int) (err error) { func Setgid(gid int) (err error) { _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetgid)), 1, uintptr(gid), 0, 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1600,7 +1600,7 @@ func Sethostname(p []byte) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSethostname)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1610,7 +1610,7 @@ func Sethostname(p []byte) (err error) { func Setpgid(pid int, pgid int) (err error) { _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetpgid)), 2, uintptr(pid), uintptr(pgid), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1620,7 +1620,7 @@ func Setpgid(pid int, pgid int) (err error) { func Setpriority(which int, who int, prio int) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSetpriority)), 3, uintptr(which), uintptr(who), uintptr(prio), 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1630,7 +1630,7 @@ func Setpriority(which int, who int, prio int) (err error) { func Setregid(rgid int, egid int) (err error) { _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetregid)), 2, uintptr(rgid), uintptr(egid), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1640,7 +1640,7 @@ func Setregid(rgid int, egid int) (err error) { func Setreuid(ruid int, euid int) (err error) { _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetreuid)), 2, uintptr(ruid), uintptr(euid), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1651,7 +1651,7 @@ func Setsid() (pid int, err error) { r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetsid)), 0, 0, 0, 0, 0, 0, 0) pid = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1661,7 +1661,7 @@ func Setsid() (pid int, err error) { func Setuid(uid int) (err error) { _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetuid)), 1, uintptr(uid), 0, 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1671,7 +1671,7 @@ func Setuid(uid int) (err error) { func Shutdown(s int, how int) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procshutdown)), 2, uintptr(s), uintptr(how), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1686,7 +1686,7 @@ func Stat(path string, stat *Stat_t) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procStat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1701,7 +1701,7 @@ func Statvfs(path string, vfsstat *Statvfs_t) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procStatvfs)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(vfsstat)), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1721,7 +1721,7 @@ func Symlink(path string, link string) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSymlink)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1731,7 +1731,7 @@ func Symlink(path string, link string) (err error) { func Sync() (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSync)), 0, 0, 0, 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1742,7 +1742,7 @@ func Sysconf(which int) (n int64, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSysconf)), 1, uintptr(which), 0, 0, 0, 0, 0) n = int64(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1753,7 +1753,7 @@ func Times(tms *Tms) (ticks uintptr, err error) { r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procTimes)), 1, uintptr(unsafe.Pointer(tms)), 0, 0, 0, 0, 0) ticks = uintptr(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1768,7 +1768,7 @@ func Truncate(path string, length int64) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procTruncate)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1778,7 +1778,7 @@ func Truncate(path string, length int64) (err error) { func Fsync(fd int) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFsync)), 1, uintptr(fd), 0, 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1788,7 +1788,7 @@ func Fsync(fd int) (err error) { func Ftruncate(fd int, length int64) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFtruncate)), 2, uintptr(fd), uintptr(length), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1806,7 +1806,7 @@ func Umask(mask int) (oldmask int) { func Uname(buf *Utsname) (err error) { _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procUname)), 1, uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1821,7 +1821,7 @@ func Unmount(target string, flags int) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procumount)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1836,7 +1836,7 @@ func Unlink(path string) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlink)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1851,7 +1851,7 @@ func Unlinkat(dirfd int, path string, flags int) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlinkat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1861,7 +1861,7 @@ func Unlinkat(dirfd int, path string, flags int) (err error) { func Ustat(dev int, ubuf *Ustat_t) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUstat)), 2, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1876,7 +1876,7 @@ func Utime(path string, buf *Utimbuf) (err error) { } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUtime)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1886,7 +1886,7 @@ func Utime(path string, buf *Utimbuf) (err error) { func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_bind)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1896,7 +1896,7 @@ func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_connect)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1907,7 +1907,7 @@ func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) ( r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmmap)), 6, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) ret = uintptr(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1917,7 +1917,7 @@ func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) ( func munmap(addr uintptr, length uintptr) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmunmap)), 2, uintptr(addr), uintptr(length), 0, 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1928,7 +1928,7 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsendfile)), 4, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) written = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1942,7 +1942,7 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) ( } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_sendto)), 6, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1953,7 +1953,7 @@ func socket(domain int, typ int, proto int) (fd int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_socket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0) fd = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1963,7 +1963,7 @@ func socket(domain int, typ int, proto int) (fd int, err error) { func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&proc__xnet_socketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1978,7 +1978,7 @@ func write(fd int, p []byte) (n int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwrite)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0) n = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1988,7 +1988,7 @@ func write(fd int, p []byte) (n int, err error) { func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_getsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -1998,7 +1998,7 @@ func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetpeername)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -2008,7 +2008,7 @@ func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsetsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -2023,7 +2023,7 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procrecvfrom)), 6, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) n = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -2034,7 +2034,7 @@ func port_create() (n int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_create)), 0, 0, 0, 0, 0, 0, 0) n = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -2045,7 +2045,7 @@ func port_associate(port int, source int, object uintptr, events int, user *byte r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_associate)), 5, uintptr(port), uintptr(source), uintptr(object), uintptr(events), uintptr(unsafe.Pointer(user)), 0) n = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -2056,7 +2056,7 @@ func port_dissociate(port int, source int, object uintptr) (n int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_dissociate)), 3, uintptr(port), uintptr(source), uintptr(object), 0, 0, 0) n = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -2067,7 +2067,7 @@ func port_get(port int, pe *portEvent, timeout *Timespec) (n int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_get)), 3, uintptr(port), uintptr(unsafe.Pointer(pe)), uintptr(unsafe.Pointer(timeout)), 0, 0, 0) n = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -2078,7 +2078,7 @@ func port_getn(port int, pe *portEvent, max uint32, nget *uint32, timeout *Times r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_getn)), 5, uintptr(port), uintptr(unsafe.Pointer(pe)), uintptr(max), uintptr(unsafe.Pointer(nget)), uintptr(unsafe.Pointer(timeout)), 0) n = int(r0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -2088,7 +2088,7 @@ func port_getn(port int, pe *portEvent, max uint32, nget *uint32, timeout *Times func putmsg(fd int, clptr *strbuf, dataptr *strbuf, flags int) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procputmsg)), 4, uintptr(fd), uintptr(unsafe.Pointer(clptr)), uintptr(unsafe.Pointer(dataptr)), uintptr(flags), 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } @@ -2098,7 +2098,7 @@ func putmsg(fd int, clptr *strbuf, dataptr *strbuf, flags int) (err error) { func getmsg(fd int, clptr *strbuf, dataptr *strbuf, flags *int) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetmsg)), 4, uintptr(fd), uintptr(unsafe.Pointer(clptr)), uintptr(unsafe.Pointer(dataptr)), uintptr(unsafe.Pointer(flags)), 0, 0) if e1 != 0 { - err = e1 + err = errnoErr(e1) } return } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go b/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go index c31681743c..1d8fe1d4b2 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go @@ -40,17 +40,6 @@ func read(fd int, p []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := syscall_syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func write(fd int, p []byte) (n int, err error) { var _p0 unsafe.Pointer if len(p) > 0 { diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go index c9c4ad0314..9862853d34 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go @@ -447,4 +447,5 @@ const ( SYS_PROCESS_MRELEASE = 448 SYS_FUTEX_WAITV = 449 SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go index 12ff3417c5..8901f0f4e5 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go @@ -369,4 +369,5 @@ const ( SYS_PROCESS_MRELEASE = 448 SYS_FUTEX_WAITV = 449 SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go index c3fb5e77ab..6902c37eed 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go @@ -411,4 +411,5 @@ const ( SYS_PROCESS_MRELEASE = 448 SYS_FUTEX_WAITV = 449 SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go index 358c847a40..a6d3dff811 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go @@ -314,4 +314,5 @@ const ( SYS_PROCESS_MRELEASE = 448 SYS_FUTEX_WAITV = 449 SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go index 81c4849b16..b18f3f7107 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go @@ -308,4 +308,5 @@ const ( SYS_PROCESS_MRELEASE = 448 SYS_FUTEX_WAITV = 449 SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go index 202a57e900..0302e5e3de 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go @@ -431,4 +431,5 @@ const ( SYS_PROCESS_MRELEASE = 4448 SYS_FUTEX_WAITV = 4449 SYS_SET_MEMPOLICY_HOME_NODE = 4450 + SYS_CACHESTAT = 4451 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go index 1fbceb52d7..6693ba4a0f 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go @@ -361,4 +361,5 @@ const ( SYS_PROCESS_MRELEASE = 5448 SYS_FUTEX_WAITV = 5449 SYS_SET_MEMPOLICY_HOME_NODE = 5450 + SYS_CACHESTAT = 5451 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go index b4ffb7a207..fd93f4987c 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go @@ -361,4 +361,5 @@ const ( SYS_PROCESS_MRELEASE = 5448 SYS_FUTEX_WAITV = 5449 SYS_SET_MEMPOLICY_HOME_NODE = 5450 + SYS_CACHESTAT = 5451 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go index 867985f9b4..760ddcadc2 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go @@ -431,4 +431,5 @@ const ( SYS_PROCESS_MRELEASE = 4448 SYS_FUTEX_WAITV = 4449 SYS_SET_MEMPOLICY_HOME_NODE = 4450 + SYS_CACHESTAT = 4451 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go index a8cce69ede..cff2b2555b 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go @@ -438,4 +438,5 @@ const ( SYS_PROCESS_MRELEASE = 448 SYS_FUTEX_WAITV = 449 SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go index d44c5b39d7..a4b2405d09 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go @@ -410,4 +410,5 @@ const ( SYS_PROCESS_MRELEASE = 448 SYS_FUTEX_WAITV = 449 SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go index 4214dd9c03..aca54b4e3a 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go @@ -410,4 +410,5 @@ const ( SYS_PROCESS_MRELEASE = 448 SYS_FUTEX_WAITV = 449 SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go index ef285c567b..9d1738d641 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go @@ -315,4 +315,5 @@ const ( SYS_PROCESS_MRELEASE = 448 SYS_FUTEX_WAITV = 449 SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go index e6ed7d637d..022878dc8d 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go @@ -376,4 +376,5 @@ const ( SYS_PROCESS_MRELEASE = 448 SYS_FUTEX_WAITV = 449 SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go index 92f628ef4f..4100a761c2 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go @@ -389,4 +389,5 @@ const ( SYS_PROCESS_MRELEASE = 448 SYS_FUTEX_WAITV = 449 SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 ) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux.go b/vendor/golang.org/x/sys/unix/ztypes_linux.go index 494493c78c..18aa70b426 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux.go @@ -1977,7 +1977,7 @@ const ( NFT_MSG_GETFLOWTABLE = 0x17 NFT_MSG_DELFLOWTABLE = 0x18 NFT_MSG_GETRULE_RESET = 0x19 - NFT_MSG_MAX = 0x21 + NFT_MSG_MAX = 0x22 NFTA_LIST_UNSPEC = 0x0 NFTA_LIST_ELEM = 0x1 NFTA_HOOK_UNSPEC = 0x0 @@ -4499,7 +4499,7 @@ const ( NL80211_ATTR_MAC_HINT = 0xc8 NL80211_ATTR_MAC_MASK = 0xd7 NL80211_ATTR_MAX_AP_ASSOC_STA = 0xca - NL80211_ATTR_MAX = 0x145 + NL80211_ATTR_MAX = 0x146 NL80211_ATTR_MAX_CRIT_PROT_DURATION = 0xb4 NL80211_ATTR_MAX_CSA_COUNTERS = 0xce NL80211_ATTR_MAX_MATCH_SETS = 0x85 @@ -4869,7 +4869,7 @@ const ( NL80211_CMD_LEAVE_IBSS = 0x2c NL80211_CMD_LEAVE_MESH = 0x45 NL80211_CMD_LEAVE_OCB = 0x6d - NL80211_CMD_MAX = 0x99 + NL80211_CMD_MAX = 0x9a NL80211_CMD_MICHAEL_MIC_FAILURE = 0x29 NL80211_CMD_MODIFY_LINK_STA = 0x97 NL80211_CMD_NAN_MATCH = 0x78 @@ -5503,7 +5503,7 @@ const ( NL80211_RATE_INFO_HE_RU_ALLOC_52 = 0x1 NL80211_RATE_INFO_HE_RU_ALLOC_996 = 0x5 NL80211_RATE_INFO_HE_RU_ALLOC = 0x11 - NL80211_RATE_INFO_MAX = 0x16 + NL80211_RATE_INFO_MAX = 0x1d NL80211_RATE_INFO_MCS = 0x2 NL80211_RATE_INFO_SHORT_GI = 0x4 NL80211_RATE_INFO_VHT_MCS = 0x6 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go index 83c69c119f..1b4c97c32a 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go @@ -733,6 +733,10 @@ const ( RISCV_HWPROBE_KEY_IMA_EXT_0 = 0x4 RISCV_HWPROBE_IMA_FD = 0x1 RISCV_HWPROBE_IMA_C = 0x2 + RISCV_HWPROBE_IMA_V = 0x4 + RISCV_HWPROBE_EXT_ZBA = 0x8 + RISCV_HWPROBE_EXT_ZBB = 0x10 + RISCV_HWPROBE_EXT_ZBS = 0x20 RISCV_HWPROBE_KEY_CPUPERF_0 = 0x5 RISCV_HWPROBE_MISALIGNED_UNKNOWN = 0x0 RISCV_HWPROBE_MISALIGNED_EMULATED = 0x1 diff --git a/vendor/golang.org/x/sys/windows/exec_windows.go b/vendor/golang.org/x/sys/windows/exec_windows.go index a52e0331d8..9cabbb6941 100644 --- a/vendor/golang.org/x/sys/windows/exec_windows.go +++ b/vendor/golang.org/x/sys/windows/exec_windows.go @@ -22,7 +22,7 @@ import ( // but only if there is space or tab inside s. func EscapeArg(s string) string { if len(s) == 0 { - return "\"\"" + return `""` } n := len(s) hasSpace := false @@ -35,7 +35,7 @@ func EscapeArg(s string) string { } } if hasSpace { - n += 2 + n += 2 // Reserve space for quotes. } if n == len(s) { return s @@ -82,20 +82,68 @@ func EscapeArg(s string) string { // in CreateProcess's CommandLine argument, CreateService/ChangeServiceConfig's BinaryPathName argument, // or any program that uses CommandLineToArgv. func ComposeCommandLine(args []string) string { - var commandLine string - for i := range args { - if i > 0 { - commandLine += " " + if len(args) == 0 { + return "" + } + + // Per https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-commandlinetoargvw: + // “This function accepts command lines that contain a program name; the + // program name can be enclosed in quotation marks or not.” + // + // Unfortunately, it provides no means of escaping interior quotation marks + // within that program name, and we have no way to report them here. + prog := args[0] + mustQuote := len(prog) == 0 + for i := 0; i < len(prog); i++ { + c := prog[i] + if c <= ' ' || (c == '"' && i == 0) { + // Force quotes for not only the ASCII space and tab as described in the + // MSDN article, but also ASCII control characters. + // The documentation for CommandLineToArgvW doesn't say what happens when + // the first argument is not a valid program name, but it empirically + // seems to drop unquoted control characters. + mustQuote = true + break + } + } + var commandLine []byte + if mustQuote { + commandLine = make([]byte, 0, len(prog)+2) + commandLine = append(commandLine, '"') + for i := 0; i < len(prog); i++ { + c := prog[i] + if c == '"' { + // This quote would interfere with our surrounding quotes. + // We have no way to report an error, so just strip out + // the offending character instead. + continue + } + commandLine = append(commandLine, c) } - commandLine += EscapeArg(args[i]) + commandLine = append(commandLine, '"') + } else { + if len(args) == 1 { + // args[0] is a valid command line representing itself. + // No need to allocate a new slice or string for it. + return prog + } + commandLine = []byte(prog) } - return commandLine + + for _, arg := range args[1:] { + commandLine = append(commandLine, ' ') + // TODO(bcmills): since we're already appending to a slice, it would be nice + // to avoid the intermediate allocations of EscapeArg. + // Perhaps we can factor out an appendEscapedArg function. + commandLine = append(commandLine, EscapeArg(arg)...) + } + return string(commandLine) } // DecomposeCommandLine breaks apart its argument command line into unescaped parts using CommandLineToArgv, // as gathered from GetCommandLine, QUERY_SERVICE_CONFIG's BinaryPathName argument, or elsewhere that // command lines are passed around. -// DecomposeCommandLine returns error if commandLine contains NUL. +// DecomposeCommandLine returns an error if commandLine contains NUL. func DecomposeCommandLine(commandLine string) ([]string, error) { if len(commandLine) == 0 { return []string{}, nil @@ -105,18 +153,35 @@ func DecomposeCommandLine(commandLine string) ([]string, error) { return nil, errorspkg.New("string with NUL passed to DecomposeCommandLine") } var argc int32 - argv, err := CommandLineToArgv(&utf16CommandLine[0], &argc) + argv, err := commandLineToArgv(&utf16CommandLine[0], &argc) if err != nil { return nil, err } defer LocalFree(Handle(unsafe.Pointer(argv))) + var args []string - for _, v := range (*argv)[:argc] { - args = append(args, UTF16ToString((*v)[:])) + for _, p := range unsafe.Slice(argv, argc) { + args = append(args, UTF16PtrToString(p)) } return args, nil } +// CommandLineToArgv parses a Unicode command line string and sets +// argc to the number of parsed arguments. +// +// The returned memory should be freed using a single call to LocalFree. +// +// Note that although the return type of CommandLineToArgv indicates 8192 +// entries of up to 8192 characters each, the actual count of parsed arguments +// may exceed 8192, and the documentation for CommandLineToArgvW does not mention +// any bound on the lengths of the individual argument strings. +// (See https://go.dev/issue/63236.) +func CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) { + argp, err := commandLineToArgv(cmd, argc) + argv = (*[8192]*[8192]uint16)(unsafe.Pointer(argp)) + return argv, err +} + func CloseOnExec(fd Handle) { SetHandleInformation(Handle(fd), HANDLE_FLAG_INHERIT, 0) } diff --git a/vendor/golang.org/x/sys/windows/security_windows.go b/vendor/golang.org/x/sys/windows/security_windows.go index d414ef13be..26be94a8a7 100644 --- a/vendor/golang.org/x/sys/windows/security_windows.go +++ b/vendor/golang.org/x/sys/windows/security_windows.go @@ -7,8 +7,6 @@ package windows import ( "syscall" "unsafe" - - "golang.org/x/sys/internal/unsafeheader" ) const ( @@ -1341,21 +1339,14 @@ func (selfRelativeSD *SECURITY_DESCRIPTOR) copySelfRelativeSecurityDescriptor() sdLen = min } - var src []byte - h := (*unsafeheader.Slice)(unsafe.Pointer(&src)) - h.Data = unsafe.Pointer(selfRelativeSD) - h.Len = sdLen - h.Cap = sdLen - + src := unsafe.Slice((*byte)(unsafe.Pointer(selfRelativeSD)), sdLen) + // SECURITY_DESCRIPTOR has pointers in it, which means checkptr expects for it to + // be aligned properly. When we're copying a Windows-allocated struct to a + // Go-allocated one, make sure that the Go allocation is aligned to the + // pointer size. const psize = int(unsafe.Sizeof(uintptr(0))) - - var dst []byte - h = (*unsafeheader.Slice)(unsafe.Pointer(&dst)) alloc := make([]uintptr, (sdLen+psize-1)/psize) - h.Data = (*unsafeheader.Slice)(unsafe.Pointer(&alloc)).Data - h.Len = sdLen - h.Cap = sdLen - + dst := unsafe.Slice((*byte)(unsafe.Pointer(&alloc[0])), sdLen) copy(dst, src) return (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&dst[0])) } diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go index 67bad0926a..35cfc57ca8 100644 --- a/vendor/golang.org/x/sys/windows/syscall_windows.go +++ b/vendor/golang.org/x/sys/windows/syscall_windows.go @@ -15,8 +15,6 @@ import ( "time" "unicode/utf16" "unsafe" - - "golang.org/x/sys/internal/unsafeheader" ) type Handle uintptr @@ -240,7 +238,7 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys SetFileAttributes(name *uint16, attrs uint32) (err error) = kernel32.SetFileAttributesW //sys GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) = kernel32.GetFileAttributesExW //sys GetCommandLine() (cmd *uint16) = kernel32.GetCommandLineW -//sys CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) [failretval==nil] = shell32.CommandLineToArgvW +//sys commandLineToArgv(cmd *uint16, argc *int32) (argv **uint16, err error) [failretval==nil] = shell32.CommandLineToArgvW //sys LocalFree(hmem Handle) (handle Handle, err error) [failretval!=0] //sys LocalAlloc(flags uint32, length uint32) (ptr uintptr, err error) //sys SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) @@ -299,12 +297,15 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys RegNotifyChangeKeyValue(key Handle, watchSubtree bool, notifyFilter uint32, event Handle, asynchronous bool) (regerrno error) = advapi32.RegNotifyChangeKeyValue //sys GetCurrentProcessId() (pid uint32) = kernel32.GetCurrentProcessId //sys ProcessIdToSessionId(pid uint32, sessionid *uint32) (err error) = kernel32.ProcessIdToSessionId +//sys ClosePseudoConsole(console Handle) = kernel32.ClosePseudoConsole +//sys createPseudoConsole(size uint32, in Handle, out Handle, flags uint32, pconsole *Handle) (hr error) = kernel32.CreatePseudoConsole //sys GetConsoleMode(console Handle, mode *uint32) (err error) = kernel32.GetConsoleMode //sys SetConsoleMode(console Handle, mode uint32) (err error) = kernel32.SetConsoleMode //sys GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) = kernel32.GetConsoleScreenBufferInfo //sys setConsoleCursorPosition(console Handle, position uint32) (err error) = kernel32.SetConsoleCursorPosition //sys WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) = kernel32.WriteConsoleW //sys ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) = kernel32.ReadConsoleW +//sys resizePseudoConsole(pconsole Handle, size uint32) (hr error) = kernel32.ResizePseudoConsole //sys CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.CreateToolhelp32Snapshot //sys Module32First(snapshot Handle, moduleEntry *ModuleEntry32) (err error) = kernel32.Module32FirstW //sys Module32Next(snapshot Handle, moduleEntry *ModuleEntry32) (err error) = kernel32.Module32NextW @@ -1667,12 +1668,8 @@ func NewNTUnicodeString(s string) (*NTUnicodeString, error) { // Slice returns a uint16 slice that aliases the data in the NTUnicodeString. func (s *NTUnicodeString) Slice() []uint16 { - var slice []uint16 - hdr := (*unsafeheader.Slice)(unsafe.Pointer(&slice)) - hdr.Data = unsafe.Pointer(s.Buffer) - hdr.Len = int(s.Length) - hdr.Cap = int(s.MaximumLength) - return slice + slice := unsafe.Slice(s.Buffer, s.MaximumLength) + return slice[:s.Length] } func (s *NTUnicodeString) String() string { @@ -1695,12 +1692,8 @@ func NewNTString(s string) (*NTString, error) { // Slice returns a byte slice that aliases the data in the NTString. func (s *NTString) Slice() []byte { - var slice []byte - hdr := (*unsafeheader.Slice)(unsafe.Pointer(&slice)) - hdr.Data = unsafe.Pointer(s.Buffer) - hdr.Len = int(s.Length) - hdr.Cap = int(s.MaximumLength) - return slice + slice := unsafe.Slice(s.Buffer, s.MaximumLength) + return slice[:s.Length] } func (s *NTString) String() string { @@ -1752,10 +1745,7 @@ func LoadResourceData(module, resInfo Handle) (data []byte, err error) { if err != nil { return } - h := (*unsafeheader.Slice)(unsafe.Pointer(&data)) - h.Data = unsafe.Pointer(ptr) - h.Len = int(size) - h.Cap = int(size) + data = unsafe.Slice((*byte)(unsafe.Pointer(ptr)), size) return } @@ -1826,3 +1816,17 @@ type PSAPI_WORKING_SET_EX_INFORMATION struct { // A PSAPI_WORKING_SET_EX_BLOCK union that indicates the attributes of the page at VirtualAddress. VirtualAttributes PSAPI_WORKING_SET_EX_BLOCK } + +// CreatePseudoConsole creates a windows pseudo console. +func CreatePseudoConsole(size Coord, in Handle, out Handle, flags uint32, pconsole *Handle) error { + // We need this wrapper to manually cast Coord to uint32. The autogenerated wrappers only + // accept arguments that can be casted to uintptr, and Coord can't. + return createPseudoConsole(*((*uint32)(unsafe.Pointer(&size))), in, out, flags, pconsole) +} + +// ResizePseudoConsole resizes the internal buffers of the pseudo console to the width and height specified in `size`. +func ResizePseudoConsole(pconsole Handle, size Coord) error { + // We need this wrapper to manually cast Coord to uint32. The autogenerated wrappers only + // accept arguments that can be casted to uintptr, and Coord can't. + return resizePseudoConsole(pconsole, *((*uint32)(unsafe.Pointer(&size)))) +} diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go index 88e62a6385..b88dc7c85e 100644 --- a/vendor/golang.org/x/sys/windows/types_windows.go +++ b/vendor/golang.org/x/sys/windows/types_windows.go @@ -247,6 +247,7 @@ const ( PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY = 0x00020007 PROC_THREAD_ATTRIBUTE_UMS_THREAD = 0x00030006 PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL = 0x0002000b + PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE = 0x00020016 ) const ( @@ -2139,6 +2140,12 @@ const ( ENABLE_LVB_GRID_WORLDWIDE = 0x10 ) +// Pseudo console related constants used for the flags parameter to +// CreatePseudoConsole. See: https://learn.microsoft.com/en-us/windows/console/createpseudoconsole +const ( + PSEUDOCONSOLE_INHERIT_CURSOR = 0x1 +) + type Coord struct { X int16 Y int16 diff --git a/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/zsyscall_windows.go index 5c385580f6..8b1688de4c 100644 --- a/vendor/golang.org/x/sys/windows/zsyscall_windows.go +++ b/vendor/golang.org/x/sys/windows/zsyscall_windows.go @@ -188,6 +188,7 @@ var ( procCancelIo = modkernel32.NewProc("CancelIo") procCancelIoEx = modkernel32.NewProc("CancelIoEx") procCloseHandle = modkernel32.NewProc("CloseHandle") + procClosePseudoConsole = modkernel32.NewProc("ClosePseudoConsole") procConnectNamedPipe = modkernel32.NewProc("ConnectNamedPipe") procCreateDirectoryW = modkernel32.NewProc("CreateDirectoryW") procCreateEventExW = modkernel32.NewProc("CreateEventExW") @@ -202,6 +203,7 @@ var ( procCreateNamedPipeW = modkernel32.NewProc("CreateNamedPipeW") procCreatePipe = modkernel32.NewProc("CreatePipe") procCreateProcessW = modkernel32.NewProc("CreateProcessW") + procCreatePseudoConsole = modkernel32.NewProc("CreatePseudoConsole") procCreateSymbolicLinkW = modkernel32.NewProc("CreateSymbolicLinkW") procCreateToolhelp32Snapshot = modkernel32.NewProc("CreateToolhelp32Snapshot") procDefineDosDeviceW = modkernel32.NewProc("DefineDosDeviceW") @@ -328,6 +330,7 @@ var ( procReleaseMutex = modkernel32.NewProc("ReleaseMutex") procRemoveDirectoryW = modkernel32.NewProc("RemoveDirectoryW") procResetEvent = modkernel32.NewProc("ResetEvent") + procResizePseudoConsole = modkernel32.NewProc("ResizePseudoConsole") procResumeThread = modkernel32.NewProc("ResumeThread") procSetCommTimeouts = modkernel32.NewProc("SetCommTimeouts") procSetConsoleCursorPosition = modkernel32.NewProc("SetConsoleCursorPosition") @@ -1633,6 +1636,11 @@ func CloseHandle(handle Handle) (err error) { return } +func ClosePseudoConsole(console Handle) { + syscall.Syscall(procClosePseudoConsole.Addr(), 1, uintptr(console), 0, 0) + return +} + func ConnectNamedPipe(pipe Handle, overlapped *Overlapped) (err error) { r1, _, e1 := syscall.Syscall(procConnectNamedPipe.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(overlapped)), 0) if r1 == 0 { @@ -1762,6 +1770,14 @@ func CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityA return } +func createPseudoConsole(size uint32, in Handle, out Handle, flags uint32, pconsole *Handle) (hr error) { + r0, _, _ := syscall.Syscall6(procCreatePseudoConsole.Addr(), 5, uintptr(size), uintptr(in), uintptr(out), uintptr(flags), uintptr(unsafe.Pointer(pconsole)), 0) + if r0 != 0 { + hr = syscall.Errno(r0) + } + return +} + func CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) { r1, _, e1 := syscall.Syscall(procCreateSymbolicLinkW.Addr(), 3, uintptr(unsafe.Pointer(symlinkfilename)), uintptr(unsafe.Pointer(targetfilename)), uintptr(flags)) if r1&0xff == 0 { @@ -2862,6 +2878,14 @@ func ResetEvent(event Handle) (err error) { return } +func resizePseudoConsole(pconsole Handle, size uint32) (hr error) { + r0, _, _ := syscall.Syscall(procResizePseudoConsole.Addr(), 2, uintptr(pconsole), uintptr(size), 0) + if r0 != 0 { + hr = syscall.Errno(r0) + } + return +} + func ResumeThread(thread Handle) (ret uint32, err error) { r0, _, e1 := syscall.Syscall(procResumeThread.Addr(), 1, uintptr(thread), 0, 0) ret = uint32(r0) @@ -3820,9 +3844,9 @@ func setupUninstallOEMInf(infFileName *uint16, flags SUOI, reserved uintptr) (er return } -func CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) { +func commandLineToArgv(cmd *uint16, argc *int32) (argv **uint16, err error) { r0, _, e1 := syscall.Syscall(procCommandLineToArgvW.Addr(), 2, uintptr(unsafe.Pointer(cmd)), uintptr(unsafe.Pointer(argc)), 0) - argv = (*[8192]*[8192]uint16)(unsafe.Pointer(r0)) + argv = (**uint16)(unsafe.Pointer(r0)) if argv == nil { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/tools/go/packages/doc.go b/vendor/golang.org/x/tools/go/packages/doc.go index da4ab89fe6..a7a8f73e3d 100644 --- a/vendor/golang.org/x/tools/go/packages/doc.go +++ b/vendor/golang.org/x/tools/go/packages/doc.go @@ -35,7 +35,7 @@ The Package struct provides basic information about the package, including - Imports, a map from source import strings to the Packages they name; - Types, the type information for the package's exported symbols; - Syntax, the parsed syntax trees for the package's source code; and - - TypeInfo, the result of a complete type-check of the package syntax trees. + - TypesInfo, the result of a complete type-check of the package syntax trees. (See the documentation for type Package for the complete list of fields and more detailed descriptions.) diff --git a/vendor/golang.org/x/tools/go/packages/golist.go b/vendor/golang.org/x/tools/go/packages/golist.go index b5de9cf9f2..1f1eade0ac 100644 --- a/vendor/golang.org/x/tools/go/packages/golist.go +++ b/vendor/golang.org/x/tools/go/packages/golist.go @@ -9,7 +9,6 @@ import ( "context" "encoding/json" "fmt" - "io/ioutil" "log" "os" "path" @@ -1109,7 +1108,7 @@ func (state *golistState) writeOverlays() (filename string, cleanup func(), err if len(state.cfg.Overlay) == 0 { return "", func() {}, nil } - dir, err := ioutil.TempDir("", "gopackages-*") + dir, err := os.MkdirTemp("", "gopackages-*") if err != nil { return "", nil, err } @@ -1128,7 +1127,7 @@ func (state *golistState) writeOverlays() (filename string, cleanup func(), err // Create a unique filename for the overlaid files, to avoid // creating nested directories. noSeparator := strings.Join(strings.Split(filepath.ToSlash(k), "/"), "") - f, err := ioutil.TempFile(dir, fmt.Sprintf("*-%s", noSeparator)) + f, err := os.CreateTemp(dir, fmt.Sprintf("*-%s", noSeparator)) if err != nil { return "", func() {}, err } @@ -1146,7 +1145,7 @@ func (state *golistState) writeOverlays() (filename string, cleanup func(), err } // Write out the overlay file that contains the filepath mappings. filename = filepath.Join(dir, "overlay.json") - if err := ioutil.WriteFile(filename, b, 0665); err != nil { + if err := os.WriteFile(filename, b, 0665); err != nil { return "", func() {}, err } return filename, cleanup, nil diff --git a/vendor/golang.org/x/tools/go/packages/packages.go b/vendor/golang.org/x/tools/go/packages/packages.go index 124a6fe143..ece0e7c603 100644 --- a/vendor/golang.org/x/tools/go/packages/packages.go +++ b/vendor/golang.org/x/tools/go/packages/packages.go @@ -16,7 +16,6 @@ import ( "go/token" "go/types" "io" - "io/ioutil" "log" "os" "path/filepath" @@ -1127,7 +1126,7 @@ func (ld *loader) parseFile(filename string) (*ast.File, error) { var err error if src == nil { ioLimit <- true // wait - src, err = ioutil.ReadFile(filename) + src, err = os.ReadFile(filename) <-ioLimit // signal } if err != nil { diff --git a/vendor/golang.org/x/tools/internal/gcimporter/gcimporter.go b/vendor/golang.org/x/tools/internal/gcimporter/gcimporter.go index b1223713b9..2d078ccb19 100644 --- a/vendor/golang.org/x/tools/internal/gcimporter/gcimporter.go +++ b/vendor/golang.org/x/tools/internal/gcimporter/gcimporter.go @@ -29,7 +29,6 @@ import ( "go/token" "go/types" "io" - "io/ioutil" "os" "os/exec" "path/filepath" @@ -221,7 +220,7 @@ func Import(packages map[string]*types.Package, path, srcDir string, lookup func switch hdr { case "$$B\n": var data []byte - data, err = ioutil.ReadAll(buf) + data, err = io.ReadAll(buf) if err != nil { break } diff --git a/vendor/gopkg.in/yaml.v3/LICENSE b/vendor/gopkg.in/yaml.v3/LICENSE new file mode 100644 index 0000000000..2683e4bb1f --- /dev/null +++ b/vendor/gopkg.in/yaml.v3/LICENSE @@ -0,0 +1,50 @@ + +This project is covered by two different licenses: MIT and Apache. + +#### MIT License #### + +The following files were ported to Go from C files of libyaml, and thus +are still covered by their original MIT license, with the additional +copyright staring in 2011 when the project was ported over: + + apic.go emitterc.go parserc.go readerc.go scannerc.go + writerc.go yamlh.go yamlprivateh.go + +Copyright (c) 2006-2010 Kirill Simonov +Copyright (c) 2006-2011 Kirill Simonov + +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. + +### Apache License ### + +All the remaining project files are covered by the Apache license: + +Copyright (c) 2011-2019 Canonical Ltd + +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. diff --git a/vendor/gopkg.in/yaml.v3/NOTICE b/vendor/gopkg.in/yaml.v3/NOTICE new file mode 100644 index 0000000000..866d74a7ad --- /dev/null +++ b/vendor/gopkg.in/yaml.v3/NOTICE @@ -0,0 +1,13 @@ +Copyright 2011-2016 Canonical Ltd. + +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. diff --git a/vendor/gopkg.in/yaml.v3/README.md b/vendor/gopkg.in/yaml.v3/README.md new file mode 100644 index 0000000000..08eb1babdd --- /dev/null +++ b/vendor/gopkg.in/yaml.v3/README.md @@ -0,0 +1,150 @@ +# YAML support for the Go language + +Introduction +------------ + +The yaml package enables Go programs to comfortably encode and decode YAML +values. It was developed within [Canonical](https://www.canonical.com) as +part of the [juju](https://juju.ubuntu.com) project, and is based on a +pure Go port of the well-known [libyaml](http://pyyaml.org/wiki/LibYAML) +C library to parse and generate YAML data quickly and reliably. + +Compatibility +------------- + +The yaml package supports most of YAML 1.2, but preserves some behavior +from 1.1 for backwards compatibility. + +Specifically, as of v3 of the yaml package: + + - YAML 1.1 bools (_yes/no, on/off_) are supported as long as they are being + decoded into a typed bool value. Otherwise they behave as a string. Booleans + in YAML 1.2 are _true/false_ only. + - Octals encode and decode as _0777_ per YAML 1.1, rather than _0o777_ + as specified in YAML 1.2, because most parsers still use the old format. + Octals in the _0o777_ format are supported though, so new files work. + - Does not support base-60 floats. These are gone from YAML 1.2, and were + actually never supported by this package as it's clearly a poor choice. + +and offers backwards +compatibility with YAML 1.1 in some cases. +1.2, including support for +anchors, tags, map merging, etc. Multi-document unmarshalling is not yet +implemented, and base-60 floats from YAML 1.1 are purposefully not +supported since they're a poor design and are gone in YAML 1.2. + +Installation and usage +---------------------- + +The import path for the package is *gopkg.in/yaml.v3*. + +To install it, run: + + go get gopkg.in/yaml.v3 + +API documentation +----------------- + +If opened in a browser, the import path itself leads to the API documentation: + + - [https://gopkg.in/yaml.v3](https://gopkg.in/yaml.v3) + +API stability +------------- + +The package API for yaml v3 will remain stable as described in [gopkg.in](https://gopkg.in). + + +License +------- + +The yaml package is licensed under the MIT and Apache License 2.0 licenses. +Please see the LICENSE file for details. + + +Example +------- + +```Go +package main + +import ( + "fmt" + "log" + + "gopkg.in/yaml.v3" +) + +var data = ` +a: Easy! +b: + c: 2 + d: [3, 4] +` + +// Note: struct fields must be public in order for unmarshal to +// correctly populate the data. +type T struct { + A string + B struct { + RenamedC int `yaml:"c"` + D []int `yaml:",flow"` + } +} + +func main() { + t := T{} + + err := yaml.Unmarshal([]byte(data), &t) + if err != nil { + log.Fatalf("error: %v", err) + } + fmt.Printf("--- t:\n%v\n\n", t) + + d, err := yaml.Marshal(&t) + if err != nil { + log.Fatalf("error: %v", err) + } + fmt.Printf("--- t dump:\n%s\n\n", string(d)) + + m := make(map[interface{}]interface{}) + + err = yaml.Unmarshal([]byte(data), &m) + if err != nil { + log.Fatalf("error: %v", err) + } + fmt.Printf("--- m:\n%v\n\n", m) + + d, err = yaml.Marshal(&m) + if err != nil { + log.Fatalf("error: %v", err) + } + fmt.Printf("--- m dump:\n%s\n\n", string(d)) +} +``` + +This example will generate the following output: + +``` +--- t: +{Easy! {2 [3 4]}} + +--- t dump: +a: Easy! +b: + c: 2 + d: [3, 4] + + +--- m: +map[a:Easy! b:map[c:2 d:[3 4]]] + +--- m dump: +a: Easy! +b: + c: 2 + d: + - 3 + - 4 +``` + diff --git a/vendor/gopkg.in/yaml.v3/apic.go b/vendor/gopkg.in/yaml.v3/apic.go new file mode 100644 index 0000000000..ae7d049f18 --- /dev/null +++ b/vendor/gopkg.in/yaml.v3/apic.go @@ -0,0 +1,747 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// Copyright (c) 2006-2010 Kirill Simonov +// +// 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. + +package yaml + +import ( + "io" +) + +func yaml_insert_token(parser *yaml_parser_t, pos int, token *yaml_token_t) { + //fmt.Println("yaml_insert_token", "pos:", pos, "typ:", token.typ, "head:", parser.tokens_head, "len:", len(parser.tokens)) + + // Check if we can move the queue at the beginning of the buffer. + if parser.tokens_head > 0 && len(parser.tokens) == cap(parser.tokens) { + if parser.tokens_head != len(parser.tokens) { + copy(parser.tokens, parser.tokens[parser.tokens_head:]) + } + parser.tokens = parser.tokens[:len(parser.tokens)-parser.tokens_head] + parser.tokens_head = 0 + } + parser.tokens = append(parser.tokens, *token) + if pos < 0 { + return + } + copy(parser.tokens[parser.tokens_head+pos+1:], parser.tokens[parser.tokens_head+pos:]) + parser.tokens[parser.tokens_head+pos] = *token +} + +// Create a new parser object. +func yaml_parser_initialize(parser *yaml_parser_t) bool { + *parser = yaml_parser_t{ + raw_buffer: make([]byte, 0, input_raw_buffer_size), + buffer: make([]byte, 0, input_buffer_size), + } + return true +} + +// Destroy a parser object. +func yaml_parser_delete(parser *yaml_parser_t) { + *parser = yaml_parser_t{} +} + +// String read handler. +func yaml_string_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) { + if parser.input_pos == len(parser.input) { + return 0, io.EOF + } + n = copy(buffer, parser.input[parser.input_pos:]) + parser.input_pos += n + return n, nil +} + +// Reader read handler. +func yaml_reader_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) { + return parser.input_reader.Read(buffer) +} + +// Set a string input. +func yaml_parser_set_input_string(parser *yaml_parser_t, input []byte) { + if parser.read_handler != nil { + panic("must set the input source only once") + } + parser.read_handler = yaml_string_read_handler + parser.input = input + parser.input_pos = 0 +} + +// Set a file input. +func yaml_parser_set_input_reader(parser *yaml_parser_t, r io.Reader) { + if parser.read_handler != nil { + panic("must set the input source only once") + } + parser.read_handler = yaml_reader_read_handler + parser.input_reader = r +} + +// Set the source encoding. +func yaml_parser_set_encoding(parser *yaml_parser_t, encoding yaml_encoding_t) { + if parser.encoding != yaml_ANY_ENCODING { + panic("must set the encoding only once") + } + parser.encoding = encoding +} + +// Create a new emitter object. +func yaml_emitter_initialize(emitter *yaml_emitter_t) { + *emitter = yaml_emitter_t{ + buffer: make([]byte, output_buffer_size), + raw_buffer: make([]byte, 0, output_raw_buffer_size), + states: make([]yaml_emitter_state_t, 0, initial_stack_size), + events: make([]yaml_event_t, 0, initial_queue_size), + best_width: -1, + } +} + +// Destroy an emitter object. +func yaml_emitter_delete(emitter *yaml_emitter_t) { + *emitter = yaml_emitter_t{} +} + +// String write handler. +func yaml_string_write_handler(emitter *yaml_emitter_t, buffer []byte) error { + *emitter.output_buffer = append(*emitter.output_buffer, buffer...) + return nil +} + +// yaml_writer_write_handler uses emitter.output_writer to write the +// emitted text. +func yaml_writer_write_handler(emitter *yaml_emitter_t, buffer []byte) error { + _, err := emitter.output_writer.Write(buffer) + return err +} + +// Set a string output. +func yaml_emitter_set_output_string(emitter *yaml_emitter_t, output_buffer *[]byte) { + if emitter.write_handler != nil { + panic("must set the output target only once") + } + emitter.write_handler = yaml_string_write_handler + emitter.output_buffer = output_buffer +} + +// Set a file output. +func yaml_emitter_set_output_writer(emitter *yaml_emitter_t, w io.Writer) { + if emitter.write_handler != nil { + panic("must set the output target only once") + } + emitter.write_handler = yaml_writer_write_handler + emitter.output_writer = w +} + +// Set the output encoding. +func yaml_emitter_set_encoding(emitter *yaml_emitter_t, encoding yaml_encoding_t) { + if emitter.encoding != yaml_ANY_ENCODING { + panic("must set the output encoding only once") + } + emitter.encoding = encoding +} + +// Set the canonical output style. +func yaml_emitter_set_canonical(emitter *yaml_emitter_t, canonical bool) { + emitter.canonical = canonical +} + +// Set the indentation increment. +func yaml_emitter_set_indent(emitter *yaml_emitter_t, indent int) { + if indent < 2 || indent > 9 { + indent = 2 + } + emitter.best_indent = indent +} + +// Set the preferred line width. +func yaml_emitter_set_width(emitter *yaml_emitter_t, width int) { + if width < 0 { + width = -1 + } + emitter.best_width = width +} + +// Set if unescaped non-ASCII characters are allowed. +func yaml_emitter_set_unicode(emitter *yaml_emitter_t, unicode bool) { + emitter.unicode = unicode +} + +// Set the preferred line break character. +func yaml_emitter_set_break(emitter *yaml_emitter_t, line_break yaml_break_t) { + emitter.line_break = line_break +} + +///* +// * Destroy a token object. +// */ +// +//YAML_DECLARE(void) +//yaml_token_delete(yaml_token_t *token) +//{ +// assert(token); // Non-NULL token object expected. +// +// switch (token.type) +// { +// case YAML_TAG_DIRECTIVE_TOKEN: +// yaml_free(token.data.tag_directive.handle); +// yaml_free(token.data.tag_directive.prefix); +// break; +// +// case YAML_ALIAS_TOKEN: +// yaml_free(token.data.alias.value); +// break; +// +// case YAML_ANCHOR_TOKEN: +// yaml_free(token.data.anchor.value); +// break; +// +// case YAML_TAG_TOKEN: +// yaml_free(token.data.tag.handle); +// yaml_free(token.data.tag.suffix); +// break; +// +// case YAML_SCALAR_TOKEN: +// yaml_free(token.data.scalar.value); +// break; +// +// default: +// break; +// } +// +// memset(token, 0, sizeof(yaml_token_t)); +//} +// +///* +// * Check if a string is a valid UTF-8 sequence. +// * +// * Check 'reader.c' for more details on UTF-8 encoding. +// */ +// +//static int +//yaml_check_utf8(yaml_char_t *start, size_t length) +//{ +// yaml_char_t *end = start+length; +// yaml_char_t *pointer = start; +// +// while (pointer < end) { +// unsigned char octet; +// unsigned int width; +// unsigned int value; +// size_t k; +// +// octet = pointer[0]; +// width = (octet & 0x80) == 0x00 ? 1 : +// (octet & 0xE0) == 0xC0 ? 2 : +// (octet & 0xF0) == 0xE0 ? 3 : +// (octet & 0xF8) == 0xF0 ? 4 : 0; +// value = (octet & 0x80) == 0x00 ? octet & 0x7F : +// (octet & 0xE0) == 0xC0 ? octet & 0x1F : +// (octet & 0xF0) == 0xE0 ? octet & 0x0F : +// (octet & 0xF8) == 0xF0 ? octet & 0x07 : 0; +// if (!width) return 0; +// if (pointer+width > end) return 0; +// for (k = 1; k < width; k ++) { +// octet = pointer[k]; +// if ((octet & 0xC0) != 0x80) return 0; +// value = (value << 6) + (octet & 0x3F); +// } +// if (!((width == 1) || +// (width == 2 && value >= 0x80) || +// (width == 3 && value >= 0x800) || +// (width == 4 && value >= 0x10000))) return 0; +// +// pointer += width; +// } +// +// return 1; +//} +// + +// Create STREAM-START. +func yaml_stream_start_event_initialize(event *yaml_event_t, encoding yaml_encoding_t) { + *event = yaml_event_t{ + typ: yaml_STREAM_START_EVENT, + encoding: encoding, + } +} + +// Create STREAM-END. +func yaml_stream_end_event_initialize(event *yaml_event_t) { + *event = yaml_event_t{ + typ: yaml_STREAM_END_EVENT, + } +} + +// Create DOCUMENT-START. +func yaml_document_start_event_initialize( + event *yaml_event_t, + version_directive *yaml_version_directive_t, + tag_directives []yaml_tag_directive_t, + implicit bool, +) { + *event = yaml_event_t{ + typ: yaml_DOCUMENT_START_EVENT, + version_directive: version_directive, + tag_directives: tag_directives, + implicit: implicit, + } +} + +// Create DOCUMENT-END. +func yaml_document_end_event_initialize(event *yaml_event_t, implicit bool) { + *event = yaml_event_t{ + typ: yaml_DOCUMENT_END_EVENT, + implicit: implicit, + } +} + +// Create ALIAS. +func yaml_alias_event_initialize(event *yaml_event_t, anchor []byte) bool { + *event = yaml_event_t{ + typ: yaml_ALIAS_EVENT, + anchor: anchor, + } + return true +} + +// Create SCALAR. +func yaml_scalar_event_initialize(event *yaml_event_t, anchor, tag, value []byte, plain_implicit, quoted_implicit bool, style yaml_scalar_style_t) bool { + *event = yaml_event_t{ + typ: yaml_SCALAR_EVENT, + anchor: anchor, + tag: tag, + value: value, + implicit: plain_implicit, + quoted_implicit: quoted_implicit, + style: yaml_style_t(style), + } + return true +} + +// Create SEQUENCE-START. +func yaml_sequence_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_sequence_style_t) bool { + *event = yaml_event_t{ + typ: yaml_SEQUENCE_START_EVENT, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(style), + } + return true +} + +// Create SEQUENCE-END. +func yaml_sequence_end_event_initialize(event *yaml_event_t) bool { + *event = yaml_event_t{ + typ: yaml_SEQUENCE_END_EVENT, + } + return true +} + +// Create MAPPING-START. +func yaml_mapping_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_mapping_style_t) { + *event = yaml_event_t{ + typ: yaml_MAPPING_START_EVENT, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(style), + } +} + +// Create MAPPING-END. +func yaml_mapping_end_event_initialize(event *yaml_event_t) { + *event = yaml_event_t{ + typ: yaml_MAPPING_END_EVENT, + } +} + +// Destroy an event object. +func yaml_event_delete(event *yaml_event_t) { + *event = yaml_event_t{} +} + +///* +// * Create a document object. +// */ +// +//YAML_DECLARE(int) +//yaml_document_initialize(document *yaml_document_t, +// version_directive *yaml_version_directive_t, +// tag_directives_start *yaml_tag_directive_t, +// tag_directives_end *yaml_tag_directive_t, +// start_implicit int, end_implicit int) +//{ +// struct { +// error yaml_error_type_t +// } context +// struct { +// start *yaml_node_t +// end *yaml_node_t +// top *yaml_node_t +// } nodes = { NULL, NULL, NULL } +// version_directive_copy *yaml_version_directive_t = NULL +// struct { +// start *yaml_tag_directive_t +// end *yaml_tag_directive_t +// top *yaml_tag_directive_t +// } tag_directives_copy = { NULL, NULL, NULL } +// value yaml_tag_directive_t = { NULL, NULL } +// mark yaml_mark_t = { 0, 0, 0 } +// +// assert(document) // Non-NULL document object is expected. +// assert((tag_directives_start && tag_directives_end) || +// (tag_directives_start == tag_directives_end)) +// // Valid tag directives are expected. +// +// if (!STACK_INIT(&context, nodes, INITIAL_STACK_SIZE)) goto error +// +// if (version_directive) { +// version_directive_copy = yaml_malloc(sizeof(yaml_version_directive_t)) +// if (!version_directive_copy) goto error +// version_directive_copy.major = version_directive.major +// version_directive_copy.minor = version_directive.minor +// } +// +// if (tag_directives_start != tag_directives_end) { +// tag_directive *yaml_tag_directive_t +// if (!STACK_INIT(&context, tag_directives_copy, INITIAL_STACK_SIZE)) +// goto error +// for (tag_directive = tag_directives_start +// tag_directive != tag_directives_end; tag_directive ++) { +// assert(tag_directive.handle) +// assert(tag_directive.prefix) +// if (!yaml_check_utf8(tag_directive.handle, +// strlen((char *)tag_directive.handle))) +// goto error +// if (!yaml_check_utf8(tag_directive.prefix, +// strlen((char *)tag_directive.prefix))) +// goto error +// value.handle = yaml_strdup(tag_directive.handle) +// value.prefix = yaml_strdup(tag_directive.prefix) +// if (!value.handle || !value.prefix) goto error +// if (!PUSH(&context, tag_directives_copy, value)) +// goto error +// value.handle = NULL +// value.prefix = NULL +// } +// } +// +// DOCUMENT_INIT(*document, nodes.start, nodes.end, version_directive_copy, +// tag_directives_copy.start, tag_directives_copy.top, +// start_implicit, end_implicit, mark, mark) +// +// return 1 +// +//error: +// STACK_DEL(&context, nodes) +// yaml_free(version_directive_copy) +// while (!STACK_EMPTY(&context, tag_directives_copy)) { +// value yaml_tag_directive_t = POP(&context, tag_directives_copy) +// yaml_free(value.handle) +// yaml_free(value.prefix) +// } +// STACK_DEL(&context, tag_directives_copy) +// yaml_free(value.handle) +// yaml_free(value.prefix) +// +// return 0 +//} +// +///* +// * Destroy a document object. +// */ +// +//YAML_DECLARE(void) +//yaml_document_delete(document *yaml_document_t) +//{ +// struct { +// error yaml_error_type_t +// } context +// tag_directive *yaml_tag_directive_t +// +// context.error = YAML_NO_ERROR // Eliminate a compiler warning. +// +// assert(document) // Non-NULL document object is expected. +// +// while (!STACK_EMPTY(&context, document.nodes)) { +// node yaml_node_t = POP(&context, document.nodes) +// yaml_free(node.tag) +// switch (node.type) { +// case YAML_SCALAR_NODE: +// yaml_free(node.data.scalar.value) +// break +// case YAML_SEQUENCE_NODE: +// STACK_DEL(&context, node.data.sequence.items) +// break +// case YAML_MAPPING_NODE: +// STACK_DEL(&context, node.data.mapping.pairs) +// break +// default: +// assert(0) // Should not happen. +// } +// } +// STACK_DEL(&context, document.nodes) +// +// yaml_free(document.version_directive) +// for (tag_directive = document.tag_directives.start +// tag_directive != document.tag_directives.end +// tag_directive++) { +// yaml_free(tag_directive.handle) +// yaml_free(tag_directive.prefix) +// } +// yaml_free(document.tag_directives.start) +// +// memset(document, 0, sizeof(yaml_document_t)) +//} +// +///** +// * Get a document node. +// */ +// +//YAML_DECLARE(yaml_node_t *) +//yaml_document_get_node(document *yaml_document_t, index int) +//{ +// assert(document) // Non-NULL document object is expected. +// +// if (index > 0 && document.nodes.start + index <= document.nodes.top) { +// return document.nodes.start + index - 1 +// } +// return NULL +//} +// +///** +// * Get the root object. +// */ +// +//YAML_DECLARE(yaml_node_t *) +//yaml_document_get_root_node(document *yaml_document_t) +//{ +// assert(document) // Non-NULL document object is expected. +// +// if (document.nodes.top != document.nodes.start) { +// return document.nodes.start +// } +// return NULL +//} +// +///* +// * Add a scalar node to a document. +// */ +// +//YAML_DECLARE(int) +//yaml_document_add_scalar(document *yaml_document_t, +// tag *yaml_char_t, value *yaml_char_t, length int, +// style yaml_scalar_style_t) +//{ +// struct { +// error yaml_error_type_t +// } context +// mark yaml_mark_t = { 0, 0, 0 } +// tag_copy *yaml_char_t = NULL +// value_copy *yaml_char_t = NULL +// node yaml_node_t +// +// assert(document) // Non-NULL document object is expected. +// assert(value) // Non-NULL value is expected. +// +// if (!tag) { +// tag = (yaml_char_t *)YAML_DEFAULT_SCALAR_TAG +// } +// +// if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error +// tag_copy = yaml_strdup(tag) +// if (!tag_copy) goto error +// +// if (length < 0) { +// length = strlen((char *)value) +// } +// +// if (!yaml_check_utf8(value, length)) goto error +// value_copy = yaml_malloc(length+1) +// if (!value_copy) goto error +// memcpy(value_copy, value, length) +// value_copy[length] = '\0' +// +// SCALAR_NODE_INIT(node, tag_copy, value_copy, length, style, mark, mark) +// if (!PUSH(&context, document.nodes, node)) goto error +// +// return document.nodes.top - document.nodes.start +// +//error: +// yaml_free(tag_copy) +// yaml_free(value_copy) +// +// return 0 +//} +// +///* +// * Add a sequence node to a document. +// */ +// +//YAML_DECLARE(int) +//yaml_document_add_sequence(document *yaml_document_t, +// tag *yaml_char_t, style yaml_sequence_style_t) +//{ +// struct { +// error yaml_error_type_t +// } context +// mark yaml_mark_t = { 0, 0, 0 } +// tag_copy *yaml_char_t = NULL +// struct { +// start *yaml_node_item_t +// end *yaml_node_item_t +// top *yaml_node_item_t +// } items = { NULL, NULL, NULL } +// node yaml_node_t +// +// assert(document) // Non-NULL document object is expected. +// +// if (!tag) { +// tag = (yaml_char_t *)YAML_DEFAULT_SEQUENCE_TAG +// } +// +// if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error +// tag_copy = yaml_strdup(tag) +// if (!tag_copy) goto error +// +// if (!STACK_INIT(&context, items, INITIAL_STACK_SIZE)) goto error +// +// SEQUENCE_NODE_INIT(node, tag_copy, items.start, items.end, +// style, mark, mark) +// if (!PUSH(&context, document.nodes, node)) goto error +// +// return document.nodes.top - document.nodes.start +// +//error: +// STACK_DEL(&context, items) +// yaml_free(tag_copy) +// +// return 0 +//} +// +///* +// * Add a mapping node to a document. +// */ +// +//YAML_DECLARE(int) +//yaml_document_add_mapping(document *yaml_document_t, +// tag *yaml_char_t, style yaml_mapping_style_t) +//{ +// struct { +// error yaml_error_type_t +// } context +// mark yaml_mark_t = { 0, 0, 0 } +// tag_copy *yaml_char_t = NULL +// struct { +// start *yaml_node_pair_t +// end *yaml_node_pair_t +// top *yaml_node_pair_t +// } pairs = { NULL, NULL, NULL } +// node yaml_node_t +// +// assert(document) // Non-NULL document object is expected. +// +// if (!tag) { +// tag = (yaml_char_t *)YAML_DEFAULT_MAPPING_TAG +// } +// +// if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error +// tag_copy = yaml_strdup(tag) +// if (!tag_copy) goto error +// +// if (!STACK_INIT(&context, pairs, INITIAL_STACK_SIZE)) goto error +// +// MAPPING_NODE_INIT(node, tag_copy, pairs.start, pairs.end, +// style, mark, mark) +// if (!PUSH(&context, document.nodes, node)) goto error +// +// return document.nodes.top - document.nodes.start +// +//error: +// STACK_DEL(&context, pairs) +// yaml_free(tag_copy) +// +// return 0 +//} +// +///* +// * Append an item to a sequence node. +// */ +// +//YAML_DECLARE(int) +//yaml_document_append_sequence_item(document *yaml_document_t, +// sequence int, item int) +//{ +// struct { +// error yaml_error_type_t +// } context +// +// assert(document) // Non-NULL document is required. +// assert(sequence > 0 +// && document.nodes.start + sequence <= document.nodes.top) +// // Valid sequence id is required. +// assert(document.nodes.start[sequence-1].type == YAML_SEQUENCE_NODE) +// // A sequence node is required. +// assert(item > 0 && document.nodes.start + item <= document.nodes.top) +// // Valid item id is required. +// +// if (!PUSH(&context, +// document.nodes.start[sequence-1].data.sequence.items, item)) +// return 0 +// +// return 1 +//} +// +///* +// * Append a pair of a key and a value to a mapping node. +// */ +// +//YAML_DECLARE(int) +//yaml_document_append_mapping_pair(document *yaml_document_t, +// mapping int, key int, value int) +//{ +// struct { +// error yaml_error_type_t +// } context +// +// pair yaml_node_pair_t +// +// assert(document) // Non-NULL document is required. +// assert(mapping > 0 +// && document.nodes.start + mapping <= document.nodes.top) +// // Valid mapping id is required. +// assert(document.nodes.start[mapping-1].type == YAML_MAPPING_NODE) +// // A mapping node is required. +// assert(key > 0 && document.nodes.start + key <= document.nodes.top) +// // Valid key id is required. +// assert(value > 0 && document.nodes.start + value <= document.nodes.top) +// // Valid value id is required. +// +// pair.key = key +// pair.value = value +// +// if (!PUSH(&context, +// document.nodes.start[mapping-1].data.mapping.pairs, pair)) +// return 0 +// +// return 1 +//} +// +// diff --git a/vendor/gopkg.in/yaml.v3/decode.go b/vendor/gopkg.in/yaml.v3/decode.go new file mode 100644 index 0000000000..0173b6982e --- /dev/null +++ b/vendor/gopkg.in/yaml.v3/decode.go @@ -0,0 +1,1000 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// +// 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 yaml + +import ( + "encoding" + "encoding/base64" + "fmt" + "io" + "math" + "reflect" + "strconv" + "time" +) + +// ---------------------------------------------------------------------------- +// Parser, produces a node tree out of a libyaml event stream. + +type parser struct { + parser yaml_parser_t + event yaml_event_t + doc *Node + anchors map[string]*Node + doneInit bool + textless bool +} + +func newParser(b []byte) *parser { + p := parser{} + if !yaml_parser_initialize(&p.parser) { + panic("failed to initialize YAML emitter") + } + if len(b) == 0 { + b = []byte{'\n'} + } + yaml_parser_set_input_string(&p.parser, b) + return &p +} + +func newParserFromReader(r io.Reader) *parser { + p := parser{} + if !yaml_parser_initialize(&p.parser) { + panic("failed to initialize YAML emitter") + } + yaml_parser_set_input_reader(&p.parser, r) + return &p +} + +func (p *parser) init() { + if p.doneInit { + return + } + p.anchors = make(map[string]*Node) + p.expect(yaml_STREAM_START_EVENT) + p.doneInit = true +} + +func (p *parser) destroy() { + if p.event.typ != yaml_NO_EVENT { + yaml_event_delete(&p.event) + } + yaml_parser_delete(&p.parser) +} + +// expect consumes an event from the event stream and +// checks that it's of the expected type. +func (p *parser) expect(e yaml_event_type_t) { + if p.event.typ == yaml_NO_EVENT { + if !yaml_parser_parse(&p.parser, &p.event) { + p.fail() + } + } + if p.event.typ == yaml_STREAM_END_EVENT { + failf("attempted to go past the end of stream; corrupted value?") + } + if p.event.typ != e { + p.parser.problem = fmt.Sprintf("expected %s event but got %s", e, p.event.typ) + p.fail() + } + yaml_event_delete(&p.event) + p.event.typ = yaml_NO_EVENT +} + +// peek peeks at the next event in the event stream, +// puts the results into p.event and returns the event type. +func (p *parser) peek() yaml_event_type_t { + if p.event.typ != yaml_NO_EVENT { + return p.event.typ + } + // It's curious choice from the underlying API to generally return a + // positive result on success, but on this case return true in an error + // scenario. This was the source of bugs in the past (issue #666). + if !yaml_parser_parse(&p.parser, &p.event) || p.parser.error != yaml_NO_ERROR { + p.fail() + } + return p.event.typ +} + +func (p *parser) fail() { + var where string + var line int + if p.parser.context_mark.line != 0 { + line = p.parser.context_mark.line + // Scanner errors don't iterate line before returning error + if p.parser.error == yaml_SCANNER_ERROR { + line++ + } + } else if p.parser.problem_mark.line != 0 { + line = p.parser.problem_mark.line + // Scanner errors don't iterate line before returning error + if p.parser.error == yaml_SCANNER_ERROR { + line++ + } + } + if line != 0 { + where = "line " + strconv.Itoa(line) + ": " + } + var msg string + if len(p.parser.problem) > 0 { + msg = p.parser.problem + } else { + msg = "unknown problem parsing YAML content" + } + failf("%s%s", where, msg) +} + +func (p *parser) anchor(n *Node, anchor []byte) { + if anchor != nil { + n.Anchor = string(anchor) + p.anchors[n.Anchor] = n + } +} + +func (p *parser) parse() *Node { + p.init() + switch p.peek() { + case yaml_SCALAR_EVENT: + return p.scalar() + case yaml_ALIAS_EVENT: + return p.alias() + case yaml_MAPPING_START_EVENT: + return p.mapping() + case yaml_SEQUENCE_START_EVENT: + return p.sequence() + case yaml_DOCUMENT_START_EVENT: + return p.document() + case yaml_STREAM_END_EVENT: + // Happens when attempting to decode an empty buffer. + return nil + case yaml_TAIL_COMMENT_EVENT: + panic("internal error: unexpected tail comment event (please report)") + default: + panic("internal error: attempted to parse unknown event (please report): " + p.event.typ.String()) + } +} + +func (p *parser) node(kind Kind, defaultTag, tag, value string) *Node { + var style Style + if tag != "" && tag != "!" { + tag = shortTag(tag) + style = TaggedStyle + } else if defaultTag != "" { + tag = defaultTag + } else if kind == ScalarNode { + tag, _ = resolve("", value) + } + n := &Node{ + Kind: kind, + Tag: tag, + Value: value, + Style: style, + } + if !p.textless { + n.Line = p.event.start_mark.line + 1 + n.Column = p.event.start_mark.column + 1 + n.HeadComment = string(p.event.head_comment) + n.LineComment = string(p.event.line_comment) + n.FootComment = string(p.event.foot_comment) + } + return n +} + +func (p *parser) parseChild(parent *Node) *Node { + child := p.parse() + parent.Content = append(parent.Content, child) + return child +} + +func (p *parser) document() *Node { + n := p.node(DocumentNode, "", "", "") + p.doc = n + p.expect(yaml_DOCUMENT_START_EVENT) + p.parseChild(n) + if p.peek() == yaml_DOCUMENT_END_EVENT { + n.FootComment = string(p.event.foot_comment) + } + p.expect(yaml_DOCUMENT_END_EVENT) + return n +} + +func (p *parser) alias() *Node { + n := p.node(AliasNode, "", "", string(p.event.anchor)) + n.Alias = p.anchors[n.Value] + if n.Alias == nil { + failf("unknown anchor '%s' referenced", n.Value) + } + p.expect(yaml_ALIAS_EVENT) + return n +} + +func (p *parser) scalar() *Node { + var parsedStyle = p.event.scalar_style() + var nodeStyle Style + switch { + case parsedStyle&yaml_DOUBLE_QUOTED_SCALAR_STYLE != 0: + nodeStyle = DoubleQuotedStyle + case parsedStyle&yaml_SINGLE_QUOTED_SCALAR_STYLE != 0: + nodeStyle = SingleQuotedStyle + case parsedStyle&yaml_LITERAL_SCALAR_STYLE != 0: + nodeStyle = LiteralStyle + case parsedStyle&yaml_FOLDED_SCALAR_STYLE != 0: + nodeStyle = FoldedStyle + } + var nodeValue = string(p.event.value) + var nodeTag = string(p.event.tag) + var defaultTag string + if nodeStyle == 0 { + if nodeValue == "<<" { + defaultTag = mergeTag + } + } else { + defaultTag = strTag + } + n := p.node(ScalarNode, defaultTag, nodeTag, nodeValue) + n.Style |= nodeStyle + p.anchor(n, p.event.anchor) + p.expect(yaml_SCALAR_EVENT) + return n +} + +func (p *parser) sequence() *Node { + n := p.node(SequenceNode, seqTag, string(p.event.tag), "") + if p.event.sequence_style()&yaml_FLOW_SEQUENCE_STYLE != 0 { + n.Style |= FlowStyle + } + p.anchor(n, p.event.anchor) + p.expect(yaml_SEQUENCE_START_EVENT) + for p.peek() != yaml_SEQUENCE_END_EVENT { + p.parseChild(n) + } + n.LineComment = string(p.event.line_comment) + n.FootComment = string(p.event.foot_comment) + p.expect(yaml_SEQUENCE_END_EVENT) + return n +} + +func (p *parser) mapping() *Node { + n := p.node(MappingNode, mapTag, string(p.event.tag), "") + block := true + if p.event.mapping_style()&yaml_FLOW_MAPPING_STYLE != 0 { + block = false + n.Style |= FlowStyle + } + p.anchor(n, p.event.anchor) + p.expect(yaml_MAPPING_START_EVENT) + for p.peek() != yaml_MAPPING_END_EVENT { + k := p.parseChild(n) + if block && k.FootComment != "" { + // Must be a foot comment for the prior value when being dedented. + if len(n.Content) > 2 { + n.Content[len(n.Content)-3].FootComment = k.FootComment + k.FootComment = "" + } + } + v := p.parseChild(n) + if k.FootComment == "" && v.FootComment != "" { + k.FootComment = v.FootComment + v.FootComment = "" + } + if p.peek() == yaml_TAIL_COMMENT_EVENT { + if k.FootComment == "" { + k.FootComment = string(p.event.foot_comment) + } + p.expect(yaml_TAIL_COMMENT_EVENT) + } + } + n.LineComment = string(p.event.line_comment) + n.FootComment = string(p.event.foot_comment) + if n.Style&FlowStyle == 0 && n.FootComment != "" && len(n.Content) > 1 { + n.Content[len(n.Content)-2].FootComment = n.FootComment + n.FootComment = "" + } + p.expect(yaml_MAPPING_END_EVENT) + return n +} + +// ---------------------------------------------------------------------------- +// Decoder, unmarshals a node into a provided value. + +type decoder struct { + doc *Node + aliases map[*Node]bool + terrors []string + + stringMapType reflect.Type + generalMapType reflect.Type + + knownFields bool + uniqueKeys bool + decodeCount int + aliasCount int + aliasDepth int + + mergedFields map[interface{}]bool +} + +var ( + nodeType = reflect.TypeOf(Node{}) + durationType = reflect.TypeOf(time.Duration(0)) + stringMapType = reflect.TypeOf(map[string]interface{}{}) + generalMapType = reflect.TypeOf(map[interface{}]interface{}{}) + ifaceType = generalMapType.Elem() + timeType = reflect.TypeOf(time.Time{}) + ptrTimeType = reflect.TypeOf(&time.Time{}) +) + +func newDecoder() *decoder { + d := &decoder{ + stringMapType: stringMapType, + generalMapType: generalMapType, + uniqueKeys: true, + } + d.aliases = make(map[*Node]bool) + return d +} + +func (d *decoder) terror(n *Node, tag string, out reflect.Value) { + if n.Tag != "" { + tag = n.Tag + } + value := n.Value + if tag != seqTag && tag != mapTag { + if len(value) > 10 { + value = " `" + value[:7] + "...`" + } else { + value = " `" + value + "`" + } + } + d.terrors = append(d.terrors, fmt.Sprintf("line %d: cannot unmarshal %s%s into %s", n.Line, shortTag(tag), value, out.Type())) +} + +func (d *decoder) callUnmarshaler(n *Node, u Unmarshaler) (good bool) { + err := u.UnmarshalYAML(n) + if e, ok := err.(*TypeError); ok { + d.terrors = append(d.terrors, e.Errors...) + return false + } + if err != nil { + fail(err) + } + return true +} + +func (d *decoder) callObsoleteUnmarshaler(n *Node, u obsoleteUnmarshaler) (good bool) { + terrlen := len(d.terrors) + err := u.UnmarshalYAML(func(v interface{}) (err error) { + defer handleErr(&err) + d.unmarshal(n, reflect.ValueOf(v)) + if len(d.terrors) > terrlen { + issues := d.terrors[terrlen:] + d.terrors = d.terrors[:terrlen] + return &TypeError{issues} + } + return nil + }) + if e, ok := err.(*TypeError); ok { + d.terrors = append(d.terrors, e.Errors...) + return false + } + if err != nil { + fail(err) + } + return true +} + +// d.prepare initializes and dereferences pointers and calls UnmarshalYAML +// if a value is found to implement it. +// It returns the initialized and dereferenced out value, whether +// unmarshalling was already done by UnmarshalYAML, and if so whether +// its types unmarshalled appropriately. +// +// If n holds a null value, prepare returns before doing anything. +func (d *decoder) prepare(n *Node, out reflect.Value) (newout reflect.Value, unmarshaled, good bool) { + if n.ShortTag() == nullTag { + return out, false, false + } + again := true + for again { + again = false + if out.Kind() == reflect.Ptr { + if out.IsNil() { + out.Set(reflect.New(out.Type().Elem())) + } + out = out.Elem() + again = true + } + if out.CanAddr() { + outi := out.Addr().Interface() + if u, ok := outi.(Unmarshaler); ok { + good = d.callUnmarshaler(n, u) + return out, true, good + } + if u, ok := outi.(obsoleteUnmarshaler); ok { + good = d.callObsoleteUnmarshaler(n, u) + return out, true, good + } + } + } + return out, false, false +} + +func (d *decoder) fieldByIndex(n *Node, v reflect.Value, index []int) (field reflect.Value) { + if n.ShortTag() == nullTag { + return reflect.Value{} + } + for _, num := range index { + for { + if v.Kind() == reflect.Ptr { + if v.IsNil() { + v.Set(reflect.New(v.Type().Elem())) + } + v = v.Elem() + continue + } + break + } + v = v.Field(num) + } + return v +} + +const ( + // 400,000 decode operations is ~500kb of dense object declarations, or + // ~5kb of dense object declarations with 10000% alias expansion + alias_ratio_range_low = 400000 + + // 4,000,000 decode operations is ~5MB of dense object declarations, or + // ~4.5MB of dense object declarations with 10% alias expansion + alias_ratio_range_high = 4000000 + + // alias_ratio_range is the range over which we scale allowed alias ratios + alias_ratio_range = float64(alias_ratio_range_high - alias_ratio_range_low) +) + +func allowedAliasRatio(decodeCount int) float64 { + switch { + case decodeCount <= alias_ratio_range_low: + // allow 99% to come from alias expansion for small-to-medium documents + return 0.99 + case decodeCount >= alias_ratio_range_high: + // allow 10% to come from alias expansion for very large documents + return 0.10 + default: + // scale smoothly from 99% down to 10% over the range. + // this maps to 396,000 - 400,000 allowed alias-driven decodes over the range. + // 400,000 decode operations is ~100MB of allocations in worst-case scenarios (single-item maps). + return 0.99 - 0.89*(float64(decodeCount-alias_ratio_range_low)/alias_ratio_range) + } +} + +func (d *decoder) unmarshal(n *Node, out reflect.Value) (good bool) { + d.decodeCount++ + if d.aliasDepth > 0 { + d.aliasCount++ + } + if d.aliasCount > 100 && d.decodeCount > 1000 && float64(d.aliasCount)/float64(d.decodeCount) > allowedAliasRatio(d.decodeCount) { + failf("document contains excessive aliasing") + } + if out.Type() == nodeType { + out.Set(reflect.ValueOf(n).Elem()) + return true + } + switch n.Kind { + case DocumentNode: + return d.document(n, out) + case AliasNode: + return d.alias(n, out) + } + out, unmarshaled, good := d.prepare(n, out) + if unmarshaled { + return good + } + switch n.Kind { + case ScalarNode: + good = d.scalar(n, out) + case MappingNode: + good = d.mapping(n, out) + case SequenceNode: + good = d.sequence(n, out) + case 0: + if n.IsZero() { + return d.null(out) + } + fallthrough + default: + failf("cannot decode node with unknown kind %d", n.Kind) + } + return good +} + +func (d *decoder) document(n *Node, out reflect.Value) (good bool) { + if len(n.Content) == 1 { + d.doc = n + d.unmarshal(n.Content[0], out) + return true + } + return false +} + +func (d *decoder) alias(n *Node, out reflect.Value) (good bool) { + if d.aliases[n] { + // TODO this could actually be allowed in some circumstances. + failf("anchor '%s' value contains itself", n.Value) + } + d.aliases[n] = true + d.aliasDepth++ + good = d.unmarshal(n.Alias, out) + d.aliasDepth-- + delete(d.aliases, n) + return good +} + +var zeroValue reflect.Value + +func resetMap(out reflect.Value) { + for _, k := range out.MapKeys() { + out.SetMapIndex(k, zeroValue) + } +} + +func (d *decoder) null(out reflect.Value) bool { + if out.CanAddr() { + switch out.Kind() { + case reflect.Interface, reflect.Ptr, reflect.Map, reflect.Slice: + out.Set(reflect.Zero(out.Type())) + return true + } + } + return false +} + +func (d *decoder) scalar(n *Node, out reflect.Value) bool { + var tag string + var resolved interface{} + if n.indicatedString() { + tag = strTag + resolved = n.Value + } else { + tag, resolved = resolve(n.Tag, n.Value) + if tag == binaryTag { + data, err := base64.StdEncoding.DecodeString(resolved.(string)) + if err != nil { + failf("!!binary value contains invalid base64 data") + } + resolved = string(data) + } + } + if resolved == nil { + return d.null(out) + } + if resolvedv := reflect.ValueOf(resolved); out.Type() == resolvedv.Type() { + // We've resolved to exactly the type we want, so use that. + out.Set(resolvedv) + return true + } + // Perhaps we can use the value as a TextUnmarshaler to + // set its value. + if out.CanAddr() { + u, ok := out.Addr().Interface().(encoding.TextUnmarshaler) + if ok { + var text []byte + if tag == binaryTag { + text = []byte(resolved.(string)) + } else { + // We let any value be unmarshaled into TextUnmarshaler. + // That might be more lax than we'd like, but the + // TextUnmarshaler itself should bowl out any dubious values. + text = []byte(n.Value) + } + err := u.UnmarshalText(text) + if err != nil { + fail(err) + } + return true + } + } + switch out.Kind() { + case reflect.String: + if tag == binaryTag { + out.SetString(resolved.(string)) + return true + } + out.SetString(n.Value) + return true + case reflect.Interface: + out.Set(reflect.ValueOf(resolved)) + return true + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + // This used to work in v2, but it's very unfriendly. + isDuration := out.Type() == durationType + + switch resolved := resolved.(type) { + case int: + if !isDuration && !out.OverflowInt(int64(resolved)) { + out.SetInt(int64(resolved)) + return true + } + case int64: + if !isDuration && !out.OverflowInt(resolved) { + out.SetInt(resolved) + return true + } + case uint64: + if !isDuration && resolved <= math.MaxInt64 && !out.OverflowInt(int64(resolved)) { + out.SetInt(int64(resolved)) + return true + } + case float64: + if !isDuration && resolved <= math.MaxInt64 && !out.OverflowInt(int64(resolved)) { + out.SetInt(int64(resolved)) + return true + } + case string: + if out.Type() == durationType { + d, err := time.ParseDuration(resolved) + if err == nil { + out.SetInt(int64(d)) + return true + } + } + } + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + switch resolved := resolved.(type) { + case int: + if resolved >= 0 && !out.OverflowUint(uint64(resolved)) { + out.SetUint(uint64(resolved)) + return true + } + case int64: + if resolved >= 0 && !out.OverflowUint(uint64(resolved)) { + out.SetUint(uint64(resolved)) + return true + } + case uint64: + if !out.OverflowUint(uint64(resolved)) { + out.SetUint(uint64(resolved)) + return true + } + case float64: + if resolved <= math.MaxUint64 && !out.OverflowUint(uint64(resolved)) { + out.SetUint(uint64(resolved)) + return true + } + } + case reflect.Bool: + switch resolved := resolved.(type) { + case bool: + out.SetBool(resolved) + return true + case string: + // This offers some compatibility with the 1.1 spec (https://yaml.org/type/bool.html). + // It only works if explicitly attempting to unmarshal into a typed bool value. + switch resolved { + case "y", "Y", "yes", "Yes", "YES", "on", "On", "ON": + out.SetBool(true) + return true + case "n", "N", "no", "No", "NO", "off", "Off", "OFF": + out.SetBool(false) + return true + } + } + case reflect.Float32, reflect.Float64: + switch resolved := resolved.(type) { + case int: + out.SetFloat(float64(resolved)) + return true + case int64: + out.SetFloat(float64(resolved)) + return true + case uint64: + out.SetFloat(float64(resolved)) + return true + case float64: + out.SetFloat(resolved) + return true + } + case reflect.Struct: + if resolvedv := reflect.ValueOf(resolved); out.Type() == resolvedv.Type() { + out.Set(resolvedv) + return true + } + case reflect.Ptr: + panic("yaml internal error: please report the issue") + } + d.terror(n, tag, out) + return false +} + +func settableValueOf(i interface{}) reflect.Value { + v := reflect.ValueOf(i) + sv := reflect.New(v.Type()).Elem() + sv.Set(v) + return sv +} + +func (d *decoder) sequence(n *Node, out reflect.Value) (good bool) { + l := len(n.Content) + + var iface reflect.Value + switch out.Kind() { + case reflect.Slice: + out.Set(reflect.MakeSlice(out.Type(), l, l)) + case reflect.Array: + if l != out.Len() { + failf("invalid array: want %d elements but got %d", out.Len(), l) + } + case reflect.Interface: + // No type hints. Will have to use a generic sequence. + iface = out + out = settableValueOf(make([]interface{}, l)) + default: + d.terror(n, seqTag, out) + return false + } + et := out.Type().Elem() + + j := 0 + for i := 0; i < l; i++ { + e := reflect.New(et).Elem() + if ok := d.unmarshal(n.Content[i], e); ok { + out.Index(j).Set(e) + j++ + } + } + if out.Kind() != reflect.Array { + out.Set(out.Slice(0, j)) + } + if iface.IsValid() { + iface.Set(out) + } + return true +} + +func (d *decoder) mapping(n *Node, out reflect.Value) (good bool) { + l := len(n.Content) + if d.uniqueKeys { + nerrs := len(d.terrors) + for i := 0; i < l; i += 2 { + ni := n.Content[i] + for j := i + 2; j < l; j += 2 { + nj := n.Content[j] + if ni.Kind == nj.Kind && ni.Value == nj.Value { + d.terrors = append(d.terrors, fmt.Sprintf("line %d: mapping key %#v already defined at line %d", nj.Line, nj.Value, ni.Line)) + } + } + } + if len(d.terrors) > nerrs { + return false + } + } + switch out.Kind() { + case reflect.Struct: + return d.mappingStruct(n, out) + case reflect.Map: + // okay + case reflect.Interface: + iface := out + if isStringMap(n) { + out = reflect.MakeMap(d.stringMapType) + } else { + out = reflect.MakeMap(d.generalMapType) + } + iface.Set(out) + default: + d.terror(n, mapTag, out) + return false + } + + outt := out.Type() + kt := outt.Key() + et := outt.Elem() + + stringMapType := d.stringMapType + generalMapType := d.generalMapType + if outt.Elem() == ifaceType { + if outt.Key().Kind() == reflect.String { + d.stringMapType = outt + } else if outt.Key() == ifaceType { + d.generalMapType = outt + } + } + + mergedFields := d.mergedFields + d.mergedFields = nil + + var mergeNode *Node + + mapIsNew := false + if out.IsNil() { + out.Set(reflect.MakeMap(outt)) + mapIsNew = true + } + for i := 0; i < l; i += 2 { + if isMerge(n.Content[i]) { + mergeNode = n.Content[i+1] + continue + } + k := reflect.New(kt).Elem() + if d.unmarshal(n.Content[i], k) { + if mergedFields != nil { + ki := k.Interface() + if mergedFields[ki] { + continue + } + mergedFields[ki] = true + } + kkind := k.Kind() + if kkind == reflect.Interface { + kkind = k.Elem().Kind() + } + if kkind == reflect.Map || kkind == reflect.Slice { + failf("invalid map key: %#v", k.Interface()) + } + e := reflect.New(et).Elem() + if d.unmarshal(n.Content[i+1], e) || n.Content[i+1].ShortTag() == nullTag && (mapIsNew || !out.MapIndex(k).IsValid()) { + out.SetMapIndex(k, e) + } + } + } + + d.mergedFields = mergedFields + if mergeNode != nil { + d.merge(n, mergeNode, out) + } + + d.stringMapType = stringMapType + d.generalMapType = generalMapType + return true +} + +func isStringMap(n *Node) bool { + if n.Kind != MappingNode { + return false + } + l := len(n.Content) + for i := 0; i < l; i += 2 { + shortTag := n.Content[i].ShortTag() + if shortTag != strTag && shortTag != mergeTag { + return false + } + } + return true +} + +func (d *decoder) mappingStruct(n *Node, out reflect.Value) (good bool) { + sinfo, err := getStructInfo(out.Type()) + if err != nil { + panic(err) + } + + var inlineMap reflect.Value + var elemType reflect.Type + if sinfo.InlineMap != -1 { + inlineMap = out.Field(sinfo.InlineMap) + elemType = inlineMap.Type().Elem() + } + + for _, index := range sinfo.InlineUnmarshalers { + field := d.fieldByIndex(n, out, index) + d.prepare(n, field) + } + + mergedFields := d.mergedFields + d.mergedFields = nil + var mergeNode *Node + var doneFields []bool + if d.uniqueKeys { + doneFields = make([]bool, len(sinfo.FieldsList)) + } + name := settableValueOf("") + l := len(n.Content) + for i := 0; i < l; i += 2 { + ni := n.Content[i] + if isMerge(ni) { + mergeNode = n.Content[i+1] + continue + } + if !d.unmarshal(ni, name) { + continue + } + sname := name.String() + if mergedFields != nil { + if mergedFields[sname] { + continue + } + mergedFields[sname] = true + } + if info, ok := sinfo.FieldsMap[sname]; ok { + if d.uniqueKeys { + if doneFields[info.Id] { + d.terrors = append(d.terrors, fmt.Sprintf("line %d: field %s already set in type %s", ni.Line, name.String(), out.Type())) + continue + } + doneFields[info.Id] = true + } + var field reflect.Value + if info.Inline == nil { + field = out.Field(info.Num) + } else { + field = d.fieldByIndex(n, out, info.Inline) + } + d.unmarshal(n.Content[i+1], field) + } else if sinfo.InlineMap != -1 { + if inlineMap.IsNil() { + inlineMap.Set(reflect.MakeMap(inlineMap.Type())) + } + value := reflect.New(elemType).Elem() + d.unmarshal(n.Content[i+1], value) + inlineMap.SetMapIndex(name, value) + } else if d.knownFields { + d.terrors = append(d.terrors, fmt.Sprintf("line %d: field %s not found in type %s", ni.Line, name.String(), out.Type())) + } + } + + d.mergedFields = mergedFields + if mergeNode != nil { + d.merge(n, mergeNode, out) + } + return true +} + +func failWantMap() { + failf("map merge requires map or sequence of maps as the value") +} + +func (d *decoder) merge(parent *Node, merge *Node, out reflect.Value) { + mergedFields := d.mergedFields + if mergedFields == nil { + d.mergedFields = make(map[interface{}]bool) + for i := 0; i < len(parent.Content); i += 2 { + k := reflect.New(ifaceType).Elem() + if d.unmarshal(parent.Content[i], k) { + d.mergedFields[k.Interface()] = true + } + } + } + + switch merge.Kind { + case MappingNode: + d.unmarshal(merge, out) + case AliasNode: + if merge.Alias != nil && merge.Alias.Kind != MappingNode { + failWantMap() + } + d.unmarshal(merge, out) + case SequenceNode: + for i := 0; i < len(merge.Content); i++ { + ni := merge.Content[i] + if ni.Kind == AliasNode { + if ni.Alias != nil && ni.Alias.Kind != MappingNode { + failWantMap() + } + } else if ni.Kind != MappingNode { + failWantMap() + } + d.unmarshal(ni, out) + } + default: + failWantMap() + } + + d.mergedFields = mergedFields +} + +func isMerge(n *Node) bool { + return n.Kind == ScalarNode && n.Value == "<<" && (n.Tag == "" || n.Tag == "!" || shortTag(n.Tag) == mergeTag) +} diff --git a/vendor/gopkg.in/yaml.v3/emitterc.go b/vendor/gopkg.in/yaml.v3/emitterc.go new file mode 100644 index 0000000000..0f47c9ca8a --- /dev/null +++ b/vendor/gopkg.in/yaml.v3/emitterc.go @@ -0,0 +1,2020 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// Copyright (c) 2006-2010 Kirill Simonov +// +// 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. + +package yaml + +import ( + "bytes" + "fmt" +) + +// Flush the buffer if needed. +func flush(emitter *yaml_emitter_t) bool { + if emitter.buffer_pos+5 >= len(emitter.buffer) { + return yaml_emitter_flush(emitter) + } + return true +} + +// Put a character to the output buffer. +func put(emitter *yaml_emitter_t, value byte) bool { + if emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) { + return false + } + emitter.buffer[emitter.buffer_pos] = value + emitter.buffer_pos++ + emitter.column++ + return true +} + +// Put a line break to the output buffer. +func put_break(emitter *yaml_emitter_t) bool { + if emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) { + return false + } + switch emitter.line_break { + case yaml_CR_BREAK: + emitter.buffer[emitter.buffer_pos] = '\r' + emitter.buffer_pos += 1 + case yaml_LN_BREAK: + emitter.buffer[emitter.buffer_pos] = '\n' + emitter.buffer_pos += 1 + case yaml_CRLN_BREAK: + emitter.buffer[emitter.buffer_pos+0] = '\r' + emitter.buffer[emitter.buffer_pos+1] = '\n' + emitter.buffer_pos += 2 + default: + panic("unknown line break setting") + } + if emitter.column == 0 { + emitter.space_above = true + } + emitter.column = 0 + emitter.line++ + // [Go] Do this here and below and drop from everywhere else (see commented lines). + emitter.indention = true + return true +} + +// Copy a character from a string into buffer. +func write(emitter *yaml_emitter_t, s []byte, i *int) bool { + if emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) { + return false + } + p := emitter.buffer_pos + w := width(s[*i]) + switch w { + case 4: + emitter.buffer[p+3] = s[*i+3] + fallthrough + case 3: + emitter.buffer[p+2] = s[*i+2] + fallthrough + case 2: + emitter.buffer[p+1] = s[*i+1] + fallthrough + case 1: + emitter.buffer[p+0] = s[*i+0] + default: + panic("unknown character width") + } + emitter.column++ + emitter.buffer_pos += w + *i += w + return true +} + +// Write a whole string into buffer. +func write_all(emitter *yaml_emitter_t, s []byte) bool { + for i := 0; i < len(s); { + if !write(emitter, s, &i) { + return false + } + } + return true +} + +// Copy a line break character from a string into buffer. +func write_break(emitter *yaml_emitter_t, s []byte, i *int) bool { + if s[*i] == '\n' { + if !put_break(emitter) { + return false + } + *i++ + } else { + if !write(emitter, s, i) { + return false + } + if emitter.column == 0 { + emitter.space_above = true + } + emitter.column = 0 + emitter.line++ + // [Go] Do this here and above and drop from everywhere else (see commented lines). + emitter.indention = true + } + return true +} + +// Set an emitter error and return false. +func yaml_emitter_set_emitter_error(emitter *yaml_emitter_t, problem string) bool { + emitter.error = yaml_EMITTER_ERROR + emitter.problem = problem + return false +} + +// Emit an event. +func yaml_emitter_emit(emitter *yaml_emitter_t, event *yaml_event_t) bool { + emitter.events = append(emitter.events, *event) + for !yaml_emitter_need_more_events(emitter) { + event := &emitter.events[emitter.events_head] + if !yaml_emitter_analyze_event(emitter, event) { + return false + } + if !yaml_emitter_state_machine(emitter, event) { + return false + } + yaml_event_delete(event) + emitter.events_head++ + } + return true +} + +// Check if we need to accumulate more events before emitting. +// +// We accumulate extra +// - 1 event for DOCUMENT-START +// - 2 events for SEQUENCE-START +// - 3 events for MAPPING-START +// +func yaml_emitter_need_more_events(emitter *yaml_emitter_t) bool { + if emitter.events_head == len(emitter.events) { + return true + } + var accumulate int + switch emitter.events[emitter.events_head].typ { + case yaml_DOCUMENT_START_EVENT: + accumulate = 1 + break + case yaml_SEQUENCE_START_EVENT: + accumulate = 2 + break + case yaml_MAPPING_START_EVENT: + accumulate = 3 + break + default: + return false + } + if len(emitter.events)-emitter.events_head > accumulate { + return false + } + var level int + for i := emitter.events_head; i < len(emitter.events); i++ { + switch emitter.events[i].typ { + case yaml_STREAM_START_EVENT, yaml_DOCUMENT_START_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT: + level++ + case yaml_STREAM_END_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_END_EVENT, yaml_MAPPING_END_EVENT: + level-- + } + if level == 0 { + return false + } + } + return true +} + +// Append a directive to the directives stack. +func yaml_emitter_append_tag_directive(emitter *yaml_emitter_t, value *yaml_tag_directive_t, allow_duplicates bool) bool { + for i := 0; i < len(emitter.tag_directives); i++ { + if bytes.Equal(value.handle, emitter.tag_directives[i].handle) { + if allow_duplicates { + return true + } + return yaml_emitter_set_emitter_error(emitter, "duplicate %TAG directive") + } + } + + // [Go] Do we actually need to copy this given garbage collection + // and the lack of deallocating destructors? + tag_copy := yaml_tag_directive_t{ + handle: make([]byte, len(value.handle)), + prefix: make([]byte, len(value.prefix)), + } + copy(tag_copy.handle, value.handle) + copy(tag_copy.prefix, value.prefix) + emitter.tag_directives = append(emitter.tag_directives, tag_copy) + return true +} + +// Increase the indentation level. +func yaml_emitter_increase_indent(emitter *yaml_emitter_t, flow, indentless bool) bool { + emitter.indents = append(emitter.indents, emitter.indent) + if emitter.indent < 0 { + if flow { + emitter.indent = emitter.best_indent + } else { + emitter.indent = 0 + } + } else if !indentless { + // [Go] This was changed so that indentations are more regular. + if emitter.states[len(emitter.states)-1] == yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE { + // The first indent inside a sequence will just skip the "- " indicator. + emitter.indent += 2 + } else { + // Everything else aligns to the chosen indentation. + emitter.indent = emitter.best_indent*((emitter.indent+emitter.best_indent)/emitter.best_indent) + } + } + return true +} + +// State dispatcher. +func yaml_emitter_state_machine(emitter *yaml_emitter_t, event *yaml_event_t) bool { + switch emitter.state { + default: + case yaml_EMIT_STREAM_START_STATE: + return yaml_emitter_emit_stream_start(emitter, event) + + case yaml_EMIT_FIRST_DOCUMENT_START_STATE: + return yaml_emitter_emit_document_start(emitter, event, true) + + case yaml_EMIT_DOCUMENT_START_STATE: + return yaml_emitter_emit_document_start(emitter, event, false) + + case yaml_EMIT_DOCUMENT_CONTENT_STATE: + return yaml_emitter_emit_document_content(emitter, event) + + case yaml_EMIT_DOCUMENT_END_STATE: + return yaml_emitter_emit_document_end(emitter, event) + + case yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE: + return yaml_emitter_emit_flow_sequence_item(emitter, event, true, false) + + case yaml_EMIT_FLOW_SEQUENCE_TRAIL_ITEM_STATE: + return yaml_emitter_emit_flow_sequence_item(emitter, event, false, true) + + case yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE: + return yaml_emitter_emit_flow_sequence_item(emitter, event, false, false) + + case yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE: + return yaml_emitter_emit_flow_mapping_key(emitter, event, true, false) + + case yaml_EMIT_FLOW_MAPPING_TRAIL_KEY_STATE: + return yaml_emitter_emit_flow_mapping_key(emitter, event, false, true) + + case yaml_EMIT_FLOW_MAPPING_KEY_STATE: + return yaml_emitter_emit_flow_mapping_key(emitter, event, false, false) + + case yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE: + return yaml_emitter_emit_flow_mapping_value(emitter, event, true) + + case yaml_EMIT_FLOW_MAPPING_VALUE_STATE: + return yaml_emitter_emit_flow_mapping_value(emitter, event, false) + + case yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE: + return yaml_emitter_emit_block_sequence_item(emitter, event, true) + + case yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE: + return yaml_emitter_emit_block_sequence_item(emitter, event, false) + + case yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE: + return yaml_emitter_emit_block_mapping_key(emitter, event, true) + + case yaml_EMIT_BLOCK_MAPPING_KEY_STATE: + return yaml_emitter_emit_block_mapping_key(emitter, event, false) + + case yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE: + return yaml_emitter_emit_block_mapping_value(emitter, event, true) + + case yaml_EMIT_BLOCK_MAPPING_VALUE_STATE: + return yaml_emitter_emit_block_mapping_value(emitter, event, false) + + case yaml_EMIT_END_STATE: + return yaml_emitter_set_emitter_error(emitter, "expected nothing after STREAM-END") + } + panic("invalid emitter state") +} + +// Expect STREAM-START. +func yaml_emitter_emit_stream_start(emitter *yaml_emitter_t, event *yaml_event_t) bool { + if event.typ != yaml_STREAM_START_EVENT { + return yaml_emitter_set_emitter_error(emitter, "expected STREAM-START") + } + if emitter.encoding == yaml_ANY_ENCODING { + emitter.encoding = event.encoding + if emitter.encoding == yaml_ANY_ENCODING { + emitter.encoding = yaml_UTF8_ENCODING + } + } + if emitter.best_indent < 2 || emitter.best_indent > 9 { + emitter.best_indent = 2 + } + if emitter.best_width >= 0 && emitter.best_width <= emitter.best_indent*2 { + emitter.best_width = 80 + } + if emitter.best_width < 0 { + emitter.best_width = 1<<31 - 1 + } + if emitter.line_break == yaml_ANY_BREAK { + emitter.line_break = yaml_LN_BREAK + } + + emitter.indent = -1 + emitter.line = 0 + emitter.column = 0 + emitter.whitespace = true + emitter.indention = true + emitter.space_above = true + emitter.foot_indent = -1 + + if emitter.encoding != yaml_UTF8_ENCODING { + if !yaml_emitter_write_bom(emitter) { + return false + } + } + emitter.state = yaml_EMIT_FIRST_DOCUMENT_START_STATE + return true +} + +// Expect DOCUMENT-START or STREAM-END. +func yaml_emitter_emit_document_start(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { + + if event.typ == yaml_DOCUMENT_START_EVENT { + + if event.version_directive != nil { + if !yaml_emitter_analyze_version_directive(emitter, event.version_directive) { + return false + } + } + + for i := 0; i < len(event.tag_directives); i++ { + tag_directive := &event.tag_directives[i] + if !yaml_emitter_analyze_tag_directive(emitter, tag_directive) { + return false + } + if !yaml_emitter_append_tag_directive(emitter, tag_directive, false) { + return false + } + } + + for i := 0; i < len(default_tag_directives); i++ { + tag_directive := &default_tag_directives[i] + if !yaml_emitter_append_tag_directive(emitter, tag_directive, true) { + return false + } + } + + implicit := event.implicit + if !first || emitter.canonical { + implicit = false + } + + if emitter.open_ended && (event.version_directive != nil || len(event.tag_directives) > 0) { + if !yaml_emitter_write_indicator(emitter, []byte("..."), true, false, false) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + } + + if event.version_directive != nil { + implicit = false + if !yaml_emitter_write_indicator(emitter, []byte("%YAML"), true, false, false) { + return false + } + if !yaml_emitter_write_indicator(emitter, []byte("1.1"), true, false, false) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + } + + if len(event.tag_directives) > 0 { + implicit = false + for i := 0; i < len(event.tag_directives); i++ { + tag_directive := &event.tag_directives[i] + if !yaml_emitter_write_indicator(emitter, []byte("%TAG"), true, false, false) { + return false + } + if !yaml_emitter_write_tag_handle(emitter, tag_directive.handle) { + return false + } + if !yaml_emitter_write_tag_content(emitter, tag_directive.prefix, true) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + } + } + + if yaml_emitter_check_empty_document(emitter) { + implicit = false + } + if !implicit { + if !yaml_emitter_write_indent(emitter) { + return false + } + if !yaml_emitter_write_indicator(emitter, []byte("---"), true, false, false) { + return false + } + if emitter.canonical || true { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + } + + if len(emitter.head_comment) > 0 { + if !yaml_emitter_process_head_comment(emitter) { + return false + } + if !put_break(emitter) { + return false + } + } + + emitter.state = yaml_EMIT_DOCUMENT_CONTENT_STATE + return true + } + + if event.typ == yaml_STREAM_END_EVENT { + if emitter.open_ended { + if !yaml_emitter_write_indicator(emitter, []byte("..."), true, false, false) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !yaml_emitter_flush(emitter) { + return false + } + emitter.state = yaml_EMIT_END_STATE + return true + } + + return yaml_emitter_set_emitter_error(emitter, "expected DOCUMENT-START or STREAM-END") +} + +// Expect the root node. +func yaml_emitter_emit_document_content(emitter *yaml_emitter_t, event *yaml_event_t) bool { + emitter.states = append(emitter.states, yaml_EMIT_DOCUMENT_END_STATE) + + if !yaml_emitter_process_head_comment(emitter) { + return false + } + if !yaml_emitter_emit_node(emitter, event, true, false, false, false) { + return false + } + if !yaml_emitter_process_line_comment(emitter) { + return false + } + if !yaml_emitter_process_foot_comment(emitter) { + return false + } + return true +} + +// Expect DOCUMENT-END. +func yaml_emitter_emit_document_end(emitter *yaml_emitter_t, event *yaml_event_t) bool { + if event.typ != yaml_DOCUMENT_END_EVENT { + return yaml_emitter_set_emitter_error(emitter, "expected DOCUMENT-END") + } + // [Go] Force document foot separation. + emitter.foot_indent = 0 + if !yaml_emitter_process_foot_comment(emitter) { + return false + } + emitter.foot_indent = -1 + if !yaml_emitter_write_indent(emitter) { + return false + } + if !event.implicit { + // [Go] Allocate the slice elsewhere. + if !yaml_emitter_write_indicator(emitter, []byte("..."), true, false, false) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !yaml_emitter_flush(emitter) { + return false + } + emitter.state = yaml_EMIT_DOCUMENT_START_STATE + emitter.tag_directives = emitter.tag_directives[:0] + return true +} + +// Expect a flow item node. +func yaml_emitter_emit_flow_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first, trail bool) bool { + if first { + if !yaml_emitter_write_indicator(emitter, []byte{'['}, true, true, false) { + return false + } + if !yaml_emitter_increase_indent(emitter, true, false) { + return false + } + emitter.flow_level++ + } + + if event.typ == yaml_SEQUENCE_END_EVENT { + if emitter.canonical && !first && !trail { + if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { + return false + } + } + emitter.flow_level-- + emitter.indent = emitter.indents[len(emitter.indents)-1] + emitter.indents = emitter.indents[:len(emitter.indents)-1] + if emitter.column == 0 || emitter.canonical && !first { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !yaml_emitter_write_indicator(emitter, []byte{']'}, false, false, false) { + return false + } + if !yaml_emitter_process_line_comment(emitter) { + return false + } + if !yaml_emitter_process_foot_comment(emitter) { + return false + } + emitter.state = emitter.states[len(emitter.states)-1] + emitter.states = emitter.states[:len(emitter.states)-1] + + return true + } + + if !first && !trail { + if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { + return false + } + } + + if !yaml_emitter_process_head_comment(emitter) { + return false + } + if emitter.column == 0 { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + + if emitter.canonical || emitter.column > emitter.best_width { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if len(emitter.line_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0 { + emitter.states = append(emitter.states, yaml_EMIT_FLOW_SEQUENCE_TRAIL_ITEM_STATE) + } else { + emitter.states = append(emitter.states, yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE) + } + if !yaml_emitter_emit_node(emitter, event, false, true, false, false) { + return false + } + if len(emitter.line_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0 { + if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { + return false + } + } + if !yaml_emitter_process_line_comment(emitter) { + return false + } + if !yaml_emitter_process_foot_comment(emitter) { + return false + } + return true +} + +// Expect a flow key node. +func yaml_emitter_emit_flow_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first, trail bool) bool { + if first { + if !yaml_emitter_write_indicator(emitter, []byte{'{'}, true, true, false) { + return false + } + if !yaml_emitter_increase_indent(emitter, true, false) { + return false + } + emitter.flow_level++ + } + + if event.typ == yaml_MAPPING_END_EVENT { + if (emitter.canonical || len(emitter.head_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0) && !first && !trail { + if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { + return false + } + } + if !yaml_emitter_process_head_comment(emitter) { + return false + } + emitter.flow_level-- + emitter.indent = emitter.indents[len(emitter.indents)-1] + emitter.indents = emitter.indents[:len(emitter.indents)-1] + if emitter.canonical && !first { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !yaml_emitter_write_indicator(emitter, []byte{'}'}, false, false, false) { + return false + } + if !yaml_emitter_process_line_comment(emitter) { + return false + } + if !yaml_emitter_process_foot_comment(emitter) { + return false + } + emitter.state = emitter.states[len(emitter.states)-1] + emitter.states = emitter.states[:len(emitter.states)-1] + return true + } + + if !first && !trail { + if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { + return false + } + } + + if !yaml_emitter_process_head_comment(emitter) { + return false + } + + if emitter.column == 0 { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + + if emitter.canonical || emitter.column > emitter.best_width { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + + if !emitter.canonical && yaml_emitter_check_simple_key(emitter) { + emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE) + return yaml_emitter_emit_node(emitter, event, false, false, true, true) + } + if !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, false) { + return false + } + emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_VALUE_STATE) + return yaml_emitter_emit_node(emitter, event, false, false, true, false) +} + +// Expect a flow value node. +func yaml_emitter_emit_flow_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool { + if simple { + if !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) { + return false + } + } else { + if emitter.canonical || emitter.column > emitter.best_width { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, false) { + return false + } + } + if len(emitter.line_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0 { + emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_TRAIL_KEY_STATE) + } else { + emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_KEY_STATE) + } + if !yaml_emitter_emit_node(emitter, event, false, false, true, false) { + return false + } + if len(emitter.line_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0 { + if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { + return false + } + } + if !yaml_emitter_process_line_comment(emitter) { + return false + } + if !yaml_emitter_process_foot_comment(emitter) { + return false + } + return true +} + +// Expect a block item node. +func yaml_emitter_emit_block_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { + if first { + if !yaml_emitter_increase_indent(emitter, false, false) { + return false + } + } + if event.typ == yaml_SEQUENCE_END_EVENT { + emitter.indent = emitter.indents[len(emitter.indents)-1] + emitter.indents = emitter.indents[:len(emitter.indents)-1] + emitter.state = emitter.states[len(emitter.states)-1] + emitter.states = emitter.states[:len(emitter.states)-1] + return true + } + if !yaml_emitter_process_head_comment(emitter) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + if !yaml_emitter_write_indicator(emitter, []byte{'-'}, true, false, true) { + return false + } + emitter.states = append(emitter.states, yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE) + if !yaml_emitter_emit_node(emitter, event, false, true, false, false) { + return false + } + if !yaml_emitter_process_line_comment(emitter) { + return false + } + if !yaml_emitter_process_foot_comment(emitter) { + return false + } + return true +} + +// Expect a block key node. +func yaml_emitter_emit_block_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { + if first { + if !yaml_emitter_increase_indent(emitter, false, false) { + return false + } + } + if !yaml_emitter_process_head_comment(emitter) { + return false + } + if event.typ == yaml_MAPPING_END_EVENT { + emitter.indent = emitter.indents[len(emitter.indents)-1] + emitter.indents = emitter.indents[:len(emitter.indents)-1] + emitter.state = emitter.states[len(emitter.states)-1] + emitter.states = emitter.states[:len(emitter.states)-1] + return true + } + if !yaml_emitter_write_indent(emitter) { + return false + } + if len(emitter.line_comment) > 0 { + // [Go] A line comment was provided for the key. That's unusual as the + // scanner associates line comments with the value. Either way, + // save the line comment and render it appropriately later. + emitter.key_line_comment = emitter.line_comment + emitter.line_comment = nil + } + if yaml_emitter_check_simple_key(emitter) { + emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE) + return yaml_emitter_emit_node(emitter, event, false, false, true, true) + } + if !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, true) { + return false + } + emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_VALUE_STATE) + return yaml_emitter_emit_node(emitter, event, false, false, true, false) +} + +// Expect a block value node. +func yaml_emitter_emit_block_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool { + if simple { + if !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) { + return false + } + } else { + if !yaml_emitter_write_indent(emitter) { + return false + } + if !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, true) { + return false + } + } + if len(emitter.key_line_comment) > 0 { + // [Go] Line comments are generally associated with the value, but when there's + // no value on the same line as a mapping key they end up attached to the + // key itself. + if event.typ == yaml_SCALAR_EVENT { + if len(emitter.line_comment) == 0 { + // A scalar is coming and it has no line comments by itself yet, + // so just let it handle the line comment as usual. If it has a + // line comment, we can't have both so the one from the key is lost. + emitter.line_comment = emitter.key_line_comment + emitter.key_line_comment = nil + } + } else if event.sequence_style() != yaml_FLOW_SEQUENCE_STYLE && (event.typ == yaml_MAPPING_START_EVENT || event.typ == yaml_SEQUENCE_START_EVENT) { + // An indented block follows, so write the comment right now. + emitter.line_comment, emitter.key_line_comment = emitter.key_line_comment, emitter.line_comment + if !yaml_emitter_process_line_comment(emitter) { + return false + } + emitter.line_comment, emitter.key_line_comment = emitter.key_line_comment, emitter.line_comment + } + } + emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_KEY_STATE) + if !yaml_emitter_emit_node(emitter, event, false, false, true, false) { + return false + } + if !yaml_emitter_process_line_comment(emitter) { + return false + } + if !yaml_emitter_process_foot_comment(emitter) { + return false + } + return true +} + +func yaml_emitter_silent_nil_event(emitter *yaml_emitter_t, event *yaml_event_t) bool { + return event.typ == yaml_SCALAR_EVENT && event.implicit && !emitter.canonical && len(emitter.scalar_data.value) == 0 +} + +// Expect a node. +func yaml_emitter_emit_node(emitter *yaml_emitter_t, event *yaml_event_t, + root bool, sequence bool, mapping bool, simple_key bool) bool { + + emitter.root_context = root + emitter.sequence_context = sequence + emitter.mapping_context = mapping + emitter.simple_key_context = simple_key + + switch event.typ { + case yaml_ALIAS_EVENT: + return yaml_emitter_emit_alias(emitter, event) + case yaml_SCALAR_EVENT: + return yaml_emitter_emit_scalar(emitter, event) + case yaml_SEQUENCE_START_EVENT: + return yaml_emitter_emit_sequence_start(emitter, event) + case yaml_MAPPING_START_EVENT: + return yaml_emitter_emit_mapping_start(emitter, event) + default: + return yaml_emitter_set_emitter_error(emitter, + fmt.Sprintf("expected SCALAR, SEQUENCE-START, MAPPING-START, or ALIAS, but got %v", event.typ)) + } +} + +// Expect ALIAS. +func yaml_emitter_emit_alias(emitter *yaml_emitter_t, event *yaml_event_t) bool { + if !yaml_emitter_process_anchor(emitter) { + return false + } + emitter.state = emitter.states[len(emitter.states)-1] + emitter.states = emitter.states[:len(emitter.states)-1] + return true +} + +// Expect SCALAR. +func yaml_emitter_emit_scalar(emitter *yaml_emitter_t, event *yaml_event_t) bool { + if !yaml_emitter_select_scalar_style(emitter, event) { + return false + } + if !yaml_emitter_process_anchor(emitter) { + return false + } + if !yaml_emitter_process_tag(emitter) { + return false + } + if !yaml_emitter_increase_indent(emitter, true, false) { + return false + } + if !yaml_emitter_process_scalar(emitter) { + return false + } + emitter.indent = emitter.indents[len(emitter.indents)-1] + emitter.indents = emitter.indents[:len(emitter.indents)-1] + emitter.state = emitter.states[len(emitter.states)-1] + emitter.states = emitter.states[:len(emitter.states)-1] + return true +} + +// Expect SEQUENCE-START. +func yaml_emitter_emit_sequence_start(emitter *yaml_emitter_t, event *yaml_event_t) bool { + if !yaml_emitter_process_anchor(emitter) { + return false + } + if !yaml_emitter_process_tag(emitter) { + return false + } + if emitter.flow_level > 0 || emitter.canonical || event.sequence_style() == yaml_FLOW_SEQUENCE_STYLE || + yaml_emitter_check_empty_sequence(emitter) { + emitter.state = yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE + } else { + emitter.state = yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE + } + return true +} + +// Expect MAPPING-START. +func yaml_emitter_emit_mapping_start(emitter *yaml_emitter_t, event *yaml_event_t) bool { + if !yaml_emitter_process_anchor(emitter) { + return false + } + if !yaml_emitter_process_tag(emitter) { + return false + } + if emitter.flow_level > 0 || emitter.canonical || event.mapping_style() == yaml_FLOW_MAPPING_STYLE || + yaml_emitter_check_empty_mapping(emitter) { + emitter.state = yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE + } else { + emitter.state = yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE + } + return true +} + +// Check if the document content is an empty scalar. +func yaml_emitter_check_empty_document(emitter *yaml_emitter_t) bool { + return false // [Go] Huh? +} + +// Check if the next events represent an empty sequence. +func yaml_emitter_check_empty_sequence(emitter *yaml_emitter_t) bool { + if len(emitter.events)-emitter.events_head < 2 { + return false + } + return emitter.events[emitter.events_head].typ == yaml_SEQUENCE_START_EVENT && + emitter.events[emitter.events_head+1].typ == yaml_SEQUENCE_END_EVENT +} + +// Check if the next events represent an empty mapping. +func yaml_emitter_check_empty_mapping(emitter *yaml_emitter_t) bool { + if len(emitter.events)-emitter.events_head < 2 { + return false + } + return emitter.events[emitter.events_head].typ == yaml_MAPPING_START_EVENT && + emitter.events[emitter.events_head+1].typ == yaml_MAPPING_END_EVENT +} + +// Check if the next node can be expressed as a simple key. +func yaml_emitter_check_simple_key(emitter *yaml_emitter_t) bool { + length := 0 + switch emitter.events[emitter.events_head].typ { + case yaml_ALIAS_EVENT: + length += len(emitter.anchor_data.anchor) + case yaml_SCALAR_EVENT: + if emitter.scalar_data.multiline { + return false + } + length += len(emitter.anchor_data.anchor) + + len(emitter.tag_data.handle) + + len(emitter.tag_data.suffix) + + len(emitter.scalar_data.value) + case yaml_SEQUENCE_START_EVENT: + if !yaml_emitter_check_empty_sequence(emitter) { + return false + } + length += len(emitter.anchor_data.anchor) + + len(emitter.tag_data.handle) + + len(emitter.tag_data.suffix) + case yaml_MAPPING_START_EVENT: + if !yaml_emitter_check_empty_mapping(emitter) { + return false + } + length += len(emitter.anchor_data.anchor) + + len(emitter.tag_data.handle) + + len(emitter.tag_data.suffix) + default: + return false + } + return length <= 128 +} + +// Determine an acceptable scalar style. +func yaml_emitter_select_scalar_style(emitter *yaml_emitter_t, event *yaml_event_t) bool { + + no_tag := len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0 + if no_tag && !event.implicit && !event.quoted_implicit { + return yaml_emitter_set_emitter_error(emitter, "neither tag nor implicit flags are specified") + } + + style := event.scalar_style() + if style == yaml_ANY_SCALAR_STYLE { + style = yaml_PLAIN_SCALAR_STYLE + } + if emitter.canonical { + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + if emitter.simple_key_context && emitter.scalar_data.multiline { + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + + if style == yaml_PLAIN_SCALAR_STYLE { + if emitter.flow_level > 0 && !emitter.scalar_data.flow_plain_allowed || + emitter.flow_level == 0 && !emitter.scalar_data.block_plain_allowed { + style = yaml_SINGLE_QUOTED_SCALAR_STYLE + } + if len(emitter.scalar_data.value) == 0 && (emitter.flow_level > 0 || emitter.simple_key_context) { + style = yaml_SINGLE_QUOTED_SCALAR_STYLE + } + if no_tag && !event.implicit { + style = yaml_SINGLE_QUOTED_SCALAR_STYLE + } + } + if style == yaml_SINGLE_QUOTED_SCALAR_STYLE { + if !emitter.scalar_data.single_quoted_allowed { + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + } + if style == yaml_LITERAL_SCALAR_STYLE || style == yaml_FOLDED_SCALAR_STYLE { + if !emitter.scalar_data.block_allowed || emitter.flow_level > 0 || emitter.simple_key_context { + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + } + + if no_tag && !event.quoted_implicit && style != yaml_PLAIN_SCALAR_STYLE { + emitter.tag_data.handle = []byte{'!'} + } + emitter.scalar_data.style = style + return true +} + +// Write an anchor. +func yaml_emitter_process_anchor(emitter *yaml_emitter_t) bool { + if emitter.anchor_data.anchor == nil { + return true + } + c := []byte{'&'} + if emitter.anchor_data.alias { + c[0] = '*' + } + if !yaml_emitter_write_indicator(emitter, c, true, false, false) { + return false + } + return yaml_emitter_write_anchor(emitter, emitter.anchor_data.anchor) +} + +// Write a tag. +func yaml_emitter_process_tag(emitter *yaml_emitter_t) bool { + if len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0 { + return true + } + if len(emitter.tag_data.handle) > 0 { + if !yaml_emitter_write_tag_handle(emitter, emitter.tag_data.handle) { + return false + } + if len(emitter.tag_data.suffix) > 0 { + if !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) { + return false + } + } + } else { + // [Go] Allocate these slices elsewhere. + if !yaml_emitter_write_indicator(emitter, []byte("!<"), true, false, false) { + return false + } + if !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) { + return false + } + if !yaml_emitter_write_indicator(emitter, []byte{'>'}, false, false, false) { + return false + } + } + return true +} + +// Write a scalar. +func yaml_emitter_process_scalar(emitter *yaml_emitter_t) bool { + switch emitter.scalar_data.style { + case yaml_PLAIN_SCALAR_STYLE: + return yaml_emitter_write_plain_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context) + + case yaml_SINGLE_QUOTED_SCALAR_STYLE: + return yaml_emitter_write_single_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context) + + case yaml_DOUBLE_QUOTED_SCALAR_STYLE: + return yaml_emitter_write_double_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context) + + case yaml_LITERAL_SCALAR_STYLE: + return yaml_emitter_write_literal_scalar(emitter, emitter.scalar_data.value) + + case yaml_FOLDED_SCALAR_STYLE: + return yaml_emitter_write_folded_scalar(emitter, emitter.scalar_data.value) + } + panic("unknown scalar style") +} + +// Write a head comment. +func yaml_emitter_process_head_comment(emitter *yaml_emitter_t) bool { + if len(emitter.tail_comment) > 0 { + if !yaml_emitter_write_indent(emitter) { + return false + } + if !yaml_emitter_write_comment(emitter, emitter.tail_comment) { + return false + } + emitter.tail_comment = emitter.tail_comment[:0] + emitter.foot_indent = emitter.indent + if emitter.foot_indent < 0 { + emitter.foot_indent = 0 + } + } + + if len(emitter.head_comment) == 0 { + return true + } + if !yaml_emitter_write_indent(emitter) { + return false + } + if !yaml_emitter_write_comment(emitter, emitter.head_comment) { + return false + } + emitter.head_comment = emitter.head_comment[:0] + return true +} + +// Write an line comment. +func yaml_emitter_process_line_comment(emitter *yaml_emitter_t) bool { + if len(emitter.line_comment) == 0 { + return true + } + if !emitter.whitespace { + if !put(emitter, ' ') { + return false + } + } + if !yaml_emitter_write_comment(emitter, emitter.line_comment) { + return false + } + emitter.line_comment = emitter.line_comment[:0] + return true +} + +// Write a foot comment. +func yaml_emitter_process_foot_comment(emitter *yaml_emitter_t) bool { + if len(emitter.foot_comment) == 0 { + return true + } + if !yaml_emitter_write_indent(emitter) { + return false + } + if !yaml_emitter_write_comment(emitter, emitter.foot_comment) { + return false + } + emitter.foot_comment = emitter.foot_comment[:0] + emitter.foot_indent = emitter.indent + if emitter.foot_indent < 0 { + emitter.foot_indent = 0 + } + return true +} + +// Check if a %YAML directive is valid. +func yaml_emitter_analyze_version_directive(emitter *yaml_emitter_t, version_directive *yaml_version_directive_t) bool { + if version_directive.major != 1 || version_directive.minor != 1 { + return yaml_emitter_set_emitter_error(emitter, "incompatible %YAML directive") + } + return true +} + +// Check if a %TAG directive is valid. +func yaml_emitter_analyze_tag_directive(emitter *yaml_emitter_t, tag_directive *yaml_tag_directive_t) bool { + handle := tag_directive.handle + prefix := tag_directive.prefix + if len(handle) == 0 { + return yaml_emitter_set_emitter_error(emitter, "tag handle must not be empty") + } + if handle[0] != '!' { + return yaml_emitter_set_emitter_error(emitter, "tag handle must start with '!'") + } + if handle[len(handle)-1] != '!' { + return yaml_emitter_set_emitter_error(emitter, "tag handle must end with '!'") + } + for i := 1; i < len(handle)-1; i += width(handle[i]) { + if !is_alpha(handle, i) { + return yaml_emitter_set_emitter_error(emitter, "tag handle must contain alphanumerical characters only") + } + } + if len(prefix) == 0 { + return yaml_emitter_set_emitter_error(emitter, "tag prefix must not be empty") + } + return true +} + +// Check if an anchor is valid. +func yaml_emitter_analyze_anchor(emitter *yaml_emitter_t, anchor []byte, alias bool) bool { + if len(anchor) == 0 { + problem := "anchor value must not be empty" + if alias { + problem = "alias value must not be empty" + } + return yaml_emitter_set_emitter_error(emitter, problem) + } + for i := 0; i < len(anchor); i += width(anchor[i]) { + if !is_alpha(anchor, i) { + problem := "anchor value must contain alphanumerical characters only" + if alias { + problem = "alias value must contain alphanumerical characters only" + } + return yaml_emitter_set_emitter_error(emitter, problem) + } + } + emitter.anchor_data.anchor = anchor + emitter.anchor_data.alias = alias + return true +} + +// Check if a tag is valid. +func yaml_emitter_analyze_tag(emitter *yaml_emitter_t, tag []byte) bool { + if len(tag) == 0 { + return yaml_emitter_set_emitter_error(emitter, "tag value must not be empty") + } + for i := 0; i < len(emitter.tag_directives); i++ { + tag_directive := &emitter.tag_directives[i] + if bytes.HasPrefix(tag, tag_directive.prefix) { + emitter.tag_data.handle = tag_directive.handle + emitter.tag_data.suffix = tag[len(tag_directive.prefix):] + return true + } + } + emitter.tag_data.suffix = tag + return true +} + +// Check if a scalar is valid. +func yaml_emitter_analyze_scalar(emitter *yaml_emitter_t, value []byte) bool { + var ( + block_indicators = false + flow_indicators = false + line_breaks = false + special_characters = false + tab_characters = false + + leading_space = false + leading_break = false + trailing_space = false + trailing_break = false + break_space = false + space_break = false + + preceded_by_whitespace = false + followed_by_whitespace = false + previous_space = false + previous_break = false + ) + + emitter.scalar_data.value = value + + if len(value) == 0 { + emitter.scalar_data.multiline = false + emitter.scalar_data.flow_plain_allowed = false + emitter.scalar_data.block_plain_allowed = true + emitter.scalar_data.single_quoted_allowed = true + emitter.scalar_data.block_allowed = false + return true + } + + if len(value) >= 3 && ((value[0] == '-' && value[1] == '-' && value[2] == '-') || (value[0] == '.' && value[1] == '.' && value[2] == '.')) { + block_indicators = true + flow_indicators = true + } + + preceded_by_whitespace = true + for i, w := 0, 0; i < len(value); i += w { + w = width(value[i]) + followed_by_whitespace = i+w >= len(value) || is_blank(value, i+w) + + if i == 0 { + switch value[i] { + case '#', ',', '[', ']', '{', '}', '&', '*', '!', '|', '>', '\'', '"', '%', '@', '`': + flow_indicators = true + block_indicators = true + case '?', ':': + flow_indicators = true + if followed_by_whitespace { + block_indicators = true + } + case '-': + if followed_by_whitespace { + flow_indicators = true + block_indicators = true + } + } + } else { + switch value[i] { + case ',', '?', '[', ']', '{', '}': + flow_indicators = true + case ':': + flow_indicators = true + if followed_by_whitespace { + block_indicators = true + } + case '#': + if preceded_by_whitespace { + flow_indicators = true + block_indicators = true + } + } + } + + if value[i] == '\t' { + tab_characters = true + } else if !is_printable(value, i) || !is_ascii(value, i) && !emitter.unicode { + special_characters = true + } + if is_space(value, i) { + if i == 0 { + leading_space = true + } + if i+width(value[i]) == len(value) { + trailing_space = true + } + if previous_break { + break_space = true + } + previous_space = true + previous_break = false + } else if is_break(value, i) { + line_breaks = true + if i == 0 { + leading_break = true + } + if i+width(value[i]) == len(value) { + trailing_break = true + } + if previous_space { + space_break = true + } + previous_space = false + previous_break = true + } else { + previous_space = false + previous_break = false + } + + // [Go]: Why 'z'? Couldn't be the end of the string as that's the loop condition. + preceded_by_whitespace = is_blankz(value, i) + } + + emitter.scalar_data.multiline = line_breaks + emitter.scalar_data.flow_plain_allowed = true + emitter.scalar_data.block_plain_allowed = true + emitter.scalar_data.single_quoted_allowed = true + emitter.scalar_data.block_allowed = true + + if leading_space || leading_break || trailing_space || trailing_break { + emitter.scalar_data.flow_plain_allowed = false + emitter.scalar_data.block_plain_allowed = false + } + if trailing_space { + emitter.scalar_data.block_allowed = false + } + if break_space { + emitter.scalar_data.flow_plain_allowed = false + emitter.scalar_data.block_plain_allowed = false + emitter.scalar_data.single_quoted_allowed = false + } + if space_break || tab_characters || special_characters { + emitter.scalar_data.flow_plain_allowed = false + emitter.scalar_data.block_plain_allowed = false + emitter.scalar_data.single_quoted_allowed = false + } + if space_break || special_characters { + emitter.scalar_data.block_allowed = false + } + if line_breaks { + emitter.scalar_data.flow_plain_allowed = false + emitter.scalar_data.block_plain_allowed = false + } + if flow_indicators { + emitter.scalar_data.flow_plain_allowed = false + } + if block_indicators { + emitter.scalar_data.block_plain_allowed = false + } + return true +} + +// Check if the event data is valid. +func yaml_emitter_analyze_event(emitter *yaml_emitter_t, event *yaml_event_t) bool { + + emitter.anchor_data.anchor = nil + emitter.tag_data.handle = nil + emitter.tag_data.suffix = nil + emitter.scalar_data.value = nil + + if len(event.head_comment) > 0 { + emitter.head_comment = event.head_comment + } + if len(event.line_comment) > 0 { + emitter.line_comment = event.line_comment + } + if len(event.foot_comment) > 0 { + emitter.foot_comment = event.foot_comment + } + if len(event.tail_comment) > 0 { + emitter.tail_comment = event.tail_comment + } + + switch event.typ { + case yaml_ALIAS_EVENT: + if !yaml_emitter_analyze_anchor(emitter, event.anchor, true) { + return false + } + + case yaml_SCALAR_EVENT: + if len(event.anchor) > 0 { + if !yaml_emitter_analyze_anchor(emitter, event.anchor, false) { + return false + } + } + if len(event.tag) > 0 && (emitter.canonical || (!event.implicit && !event.quoted_implicit)) { + if !yaml_emitter_analyze_tag(emitter, event.tag) { + return false + } + } + if !yaml_emitter_analyze_scalar(emitter, event.value) { + return false + } + + case yaml_SEQUENCE_START_EVENT: + if len(event.anchor) > 0 { + if !yaml_emitter_analyze_anchor(emitter, event.anchor, false) { + return false + } + } + if len(event.tag) > 0 && (emitter.canonical || !event.implicit) { + if !yaml_emitter_analyze_tag(emitter, event.tag) { + return false + } + } + + case yaml_MAPPING_START_EVENT: + if len(event.anchor) > 0 { + if !yaml_emitter_analyze_anchor(emitter, event.anchor, false) { + return false + } + } + if len(event.tag) > 0 && (emitter.canonical || !event.implicit) { + if !yaml_emitter_analyze_tag(emitter, event.tag) { + return false + } + } + } + return true +} + +// Write the BOM character. +func yaml_emitter_write_bom(emitter *yaml_emitter_t) bool { + if !flush(emitter) { + return false + } + pos := emitter.buffer_pos + emitter.buffer[pos+0] = '\xEF' + emitter.buffer[pos+1] = '\xBB' + emitter.buffer[pos+2] = '\xBF' + emitter.buffer_pos += 3 + return true +} + +func yaml_emitter_write_indent(emitter *yaml_emitter_t) bool { + indent := emitter.indent + if indent < 0 { + indent = 0 + } + if !emitter.indention || emitter.column > indent || (emitter.column == indent && !emitter.whitespace) { + if !put_break(emitter) { + return false + } + } + if emitter.foot_indent == indent { + if !put_break(emitter) { + return false + } + } + for emitter.column < indent { + if !put(emitter, ' ') { + return false + } + } + emitter.whitespace = true + //emitter.indention = true + emitter.space_above = false + emitter.foot_indent = -1 + return true +} + +func yaml_emitter_write_indicator(emitter *yaml_emitter_t, indicator []byte, need_whitespace, is_whitespace, is_indention bool) bool { + if need_whitespace && !emitter.whitespace { + if !put(emitter, ' ') { + return false + } + } + if !write_all(emitter, indicator) { + return false + } + emitter.whitespace = is_whitespace + emitter.indention = (emitter.indention && is_indention) + emitter.open_ended = false + return true +} + +func yaml_emitter_write_anchor(emitter *yaml_emitter_t, value []byte) bool { + if !write_all(emitter, value) { + return false + } + emitter.whitespace = false + emitter.indention = false + return true +} + +func yaml_emitter_write_tag_handle(emitter *yaml_emitter_t, value []byte) bool { + if !emitter.whitespace { + if !put(emitter, ' ') { + return false + } + } + if !write_all(emitter, value) { + return false + } + emitter.whitespace = false + emitter.indention = false + return true +} + +func yaml_emitter_write_tag_content(emitter *yaml_emitter_t, value []byte, need_whitespace bool) bool { + if need_whitespace && !emitter.whitespace { + if !put(emitter, ' ') { + return false + } + } + for i := 0; i < len(value); { + var must_write bool + switch value[i] { + case ';', '/', '?', ':', '@', '&', '=', '+', '$', ',', '_', '.', '~', '*', '\'', '(', ')', '[', ']': + must_write = true + default: + must_write = is_alpha(value, i) + } + if must_write { + if !write(emitter, value, &i) { + return false + } + } else { + w := width(value[i]) + for k := 0; k < w; k++ { + octet := value[i] + i++ + if !put(emitter, '%') { + return false + } + + c := octet >> 4 + if c < 10 { + c += '0' + } else { + c += 'A' - 10 + } + if !put(emitter, c) { + return false + } + + c = octet & 0x0f + if c < 10 { + c += '0' + } else { + c += 'A' - 10 + } + if !put(emitter, c) { + return false + } + } + } + } + emitter.whitespace = false + emitter.indention = false + return true +} + +func yaml_emitter_write_plain_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool { + if len(value) > 0 && !emitter.whitespace { + if !put(emitter, ' ') { + return false + } + } + + spaces := false + breaks := false + for i := 0; i < len(value); { + if is_space(value, i) { + if allow_breaks && !spaces && emitter.column > emitter.best_width && !is_space(value, i+1) { + if !yaml_emitter_write_indent(emitter) { + return false + } + i += width(value[i]) + } else { + if !write(emitter, value, &i) { + return false + } + } + spaces = true + } else if is_break(value, i) { + if !breaks && value[i] == '\n' { + if !put_break(emitter) { + return false + } + } + if !write_break(emitter, value, &i) { + return false + } + //emitter.indention = true + breaks = true + } else { + if breaks { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !write(emitter, value, &i) { + return false + } + emitter.indention = false + spaces = false + breaks = false + } + } + + if len(value) > 0 { + emitter.whitespace = false + } + emitter.indention = false + if emitter.root_context { + emitter.open_ended = true + } + + return true +} + +func yaml_emitter_write_single_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool { + + if !yaml_emitter_write_indicator(emitter, []byte{'\''}, true, false, false) { + return false + } + + spaces := false + breaks := false + for i := 0; i < len(value); { + if is_space(value, i) { + if allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 && !is_space(value, i+1) { + if !yaml_emitter_write_indent(emitter) { + return false + } + i += width(value[i]) + } else { + if !write(emitter, value, &i) { + return false + } + } + spaces = true + } else if is_break(value, i) { + if !breaks && value[i] == '\n' { + if !put_break(emitter) { + return false + } + } + if !write_break(emitter, value, &i) { + return false + } + //emitter.indention = true + breaks = true + } else { + if breaks { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if value[i] == '\'' { + if !put(emitter, '\'') { + return false + } + } + if !write(emitter, value, &i) { + return false + } + emitter.indention = false + spaces = false + breaks = false + } + } + if !yaml_emitter_write_indicator(emitter, []byte{'\''}, false, false, false) { + return false + } + emitter.whitespace = false + emitter.indention = false + return true +} + +func yaml_emitter_write_double_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool { + spaces := false + if !yaml_emitter_write_indicator(emitter, []byte{'"'}, true, false, false) { + return false + } + + for i := 0; i < len(value); { + if !is_printable(value, i) || (!emitter.unicode && !is_ascii(value, i)) || + is_bom(value, i) || is_break(value, i) || + value[i] == '"' || value[i] == '\\' { + + octet := value[i] + + var w int + var v rune + switch { + case octet&0x80 == 0x00: + w, v = 1, rune(octet&0x7F) + case octet&0xE0 == 0xC0: + w, v = 2, rune(octet&0x1F) + case octet&0xF0 == 0xE0: + w, v = 3, rune(octet&0x0F) + case octet&0xF8 == 0xF0: + w, v = 4, rune(octet&0x07) + } + for k := 1; k < w; k++ { + octet = value[i+k] + v = (v << 6) + (rune(octet) & 0x3F) + } + i += w + + if !put(emitter, '\\') { + return false + } + + var ok bool + switch v { + case 0x00: + ok = put(emitter, '0') + case 0x07: + ok = put(emitter, 'a') + case 0x08: + ok = put(emitter, 'b') + case 0x09: + ok = put(emitter, 't') + case 0x0A: + ok = put(emitter, 'n') + case 0x0b: + ok = put(emitter, 'v') + case 0x0c: + ok = put(emitter, 'f') + case 0x0d: + ok = put(emitter, 'r') + case 0x1b: + ok = put(emitter, 'e') + case 0x22: + ok = put(emitter, '"') + case 0x5c: + ok = put(emitter, '\\') + case 0x85: + ok = put(emitter, 'N') + case 0xA0: + ok = put(emitter, '_') + case 0x2028: + ok = put(emitter, 'L') + case 0x2029: + ok = put(emitter, 'P') + default: + if v <= 0xFF { + ok = put(emitter, 'x') + w = 2 + } else if v <= 0xFFFF { + ok = put(emitter, 'u') + w = 4 + } else { + ok = put(emitter, 'U') + w = 8 + } + for k := (w - 1) * 4; ok && k >= 0; k -= 4 { + digit := byte((v >> uint(k)) & 0x0F) + if digit < 10 { + ok = put(emitter, digit+'0') + } else { + ok = put(emitter, digit+'A'-10) + } + } + } + if !ok { + return false + } + spaces = false + } else if is_space(value, i) { + if allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 { + if !yaml_emitter_write_indent(emitter) { + return false + } + if is_space(value, i+1) { + if !put(emitter, '\\') { + return false + } + } + i += width(value[i]) + } else if !write(emitter, value, &i) { + return false + } + spaces = true + } else { + if !write(emitter, value, &i) { + return false + } + spaces = false + } + } + if !yaml_emitter_write_indicator(emitter, []byte{'"'}, false, false, false) { + return false + } + emitter.whitespace = false + emitter.indention = false + return true +} + +func yaml_emitter_write_block_scalar_hints(emitter *yaml_emitter_t, value []byte) bool { + if is_space(value, 0) || is_break(value, 0) { + indent_hint := []byte{'0' + byte(emitter.best_indent)} + if !yaml_emitter_write_indicator(emitter, indent_hint, false, false, false) { + return false + } + } + + emitter.open_ended = false + + var chomp_hint [1]byte + if len(value) == 0 { + chomp_hint[0] = '-' + } else { + i := len(value) - 1 + for value[i]&0xC0 == 0x80 { + i-- + } + if !is_break(value, i) { + chomp_hint[0] = '-' + } else if i == 0 { + chomp_hint[0] = '+' + emitter.open_ended = true + } else { + i-- + for value[i]&0xC0 == 0x80 { + i-- + } + if is_break(value, i) { + chomp_hint[0] = '+' + emitter.open_ended = true + } + } + } + if chomp_hint[0] != 0 { + if !yaml_emitter_write_indicator(emitter, chomp_hint[:], false, false, false) { + return false + } + } + return true +} + +func yaml_emitter_write_literal_scalar(emitter *yaml_emitter_t, value []byte) bool { + if !yaml_emitter_write_indicator(emitter, []byte{'|'}, true, false, false) { + return false + } + if !yaml_emitter_write_block_scalar_hints(emitter, value) { + return false + } + if !yaml_emitter_process_line_comment(emitter) { + return false + } + //emitter.indention = true + emitter.whitespace = true + breaks := true + for i := 0; i < len(value); { + if is_break(value, i) { + if !write_break(emitter, value, &i) { + return false + } + //emitter.indention = true + breaks = true + } else { + if breaks { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !write(emitter, value, &i) { + return false + } + emitter.indention = false + breaks = false + } + } + + return true +} + +func yaml_emitter_write_folded_scalar(emitter *yaml_emitter_t, value []byte) bool { + if !yaml_emitter_write_indicator(emitter, []byte{'>'}, true, false, false) { + return false + } + if !yaml_emitter_write_block_scalar_hints(emitter, value) { + return false + } + if !yaml_emitter_process_line_comment(emitter) { + return false + } + + //emitter.indention = true + emitter.whitespace = true + + breaks := true + leading_spaces := true + for i := 0; i < len(value); { + if is_break(value, i) { + if !breaks && !leading_spaces && value[i] == '\n' { + k := 0 + for is_break(value, k) { + k += width(value[k]) + } + if !is_blankz(value, k) { + if !put_break(emitter) { + return false + } + } + } + if !write_break(emitter, value, &i) { + return false + } + //emitter.indention = true + breaks = true + } else { + if breaks { + if !yaml_emitter_write_indent(emitter) { + return false + } + leading_spaces = is_blank(value, i) + } + if !breaks && is_space(value, i) && !is_space(value, i+1) && emitter.column > emitter.best_width { + if !yaml_emitter_write_indent(emitter) { + return false + } + i += width(value[i]) + } else { + if !write(emitter, value, &i) { + return false + } + } + emitter.indention = false + breaks = false + } + } + return true +} + +func yaml_emitter_write_comment(emitter *yaml_emitter_t, comment []byte) bool { + breaks := false + pound := false + for i := 0; i < len(comment); { + if is_break(comment, i) { + if !write_break(emitter, comment, &i) { + return false + } + //emitter.indention = true + breaks = true + pound = false + } else { + if breaks && !yaml_emitter_write_indent(emitter) { + return false + } + if !pound { + if comment[i] != '#' && (!put(emitter, '#') || !put(emitter, ' ')) { + return false + } + pound = true + } + if !write(emitter, comment, &i) { + return false + } + emitter.indention = false + breaks = false + } + } + if !breaks && !put_break(emitter) { + return false + } + + emitter.whitespace = true + //emitter.indention = true + return true +} diff --git a/vendor/gopkg.in/yaml.v3/encode.go b/vendor/gopkg.in/yaml.v3/encode.go new file mode 100644 index 0000000000..de9e72a3e6 --- /dev/null +++ b/vendor/gopkg.in/yaml.v3/encode.go @@ -0,0 +1,577 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// +// 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 yaml + +import ( + "encoding" + "fmt" + "io" + "reflect" + "regexp" + "sort" + "strconv" + "strings" + "time" + "unicode/utf8" +) + +type encoder struct { + emitter yaml_emitter_t + event yaml_event_t + out []byte + flow bool + indent int + doneInit bool +} + +func newEncoder() *encoder { + e := &encoder{} + yaml_emitter_initialize(&e.emitter) + yaml_emitter_set_output_string(&e.emitter, &e.out) + yaml_emitter_set_unicode(&e.emitter, true) + return e +} + +func newEncoderWithWriter(w io.Writer) *encoder { + e := &encoder{} + yaml_emitter_initialize(&e.emitter) + yaml_emitter_set_output_writer(&e.emitter, w) + yaml_emitter_set_unicode(&e.emitter, true) + return e +} + +func (e *encoder) init() { + if e.doneInit { + return + } + if e.indent == 0 { + e.indent = 4 + } + e.emitter.best_indent = e.indent + yaml_stream_start_event_initialize(&e.event, yaml_UTF8_ENCODING) + e.emit() + e.doneInit = true +} + +func (e *encoder) finish() { + e.emitter.open_ended = false + yaml_stream_end_event_initialize(&e.event) + e.emit() +} + +func (e *encoder) destroy() { + yaml_emitter_delete(&e.emitter) +} + +func (e *encoder) emit() { + // This will internally delete the e.event value. + e.must(yaml_emitter_emit(&e.emitter, &e.event)) +} + +func (e *encoder) must(ok bool) { + if !ok { + msg := e.emitter.problem + if msg == "" { + msg = "unknown problem generating YAML content" + } + failf("%s", msg) + } +} + +func (e *encoder) marshalDoc(tag string, in reflect.Value) { + e.init() + var node *Node + if in.IsValid() { + node, _ = in.Interface().(*Node) + } + if node != nil && node.Kind == DocumentNode { + e.nodev(in) + } else { + yaml_document_start_event_initialize(&e.event, nil, nil, true) + e.emit() + e.marshal(tag, in) + yaml_document_end_event_initialize(&e.event, true) + e.emit() + } +} + +func (e *encoder) marshal(tag string, in reflect.Value) { + tag = shortTag(tag) + if !in.IsValid() || in.Kind() == reflect.Ptr && in.IsNil() { + e.nilv() + return + } + iface := in.Interface() + switch value := iface.(type) { + case *Node: + e.nodev(in) + return + case Node: + if !in.CanAddr() { + var n = reflect.New(in.Type()).Elem() + n.Set(in) + in = n + } + e.nodev(in.Addr()) + return + case time.Time: + e.timev(tag, in) + return + case *time.Time: + e.timev(tag, in.Elem()) + return + case time.Duration: + e.stringv(tag, reflect.ValueOf(value.String())) + return + case Marshaler: + v, err := value.MarshalYAML() + if err != nil { + fail(err) + } + if v == nil { + e.nilv() + return + } + e.marshal(tag, reflect.ValueOf(v)) + return + case encoding.TextMarshaler: + text, err := value.MarshalText() + if err != nil { + fail(err) + } + in = reflect.ValueOf(string(text)) + case nil: + e.nilv() + return + } + switch in.Kind() { + case reflect.Interface: + e.marshal(tag, in.Elem()) + case reflect.Map: + e.mapv(tag, in) + case reflect.Ptr: + e.marshal(tag, in.Elem()) + case reflect.Struct: + e.structv(tag, in) + case reflect.Slice, reflect.Array: + e.slicev(tag, in) + case reflect.String: + e.stringv(tag, in) + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + e.intv(tag, in) + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + e.uintv(tag, in) + case reflect.Float32, reflect.Float64: + e.floatv(tag, in) + case reflect.Bool: + e.boolv(tag, in) + default: + panic("cannot marshal type: " + in.Type().String()) + } +} + +func (e *encoder) mapv(tag string, in reflect.Value) { + e.mappingv(tag, func() { + keys := keyList(in.MapKeys()) + sort.Sort(keys) + for _, k := range keys { + e.marshal("", k) + e.marshal("", in.MapIndex(k)) + } + }) +} + +func (e *encoder) fieldByIndex(v reflect.Value, index []int) (field reflect.Value) { + for _, num := range index { + for { + if v.Kind() == reflect.Ptr { + if v.IsNil() { + return reflect.Value{} + } + v = v.Elem() + continue + } + break + } + v = v.Field(num) + } + return v +} + +func (e *encoder) structv(tag string, in reflect.Value) { + sinfo, err := getStructInfo(in.Type()) + if err != nil { + panic(err) + } + e.mappingv(tag, func() { + for _, info := range sinfo.FieldsList { + var value reflect.Value + if info.Inline == nil { + value = in.Field(info.Num) + } else { + value = e.fieldByIndex(in, info.Inline) + if !value.IsValid() { + continue + } + } + if info.OmitEmpty && isZero(value) { + continue + } + e.marshal("", reflect.ValueOf(info.Key)) + e.flow = info.Flow + e.marshal("", value) + } + if sinfo.InlineMap >= 0 { + m := in.Field(sinfo.InlineMap) + if m.Len() > 0 { + e.flow = false + keys := keyList(m.MapKeys()) + sort.Sort(keys) + for _, k := range keys { + if _, found := sinfo.FieldsMap[k.String()]; found { + panic(fmt.Sprintf("cannot have key %q in inlined map: conflicts with struct field", k.String())) + } + e.marshal("", k) + e.flow = false + e.marshal("", m.MapIndex(k)) + } + } + } + }) +} + +func (e *encoder) mappingv(tag string, f func()) { + implicit := tag == "" + style := yaml_BLOCK_MAPPING_STYLE + if e.flow { + e.flow = false + style = yaml_FLOW_MAPPING_STYLE + } + yaml_mapping_start_event_initialize(&e.event, nil, []byte(tag), implicit, style) + e.emit() + f() + yaml_mapping_end_event_initialize(&e.event) + e.emit() +} + +func (e *encoder) slicev(tag string, in reflect.Value) { + implicit := tag == "" + style := yaml_BLOCK_SEQUENCE_STYLE + if e.flow { + e.flow = false + style = yaml_FLOW_SEQUENCE_STYLE + } + e.must(yaml_sequence_start_event_initialize(&e.event, nil, []byte(tag), implicit, style)) + e.emit() + n := in.Len() + for i := 0; i < n; i++ { + e.marshal("", in.Index(i)) + } + e.must(yaml_sequence_end_event_initialize(&e.event)) + e.emit() +} + +// isBase60 returns whether s is in base 60 notation as defined in YAML 1.1. +// +// The base 60 float notation in YAML 1.1 is a terrible idea and is unsupported +// in YAML 1.2 and by this package, but these should be marshalled quoted for +// the time being for compatibility with other parsers. +func isBase60Float(s string) (result bool) { + // Fast path. + if s == "" { + return false + } + c := s[0] + if !(c == '+' || c == '-' || c >= '0' && c <= '9') || strings.IndexByte(s, ':') < 0 { + return false + } + // Do the full match. + return base60float.MatchString(s) +} + +// From http://yaml.org/type/float.html, except the regular expression there +// is bogus. In practice parsers do not enforce the "\.[0-9_]*" suffix. +var base60float = regexp.MustCompile(`^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+(?:\.[0-9_]*)?$`) + +// isOldBool returns whether s is bool notation as defined in YAML 1.1. +// +// We continue to force strings that YAML 1.1 would interpret as booleans to be +// rendered as quotes strings so that the marshalled output valid for YAML 1.1 +// parsing. +func isOldBool(s string) (result bool) { + switch s { + case "y", "Y", "yes", "Yes", "YES", "on", "On", "ON", + "n", "N", "no", "No", "NO", "off", "Off", "OFF": + return true + default: + return false + } +} + +func (e *encoder) stringv(tag string, in reflect.Value) { + var style yaml_scalar_style_t + s := in.String() + canUsePlain := true + switch { + case !utf8.ValidString(s): + if tag == binaryTag { + failf("explicitly tagged !!binary data must be base64-encoded") + } + if tag != "" { + failf("cannot marshal invalid UTF-8 data as %s", shortTag(tag)) + } + // It can't be encoded directly as YAML so use a binary tag + // and encode it as base64. + tag = binaryTag + s = encodeBase64(s) + case tag == "": + // Check to see if it would resolve to a specific + // tag when encoded unquoted. If it doesn't, + // there's no need to quote it. + rtag, _ := resolve("", s) + canUsePlain = rtag == strTag && !(isBase60Float(s) || isOldBool(s)) + } + // Note: it's possible for user code to emit invalid YAML + // if they explicitly specify a tag and a string containing + // text that's incompatible with that tag. + switch { + case strings.Contains(s, "\n"): + if e.flow { + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } else { + style = yaml_LITERAL_SCALAR_STYLE + } + case canUsePlain: + style = yaml_PLAIN_SCALAR_STYLE + default: + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + e.emitScalar(s, "", tag, style, nil, nil, nil, nil) +} + +func (e *encoder) boolv(tag string, in reflect.Value) { + var s string + if in.Bool() { + s = "true" + } else { + s = "false" + } + e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil) +} + +func (e *encoder) intv(tag string, in reflect.Value) { + s := strconv.FormatInt(in.Int(), 10) + e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil) +} + +func (e *encoder) uintv(tag string, in reflect.Value) { + s := strconv.FormatUint(in.Uint(), 10) + e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil) +} + +func (e *encoder) timev(tag string, in reflect.Value) { + t := in.Interface().(time.Time) + s := t.Format(time.RFC3339Nano) + e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil) +} + +func (e *encoder) floatv(tag string, in reflect.Value) { + // Issue #352: When formatting, use the precision of the underlying value + precision := 64 + if in.Kind() == reflect.Float32 { + precision = 32 + } + + s := strconv.FormatFloat(in.Float(), 'g', -1, precision) + switch s { + case "+Inf": + s = ".inf" + case "-Inf": + s = "-.inf" + case "NaN": + s = ".nan" + } + e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil) +} + +func (e *encoder) nilv() { + e.emitScalar("null", "", "", yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil) +} + +func (e *encoder) emitScalar(value, anchor, tag string, style yaml_scalar_style_t, head, line, foot, tail []byte) { + // TODO Kill this function. Replace all initialize calls by their underlining Go literals. + implicit := tag == "" + if !implicit { + tag = longTag(tag) + } + e.must(yaml_scalar_event_initialize(&e.event, []byte(anchor), []byte(tag), []byte(value), implicit, implicit, style)) + e.event.head_comment = head + e.event.line_comment = line + e.event.foot_comment = foot + e.event.tail_comment = tail + e.emit() +} + +func (e *encoder) nodev(in reflect.Value) { + e.node(in.Interface().(*Node), "") +} + +func (e *encoder) node(node *Node, tail string) { + // Zero nodes behave as nil. + if node.Kind == 0 && node.IsZero() { + e.nilv() + return + } + + // If the tag was not explicitly requested, and dropping it won't change the + // implicit tag of the value, don't include it in the presentation. + var tag = node.Tag + var stag = shortTag(tag) + var forceQuoting bool + if tag != "" && node.Style&TaggedStyle == 0 { + if node.Kind == ScalarNode { + if stag == strTag && node.Style&(SingleQuotedStyle|DoubleQuotedStyle|LiteralStyle|FoldedStyle) != 0 { + tag = "" + } else { + rtag, _ := resolve("", node.Value) + if rtag == stag { + tag = "" + } else if stag == strTag { + tag = "" + forceQuoting = true + } + } + } else { + var rtag string + switch node.Kind { + case MappingNode: + rtag = mapTag + case SequenceNode: + rtag = seqTag + } + if rtag == stag { + tag = "" + } + } + } + + switch node.Kind { + case DocumentNode: + yaml_document_start_event_initialize(&e.event, nil, nil, true) + e.event.head_comment = []byte(node.HeadComment) + e.emit() + for _, node := range node.Content { + e.node(node, "") + } + yaml_document_end_event_initialize(&e.event, true) + e.event.foot_comment = []byte(node.FootComment) + e.emit() + + case SequenceNode: + style := yaml_BLOCK_SEQUENCE_STYLE + if node.Style&FlowStyle != 0 { + style = yaml_FLOW_SEQUENCE_STYLE + } + e.must(yaml_sequence_start_event_initialize(&e.event, []byte(node.Anchor), []byte(longTag(tag)), tag == "", style)) + e.event.head_comment = []byte(node.HeadComment) + e.emit() + for _, node := range node.Content { + e.node(node, "") + } + e.must(yaml_sequence_end_event_initialize(&e.event)) + e.event.line_comment = []byte(node.LineComment) + e.event.foot_comment = []byte(node.FootComment) + e.emit() + + case MappingNode: + style := yaml_BLOCK_MAPPING_STYLE + if node.Style&FlowStyle != 0 { + style = yaml_FLOW_MAPPING_STYLE + } + yaml_mapping_start_event_initialize(&e.event, []byte(node.Anchor), []byte(longTag(tag)), tag == "", style) + e.event.tail_comment = []byte(tail) + e.event.head_comment = []byte(node.HeadComment) + e.emit() + + // The tail logic below moves the foot comment of prior keys to the following key, + // since the value for each key may be a nested structure and the foot needs to be + // processed only the entirety of the value is streamed. The last tail is processed + // with the mapping end event. + var tail string + for i := 0; i+1 < len(node.Content); i += 2 { + k := node.Content[i] + foot := k.FootComment + if foot != "" { + kopy := *k + kopy.FootComment = "" + k = &kopy + } + e.node(k, tail) + tail = foot + + v := node.Content[i+1] + e.node(v, "") + } + + yaml_mapping_end_event_initialize(&e.event) + e.event.tail_comment = []byte(tail) + e.event.line_comment = []byte(node.LineComment) + e.event.foot_comment = []byte(node.FootComment) + e.emit() + + case AliasNode: + yaml_alias_event_initialize(&e.event, []byte(node.Value)) + e.event.head_comment = []byte(node.HeadComment) + e.event.line_comment = []byte(node.LineComment) + e.event.foot_comment = []byte(node.FootComment) + e.emit() + + case ScalarNode: + value := node.Value + if !utf8.ValidString(value) { + if stag == binaryTag { + failf("explicitly tagged !!binary data must be base64-encoded") + } + if stag != "" { + failf("cannot marshal invalid UTF-8 data as %s", stag) + } + // It can't be encoded directly as YAML so use a binary tag + // and encode it as base64. + tag = binaryTag + value = encodeBase64(value) + } + + style := yaml_PLAIN_SCALAR_STYLE + switch { + case node.Style&DoubleQuotedStyle != 0: + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + case node.Style&SingleQuotedStyle != 0: + style = yaml_SINGLE_QUOTED_SCALAR_STYLE + case node.Style&LiteralStyle != 0: + style = yaml_LITERAL_SCALAR_STYLE + case node.Style&FoldedStyle != 0: + style = yaml_FOLDED_SCALAR_STYLE + case strings.Contains(value, "\n"): + style = yaml_LITERAL_SCALAR_STYLE + case forceQuoting: + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + + e.emitScalar(value, node.Anchor, tag, style, []byte(node.HeadComment), []byte(node.LineComment), []byte(node.FootComment), []byte(tail)) + default: + failf("cannot encode node with unknown kind %d", node.Kind) + } +} diff --git a/vendor/gopkg.in/yaml.v3/parserc.go b/vendor/gopkg.in/yaml.v3/parserc.go new file mode 100644 index 0000000000..268558a0d6 --- /dev/null +++ b/vendor/gopkg.in/yaml.v3/parserc.go @@ -0,0 +1,1258 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// Copyright (c) 2006-2010 Kirill Simonov +// +// 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. + +package yaml + +import ( + "bytes" +) + +// The parser implements the following grammar: +// +// stream ::= STREAM-START implicit_document? explicit_document* STREAM-END +// implicit_document ::= block_node DOCUMENT-END* +// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* +// block_node_or_indentless_sequence ::= +// ALIAS +// | properties (block_content | indentless_block_sequence)? +// | block_content +// | indentless_block_sequence +// block_node ::= ALIAS +// | properties block_content? +// | block_content +// flow_node ::= ALIAS +// | properties flow_content? +// | flow_content +// properties ::= TAG ANCHOR? | ANCHOR TAG? +// block_content ::= block_collection | flow_collection | SCALAR +// flow_content ::= flow_collection | SCALAR +// block_collection ::= block_sequence | block_mapping +// flow_collection ::= flow_sequence | flow_mapping +// block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END +// indentless_sequence ::= (BLOCK-ENTRY block_node?)+ +// block_mapping ::= BLOCK-MAPPING_START +// ((KEY block_node_or_indentless_sequence?)? +// (VALUE block_node_or_indentless_sequence?)?)* +// BLOCK-END +// flow_sequence ::= FLOW-SEQUENCE-START +// (flow_sequence_entry FLOW-ENTRY)* +// flow_sequence_entry? +// FLOW-SEQUENCE-END +// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// flow_mapping ::= FLOW-MAPPING-START +// (flow_mapping_entry FLOW-ENTRY)* +// flow_mapping_entry? +// FLOW-MAPPING-END +// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? + +// Peek the next token in the token queue. +func peek_token(parser *yaml_parser_t) *yaml_token_t { + if parser.token_available || yaml_parser_fetch_more_tokens(parser) { + token := &parser.tokens[parser.tokens_head] + yaml_parser_unfold_comments(parser, token) + return token + } + return nil +} + +// yaml_parser_unfold_comments walks through the comments queue and joins all +// comments behind the position of the provided token into the respective +// top-level comment slices in the parser. +func yaml_parser_unfold_comments(parser *yaml_parser_t, token *yaml_token_t) { + for parser.comments_head < len(parser.comments) && token.start_mark.index >= parser.comments[parser.comments_head].token_mark.index { + comment := &parser.comments[parser.comments_head] + if len(comment.head) > 0 { + if token.typ == yaml_BLOCK_END_TOKEN { + // No heads on ends, so keep comment.head for a follow up token. + break + } + if len(parser.head_comment) > 0 { + parser.head_comment = append(parser.head_comment, '\n') + } + parser.head_comment = append(parser.head_comment, comment.head...) + } + if len(comment.foot) > 0 { + if len(parser.foot_comment) > 0 { + parser.foot_comment = append(parser.foot_comment, '\n') + } + parser.foot_comment = append(parser.foot_comment, comment.foot...) + } + if len(comment.line) > 0 { + if len(parser.line_comment) > 0 { + parser.line_comment = append(parser.line_comment, '\n') + } + parser.line_comment = append(parser.line_comment, comment.line...) + } + *comment = yaml_comment_t{} + parser.comments_head++ + } +} + +// Remove the next token from the queue (must be called after peek_token). +func skip_token(parser *yaml_parser_t) { + parser.token_available = false + parser.tokens_parsed++ + parser.stream_end_produced = parser.tokens[parser.tokens_head].typ == yaml_STREAM_END_TOKEN + parser.tokens_head++ +} + +// Get the next event. +func yaml_parser_parse(parser *yaml_parser_t, event *yaml_event_t) bool { + // Erase the event object. + *event = yaml_event_t{} + + // No events after the end of the stream or error. + if parser.stream_end_produced || parser.error != yaml_NO_ERROR || parser.state == yaml_PARSE_END_STATE { + return true + } + + // Generate the next event. + return yaml_parser_state_machine(parser, event) +} + +// Set parser error. +func yaml_parser_set_parser_error(parser *yaml_parser_t, problem string, problem_mark yaml_mark_t) bool { + parser.error = yaml_PARSER_ERROR + parser.problem = problem + parser.problem_mark = problem_mark + return false +} + +func yaml_parser_set_parser_error_context(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string, problem_mark yaml_mark_t) bool { + parser.error = yaml_PARSER_ERROR + parser.context = context + parser.context_mark = context_mark + parser.problem = problem + parser.problem_mark = problem_mark + return false +} + +// State dispatcher. +func yaml_parser_state_machine(parser *yaml_parser_t, event *yaml_event_t) bool { + //trace("yaml_parser_state_machine", "state:", parser.state.String()) + + switch parser.state { + case yaml_PARSE_STREAM_START_STATE: + return yaml_parser_parse_stream_start(parser, event) + + case yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE: + return yaml_parser_parse_document_start(parser, event, true) + + case yaml_PARSE_DOCUMENT_START_STATE: + return yaml_parser_parse_document_start(parser, event, false) + + case yaml_PARSE_DOCUMENT_CONTENT_STATE: + return yaml_parser_parse_document_content(parser, event) + + case yaml_PARSE_DOCUMENT_END_STATE: + return yaml_parser_parse_document_end(parser, event) + + case yaml_PARSE_BLOCK_NODE_STATE: + return yaml_parser_parse_node(parser, event, true, false) + + case yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE: + return yaml_parser_parse_node(parser, event, true, true) + + case yaml_PARSE_FLOW_NODE_STATE: + return yaml_parser_parse_node(parser, event, false, false) + + case yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE: + return yaml_parser_parse_block_sequence_entry(parser, event, true) + + case yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE: + return yaml_parser_parse_block_sequence_entry(parser, event, false) + + case yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE: + return yaml_parser_parse_indentless_sequence_entry(parser, event) + + case yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE: + return yaml_parser_parse_block_mapping_key(parser, event, true) + + case yaml_PARSE_BLOCK_MAPPING_KEY_STATE: + return yaml_parser_parse_block_mapping_key(parser, event, false) + + case yaml_PARSE_BLOCK_MAPPING_VALUE_STATE: + return yaml_parser_parse_block_mapping_value(parser, event) + + case yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE: + return yaml_parser_parse_flow_sequence_entry(parser, event, true) + + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE: + return yaml_parser_parse_flow_sequence_entry(parser, event, false) + + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE: + return yaml_parser_parse_flow_sequence_entry_mapping_key(parser, event) + + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE: + return yaml_parser_parse_flow_sequence_entry_mapping_value(parser, event) + + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE: + return yaml_parser_parse_flow_sequence_entry_mapping_end(parser, event) + + case yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE: + return yaml_parser_parse_flow_mapping_key(parser, event, true) + + case yaml_PARSE_FLOW_MAPPING_KEY_STATE: + return yaml_parser_parse_flow_mapping_key(parser, event, false) + + case yaml_PARSE_FLOW_MAPPING_VALUE_STATE: + return yaml_parser_parse_flow_mapping_value(parser, event, false) + + case yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE: + return yaml_parser_parse_flow_mapping_value(parser, event, true) + + default: + panic("invalid parser state") + } +} + +// Parse the production: +// stream ::= STREAM-START implicit_document? explicit_document* STREAM-END +// ************ +func yaml_parser_parse_stream_start(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_STREAM_START_TOKEN { + return yaml_parser_set_parser_error(parser, "did not find expected ", token.start_mark) + } + parser.state = yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE + *event = yaml_event_t{ + typ: yaml_STREAM_START_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + encoding: token.encoding, + } + skip_token(parser) + return true +} + +// Parse the productions: +// implicit_document ::= block_node DOCUMENT-END* +// * +// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* +// ************************* +func yaml_parser_parse_document_start(parser *yaml_parser_t, event *yaml_event_t, implicit bool) bool { + + token := peek_token(parser) + if token == nil { + return false + } + + // Parse extra document end indicators. + if !implicit { + for token.typ == yaml_DOCUMENT_END_TOKEN { + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + } + } + + if implicit && token.typ != yaml_VERSION_DIRECTIVE_TOKEN && + token.typ != yaml_TAG_DIRECTIVE_TOKEN && + token.typ != yaml_DOCUMENT_START_TOKEN && + token.typ != yaml_STREAM_END_TOKEN { + // Parse an implicit document. + if !yaml_parser_process_directives(parser, nil, nil) { + return false + } + parser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE) + parser.state = yaml_PARSE_BLOCK_NODE_STATE + + var head_comment []byte + if len(parser.head_comment) > 0 { + // [Go] Scan the header comment backwards, and if an empty line is found, break + // the header so the part before the last empty line goes into the + // document header, while the bottom of it goes into a follow up event. + for i := len(parser.head_comment) - 1; i > 0; i-- { + if parser.head_comment[i] == '\n' { + if i == len(parser.head_comment)-1 { + head_comment = parser.head_comment[:i] + parser.head_comment = parser.head_comment[i+1:] + break + } else if parser.head_comment[i-1] == '\n' { + head_comment = parser.head_comment[:i-1] + parser.head_comment = parser.head_comment[i+1:] + break + } + } + } + } + + *event = yaml_event_t{ + typ: yaml_DOCUMENT_START_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + + head_comment: head_comment, + } + + } else if token.typ != yaml_STREAM_END_TOKEN { + // Parse an explicit document. + var version_directive *yaml_version_directive_t + var tag_directives []yaml_tag_directive_t + start_mark := token.start_mark + if !yaml_parser_process_directives(parser, &version_directive, &tag_directives) { + return false + } + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_DOCUMENT_START_TOKEN { + yaml_parser_set_parser_error(parser, + "did not find expected ", token.start_mark) + return false + } + parser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE) + parser.state = yaml_PARSE_DOCUMENT_CONTENT_STATE + end_mark := token.end_mark + + *event = yaml_event_t{ + typ: yaml_DOCUMENT_START_EVENT, + start_mark: start_mark, + end_mark: end_mark, + version_directive: version_directive, + tag_directives: tag_directives, + implicit: false, + } + skip_token(parser) + + } else { + // Parse the stream end. + parser.state = yaml_PARSE_END_STATE + *event = yaml_event_t{ + typ: yaml_STREAM_END_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + } + skip_token(parser) + } + + return true +} + +// Parse the productions: +// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* +// *********** +// +func yaml_parser_parse_document_content(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + + if token.typ == yaml_VERSION_DIRECTIVE_TOKEN || + token.typ == yaml_TAG_DIRECTIVE_TOKEN || + token.typ == yaml_DOCUMENT_START_TOKEN || + token.typ == yaml_DOCUMENT_END_TOKEN || + token.typ == yaml_STREAM_END_TOKEN { + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + return yaml_parser_process_empty_scalar(parser, event, + token.start_mark) + } + return yaml_parser_parse_node(parser, event, true, false) +} + +// Parse the productions: +// implicit_document ::= block_node DOCUMENT-END* +// ************* +// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* +// +func yaml_parser_parse_document_end(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + + start_mark := token.start_mark + end_mark := token.start_mark + + implicit := true + if token.typ == yaml_DOCUMENT_END_TOKEN { + end_mark = token.end_mark + skip_token(parser) + implicit = false + } + + parser.tag_directives = parser.tag_directives[:0] + + parser.state = yaml_PARSE_DOCUMENT_START_STATE + *event = yaml_event_t{ + typ: yaml_DOCUMENT_END_EVENT, + start_mark: start_mark, + end_mark: end_mark, + implicit: implicit, + } + yaml_parser_set_event_comments(parser, event) + if len(event.head_comment) > 0 && len(event.foot_comment) == 0 { + event.foot_comment = event.head_comment + event.head_comment = nil + } + return true +} + +func yaml_parser_set_event_comments(parser *yaml_parser_t, event *yaml_event_t) { + event.head_comment = parser.head_comment + event.line_comment = parser.line_comment + event.foot_comment = parser.foot_comment + parser.head_comment = nil + parser.line_comment = nil + parser.foot_comment = nil + parser.tail_comment = nil + parser.stem_comment = nil +} + +// Parse the productions: +// block_node_or_indentless_sequence ::= +// ALIAS +// ***** +// | properties (block_content | indentless_block_sequence)? +// ********** * +// | block_content | indentless_block_sequence +// * +// block_node ::= ALIAS +// ***** +// | properties block_content? +// ********** * +// | block_content +// * +// flow_node ::= ALIAS +// ***** +// | properties flow_content? +// ********** * +// | flow_content +// * +// properties ::= TAG ANCHOR? | ANCHOR TAG? +// ************************* +// block_content ::= block_collection | flow_collection | SCALAR +// ****** +// flow_content ::= flow_collection | SCALAR +// ****** +func yaml_parser_parse_node(parser *yaml_parser_t, event *yaml_event_t, block, indentless_sequence bool) bool { + //defer trace("yaml_parser_parse_node", "block:", block, "indentless_sequence:", indentless_sequence)() + + token := peek_token(parser) + if token == nil { + return false + } + + if token.typ == yaml_ALIAS_TOKEN { + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + *event = yaml_event_t{ + typ: yaml_ALIAS_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + anchor: token.value, + } + yaml_parser_set_event_comments(parser, event) + skip_token(parser) + return true + } + + start_mark := token.start_mark + end_mark := token.start_mark + + var tag_token bool + var tag_handle, tag_suffix, anchor []byte + var tag_mark yaml_mark_t + if token.typ == yaml_ANCHOR_TOKEN { + anchor = token.value + start_mark = token.start_mark + end_mark = token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ == yaml_TAG_TOKEN { + tag_token = true + tag_handle = token.value + tag_suffix = token.suffix + tag_mark = token.start_mark + end_mark = token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + } + } else if token.typ == yaml_TAG_TOKEN { + tag_token = true + tag_handle = token.value + tag_suffix = token.suffix + start_mark = token.start_mark + tag_mark = token.start_mark + end_mark = token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ == yaml_ANCHOR_TOKEN { + anchor = token.value + end_mark = token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + } + } + + var tag []byte + if tag_token { + if len(tag_handle) == 0 { + tag = tag_suffix + tag_suffix = nil + } else { + for i := range parser.tag_directives { + if bytes.Equal(parser.tag_directives[i].handle, tag_handle) { + tag = append([]byte(nil), parser.tag_directives[i].prefix...) + tag = append(tag, tag_suffix...) + break + } + } + if len(tag) == 0 { + yaml_parser_set_parser_error_context(parser, + "while parsing a node", start_mark, + "found undefined tag handle", tag_mark) + return false + } + } + } + + implicit := len(tag) == 0 + if indentless_sequence && token.typ == yaml_BLOCK_ENTRY_TOKEN { + end_mark = token.end_mark + parser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE + *event = yaml_event_t{ + typ: yaml_SEQUENCE_START_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE), + } + return true + } + if token.typ == yaml_SCALAR_TOKEN { + var plain_implicit, quoted_implicit bool + end_mark = token.end_mark + if (len(tag) == 0 && token.style == yaml_PLAIN_SCALAR_STYLE) || (len(tag) == 1 && tag[0] == '!') { + plain_implicit = true + } else if len(tag) == 0 { + quoted_implicit = true + } + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + + *event = yaml_event_t{ + typ: yaml_SCALAR_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + value: token.value, + implicit: plain_implicit, + quoted_implicit: quoted_implicit, + style: yaml_style_t(token.style), + } + yaml_parser_set_event_comments(parser, event) + skip_token(parser) + return true + } + if token.typ == yaml_FLOW_SEQUENCE_START_TOKEN { + // [Go] Some of the events below can be merged as they differ only on style. + end_mark = token.end_mark + parser.state = yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE + *event = yaml_event_t{ + typ: yaml_SEQUENCE_START_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(yaml_FLOW_SEQUENCE_STYLE), + } + yaml_parser_set_event_comments(parser, event) + return true + } + if token.typ == yaml_FLOW_MAPPING_START_TOKEN { + end_mark = token.end_mark + parser.state = yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE + *event = yaml_event_t{ + typ: yaml_MAPPING_START_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(yaml_FLOW_MAPPING_STYLE), + } + yaml_parser_set_event_comments(parser, event) + return true + } + if block && token.typ == yaml_BLOCK_SEQUENCE_START_TOKEN { + end_mark = token.end_mark + parser.state = yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE + *event = yaml_event_t{ + typ: yaml_SEQUENCE_START_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE), + } + if parser.stem_comment != nil { + event.head_comment = parser.stem_comment + parser.stem_comment = nil + } + return true + } + if block && token.typ == yaml_BLOCK_MAPPING_START_TOKEN { + end_mark = token.end_mark + parser.state = yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE + *event = yaml_event_t{ + typ: yaml_MAPPING_START_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(yaml_BLOCK_MAPPING_STYLE), + } + if parser.stem_comment != nil { + event.head_comment = parser.stem_comment + parser.stem_comment = nil + } + return true + } + if len(anchor) > 0 || len(tag) > 0 { + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + + *event = yaml_event_t{ + typ: yaml_SCALAR_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + implicit: implicit, + quoted_implicit: false, + style: yaml_style_t(yaml_PLAIN_SCALAR_STYLE), + } + return true + } + + context := "while parsing a flow node" + if block { + context = "while parsing a block node" + } + yaml_parser_set_parser_error_context(parser, context, start_mark, + "did not find expected node content", token.start_mark) + return false +} + +// Parse the productions: +// block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END +// ******************** *********** * ********* +// +func yaml_parser_parse_block_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { + if first { + token := peek_token(parser) + if token == nil { + return false + } + parser.marks = append(parser.marks, token.start_mark) + skip_token(parser) + } + + token := peek_token(parser) + if token == nil { + return false + } + + if token.typ == yaml_BLOCK_ENTRY_TOKEN { + mark := token.end_mark + prior_head_len := len(parser.head_comment) + skip_token(parser) + yaml_parser_split_stem_comment(parser, prior_head_len) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_BLOCK_ENTRY_TOKEN && token.typ != yaml_BLOCK_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE) + return yaml_parser_parse_node(parser, event, true, false) + } else { + parser.state = yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE + return yaml_parser_process_empty_scalar(parser, event, mark) + } + } + if token.typ == yaml_BLOCK_END_TOKEN { + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + + *event = yaml_event_t{ + typ: yaml_SEQUENCE_END_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + } + + skip_token(parser) + return true + } + + context_mark := parser.marks[len(parser.marks)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + return yaml_parser_set_parser_error_context(parser, + "while parsing a block collection", context_mark, + "did not find expected '-' indicator", token.start_mark) +} + +// Parse the productions: +// indentless_sequence ::= (BLOCK-ENTRY block_node?)+ +// *********** * +func yaml_parser_parse_indentless_sequence_entry(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + + if token.typ == yaml_BLOCK_ENTRY_TOKEN { + mark := token.end_mark + prior_head_len := len(parser.head_comment) + skip_token(parser) + yaml_parser_split_stem_comment(parser, prior_head_len) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_BLOCK_ENTRY_TOKEN && + token.typ != yaml_KEY_TOKEN && + token.typ != yaml_VALUE_TOKEN && + token.typ != yaml_BLOCK_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE) + return yaml_parser_parse_node(parser, event, true, false) + } + parser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE + return yaml_parser_process_empty_scalar(parser, event, mark) + } + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + + *event = yaml_event_t{ + typ: yaml_SEQUENCE_END_EVENT, + start_mark: token.start_mark, + end_mark: token.start_mark, // [Go] Shouldn't this be token.end_mark? + } + return true +} + +// Split stem comment from head comment. +// +// When a sequence or map is found under a sequence entry, the former head comment +// is assigned to the underlying sequence or map as a whole, not the individual +// sequence or map entry as would be expected otherwise. To handle this case the +// previous head comment is moved aside as the stem comment. +func yaml_parser_split_stem_comment(parser *yaml_parser_t, stem_len int) { + if stem_len == 0 { + return + } + + token := peek_token(parser) + if token == nil || token.typ != yaml_BLOCK_SEQUENCE_START_TOKEN && token.typ != yaml_BLOCK_MAPPING_START_TOKEN { + return + } + + parser.stem_comment = parser.head_comment[:stem_len] + if len(parser.head_comment) == stem_len { + parser.head_comment = nil + } else { + // Copy suffix to prevent very strange bugs if someone ever appends + // further bytes to the prefix in the stem_comment slice above. + parser.head_comment = append([]byte(nil), parser.head_comment[stem_len+1:]...) + } +} + +// Parse the productions: +// block_mapping ::= BLOCK-MAPPING_START +// ******************* +// ((KEY block_node_or_indentless_sequence?)? +// *** * +// (VALUE block_node_or_indentless_sequence?)?)* +// +// BLOCK-END +// ********* +// +func yaml_parser_parse_block_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { + if first { + token := peek_token(parser) + if token == nil { + return false + } + parser.marks = append(parser.marks, token.start_mark) + skip_token(parser) + } + + token := peek_token(parser) + if token == nil { + return false + } + + // [Go] A tail comment was left from the prior mapping value processed. Emit an event + // as it needs to be processed with that value and not the following key. + if len(parser.tail_comment) > 0 { + *event = yaml_event_t{ + typ: yaml_TAIL_COMMENT_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + foot_comment: parser.tail_comment, + } + parser.tail_comment = nil + return true + } + + if token.typ == yaml_KEY_TOKEN { + mark := token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_KEY_TOKEN && + token.typ != yaml_VALUE_TOKEN && + token.typ != yaml_BLOCK_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_VALUE_STATE) + return yaml_parser_parse_node(parser, event, true, true) + } else { + parser.state = yaml_PARSE_BLOCK_MAPPING_VALUE_STATE + return yaml_parser_process_empty_scalar(parser, event, mark) + } + } else if token.typ == yaml_BLOCK_END_TOKEN { + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + *event = yaml_event_t{ + typ: yaml_MAPPING_END_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + } + yaml_parser_set_event_comments(parser, event) + skip_token(parser) + return true + } + + context_mark := parser.marks[len(parser.marks)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + return yaml_parser_set_parser_error_context(parser, + "while parsing a block mapping", context_mark, + "did not find expected key", token.start_mark) +} + +// Parse the productions: +// block_mapping ::= BLOCK-MAPPING_START +// +// ((KEY block_node_or_indentless_sequence?)? +// +// (VALUE block_node_or_indentless_sequence?)?)* +// ***** * +// BLOCK-END +// +// +func yaml_parser_parse_block_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + if token.typ == yaml_VALUE_TOKEN { + mark := token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_KEY_TOKEN && + token.typ != yaml_VALUE_TOKEN && + token.typ != yaml_BLOCK_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_KEY_STATE) + return yaml_parser_parse_node(parser, event, true, true) + } + parser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE + return yaml_parser_process_empty_scalar(parser, event, mark) + } + parser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE + return yaml_parser_process_empty_scalar(parser, event, token.start_mark) +} + +// Parse the productions: +// flow_sequence ::= FLOW-SEQUENCE-START +// ******************* +// (flow_sequence_entry FLOW-ENTRY)* +// * ********** +// flow_sequence_entry? +// * +// FLOW-SEQUENCE-END +// ***************** +// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// * +// +func yaml_parser_parse_flow_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { + if first { + token := peek_token(parser) + if token == nil { + return false + } + parser.marks = append(parser.marks, token.start_mark) + skip_token(parser) + } + token := peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { + if !first { + if token.typ == yaml_FLOW_ENTRY_TOKEN { + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + } else { + context_mark := parser.marks[len(parser.marks)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + return yaml_parser_set_parser_error_context(parser, + "while parsing a flow sequence", context_mark, + "did not find expected ',' or ']'", token.start_mark) + } + } + + if token.typ == yaml_KEY_TOKEN { + parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE + *event = yaml_event_t{ + typ: yaml_MAPPING_START_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + implicit: true, + style: yaml_style_t(yaml_FLOW_MAPPING_STYLE), + } + skip_token(parser) + return true + } else if token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE) + return yaml_parser_parse_node(parser, event, false, false) + } + } + + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + + *event = yaml_event_t{ + typ: yaml_SEQUENCE_END_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + } + yaml_parser_set_event_comments(parser, event) + + skip_token(parser) + return true +} + +// +// Parse the productions: +// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// *** * +// +func yaml_parser_parse_flow_sequence_entry_mapping_key(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_VALUE_TOKEN && + token.typ != yaml_FLOW_ENTRY_TOKEN && + token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE) + return yaml_parser_parse_node(parser, event, false, false) + } + mark := token.end_mark + skip_token(parser) + parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE + return yaml_parser_process_empty_scalar(parser, event, mark) +} + +// Parse the productions: +// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// ***** * +// +func yaml_parser_parse_flow_sequence_entry_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + if token.typ == yaml_VALUE_TOKEN { + skip_token(parser) + token := peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE) + return yaml_parser_parse_node(parser, event, false, false) + } + } + parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE + return yaml_parser_process_empty_scalar(parser, event, token.start_mark) +} + +// Parse the productions: +// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// * +// +func yaml_parser_parse_flow_sequence_entry_mapping_end(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE + *event = yaml_event_t{ + typ: yaml_MAPPING_END_EVENT, + start_mark: token.start_mark, + end_mark: token.start_mark, // [Go] Shouldn't this be end_mark? + } + return true +} + +// Parse the productions: +// flow_mapping ::= FLOW-MAPPING-START +// ****************** +// (flow_mapping_entry FLOW-ENTRY)* +// * ********** +// flow_mapping_entry? +// ****************** +// FLOW-MAPPING-END +// **************** +// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// * *** * +// +func yaml_parser_parse_flow_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { + if first { + token := peek_token(parser) + parser.marks = append(parser.marks, token.start_mark) + skip_token(parser) + } + + token := peek_token(parser) + if token == nil { + return false + } + + if token.typ != yaml_FLOW_MAPPING_END_TOKEN { + if !first { + if token.typ == yaml_FLOW_ENTRY_TOKEN { + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + } else { + context_mark := parser.marks[len(parser.marks)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + return yaml_parser_set_parser_error_context(parser, + "while parsing a flow mapping", context_mark, + "did not find expected ',' or '}'", token.start_mark) + } + } + + if token.typ == yaml_KEY_TOKEN { + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_VALUE_TOKEN && + token.typ != yaml_FLOW_ENTRY_TOKEN && + token.typ != yaml_FLOW_MAPPING_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_VALUE_STATE) + return yaml_parser_parse_node(parser, event, false, false) + } else { + parser.state = yaml_PARSE_FLOW_MAPPING_VALUE_STATE + return yaml_parser_process_empty_scalar(parser, event, token.start_mark) + } + } else if token.typ != yaml_FLOW_MAPPING_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE) + return yaml_parser_parse_node(parser, event, false, false) + } + } + + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + *event = yaml_event_t{ + typ: yaml_MAPPING_END_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + } + yaml_parser_set_event_comments(parser, event) + skip_token(parser) + return true +} + +// Parse the productions: +// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// * ***** * +// +func yaml_parser_parse_flow_mapping_value(parser *yaml_parser_t, event *yaml_event_t, empty bool) bool { + token := peek_token(parser) + if token == nil { + return false + } + if empty { + parser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE + return yaml_parser_process_empty_scalar(parser, event, token.start_mark) + } + if token.typ == yaml_VALUE_TOKEN { + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_MAPPING_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_KEY_STATE) + return yaml_parser_parse_node(parser, event, false, false) + } + } + parser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE + return yaml_parser_process_empty_scalar(parser, event, token.start_mark) +} + +// Generate an empty scalar event. +func yaml_parser_process_empty_scalar(parser *yaml_parser_t, event *yaml_event_t, mark yaml_mark_t) bool { + *event = yaml_event_t{ + typ: yaml_SCALAR_EVENT, + start_mark: mark, + end_mark: mark, + value: nil, // Empty + implicit: true, + style: yaml_style_t(yaml_PLAIN_SCALAR_STYLE), + } + return true +} + +var default_tag_directives = []yaml_tag_directive_t{ + {[]byte("!"), []byte("!")}, + {[]byte("!!"), []byte("tag:yaml.org,2002:")}, +} + +// Parse directives. +func yaml_parser_process_directives(parser *yaml_parser_t, + version_directive_ref **yaml_version_directive_t, + tag_directives_ref *[]yaml_tag_directive_t) bool { + + var version_directive *yaml_version_directive_t + var tag_directives []yaml_tag_directive_t + + token := peek_token(parser) + if token == nil { + return false + } + + for token.typ == yaml_VERSION_DIRECTIVE_TOKEN || token.typ == yaml_TAG_DIRECTIVE_TOKEN { + if token.typ == yaml_VERSION_DIRECTIVE_TOKEN { + if version_directive != nil { + yaml_parser_set_parser_error(parser, + "found duplicate %YAML directive", token.start_mark) + return false + } + if token.major != 1 || token.minor != 1 { + yaml_parser_set_parser_error(parser, + "found incompatible YAML document", token.start_mark) + return false + } + version_directive = &yaml_version_directive_t{ + major: token.major, + minor: token.minor, + } + } else if token.typ == yaml_TAG_DIRECTIVE_TOKEN { + value := yaml_tag_directive_t{ + handle: token.value, + prefix: token.prefix, + } + if !yaml_parser_append_tag_directive(parser, value, false, token.start_mark) { + return false + } + tag_directives = append(tag_directives, value) + } + + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + } + + for i := range default_tag_directives { + if !yaml_parser_append_tag_directive(parser, default_tag_directives[i], true, token.start_mark) { + return false + } + } + + if version_directive_ref != nil { + *version_directive_ref = version_directive + } + if tag_directives_ref != nil { + *tag_directives_ref = tag_directives + } + return true +} + +// Append a tag directive to the directives stack. +func yaml_parser_append_tag_directive(parser *yaml_parser_t, value yaml_tag_directive_t, allow_duplicates bool, mark yaml_mark_t) bool { + for i := range parser.tag_directives { + if bytes.Equal(value.handle, parser.tag_directives[i].handle) { + if allow_duplicates { + return true + } + return yaml_parser_set_parser_error(parser, "found duplicate %TAG directive", mark) + } + } + + // [Go] I suspect the copy is unnecessary. This was likely done + // because there was no way to track ownership of the data. + value_copy := yaml_tag_directive_t{ + handle: make([]byte, len(value.handle)), + prefix: make([]byte, len(value.prefix)), + } + copy(value_copy.handle, value.handle) + copy(value_copy.prefix, value.prefix) + parser.tag_directives = append(parser.tag_directives, value_copy) + return true +} diff --git a/vendor/gopkg.in/yaml.v3/readerc.go b/vendor/gopkg.in/yaml.v3/readerc.go new file mode 100644 index 0000000000..b7de0a89c4 --- /dev/null +++ b/vendor/gopkg.in/yaml.v3/readerc.go @@ -0,0 +1,434 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// Copyright (c) 2006-2010 Kirill Simonov +// +// 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. + +package yaml + +import ( + "io" +) + +// Set the reader error and return 0. +func yaml_parser_set_reader_error(parser *yaml_parser_t, problem string, offset int, value int) bool { + parser.error = yaml_READER_ERROR + parser.problem = problem + parser.problem_offset = offset + parser.problem_value = value + return false +} + +// Byte order marks. +const ( + bom_UTF8 = "\xef\xbb\xbf" + bom_UTF16LE = "\xff\xfe" + bom_UTF16BE = "\xfe\xff" +) + +// Determine the input stream encoding by checking the BOM symbol. If no BOM is +// found, the UTF-8 encoding is assumed. Return 1 on success, 0 on failure. +func yaml_parser_determine_encoding(parser *yaml_parser_t) bool { + // Ensure that we had enough bytes in the raw buffer. + for !parser.eof && len(parser.raw_buffer)-parser.raw_buffer_pos < 3 { + if !yaml_parser_update_raw_buffer(parser) { + return false + } + } + + // Determine the encoding. + buf := parser.raw_buffer + pos := parser.raw_buffer_pos + avail := len(buf) - pos + if avail >= 2 && buf[pos] == bom_UTF16LE[0] && buf[pos+1] == bom_UTF16LE[1] { + parser.encoding = yaml_UTF16LE_ENCODING + parser.raw_buffer_pos += 2 + parser.offset += 2 + } else if avail >= 2 && buf[pos] == bom_UTF16BE[0] && buf[pos+1] == bom_UTF16BE[1] { + parser.encoding = yaml_UTF16BE_ENCODING + parser.raw_buffer_pos += 2 + parser.offset += 2 + } else if avail >= 3 && buf[pos] == bom_UTF8[0] && buf[pos+1] == bom_UTF8[1] && buf[pos+2] == bom_UTF8[2] { + parser.encoding = yaml_UTF8_ENCODING + parser.raw_buffer_pos += 3 + parser.offset += 3 + } else { + parser.encoding = yaml_UTF8_ENCODING + } + return true +} + +// Update the raw buffer. +func yaml_parser_update_raw_buffer(parser *yaml_parser_t) bool { + size_read := 0 + + // Return if the raw buffer is full. + if parser.raw_buffer_pos == 0 && len(parser.raw_buffer) == cap(parser.raw_buffer) { + return true + } + + // Return on EOF. + if parser.eof { + return true + } + + // Move the remaining bytes in the raw buffer to the beginning. + if parser.raw_buffer_pos > 0 && parser.raw_buffer_pos < len(parser.raw_buffer) { + copy(parser.raw_buffer, parser.raw_buffer[parser.raw_buffer_pos:]) + } + parser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)-parser.raw_buffer_pos] + parser.raw_buffer_pos = 0 + + // Call the read handler to fill the buffer. + size_read, err := parser.read_handler(parser, parser.raw_buffer[len(parser.raw_buffer):cap(parser.raw_buffer)]) + parser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)+size_read] + if err == io.EOF { + parser.eof = true + } else if err != nil { + return yaml_parser_set_reader_error(parser, "input error: "+err.Error(), parser.offset, -1) + } + return true +} + +// Ensure that the buffer contains at least `length` characters. +// Return true on success, false on failure. +// +// The length is supposed to be significantly less that the buffer size. +func yaml_parser_update_buffer(parser *yaml_parser_t, length int) bool { + if parser.read_handler == nil { + panic("read handler must be set") + } + + // [Go] This function was changed to guarantee the requested length size at EOF. + // The fact we need to do this is pretty awful, but the description above implies + // for that to be the case, and there are tests + + // If the EOF flag is set and the raw buffer is empty, do nothing. + if parser.eof && parser.raw_buffer_pos == len(parser.raw_buffer) { + // [Go] ACTUALLY! Read the documentation of this function above. + // This is just broken. To return true, we need to have the + // given length in the buffer. Not doing that means every single + // check that calls this function to make sure the buffer has a + // given length is Go) panicking; or C) accessing invalid memory. + //return true + } + + // Return if the buffer contains enough characters. + if parser.unread >= length { + return true + } + + // Determine the input encoding if it is not known yet. + if parser.encoding == yaml_ANY_ENCODING { + if !yaml_parser_determine_encoding(parser) { + return false + } + } + + // Move the unread characters to the beginning of the buffer. + buffer_len := len(parser.buffer) + if parser.buffer_pos > 0 && parser.buffer_pos < buffer_len { + copy(parser.buffer, parser.buffer[parser.buffer_pos:]) + buffer_len -= parser.buffer_pos + parser.buffer_pos = 0 + } else if parser.buffer_pos == buffer_len { + buffer_len = 0 + parser.buffer_pos = 0 + } + + // Open the whole buffer for writing, and cut it before returning. + parser.buffer = parser.buffer[:cap(parser.buffer)] + + // Fill the buffer until it has enough characters. + first := true + for parser.unread < length { + + // Fill the raw buffer if necessary. + if !first || parser.raw_buffer_pos == len(parser.raw_buffer) { + if !yaml_parser_update_raw_buffer(parser) { + parser.buffer = parser.buffer[:buffer_len] + return false + } + } + first = false + + // Decode the raw buffer. + inner: + for parser.raw_buffer_pos != len(parser.raw_buffer) { + var value rune + var width int + + raw_unread := len(parser.raw_buffer) - parser.raw_buffer_pos + + // Decode the next character. + switch parser.encoding { + case yaml_UTF8_ENCODING: + // Decode a UTF-8 character. Check RFC 3629 + // (http://www.ietf.org/rfc/rfc3629.txt) for more details. + // + // The following table (taken from the RFC) is used for + // decoding. + // + // Char. number range | UTF-8 octet sequence + // (hexadecimal) | (binary) + // --------------------+------------------------------------ + // 0000 0000-0000 007F | 0xxxxxxx + // 0000 0080-0000 07FF | 110xxxxx 10xxxxxx + // 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx + // 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + // + // Additionally, the characters in the range 0xD800-0xDFFF + // are prohibited as they are reserved for use with UTF-16 + // surrogate pairs. + + // Determine the length of the UTF-8 sequence. + octet := parser.raw_buffer[parser.raw_buffer_pos] + switch { + case octet&0x80 == 0x00: + width = 1 + case octet&0xE0 == 0xC0: + width = 2 + case octet&0xF0 == 0xE0: + width = 3 + case octet&0xF8 == 0xF0: + width = 4 + default: + // The leading octet is invalid. + return yaml_parser_set_reader_error(parser, + "invalid leading UTF-8 octet", + parser.offset, int(octet)) + } + + // Check if the raw buffer contains an incomplete character. + if width > raw_unread { + if parser.eof { + return yaml_parser_set_reader_error(parser, + "incomplete UTF-8 octet sequence", + parser.offset, -1) + } + break inner + } + + // Decode the leading octet. + switch { + case octet&0x80 == 0x00: + value = rune(octet & 0x7F) + case octet&0xE0 == 0xC0: + value = rune(octet & 0x1F) + case octet&0xF0 == 0xE0: + value = rune(octet & 0x0F) + case octet&0xF8 == 0xF0: + value = rune(octet & 0x07) + default: + value = 0 + } + + // Check and decode the trailing octets. + for k := 1; k < width; k++ { + octet = parser.raw_buffer[parser.raw_buffer_pos+k] + + // Check if the octet is valid. + if (octet & 0xC0) != 0x80 { + return yaml_parser_set_reader_error(parser, + "invalid trailing UTF-8 octet", + parser.offset+k, int(octet)) + } + + // Decode the octet. + value = (value << 6) + rune(octet&0x3F) + } + + // Check the length of the sequence against the value. + switch { + case width == 1: + case width == 2 && value >= 0x80: + case width == 3 && value >= 0x800: + case width == 4 && value >= 0x10000: + default: + return yaml_parser_set_reader_error(parser, + "invalid length of a UTF-8 sequence", + parser.offset, -1) + } + + // Check the range of the value. + if value >= 0xD800 && value <= 0xDFFF || value > 0x10FFFF { + return yaml_parser_set_reader_error(parser, + "invalid Unicode character", + parser.offset, int(value)) + } + + case yaml_UTF16LE_ENCODING, yaml_UTF16BE_ENCODING: + var low, high int + if parser.encoding == yaml_UTF16LE_ENCODING { + low, high = 0, 1 + } else { + low, high = 1, 0 + } + + // The UTF-16 encoding is not as simple as one might + // naively think. Check RFC 2781 + // (http://www.ietf.org/rfc/rfc2781.txt). + // + // Normally, two subsequent bytes describe a Unicode + // character. However a special technique (called a + // surrogate pair) is used for specifying character + // values larger than 0xFFFF. + // + // A surrogate pair consists of two pseudo-characters: + // high surrogate area (0xD800-0xDBFF) + // low surrogate area (0xDC00-0xDFFF) + // + // The following formulas are used for decoding + // and encoding characters using surrogate pairs: + // + // U = U' + 0x10000 (0x01 00 00 <= U <= 0x10 FF FF) + // U' = yyyyyyyyyyxxxxxxxxxx (0 <= U' <= 0x0F FF FF) + // W1 = 110110yyyyyyyyyy + // W2 = 110111xxxxxxxxxx + // + // where U is the character value, W1 is the high surrogate + // area, W2 is the low surrogate area. + + // Check for incomplete UTF-16 character. + if raw_unread < 2 { + if parser.eof { + return yaml_parser_set_reader_error(parser, + "incomplete UTF-16 character", + parser.offset, -1) + } + break inner + } + + // Get the character. + value = rune(parser.raw_buffer[parser.raw_buffer_pos+low]) + + (rune(parser.raw_buffer[parser.raw_buffer_pos+high]) << 8) + + // Check for unexpected low surrogate area. + if value&0xFC00 == 0xDC00 { + return yaml_parser_set_reader_error(parser, + "unexpected low surrogate area", + parser.offset, int(value)) + } + + // Check for a high surrogate area. + if value&0xFC00 == 0xD800 { + width = 4 + + // Check for incomplete surrogate pair. + if raw_unread < 4 { + if parser.eof { + return yaml_parser_set_reader_error(parser, + "incomplete UTF-16 surrogate pair", + parser.offset, -1) + } + break inner + } + + // Get the next character. + value2 := rune(parser.raw_buffer[parser.raw_buffer_pos+low+2]) + + (rune(parser.raw_buffer[parser.raw_buffer_pos+high+2]) << 8) + + // Check for a low surrogate area. + if value2&0xFC00 != 0xDC00 { + return yaml_parser_set_reader_error(parser, + "expected low surrogate area", + parser.offset+2, int(value2)) + } + + // Generate the value of the surrogate pair. + value = 0x10000 + ((value & 0x3FF) << 10) + (value2 & 0x3FF) + } else { + width = 2 + } + + default: + panic("impossible") + } + + // Check if the character is in the allowed range: + // #x9 | #xA | #xD | [#x20-#x7E] (8 bit) + // | #x85 | [#xA0-#xD7FF] | [#xE000-#xFFFD] (16 bit) + // | [#x10000-#x10FFFF] (32 bit) + switch { + case value == 0x09: + case value == 0x0A: + case value == 0x0D: + case value >= 0x20 && value <= 0x7E: + case value == 0x85: + case value >= 0xA0 && value <= 0xD7FF: + case value >= 0xE000 && value <= 0xFFFD: + case value >= 0x10000 && value <= 0x10FFFF: + default: + return yaml_parser_set_reader_error(parser, + "control characters are not allowed", + parser.offset, int(value)) + } + + // Move the raw pointers. + parser.raw_buffer_pos += width + parser.offset += width + + // Finally put the character into the buffer. + if value <= 0x7F { + // 0000 0000-0000 007F . 0xxxxxxx + parser.buffer[buffer_len+0] = byte(value) + buffer_len += 1 + } else if value <= 0x7FF { + // 0000 0080-0000 07FF . 110xxxxx 10xxxxxx + parser.buffer[buffer_len+0] = byte(0xC0 + (value >> 6)) + parser.buffer[buffer_len+1] = byte(0x80 + (value & 0x3F)) + buffer_len += 2 + } else if value <= 0xFFFF { + // 0000 0800-0000 FFFF . 1110xxxx 10xxxxxx 10xxxxxx + parser.buffer[buffer_len+0] = byte(0xE0 + (value >> 12)) + parser.buffer[buffer_len+1] = byte(0x80 + ((value >> 6) & 0x3F)) + parser.buffer[buffer_len+2] = byte(0x80 + (value & 0x3F)) + buffer_len += 3 + } else { + // 0001 0000-0010 FFFF . 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + parser.buffer[buffer_len+0] = byte(0xF0 + (value >> 18)) + parser.buffer[buffer_len+1] = byte(0x80 + ((value >> 12) & 0x3F)) + parser.buffer[buffer_len+2] = byte(0x80 + ((value >> 6) & 0x3F)) + parser.buffer[buffer_len+3] = byte(0x80 + (value & 0x3F)) + buffer_len += 4 + } + + parser.unread++ + } + + // On EOF, put NUL into the buffer and return. + if parser.eof { + parser.buffer[buffer_len] = 0 + buffer_len++ + parser.unread++ + break + } + } + // [Go] Read the documentation of this function above. To return true, + // we need to have the given length in the buffer. Not doing that means + // every single check that calls this function to make sure the buffer + // has a given length is Go) panicking; or C) accessing invalid memory. + // This happens here due to the EOF above breaking early. + for buffer_len < length { + parser.buffer[buffer_len] = 0 + buffer_len++ + } + parser.buffer = parser.buffer[:buffer_len] + return true +} diff --git a/vendor/gopkg.in/yaml.v3/resolve.go b/vendor/gopkg.in/yaml.v3/resolve.go new file mode 100644 index 0000000000..64ae888057 --- /dev/null +++ b/vendor/gopkg.in/yaml.v3/resolve.go @@ -0,0 +1,326 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// +// 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 yaml + +import ( + "encoding/base64" + "math" + "regexp" + "strconv" + "strings" + "time" +) + +type resolveMapItem struct { + value interface{} + tag string +} + +var resolveTable = make([]byte, 256) +var resolveMap = make(map[string]resolveMapItem) + +func init() { + t := resolveTable + t[int('+')] = 'S' // Sign + t[int('-')] = 'S' + for _, c := range "0123456789" { + t[int(c)] = 'D' // Digit + } + for _, c := range "yYnNtTfFoO~" { + t[int(c)] = 'M' // In map + } + t[int('.')] = '.' // Float (potentially in map) + + var resolveMapList = []struct { + v interface{} + tag string + l []string + }{ + {true, boolTag, []string{"true", "True", "TRUE"}}, + {false, boolTag, []string{"false", "False", "FALSE"}}, + {nil, nullTag, []string{"", "~", "null", "Null", "NULL"}}, + {math.NaN(), floatTag, []string{".nan", ".NaN", ".NAN"}}, + {math.Inf(+1), floatTag, []string{".inf", ".Inf", ".INF"}}, + {math.Inf(+1), floatTag, []string{"+.inf", "+.Inf", "+.INF"}}, + {math.Inf(-1), floatTag, []string{"-.inf", "-.Inf", "-.INF"}}, + {"<<", mergeTag, []string{"<<"}}, + } + + m := resolveMap + for _, item := range resolveMapList { + for _, s := range item.l { + m[s] = resolveMapItem{item.v, item.tag} + } + } +} + +const ( + nullTag = "!!null" + boolTag = "!!bool" + strTag = "!!str" + intTag = "!!int" + floatTag = "!!float" + timestampTag = "!!timestamp" + seqTag = "!!seq" + mapTag = "!!map" + binaryTag = "!!binary" + mergeTag = "!!merge" +) + +var longTags = make(map[string]string) +var shortTags = make(map[string]string) + +func init() { + for _, stag := range []string{nullTag, boolTag, strTag, intTag, floatTag, timestampTag, seqTag, mapTag, binaryTag, mergeTag} { + ltag := longTag(stag) + longTags[stag] = ltag + shortTags[ltag] = stag + } +} + +const longTagPrefix = "tag:yaml.org,2002:" + +func shortTag(tag string) string { + if strings.HasPrefix(tag, longTagPrefix) { + if stag, ok := shortTags[tag]; ok { + return stag + } + return "!!" + tag[len(longTagPrefix):] + } + return tag +} + +func longTag(tag string) string { + if strings.HasPrefix(tag, "!!") { + if ltag, ok := longTags[tag]; ok { + return ltag + } + return longTagPrefix + tag[2:] + } + return tag +} + +func resolvableTag(tag string) bool { + switch tag { + case "", strTag, boolTag, intTag, floatTag, nullTag, timestampTag: + return true + } + return false +} + +var yamlStyleFloat = regexp.MustCompile(`^[-+]?(\.[0-9]+|[0-9]+(\.[0-9]*)?)([eE][-+]?[0-9]+)?$`) + +func resolve(tag string, in string) (rtag string, out interface{}) { + tag = shortTag(tag) + if !resolvableTag(tag) { + return tag, in + } + + defer func() { + switch tag { + case "", rtag, strTag, binaryTag: + return + case floatTag: + if rtag == intTag { + switch v := out.(type) { + case int64: + rtag = floatTag + out = float64(v) + return + case int: + rtag = floatTag + out = float64(v) + return + } + } + } + failf("cannot decode %s `%s` as a %s", shortTag(rtag), in, shortTag(tag)) + }() + + // Any data is accepted as a !!str or !!binary. + // Otherwise, the prefix is enough of a hint about what it might be. + hint := byte('N') + if in != "" { + hint = resolveTable[in[0]] + } + if hint != 0 && tag != strTag && tag != binaryTag { + // Handle things we can lookup in a map. + if item, ok := resolveMap[in]; ok { + return item.tag, item.value + } + + // Base 60 floats are a bad idea, were dropped in YAML 1.2, and + // are purposefully unsupported here. They're still quoted on + // the way out for compatibility with other parser, though. + + switch hint { + case 'M': + // We've already checked the map above. + + case '.': + // Not in the map, so maybe a normal float. + floatv, err := strconv.ParseFloat(in, 64) + if err == nil { + return floatTag, floatv + } + + case 'D', 'S': + // Int, float, or timestamp. + // Only try values as a timestamp if the value is unquoted or there's an explicit + // !!timestamp tag. + if tag == "" || tag == timestampTag { + t, ok := parseTimestamp(in) + if ok { + return timestampTag, t + } + } + + plain := strings.Replace(in, "_", "", -1) + intv, err := strconv.ParseInt(plain, 0, 64) + if err == nil { + if intv == int64(int(intv)) { + return intTag, int(intv) + } else { + return intTag, intv + } + } + uintv, err := strconv.ParseUint(plain, 0, 64) + if err == nil { + return intTag, uintv + } + if yamlStyleFloat.MatchString(plain) { + floatv, err := strconv.ParseFloat(plain, 64) + if err == nil { + return floatTag, floatv + } + } + if strings.HasPrefix(plain, "0b") { + intv, err := strconv.ParseInt(plain[2:], 2, 64) + if err == nil { + if intv == int64(int(intv)) { + return intTag, int(intv) + } else { + return intTag, intv + } + } + uintv, err := strconv.ParseUint(plain[2:], 2, 64) + if err == nil { + return intTag, uintv + } + } else if strings.HasPrefix(plain, "-0b") { + intv, err := strconv.ParseInt("-"+plain[3:], 2, 64) + if err == nil { + if true || intv == int64(int(intv)) { + return intTag, int(intv) + } else { + return intTag, intv + } + } + } + // Octals as introduced in version 1.2 of the spec. + // Octals from the 1.1 spec, spelled as 0777, are still + // decoded by default in v3 as well for compatibility. + // May be dropped in v4 depending on how usage evolves. + if strings.HasPrefix(plain, "0o") { + intv, err := strconv.ParseInt(plain[2:], 8, 64) + if err == nil { + if intv == int64(int(intv)) { + return intTag, int(intv) + } else { + return intTag, intv + } + } + uintv, err := strconv.ParseUint(plain[2:], 8, 64) + if err == nil { + return intTag, uintv + } + } else if strings.HasPrefix(plain, "-0o") { + intv, err := strconv.ParseInt("-"+plain[3:], 8, 64) + if err == nil { + if true || intv == int64(int(intv)) { + return intTag, int(intv) + } else { + return intTag, intv + } + } + } + default: + panic("internal error: missing handler for resolver table: " + string(rune(hint)) + " (with " + in + ")") + } + } + return strTag, in +} + +// encodeBase64 encodes s as base64 that is broken up into multiple lines +// as appropriate for the resulting length. +func encodeBase64(s string) string { + const lineLen = 70 + encLen := base64.StdEncoding.EncodedLen(len(s)) + lines := encLen/lineLen + 1 + buf := make([]byte, encLen*2+lines) + in := buf[0:encLen] + out := buf[encLen:] + base64.StdEncoding.Encode(in, []byte(s)) + k := 0 + for i := 0; i < len(in); i += lineLen { + j := i + lineLen + if j > len(in) { + j = len(in) + } + k += copy(out[k:], in[i:j]) + if lines > 1 { + out[k] = '\n' + k++ + } + } + return string(out[:k]) +} + +// This is a subset of the formats allowed by the regular expression +// defined at http://yaml.org/type/timestamp.html. +var allowedTimestampFormats = []string{ + "2006-1-2T15:4:5.999999999Z07:00", // RCF3339Nano with short date fields. + "2006-1-2t15:4:5.999999999Z07:00", // RFC3339Nano with short date fields and lower-case "t". + "2006-1-2 15:4:5.999999999", // space separated with no time zone + "2006-1-2", // date only + // Notable exception: time.Parse cannot handle: "2001-12-14 21:59:43.10 -5" + // from the set of examples. +} + +// parseTimestamp parses s as a timestamp string and +// returns the timestamp and reports whether it succeeded. +// Timestamp formats are defined at http://yaml.org/type/timestamp.html +func parseTimestamp(s string) (time.Time, bool) { + // TODO write code to check all the formats supported by + // http://yaml.org/type/timestamp.html instead of using time.Parse. + + // Quick check: all date formats start with YYYY-. + i := 0 + for ; i < len(s); i++ { + if c := s[i]; c < '0' || c > '9' { + break + } + } + if i != 4 || i == len(s) || s[i] != '-' { + return time.Time{}, false + } + for _, format := range allowedTimestampFormats { + if t, err := time.Parse(format, s); err == nil { + return t, true + } + } + return time.Time{}, false +} diff --git a/vendor/gopkg.in/yaml.v3/scannerc.go b/vendor/gopkg.in/yaml.v3/scannerc.go new file mode 100644 index 0000000000..ca0070108f --- /dev/null +++ b/vendor/gopkg.in/yaml.v3/scannerc.go @@ -0,0 +1,3038 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// Copyright (c) 2006-2010 Kirill Simonov +// +// 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. + +package yaml + +import ( + "bytes" + "fmt" +) + +// Introduction +// ************ +// +// The following notes assume that you are familiar with the YAML specification +// (http://yaml.org/spec/1.2/spec.html). We mostly follow it, although in +// some cases we are less restrictive that it requires. +// +// The process of transforming a YAML stream into a sequence of events is +// divided on two steps: Scanning and Parsing. +// +// The Scanner transforms the input stream into a sequence of tokens, while the +// parser transform the sequence of tokens produced by the Scanner into a +// sequence of parsing events. +// +// The Scanner is rather clever and complicated. The Parser, on the contrary, +// is a straightforward implementation of a recursive-descendant parser (or, +// LL(1) parser, as it is usually called). +// +// Actually there are two issues of Scanning that might be called "clever", the +// rest is quite straightforward. The issues are "block collection start" and +// "simple keys". Both issues are explained below in details. +// +// Here the Scanning step is explained and implemented. We start with the list +// of all the tokens produced by the Scanner together with short descriptions. +// +// Now, tokens: +// +// STREAM-START(encoding) # The stream start. +// STREAM-END # The stream end. +// VERSION-DIRECTIVE(major,minor) # The '%YAML' directive. +// TAG-DIRECTIVE(handle,prefix) # The '%TAG' directive. +// DOCUMENT-START # '---' +// DOCUMENT-END # '...' +// BLOCK-SEQUENCE-START # Indentation increase denoting a block +// BLOCK-MAPPING-START # sequence or a block mapping. +// BLOCK-END # Indentation decrease. +// FLOW-SEQUENCE-START # '[' +// FLOW-SEQUENCE-END # ']' +// BLOCK-SEQUENCE-START # '{' +// BLOCK-SEQUENCE-END # '}' +// BLOCK-ENTRY # '-' +// FLOW-ENTRY # ',' +// KEY # '?' or nothing (simple keys). +// VALUE # ':' +// ALIAS(anchor) # '*anchor' +// ANCHOR(anchor) # '&anchor' +// TAG(handle,suffix) # '!handle!suffix' +// SCALAR(value,style) # A scalar. +// +// The following two tokens are "virtual" tokens denoting the beginning and the +// end of the stream: +// +// STREAM-START(encoding) +// STREAM-END +// +// We pass the information about the input stream encoding with the +// STREAM-START token. +// +// The next two tokens are responsible for tags: +// +// VERSION-DIRECTIVE(major,minor) +// TAG-DIRECTIVE(handle,prefix) +// +// Example: +// +// %YAML 1.1 +// %TAG ! !foo +// %TAG !yaml! tag:yaml.org,2002: +// --- +// +// The correspoding sequence of tokens: +// +// STREAM-START(utf-8) +// VERSION-DIRECTIVE(1,1) +// TAG-DIRECTIVE("!","!foo") +// TAG-DIRECTIVE("!yaml","tag:yaml.org,2002:") +// DOCUMENT-START +// STREAM-END +// +// Note that the VERSION-DIRECTIVE and TAG-DIRECTIVE tokens occupy a whole +// line. +// +// The document start and end indicators are represented by: +// +// DOCUMENT-START +// DOCUMENT-END +// +// Note that if a YAML stream contains an implicit document (without '---' +// and '...' indicators), no DOCUMENT-START and DOCUMENT-END tokens will be +// produced. +// +// In the following examples, we present whole documents together with the +// produced tokens. +// +// 1. An implicit document: +// +// 'a scalar' +// +// Tokens: +// +// STREAM-START(utf-8) +// SCALAR("a scalar",single-quoted) +// STREAM-END +// +// 2. An explicit document: +// +// --- +// 'a scalar' +// ... +// +// Tokens: +// +// STREAM-START(utf-8) +// DOCUMENT-START +// SCALAR("a scalar",single-quoted) +// DOCUMENT-END +// STREAM-END +// +// 3. Several documents in a stream: +// +// 'a scalar' +// --- +// 'another scalar' +// --- +// 'yet another scalar' +// +// Tokens: +// +// STREAM-START(utf-8) +// SCALAR("a scalar",single-quoted) +// DOCUMENT-START +// SCALAR("another scalar",single-quoted) +// DOCUMENT-START +// SCALAR("yet another scalar",single-quoted) +// STREAM-END +// +// We have already introduced the SCALAR token above. The following tokens are +// used to describe aliases, anchors, tag, and scalars: +// +// ALIAS(anchor) +// ANCHOR(anchor) +// TAG(handle,suffix) +// SCALAR(value,style) +// +// The following series of examples illustrate the usage of these tokens: +// +// 1. A recursive sequence: +// +// &A [ *A ] +// +// Tokens: +// +// STREAM-START(utf-8) +// ANCHOR("A") +// FLOW-SEQUENCE-START +// ALIAS("A") +// FLOW-SEQUENCE-END +// STREAM-END +// +// 2. A tagged scalar: +// +// !!float "3.14" # A good approximation. +// +// Tokens: +// +// STREAM-START(utf-8) +// TAG("!!","float") +// SCALAR("3.14",double-quoted) +// STREAM-END +// +// 3. Various scalar styles: +// +// --- # Implicit empty plain scalars do not produce tokens. +// --- a plain scalar +// --- 'a single-quoted scalar' +// --- "a double-quoted scalar" +// --- |- +// a literal scalar +// --- >- +// a folded +// scalar +// +// Tokens: +// +// STREAM-START(utf-8) +// DOCUMENT-START +// DOCUMENT-START +// SCALAR("a plain scalar",plain) +// DOCUMENT-START +// SCALAR("a single-quoted scalar",single-quoted) +// DOCUMENT-START +// SCALAR("a double-quoted scalar",double-quoted) +// DOCUMENT-START +// SCALAR("a literal scalar",literal) +// DOCUMENT-START +// SCALAR("a folded scalar",folded) +// STREAM-END +// +// Now it's time to review collection-related tokens. We will start with +// flow collections: +// +// FLOW-SEQUENCE-START +// FLOW-SEQUENCE-END +// FLOW-MAPPING-START +// FLOW-MAPPING-END +// FLOW-ENTRY +// KEY +// VALUE +// +// The tokens FLOW-SEQUENCE-START, FLOW-SEQUENCE-END, FLOW-MAPPING-START, and +// FLOW-MAPPING-END represent the indicators '[', ']', '{', and '}' +// correspondingly. FLOW-ENTRY represent the ',' indicator. Finally the +// indicators '?' and ':', which are used for denoting mapping keys and values, +// are represented by the KEY and VALUE tokens. +// +// The following examples show flow collections: +// +// 1. A flow sequence: +// +// [item 1, item 2, item 3] +// +// Tokens: +// +// STREAM-START(utf-8) +// FLOW-SEQUENCE-START +// SCALAR("item 1",plain) +// FLOW-ENTRY +// SCALAR("item 2",plain) +// FLOW-ENTRY +// SCALAR("item 3",plain) +// FLOW-SEQUENCE-END +// STREAM-END +// +// 2. A flow mapping: +// +// { +// a simple key: a value, # Note that the KEY token is produced. +// ? a complex key: another value, +// } +// +// Tokens: +// +// STREAM-START(utf-8) +// FLOW-MAPPING-START +// KEY +// SCALAR("a simple key",plain) +// VALUE +// SCALAR("a value",plain) +// FLOW-ENTRY +// KEY +// SCALAR("a complex key",plain) +// VALUE +// SCALAR("another value",plain) +// FLOW-ENTRY +// FLOW-MAPPING-END +// STREAM-END +// +// A simple key is a key which is not denoted by the '?' indicator. Note that +// the Scanner still produce the KEY token whenever it encounters a simple key. +// +// For scanning block collections, the following tokens are used (note that we +// repeat KEY and VALUE here): +// +// BLOCK-SEQUENCE-START +// BLOCK-MAPPING-START +// BLOCK-END +// BLOCK-ENTRY +// KEY +// VALUE +// +// The tokens BLOCK-SEQUENCE-START and BLOCK-MAPPING-START denote indentation +// increase that precedes a block collection (cf. the INDENT token in Python). +// The token BLOCK-END denote indentation decrease that ends a block collection +// (cf. the DEDENT token in Python). However YAML has some syntax pecularities +// that makes detections of these tokens more complex. +// +// The tokens BLOCK-ENTRY, KEY, and VALUE are used to represent the indicators +// '-', '?', and ':' correspondingly. +// +// The following examples show how the tokens BLOCK-SEQUENCE-START, +// BLOCK-MAPPING-START, and BLOCK-END are emitted by the Scanner: +// +// 1. Block sequences: +// +// - item 1 +// - item 2 +// - +// - item 3.1 +// - item 3.2 +// - +// key 1: value 1 +// key 2: value 2 +// +// Tokens: +// +// STREAM-START(utf-8) +// BLOCK-SEQUENCE-START +// BLOCK-ENTRY +// SCALAR("item 1",plain) +// BLOCK-ENTRY +// SCALAR("item 2",plain) +// BLOCK-ENTRY +// BLOCK-SEQUENCE-START +// BLOCK-ENTRY +// SCALAR("item 3.1",plain) +// BLOCK-ENTRY +// SCALAR("item 3.2",plain) +// BLOCK-END +// BLOCK-ENTRY +// BLOCK-MAPPING-START +// KEY +// SCALAR("key 1",plain) +// VALUE +// SCALAR("value 1",plain) +// KEY +// SCALAR("key 2",plain) +// VALUE +// SCALAR("value 2",plain) +// BLOCK-END +// BLOCK-END +// STREAM-END +// +// 2. Block mappings: +// +// a simple key: a value # The KEY token is produced here. +// ? a complex key +// : another value +// a mapping: +// key 1: value 1 +// key 2: value 2 +// a sequence: +// - item 1 +// - item 2 +// +// Tokens: +// +// STREAM-START(utf-8) +// BLOCK-MAPPING-START +// KEY +// SCALAR("a simple key",plain) +// VALUE +// SCALAR("a value",plain) +// KEY +// SCALAR("a complex key",plain) +// VALUE +// SCALAR("another value",plain) +// KEY +// SCALAR("a mapping",plain) +// BLOCK-MAPPING-START +// KEY +// SCALAR("key 1",plain) +// VALUE +// SCALAR("value 1",plain) +// KEY +// SCALAR("key 2",plain) +// VALUE +// SCALAR("value 2",plain) +// BLOCK-END +// KEY +// SCALAR("a sequence",plain) +// VALUE +// BLOCK-SEQUENCE-START +// BLOCK-ENTRY +// SCALAR("item 1",plain) +// BLOCK-ENTRY +// SCALAR("item 2",plain) +// BLOCK-END +// BLOCK-END +// STREAM-END +// +// YAML does not always require to start a new block collection from a new +// line. If the current line contains only '-', '?', and ':' indicators, a new +// block collection may start at the current line. The following examples +// illustrate this case: +// +// 1. Collections in a sequence: +// +// - - item 1 +// - item 2 +// - key 1: value 1 +// key 2: value 2 +// - ? complex key +// : complex value +// +// Tokens: +// +// STREAM-START(utf-8) +// BLOCK-SEQUENCE-START +// BLOCK-ENTRY +// BLOCK-SEQUENCE-START +// BLOCK-ENTRY +// SCALAR("item 1",plain) +// BLOCK-ENTRY +// SCALAR("item 2",plain) +// BLOCK-END +// BLOCK-ENTRY +// BLOCK-MAPPING-START +// KEY +// SCALAR("key 1",plain) +// VALUE +// SCALAR("value 1",plain) +// KEY +// SCALAR("key 2",plain) +// VALUE +// SCALAR("value 2",plain) +// BLOCK-END +// BLOCK-ENTRY +// BLOCK-MAPPING-START +// KEY +// SCALAR("complex key") +// VALUE +// SCALAR("complex value") +// BLOCK-END +// BLOCK-END +// STREAM-END +// +// 2. Collections in a mapping: +// +// ? a sequence +// : - item 1 +// - item 2 +// ? a mapping +// : key 1: value 1 +// key 2: value 2 +// +// Tokens: +// +// STREAM-START(utf-8) +// BLOCK-MAPPING-START +// KEY +// SCALAR("a sequence",plain) +// VALUE +// BLOCK-SEQUENCE-START +// BLOCK-ENTRY +// SCALAR("item 1",plain) +// BLOCK-ENTRY +// SCALAR("item 2",plain) +// BLOCK-END +// KEY +// SCALAR("a mapping",plain) +// VALUE +// BLOCK-MAPPING-START +// KEY +// SCALAR("key 1",plain) +// VALUE +// SCALAR("value 1",plain) +// KEY +// SCALAR("key 2",plain) +// VALUE +// SCALAR("value 2",plain) +// BLOCK-END +// BLOCK-END +// STREAM-END +// +// YAML also permits non-indented sequences if they are included into a block +// mapping. In this case, the token BLOCK-SEQUENCE-START is not produced: +// +// key: +// - item 1 # BLOCK-SEQUENCE-START is NOT produced here. +// - item 2 +// +// Tokens: +// +// STREAM-START(utf-8) +// BLOCK-MAPPING-START +// KEY +// SCALAR("key",plain) +// VALUE +// BLOCK-ENTRY +// SCALAR("item 1",plain) +// BLOCK-ENTRY +// SCALAR("item 2",plain) +// BLOCK-END +// + +// Ensure that the buffer contains the required number of characters. +// Return true on success, false on failure (reader error or memory error). +func cache(parser *yaml_parser_t, length int) bool { + // [Go] This was inlined: !cache(A, B) -> unread < B && !update(A, B) + return parser.unread >= length || yaml_parser_update_buffer(parser, length) +} + +// Advance the buffer pointer. +func skip(parser *yaml_parser_t) { + if !is_blank(parser.buffer, parser.buffer_pos) { + parser.newlines = 0 + } + parser.mark.index++ + parser.mark.column++ + parser.unread-- + parser.buffer_pos += width(parser.buffer[parser.buffer_pos]) +} + +func skip_line(parser *yaml_parser_t) { + if is_crlf(parser.buffer, parser.buffer_pos) { + parser.mark.index += 2 + parser.mark.column = 0 + parser.mark.line++ + parser.unread -= 2 + parser.buffer_pos += 2 + parser.newlines++ + } else if is_break(parser.buffer, parser.buffer_pos) { + parser.mark.index++ + parser.mark.column = 0 + parser.mark.line++ + parser.unread-- + parser.buffer_pos += width(parser.buffer[parser.buffer_pos]) + parser.newlines++ + } +} + +// Copy a character to a string buffer and advance pointers. +func read(parser *yaml_parser_t, s []byte) []byte { + if !is_blank(parser.buffer, parser.buffer_pos) { + parser.newlines = 0 + } + w := width(parser.buffer[parser.buffer_pos]) + if w == 0 { + panic("invalid character sequence") + } + if len(s) == 0 { + s = make([]byte, 0, 32) + } + if w == 1 && len(s)+w <= cap(s) { + s = s[:len(s)+1] + s[len(s)-1] = parser.buffer[parser.buffer_pos] + parser.buffer_pos++ + } else { + s = append(s, parser.buffer[parser.buffer_pos:parser.buffer_pos+w]...) + parser.buffer_pos += w + } + parser.mark.index++ + parser.mark.column++ + parser.unread-- + return s +} + +// Copy a line break character to a string buffer and advance pointers. +func read_line(parser *yaml_parser_t, s []byte) []byte { + buf := parser.buffer + pos := parser.buffer_pos + switch { + case buf[pos] == '\r' && buf[pos+1] == '\n': + // CR LF . LF + s = append(s, '\n') + parser.buffer_pos += 2 + parser.mark.index++ + parser.unread-- + case buf[pos] == '\r' || buf[pos] == '\n': + // CR|LF . LF + s = append(s, '\n') + parser.buffer_pos += 1 + case buf[pos] == '\xC2' && buf[pos+1] == '\x85': + // NEL . LF + s = append(s, '\n') + parser.buffer_pos += 2 + case buf[pos] == '\xE2' && buf[pos+1] == '\x80' && (buf[pos+2] == '\xA8' || buf[pos+2] == '\xA9'): + // LS|PS . LS|PS + s = append(s, buf[parser.buffer_pos:pos+3]...) + parser.buffer_pos += 3 + default: + return s + } + parser.mark.index++ + parser.mark.column = 0 + parser.mark.line++ + parser.unread-- + parser.newlines++ + return s +} + +// Get the next token. +func yaml_parser_scan(parser *yaml_parser_t, token *yaml_token_t) bool { + // Erase the token object. + *token = yaml_token_t{} // [Go] Is this necessary? + + // No tokens after STREAM-END or error. + if parser.stream_end_produced || parser.error != yaml_NO_ERROR { + return true + } + + // Ensure that the tokens queue contains enough tokens. + if !parser.token_available { + if !yaml_parser_fetch_more_tokens(parser) { + return false + } + } + + // Fetch the next token from the queue. + *token = parser.tokens[parser.tokens_head] + parser.tokens_head++ + parser.tokens_parsed++ + parser.token_available = false + + if token.typ == yaml_STREAM_END_TOKEN { + parser.stream_end_produced = true + } + return true +} + +// Set the scanner error and return false. +func yaml_parser_set_scanner_error(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string) bool { + parser.error = yaml_SCANNER_ERROR + parser.context = context + parser.context_mark = context_mark + parser.problem = problem + parser.problem_mark = parser.mark + return false +} + +func yaml_parser_set_scanner_tag_error(parser *yaml_parser_t, directive bool, context_mark yaml_mark_t, problem string) bool { + context := "while parsing a tag" + if directive { + context = "while parsing a %TAG directive" + } + return yaml_parser_set_scanner_error(parser, context, context_mark, problem) +} + +func trace(args ...interface{}) func() { + pargs := append([]interface{}{"+++"}, args...) + fmt.Println(pargs...) + pargs = append([]interface{}{"---"}, args...) + return func() { fmt.Println(pargs...) } +} + +// Ensure that the tokens queue contains at least one token which can be +// returned to the Parser. +func yaml_parser_fetch_more_tokens(parser *yaml_parser_t) bool { + // While we need more tokens to fetch, do it. + for { + // [Go] The comment parsing logic requires a lookahead of two tokens + // so that foot comments may be parsed in time of associating them + // with the tokens that are parsed before them, and also for line + // comments to be transformed into head comments in some edge cases. + if parser.tokens_head < len(parser.tokens)-2 { + // If a potential simple key is at the head position, we need to fetch + // the next token to disambiguate it. + head_tok_idx, ok := parser.simple_keys_by_tok[parser.tokens_parsed] + if !ok { + break + } else if valid, ok := yaml_simple_key_is_valid(parser, &parser.simple_keys[head_tok_idx]); !ok { + return false + } else if !valid { + break + } + } + // Fetch the next token. + if !yaml_parser_fetch_next_token(parser) { + return false + } + } + + parser.token_available = true + return true +} + +// The dispatcher for token fetchers. +func yaml_parser_fetch_next_token(parser *yaml_parser_t) (ok bool) { + // Ensure that the buffer is initialized. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + // Check if we just started scanning. Fetch STREAM-START then. + if !parser.stream_start_produced { + return yaml_parser_fetch_stream_start(parser) + } + + scan_mark := parser.mark + + // Eat whitespaces and comments until we reach the next token. + if !yaml_parser_scan_to_next_token(parser) { + return false + } + + // [Go] While unrolling indents, transform the head comments of prior + // indentation levels observed after scan_start into foot comments at + // the respective indexes. + + // Check the indentation level against the current column. + if !yaml_parser_unroll_indent(parser, parser.mark.column, scan_mark) { + return false + } + + // Ensure that the buffer contains at least 4 characters. 4 is the length + // of the longest indicators ('--- ' and '... '). + if parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) { + return false + } + + // Is it the end of the stream? + if is_z(parser.buffer, parser.buffer_pos) { + return yaml_parser_fetch_stream_end(parser) + } + + // Is it a directive? + if parser.mark.column == 0 && parser.buffer[parser.buffer_pos] == '%' { + return yaml_parser_fetch_directive(parser) + } + + buf := parser.buffer + pos := parser.buffer_pos + + // Is it the document start indicator? + if parser.mark.column == 0 && buf[pos] == '-' && buf[pos+1] == '-' && buf[pos+2] == '-' && is_blankz(buf, pos+3) { + return yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_START_TOKEN) + } + + // Is it the document end indicator? + if parser.mark.column == 0 && buf[pos] == '.' && buf[pos+1] == '.' && buf[pos+2] == '.' && is_blankz(buf, pos+3) { + return yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_END_TOKEN) + } + + comment_mark := parser.mark + if len(parser.tokens) > 0 && (parser.flow_level == 0 && buf[pos] == ':' || parser.flow_level > 0 && buf[pos] == ',') { + // Associate any following comments with the prior token. + comment_mark = parser.tokens[len(parser.tokens)-1].start_mark + } + defer func() { + if !ok { + return + } + if len(parser.tokens) > 0 && parser.tokens[len(parser.tokens)-1].typ == yaml_BLOCK_ENTRY_TOKEN { + // Sequence indicators alone have no line comments. It becomes + // a head comment for whatever follows. + return + } + if !yaml_parser_scan_line_comment(parser, comment_mark) { + ok = false + return + } + }() + + // Is it the flow sequence start indicator? + if buf[pos] == '[' { + return yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_SEQUENCE_START_TOKEN) + } + + // Is it the flow mapping start indicator? + if parser.buffer[parser.buffer_pos] == '{' { + return yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_MAPPING_START_TOKEN) + } + + // Is it the flow sequence end indicator? + if parser.buffer[parser.buffer_pos] == ']' { + return yaml_parser_fetch_flow_collection_end(parser, + yaml_FLOW_SEQUENCE_END_TOKEN) + } + + // Is it the flow mapping end indicator? + if parser.buffer[parser.buffer_pos] == '}' { + return yaml_parser_fetch_flow_collection_end(parser, + yaml_FLOW_MAPPING_END_TOKEN) + } + + // Is it the flow entry indicator? + if parser.buffer[parser.buffer_pos] == ',' { + return yaml_parser_fetch_flow_entry(parser) + } + + // Is it the block entry indicator? + if parser.buffer[parser.buffer_pos] == '-' && is_blankz(parser.buffer, parser.buffer_pos+1) { + return yaml_parser_fetch_block_entry(parser) + } + + // Is it the key indicator? + if parser.buffer[parser.buffer_pos] == '?' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) { + return yaml_parser_fetch_key(parser) + } + + // Is it the value indicator? + if parser.buffer[parser.buffer_pos] == ':' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) { + return yaml_parser_fetch_value(parser) + } + + // Is it an alias? + if parser.buffer[parser.buffer_pos] == '*' { + return yaml_parser_fetch_anchor(parser, yaml_ALIAS_TOKEN) + } + + // Is it an anchor? + if parser.buffer[parser.buffer_pos] == '&' { + return yaml_parser_fetch_anchor(parser, yaml_ANCHOR_TOKEN) + } + + // Is it a tag? + if parser.buffer[parser.buffer_pos] == '!' { + return yaml_parser_fetch_tag(parser) + } + + // Is it a literal scalar? + if parser.buffer[parser.buffer_pos] == '|' && parser.flow_level == 0 { + return yaml_parser_fetch_block_scalar(parser, true) + } + + // Is it a folded scalar? + if parser.buffer[parser.buffer_pos] == '>' && parser.flow_level == 0 { + return yaml_parser_fetch_block_scalar(parser, false) + } + + // Is it a single-quoted scalar? + if parser.buffer[parser.buffer_pos] == '\'' { + return yaml_parser_fetch_flow_scalar(parser, true) + } + + // Is it a double-quoted scalar? + if parser.buffer[parser.buffer_pos] == '"' { + return yaml_parser_fetch_flow_scalar(parser, false) + } + + // Is it a plain scalar? + // + // A plain scalar may start with any non-blank characters except + // + // '-', '?', ':', ',', '[', ']', '{', '}', + // '#', '&', '*', '!', '|', '>', '\'', '\"', + // '%', '@', '`'. + // + // In the block context (and, for the '-' indicator, in the flow context + // too), it may also start with the characters + // + // '-', '?', ':' + // + // if it is followed by a non-space character. + // + // The last rule is more restrictive than the specification requires. + // [Go] TODO Make this logic more reasonable. + //switch parser.buffer[parser.buffer_pos] { + //case '-', '?', ':', ',', '?', '-', ',', ':', ']', '[', '}', '{', '&', '#', '!', '*', '>', '|', '"', '\'', '@', '%', '-', '`': + //} + if !(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '-' || + parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':' || + parser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '[' || + parser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' || + parser.buffer[parser.buffer_pos] == '}' || parser.buffer[parser.buffer_pos] == '#' || + parser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '*' || + parser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '|' || + parser.buffer[parser.buffer_pos] == '>' || parser.buffer[parser.buffer_pos] == '\'' || + parser.buffer[parser.buffer_pos] == '"' || parser.buffer[parser.buffer_pos] == '%' || + parser.buffer[parser.buffer_pos] == '@' || parser.buffer[parser.buffer_pos] == '`') || + (parser.buffer[parser.buffer_pos] == '-' && !is_blank(parser.buffer, parser.buffer_pos+1)) || + (parser.flow_level == 0 && + (parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':') && + !is_blankz(parser.buffer, parser.buffer_pos+1)) { + return yaml_parser_fetch_plain_scalar(parser) + } + + // If we don't determine the token type so far, it is an error. + return yaml_parser_set_scanner_error(parser, + "while scanning for the next token", parser.mark, + "found character that cannot start any token") +} + +func yaml_simple_key_is_valid(parser *yaml_parser_t, simple_key *yaml_simple_key_t) (valid, ok bool) { + if !simple_key.possible { + return false, true + } + + // The 1.2 specification says: + // + // "If the ? indicator is omitted, parsing needs to see past the + // implicit key to recognize it as such. To limit the amount of + // lookahead required, the “:” indicator must appear at most 1024 + // Unicode characters beyond the start of the key. In addition, the key + // is restricted to a single line." + // + if simple_key.mark.line < parser.mark.line || simple_key.mark.index+1024 < parser.mark.index { + // Check if the potential simple key to be removed is required. + if simple_key.required { + return false, yaml_parser_set_scanner_error(parser, + "while scanning a simple key", simple_key.mark, + "could not find expected ':'") + } + simple_key.possible = false + return false, true + } + return true, true +} + +// Check if a simple key may start at the current position and add it if +// needed. +func yaml_parser_save_simple_key(parser *yaml_parser_t) bool { + // A simple key is required at the current position if the scanner is in + // the block context and the current column coincides with the indentation + // level. + + required := parser.flow_level == 0 && parser.indent == parser.mark.column + + // + // If the current position may start a simple key, save it. + // + if parser.simple_key_allowed { + simple_key := yaml_simple_key_t{ + possible: true, + required: required, + token_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head), + mark: parser.mark, + } + + if !yaml_parser_remove_simple_key(parser) { + return false + } + parser.simple_keys[len(parser.simple_keys)-1] = simple_key + parser.simple_keys_by_tok[simple_key.token_number] = len(parser.simple_keys) - 1 + } + return true +} + +// Remove a potential simple key at the current flow level. +func yaml_parser_remove_simple_key(parser *yaml_parser_t) bool { + i := len(parser.simple_keys) - 1 + if parser.simple_keys[i].possible { + // If the key is required, it is an error. + if parser.simple_keys[i].required { + return yaml_parser_set_scanner_error(parser, + "while scanning a simple key", parser.simple_keys[i].mark, + "could not find expected ':'") + } + // Remove the key from the stack. + parser.simple_keys[i].possible = false + delete(parser.simple_keys_by_tok, parser.simple_keys[i].token_number) + } + return true +} + +// max_flow_level limits the flow_level +const max_flow_level = 10000 + +// Increase the flow level and resize the simple key list if needed. +func yaml_parser_increase_flow_level(parser *yaml_parser_t) bool { + // Reset the simple key on the next level. + parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{ + possible: false, + required: false, + token_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head), + mark: parser.mark, + }) + + // Increase the flow level. + parser.flow_level++ + if parser.flow_level > max_flow_level { + return yaml_parser_set_scanner_error(parser, + "while increasing flow level", parser.simple_keys[len(parser.simple_keys)-1].mark, + fmt.Sprintf("exceeded max depth of %d", max_flow_level)) + } + return true +} + +// Decrease the flow level. +func yaml_parser_decrease_flow_level(parser *yaml_parser_t) bool { + if parser.flow_level > 0 { + parser.flow_level-- + last := len(parser.simple_keys) - 1 + delete(parser.simple_keys_by_tok, parser.simple_keys[last].token_number) + parser.simple_keys = parser.simple_keys[:last] + } + return true +} + +// max_indents limits the indents stack size +const max_indents = 10000 + +// Push the current indentation level to the stack and set the new level +// the current column is greater than the indentation level. In this case, +// append or insert the specified token into the token queue. +func yaml_parser_roll_indent(parser *yaml_parser_t, column, number int, typ yaml_token_type_t, mark yaml_mark_t) bool { + // In the flow context, do nothing. + if parser.flow_level > 0 { + return true + } + + if parser.indent < column { + // Push the current indentation level to the stack and set the new + // indentation level. + parser.indents = append(parser.indents, parser.indent) + parser.indent = column + if len(parser.indents) > max_indents { + return yaml_parser_set_scanner_error(parser, + "while increasing indent level", parser.simple_keys[len(parser.simple_keys)-1].mark, + fmt.Sprintf("exceeded max depth of %d", max_indents)) + } + + // Create a token and insert it into the queue. + token := yaml_token_t{ + typ: typ, + start_mark: mark, + end_mark: mark, + } + if number > -1 { + number -= parser.tokens_parsed + } + yaml_insert_token(parser, number, &token) + } + return true +} + +// Pop indentation levels from the indents stack until the current level +// becomes less or equal to the column. For each indentation level, append +// the BLOCK-END token. +func yaml_parser_unroll_indent(parser *yaml_parser_t, column int, scan_mark yaml_mark_t) bool { + // In the flow context, do nothing. + if parser.flow_level > 0 { + return true + } + + block_mark := scan_mark + block_mark.index-- + + // Loop through the indentation levels in the stack. + for parser.indent > column { + + // [Go] Reposition the end token before potential following + // foot comments of parent blocks. For that, search + // backwards for recent comments that were at the same + // indent as the block that is ending now. + stop_index := block_mark.index + for i := len(parser.comments) - 1; i >= 0; i-- { + comment := &parser.comments[i] + + if comment.end_mark.index < stop_index { + // Don't go back beyond the start of the comment/whitespace scan, unless column < 0. + // If requested indent column is < 0, then the document is over and everything else + // is a foot anyway. + break + } + if comment.start_mark.column == parser.indent+1 { + // This is a good match. But maybe there's a former comment + // at that same indent level, so keep searching. + block_mark = comment.start_mark + } + + // While the end of the former comment matches with + // the start of the following one, we know there's + // nothing in between and scanning is still safe. + stop_index = comment.scan_mark.index + } + + // Create a token and append it to the queue. + token := yaml_token_t{ + typ: yaml_BLOCK_END_TOKEN, + start_mark: block_mark, + end_mark: block_mark, + } + yaml_insert_token(parser, -1, &token) + + // Pop the indentation level. + parser.indent = parser.indents[len(parser.indents)-1] + parser.indents = parser.indents[:len(parser.indents)-1] + } + return true +} + +// Initialize the scanner and produce the STREAM-START token. +func yaml_parser_fetch_stream_start(parser *yaml_parser_t) bool { + + // Set the initial indentation. + parser.indent = -1 + + // Initialize the simple key stack. + parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{}) + + parser.simple_keys_by_tok = make(map[int]int) + + // A simple key is allowed at the beginning of the stream. + parser.simple_key_allowed = true + + // We have started. + parser.stream_start_produced = true + + // Create the STREAM-START token and append it to the queue. + token := yaml_token_t{ + typ: yaml_STREAM_START_TOKEN, + start_mark: parser.mark, + end_mark: parser.mark, + encoding: parser.encoding, + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the STREAM-END token and shut down the scanner. +func yaml_parser_fetch_stream_end(parser *yaml_parser_t) bool { + + // Force new line. + if parser.mark.column != 0 { + parser.mark.column = 0 + parser.mark.line++ + } + + // Reset the indentation level. + if !yaml_parser_unroll_indent(parser, -1, parser.mark) { + return false + } + + // Reset simple keys. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + parser.simple_key_allowed = false + + // Create the STREAM-END token and append it to the queue. + token := yaml_token_t{ + typ: yaml_STREAM_END_TOKEN, + start_mark: parser.mark, + end_mark: parser.mark, + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce a VERSION-DIRECTIVE or TAG-DIRECTIVE token. +func yaml_parser_fetch_directive(parser *yaml_parser_t) bool { + // Reset the indentation level. + if !yaml_parser_unroll_indent(parser, -1, parser.mark) { + return false + } + + // Reset simple keys. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + parser.simple_key_allowed = false + + // Create the YAML-DIRECTIVE or TAG-DIRECTIVE token. + token := yaml_token_t{} + if !yaml_parser_scan_directive(parser, &token) { + return false + } + // Append the token to the queue. + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the DOCUMENT-START or DOCUMENT-END token. +func yaml_parser_fetch_document_indicator(parser *yaml_parser_t, typ yaml_token_type_t) bool { + // Reset the indentation level. + if !yaml_parser_unroll_indent(parser, -1, parser.mark) { + return false + } + + // Reset simple keys. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + parser.simple_key_allowed = false + + // Consume the token. + start_mark := parser.mark + + skip(parser) + skip(parser) + skip(parser) + + end_mark := parser.mark + + // Create the DOCUMENT-START or DOCUMENT-END token. + token := yaml_token_t{ + typ: typ, + start_mark: start_mark, + end_mark: end_mark, + } + // Append the token to the queue. + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the FLOW-SEQUENCE-START or FLOW-MAPPING-START token. +func yaml_parser_fetch_flow_collection_start(parser *yaml_parser_t, typ yaml_token_type_t) bool { + + // The indicators '[' and '{' may start a simple key. + if !yaml_parser_save_simple_key(parser) { + return false + } + + // Increase the flow level. + if !yaml_parser_increase_flow_level(parser) { + return false + } + + // A simple key may follow the indicators '[' and '{'. + parser.simple_key_allowed = true + + // Consume the token. + start_mark := parser.mark + skip(parser) + end_mark := parser.mark + + // Create the FLOW-SEQUENCE-START of FLOW-MAPPING-START token. + token := yaml_token_t{ + typ: typ, + start_mark: start_mark, + end_mark: end_mark, + } + // Append the token to the queue. + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the FLOW-SEQUENCE-END or FLOW-MAPPING-END token. +func yaml_parser_fetch_flow_collection_end(parser *yaml_parser_t, typ yaml_token_type_t) bool { + // Reset any potential simple key on the current flow level. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + // Decrease the flow level. + if !yaml_parser_decrease_flow_level(parser) { + return false + } + + // No simple keys after the indicators ']' and '}'. + parser.simple_key_allowed = false + + // Consume the token. + + start_mark := parser.mark + skip(parser) + end_mark := parser.mark + + // Create the FLOW-SEQUENCE-END of FLOW-MAPPING-END token. + token := yaml_token_t{ + typ: typ, + start_mark: start_mark, + end_mark: end_mark, + } + // Append the token to the queue. + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the FLOW-ENTRY token. +func yaml_parser_fetch_flow_entry(parser *yaml_parser_t) bool { + // Reset any potential simple keys on the current flow level. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + // Simple keys are allowed after ','. + parser.simple_key_allowed = true + + // Consume the token. + start_mark := parser.mark + skip(parser) + end_mark := parser.mark + + // Create the FLOW-ENTRY token and append it to the queue. + token := yaml_token_t{ + typ: yaml_FLOW_ENTRY_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the BLOCK-ENTRY token. +func yaml_parser_fetch_block_entry(parser *yaml_parser_t) bool { + // Check if the scanner is in the block context. + if parser.flow_level == 0 { + // Check if we are allowed to start a new entry. + if !parser.simple_key_allowed { + return yaml_parser_set_scanner_error(parser, "", parser.mark, + "block sequence entries are not allowed in this context") + } + // Add the BLOCK-SEQUENCE-START token if needed. + if !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_SEQUENCE_START_TOKEN, parser.mark) { + return false + } + } else { + // It is an error for the '-' indicator to occur in the flow context, + // but we let the Parser detect and report about it because the Parser + // is able to point to the context. + } + + // Reset any potential simple keys on the current flow level. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + // Simple keys are allowed after '-'. + parser.simple_key_allowed = true + + // Consume the token. + start_mark := parser.mark + skip(parser) + end_mark := parser.mark + + // Create the BLOCK-ENTRY token and append it to the queue. + token := yaml_token_t{ + typ: yaml_BLOCK_ENTRY_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the KEY token. +func yaml_parser_fetch_key(parser *yaml_parser_t) bool { + + // In the block context, additional checks are required. + if parser.flow_level == 0 { + // Check if we are allowed to start a new key (not nessesary simple). + if !parser.simple_key_allowed { + return yaml_parser_set_scanner_error(parser, "", parser.mark, + "mapping keys are not allowed in this context") + } + // Add the BLOCK-MAPPING-START token if needed. + if !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) { + return false + } + } + + // Reset any potential simple keys on the current flow level. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + // Simple keys are allowed after '?' in the block context. + parser.simple_key_allowed = parser.flow_level == 0 + + // Consume the token. + start_mark := parser.mark + skip(parser) + end_mark := parser.mark + + // Create the KEY token and append it to the queue. + token := yaml_token_t{ + typ: yaml_KEY_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the VALUE token. +func yaml_parser_fetch_value(parser *yaml_parser_t) bool { + + simple_key := &parser.simple_keys[len(parser.simple_keys)-1] + + // Have we found a simple key? + if valid, ok := yaml_simple_key_is_valid(parser, simple_key); !ok { + return false + + } else if valid { + + // Create the KEY token and insert it into the queue. + token := yaml_token_t{ + typ: yaml_KEY_TOKEN, + start_mark: simple_key.mark, + end_mark: simple_key.mark, + } + yaml_insert_token(parser, simple_key.token_number-parser.tokens_parsed, &token) + + // In the block context, we may need to add the BLOCK-MAPPING-START token. + if !yaml_parser_roll_indent(parser, simple_key.mark.column, + simple_key.token_number, + yaml_BLOCK_MAPPING_START_TOKEN, simple_key.mark) { + return false + } + + // Remove the simple key. + simple_key.possible = false + delete(parser.simple_keys_by_tok, simple_key.token_number) + + // A simple key cannot follow another simple key. + parser.simple_key_allowed = false + + } else { + // The ':' indicator follows a complex key. + + // In the block context, extra checks are required. + if parser.flow_level == 0 { + + // Check if we are allowed to start a complex value. + if !parser.simple_key_allowed { + return yaml_parser_set_scanner_error(parser, "", parser.mark, + "mapping values are not allowed in this context") + } + + // Add the BLOCK-MAPPING-START token if needed. + if !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) { + return false + } + } + + // Simple keys after ':' are allowed in the block context. + parser.simple_key_allowed = parser.flow_level == 0 + } + + // Consume the token. + start_mark := parser.mark + skip(parser) + end_mark := parser.mark + + // Create the VALUE token and append it to the queue. + token := yaml_token_t{ + typ: yaml_VALUE_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the ALIAS or ANCHOR token. +func yaml_parser_fetch_anchor(parser *yaml_parser_t, typ yaml_token_type_t) bool { + // An anchor or an alias could be a simple key. + if !yaml_parser_save_simple_key(parser) { + return false + } + + // A simple key cannot follow an anchor or an alias. + parser.simple_key_allowed = false + + // Create the ALIAS or ANCHOR token and append it to the queue. + var token yaml_token_t + if !yaml_parser_scan_anchor(parser, &token, typ) { + return false + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the TAG token. +func yaml_parser_fetch_tag(parser *yaml_parser_t) bool { + // A tag could be a simple key. + if !yaml_parser_save_simple_key(parser) { + return false + } + + // A simple key cannot follow a tag. + parser.simple_key_allowed = false + + // Create the TAG token and append it to the queue. + var token yaml_token_t + if !yaml_parser_scan_tag(parser, &token) { + return false + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the SCALAR(...,literal) or SCALAR(...,folded) tokens. +func yaml_parser_fetch_block_scalar(parser *yaml_parser_t, literal bool) bool { + // Remove any potential simple keys. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + // A simple key may follow a block scalar. + parser.simple_key_allowed = true + + // Create the SCALAR token and append it to the queue. + var token yaml_token_t + if !yaml_parser_scan_block_scalar(parser, &token, literal) { + return false + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the SCALAR(...,single-quoted) or SCALAR(...,double-quoted) tokens. +func yaml_parser_fetch_flow_scalar(parser *yaml_parser_t, single bool) bool { + // A plain scalar could be a simple key. + if !yaml_parser_save_simple_key(parser) { + return false + } + + // A simple key cannot follow a flow scalar. + parser.simple_key_allowed = false + + // Create the SCALAR token and append it to the queue. + var token yaml_token_t + if !yaml_parser_scan_flow_scalar(parser, &token, single) { + return false + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the SCALAR(...,plain) token. +func yaml_parser_fetch_plain_scalar(parser *yaml_parser_t) bool { + // A plain scalar could be a simple key. + if !yaml_parser_save_simple_key(parser) { + return false + } + + // A simple key cannot follow a flow scalar. + parser.simple_key_allowed = false + + // Create the SCALAR token and append it to the queue. + var token yaml_token_t + if !yaml_parser_scan_plain_scalar(parser, &token) { + return false + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Eat whitespaces and comments until the next token is found. +func yaml_parser_scan_to_next_token(parser *yaml_parser_t) bool { + + scan_mark := parser.mark + + // Until the next token is not found. + for { + // Allow the BOM mark to start a line. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if parser.mark.column == 0 && is_bom(parser.buffer, parser.buffer_pos) { + skip(parser) + } + + // Eat whitespaces. + // Tabs are allowed: + // - in the flow context + // - in the block context, but not at the beginning of the line or + // after '-', '?', or ':' (complex value). + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + for parser.buffer[parser.buffer_pos] == ' ' || ((parser.flow_level > 0 || !parser.simple_key_allowed) && parser.buffer[parser.buffer_pos] == '\t') { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Check if we just had a line comment under a sequence entry that + // looks more like a header to the following content. Similar to this: + // + // - # The comment + // - Some data + // + // If so, transform the line comment to a head comment and reposition. + if len(parser.comments) > 0 && len(parser.tokens) > 1 { + tokenA := parser.tokens[len(parser.tokens)-2] + tokenB := parser.tokens[len(parser.tokens)-1] + comment := &parser.comments[len(parser.comments)-1] + if tokenA.typ == yaml_BLOCK_SEQUENCE_START_TOKEN && tokenB.typ == yaml_BLOCK_ENTRY_TOKEN && len(comment.line) > 0 && !is_break(parser.buffer, parser.buffer_pos) { + // If it was in the prior line, reposition so it becomes a + // header of the follow up token. Otherwise, keep it in place + // so it becomes a header of the former. + comment.head = comment.line + comment.line = nil + if comment.start_mark.line == parser.mark.line-1 { + comment.token_mark = parser.mark + } + } + } + + // Eat a comment until a line break. + if parser.buffer[parser.buffer_pos] == '#' { + if !yaml_parser_scan_comments(parser, scan_mark) { + return false + } + } + + // If it is a line break, eat it. + if is_break(parser.buffer, parser.buffer_pos) { + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + skip_line(parser) + + // In the block context, a new line may start a simple key. + if parser.flow_level == 0 { + parser.simple_key_allowed = true + } + } else { + break // We have found a token. + } + } + + return true +} + +// Scan a YAML-DIRECTIVE or TAG-DIRECTIVE token. +// +// Scope: +// %YAML 1.1 # a comment \n +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +// %TAG !yaml! tag:yaml.org,2002: \n +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +// +func yaml_parser_scan_directive(parser *yaml_parser_t, token *yaml_token_t) bool { + // Eat '%'. + start_mark := parser.mark + skip(parser) + + // Scan the directive name. + var name []byte + if !yaml_parser_scan_directive_name(parser, start_mark, &name) { + return false + } + + // Is it a YAML directive? + if bytes.Equal(name, []byte("YAML")) { + // Scan the VERSION directive value. + var major, minor int8 + if !yaml_parser_scan_version_directive_value(parser, start_mark, &major, &minor) { + return false + } + end_mark := parser.mark + + // Create a VERSION-DIRECTIVE token. + *token = yaml_token_t{ + typ: yaml_VERSION_DIRECTIVE_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + major: major, + minor: minor, + } + + // Is it a TAG directive? + } else if bytes.Equal(name, []byte("TAG")) { + // Scan the TAG directive value. + var handle, prefix []byte + if !yaml_parser_scan_tag_directive_value(parser, start_mark, &handle, &prefix) { + return false + } + end_mark := parser.mark + + // Create a TAG-DIRECTIVE token. + *token = yaml_token_t{ + typ: yaml_TAG_DIRECTIVE_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + value: handle, + prefix: prefix, + } + + // Unknown directive. + } else { + yaml_parser_set_scanner_error(parser, "while scanning a directive", + start_mark, "found unknown directive name") + return false + } + + // Eat the rest of the line including any comments. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + for is_blank(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + if parser.buffer[parser.buffer_pos] == '#' { + // [Go] Discard this inline comment for the time being. + //if !yaml_parser_scan_line_comment(parser, start_mark) { + // return false + //} + for !is_breakz(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + } + + // Check if we are at the end of the line. + if !is_breakz(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a directive", + start_mark, "did not find expected comment or line break") + return false + } + + // Eat a line break. + if is_break(parser.buffer, parser.buffer_pos) { + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + skip_line(parser) + } + + return true +} + +// Scan the directive name. +// +// Scope: +// %YAML 1.1 # a comment \n +// ^^^^ +// %TAG !yaml! tag:yaml.org,2002: \n +// ^^^ +// +func yaml_parser_scan_directive_name(parser *yaml_parser_t, start_mark yaml_mark_t, name *[]byte) bool { + // Consume the directive name. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + var s []byte + for is_alpha(parser.buffer, parser.buffer_pos) { + s = read(parser, s) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Check if the name is empty. + if len(s) == 0 { + yaml_parser_set_scanner_error(parser, "while scanning a directive", + start_mark, "could not find expected directive name") + return false + } + + // Check for an blank character after the name. + if !is_blankz(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a directive", + start_mark, "found unexpected non-alphabetical character") + return false + } + *name = s + return true +} + +// Scan the value of VERSION-DIRECTIVE. +// +// Scope: +// %YAML 1.1 # a comment \n +// ^^^^^^ +func yaml_parser_scan_version_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, major, minor *int8) bool { + // Eat whitespaces. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + for is_blank(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Consume the major version number. + if !yaml_parser_scan_version_directive_number(parser, start_mark, major) { + return false + } + + // Eat '.'. + if parser.buffer[parser.buffer_pos] != '.' { + return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive", + start_mark, "did not find expected digit or '.' character") + } + + skip(parser) + + // Consume the minor version number. + if !yaml_parser_scan_version_directive_number(parser, start_mark, minor) { + return false + } + return true +} + +const max_number_length = 2 + +// Scan the version number of VERSION-DIRECTIVE. +// +// Scope: +// %YAML 1.1 # a comment \n +// ^ +// %YAML 1.1 # a comment \n +// ^ +func yaml_parser_scan_version_directive_number(parser *yaml_parser_t, start_mark yaml_mark_t, number *int8) bool { + + // Repeat while the next character is digit. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + var value, length int8 + for is_digit(parser.buffer, parser.buffer_pos) { + // Check if the number is too long. + length++ + if length > max_number_length { + return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive", + start_mark, "found extremely long version number") + } + value = value*10 + int8(as_digit(parser.buffer, parser.buffer_pos)) + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Check if the number was present. + if length == 0 { + return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive", + start_mark, "did not find expected version number") + } + *number = value + return true +} + +// Scan the value of a TAG-DIRECTIVE token. +// +// Scope: +// %TAG !yaml! tag:yaml.org,2002: \n +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +// +func yaml_parser_scan_tag_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, handle, prefix *[]byte) bool { + var handle_value, prefix_value []byte + + // Eat whitespaces. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + for is_blank(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Scan a handle. + if !yaml_parser_scan_tag_handle(parser, true, start_mark, &handle_value) { + return false + } + + // Expect a whitespace. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if !is_blank(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a %TAG directive", + start_mark, "did not find expected whitespace") + return false + } + + // Eat whitespaces. + for is_blank(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Scan a prefix. + if !yaml_parser_scan_tag_uri(parser, true, nil, start_mark, &prefix_value) { + return false + } + + // Expect a whitespace or line break. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if !is_blankz(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a %TAG directive", + start_mark, "did not find expected whitespace or line break") + return false + } + + *handle = handle_value + *prefix = prefix_value + return true +} + +func yaml_parser_scan_anchor(parser *yaml_parser_t, token *yaml_token_t, typ yaml_token_type_t) bool { + var s []byte + + // Eat the indicator character. + start_mark := parser.mark + skip(parser) + + // Consume the value. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + for is_alpha(parser.buffer, parser.buffer_pos) { + s = read(parser, s) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + end_mark := parser.mark + + /* + * Check if length of the anchor is greater than 0 and it is followed by + * a whitespace character or one of the indicators: + * + * '?', ':', ',', ']', '}', '%', '@', '`'. + */ + + if len(s) == 0 || + !(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '?' || + parser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == ',' || + parser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '}' || + parser.buffer[parser.buffer_pos] == '%' || parser.buffer[parser.buffer_pos] == '@' || + parser.buffer[parser.buffer_pos] == '`') { + context := "while scanning an alias" + if typ == yaml_ANCHOR_TOKEN { + context = "while scanning an anchor" + } + yaml_parser_set_scanner_error(parser, context, start_mark, + "did not find expected alphabetic or numeric character") + return false + } + + // Create a token. + *token = yaml_token_t{ + typ: typ, + start_mark: start_mark, + end_mark: end_mark, + value: s, + } + + return true +} + +/* + * Scan a TAG token. + */ + +func yaml_parser_scan_tag(parser *yaml_parser_t, token *yaml_token_t) bool { + var handle, suffix []byte + + start_mark := parser.mark + + // Check if the tag is in the canonical form. + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + + if parser.buffer[parser.buffer_pos+1] == '<' { + // Keep the handle as '' + + // Eat '!<' + skip(parser) + skip(parser) + + // Consume the tag value. + if !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) { + return false + } + + // Check for '>' and eat it. + if parser.buffer[parser.buffer_pos] != '>' { + yaml_parser_set_scanner_error(parser, "while scanning a tag", + start_mark, "did not find the expected '>'") + return false + } + + skip(parser) + } else { + // The tag has either the '!suffix' or the '!handle!suffix' form. + + // First, try to scan a handle. + if !yaml_parser_scan_tag_handle(parser, false, start_mark, &handle) { + return false + } + + // Check if it is, indeed, handle. + if handle[0] == '!' && len(handle) > 1 && handle[len(handle)-1] == '!' { + // Scan the suffix now. + if !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) { + return false + } + } else { + // It wasn't a handle after all. Scan the rest of the tag. + if !yaml_parser_scan_tag_uri(parser, false, handle, start_mark, &suffix) { + return false + } + + // Set the handle to '!'. + handle = []byte{'!'} + + // A special case: the '!' tag. Set the handle to '' and the + // suffix to '!'. + if len(suffix) == 0 { + handle, suffix = suffix, handle + } + } + } + + // Check the character which ends the tag. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if !is_blankz(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a tag", + start_mark, "did not find expected whitespace or line break") + return false + } + + end_mark := parser.mark + + // Create a token. + *token = yaml_token_t{ + typ: yaml_TAG_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + value: handle, + suffix: suffix, + } + return true +} + +// Scan a tag handle. +func yaml_parser_scan_tag_handle(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, handle *[]byte) bool { + // Check the initial '!' character. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if parser.buffer[parser.buffer_pos] != '!' { + yaml_parser_set_scanner_tag_error(parser, directive, + start_mark, "did not find expected '!'") + return false + } + + var s []byte + + // Copy the '!' character. + s = read(parser, s) + + // Copy all subsequent alphabetical and numerical characters. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + for is_alpha(parser.buffer, parser.buffer_pos) { + s = read(parser, s) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Check if the trailing character is '!' and copy it. + if parser.buffer[parser.buffer_pos] == '!' { + s = read(parser, s) + } else { + // It's either the '!' tag or not really a tag handle. If it's a %TAG + // directive, it's an error. If it's a tag token, it must be a part of URI. + if directive && string(s) != "!" { + yaml_parser_set_scanner_tag_error(parser, directive, + start_mark, "did not find expected '!'") + return false + } + } + + *handle = s + return true +} + +// Scan a tag. +func yaml_parser_scan_tag_uri(parser *yaml_parser_t, directive bool, head []byte, start_mark yaml_mark_t, uri *[]byte) bool { + //size_t length = head ? strlen((char *)head) : 0 + var s []byte + hasTag := len(head) > 0 + + // Copy the head if needed. + // + // Note that we don't copy the leading '!' character. + if len(head) > 1 { + s = append(s, head[1:]...) + } + + // Scan the tag. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + // The set of characters that may appear in URI is as follows: + // + // '0'-'9', 'A'-'Z', 'a'-'z', '_', '-', ';', '/', '?', ':', '@', '&', + // '=', '+', '$', ',', '.', '!', '~', '*', '\'', '(', ')', '[', ']', + // '%'. + // [Go] TODO Convert this into more reasonable logic. + for is_alpha(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == ';' || + parser.buffer[parser.buffer_pos] == '/' || parser.buffer[parser.buffer_pos] == '?' || + parser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == '@' || + parser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '=' || + parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '$' || + parser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '.' || + parser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '~' || + parser.buffer[parser.buffer_pos] == '*' || parser.buffer[parser.buffer_pos] == '\'' || + parser.buffer[parser.buffer_pos] == '(' || parser.buffer[parser.buffer_pos] == ')' || + parser.buffer[parser.buffer_pos] == '[' || parser.buffer[parser.buffer_pos] == ']' || + parser.buffer[parser.buffer_pos] == '%' { + // Check if it is a URI-escape sequence. + if parser.buffer[parser.buffer_pos] == '%' { + if !yaml_parser_scan_uri_escapes(parser, directive, start_mark, &s) { + return false + } + } else { + s = read(parser, s) + } + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + hasTag = true + } + + if !hasTag { + yaml_parser_set_scanner_tag_error(parser, directive, + start_mark, "did not find expected tag URI") + return false + } + *uri = s + return true +} + +// Decode an URI-escape sequence corresponding to a single UTF-8 character. +func yaml_parser_scan_uri_escapes(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, s *[]byte) bool { + + // Decode the required number of characters. + w := 1024 + for w > 0 { + // Check for a URI-escaped octet. + if parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) { + return false + } + + if !(parser.buffer[parser.buffer_pos] == '%' && + is_hex(parser.buffer, parser.buffer_pos+1) && + is_hex(parser.buffer, parser.buffer_pos+2)) { + return yaml_parser_set_scanner_tag_error(parser, directive, + start_mark, "did not find URI escaped octet") + } + + // Get the octet. + octet := byte((as_hex(parser.buffer, parser.buffer_pos+1) << 4) + as_hex(parser.buffer, parser.buffer_pos+2)) + + // If it is the leading octet, determine the length of the UTF-8 sequence. + if w == 1024 { + w = width(octet) + if w == 0 { + return yaml_parser_set_scanner_tag_error(parser, directive, + start_mark, "found an incorrect leading UTF-8 octet") + } + } else { + // Check if the trailing octet is correct. + if octet&0xC0 != 0x80 { + return yaml_parser_set_scanner_tag_error(parser, directive, + start_mark, "found an incorrect trailing UTF-8 octet") + } + } + + // Copy the octet and move the pointers. + *s = append(*s, octet) + skip(parser) + skip(parser) + skip(parser) + w-- + } + return true +} + +// Scan a block scalar. +func yaml_parser_scan_block_scalar(parser *yaml_parser_t, token *yaml_token_t, literal bool) bool { + // Eat the indicator '|' or '>'. + start_mark := parser.mark + skip(parser) + + // Scan the additional block scalar indicators. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + // Check for a chomping indicator. + var chomping, increment int + if parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' { + // Set the chomping method and eat the indicator. + if parser.buffer[parser.buffer_pos] == '+' { + chomping = +1 + } else { + chomping = -1 + } + skip(parser) + + // Check for an indentation indicator. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if is_digit(parser.buffer, parser.buffer_pos) { + // Check that the indentation is greater than 0. + if parser.buffer[parser.buffer_pos] == '0' { + yaml_parser_set_scanner_error(parser, "while scanning a block scalar", + start_mark, "found an indentation indicator equal to 0") + return false + } + + // Get the indentation level and eat the indicator. + increment = as_digit(parser.buffer, parser.buffer_pos) + skip(parser) + } + + } else if is_digit(parser.buffer, parser.buffer_pos) { + // Do the same as above, but in the opposite order. + + if parser.buffer[parser.buffer_pos] == '0' { + yaml_parser_set_scanner_error(parser, "while scanning a block scalar", + start_mark, "found an indentation indicator equal to 0") + return false + } + increment = as_digit(parser.buffer, parser.buffer_pos) + skip(parser) + + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' { + if parser.buffer[parser.buffer_pos] == '+' { + chomping = +1 + } else { + chomping = -1 + } + skip(parser) + } + } + + // Eat whitespaces and comments to the end of the line. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + for is_blank(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + if parser.buffer[parser.buffer_pos] == '#' { + if !yaml_parser_scan_line_comment(parser, start_mark) { + return false + } + for !is_breakz(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + } + + // Check if we are at the end of the line. + if !is_breakz(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a block scalar", + start_mark, "did not find expected comment or line break") + return false + } + + // Eat a line break. + if is_break(parser.buffer, parser.buffer_pos) { + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + skip_line(parser) + } + + end_mark := parser.mark + + // Set the indentation level if it was specified. + var indent int + if increment > 0 { + if parser.indent >= 0 { + indent = parser.indent + increment + } else { + indent = increment + } + } + + // Scan the leading line breaks and determine the indentation level if needed. + var s, leading_break, trailing_breaks []byte + if !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) { + return false + } + + // Scan the block scalar content. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + var leading_blank, trailing_blank bool + for parser.mark.column == indent && !is_z(parser.buffer, parser.buffer_pos) { + // We are at the beginning of a non-empty line. + + // Is it a trailing whitespace? + trailing_blank = is_blank(parser.buffer, parser.buffer_pos) + + // Check if we need to fold the leading line break. + if !literal && !leading_blank && !trailing_blank && len(leading_break) > 0 && leading_break[0] == '\n' { + // Do we need to join the lines by space? + if len(trailing_breaks) == 0 { + s = append(s, ' ') + } + } else { + s = append(s, leading_break...) + } + leading_break = leading_break[:0] + + // Append the remaining line breaks. + s = append(s, trailing_breaks...) + trailing_breaks = trailing_breaks[:0] + + // Is it a leading whitespace? + leading_blank = is_blank(parser.buffer, parser.buffer_pos) + + // Consume the current line. + for !is_breakz(parser.buffer, parser.buffer_pos) { + s = read(parser, s) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Consume the line break. + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + + leading_break = read_line(parser, leading_break) + + // Eat the following indentation spaces and line breaks. + if !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) { + return false + } + } + + // Chomp the tail. + if chomping != -1 { + s = append(s, leading_break...) + } + if chomping == 1 { + s = append(s, trailing_breaks...) + } + + // Create a token. + *token = yaml_token_t{ + typ: yaml_SCALAR_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + value: s, + style: yaml_LITERAL_SCALAR_STYLE, + } + if !literal { + token.style = yaml_FOLDED_SCALAR_STYLE + } + return true +} + +// Scan indentation spaces and line breaks for a block scalar. Determine the +// indentation level if needed. +func yaml_parser_scan_block_scalar_breaks(parser *yaml_parser_t, indent *int, breaks *[]byte, start_mark yaml_mark_t, end_mark *yaml_mark_t) bool { + *end_mark = parser.mark + + // Eat the indentation spaces and line breaks. + max_indent := 0 + for { + // Eat the indentation spaces. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + for (*indent == 0 || parser.mark.column < *indent) && is_space(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + if parser.mark.column > max_indent { + max_indent = parser.mark.column + } + + // Check for a tab character messing the indentation. + if (*indent == 0 || parser.mark.column < *indent) && is_tab(parser.buffer, parser.buffer_pos) { + return yaml_parser_set_scanner_error(parser, "while scanning a block scalar", + start_mark, "found a tab character where an indentation space is expected") + } + + // Have we found a non-empty line? + if !is_break(parser.buffer, parser.buffer_pos) { + break + } + + // Consume the line break. + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + // [Go] Should really be returning breaks instead. + *breaks = read_line(parser, *breaks) + *end_mark = parser.mark + } + + // Determine the indentation level if needed. + if *indent == 0 { + *indent = max_indent + if *indent < parser.indent+1 { + *indent = parser.indent + 1 + } + if *indent < 1 { + *indent = 1 + } + } + return true +} + +// Scan a quoted scalar. +func yaml_parser_scan_flow_scalar(parser *yaml_parser_t, token *yaml_token_t, single bool) bool { + // Eat the left quote. + start_mark := parser.mark + skip(parser) + + // Consume the content of the quoted scalar. + var s, leading_break, trailing_breaks, whitespaces []byte + for { + // Check that there are no document indicators at the beginning of the line. + if parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) { + return false + } + + if parser.mark.column == 0 && + ((parser.buffer[parser.buffer_pos+0] == '-' && + parser.buffer[parser.buffer_pos+1] == '-' && + parser.buffer[parser.buffer_pos+2] == '-') || + (parser.buffer[parser.buffer_pos+0] == '.' && + parser.buffer[parser.buffer_pos+1] == '.' && + parser.buffer[parser.buffer_pos+2] == '.')) && + is_blankz(parser.buffer, parser.buffer_pos+3) { + yaml_parser_set_scanner_error(parser, "while scanning a quoted scalar", + start_mark, "found unexpected document indicator") + return false + } + + // Check for EOF. + if is_z(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a quoted scalar", + start_mark, "found unexpected end of stream") + return false + } + + // Consume non-blank characters. + leading_blanks := false + for !is_blankz(parser.buffer, parser.buffer_pos) { + if single && parser.buffer[parser.buffer_pos] == '\'' && parser.buffer[parser.buffer_pos+1] == '\'' { + // Is is an escaped single quote. + s = append(s, '\'') + skip(parser) + skip(parser) + + } else if single && parser.buffer[parser.buffer_pos] == '\'' { + // It is a right single quote. + break + } else if !single && parser.buffer[parser.buffer_pos] == '"' { + // It is a right double quote. + break + + } else if !single && parser.buffer[parser.buffer_pos] == '\\' && is_break(parser.buffer, parser.buffer_pos+1) { + // It is an escaped line break. + if parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) { + return false + } + skip(parser) + skip_line(parser) + leading_blanks = true + break + + } else if !single && parser.buffer[parser.buffer_pos] == '\\' { + // It is an escape sequence. + code_length := 0 + + // Check the escape character. + switch parser.buffer[parser.buffer_pos+1] { + case '0': + s = append(s, 0) + case 'a': + s = append(s, '\x07') + case 'b': + s = append(s, '\x08') + case 't', '\t': + s = append(s, '\x09') + case 'n': + s = append(s, '\x0A') + case 'v': + s = append(s, '\x0B') + case 'f': + s = append(s, '\x0C') + case 'r': + s = append(s, '\x0D') + case 'e': + s = append(s, '\x1B') + case ' ': + s = append(s, '\x20') + case '"': + s = append(s, '"') + case '\'': + s = append(s, '\'') + case '\\': + s = append(s, '\\') + case 'N': // NEL (#x85) + s = append(s, '\xC2') + s = append(s, '\x85') + case '_': // #xA0 + s = append(s, '\xC2') + s = append(s, '\xA0') + case 'L': // LS (#x2028) + s = append(s, '\xE2') + s = append(s, '\x80') + s = append(s, '\xA8') + case 'P': // PS (#x2029) + s = append(s, '\xE2') + s = append(s, '\x80') + s = append(s, '\xA9') + case 'x': + code_length = 2 + case 'u': + code_length = 4 + case 'U': + code_length = 8 + default: + yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar", + start_mark, "found unknown escape character") + return false + } + + skip(parser) + skip(parser) + + // Consume an arbitrary escape code. + if code_length > 0 { + var value int + + // Scan the character value. + if parser.unread < code_length && !yaml_parser_update_buffer(parser, code_length) { + return false + } + for k := 0; k < code_length; k++ { + if !is_hex(parser.buffer, parser.buffer_pos+k) { + yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar", + start_mark, "did not find expected hexdecimal number") + return false + } + value = (value << 4) + as_hex(parser.buffer, parser.buffer_pos+k) + } + + // Check the value and write the character. + if (value >= 0xD800 && value <= 0xDFFF) || value > 0x10FFFF { + yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar", + start_mark, "found invalid Unicode character escape code") + return false + } + if value <= 0x7F { + s = append(s, byte(value)) + } else if value <= 0x7FF { + s = append(s, byte(0xC0+(value>>6))) + s = append(s, byte(0x80+(value&0x3F))) + } else if value <= 0xFFFF { + s = append(s, byte(0xE0+(value>>12))) + s = append(s, byte(0x80+((value>>6)&0x3F))) + s = append(s, byte(0x80+(value&0x3F))) + } else { + s = append(s, byte(0xF0+(value>>18))) + s = append(s, byte(0x80+((value>>12)&0x3F))) + s = append(s, byte(0x80+((value>>6)&0x3F))) + s = append(s, byte(0x80+(value&0x3F))) + } + + // Advance the pointer. + for k := 0; k < code_length; k++ { + skip(parser) + } + } + } else { + // It is a non-escaped non-blank character. + s = read(parser, s) + } + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + } + + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + // Check if we are at the end of the scalar. + if single { + if parser.buffer[parser.buffer_pos] == '\'' { + break + } + } else { + if parser.buffer[parser.buffer_pos] == '"' { + break + } + } + + // Consume blank characters. + for is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) { + if is_blank(parser.buffer, parser.buffer_pos) { + // Consume a space or a tab character. + if !leading_blanks { + whitespaces = read(parser, whitespaces) + } else { + skip(parser) + } + } else { + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + + // Check if it is a first line break. + if !leading_blanks { + whitespaces = whitespaces[:0] + leading_break = read_line(parser, leading_break) + leading_blanks = true + } else { + trailing_breaks = read_line(parser, trailing_breaks) + } + } + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Join the whitespaces or fold line breaks. + if leading_blanks { + // Do we need to fold line breaks? + if len(leading_break) > 0 && leading_break[0] == '\n' { + if len(trailing_breaks) == 0 { + s = append(s, ' ') + } else { + s = append(s, trailing_breaks...) + } + } else { + s = append(s, leading_break...) + s = append(s, trailing_breaks...) + } + trailing_breaks = trailing_breaks[:0] + leading_break = leading_break[:0] + } else { + s = append(s, whitespaces...) + whitespaces = whitespaces[:0] + } + } + + // Eat the right quote. + skip(parser) + end_mark := parser.mark + + // Create a token. + *token = yaml_token_t{ + typ: yaml_SCALAR_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + value: s, + style: yaml_SINGLE_QUOTED_SCALAR_STYLE, + } + if !single { + token.style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + return true +} + +// Scan a plain scalar. +func yaml_parser_scan_plain_scalar(parser *yaml_parser_t, token *yaml_token_t) bool { + + var s, leading_break, trailing_breaks, whitespaces []byte + var leading_blanks bool + var indent = parser.indent + 1 + + start_mark := parser.mark + end_mark := parser.mark + + // Consume the content of the plain scalar. + for { + // Check for a document indicator. + if parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) { + return false + } + if parser.mark.column == 0 && + ((parser.buffer[parser.buffer_pos+0] == '-' && + parser.buffer[parser.buffer_pos+1] == '-' && + parser.buffer[parser.buffer_pos+2] == '-') || + (parser.buffer[parser.buffer_pos+0] == '.' && + parser.buffer[parser.buffer_pos+1] == '.' && + parser.buffer[parser.buffer_pos+2] == '.')) && + is_blankz(parser.buffer, parser.buffer_pos+3) { + break + } + + // Check for a comment. + if parser.buffer[parser.buffer_pos] == '#' { + break + } + + // Consume non-blank characters. + for !is_blankz(parser.buffer, parser.buffer_pos) { + + // Check for indicators that may end a plain scalar. + if (parser.buffer[parser.buffer_pos] == ':' && is_blankz(parser.buffer, parser.buffer_pos+1)) || + (parser.flow_level > 0 && + (parser.buffer[parser.buffer_pos] == ',' || + parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == '[' || + parser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' || + parser.buffer[parser.buffer_pos] == '}')) { + break + } + + // Check if we need to join whitespaces and breaks. + if leading_blanks || len(whitespaces) > 0 { + if leading_blanks { + // Do we need to fold line breaks? + if leading_break[0] == '\n' { + if len(trailing_breaks) == 0 { + s = append(s, ' ') + } else { + s = append(s, trailing_breaks...) + } + } else { + s = append(s, leading_break...) + s = append(s, trailing_breaks...) + } + trailing_breaks = trailing_breaks[:0] + leading_break = leading_break[:0] + leading_blanks = false + } else { + s = append(s, whitespaces...) + whitespaces = whitespaces[:0] + } + } + + // Copy the character. + s = read(parser, s) + + end_mark = parser.mark + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + } + + // Is it the end? + if !(is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos)) { + break + } + + // Consume blank characters. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + for is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) { + if is_blank(parser.buffer, parser.buffer_pos) { + + // Check for tab characters that abuse indentation. + if leading_blanks && parser.mark.column < indent && is_tab(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a plain scalar", + start_mark, "found a tab character that violates indentation") + return false + } + + // Consume a space or a tab character. + if !leading_blanks { + whitespaces = read(parser, whitespaces) + } else { + skip(parser) + } + } else { + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + + // Check if it is a first line break. + if !leading_blanks { + whitespaces = whitespaces[:0] + leading_break = read_line(parser, leading_break) + leading_blanks = true + } else { + trailing_breaks = read_line(parser, trailing_breaks) + } + } + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Check indentation level. + if parser.flow_level == 0 && parser.mark.column < indent { + break + } + } + + // Create a token. + *token = yaml_token_t{ + typ: yaml_SCALAR_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + value: s, + style: yaml_PLAIN_SCALAR_STYLE, + } + + // Note that we change the 'simple_key_allowed' flag. + if leading_blanks { + parser.simple_key_allowed = true + } + return true +} + +func yaml_parser_scan_line_comment(parser *yaml_parser_t, token_mark yaml_mark_t) bool { + if parser.newlines > 0 { + return true + } + + var start_mark yaml_mark_t + var text []byte + + for peek := 0; peek < 512; peek++ { + if parser.unread < peek+1 && !yaml_parser_update_buffer(parser, peek+1) { + break + } + if is_blank(parser.buffer, parser.buffer_pos+peek) { + continue + } + if parser.buffer[parser.buffer_pos+peek] == '#' { + seen := parser.mark.index+peek + for { + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if is_breakz(parser.buffer, parser.buffer_pos) { + if parser.mark.index >= seen { + break + } + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + skip_line(parser) + } else if parser.mark.index >= seen { + if len(text) == 0 { + start_mark = parser.mark + } + text = read(parser, text) + } else { + skip(parser) + } + } + } + break + } + if len(text) > 0 { + parser.comments = append(parser.comments, yaml_comment_t{ + token_mark: token_mark, + start_mark: start_mark, + line: text, + }) + } + return true +} + +func yaml_parser_scan_comments(parser *yaml_parser_t, scan_mark yaml_mark_t) bool { + token := parser.tokens[len(parser.tokens)-1] + + if token.typ == yaml_FLOW_ENTRY_TOKEN && len(parser.tokens) > 1 { + token = parser.tokens[len(parser.tokens)-2] + } + + var token_mark = token.start_mark + var start_mark yaml_mark_t + var next_indent = parser.indent + if next_indent < 0 { + next_indent = 0 + } + + var recent_empty = false + var first_empty = parser.newlines <= 1 + + var line = parser.mark.line + var column = parser.mark.column + + var text []byte + + // The foot line is the place where a comment must start to + // still be considered as a foot of the prior content. + // If there's some content in the currently parsed line, then + // the foot is the line below it. + var foot_line = -1 + if scan_mark.line > 0 { + foot_line = parser.mark.line-parser.newlines+1 + if parser.newlines == 0 && parser.mark.column > 1 { + foot_line++ + } + } + + var peek = 0 + for ; peek < 512; peek++ { + if parser.unread < peek+1 && !yaml_parser_update_buffer(parser, peek+1) { + break + } + column++ + if is_blank(parser.buffer, parser.buffer_pos+peek) { + continue + } + c := parser.buffer[parser.buffer_pos+peek] + var close_flow = parser.flow_level > 0 && (c == ']' || c == '}') + if close_flow || is_breakz(parser.buffer, parser.buffer_pos+peek) { + // Got line break or terminator. + if close_flow || !recent_empty { + if close_flow || first_empty && (start_mark.line == foot_line && token.typ != yaml_VALUE_TOKEN || start_mark.column-1 < next_indent) { + // This is the first empty line and there were no empty lines before, + // so this initial part of the comment is a foot of the prior token + // instead of being a head for the following one. Split it up. + // Alternatively, this might also be the last comment inside a flow + // scope, so it must be a footer. + if len(text) > 0 { + if start_mark.column-1 < next_indent { + // If dedented it's unrelated to the prior token. + token_mark = start_mark + } + parser.comments = append(parser.comments, yaml_comment_t{ + scan_mark: scan_mark, + token_mark: token_mark, + start_mark: start_mark, + end_mark: yaml_mark_t{parser.mark.index + peek, line, column}, + foot: text, + }) + scan_mark = yaml_mark_t{parser.mark.index + peek, line, column} + token_mark = scan_mark + text = nil + } + } else { + if len(text) > 0 && parser.buffer[parser.buffer_pos+peek] != 0 { + text = append(text, '\n') + } + } + } + if !is_break(parser.buffer, parser.buffer_pos+peek) { + break + } + first_empty = false + recent_empty = true + column = 0 + line++ + continue + } + + if len(text) > 0 && (close_flow || column-1 < next_indent && column != start_mark.column) { + // The comment at the different indentation is a foot of the + // preceding data rather than a head of the upcoming one. + parser.comments = append(parser.comments, yaml_comment_t{ + scan_mark: scan_mark, + token_mark: token_mark, + start_mark: start_mark, + end_mark: yaml_mark_t{parser.mark.index + peek, line, column}, + foot: text, + }) + scan_mark = yaml_mark_t{parser.mark.index + peek, line, column} + token_mark = scan_mark + text = nil + } + + if parser.buffer[parser.buffer_pos+peek] != '#' { + break + } + + if len(text) == 0 { + start_mark = yaml_mark_t{parser.mark.index + peek, line, column} + } else { + text = append(text, '\n') + } + + recent_empty = false + + // Consume until after the consumed comment line. + seen := parser.mark.index+peek + for { + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if is_breakz(parser.buffer, parser.buffer_pos) { + if parser.mark.index >= seen { + break + } + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + skip_line(parser) + } else if parser.mark.index >= seen { + text = read(parser, text) + } else { + skip(parser) + } + } + + peek = 0 + column = 0 + line = parser.mark.line + next_indent = parser.indent + if next_indent < 0 { + next_indent = 0 + } + } + + if len(text) > 0 { + parser.comments = append(parser.comments, yaml_comment_t{ + scan_mark: scan_mark, + token_mark: start_mark, + start_mark: start_mark, + end_mark: yaml_mark_t{parser.mark.index + peek - 1, line, column}, + head: text, + }) + } + return true +} diff --git a/vendor/gopkg.in/yaml.v3/sorter.go b/vendor/gopkg.in/yaml.v3/sorter.go new file mode 100644 index 0000000000..9210ece7e9 --- /dev/null +++ b/vendor/gopkg.in/yaml.v3/sorter.go @@ -0,0 +1,134 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// +// 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 yaml + +import ( + "reflect" + "unicode" +) + +type keyList []reflect.Value + +func (l keyList) Len() int { return len(l) } +func (l keyList) Swap(i, j int) { l[i], l[j] = l[j], l[i] } +func (l keyList) Less(i, j int) bool { + a := l[i] + b := l[j] + ak := a.Kind() + bk := b.Kind() + for (ak == reflect.Interface || ak == reflect.Ptr) && !a.IsNil() { + a = a.Elem() + ak = a.Kind() + } + for (bk == reflect.Interface || bk == reflect.Ptr) && !b.IsNil() { + b = b.Elem() + bk = b.Kind() + } + af, aok := keyFloat(a) + bf, bok := keyFloat(b) + if aok && bok { + if af != bf { + return af < bf + } + if ak != bk { + return ak < bk + } + return numLess(a, b) + } + if ak != reflect.String || bk != reflect.String { + return ak < bk + } + ar, br := []rune(a.String()), []rune(b.String()) + digits := false + for i := 0; i < len(ar) && i < len(br); i++ { + if ar[i] == br[i] { + digits = unicode.IsDigit(ar[i]) + continue + } + al := unicode.IsLetter(ar[i]) + bl := unicode.IsLetter(br[i]) + if al && bl { + return ar[i] < br[i] + } + if al || bl { + if digits { + return al + } else { + return bl + } + } + var ai, bi int + var an, bn int64 + if ar[i] == '0' || br[i] == '0' { + for j := i - 1; j >= 0 && unicode.IsDigit(ar[j]); j-- { + if ar[j] != '0' { + an = 1 + bn = 1 + break + } + } + } + for ai = i; ai < len(ar) && unicode.IsDigit(ar[ai]); ai++ { + an = an*10 + int64(ar[ai]-'0') + } + for bi = i; bi < len(br) && unicode.IsDigit(br[bi]); bi++ { + bn = bn*10 + int64(br[bi]-'0') + } + if an != bn { + return an < bn + } + if ai != bi { + return ai < bi + } + return ar[i] < br[i] + } + return len(ar) < len(br) +} + +// keyFloat returns a float value for v if it is a number/bool +// and whether it is a number/bool or not. +func keyFloat(v reflect.Value) (f float64, ok bool) { + switch v.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return float64(v.Int()), true + case reflect.Float32, reflect.Float64: + return v.Float(), true + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return float64(v.Uint()), true + case reflect.Bool: + if v.Bool() { + return 1, true + } + return 0, true + } + return 0, false +} + +// numLess returns whether a < b. +// a and b must necessarily have the same kind. +func numLess(a, b reflect.Value) bool { + switch a.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return a.Int() < b.Int() + case reflect.Float32, reflect.Float64: + return a.Float() < b.Float() + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return a.Uint() < b.Uint() + case reflect.Bool: + return !a.Bool() && b.Bool() + } + panic("not a number") +} diff --git a/vendor/gopkg.in/yaml.v3/writerc.go b/vendor/gopkg.in/yaml.v3/writerc.go new file mode 100644 index 0000000000..b8a116bf9a --- /dev/null +++ b/vendor/gopkg.in/yaml.v3/writerc.go @@ -0,0 +1,48 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// Copyright (c) 2006-2010 Kirill Simonov +// +// 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. + +package yaml + +// Set the writer error and return false. +func yaml_emitter_set_writer_error(emitter *yaml_emitter_t, problem string) bool { + emitter.error = yaml_WRITER_ERROR + emitter.problem = problem + return false +} + +// Flush the output buffer. +func yaml_emitter_flush(emitter *yaml_emitter_t) bool { + if emitter.write_handler == nil { + panic("write handler not set") + } + + // Check if the buffer is empty. + if emitter.buffer_pos == 0 { + return true + } + + if err := emitter.write_handler(emitter, emitter.buffer[:emitter.buffer_pos]); err != nil { + return yaml_emitter_set_writer_error(emitter, "write error: "+err.Error()) + } + emitter.buffer_pos = 0 + return true +} diff --git a/vendor/gopkg.in/yaml.v3/yaml.go b/vendor/gopkg.in/yaml.v3/yaml.go new file mode 100644 index 0000000000..8cec6da48d --- /dev/null +++ b/vendor/gopkg.in/yaml.v3/yaml.go @@ -0,0 +1,698 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// +// 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 yaml implements YAML support for the Go language. +// +// Source code and other details for the project are available at GitHub: +// +// https://github.com/go-yaml/yaml +// +package yaml + +import ( + "errors" + "fmt" + "io" + "reflect" + "strings" + "sync" + "unicode/utf8" +) + +// The Unmarshaler interface may be implemented by types to customize their +// behavior when being unmarshaled from a YAML document. +type Unmarshaler interface { + UnmarshalYAML(value *Node) error +} + +type obsoleteUnmarshaler interface { + UnmarshalYAML(unmarshal func(interface{}) error) error +} + +// The Marshaler interface may be implemented by types to customize their +// behavior when being marshaled into a YAML document. The returned value +// is marshaled in place of the original value implementing Marshaler. +// +// If an error is returned by MarshalYAML, the marshaling procedure stops +// and returns with the provided error. +type Marshaler interface { + MarshalYAML() (interface{}, error) +} + +// Unmarshal decodes the first document found within the in byte slice +// and assigns decoded values into the out value. +// +// Maps and pointers (to a struct, string, int, etc) are accepted as out +// values. If an internal pointer within a struct is not initialized, +// the yaml package will initialize it if necessary for unmarshalling +// the provided data. The out parameter must not be nil. +// +// The type of the decoded values should be compatible with the respective +// values in out. If one or more values cannot be decoded due to a type +// mismatches, decoding continues partially until the end of the YAML +// content, and a *yaml.TypeError is returned with details for all +// missed values. +// +// Struct fields are only unmarshalled if they are exported (have an +// upper case first letter), and are unmarshalled using the field name +// lowercased as the default key. Custom keys may be defined via the +// "yaml" name in the field tag: the content preceding the first comma +// is used as the key, and the following comma-separated options are +// used to tweak the marshalling process (see Marshal). +// Conflicting names result in a runtime error. +// +// For example: +// +// type T struct { +// F int `yaml:"a,omitempty"` +// B int +// } +// var t T +// yaml.Unmarshal([]byte("a: 1\nb: 2"), &t) +// +// See the documentation of Marshal for the format of tags and a list of +// supported tag options. +// +func Unmarshal(in []byte, out interface{}) (err error) { + return unmarshal(in, out, false) +} + +// A Decoder reads and decodes YAML values from an input stream. +type Decoder struct { + parser *parser + knownFields bool +} + +// NewDecoder returns a new decoder that reads from r. +// +// The decoder introduces its own buffering and may read +// data from r beyond the YAML values requested. +func NewDecoder(r io.Reader) *Decoder { + return &Decoder{ + parser: newParserFromReader(r), + } +} + +// KnownFields ensures that the keys in decoded mappings to +// exist as fields in the struct being decoded into. +func (dec *Decoder) KnownFields(enable bool) { + dec.knownFields = enable +} + +// Decode reads the next YAML-encoded value from its input +// and stores it in the value pointed to by v. +// +// See the documentation for Unmarshal for details about the +// conversion of YAML into a Go value. +func (dec *Decoder) Decode(v interface{}) (err error) { + d := newDecoder() + d.knownFields = dec.knownFields + defer handleErr(&err) + node := dec.parser.parse() + if node == nil { + return io.EOF + } + out := reflect.ValueOf(v) + if out.Kind() == reflect.Ptr && !out.IsNil() { + out = out.Elem() + } + d.unmarshal(node, out) + if len(d.terrors) > 0 { + return &TypeError{d.terrors} + } + return nil +} + +// Decode decodes the node and stores its data into the value pointed to by v. +// +// See the documentation for Unmarshal for details about the +// conversion of YAML into a Go value. +func (n *Node) Decode(v interface{}) (err error) { + d := newDecoder() + defer handleErr(&err) + out := reflect.ValueOf(v) + if out.Kind() == reflect.Ptr && !out.IsNil() { + out = out.Elem() + } + d.unmarshal(n, out) + if len(d.terrors) > 0 { + return &TypeError{d.terrors} + } + return nil +} + +func unmarshal(in []byte, out interface{}, strict bool) (err error) { + defer handleErr(&err) + d := newDecoder() + p := newParser(in) + defer p.destroy() + node := p.parse() + if node != nil { + v := reflect.ValueOf(out) + if v.Kind() == reflect.Ptr && !v.IsNil() { + v = v.Elem() + } + d.unmarshal(node, v) + } + if len(d.terrors) > 0 { + return &TypeError{d.terrors} + } + return nil +} + +// Marshal serializes the value provided into a YAML document. The structure +// of the generated document will reflect the structure of the value itself. +// Maps and pointers (to struct, string, int, etc) are accepted as the in value. +// +// Struct fields are only marshalled if they are exported (have an upper case +// first letter), and are marshalled using the field name lowercased as the +// default key. Custom keys may be defined via the "yaml" name in the field +// tag: the content preceding the first comma is used as the key, and the +// following comma-separated options are used to tweak the marshalling process. +// Conflicting names result in a runtime error. +// +// The field tag format accepted is: +// +// `(...) yaml:"[][,[,]]" (...)` +// +// The following flags are currently supported: +// +// omitempty Only include the field if it's not set to the zero +// value for the type or to empty slices or maps. +// Zero valued structs will be omitted if all their public +// fields are zero, unless they implement an IsZero +// method (see the IsZeroer interface type), in which +// case the field will be excluded if IsZero returns true. +// +// flow Marshal using a flow style (useful for structs, +// sequences and maps). +// +// inline Inline the field, which must be a struct or a map, +// causing all of its fields or keys to be processed as if +// they were part of the outer struct. For maps, keys must +// not conflict with the yaml keys of other struct fields. +// +// In addition, if the key is "-", the field is ignored. +// +// For example: +// +// type T struct { +// F int `yaml:"a,omitempty"` +// B int +// } +// yaml.Marshal(&T{B: 2}) // Returns "b: 2\n" +// yaml.Marshal(&T{F: 1}} // Returns "a: 1\nb: 0\n" +// +func Marshal(in interface{}) (out []byte, err error) { + defer handleErr(&err) + e := newEncoder() + defer e.destroy() + e.marshalDoc("", reflect.ValueOf(in)) + e.finish() + out = e.out + return +} + +// An Encoder writes YAML values to an output stream. +type Encoder struct { + encoder *encoder +} + +// NewEncoder returns a new encoder that writes to w. +// The Encoder should be closed after use to flush all data +// to w. +func NewEncoder(w io.Writer) *Encoder { + return &Encoder{ + encoder: newEncoderWithWriter(w), + } +} + +// Encode writes the YAML encoding of v to the stream. +// If multiple items are encoded to the stream, the +// second and subsequent document will be preceded +// with a "---" document separator, but the first will not. +// +// See the documentation for Marshal for details about the conversion of Go +// values to YAML. +func (e *Encoder) Encode(v interface{}) (err error) { + defer handleErr(&err) + e.encoder.marshalDoc("", reflect.ValueOf(v)) + return nil +} + +// Encode encodes value v and stores its representation in n. +// +// See the documentation for Marshal for details about the +// conversion of Go values into YAML. +func (n *Node) Encode(v interface{}) (err error) { + defer handleErr(&err) + e := newEncoder() + defer e.destroy() + e.marshalDoc("", reflect.ValueOf(v)) + e.finish() + p := newParser(e.out) + p.textless = true + defer p.destroy() + doc := p.parse() + *n = *doc.Content[0] + return nil +} + +// SetIndent changes the used indentation used when encoding. +func (e *Encoder) SetIndent(spaces int) { + if spaces < 0 { + panic("yaml: cannot indent to a negative number of spaces") + } + e.encoder.indent = spaces +} + +// Close closes the encoder by writing any remaining data. +// It does not write a stream terminating string "...". +func (e *Encoder) Close() (err error) { + defer handleErr(&err) + e.encoder.finish() + return nil +} + +func handleErr(err *error) { + if v := recover(); v != nil { + if e, ok := v.(yamlError); ok { + *err = e.err + } else { + panic(v) + } + } +} + +type yamlError struct { + err error +} + +func fail(err error) { + panic(yamlError{err}) +} + +func failf(format string, args ...interface{}) { + panic(yamlError{fmt.Errorf("yaml: "+format, args...)}) +} + +// A TypeError is returned by Unmarshal when one or more fields in +// the YAML document cannot be properly decoded into the requested +// types. When this error is returned, the value is still +// unmarshaled partially. +type TypeError struct { + Errors []string +} + +func (e *TypeError) Error() string { + return fmt.Sprintf("yaml: unmarshal errors:\n %s", strings.Join(e.Errors, "\n ")) +} + +type Kind uint32 + +const ( + DocumentNode Kind = 1 << iota + SequenceNode + MappingNode + ScalarNode + AliasNode +) + +type Style uint32 + +const ( + TaggedStyle Style = 1 << iota + DoubleQuotedStyle + SingleQuotedStyle + LiteralStyle + FoldedStyle + FlowStyle +) + +// Node represents an element in the YAML document hierarchy. While documents +// are typically encoded and decoded into higher level types, such as structs +// and maps, Node is an intermediate representation that allows detailed +// control over the content being decoded or encoded. +// +// It's worth noting that although Node offers access into details such as +// line numbers, colums, and comments, the content when re-encoded will not +// have its original textual representation preserved. An effort is made to +// render the data plesantly, and to preserve comments near the data they +// describe, though. +// +// Values that make use of the Node type interact with the yaml package in the +// same way any other type would do, by encoding and decoding yaml data +// directly or indirectly into them. +// +// For example: +// +// var person struct { +// Name string +// Address yaml.Node +// } +// err := yaml.Unmarshal(data, &person) +// +// Or by itself: +// +// var person Node +// err := yaml.Unmarshal(data, &person) +// +type Node struct { + // Kind defines whether the node is a document, a mapping, a sequence, + // a scalar value, or an alias to another node. The specific data type of + // scalar nodes may be obtained via the ShortTag and LongTag methods. + Kind Kind + + // Style allows customizing the apperance of the node in the tree. + Style Style + + // Tag holds the YAML tag defining the data type for the value. + // When decoding, this field will always be set to the resolved tag, + // even when it wasn't explicitly provided in the YAML content. + // When encoding, if this field is unset the value type will be + // implied from the node properties, and if it is set, it will only + // be serialized into the representation if TaggedStyle is used or + // the implicit tag diverges from the provided one. + Tag string + + // Value holds the unescaped and unquoted represenation of the value. + Value string + + // Anchor holds the anchor name for this node, which allows aliases to point to it. + Anchor string + + // Alias holds the node that this alias points to. Only valid when Kind is AliasNode. + Alias *Node + + // Content holds contained nodes for documents, mappings, and sequences. + Content []*Node + + // HeadComment holds any comments in the lines preceding the node and + // not separated by an empty line. + HeadComment string + + // LineComment holds any comments at the end of the line where the node is in. + LineComment string + + // FootComment holds any comments following the node and before empty lines. + FootComment string + + // Line and Column hold the node position in the decoded YAML text. + // These fields are not respected when encoding the node. + Line int + Column int +} + +// IsZero returns whether the node has all of its fields unset. +func (n *Node) IsZero() bool { + return n.Kind == 0 && n.Style == 0 && n.Tag == "" && n.Value == "" && n.Anchor == "" && n.Alias == nil && n.Content == nil && + n.HeadComment == "" && n.LineComment == "" && n.FootComment == "" && n.Line == 0 && n.Column == 0 +} + + +// LongTag returns the long form of the tag that indicates the data type for +// the node. If the Tag field isn't explicitly defined, one will be computed +// based on the node properties. +func (n *Node) LongTag() string { + return longTag(n.ShortTag()) +} + +// ShortTag returns the short form of the YAML tag that indicates data type for +// the node. If the Tag field isn't explicitly defined, one will be computed +// based on the node properties. +func (n *Node) ShortTag() string { + if n.indicatedString() { + return strTag + } + if n.Tag == "" || n.Tag == "!" { + switch n.Kind { + case MappingNode: + return mapTag + case SequenceNode: + return seqTag + case AliasNode: + if n.Alias != nil { + return n.Alias.ShortTag() + } + case ScalarNode: + tag, _ := resolve("", n.Value) + return tag + case 0: + // Special case to make the zero value convenient. + if n.IsZero() { + return nullTag + } + } + return "" + } + return shortTag(n.Tag) +} + +func (n *Node) indicatedString() bool { + return n.Kind == ScalarNode && + (shortTag(n.Tag) == strTag || + (n.Tag == "" || n.Tag == "!") && n.Style&(SingleQuotedStyle|DoubleQuotedStyle|LiteralStyle|FoldedStyle) != 0) +} + +// SetString is a convenience function that sets the node to a string value +// and defines its style in a pleasant way depending on its content. +func (n *Node) SetString(s string) { + n.Kind = ScalarNode + if utf8.ValidString(s) { + n.Value = s + n.Tag = strTag + } else { + n.Value = encodeBase64(s) + n.Tag = binaryTag + } + if strings.Contains(n.Value, "\n") { + n.Style = LiteralStyle + } +} + +// -------------------------------------------------------------------------- +// Maintain a mapping of keys to structure field indexes + +// The code in this section was copied from mgo/bson. + +// structInfo holds details for the serialization of fields of +// a given struct. +type structInfo struct { + FieldsMap map[string]fieldInfo + FieldsList []fieldInfo + + // InlineMap is the number of the field in the struct that + // contains an ,inline map, or -1 if there's none. + InlineMap int + + // InlineUnmarshalers holds indexes to inlined fields that + // contain unmarshaler values. + InlineUnmarshalers [][]int +} + +type fieldInfo struct { + Key string + Num int + OmitEmpty bool + Flow bool + // Id holds the unique field identifier, so we can cheaply + // check for field duplicates without maintaining an extra map. + Id int + + // Inline holds the field index if the field is part of an inlined struct. + Inline []int +} + +var structMap = make(map[reflect.Type]*structInfo) +var fieldMapMutex sync.RWMutex +var unmarshalerType reflect.Type + +func init() { + var v Unmarshaler + unmarshalerType = reflect.ValueOf(&v).Elem().Type() +} + +func getStructInfo(st reflect.Type) (*structInfo, error) { + fieldMapMutex.RLock() + sinfo, found := structMap[st] + fieldMapMutex.RUnlock() + if found { + return sinfo, nil + } + + n := st.NumField() + fieldsMap := make(map[string]fieldInfo) + fieldsList := make([]fieldInfo, 0, n) + inlineMap := -1 + inlineUnmarshalers := [][]int(nil) + for i := 0; i != n; i++ { + field := st.Field(i) + if field.PkgPath != "" && !field.Anonymous { + continue // Private field + } + + info := fieldInfo{Num: i} + + tag := field.Tag.Get("yaml") + if tag == "" && strings.Index(string(field.Tag), ":") < 0 { + tag = string(field.Tag) + } + if tag == "-" { + continue + } + + inline := false + fields := strings.Split(tag, ",") + if len(fields) > 1 { + for _, flag := range fields[1:] { + switch flag { + case "omitempty": + info.OmitEmpty = true + case "flow": + info.Flow = true + case "inline": + inline = true + default: + return nil, errors.New(fmt.Sprintf("unsupported flag %q in tag %q of type %s", flag, tag, st)) + } + } + tag = fields[0] + } + + if inline { + switch field.Type.Kind() { + case reflect.Map: + if inlineMap >= 0 { + return nil, errors.New("multiple ,inline maps in struct " + st.String()) + } + if field.Type.Key() != reflect.TypeOf("") { + return nil, errors.New("option ,inline needs a map with string keys in struct " + st.String()) + } + inlineMap = info.Num + case reflect.Struct, reflect.Ptr: + ftype := field.Type + for ftype.Kind() == reflect.Ptr { + ftype = ftype.Elem() + } + if ftype.Kind() != reflect.Struct { + return nil, errors.New("option ,inline may only be used on a struct or map field") + } + if reflect.PtrTo(ftype).Implements(unmarshalerType) { + inlineUnmarshalers = append(inlineUnmarshalers, []int{i}) + } else { + sinfo, err := getStructInfo(ftype) + if err != nil { + return nil, err + } + for _, index := range sinfo.InlineUnmarshalers { + inlineUnmarshalers = append(inlineUnmarshalers, append([]int{i}, index...)) + } + for _, finfo := range sinfo.FieldsList { + if _, found := fieldsMap[finfo.Key]; found { + msg := "duplicated key '" + finfo.Key + "' in struct " + st.String() + return nil, errors.New(msg) + } + if finfo.Inline == nil { + finfo.Inline = []int{i, finfo.Num} + } else { + finfo.Inline = append([]int{i}, finfo.Inline...) + } + finfo.Id = len(fieldsList) + fieldsMap[finfo.Key] = finfo + fieldsList = append(fieldsList, finfo) + } + } + default: + return nil, errors.New("option ,inline may only be used on a struct or map field") + } + continue + } + + if tag != "" { + info.Key = tag + } else { + info.Key = strings.ToLower(field.Name) + } + + if _, found = fieldsMap[info.Key]; found { + msg := "duplicated key '" + info.Key + "' in struct " + st.String() + return nil, errors.New(msg) + } + + info.Id = len(fieldsList) + fieldsList = append(fieldsList, info) + fieldsMap[info.Key] = info + } + + sinfo = &structInfo{ + FieldsMap: fieldsMap, + FieldsList: fieldsList, + InlineMap: inlineMap, + InlineUnmarshalers: inlineUnmarshalers, + } + + fieldMapMutex.Lock() + structMap[st] = sinfo + fieldMapMutex.Unlock() + return sinfo, nil +} + +// IsZeroer is used to check whether an object is zero to +// determine whether it should be omitted when marshaling +// with the omitempty flag. One notable implementation +// is time.Time. +type IsZeroer interface { + IsZero() bool +} + +func isZero(v reflect.Value) bool { + kind := v.Kind() + if z, ok := v.Interface().(IsZeroer); ok { + if (kind == reflect.Ptr || kind == reflect.Interface) && v.IsNil() { + return true + } + return z.IsZero() + } + switch kind { + case reflect.String: + return len(v.String()) == 0 + case reflect.Interface, reflect.Ptr: + return v.IsNil() + case reflect.Slice: + return v.Len() == 0 + case reflect.Map: + return v.Len() == 0 + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return v.Int() == 0 + case reflect.Float32, reflect.Float64: + return v.Float() == 0 + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return v.Uint() == 0 + case reflect.Bool: + return !v.Bool() + case reflect.Struct: + vt := v.Type() + for i := v.NumField() - 1; i >= 0; i-- { + if vt.Field(i).PkgPath != "" { + continue // Private field + } + if !isZero(v.Field(i)) { + return false + } + } + return true + } + return false +} diff --git a/vendor/gopkg.in/yaml.v3/yamlh.go b/vendor/gopkg.in/yaml.v3/yamlh.go new file mode 100644 index 0000000000..7c6d007706 --- /dev/null +++ b/vendor/gopkg.in/yaml.v3/yamlh.go @@ -0,0 +1,807 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// Copyright (c) 2006-2010 Kirill Simonov +// +// 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. + +package yaml + +import ( + "fmt" + "io" +) + +// The version directive data. +type yaml_version_directive_t struct { + major int8 // The major version number. + minor int8 // The minor version number. +} + +// The tag directive data. +type yaml_tag_directive_t struct { + handle []byte // The tag handle. + prefix []byte // The tag prefix. +} + +type yaml_encoding_t int + +// The stream encoding. +const ( + // Let the parser choose the encoding. + yaml_ANY_ENCODING yaml_encoding_t = iota + + yaml_UTF8_ENCODING // The default UTF-8 encoding. + yaml_UTF16LE_ENCODING // The UTF-16-LE encoding with BOM. + yaml_UTF16BE_ENCODING // The UTF-16-BE encoding with BOM. +) + +type yaml_break_t int + +// Line break types. +const ( + // Let the parser choose the break type. + yaml_ANY_BREAK yaml_break_t = iota + + yaml_CR_BREAK // Use CR for line breaks (Mac style). + yaml_LN_BREAK // Use LN for line breaks (Unix style). + yaml_CRLN_BREAK // Use CR LN for line breaks (DOS style). +) + +type yaml_error_type_t int + +// Many bad things could happen with the parser and emitter. +const ( + // No error is produced. + yaml_NO_ERROR yaml_error_type_t = iota + + yaml_MEMORY_ERROR // Cannot allocate or reallocate a block of memory. + yaml_READER_ERROR // Cannot read or decode the input stream. + yaml_SCANNER_ERROR // Cannot scan the input stream. + yaml_PARSER_ERROR // Cannot parse the input stream. + yaml_COMPOSER_ERROR // Cannot compose a YAML document. + yaml_WRITER_ERROR // Cannot write to the output stream. + yaml_EMITTER_ERROR // Cannot emit a YAML stream. +) + +// The pointer position. +type yaml_mark_t struct { + index int // The position index. + line int // The position line. + column int // The position column. +} + +// Node Styles + +type yaml_style_t int8 + +type yaml_scalar_style_t yaml_style_t + +// Scalar styles. +const ( + // Let the emitter choose the style. + yaml_ANY_SCALAR_STYLE yaml_scalar_style_t = 0 + + yaml_PLAIN_SCALAR_STYLE yaml_scalar_style_t = 1 << iota // The plain scalar style. + yaml_SINGLE_QUOTED_SCALAR_STYLE // The single-quoted scalar style. + yaml_DOUBLE_QUOTED_SCALAR_STYLE // The double-quoted scalar style. + yaml_LITERAL_SCALAR_STYLE // The literal scalar style. + yaml_FOLDED_SCALAR_STYLE // The folded scalar style. +) + +type yaml_sequence_style_t yaml_style_t + +// Sequence styles. +const ( + // Let the emitter choose the style. + yaml_ANY_SEQUENCE_STYLE yaml_sequence_style_t = iota + + yaml_BLOCK_SEQUENCE_STYLE // The block sequence style. + yaml_FLOW_SEQUENCE_STYLE // The flow sequence style. +) + +type yaml_mapping_style_t yaml_style_t + +// Mapping styles. +const ( + // Let the emitter choose the style. + yaml_ANY_MAPPING_STYLE yaml_mapping_style_t = iota + + yaml_BLOCK_MAPPING_STYLE // The block mapping style. + yaml_FLOW_MAPPING_STYLE // The flow mapping style. +) + +// Tokens + +type yaml_token_type_t int + +// Token types. +const ( + // An empty token. + yaml_NO_TOKEN yaml_token_type_t = iota + + yaml_STREAM_START_TOKEN // A STREAM-START token. + yaml_STREAM_END_TOKEN // A STREAM-END token. + + yaml_VERSION_DIRECTIVE_TOKEN // A VERSION-DIRECTIVE token. + yaml_TAG_DIRECTIVE_TOKEN // A TAG-DIRECTIVE token. + yaml_DOCUMENT_START_TOKEN // A DOCUMENT-START token. + yaml_DOCUMENT_END_TOKEN // A DOCUMENT-END token. + + yaml_BLOCK_SEQUENCE_START_TOKEN // A BLOCK-SEQUENCE-START token. + yaml_BLOCK_MAPPING_START_TOKEN // A BLOCK-SEQUENCE-END token. + yaml_BLOCK_END_TOKEN // A BLOCK-END token. + + yaml_FLOW_SEQUENCE_START_TOKEN // A FLOW-SEQUENCE-START token. + yaml_FLOW_SEQUENCE_END_TOKEN // A FLOW-SEQUENCE-END token. + yaml_FLOW_MAPPING_START_TOKEN // A FLOW-MAPPING-START token. + yaml_FLOW_MAPPING_END_TOKEN // A FLOW-MAPPING-END token. + + yaml_BLOCK_ENTRY_TOKEN // A BLOCK-ENTRY token. + yaml_FLOW_ENTRY_TOKEN // A FLOW-ENTRY token. + yaml_KEY_TOKEN // A KEY token. + yaml_VALUE_TOKEN // A VALUE token. + + yaml_ALIAS_TOKEN // An ALIAS token. + yaml_ANCHOR_TOKEN // An ANCHOR token. + yaml_TAG_TOKEN // A TAG token. + yaml_SCALAR_TOKEN // A SCALAR token. +) + +func (tt yaml_token_type_t) String() string { + switch tt { + case yaml_NO_TOKEN: + return "yaml_NO_TOKEN" + case yaml_STREAM_START_TOKEN: + return "yaml_STREAM_START_TOKEN" + case yaml_STREAM_END_TOKEN: + return "yaml_STREAM_END_TOKEN" + case yaml_VERSION_DIRECTIVE_TOKEN: + return "yaml_VERSION_DIRECTIVE_TOKEN" + case yaml_TAG_DIRECTIVE_TOKEN: + return "yaml_TAG_DIRECTIVE_TOKEN" + case yaml_DOCUMENT_START_TOKEN: + return "yaml_DOCUMENT_START_TOKEN" + case yaml_DOCUMENT_END_TOKEN: + return "yaml_DOCUMENT_END_TOKEN" + case yaml_BLOCK_SEQUENCE_START_TOKEN: + return "yaml_BLOCK_SEQUENCE_START_TOKEN" + case yaml_BLOCK_MAPPING_START_TOKEN: + return "yaml_BLOCK_MAPPING_START_TOKEN" + case yaml_BLOCK_END_TOKEN: + return "yaml_BLOCK_END_TOKEN" + case yaml_FLOW_SEQUENCE_START_TOKEN: + return "yaml_FLOW_SEQUENCE_START_TOKEN" + case yaml_FLOW_SEQUENCE_END_TOKEN: + return "yaml_FLOW_SEQUENCE_END_TOKEN" + case yaml_FLOW_MAPPING_START_TOKEN: + return "yaml_FLOW_MAPPING_START_TOKEN" + case yaml_FLOW_MAPPING_END_TOKEN: + return "yaml_FLOW_MAPPING_END_TOKEN" + case yaml_BLOCK_ENTRY_TOKEN: + return "yaml_BLOCK_ENTRY_TOKEN" + case yaml_FLOW_ENTRY_TOKEN: + return "yaml_FLOW_ENTRY_TOKEN" + case yaml_KEY_TOKEN: + return "yaml_KEY_TOKEN" + case yaml_VALUE_TOKEN: + return "yaml_VALUE_TOKEN" + case yaml_ALIAS_TOKEN: + return "yaml_ALIAS_TOKEN" + case yaml_ANCHOR_TOKEN: + return "yaml_ANCHOR_TOKEN" + case yaml_TAG_TOKEN: + return "yaml_TAG_TOKEN" + case yaml_SCALAR_TOKEN: + return "yaml_SCALAR_TOKEN" + } + return "" +} + +// The token structure. +type yaml_token_t struct { + // The token type. + typ yaml_token_type_t + + // The start/end of the token. + start_mark, end_mark yaml_mark_t + + // The stream encoding (for yaml_STREAM_START_TOKEN). + encoding yaml_encoding_t + + // The alias/anchor/scalar value or tag/tag directive handle + // (for yaml_ALIAS_TOKEN, yaml_ANCHOR_TOKEN, yaml_SCALAR_TOKEN, yaml_TAG_TOKEN, yaml_TAG_DIRECTIVE_TOKEN). + value []byte + + // The tag suffix (for yaml_TAG_TOKEN). + suffix []byte + + // The tag directive prefix (for yaml_TAG_DIRECTIVE_TOKEN). + prefix []byte + + // The scalar style (for yaml_SCALAR_TOKEN). + style yaml_scalar_style_t + + // The version directive major/minor (for yaml_VERSION_DIRECTIVE_TOKEN). + major, minor int8 +} + +// Events + +type yaml_event_type_t int8 + +// Event types. +const ( + // An empty event. + yaml_NO_EVENT yaml_event_type_t = iota + + yaml_STREAM_START_EVENT // A STREAM-START event. + yaml_STREAM_END_EVENT // A STREAM-END event. + yaml_DOCUMENT_START_EVENT // A DOCUMENT-START event. + yaml_DOCUMENT_END_EVENT // A DOCUMENT-END event. + yaml_ALIAS_EVENT // An ALIAS event. + yaml_SCALAR_EVENT // A SCALAR event. + yaml_SEQUENCE_START_EVENT // A SEQUENCE-START event. + yaml_SEQUENCE_END_EVENT // A SEQUENCE-END event. + yaml_MAPPING_START_EVENT // A MAPPING-START event. + yaml_MAPPING_END_EVENT // A MAPPING-END event. + yaml_TAIL_COMMENT_EVENT +) + +var eventStrings = []string{ + yaml_NO_EVENT: "none", + yaml_STREAM_START_EVENT: "stream start", + yaml_STREAM_END_EVENT: "stream end", + yaml_DOCUMENT_START_EVENT: "document start", + yaml_DOCUMENT_END_EVENT: "document end", + yaml_ALIAS_EVENT: "alias", + yaml_SCALAR_EVENT: "scalar", + yaml_SEQUENCE_START_EVENT: "sequence start", + yaml_SEQUENCE_END_EVENT: "sequence end", + yaml_MAPPING_START_EVENT: "mapping start", + yaml_MAPPING_END_EVENT: "mapping end", + yaml_TAIL_COMMENT_EVENT: "tail comment", +} + +func (e yaml_event_type_t) String() string { + if e < 0 || int(e) >= len(eventStrings) { + return fmt.Sprintf("unknown event %d", e) + } + return eventStrings[e] +} + +// The event structure. +type yaml_event_t struct { + + // The event type. + typ yaml_event_type_t + + // The start and end of the event. + start_mark, end_mark yaml_mark_t + + // The document encoding (for yaml_STREAM_START_EVENT). + encoding yaml_encoding_t + + // The version directive (for yaml_DOCUMENT_START_EVENT). + version_directive *yaml_version_directive_t + + // The list of tag directives (for yaml_DOCUMENT_START_EVENT). + tag_directives []yaml_tag_directive_t + + // The comments + head_comment []byte + line_comment []byte + foot_comment []byte + tail_comment []byte + + // The anchor (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_ALIAS_EVENT). + anchor []byte + + // The tag (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT). + tag []byte + + // The scalar value (for yaml_SCALAR_EVENT). + value []byte + + // Is the document start/end indicator implicit, or the tag optional? + // (for yaml_DOCUMENT_START_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_SCALAR_EVENT). + implicit bool + + // Is the tag optional for any non-plain style? (for yaml_SCALAR_EVENT). + quoted_implicit bool + + // The style (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT). + style yaml_style_t +} + +func (e *yaml_event_t) scalar_style() yaml_scalar_style_t { return yaml_scalar_style_t(e.style) } +func (e *yaml_event_t) sequence_style() yaml_sequence_style_t { return yaml_sequence_style_t(e.style) } +func (e *yaml_event_t) mapping_style() yaml_mapping_style_t { return yaml_mapping_style_t(e.style) } + +// Nodes + +const ( + yaml_NULL_TAG = "tag:yaml.org,2002:null" // The tag !!null with the only possible value: null. + yaml_BOOL_TAG = "tag:yaml.org,2002:bool" // The tag !!bool with the values: true and false. + yaml_STR_TAG = "tag:yaml.org,2002:str" // The tag !!str for string values. + yaml_INT_TAG = "tag:yaml.org,2002:int" // The tag !!int for integer values. + yaml_FLOAT_TAG = "tag:yaml.org,2002:float" // The tag !!float for float values. + yaml_TIMESTAMP_TAG = "tag:yaml.org,2002:timestamp" // The tag !!timestamp for date and time values. + + yaml_SEQ_TAG = "tag:yaml.org,2002:seq" // The tag !!seq is used to denote sequences. + yaml_MAP_TAG = "tag:yaml.org,2002:map" // The tag !!map is used to denote mapping. + + // Not in original libyaml. + yaml_BINARY_TAG = "tag:yaml.org,2002:binary" + yaml_MERGE_TAG = "tag:yaml.org,2002:merge" + + yaml_DEFAULT_SCALAR_TAG = yaml_STR_TAG // The default scalar tag is !!str. + yaml_DEFAULT_SEQUENCE_TAG = yaml_SEQ_TAG // The default sequence tag is !!seq. + yaml_DEFAULT_MAPPING_TAG = yaml_MAP_TAG // The default mapping tag is !!map. +) + +type yaml_node_type_t int + +// Node types. +const ( + // An empty node. + yaml_NO_NODE yaml_node_type_t = iota + + yaml_SCALAR_NODE // A scalar node. + yaml_SEQUENCE_NODE // A sequence node. + yaml_MAPPING_NODE // A mapping node. +) + +// An element of a sequence node. +type yaml_node_item_t int + +// An element of a mapping node. +type yaml_node_pair_t struct { + key int // The key of the element. + value int // The value of the element. +} + +// The node structure. +type yaml_node_t struct { + typ yaml_node_type_t // The node type. + tag []byte // The node tag. + + // The node data. + + // The scalar parameters (for yaml_SCALAR_NODE). + scalar struct { + value []byte // The scalar value. + length int // The length of the scalar value. + style yaml_scalar_style_t // The scalar style. + } + + // The sequence parameters (for YAML_SEQUENCE_NODE). + sequence struct { + items_data []yaml_node_item_t // The stack of sequence items. + style yaml_sequence_style_t // The sequence style. + } + + // The mapping parameters (for yaml_MAPPING_NODE). + mapping struct { + pairs_data []yaml_node_pair_t // The stack of mapping pairs (key, value). + pairs_start *yaml_node_pair_t // The beginning of the stack. + pairs_end *yaml_node_pair_t // The end of the stack. + pairs_top *yaml_node_pair_t // The top of the stack. + style yaml_mapping_style_t // The mapping style. + } + + start_mark yaml_mark_t // The beginning of the node. + end_mark yaml_mark_t // The end of the node. + +} + +// The document structure. +type yaml_document_t struct { + + // The document nodes. + nodes []yaml_node_t + + // The version directive. + version_directive *yaml_version_directive_t + + // The list of tag directives. + tag_directives_data []yaml_tag_directive_t + tag_directives_start int // The beginning of the tag directives list. + tag_directives_end int // The end of the tag directives list. + + start_implicit int // Is the document start indicator implicit? + end_implicit int // Is the document end indicator implicit? + + // The start/end of the document. + start_mark, end_mark yaml_mark_t +} + +// The prototype of a read handler. +// +// The read handler is called when the parser needs to read more bytes from the +// source. The handler should write not more than size bytes to the buffer. +// The number of written bytes should be set to the size_read variable. +// +// [in,out] data A pointer to an application data specified by +// yaml_parser_set_input(). +// [out] buffer The buffer to write the data from the source. +// [in] size The size of the buffer. +// [out] size_read The actual number of bytes read from the source. +// +// On success, the handler should return 1. If the handler failed, +// the returned value should be 0. On EOF, the handler should set the +// size_read to 0 and return 1. +type yaml_read_handler_t func(parser *yaml_parser_t, buffer []byte) (n int, err error) + +// This structure holds information about a potential simple key. +type yaml_simple_key_t struct { + possible bool // Is a simple key possible? + required bool // Is a simple key required? + token_number int // The number of the token. + mark yaml_mark_t // The position mark. +} + +// The states of the parser. +type yaml_parser_state_t int + +const ( + yaml_PARSE_STREAM_START_STATE yaml_parser_state_t = iota + + yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE // Expect the beginning of an implicit document. + yaml_PARSE_DOCUMENT_START_STATE // Expect DOCUMENT-START. + yaml_PARSE_DOCUMENT_CONTENT_STATE // Expect the content of a document. + yaml_PARSE_DOCUMENT_END_STATE // Expect DOCUMENT-END. + yaml_PARSE_BLOCK_NODE_STATE // Expect a block node. + yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE // Expect a block node or indentless sequence. + yaml_PARSE_FLOW_NODE_STATE // Expect a flow node. + yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE // Expect the first entry of a block sequence. + yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE // Expect an entry of a block sequence. + yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE // Expect an entry of an indentless sequence. + yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE // Expect the first key of a block mapping. + yaml_PARSE_BLOCK_MAPPING_KEY_STATE // Expect a block mapping key. + yaml_PARSE_BLOCK_MAPPING_VALUE_STATE // Expect a block mapping value. + yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE // Expect the first entry of a flow sequence. + yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE // Expect an entry of a flow sequence. + yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE // Expect a key of an ordered mapping. + yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE // Expect a value of an ordered mapping. + yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE // Expect the and of an ordered mapping entry. + yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE // Expect the first key of a flow mapping. + yaml_PARSE_FLOW_MAPPING_KEY_STATE // Expect a key of a flow mapping. + yaml_PARSE_FLOW_MAPPING_VALUE_STATE // Expect a value of a flow mapping. + yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE // Expect an empty value of a flow mapping. + yaml_PARSE_END_STATE // Expect nothing. +) + +func (ps yaml_parser_state_t) String() string { + switch ps { + case yaml_PARSE_STREAM_START_STATE: + return "yaml_PARSE_STREAM_START_STATE" + case yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE: + return "yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE" + case yaml_PARSE_DOCUMENT_START_STATE: + return "yaml_PARSE_DOCUMENT_START_STATE" + case yaml_PARSE_DOCUMENT_CONTENT_STATE: + return "yaml_PARSE_DOCUMENT_CONTENT_STATE" + case yaml_PARSE_DOCUMENT_END_STATE: + return "yaml_PARSE_DOCUMENT_END_STATE" + case yaml_PARSE_BLOCK_NODE_STATE: + return "yaml_PARSE_BLOCK_NODE_STATE" + case yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE: + return "yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE" + case yaml_PARSE_FLOW_NODE_STATE: + return "yaml_PARSE_FLOW_NODE_STATE" + case yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE: + return "yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE" + case yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE: + return "yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE" + case yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE: + return "yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE" + case yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE: + return "yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE" + case yaml_PARSE_BLOCK_MAPPING_KEY_STATE: + return "yaml_PARSE_BLOCK_MAPPING_KEY_STATE" + case yaml_PARSE_BLOCK_MAPPING_VALUE_STATE: + return "yaml_PARSE_BLOCK_MAPPING_VALUE_STATE" + case yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE: + return "yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE" + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE: + return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE" + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE: + return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE" + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE: + return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE" + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE: + return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE" + case yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE: + return "yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE" + case yaml_PARSE_FLOW_MAPPING_KEY_STATE: + return "yaml_PARSE_FLOW_MAPPING_KEY_STATE" + case yaml_PARSE_FLOW_MAPPING_VALUE_STATE: + return "yaml_PARSE_FLOW_MAPPING_VALUE_STATE" + case yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE: + return "yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE" + case yaml_PARSE_END_STATE: + return "yaml_PARSE_END_STATE" + } + return "" +} + +// This structure holds aliases data. +type yaml_alias_data_t struct { + anchor []byte // The anchor. + index int // The node id. + mark yaml_mark_t // The anchor mark. +} + +// The parser structure. +// +// All members are internal. Manage the structure using the +// yaml_parser_ family of functions. +type yaml_parser_t struct { + + // Error handling + + error yaml_error_type_t // Error type. + + problem string // Error description. + + // The byte about which the problem occurred. + problem_offset int + problem_value int + problem_mark yaml_mark_t + + // The error context. + context string + context_mark yaml_mark_t + + // Reader stuff + + read_handler yaml_read_handler_t // Read handler. + + input_reader io.Reader // File input data. + input []byte // String input data. + input_pos int + + eof bool // EOF flag + + buffer []byte // The working buffer. + buffer_pos int // The current position of the buffer. + + unread int // The number of unread characters in the buffer. + + newlines int // The number of line breaks since last non-break/non-blank character + + raw_buffer []byte // The raw buffer. + raw_buffer_pos int // The current position of the buffer. + + encoding yaml_encoding_t // The input encoding. + + offset int // The offset of the current position (in bytes). + mark yaml_mark_t // The mark of the current position. + + // Comments + + head_comment []byte // The current head comments + line_comment []byte // The current line comments + foot_comment []byte // The current foot comments + tail_comment []byte // Foot comment that happens at the end of a block. + stem_comment []byte // Comment in item preceding a nested structure (list inside list item, etc) + + comments []yaml_comment_t // The folded comments for all parsed tokens + comments_head int + + // Scanner stuff + + stream_start_produced bool // Have we started to scan the input stream? + stream_end_produced bool // Have we reached the end of the input stream? + + flow_level int // The number of unclosed '[' and '{' indicators. + + tokens []yaml_token_t // The tokens queue. + tokens_head int // The head of the tokens queue. + tokens_parsed int // The number of tokens fetched from the queue. + token_available bool // Does the tokens queue contain a token ready for dequeueing. + + indent int // The current indentation level. + indents []int // The indentation levels stack. + + simple_key_allowed bool // May a simple key occur at the current position? + simple_keys []yaml_simple_key_t // The stack of simple keys. + simple_keys_by_tok map[int]int // possible simple_key indexes indexed by token_number + + // Parser stuff + + state yaml_parser_state_t // The current parser state. + states []yaml_parser_state_t // The parser states stack. + marks []yaml_mark_t // The stack of marks. + tag_directives []yaml_tag_directive_t // The list of TAG directives. + + // Dumper stuff + + aliases []yaml_alias_data_t // The alias data. + + document *yaml_document_t // The currently parsed document. +} + +type yaml_comment_t struct { + + scan_mark yaml_mark_t // Position where scanning for comments started + token_mark yaml_mark_t // Position after which tokens will be associated with this comment + start_mark yaml_mark_t // Position of '#' comment mark + end_mark yaml_mark_t // Position where comment terminated + + head []byte + line []byte + foot []byte +} + +// Emitter Definitions + +// The prototype of a write handler. +// +// The write handler is called when the emitter needs to flush the accumulated +// characters to the output. The handler should write @a size bytes of the +// @a buffer to the output. +// +// @param[in,out] data A pointer to an application data specified by +// yaml_emitter_set_output(). +// @param[in] buffer The buffer with bytes to be written. +// @param[in] size The size of the buffer. +// +// @returns On success, the handler should return @c 1. If the handler failed, +// the returned value should be @c 0. +// +type yaml_write_handler_t func(emitter *yaml_emitter_t, buffer []byte) error + +type yaml_emitter_state_t int + +// The emitter states. +const ( + // Expect STREAM-START. + yaml_EMIT_STREAM_START_STATE yaml_emitter_state_t = iota + + yaml_EMIT_FIRST_DOCUMENT_START_STATE // Expect the first DOCUMENT-START or STREAM-END. + yaml_EMIT_DOCUMENT_START_STATE // Expect DOCUMENT-START or STREAM-END. + yaml_EMIT_DOCUMENT_CONTENT_STATE // Expect the content of a document. + yaml_EMIT_DOCUMENT_END_STATE // Expect DOCUMENT-END. + yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE // Expect the first item of a flow sequence. + yaml_EMIT_FLOW_SEQUENCE_TRAIL_ITEM_STATE // Expect the next item of a flow sequence, with the comma already written out + yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE // Expect an item of a flow sequence. + yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE // Expect the first key of a flow mapping. + yaml_EMIT_FLOW_MAPPING_TRAIL_KEY_STATE // Expect the next key of a flow mapping, with the comma already written out + yaml_EMIT_FLOW_MAPPING_KEY_STATE // Expect a key of a flow mapping. + yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE // Expect a value for a simple key of a flow mapping. + yaml_EMIT_FLOW_MAPPING_VALUE_STATE // Expect a value of a flow mapping. + yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE // Expect the first item of a block sequence. + yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE // Expect an item of a block sequence. + yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE // Expect the first key of a block mapping. + yaml_EMIT_BLOCK_MAPPING_KEY_STATE // Expect the key of a block mapping. + yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE // Expect a value for a simple key of a block mapping. + yaml_EMIT_BLOCK_MAPPING_VALUE_STATE // Expect a value of a block mapping. + yaml_EMIT_END_STATE // Expect nothing. +) + +// The emitter structure. +// +// All members are internal. Manage the structure using the @c yaml_emitter_ +// family of functions. +type yaml_emitter_t struct { + + // Error handling + + error yaml_error_type_t // Error type. + problem string // Error description. + + // Writer stuff + + write_handler yaml_write_handler_t // Write handler. + + output_buffer *[]byte // String output data. + output_writer io.Writer // File output data. + + buffer []byte // The working buffer. + buffer_pos int // The current position of the buffer. + + raw_buffer []byte // The raw buffer. + raw_buffer_pos int // The current position of the buffer. + + encoding yaml_encoding_t // The stream encoding. + + // Emitter stuff + + canonical bool // If the output is in the canonical style? + best_indent int // The number of indentation spaces. + best_width int // The preferred width of the output lines. + unicode bool // Allow unescaped non-ASCII characters? + line_break yaml_break_t // The preferred line break. + + state yaml_emitter_state_t // The current emitter state. + states []yaml_emitter_state_t // The stack of states. + + events []yaml_event_t // The event queue. + events_head int // The head of the event queue. + + indents []int // The stack of indentation levels. + + tag_directives []yaml_tag_directive_t // The list of tag directives. + + indent int // The current indentation level. + + flow_level int // The current flow level. + + root_context bool // Is it the document root context? + sequence_context bool // Is it a sequence context? + mapping_context bool // Is it a mapping context? + simple_key_context bool // Is it a simple mapping key context? + + line int // The current line. + column int // The current column. + whitespace bool // If the last character was a whitespace? + indention bool // If the last character was an indentation character (' ', '-', '?', ':')? + open_ended bool // If an explicit document end is required? + + space_above bool // Is there's an empty line above? + foot_indent int // The indent used to write the foot comment above, or -1 if none. + + // Anchor analysis. + anchor_data struct { + anchor []byte // The anchor value. + alias bool // Is it an alias? + } + + // Tag analysis. + tag_data struct { + handle []byte // The tag handle. + suffix []byte // The tag suffix. + } + + // Scalar analysis. + scalar_data struct { + value []byte // The scalar value. + multiline bool // Does the scalar contain line breaks? + flow_plain_allowed bool // Can the scalar be expessed in the flow plain style? + block_plain_allowed bool // Can the scalar be expressed in the block plain style? + single_quoted_allowed bool // Can the scalar be expressed in the single quoted style? + block_allowed bool // Can the scalar be expressed in the literal or folded styles? + style yaml_scalar_style_t // The output style. + } + + // Comments + head_comment []byte + line_comment []byte + foot_comment []byte + tail_comment []byte + + key_line_comment []byte + + // Dumper stuff + + opened bool // If the stream was already opened? + closed bool // If the stream was already closed? + + // The information associated with the document nodes. + anchors *struct { + references int // The number of references. + anchor int // The anchor id. + serialized bool // If the node has been emitted? + } + + last_anchor_id int // The last assigned anchor id. + + document *yaml_document_t // The currently emitted document. +} diff --git a/vendor/gopkg.in/yaml.v3/yamlprivateh.go b/vendor/gopkg.in/yaml.v3/yamlprivateh.go new file mode 100644 index 0000000000..e88f9c54ae --- /dev/null +++ b/vendor/gopkg.in/yaml.v3/yamlprivateh.go @@ -0,0 +1,198 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// Copyright (c) 2006-2010 Kirill Simonov +// +// 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. + +package yaml + +const ( + // The size of the input raw buffer. + input_raw_buffer_size = 512 + + // The size of the input buffer. + // It should be possible to decode the whole raw buffer. + input_buffer_size = input_raw_buffer_size * 3 + + // The size of the output buffer. + output_buffer_size = 128 + + // The size of the output raw buffer. + // It should be possible to encode the whole output buffer. + output_raw_buffer_size = (output_buffer_size*2 + 2) + + // The size of other stacks and queues. + initial_stack_size = 16 + initial_queue_size = 16 + initial_string_size = 16 +) + +// Check if the character at the specified position is an alphabetical +// character, a digit, '_', or '-'. +func is_alpha(b []byte, i int) bool { + return b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'Z' || b[i] >= 'a' && b[i] <= 'z' || b[i] == '_' || b[i] == '-' +} + +// Check if the character at the specified position is a digit. +func is_digit(b []byte, i int) bool { + return b[i] >= '0' && b[i] <= '9' +} + +// Get the value of a digit. +func as_digit(b []byte, i int) int { + return int(b[i]) - '0' +} + +// Check if the character at the specified position is a hex-digit. +func is_hex(b []byte, i int) bool { + return b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'F' || b[i] >= 'a' && b[i] <= 'f' +} + +// Get the value of a hex-digit. +func as_hex(b []byte, i int) int { + bi := b[i] + if bi >= 'A' && bi <= 'F' { + return int(bi) - 'A' + 10 + } + if bi >= 'a' && bi <= 'f' { + return int(bi) - 'a' + 10 + } + return int(bi) - '0' +} + +// Check if the character is ASCII. +func is_ascii(b []byte, i int) bool { + return b[i] <= 0x7F +} + +// Check if the character at the start of the buffer can be printed unescaped. +func is_printable(b []byte, i int) bool { + return ((b[i] == 0x0A) || // . == #x0A + (b[i] >= 0x20 && b[i] <= 0x7E) || // #x20 <= . <= #x7E + (b[i] == 0xC2 && b[i+1] >= 0xA0) || // #0xA0 <= . <= #xD7FF + (b[i] > 0xC2 && b[i] < 0xED) || + (b[i] == 0xED && b[i+1] < 0xA0) || + (b[i] == 0xEE) || + (b[i] == 0xEF && // #xE000 <= . <= #xFFFD + !(b[i+1] == 0xBB && b[i+2] == 0xBF) && // && . != #xFEFF + !(b[i+1] == 0xBF && (b[i+2] == 0xBE || b[i+2] == 0xBF)))) +} + +// Check if the character at the specified position is NUL. +func is_z(b []byte, i int) bool { + return b[i] == 0x00 +} + +// Check if the beginning of the buffer is a BOM. +func is_bom(b []byte, i int) bool { + return b[0] == 0xEF && b[1] == 0xBB && b[2] == 0xBF +} + +// Check if the character at the specified position is space. +func is_space(b []byte, i int) bool { + return b[i] == ' ' +} + +// Check if the character at the specified position is tab. +func is_tab(b []byte, i int) bool { + return b[i] == '\t' +} + +// Check if the character at the specified position is blank (space or tab). +func is_blank(b []byte, i int) bool { + //return is_space(b, i) || is_tab(b, i) + return b[i] == ' ' || b[i] == '\t' +} + +// Check if the character at the specified position is a line break. +func is_break(b []byte, i int) bool { + return (b[i] == '\r' || // CR (#xD) + b[i] == '\n' || // LF (#xA) + b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9) // PS (#x2029) +} + +func is_crlf(b []byte, i int) bool { + return b[i] == '\r' && b[i+1] == '\n' +} + +// Check if the character is a line break or NUL. +func is_breakz(b []byte, i int) bool { + //return is_break(b, i) || is_z(b, i) + return ( + // is_break: + b[i] == '\r' || // CR (#xD) + b[i] == '\n' || // LF (#xA) + b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029) + // is_z: + b[i] == 0) +} + +// Check if the character is a line break, space, or NUL. +func is_spacez(b []byte, i int) bool { + //return is_space(b, i) || is_breakz(b, i) + return ( + // is_space: + b[i] == ' ' || + // is_breakz: + b[i] == '\r' || // CR (#xD) + b[i] == '\n' || // LF (#xA) + b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029) + b[i] == 0) +} + +// Check if the character is a line break, space, tab, or NUL. +func is_blankz(b []byte, i int) bool { + //return is_blank(b, i) || is_breakz(b, i) + return ( + // is_blank: + b[i] == ' ' || b[i] == '\t' || + // is_breakz: + b[i] == '\r' || // CR (#xD) + b[i] == '\n' || // LF (#xA) + b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029) + b[i] == 0) +} + +// Determine the width of the character. +func width(b byte) int { + // Don't replace these by a switch without first + // confirming that it is being inlined. + if b&0x80 == 0x00 { + return 1 + } + if b&0xE0 == 0xC0 { + return 2 + } + if b&0xF0 == 0xE0 { + return 3 + } + if b&0xF8 == 0xF0 { + return 4 + } + return 0 + +} diff --git a/vendor/modules.txt b/vendor/modules.txt index d168d2012b..830a200582 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -15,35 +15,32 @@ github.com/cilium/ebpf/rlimit # github.com/cosiner/argv v0.1.0 ## explicit; go 1.13 github.com/cosiner/argv -# github.com/cpuguy83/go-md2man/v2 v2.0.0 -## explicit; go 1.12 +# github.com/cpuguy83/go-md2man/v2 v2.0.2 +## explicit; go 1.11 github.com/cpuguy83/go-md2man/v2/md2man -# github.com/creack/pty v1.1.9 +# github.com/creack/pty v1.1.20 ## explicit; go 1.13 github.com/creack/pty -# github.com/derekparker/trie v0.0.0-20221213183930-4c74548207f4 +# github.com/derekparker/trie v0.0.0-20230829180723-39f4de51ef7d ## explicit; go 1.19 github.com/derekparker/trie # github.com/go-delve/liner v1.2.3-0.20220127212407-d32d89dd2a5d ## explicit github.com/go-delve/liner -# github.com/google/go-dap v0.9.1 +# github.com/google/go-dap v0.11.0 ## explicit; go 1.13 github.com/google/go-dap -# github.com/hashicorp/golang-lru v0.5.4 +# github.com/hashicorp/golang-lru v1.0.2 ## explicit; go 1.12 github.com/hashicorp/golang-lru/simplelru -# github.com/inconshreveable/mousetrap v1.0.0 -## explicit +# github.com/inconshreveable/mousetrap v1.1.0 +## explicit; go 1.18 github.com/inconshreveable/mousetrap -# github.com/konsorten/go-windows-terminal-sequences v1.0.3 -## explicit -github.com/konsorten/go-windows-terminal-sequences -# github.com/mattn/go-colorable v0.0.9 -## explicit +# github.com/mattn/go-colorable v0.1.13 +## explicit; go 1.15 github.com/mattn/go-colorable -# github.com/mattn/go-isatty v0.0.3 -## explicit +# github.com/mattn/go-isatty v0.0.20 +## explicit; go 1.15 github.com/mattn/go-isatty # github.com/mattn/go-runewidth v0.0.13 ## explicit; go 1.9 @@ -51,26 +48,21 @@ github.com/mattn/go-runewidth # github.com/rivo/uniseg v0.2.0 ## explicit; go 1.12 github.com/rivo/uniseg -# github.com/russross/blackfriday/v2 v2.0.1 +# github.com/russross/blackfriday/v2 v2.1.0 ## explicit github.com/russross/blackfriday/v2 -# github.com/shurcooL/sanitized_anchor_name v1.0.0 -## explicit -github.com/shurcooL/sanitized_anchor_name -# github.com/sirupsen/logrus v1.6.0 +# github.com/sirupsen/logrus v1.9.3 ## explicit; go 1.13 github.com/sirupsen/logrus -# github.com/spf13/cobra v1.1.3 -## explicit; go 1.12 +# github.com/spf13/cobra v1.7.0 +## explicit; go 1.15 github.com/spf13/cobra github.com/spf13/cobra/doc # github.com/spf13/pflag v1.0.5 ## explicit; go 1.12 github.com/spf13/pflag -# github.com/stretchr/testify v1.7.0 -## explicit; go 1.13 -# go.starlark.net v0.0.0-20220816155156-cfacd8902214 -## explicit; go 1.13 +# go.starlark.net v0.0.0-20231101134539-556fd59b42f6 +## explicit; go 1.18 go.starlark.net/internal/compile go.starlark.net/internal/spell go.starlark.net/lib/time @@ -78,8 +70,8 @@ go.starlark.net/resolve go.starlark.net/starlark go.starlark.net/starlarkstruct go.starlark.net/syntax -# golang.org/x/arch v0.0.0-20190927153633-4e8777c89be4 -## explicit; go 1.11 +# golang.org/x/arch v0.5.0 +## explicit; go 1.17 golang.org/x/arch/arm64/arm64asm golang.org/x/arch/ppc64/ppc64asm golang.org/x/arch/x86/x86asm @@ -88,16 +80,15 @@ golang.org/x/arch/x86/x86asm golang.org/x/exp/constraints golang.org/x/exp/maps golang.org/x/exp/slices -# golang.org/x/mod v0.12.0 -## explicit; go 1.17 +# golang.org/x/mod v0.13.0 +## explicit; go 1.18 golang.org/x/mod/semver -# golang.org/x/sys v0.12.0 +# golang.org/x/sys v0.13.0 ## explicit; go 1.17 golang.org/x/sys/execabs -golang.org/x/sys/internal/unsafeheader golang.org/x/sys/unix golang.org/x/sys/windows -# golang.org/x/tools v0.13.0 +# golang.org/x/tools v0.14.0 ## explicit; go 1.18 golang.org/x/tools/go/gcexportdata golang.org/x/tools/go/internal/packagesdriver @@ -118,3 +109,6 @@ golang.org/x/tools/internal/typesinternal # gopkg.in/yaml.v2 v2.4.0 ## explicit; go 1.15 gopkg.in/yaml.v2 +# gopkg.in/yaml.v3 v3.0.1 +## explicit +gopkg.in/yaml.v3