Skip to content

Add AVX(2) backend

amyspark requested to merge amyspark/orc:amyspark/avx/add-backend into main

Hi all,

This is a MR to add an AVX2 backend to Orc.

This work is a WIP derived from this branch: https://gitlab.freedesktop.org/amyspark/orc/-/commits/amyspark/sse-convert-load-to-temporary?ref_type=heads . I've refactored and dropped a lot of the WIP regarding codegen, in order to just target VEX-encoded SSE for review purposes. Once that's done, I'll begin/continue porting and adding where relevant the new AVX instructions from the other branch.

Basics

  • Orc internals documentation added
  • SSE codegen still works
  • AVX is detected
  • SSE instructions classified by presence in AVX(2)
  • VEX (orcc --assembly) codegen working
    • I need to trace why the assembly comments look like coming from the SSE backend
  • VEX (binary) codegen working
  • Vector size enlargement
  • Addition of AVX(2) only instructions

Review laundry list

  • Testsuite pass
  • Validate correctness
  • Apply review rounds
  • Flatten commits

Fixes #13 (closed)

Fixes #51 (closed)

/cc @slomo

Edited by amyspark

Merge request reports