- Jan 31, 2013
-
-
Chad Rosier authored
Each target implementation was needlessly recomputing the index. Part of rdar://13076458 llvm-svn: 174083
-
Eric Christopher authored
llvm-svn: 174009
-
Eric Christopher authored
register for inline asm. This conforms to how gcc allows for effective casting of inputs into gprs (fprs is already handled). llvm-svn: 174008
-
- Jan 30, 2013
-
-
Evan Cheng authored
llvm-svn: 173987
-
- Jan 29, 2013
-
-
Evan Cheng authored
llvm-svn: 173812
-
Hans Wennborg authored
llvm-svn: 173798
-
Craig Topper authored
llvm-svn: 173777
-
Evan Cheng authored
conditions are met: 1. They share the same operand and are in the same BB. 2. Both outputs are used. 3. The target has a native instruction that maps to ISD::FSINCOS node or the target provides a sincos library call. Implemented the generic optimization in sdisel and enabled it for Mac OSX. Also added an additional optimization for x86_64 Mac OSX by using an alternative entry point __sincos_stret which returns the two results in xmm0 / xmm1. rdar://13087969 PR13204 llvm-svn: 173755
-
- Jan 28, 2013
-
-
Craig Topper authored
llvm-svn: 173674
-
Craig Topper authored
Add missing break in 256-bit palignr comment printing. No test case yet because the comment itself is still wrong. llvm-svn: 173669
-
Craig Topper authored
llvm-svn: 173667
-
- Jan 26, 2013
-
-
Benjamin Kramer authored
llvm-svn: 173572
-
Benjamin Kramer authored
This catches many cases where we can emit a more efficient shuffle for a specific mask or when the mask contains undefs. Once the splat is lowered to unpacks we can't do that anymore. There is a possibility of moving the promotion after pshufb matching, but I'm not sure if pshufb with a mask loaded from memory is faster than 3 shuffles, so I avoided that for now. llvm-svn: 173569
-
- Jan 25, 2013
-
-
Eli Bendersky authored
(defined by the x32 ABI) mode, in which case its pointers are 32-bits in size. This knowledge is also added to X86RegisterInfo that now returns the appropriate registers in getPointerRegClass. There are many outcomes to this change. In order to keep the patches separate and manageable, we start by focusing on some simple testable cases. The patch adds a test with passing a pointer to a function - focusing on the difference between the two data models for x86-64. Another test is added for handling of 'sret' arguments (and functionality is added in X86ISelLowering to make it work). A note on naming: the "x32 ABI" document refers to the AMD64 architecture (in LLVM it's distinguished by being is64Bits() in the x86 subtarget) with two variations: the LP64 (default) data model, and the ILP32 data model. This patch adds predicates to the subtarget which are consistent with this naming scheme. llvm-svn: 173503
-
Renato Golin authored
llvm-svn: 173382
-
- Jan 22, 2013
-
-
Michael Liao authored
- Add list of physical registers clobbered in pseudo atomic insts Physical registers are clobbered when pseudo atomic instructions are expanded. Add them in clobber list to prevent DAG scheduler to mis-schedule them after these insns are declared side-effect free. - Add test case from Michael Kuperstein <michael.m.kuperstein@intel.com> llvm-svn: 173200
-
Benjamin Kramer authored
X86: Make sure we account for the FMA4 register immediate value, otherwise rip-rel relocations will be off by one byte. PR15040. llvm-svn: 173176
-
Eli Bendersky authored
Add the x32 environment kind to the triple, and separate the concept of pointer size and callee save stack slot size, since they're not equal on x32. llvm-svn: 173175
-
Tim Northover authored
Previously we tried to infer it from the bit width size, with an added IsIEEE argument for the PPC/IEEE 128-bit case, which had a default value. This default value allowed bugs to creep in, where it was inappropriate. llvm-svn: 173138
-
- Jan 21, 2013
-
-
Craig Topper authored
llvm-svn: 173010
-
Craig Topper authored
llvm-svn: 173009
-
Craig Topper authored
llvm-svn: 173008
-
Craig Topper authored
llvm-svn: 173006
-
Craig Topper authored
llvm-svn: 173005
-
- Jan 20, 2013
-
-
Craig Topper authored
llvm-svn: 172995
-
Craig Topper authored
Capitalize lowerTRUNCATE so that it matches the other lower functions in this file despite it not matching coding standards. llvm-svn: 172994
-
Renato Golin authored
llvm-svn: 172992
-
Craig Topper authored
llvm-svn: 172969
-
Nadav Rotem authored
Revert 172708. The optimization handles esoteric cases but adds a lot of complexity both to the X86 backend and to other backends. This optimization disables an important canonicalization of chains of SEXT nodes and makes SEXT and ZEXT asymmetrical. Disabling the canonicalization of consecutive SEXT nodes into a single node disables other DAG optimizations that assume that there is only one SEXT node. The AVX mask optimizations is one example. Additionally this optimization does not update the cost model. llvm-svn: 172968
-
Craig Topper authored
llvm-svn: 172936
-
Craig Topper authored
llvm-svn: 172935
-
Craig Topper authored
llvm-svn: 172933
-
Craig Topper authored
llvm-svn: 172930
-
Craig Topper authored
llvm-svn: 172927
-
- Jan 19, 2013
-
-
Nadav Rotem authored
llvm-svn: 172894
-
Craig Topper authored
Use MVT instead of EVT when computing shuffle immediates since they can only be for legal types. Keeps compiler from generating unneeded checks and handling for extended types. llvm-svn: 172893
-
Nadav Rotem authored
On Sandybridge loading unaligned 256bits using two XMM loads (vmovups and vinsertf128) is faster than using a single vmovups instruction. llvm-svn: 172868
-
- Jan 18, 2013
-
-
Craig Topper authored
Calculate vector element size more directly for VINSERTF128/VEXTRACTF128 immediate handling. Also use MVT since this only called on legal types during pattern matching. llvm-svn: 172797
-
Craig Topper authored
llvm-svn: 172795
-
Craig Topper authored
llvm-svn: 172793
-