summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/expression_command/ir-interpreter
diff options
context:
space:
mode:
authorAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>2018-06-20 10:08:11 +0000
committerAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>2018-06-20 10:08:11 +0000
commit2145b13fc92c531d0218963c0dab1fb25722f3de (patch)
tree789fe54248e5f40d6972c16c1227e9c75397b7bb /lldb/packages/Python/lldbsuite/test/expression_command/ir-interpreter
parent031c748bdbacc0d3db5e5a8e37ab4d4036aa8952 (diff)
downloadbcm5719-llvm-2145b13fc92c531d0218963c0dab1fb25722f3de.tar.gz
bcm5719-llvm-2145b13fc92c531d0218963c0dab1fb25722f3de.zip
[llvm-mca][X86] Teach how to identify register writes that implicitly clear the upper portion of a super-register.
This patch teaches llvm-mca how to identify register writes that implicitly zero the upper portion of a super-register. On X86-64, a general purpose register is implemented in hardware as a 64-bit register. Quoting the Intel 64 Software Developer's Manual: "an update to the lower 32 bits of a 64 bit integer register is architecturally defined to zero extend the upper 32 bits". Also, a write to an XMM register performed by an AVX instruction implicitly zeroes the upper 128 bits of the aliasing YMM register. This patch adds a new method named clearsSuperRegisters to the MCInstrAnalysis interface to help identify instructions that implicitly clear the upper portion of a super-register. The rest of the patch teaches llvm-mca how to use that new method to obtain the information, and update the register dependencies accordingly. I compared the kernels from tests clear-super-register-1.s and clear-super-register-2.s against the output from perf on btver2. Previously there was a large discrepancy between the estimated IPC and the measured IPC. Now the differences are mostly in the noise. Differential Revision: https://reviews.llvm.org/D48225 llvm-svn: 335113
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/expression_command/ir-interpreter')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud