- Apr 07, 2012
-
-
Alexis Hunt authored
by default. This is a behaviour configurable in the MCAsmInfo. I've decided to turn it on by default in (possibly optimistic) hopes that most assemblers are reasonably sane. If this proves a problem, switching to default seems reasonable. I'm not sure if this is the opportune place to test, but it seemed good to make sure it was tested somewhere. llvm-svn: 154235
-
Jim Grosbach authored
llvm-svn: 154226
-
- Apr 06, 2012
-
-
Jakob Stoklund Olesen authored
llvm-svn: 154210
-
Jakob Stoklund Olesen authored
After register masks were introdruced to represent the call clobbers, it is no longer necessary to have duplicate instruction for iOS. llvm-svn: 154209
-
Chandler Carruth authored
which exists for this purpose. llvm-svn: 154199
-
Sean Callanan authored
disassembler requires a MCSubtargetInfo and a MCInstrInfo to exist in order to initialize the instruction printer and disassembler; however, although the printer and disassembler keep references to these objects they do not own them. Previously, the MCSubtargetInfo and MCInstrInfo objects were just leaked. I have extended LLVMDisasmContext to own these objects and delete them when it is destroyed. llvm-svn: 154192
-
Jakob Stoklund Olesen authored
ARM and Thumb2 mode can use cmn instructions to compare against negative immediates. Thumb1 mode can't. llvm-svn: 154183
-
David Chisnall authored
parameter until we have a more sensible API for doing the same thing. Reviewed by Chandler. llvm-svn: 154180
-
Chandler Carruth authored
simplification has been performed. This is a bit less efficient (requires another ilist walk of the basic blocks) but shouldn't matter in practice. More importantly, it's just too much work to keep track of all the various ways the return instructions can be mutated while simplifying them. This fixes yet another crasher, reported by Daniel Dunbar. llvm-svn: 154179
-
Duncan Sands authored
The modifications are a lot more trivial than they appear to be in the diff! llvm-svn: 154174
-
Benjamin Kramer authored
llvm-svn: 154171
-
Craig Topper authored
Allow 256-bit shuffles to be split if a 128-bit lane contains elements from a single source. This is a rewrite of the 256-bit shuffle splitting code based on similar code from legalize types. Fixes PR12413. llvm-svn: 154166
-
Chandler Carruth authored
dead code, including dead return instructions in some cases. Otherwise, we end up having a bogus poniter to a return instruction that blows up much further down the road. It turns out that this pattern is both simpler to code, easier to update in the face of enhancements to the inliner cleanup, and likely cheaper given that it won't add dead instructions to the list. Thanks to John Regehr's numerous test cases for teasing this out. llvm-svn: 154157
-
Jakob Stoklund Olesen authored
We had special instructions for iOS because r9 is call-clobbered, but that is represented dynamically by the register mask operands now, so there is no need for the pseudo-instructions. llvm-svn: 154144
-
Jim Grosbach authored
The load/store optimizer splits LDRD/STRD into two instructions when the register pairing doesn't work out. For negative offsets in Thumb2, it uses t2STRi8 to do that. That's fine, except for the case when the offset is in the range [-4,-1]. In that case, we'll also form a second t2STRi8 with the original offset plus 4, resulting in a t2STRi8 with a non-negative offset, which ends up as if it were an STRT, which is completely bogus. Similarly for loads. No testcase, unfortunately, as any I've been able to construct is both large and extremely fragile. rdar://11193937 llvm-svn: 154141
-
- Apr 05, 2012
-
-
Jim Grosbach authored
'add r2, #-1024' should just use 'sub r2, #1024' rather than erroring out. Thumb1 aliases for adding a negative immediate to the stack pointer, also. rdar://11192734 llvm-svn: 154123
-
Eric Christopher authored
This enables debuggers to see what are interesting lines for a breakpoint rather than any line that starts a function. rdar://9852092 llvm-svn: 154120
-
Jakob Stoklund Olesen authored
LSR always tries to make the ICmp in the loop latch use the incremented induction variable. This allows the induction variable to be kept in a single register. When the induction variable limit is equal to the stride, SimplifySetCC() would break LSR's hard work by transforming: (icmp (add iv, stride), stride) --> (cmp iv, 0) This forced us to use lea for the IC update, preventing the simpler incl+cmp. <rdar://problem/7643606> <rdar://problem/11184260> llvm-svn: 154119
-
Dan Gohman authored
testcase slightly less trivial. This fixes rdar://11171718. llvm-svn: 154118
-
Owen Anderson authored
Treat f16 the same as f80/f128 for the purposes of generating constants during instruction selection. llvm-svn: 154113
-
Silviu Baranga authored
Added support for unpredictable ADC/SBC instructions on ARM, and also fixed some corner cases involving the PC register as an operand for these instructions. llvm-svn: 154101
-
Silviu Baranga authored
llvm-svn: 154100
-
Hongbin Zheng authored
modify it. llvm-svn: 154098
-
Hongbin Zheng authored
of the BBVectorizePass without using command line option. As pointed out by Hal, we can ask the TargetLoweringInfo for the architecture specific VectorizeConfig to perform vectorizing with architecture specific information. llvm-svn: 154096
-
Hongbin Zheng authored
BasicBlock in other passes, e.g. we can call vectorizeBasicBlock in the loop unroll pass right after the loop is unrolled. llvm-svn: 154089
-
Jim Grosbach authored
rdar://11189467 llvm-svn: 154087
-
Argyrios Kyrtzidis authored
the caller requested a null-terminated one. When mapping the file there could be a racing issue that resulted in the file being larger than the FileSize passed by the caller. We already have an assertion for this in MemoryBuffer::init() but have a runtime guarantee that the buffer will be null-terminated, so do a copy that adds a null-terminator. Protects against crash of rdar://11161822. llvm-svn: 154082
-
Jim Grosbach authored
Plain 'cpsr' is an alias for 'cpsr_fc'. rdar://11153753 llvm-svn: 154080
-
Jakob Stoklund Olesen authored
LSR can fold three addressing modes into its ICmpZero node: ICmpZero BaseReg + Offset => ICmp BaseReg, -Offset ICmpZero -1*ScaleReg + Offset => ICmp ScaleReg, Offset ICmpZero BaseReg + -1*ScaleReg => ICmp BaseReg, ScaleReg The first two cases are only used if TLI->isLegalICmpImmediate() likes the offset. Make sure the right Offset sign is passed to this method in the second case. The ARM version is not symmetric. <rdar://problem/11184260> llvm-svn: 154079
-
Akira Hatanaka authored
llvm-svn: 154062
-
- Apr 04, 2012
-
-
Owen Anderson authored
llvm-svn: 154054
-
Pete Cooper authored
REG_SEQUENCE expansion to COPY instructions wasn't taking account of sub register indices on the source registers. No simple test case llvm-svn: 154051
-
Benjamin Kramer authored
Still not fixed in the standard ;) llvm-svn: 154044
-
Pete Cooper authored
llvm-svn: 154039
-
Akira Hatanaka authored
types for N32 ABI. Add new test case and update existing ones. llvm-svn: 154038
-
Akira Hatanaka authored
types for N32 ABI. Test case will be updated after the patch that fixes TargetLowering::getPICJumpTableRelocBase is checked in. llvm-svn: 154036
-
Akira Hatanaka authored
types for N32 ABI and update test case. llvm-svn: 154034
-
Jakob Stoklund Olesen authored
A MOVCCr instruction can be commuted by inverting the condition. This can help reduce register pressure and remove unnecessary copies in some cases. <rdar://problem/11182914> llvm-svn: 154033
-
Jakob Stoklund Olesen authored
llvm-svn: 154032
-
Akira Hatanaka authored
types for N32 ABI and update test case. llvm-svn: 154031
-