- Feb 11, 2011
-
-
Rafael Espindola authored
llvm-svn: 125363
-
Evan Cheng authored
This define float @foo(float %x, float %y) nounwind readnone { entry: %0 = tail call float @copysignf(float %x, float %y) nounwind readnone ret float %0 } Was compiled to: vmov s0, r1 bic r0, r0, #-2147483648 vmov s1, r0 vcmpe.f32 s0, #0 vmrs apsr_nzcv, fpscr it lt vneglt.f32 s1, s1 vmov r0, s1 bx lr This fails to copy the sign of -0.0f because it's lost during the float to int conversion. Also, it's sub-optimal when the inputs are in GPR registers. Now it uses integer and + or operations when it's profitable. And it's correct! lsrs r1, r1, #31 bfi r0, r1, #31, #1 bx lr rdar://8984306 llvm-svn: 125357
-
David Greene authored
[AVX] Implement 256-bit vector lowering for SCALAR_TO_VECTOR. This largely completes support for 128-bit fallback lowering for code that is not 256-bit ready. llvm-svn: 125315
-
- Feb 10, 2011
-
-
Bruno Cardoso Lopes authored
Fix a lot of o32 CC issues and add a bunch of tests. Patch by Akira Hatanaka with some small modifications by me. llvm-svn: 125292
-
David Greene authored
[AVX] Implement 256-bit vector lowering for EXTRACT_VECTOR_ELT. llvm-svn: 125284
-
Che-Liang Chiou authored
llvm-svn: 125279
-
- Feb 09, 2011
-
-
David Greene authored
[AVX] Implement 256-bit vector lowering for INSERT_VECTOR_ELT. llvm-svn: 125187
-
Richard Osborne authored
llvm-svn: 125186
-
- Feb 08, 2011
-
-
Owen Anderson authored
Revert both r121082 (which broke a bunch of constant pool stuff) and r125074 (which worked around it). This should get us back to the old, correct behavior, though it will make the integrated assembler unhappy for the time being. llvm-svn: 125127
-
David Greene authored
[AVX] Implement BUILD_VECTOR lowering for 256-bit vectors. For anything but the simplest of cases, lower a 256-bit BUILD_VECTOR by splitting it into 128-bit parts and recombining. llvm-svn: 125105
-
Evan Cheng authored
t2LDRpci with t2LDRi12. There are a couple of problems with this. 1. The encoding for the literal and immediate constant are different. Note bit 7 of the literal case is 'U' so it can be negative. 2. t2LDRi12 is now narrowed to tLDRpci before constant island pass is run. So we end up never using the Thumb2 instruction, which ends up creating a lot more constant islands. llvm-svn: 125074
-
- Feb 07, 2011
-
-
Bruno Cardoso Lopes authored
llvm-svn: 125055
-
Bruno Cardoso Lopes authored
parsing of operands introduced in r125030. As a small note, besides using a more generic approach we can also have more descriptive output when debugging llvm-mc, example: mcr p7, #1, r5, c1, c1, #4 note: parsed instruction: ['mcr', <ARMCC::al>, <coprocessor number: 7>, 1, <register 73>, <coprocessor register: 1>, <coprocessor register: 1>, 4] llvm-svn: 125052
-
David Greene authored
[AVX] Insert/extract subvector lowering support. This includes a couple of utility functions that will be used in other places for more AVX lowering. llvm-svn: 125029
-
Jason W Kim authored
llvm-svn: 125025
-
-
Bob Wilson authored
The vld1-lane, vld1-dup and vst1-lane instructions do not yet support using post-increment versions, but all the rest of the NEON load/store instructions should be handled now. llvm-svn: 125014
-
Bob Wilson authored
These operations are expanded to pairs of loads or stores, and the first one uses the address register update to produce the address for the second one. So far, the second load/store has also updated the address register, just for convenience, since that output has never been used. In anticipation of actually supporting post-increment updates for these operations, this changes the non-updating operations to use a non-updating load/store for the second instruction. llvm-svn: 125013
-
Bob Wilson authored
llvm-svn: 125012
-
Bob Wilson authored
llvm-svn: 125011
-
Bob Wilson authored
until the instructions are emitted or printed. llvm-svn: 125010
-
Bob Wilson authored
llvm-svn: 125009
-
Jason W Kim authored
Unified EmitTextAttribute for both Asm and Obj emission (.cpu only) Added necessary cortex-A8 related attrs for codegen compat tests. llvm-svn: 124995
-
- Feb 06, 2011
-
-
Anders Carlsson authored
llvm-svn: 124989
-
- Feb 05, 2011
-
-
NAKAMURA Takumi authored
Target/X86: Tweak allocating shadow area (aka home) on Win64. It must be enough for caller to allocate one. llvm-svn: 124949
-
NAKAMURA Takumi authored
llvm-svn: 124948
-
NAKAMURA Takumi authored
llvm-svn: 124947
-
NAKAMURA Takumi authored
llvm-svn: 124946
-
David Greene authored
[AVX] Revert 124910 until clients are ready. llvm-svn: 124912
-
David Greene authored
[AVX] Add some utilities to insert and extract 128-bit subvectors. This allows us to easily support 256-bit operations that don't have native 256-bit support. This applies to integer operations, certain types of shuffles and various othher things. llvm-svn: 124910
-
- Feb 04, 2011
-
-
Jason W Kim authored
Teach ARM/MC/ELF to handle R_ARM_JUMP24 relocation type for conditional jumps. (yes, this is different from R_ARM_CALL) - Adds a new method getARMBranchTargetOpValue() which handles the necessary distinction between the conditional and unconditional br/bl needed for ARM/ELF At least for ARM mode, the needed fixup for conditional versus unconditional br/bl is identical, but the ARM docs and existing ARM tools expect this reloc type... Added a few FIXME's for future naming fixups in ARMInstrInfo.td llvm-svn: 124895
-
Daniel Dunbar authored
custom conversion functions). llvm-svn: 124872
-
David Greene authored
[AVX] Support VSINSERTF128 with more patterns and appropriate infrastructure. This makes lowering 256-bit vectors to 128-bit vectors simple when 256-bit vector support is not available. llvm-svn: 124868
-
- Feb 03, 2011
-
-
Bob Wilson authored
llvm-svn: 124819
-
David Greene authored
[AVX] VEXTRACTF128 support. This commit includes patterns for matching EXTRACT_SUBVECTOR to VEXTRACTF128 along with support routines to examine and translate index values. VINSERTF128 comes next. With these two in place we can begin supporting more AVX operations as INSERT/EXTRACT can be used as a fallback when 256-bit support is not available. llvm-svn: 124797
-
Richard Osborne authored
llvm-svn: 124794
-
Rafael Espindola authored
Reversing the operands allows us to fold, but doesn't force us to. Also, at this point the DAG is still being optimized, so the check for hasOneUse is not very precise. llvm-svn: 124773
-
- Feb 02, 2011
-
-
Bob Wilson authored
llvm-svn: 124725
-
Benjamin Kramer authored
This makes the job of the later optzn passes easier, allowing the vast amount of icmp transforms to chew on it. We transform 840 switches in gcc.c, leading to a 16k byte shrink of the resulting binary on i386-linux. The testcase from README.txt now compiles into decl %edi cmpl $3, %edi sbbl %eax, %eax andl $1, %eax ret llvm-svn: 124724
-
Richard Osborne authored
llvm-svn: 124722
-