The list Intel provides is here:
https://www.intel.com/content/www/us/en/developer/articles/t...
The list Intel provides is here:
https://www.intel.com/content/www/us/en/developer/articles/t...
My interpretation is that all of the instructions in that list require DOIT set for guarantees of data independent timing
> a new model specific register (MSR) control enables data operand independent timing for the listed data operand independent timing instructions.
https://www.intel.com/content/www/us/en/developer/articles/t...
* Vector integer multiply instructions may be data-dependent in some circumstances.
* Intel appears to be willing to commit to making most integer instructions constant-time.
* Some of the vector integer multiply instructions appear to be largely reusing the floating-point FMA units (VPMADD52* is a pretty strong clue there--52 bits covers the size of the mantissa in double-precision), and those units appear to have some non-constant-time behavior.
Most of the integer instructions you'd expect to be constant-time are in fact constant-time; it's a slice of vector integer multiply (and integer multiply-adds) that are inadvertently not constant-time.
All the instructions in the list are no longer (guaranteed to be?) constant-time unless the DOITM bit is set.
> Specifically, when data operand independent timing mode [DOITM] is enabled, instructions within the data operand independent timing subset execute with timing (in terms of processor cycles) that is independent of the data values in the sources of the instruction