llvm-project/llvm/test
Ekaterina Romanova d5fa55470c SHLD/SHRD are VectorPath (microcode) instructions known to have poor latency on certain architectures. While generating SHLD/SHRD instructions is acceptable when optimizing for size, optimizing for speed on these platforms should be implemented using alternative sequences of instructions composed of add, adc, shr, shl, or and lea which are directPath instructions. These alternative instructions not only have a lower latency but they also increase the decode bandwidth by allowing simultaneous decoding of a third directPath instruction.
AMD's processors family K7, K8, K10, K12, K15 and K16 are known to have SHLD/SHRD instructions with very poor latency. Optimization guides for these processors recommend using an alternative sequence of instructions. For these AMD's processors, I disabled folding (or (x << c) | (y >> (64 - c))) when we are not optimizing for size.

It might be beneficial to disable this folding for some of the Intel's processors. However, since I couldn't find specific recommendations regarding using SHLD/SHRD instructions on Intel's processors, I haven't disabled this peephole for Intel.

llvm-svn: 195383
2013-11-21 23:21:26 +00:00
..
Analysis Use correct size for address space in BasicAA. 2013-11-16 00:36:43 +00:00
Assembler Make it explicit that nulls are not allowed in names. 2013-11-19 21:12:39 +00:00
Bindings [OCaml] Add REQUIRES: native, object-emission to the Target test 2013-11-15 03:43:51 +00:00
Bitcode The 'optnone' attribute means don't inline anything into this function 2013-11-18 21:44:03 +00:00
BugPoint [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
CodeGen SHLD/SHRD are VectorPath (microcode) instructions known to have poor latency on certain architectures. While generating SHLD/SHRD instructions is acceptable when optimizing for size, optimizing for speed on these platforms should be implemented using alternative sequences of instructions composed of add, adc, shr, shl, or and lea which are directPath instructions. These alternative instructions not only have a lower latency but they also increase the decode bandwidth by allowing simultaneous decoding of a third directPath instruction. 2013-11-21 23:21:26 +00:00
DebugInfo DebugInfo: Partial implementation of DWARF type units. 2013-11-19 23:08:21 +00:00
ExecutionEngine [mips] Resolve relocation for the stubs in MCJIT when load address is known 2013-11-19 21:56:00 +00:00
Feature The 'optnone' attribute means don't inline anything into this function 2013-11-18 21:44:03 +00:00
FileCheck FileCheck: fix a bug with multiple --check-prefix options. Similar to r194565 2013-11-20 13:25:05 +00:00
Instrumentation Introduce two command-line flags for the instrumentation pass to control whether the labels of pointers should be ignored in load and store instructions 2013-11-21 23:20:54 +00:00
Integer [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
JitListener Debug Info Testing: updated to use NULL instead of "i32 0" in a few fields. 2013-09-06 21:03:58 +00:00
LTO Protect user-supplied runtime library functions in LTO 2013-11-12 21:44:01 +00:00
Linker Debug Info: remove duplication of DIEs when a DIE can be shared across CUs. 2013-10-31 17:54:35 +00:00
MC Implemented Neon scalar vdup_lane intrinsics. 2013-11-21 08:16:15 +00:00
Object llvm-ar: Let opening a directory failed in llvm-ar. 2013-11-08 12:35:56 +00:00
Other Add addrspacecast instruction. 2013-11-15 01:34:59 +00:00
TableGen Mark 36 tests as XFAIL:vg_leak in llvm/test/TableGen. 2013-11-10 14:26:08 +00:00
Transforms Don't speculate loads under ThreadSanitizer 2013-11-21 07:29:28 +00:00
Unit [tests] Update to use lit_config and lit package, as appropriate. 2013-08-09 16:22:05 +00:00
Verifier Add Verifier test case for variable argument intrinsics. 2013-10-31 17:18:17 +00:00
YAMLParser [Support][YAML] Add support for accessing tags and tag handle substitution. 2013-10-18 22:38:04 +00:00
tools llvm-cov: Added file checksum to gcno and gcda files. 2013-11-20 04:15:05 +00:00
.clang-format Add .clang-format without column limit to subdirectory tests/. 2013-11-19 04:26:05 +00:00
CMakeLists.txt lit: add missing substitutions for recently added tools 2013-10-28 23:37:49 +00:00
Makefile [OCaml] Dynamically link LLVM on --enable-shared builds 2013-11-12 20:55:49 +00:00
Makefile.tests Remove dead code from the makefile build system. 2013-07-25 20:25:31 +00:00
TestRunner.sh
lit.cfg lit: add missing substitutions for recently added tools 2013-10-28 23:37:49 +00:00
lit.site.cfg.in Fix LTO handling of module-level assembly (PR14152). 2013-09-19 22:15:52 +00:00