llvm-project/llvm
Nate Begeman 269a6da023 ~40% faster vector shl <4 x i32> on SSE 4.1 Larger improvements for smaller types coming in future patches.
For:

define <2 x i64> @shl(<4 x i32> %r, <4 x i32> %a) nounwind readnone ssp {
entry:
  %shl = shl <4 x i32> %r, %a                     ; <<4 x i32>> [#uses=1]
  %tmp2 = bitcast <4 x i32> %shl to <2 x i64>     ; <<2 x i64>> [#uses=1]
  ret <2 x i64> %tmp2
}

We get:

_shl:                                   ## @shl
	pslld	$23, %xmm1
	paddd	LCPI0_0, %xmm1
	cvttps2dq	%xmm1, %xmm1
	pmulld	%xmm1, %xmm0
	ret

Instead of:

_shl:                                   ## @shl
	pshufd	$3, %xmm0, %xmm2
	movd	%xmm2, %eax
	pshufd	$3, %xmm1, %xmm2
	movd	%xmm2, %ecx
	shll	%cl, %eax
	movd	%eax, %xmm2
	pshufd	$1, %xmm0, %xmm3
	movd	%xmm3, %eax
	pshufd	$1, %xmm1, %xmm3
	movd	%xmm3, %ecx
	shll	%cl, %eax
	movd	%eax, %xmm3
	punpckldq	%xmm2, %xmm3
	movd	%xmm0, %eax
	movd	%xmm1, %ecx
	shll	%cl, %eax
	movd	%eax, %xmm2
	movhlps	%xmm0, %xmm0
	movd	%xmm0, %eax
	movhlps	%xmm1, %xmm1
	movd	%xmm1, %ecx
	shll	%cl, %eax
	movd	%eax, %xmm0
	punpckldq	%xmm0, %xmm2
	movdqa	%xmm2, %xmm0
	punpckldq	%xmm3, %xmm0
	ret

llvm-svn: 109549
2010-07-27 22:37:06 +00:00
..
autoconf Try to work around the relative install-sh path problem. 2010-07-22 21:13:40 +00:00
bindings Implement the "linker_private_weak" linkage type. This will be used for 2010-07-01 21:55:59 +00:00
cmake Don't link against libm and libpthread which don't exist in BeOS/Haiku. Also, 2010-06-23 06:48:34 +00:00
docs re-commit r109220, the compile error has already been fixed 2010-07-26 18:48:07 +00:00
examples Convert some tab stops into spaces. 2010-07-12 08:16:59 +00:00
include remove bogus assert, use static_cast for additional checking 2010-07-27 21:46:11 +00:00
lib ~40% faster vector shl <4 x i32> on SSE 4.1 Larger improvements for smaller types coming in future patches. 2010-07-27 22:37:06 +00:00
projects Remove bogus link. 2010-07-16 06:33:36 +00:00
runtime Delete a blank line. 2010-04-16 13:32:55 +00:00
test ~40% faster vector shl <4 x i32> on SSE 4.1 Larger improvements for smaller types coming in future patches. 2010-07-27 22:37:06 +00:00
tools Clone and restore the module being reduced in 2010-07-26 00:07:51 +00:00
unittests missed a use of SizeRequired. 2010-07-22 21:34:55 +00:00
utils Return -1 only on failure to execute a program. 2010-07-27 11:19:36 +00:00
website
CMakeLists.txt start straightening out libedis's dependencies and make it fit 2010-07-20 18:25:19 +00:00
CREDITS.TXT long past time I added myself to this, I suppose. 2010-07-19 22:04:28 +00:00
LICENSE.TXT
Makefile Add support for a new Apple-style build target, EmbeddedSim, that builds 2010-07-20 20:44:02 +00:00
Makefile.common
Makefile.config.in typo in comment, regeneration not necessary 2010-07-07 13:58:46 +00:00
Makefile.rules Fix library build messages. 2010-07-26 20:15:47 +00:00
ModuleInfo.txt
README.txt (Hopefully) One last test. 2010-07-27 00:04:55 +00:00
build-for-llvm-top.sh
configure Regenerate. 2010-07-22 21:13:48 +00:00
llvm.spec.in

README.txt

\Low Level Virtual Machine (LLVM)
================================

This directory and its subdirectories contain source code for the Low Level
Virtual Machine, a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments.

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the HTML documentation provided in docs/index.html for further
assistance with LLVM.

If you're writing a package for LLVM, see docs/Packaging.html for our
suggestions.