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
  • !3831

i#2985 drx_expand_scatter_gather(): Add initial support to expand into scalar sequences.

  • Review changes

  • Download
  • Email patches
  • Plain diff
Merged Hendrik Greving requested to merge i2985-enable-vsib-expansion-2 into master Sep 13, 2019
  • Overview 90
  • Commits 32
  • Pipelines 0
  • Changes 9

Adds the function drx_expand_scatter_gather() that is capable of expanding AVX-512 scatter and gather and AVX2 gather instructions into equivalent sequences of scalar code.

WARNING: Do not use yet, support is incomplete.

In particular,

  • Certain registers may be clobbered by the sequence and will not be restored.
  • Application state may not be properly restored if the sequence is getting interrupted.
  • drreg may fail if used in other phases in addition to app2app (xref #3823 (closed)).

Furthermore,

  • AArch64 support is missing (xref #3837).
  • The qword index and value versions are not supported in 32-bit mode.

Adds a limited test for the expanded sequences. The test works with above limitations, because the clobbered registers are not live in the test application and the application does not check the mask state until the instruction is complete. In the test application this may result in occasional duplicated scalar loads and stores, but will not break the test.

Adds a check for the mask registers to test client.avx512ctx.

Issue: #2985 (closed), #3837

Assignee
Assign to
Reviewers
Request review from
Time tracking
Source branch: i2985-enable-vsib-expansion-2