llvm-6502/lib
Bill Wendling 69a05a7b92 Generate a VTBL instruction instead of a series of loads and stores when we
can. As Nate pointed out, VTBL isn't super performant, but it *has* to be better
than this:

_shuf:
@ BB#0:       @ %entry
  push        {r4, r7, lr}
  add         r7, sp, #4
  sub         sp, #12
  mov         r4, sp
  bic         r4, r4, #7
  mov         sp, r4
  mov         r2, sp
  vmov        d16, r0, r1
  orr         r0, r2, #6
  orr         r3, r2, #7
  vst1.8      {d16[0]}, [r3]
  vst1.8      {d16[5]}, [r0]
  subs        r4, r7, #4
  orr         r0, r2, #5
  vst1.8      {d16[4]}, [r0]
  orr         r0, r2, #4
  vst1.8      {d16[4]}, [r0]
  orr         r0, r2, #3
  vst1.8      {d16[0]}, [r0]
  orr         r0, r2, #2
  vst1.8      {d16[2]}, [r0]
  orr         r0, r2, #1
  vst1.8      {d16[1]}, [r0]
  vst1.8      {d16[3]}, [r2]
  vldr.64     d16, [sp]
  vmov        r0, r1, d16
  mov         sp, r4
  pop         {r4, r7, pc}

The "illegal" testcase in vext.ll is no longer illegal.
<rdar://problem/9078775>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127630 91177308-0d34-0410-b5e6-96231b3b80d8
2011-03-14 23:02:38 +00:00
..
Analysis Negating a recurrence preserves no-self-wrap. 2011-03-14 17:38:54 +00:00
Archive
AsmParser
Bitcode
CodeGen Place context in member variables instead of passing around pointers. 2011-03-14 20:57:14 +00:00
CompilerDriver Build CompilerDriver library. 2011-03-12 22:01:42 +00:00
ExecutionEngine
Linker
MC Fixed the comparison operator for the enhanced 2011-03-12 03:27:54 +00:00
Object
Support Don't compute the file size if we don't need to. 2011-03-10 20:54:07 +00:00
Target Generate a VTBL instruction instead of a series of loads and stores when we 2011-03-14 23:02:38 +00:00
Transforms Added SCEV::NoWrapFlags to manage unsigned, signed, and self wrap 2011-03-14 16:50:06 +00:00
VMCore Unbreak the CMake build. 2011-03-10 00:51:01 +00:00
CMakeLists.txt Build CompilerDriver library. 2011-03-12 22:01:42 +00:00
Makefile