This is a medium-ish article I wrote up about the current state of the
x86 SSE .td files (sans Bruno's ongoing work on AVX). While some of the
code snippets are a little bit out-of-date (owing to said work by Bruno
and others), the basic concepts still apply.
Essentially, the article outlines several places in the current .td
files that have redundancy and how that redundancy has led to some
missed instruction patterns (i.e. the current spec is not orthogonal).
This is the analysis I went through when I determined a refactoring on
the x86 SSE/MMX/AVX .td files might be useful, both to improve
maintainability and to fill out the spec so it is more orthogonal.
Take a read a let me know what you think. I have a refactored SIMD spec
that I'm cleaning up at the moment for better presentation. I will post
that as soon as I can to give some concrete examples of what I have
here. Let the discussion begin!
AVX.txt (27 KB)