[X86][BtVer2] Remove wrong ReadAdvance from AVX vbroadcast(ss|sd|f128) instructions.
authorAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>
Fri, 31 Aug 2018 16:05:48 +0000 (16:05 +0000)
committerAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>
Fri, 31 Aug 2018 16:05:48 +0000 (16:05 +0000)
commita59ec4efa02c6b50ce3dd8248a2f93efedb1aeb3
tree7ac221f8659c71c6b95f144be78c7adb0bbed636
parent3785e84cf2cdafb7c7adb0aabe896795acaee6e4
[X86][BtVer2] Remove wrong ReadAdvance from AVX vbroadcast(ss|sd|f128) instructions.

The presence of a ReadAdvance for input operand #0 is problematic
because it changes the input latency of the register used as the base address
for the folded load.

A broadcast cannot start executing if the load address hasn't been computed yet.

In the llvm-mca example, the VBROADCASTSS is dependent on the address generated
by the LEAQ.  That means, it cannot start until LEAQ reaches the write-back
stage. If we apply ReadAdvance, then we wrongly assume that the load can start 3
cycles in advance.

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

llvm-svn: 341222
llvm/lib/Target/X86/X86ScheduleBtVer2.td
llvm/test/tools/llvm-mca/X86/BtVer2/vbroadcast-operand-latency.s