1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-26 12:43:36 +01:00
llvm-mirror/test
Andrea Di Biagio 4893e095df [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
2018-06-20 10:08:11 +00:00
..
Analysis [NFC][SCEV] Add tests related to bit masking (PR37793) 2018-06-20 07:54:11 +00:00
Assembler
Bindings
Bitcode
BugPoint
CodeGen [X86] Add sched class WriteLAHFSAHF and fix values. 2018-06-20 06:13:39 +00:00
DebugInfo Re-apply "[DebugInfo] Check size of variable in ConvertDebugDeclareToDebugValue" 2018-06-15 13:48:55 +00:00
Examples
ExecutionEngine
Feature
FileCheck
Instrumentation
Integer
JitListener
Linker
LTO
MC Revert r334980 and 334983 2018-06-20 00:02:32 +00:00
Object
ObjectYAML
Other CorrelatedValuePropagation: Preserve DT. 2018-06-16 18:57:31 +00:00
SafepointIRVerifier
SymbolRewriter
TableGen [globalisel][tablegen] Add support for C++ predicates on PatFrags and use it to support BFC on ARM. 2018-06-15 23:13:43 +00:00
ThinLTO/X86
tools [llvm-mca][X86] Teach how to identify register writes that implicitly clear the upper portion of a super-register. 2018-06-20 10:08:11 +00:00
Transforms [InstCombine] Replacing X86-specific rounding intrinsics with generic floor-ceil 2018-06-19 10:49:12 +00:00
Unit
Verifier
YAMLParser
.clang-format
CMakeLists.txt
lit.cfg.py
lit.site.cfg.py.in
TestRunner.sh