- Aug 17, 2011
-
-
Owen Anderson authored
llvm-svn: 137838
-
Akira Hatanaka authored
llvm-svn: 137831
-
Owen Anderson authored
Allow the MCDisassembler to return a "soft fail" status code, indicating an instruction that is disassemblable, but invalid. Only used for ARM UNPREDICTABLE instructions at the moment. Patch by James Molloy. llvm-svn: 137830
-
Bruno Cardoso Lopes authored
match splats in the form (splat (scalar_to_vector (load ...))) whenever the load can be folded. All the logic and instruction emission is working but because of PR8156, there are no ways to match loads, cause they can never be folded for splats. Thus, the tests are XFAILed, but I've tested and exercised all the logic using a relaxed version for checking the foldable loads, as if the bug was already fixed. This should work out of the box once PR8156 gets fixed since MayFoldLoad will work as expected. llvm-svn: 137810
-
Bruno Cardoso Lopes authored
llvm-svn: 137808
-
Bruno Cardoso Lopes authored
vinsertf128 $1 + vpermilps $0, remove the old code that used to first do the splat in a 128-bit vector and then insert it into a larger one. This is better because the handling code gets simpler and also makes a better room for the upcoming vbroadcast! llvm-svn: 137807
-
Akira Hatanaka authored
llvm-svn: 137804
-
Jim Grosbach authored
llvm-svn: 137788
-
Owen Anderson authored
Separate out Thumb1 instructions that need an S bit operand from those that do not, for the purposes of decoding them. llvm-svn: 137787
-
Jim Grosbach authored
llvm-svn: 137779
-
- Aug 16, 2011
-
-
Jim Grosbach authored
llvm-svn: 137774
-
Jim Grosbach authored
llvm-svn: 137759
-
Jim Grosbach authored
llvm-svn: 137756
-
Jim Grosbach authored
Thumb one requires that many arithmetic instruction forms have an 'S' suffix. For Thumb2, the whether the suffix is required or precluded depends on whether the instruction is in an IT block. Use target parser predicates to check for these sorts of context-sensitive constraints. llvm-svn: 137746
-
Bruno Cardoso Lopes authored
there is no support for native 256-bit shuffles, be more smart in some cases, for example, when you can extract specific 128-bit parts and use regular 128-bit shuffles for them. Example: For this shuffle: shufflevector <4 x i64> %a, <4 x i64> %b, <4 x i32> <i32 1, i32 0, i32 7, i32 6> This was expanded to: vextractf128 $1, %ymm1, %xmm2 vpextrq $0, %xmm2, %rax vmovd %rax, %xmm1 vpextrq $1, %xmm2, %rax vmovd %rax, %xmm2 vpunpcklqdq %xmm1, %xmm2, %xmm1 vpextrq $0, %xmm0, %rax vmovd %rax, %xmm2 vpextrq $1, %xmm0, %rax vmovd %rax, %xmm0 vpunpcklqdq %xmm2, %xmm0, %xmm0 vinsertf128 $1, %xmm1, %ymm0, %ymm0 ret Now we get: vshufpd $1, %xmm0, %xmm0, %xmm0 vextractf128 $1, %ymm1, %xmm1 vshufpd $1, %xmm1, %xmm1, %xmm1 vinsertf128 $1, %xmm1, %ymm0, %ymm0 llvm-svn: 137733
-
Jim Grosbach authored
Patch by Kristof Beyls and James Malloy. llvm-svn: 137723
-
Akira Hatanaka authored
Mips1 does not support double precision loads or stores, therefore two single precision loads or stores must be used in place of these instructions. This patch treats double precision loads and stores as if they are legal instructions until MCInstLowering, instead of generating the single precision instructions during instruction selection or Prolog/Epilog code insertion. Without the changes made in this patch, llc produces code that has the same problem described in r137484 or bails out when MipsInstrInfo::storeRegToStackSlot or loadRegFromStackSlot is called before register allocation. llvm-svn: 137711
-
Akira Hatanaka authored
llvm-svn: 137707
-
Akira Hatanaka authored
llvm-svn: 137706
-
Owen Anderson authored
Specify a necessary fixed bit for VLD3DUP, and otherwise rearrange the Thumb2 NEON decoding hooks to bring us closer to correctness. llvm-svn: 137686
-
Bruno Cardoso Lopes authored
also add the AVX versions of the 128-bit patterns llvm-svn: 137685
-
Bruno Cardoso Lopes authored
predicate and TB encoding fields. This fix the encoding for the attached testcase. This fixes PR10625. llvm-svn: 137684
-
Jim Grosbach authored
Allow a target assembly parser to do context sensitive constraint checking on a potential instruction match. This will be used, for example, to handle Thumb2 IT block parsing. llvm-svn: 137675
-
- Aug 15, 2011
-
-
Bruno Cardoso Lopes authored
when AVX mode is one. Otherwise is just more work for the type legalizer. llvm-svn: 137661
-
Owen Anderson authored
Enforce the constraint that Rt must be even on LDRD/STRD instructions in ARM mode. Update tests to reflect this fact. Patch by James Molloy. llvm-svn: 137647
-
Owen Anderson authored
llvm-svn: 137643
-
Owen Anderson authored
llvm-svn: 137641
-
Owen Anderson authored
llvm-svn: 137636
-
Owen Anderson authored
Fix problems decoding the to/from-lane NEON memory instructions, and add a comprehensive NEON decoding testcase. llvm-svn: 137635
-
Jim Grosbach authored
llvm-svn: 137615
-
- Aug 13, 2011
-
-
Bob Wilson authored
Apparently we never added code to expand these pseudo instructions, and in over a year, no one has noticed. Our register allocator must be awesome! llvm-svn: 137551
-
Jim Grosbach authored
Tidy up the code a bit and push the definition of the value next to the uses to try to minimize this sort of issue from arising again while I'm at it. rdar://9945172 llvm-svn: 137525
-
- Aug 12, 2011
-
-
Bruno Cardoso Lopes authored
llvm-svn: 137521
-
Bruno Cardoso Lopes authored
vectors. It operates on 128-bit elements instead of regular scalar types. Recognize shuffles that are suitable for VPERM2F128 and teach the x86 legalizer how to handle them. llvm-svn: 137519
-
Bruno Cardoso Lopes authored
llvm-svn: 137518
-
Akira Hatanaka authored
llvm-svn: 137515
-
Jim Grosbach authored
Partial fix for rdar://9945172. llvm-svn: 137513
-
Owen Anderson authored
Fix some remaining issues with decoding ARM-mode memory instructions, and add another batch of tests. llvm-svn: 137502
-
Owen Anderson authored
llvm-svn: 137499
-
Owen Anderson authored
Specify fixed bit in the LDRBT encoding, which allows us to distinguish it from certain USAT16 encodings. llvm-svn: 137494
-