Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • D dynamorio
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 1,467
    • Issues 1,467
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 44
    • Merge requests 44
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • DynamoRIO
  • dynamorio
  • Merge requests
  • !3698

i#1312 AVX-512 support: Add all v(p)gather|scatter opcodes.

  • Review changes

  • Download
  • Email patches
  • Plain diff
Merged Hendrik Greving requested to merge i1312-add-evex-decoder-incremental-21 into master Jun 21, 2019
  • Overview 38
  • Commits 16
  • Pipelines 0
  • Changes 13

Adds the evex-promoted opcodes vpgatherdd, vpgatherdq, vpgatherqd, vpgatherqq, vgatherdps, vgatherdpd, vgatherqps, vgatherqpd.

Adds the new AVX-512 opcodes vpscatterdd, vpscatterdq, vpscatterqd, vpscatterqq, vpscatterdps, vpscatterdpd, vpscatterqps, vpscatterqpd, vgatherpf0dpd, vgatherpf0dps, vgatherpf0qpd, vgatherpf0qps, vgatherpf1dpd, vgatherpf1dps, vgatherpf1qpd, vgatherpf1qps, vscatterpf0dpd, vscatterpf0dps, vscatterpf0qpd, vscatterpf0qps, vscatterpf1dpd, vscatterpf1dps, vscatterpf1qpd, vscatterpf1qps.

Adds an internal binary compatible flag index_reg_is_zmm to opnd_t.

Adds two new decode table flags vsiby, vsibz, in order to constrain the VSIB index register's size, instead of adding new types TYPE_VSIB. VSIB's size is already used for the element's size.

Splits the VSIBX|Y|Z macros into 6|15|31 in order to test different index registers.

Adds support to encoder/decoder to support AVX-512 extended VSIB index registers.

Adds tests for above.

Adds to existing AVX2 gather/scatter tests.

Opcodes have been checked against llvm-mc, binutils/gas/objdump and capstone.

Please note that Vol. 1 5.19 INTEL® ADVANCED VECTOR EXTENSIONS 512 (INTEL® AVX-512) mentions the instructions vscatterdd/dq/qd/qq, but the instructions are no further mentioned in the instruction tables. This is likey a typo for vpscatterdd/dq/qd/qq.

This patch concludes the AVX-512 encoder/decoder extensions. This is preliminary and further missed instructions may be added, if any. Further testing will be enabled. Also support for compressed displacements and VSIB address computation hasn't been added yet.

Please note DynamoRIO runtime does not fully support AVX-512 processes just yet.

One binutils/objdump bug has been filed: https://sourceware.org/bugzilla/show_bug.cgi?id=24719

Issue: #1312

Assignee
Assign to
Reviewers
Request review from
Time tracking
Source branch: i1312-add-evex-decoder-incremental-21