llvm-6502/test/CodeGen
Filipe Cabecinhas c5f611404c Convert some X86 blendv* intrinsics into IR.
Summary:
Implemented an InstCombine transformation that takes a blendv* intrinsic
call and translates it into an IR select, if the mask is constant.

This will eventually get lowered into blends with immediates if possible,
or pblendvb (with an option to further optimize if we can transform the
pblendvb into a blend+immediate instruction, depending on the selector).
It will also enable optimizations by the IR passes, which give up on
sight of the intrinsic.

Both the transformation and the lowering of its result to asm got shiny
new tests.

The transformation is a bit convoluted because of blendvp[sd]'s
definition:

Its mask is a floating point value! This forces us to convert it and get
the highest bit. I suppose this happened because the mask has type
__m128 in Intel's intrinsic and v4sf (for blendps) in gcc's builtin.

I will send an email to llvm-dev to discuss if we want to change this or
not.

Reviewers: grosbach, delena, nadav

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209643 91177308-0d34-0410-b5e6-96231b3b80d8
2014-05-27 03:42:20 +00:00
..
AArch64 AArch64: force i1 to be zero-extended at an ABI boundary. 2014-05-26 17:22:07 +00:00
ARM Segmented stacks: omit __morestack call when there's no frame. 2014-05-22 13:03:43 +00:00
CPP
Generic
Hexagon reverting r209132 2014-05-19 16:22:11 +00:00
Inputs
Mips Use alias linkage and visibility to decide tls access mode. 2014-05-23 19:16:56 +00:00
MSP430 Fix broken FileCheck prefixes 2014-05-23 19:06:24 +00:00
NVPTX
PowerPC [PPC] Use alias symbols in address computation. 2014-05-26 19:08:19 +00:00
R600 R600: Try to convert BFE back to standard bit ops when possible. 2014-05-22 18:09:12 +00:00
SPARC TableGen: fix operand counting for aliases 2014-05-16 09:42:04 +00:00
SystemZ
Thumb Segmented stacks: omit __morestack call when there's no frame. 2014-05-22 13:03:43 +00:00
Thumb2 Fix the Load/Store optimization pass to work with Thumb1. 2014-05-16 14:14:30 +00:00
X86 Convert some X86 blendv* intrinsics into IR. 2014-05-27 03:42:20 +00:00
XCore