hanchenye-llvm-project/llvm/test
Hal Finkel 851b33a0b1 [PowerPC] Load two floats directly instead of using one 64-bit integer load
When dealing with complex<float>, and similar structures with two
single-precision floating-point numbers, especially when such things are being
passed around by value, we'll sometimes end up loading both float values by
extracting them from one 64-bit integer load. It looks like this:

  t13: i64,ch = load<LD8[%ref.tmp]> t0, t6, undef:i64
      t16: i64 = srl t13, Constant:i32<32>
    t17: i32 = truncate t16
  t18: f32 = bitcast t17
    t19: i32 = truncate t13
  t20: f32 = bitcast t19

The problem, especially before the P8 where those bitcasts aren't legal (and
get expanded via the stack), is that it would have been better to use two
floating-point loads directly. Here we add a target-specific DAGCombine to do
just that. In short, we turn:

	ld 3, 0(5)
	stw 3, -8(1)
	rldicl 3, 3, 32, 32
	stw 3, -4(1)
	lfs 3, -4(1)
	lfs 0, -8(1)

into:

        lfs 3, 4(5)
        lfs 0, 0(5)

llvm-svn: 264988
2016-03-31 02:56:05 +00:00
..
Analysis AMDGPU: Cost model for basic integer operations 2016-03-25 01:16:40 +00:00
Assembler Use existing PrintEscapedString in AssemblyWriter 2016-03-30 22:17:28 +00:00
Bindings Expose IRBuilder::CreateAtomicCmpXchg as LLVMBuildAtomicCmpXchg in the C API. 2016-03-19 21:28:28 +00:00
Bitcode Swift Calling Convention: add swiftself attribute. 2016-03-29 17:37:21 +00:00
BugPoint
CodeGen [PowerPC] Load two floats directly instead of using one 64-bit integer load 2016-03-31 02:56:05 +00:00
DebugInfo Upgrade some wildly anachronistic debug info in testcases. 2016-03-29 22:34:30 +00:00
Examples
ExecutionEngine Disable the new Orc lazy JIT tests on Windows, they do not pass 2016-02-10 18:46:42 +00:00
Feature [NVVM] Remove noduplicate attribute from synchronizing intrinsics. 2016-03-22 22:08:01 +00:00
FileCheck Reapply r262092: [FileCheck] Abort if -NOT is combined with another suffix. 2016-02-29 22:13:03 +00:00
Instrumentation [tsan] Do not instrument reads/writes to instruction profile counters. 2016-03-29 23:19:40 +00:00
Integer
JitListener
LTO Rename embedded bitcode section in MachO 2016-02-29 19:40:10 +00:00
LibDriver
Linker Upgrade some wildly anachronistic debug info in testcases. 2016-03-29 22:34:30 +00:00
MC [SystemZ] Add nop and nopr InstAliases. 2016-03-30 16:11:58 +00:00
Object [lanai] Add Lanai backend. 2016-03-28 13:09:54 +00:00
Other [CG] Add a new pass manager printer pass for the old call graph and 2016-03-10 11:24:11 +00:00
SymbolRewriter
TableGen [GlobalISel][Target] Add an opcode for unconditional branch. 2016-03-11 17:27:38 +00:00
ThinLTO/X86 [ThinLTO] Renaming of function index to module summary index (NFC) 2016-03-15 00:04:37 +00:00
Transforms Introduce a @llvm.experimental.guard intrinsic 2016-03-31 00:18:46 +00:00
Unit [lit] Hack lit to allow a test suite to request that it is run "early". 2016-03-12 03:03:31 +00:00
Verifier Introduce a @llvm.experimental.guard intrinsic 2016-03-31 00:18:46 +00:00
YAMLParser
tools Fix some bugs in the posix output of llvm-nm. Which is documented on 2016-03-29 20:18:07 +00:00
.clang-format
CMakeLists.txt [CMake] Add convenience target llvm-test-depends to build test dependencies. 2016-03-02 00:27:14 +00:00
TestRunner.sh
lit.cfg Revert "[asan] Make the global_metadata_darwin.ll test require El Capitan or newer" 2016-03-29 18:27:24 +00:00
lit.site.cfg.in