llvm-project/llvm/lib/VMCore
Chris Lattner 8e6a8f984c Teach VMCore to constant fold shufflevectors with constant operands.
This allows us to compile:

#include <emmintrin.h>
typedef __m128i VSInt16;
typedef short vSInt16 __attribute__ ((__vector_size__ (16)));
VSInt16 t3() {
  return (VSInt16)((vSInt16)_mm_set1_epi16(6518));
}

into:

_t3:
	movaps	LCPI1_0, %xmm0
	ret

instead of:
_t3:
	movl	$6518, %eax
	movd	%eax, %xmm0
	pextrw	$0, %xmm0, %eax
	xorps	%xmm0, %xmm0
	pinsrw	$0, %eax, %xmm0
	punpcklwd	%xmm0, %xmm0
	pshufd	$0, %xmm0, %xmm0
	ret

llvm-svn: 44856
2007-12-11 07:49:37 +00:00
..
AsmWriter.cpp Adding a collector name attribute to Function in the IR. These 2007-12-10 03:18:06 +00:00
AutoUpgrade.cpp Rather than having special rules like "intrinsics cannot 2007-12-03 20:06:50 +00:00
BasicBlock.cpp Reverting dtor devirtualization patch. 2007-12-10 02:14:30 +00:00
ConstantFold.cpp Teach VMCore to constant fold shufflevectors with constant operands. 2007-12-11 07:49:37 +00:00
ConstantFold.h The #include <iterator> isn't needed in this header. 2007-10-22 20:44:10 +00:00
Constants.cpp Reverting dtor devirtualization patch. 2007-12-10 02:14:30 +00:00
Core.cpp Adding a collector name attribute to Function in the IR. These 2007-12-10 03:18:06 +00:00
Dominators.cpp Make DomTree and PostDomTree thin wrappers around DomTreeBase, rather than inheriting from it. 2007-10-23 20:58:37 +00:00
Function.cpp Delete the CollectorNamePool if it should become empty. 2007-12-10 03:35:18 +00:00
Globals.cpp handle gep aliasee 2007-05-05 23:49:02 +00:00
InlineAsm.cpp Reverting dtor devirtualization patch. 2007-12-10 02:14:30 +00:00
Instruction.cpp Reverting dtor devirtualization patch. 2007-12-10 02:14:30 +00:00
Instructions.cpp Reverting dtor devirtualization patch. 2007-12-10 02:14:30 +00:00
IntrinsicInst.cpp Change the MachineDebugInfo to MachineModuleInfo to better reflect usage 2007-01-26 21:22:28 +00:00
LeakDetector.cpp Changed llvm_ostream et all to OStream. llvm_cerr, llvm_cout, llvm_null, are 2006-12-07 01:30:32 +00:00
Makefile Make the makefile tell us when Intrinsics.gen is being updated. 2006-10-26 01:42:23 +00:00
Mangler.cpp Rather than having special rules like "intrinsics cannot 2007-12-03 20:06:50 +00:00
Module.cpp Implement review feedback. Aliasees can be either GlobalValue's or 2007-04-28 13:45:00 +00:00
ModuleProvider.cpp Remove trailing whitespace 2005-04-21 23:48:37 +00:00
Pass.cpp Reduce reliance on rtti info 2007-10-18 16:11:18 +00:00
PassManager.cpp Add explicit keywords. 2007-10-08 15:08:41 +00:00
SymbolTableListTraitsImpl.h The (negative) offset from a SymbolTableListTraits-using ilist to its container 2007-04-17 04:04:14 +00:00
Type.cpp Fix PR1146: parameter attributes are longer part of 2007-11-27 13:23:08 +00:00
TypeSymbolTable.cpp shrink vmcore by moving symbol table stripping support out of VMCore into 2007-02-07 06:22:45 +00:00
Value.cpp Reverting dtor devirtualization patch. 2007-12-10 02:14:30 +00:00
ValueSymbolTable.cpp disable some noisy debug output 2007-02-25 20:42:59 +00:00
ValueTypes.cpp Initial infrastructure for arbitrary precision integer 2007-10-16 09:56:48 +00:00
Verifier.cpp Check that there are not more attributes than 2007-11-30 15:52:20 +00:00