- Sep 06, 2013
-
-
Tim Northover authored
Occasionally DAGCombiner can spot that a SETCC operation is completely redundant and reduce it to "all true" or "all false". If this happens to a vector, the value produced has to take account of what a normal comparison would have produced, which may be an all-1s bitmask. The fix in SelectionDAG.cpp is tested, however, as far as I can see the code in TargetLowering.cpp is possibly unreachable and almost certainly irrelevant when triggered so there are no tests. However, I believe it's still clearly the right change and may save someone else some hassle if it suddenly becomes reachable. So I'm doing it anyway. llvm-svn: 190147
-
Daniel Sanders authored
Their default is to be the same as the result register set. No functional change llvm-svn: 190146
-
Daniel Sanders authored
Their default is to be the same as the result register set. No functional change llvm-svn: 190145
-
Vladimir Medic authored
llvm-svn: 190144
-
Daniel Sanders authored
Their default is to be the same as the result register set. No functional change llvm-svn: 190143
-
Daniel Sanders authored
Their default is to be the same as the result register set. No functional change llvm-svn: 190142
-
Daniel Sanders authored
Their default is to be the same as the result register set. No functional change llvm-svn: 190141
-
Daniel Sanders authored
Their default is to be the same as the result register set. No functional change llvm-svn: 190140
-
Richard Sandiford authored
The architecture has many comparison instructions, including some that extend one of the operands. The signed comparison instructions use sign extensions and the unsigned comparison instructions use zero extensions. In cases where we had a free choice between signed or unsigned comparisons, we were trying to decide at lowering time which would best fit the available instructions, taking things like extension type into account. The code to do that was getting increasingly hairy and was also making some bad decisions. E.g. when comparing the result of two LLCs, it is better to use CR rather than CLR, since CR can be fused with a branch while CLR can't. This patch removes the lowering code and instead adds an operand to integer comparisons to say whether signed comparison is required, whether unsigned comparison is required, or whether either is OK. We can then leave the choice of instruction up to the normal isel code. llvm-svn: 190138
-
Daniel Sanders authored
No functional change llvm-svn: 190134
-
Daniel Sanders authored
Their default is to be the same as the result register set. No functional change llvm-svn: 190133
-
Daniel Sanders authored
No functional change llvm-svn: 190131
-
Richard Sandiford authored
llvm-svn: 190130
-
Matt Arsenault authored
llvm-svn: 190113
-
Matt Arsenault authored
llvm-svn: 190112
-
Tom Stellard authored
llvm-svn: 190110
-
Juergen Ributzka authored
If the DAG already has only legal types, then the second round of DAG combines is skipped. In this case VSELECT+SETCC patterns that match a more efficient instruction (e.g. min/max) are never recognized. This fix allows VSELECT+SETCC combines if the types are already legal before DAG type legalization. Reviewer: Nadav llvm-svn: 190105
-
- Sep 05, 2013
-
-
Kevin Enderby authored
expression uses an assembler temporary symbol from an assignment. In this case the symbol does not have a fragment so the use of getFragment() would be NULL and caused a crash. In the case of an assembler temporary symbol we want to use the AliasedSymbol (if any) which will create a local relocation entry, but if it is not an assembler temporary symbol then let it use that symbol with an external relocation entry. rdar://9356266 llvm-svn: 190096
-
Matt Arsenault authored
llvm-svn: 190093
-
Manman Ren authored
llvm-svn: 190092
-
Matt Arsenault authored
llvm-svn: 190091
-
Rafael Espindola authored
llvm-svn: 190090
-
Yunzhong Gao authored
allow escaped octal character sequences. The patch was discussed in Phabricator. See: http://llvm-reviews.chandlerc.com/D1289 llvm-svn: 190089
-
Manman Ren authored
ptr_to_member. We introduce a new class DITypeRef that represents a reference to a DIType. It wraps around a Value*, which can be either an identifier in MDString or an actual MDNode. The class has a helper function "resolve" that finds the actual MDNode for a given DITypeRef. We specialize getFieldAs to return a field that is a reference to a DIType. To correctly access the base type field of ptr_to_member, getClassType now calls getFieldAs<DITypeRef> to return a DITypeRef. Also add a typedef for DITypeIdentifierMap and a helper generateDITypeIdentifierMap in DebugInfo.h. In DwarfDebug.cpp, we keep a DITypeIdentifierMap and call generateDITypeIdentifierMap to actually populate the map. Verifier is updated accordingly. llvm-svn: 190081
-
Tom Stellard authored
llvm-svn: 190080
-
Tom Stellard authored
llvm-svn: 190079
-
Tom Stellard authored
GlobalAdderss nodes that appeared in more than one basic block were being counted twice. llvm-svn: 190078
-
Tom Stellard authored
llvm-svn: 190077
-
Tom Stellard authored
This pass was segfaulting when it ran into a non-intrinsic function call. Function calls are not supported, so now instead of segfaulting, we will get an assertion failure with a nice error message. I'm not sure how to test this using lit. llvm-svn: 190076
-
Eric Christopher authored
we're proposing it for DWARF5. No functional change intended. llvm-svn: 190074
-
Eric Christopher authored
llvm-svn: 190067
-
Eric Christopher authored
llvm-svn: 190064
-
Joey Gouly authored
llvm-svn: 190060
-
Joey Gouly authored
This removes the custom ISD Node: MEMBARRIER and replaces it with an intrinsic. llvm-svn: 190055
-
Richard Barton authored
These were pretty straightforward instructions, with some assembly support required for HLT. The ARM assembler is keen to split the instruction mnemonic into a (non-existent) 'H' instruction with the LT condition code. An exception for HLT is needed. HLT follows the same rules as BKPT when in IT blocks, so the special BKPT hadling code has been adapted to handle HLT also. Regression tests added including diagnostic tests for out of range immediates and illegal condition codes, as well as negative tests for pre-ARMv8. llvm-svn: 190053
-
Tilmann Scheller authored
Solution is not sufficient to prevent 'mov pc, lr' being emitted for jump table code. Test case doesn't trigger the added functionality. llvm-svn: 190047
-
Tilmann Scheller authored
This improves code generation for jump tables by avoiding the emission of "mov pc, lr" which could fool the processor into believing this is a return from a function causing mispredicts. The code generation logic for jump tables uses ADR to materialize the address of the jump target. Patch by Daniel Stewart! llvm-svn: 190043
-
Richard Sandiford authored
For now these are just used to handle scalar ANDs, ORs and XORs in which all operands are memory. llvm-svn: 190041
-
Nick Lewycky authored
llvm-svn: 190035
-
Nick Lewycky authored
llvm-svn: 190034
-