[x86/SLH] Flesh out the data-invariant instruction table a bit based on feedback...
authorChandler Carruth <chandlerc@gmail.com>
Tue, 17 Jul 2018 18:07:59 +0000 (18:07 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Tue, 17 Jul 2018 18:07:59 +0000 (18:07 +0000)
commitc0cb5731fc9fbad7fbafeecba2189b893c4c34f6
tree39dee050b94d3d5d874c506234b720030e923eb7
parent03164dfa5edf9a8c82144caa7c262dcf30760e86
[x86/SLH] Flesh out the data-invariant instruction table a bit based on feedback from Craig.

Summary:
The only thing he suggested that I've skipped here is the double-wide
multiply instructions. Multiply is an area I'm nervous about there being
some hidden data-dependent behavior, and it doesn't seem important for
any benchmarks I have, so skipping it and sticking with the minimal
multiply support that matches what I know is widely used in existing
crypto libraries. We can always add double-wide multiply when we have
clarity from vendors about its behavior and guarantees.

I've tried to at least cover the fundamentals here with tests, although
I've not tried to cover every width or permutation. I can add more tests
where folks think it would be helpful.

Reviewers: craig.topper

Subscribers: sanjoy, mcrosier, hiraditya, llvm-commits

Differential Revision: https://reviews.llvm.org/D49413

llvm-svn: 337308
llvm/lib/Target/X86/X86SpeculativeLoadHardening.cpp
llvm/test/CodeGen/X86/speculative-load-hardening.ll