| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
check for a LandingPadInst.
llvm-svn: 137745
|
| |
|
|
|
|
|
|
| |
getFirstInsertionPt() returns an iterator to the first insertion point in a
basic block. This is after all PHIs and any other instruction which is required
to be at the top of the basic block (like LandingPadInst).
llvm-svn: 137744
|
| |
|
|
| |
llvm-svn: 137743
|
| |
|
|
|
|
| |
The argument is unused, and is a layering violation in any case.
llvm-svn: 137735
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 137728
|
| |
|
|
|
|
| |
Patch by Kristof Beyls and James Malloy.
llvm-svn: 137723
|
| |
|
|
| |
llvm-svn: 137719
|
| |
|
|
|
|
|
|
| |
ends can use without needing to be aware of the plugin (or the plugin be aware of the front end).
Before 3.0, I'd like to add a mechanism for automatically loading a set of plugins from a config file. API suggestions welcome...
llvm-svn: 137717
|
| |
|
|
| |
llvm-svn: 137712
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 137707
|
| |
|
|
| |
llvm-svn: 137706
|
| |
|
|
|
|
| |
load/store.
llvm-svn: 137702
|
| |
|
|
|
|
| |
to be wrong (or at least somewhat suspect). Leave a FIXME for Bill.
llvm-svn: 137694
|
| |
|
|
| |
llvm-svn: 137693
|
| |
|
|
|
|
|
|
| |
This commit includes a mention of the landingpad instruction, but it's not
changing the behavior around it. I think the current behavior is correct,
though. Bill, can you double-check that?
llvm-svn: 137691
|
| |
|
|
| |
llvm-svn: 137690
|
| |
|
|
| |
llvm-svn: 137689
|
| |
|
|
|
|
| |
Thumb2 NEON decoding hooks to bring us closer to correctness.
llvm-svn: 137686
|
| |
|
|
|
|
| |
also add the AVX versions of the 128-bit patterns
llvm-svn: 137685
|
| |
|
|
|
|
|
| |
predicate and TB encoding fields. This fix the encoding for the
attached testcase. This fixes PR10625.
llvm-svn: 137684
|
| |
|
|
|
|
| |
uses of getCompileUnit().
llvm-svn: 137683
|
| |
|
|
|
|
| |
if necessary.
llvm-svn: 137679
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 137673
|
| |
|
|
| |
llvm-svn: 137672
|
| |
|
|
|
|
| |
possible.
llvm-svn: 137668
|
| |
|
|
| |
llvm-svn: 137667
|
| |
|
|
| |
llvm-svn: 137664
|
| |
|
|
|
|
| |
variable.
llvm-svn: 137663
|
| |
|
|
|
|
| |
is a bit unusual.
llvm-svn: 137662
|
| |
|
|
|
|
|
| |
when AVX mode is one. Otherwise is just more work for the type
legalizer.
llvm-svn: 137661
|
| |
|
|
|
|
| |
location expressions. In such cases, AT_location attribute's value will be a label.
llvm-svn: 137659
|
| |
|
|
| |
llvm-svn: 137658
|
| |
|
|
|
|
| |
instruction.
llvm-svn: 137656
|
| |
|
|
|
|
| |
write to memory.) Marking it as such makes some checks for immobility go away.
llvm-svn: 137655
|
| |
|
|
|
|
| |
Simon Moll on llvmdev.
llvm-svn: 137654
|
| |
|
|
| |
llvm-svn: 137652
|
| |
|
|
| |
llvm-svn: 137650
|
| |
|
|
| |
llvm-svn: 137648
|
| |
|
|
|
|
|
|
| |
mode. Update tests to reflect this fact.
Patch by James Molloy.
llvm-svn: 137647
|
| |
|
|
| |
llvm-svn: 137643
|
| |
|
|
| |
llvm-svn: 137642
|
| |
|
|
| |
llvm-svn: 137641
|
| |
|
|
|
|
| |
When a variable is inlined multiple places, abstract variable keeps name, location, type etc.. info and all other concreate instances of the variable directly refers to abstract variable.
llvm-svn: 137637
|
| |
|
|
| |
llvm-svn: 137636
|
| |
|
|
|
|
| |
comprehensive NEON decoding testcase.
llvm-svn: 137635
|
| |
|
|
| |
llvm-svn: 137632
|