1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 19:12:56 +02:00
llvm-mirror/lib
Daniel Sanders b7e612b638 [mips] Correct and improve special-case shuffle instructions.
Summary:
The documentation writes vectors highest-index first whereas LLVM-IR writes
them lowest-index first. As a result, instructions defined in terms of
left_half() and right_half() had the halves reversed.

In addition to correcting them, they have been improved to allow shuffles
that use the same operand twice or in reverse order. For example, ilvev
used to accept masks of the form:
  <0, n, 2, n+2, 4, n+4, ...>
but now accepts:
  <0, 0, 2, 2, 4, 4, ...>
  <n, n, n+2, n+2, n+4, n+4, ...>
  <0, n, 2, n+2, 4, n+4, ...>
  <n, 0, n+2, 2, n+4, 4, ...>

One further improvement is that splati.[bhwd] is now the preferred instruction
for splat-like operations. The other special shuffles are no longer used
for splats. This lead to the discovery that <0, 0, ...> would not cause
splati.[hwd] to be selected and this has also been fixed.

This fixes the enc-3des test from the test-suite on Mips64r6 with MSA.

Reviewers: vkalintiris

Reviewed By: vkalintiris

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D9660

llvm-svn: 237689
2015-05-19 12:24:52 +00:00
..
Analysis Exploit dereferenceable_or_null attribute in LICM pass 2015-05-18 18:07:00 +00:00
AsmParser [opaque pointer type] Use the value type of the GlobalVariable rather than accessing it through the pointee's type 2015-05-13 22:55:01 +00:00
Bitcode [BitcodeReader] Error out if we read an invalid function argument type 2015-05-19 01:21:06 +00:00
CodeGen SelectionDAG: Cleanup and simplify FoldConstantArithmetic 2015-05-19 01:40:21 +00:00
DebugInfo MC: MCCodeGenInfo naming update. NFC. 2015-05-15 19:13:31 +00:00
ExecutionEngine [RuntimeDyld] Use isInt to assert that a relocation didn't overflow 2015-05-15 20:32:25 +00:00
Fuzzer [lib/Fuzzer] more efficient reload logic; also don't spam git too much 2015-05-19 01:06:07 +00:00
IR As r237678 was reverted, this is no longer needed. 2015-05-19 11:46:27 +00:00
IRReader
LineEditor
Linker While in GlobalValue fix the function(s) that don't follow the 2015-05-15 18:20:14 +00:00
LTO LTO: Add API to choose whether to embed uselists 2015-04-27 23:38:54 +00:00
MC MC: clang-format MCContext. NFC. 2015-05-18 18:43:23 +00:00
Object Remove MCAssembler.h include from MCStreamer.h and fix users of MCStreamer.h 2015-05-15 22:19:42 +00:00
Option Option parsing: properly handle flag aliases for joined options (PR23394) 2015-05-04 18:00:13 +00:00
Passes [PM] Fixup for r231556 where I missed a dependency on intrinsics 2015-03-07 09:08:20 +00:00
ProfileData InstrProf: Treat functions with a coverage map but no profile as unreached 2015-05-13 22:03:04 +00:00
Support [YAML] Plug a memory leak 2015-05-18 21:11:27 +00:00
TableGen [TableGen] Change 'car' to 'head' and 'cdr' to 'tail' in assert comments. These were the old names for these operations long ago. NFC 2015-05-16 05:42:13 +00:00
Target [mips] Correct and improve special-case shuffle instructions. 2015-05-19 12:24:52 +00:00
Transforms Simplify IRBuilder::CreateCall* by using ArrayRef+initializer_list/braced init only 2015-05-18 22:13:54 +00:00
CMakeLists.txt [PM] Create a separate library for high-level pass management code. 2015-03-07 09:02:36 +00:00
LLVMBuild.txt Reflow long lines of some LLVMBuild files 2015-05-14 15:38:27 +00:00
Makefile [PM] Create a separate library for high-level pass management code. 2015-03-07 09:02:36 +00:00