hanchenye-llvm-project/llvm/test/tools
Andrea Di Biagio c9649eb9da [X86][BtVer2] Fix latency/throughput of scalar integer MUL instructions.
Single operand MUL instructions that implicitly set EAX have the following
latency/throughput profile (see below):

imul %cl              # latency: 3cy - uOPs: 1 - 1 JMul
imul %cx              # latency: 3cy - uOPs: 3 - 3 JMul
imul %ecx             # latency: 3cy - uOPs: 2 - 2 JMul
imul %rcx             # latency: 6cy - uOPs: 2 - 4 JMul

mul %cl               # latency: 3cy - uOPs: 1 - 1 JMul
mul %cx               # latency: 3cy - uOPs: 3 - 3 JMul
mul %ecx              # latency: 3cy - uOPs: 2 - 2 JMul
mul %rcx              # latency: 6cy - uOPs: 2 - 4 JMul

Excluding the 64bit variant, which has a latency of 6cy, every other instruction
has a latency of 3cy. However, the number of decoded macro-opcodes (as well as
the resource cyles) depend on the MUL size.

The two operand MULs have a more predictable profile (see below):

imul %dx, %dx         # latency: 3cy - uOPs: 1 - 1 JMul
imul %edx, %edx       # latency: 3cy - uOPs: 1 - 1 JMul
imul %rdx, %rdx       # latency: 6cy - uOPs: 1 - 4 JMul

imul $3, %dx, %dx     # latency: 4cy - uOPs: 2 - 2 JMul
imul $3, %ecx, %ecx   # latency: 3cy - uOPs: 1 - 1 JMul
imul $3, %rdx, %rdx   # latency: 6cy - uOPs: 1 - 4 JMul

This patch updates the values in the Jaguar scheduling model and regenerates
llvm-mca tests.

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

llvm-svn: 369661
2019-08-22 15:20:16 +00:00
..
dsymutil [llvm-readobj][MachO] Fix section type printing 2019-08-15 07:22:04 +00:00
gold Fix check in tools/gold/X86/strip_names.ll regarding unnamed args 2019-08-08 12:11:13 +00:00
llvm-ar [llvm-ar] Accept file paths with windows format slashes 2019-08-12 14:00:28 +00:00
llvm-as
llvm-cfi-verify
llvm-config
llvm-cov Fix line endings (NFC) 2019-07-02 13:13:36 +00:00
llvm-cvtres
llvm-cxxdump
llvm-cxxfilt
llvm-cxxmap
llvm-diff
llvm-dlltool
llvm-dwarfdump [DWARF] Fix reading 64-bit DWARF type units. 2019-08-20 12:52:32 +00:00
llvm-dwp
llvm-elfabi [Object/ELF.h] - Improve error reporting. 2019-07-05 11:28:49 +00:00
llvm-exegesis
llvm-extract
llvm-isel-fuzzer
llvm-lib
llvm-lipo [llvm-lipo] Implement -segalign 2019-08-05 19:06:55 +00:00
llvm-lit
llvm-lto BitStream reader: propagate errors 2019-06-26 19:50:12 +00:00
llvm-lto2
llvm-mc
llvm-mca [X86][BtVer2] Fix latency/throughput of scalar integer MUL instructions. 2019-08-22 15:20:16 +00:00
llvm-modextract
llvm-mt
llvm-nm Print reasonable representations of type names in llvm-nm, readelf and readobj 2019-08-09 16:54:51 +00:00
llvm-objcopy [llvm-objcopy][test] Add a test to show that argv[0] is included in error/warning messages 2019-08-20 15:34:07 +00:00
llvm-objdump [llvm-objdump] - Remove an outdated "FIXME". NFC. 2019-08-22 09:10:17 +00:00
llvm-opt-fuzzer
llvm-opt-report
llvm-pdbutil llvm-pdbdump: Fix several smaller issues with injected source compression handling 2019-07-17 22:59:52 +00:00
llvm-profdata [AutoFDO] Make call targets order deterministic for sample profile 2019-08-20 20:52:00 +00:00
llvm-rc
llvm-readobj [yaml2obj] - Lookup relocation symbols in dynamic symbol when .dynsym referenced. 2019-08-22 12:39:56 +00:00
llvm-size [llvm-size][test] Improve llvm-size testing 2019-08-14 10:17:34 +00:00
llvm-split
llvm-strings NFC. Remove trailing whitespace in test 2019-08-12 11:39:54 +00:00
llvm-symbolizer Add "REQUIRES: x86-registered-target" to test. 2019-08-05 21:44:45 +00:00
llvm-xray/X86
lto
obj2yaml [yaml2obj/obj2yaml] - Add a basic support for extended section indexes. 2019-08-08 09:49:05 +00:00
opt-viewer
sancov
sanstats
yaml2obj [yaml2obj] - Lookup relocation symbols in dynamic symbol when .dynsym referenced. 2019-08-22 12:39:56 +00:00