- Jan 10, 2014
-
-
Arnold Schwaighofer authored
for (i = 0; i < N; ++i) A[i * Stride1] += B[i * Stride2]; We take loops like this and check that the symbolic strides 'Strided1/2' are one and drop to the scalar loop if they are not. This is currently disabled by default and hidden behind the flag 'enable-mem-access-versioning'. radar://13075509 llvm-svn: 198950
-
Artyom Skrobov authored
llvm-svn: 198945
-
Saleem Abdulrasool authored
The disassembler would no longer be able to disambiguage between the two variants (explicit immediate #0 vs implicit, omitted #0) for the ldrt, strt, ldrbt, strbt mnemonics as both versions indicated the disassembler routine. llvm-svn: 198944
-
Kristof Beyls authored
llvm-svn: 198941
-
Rafael Espindola authored
This change was requested to avoid confusion if we ever support non windows coff systems. llvm-svn: 198938
-
Kristof Beyls authored
llvm-svn: 198937
-
Saleem Abdulrasool authored
The GNU assembler supports prefixing the expression with a '#' to indiciate that the value that is being moved is infact a constant. This improves the compatibility of the integrated assembler's parser for this. llvm-svn: 198916
-
Saleem Abdulrasool authored
The GNU assembler has an extension that allows for the elision of the paired register (dt2) for the LDRD and STRD mnemonics. Add support for this in the assembly parser. Canonicalise the usage during the instruction parsing from the specified version. llvm-svn: 198915
-
Saleem Abdulrasool authored
The ARM ARM indicates the mnemonics as follows: ldrbt{<c>}{<q>} <Rt>, [<Rn>], {, #+/-<imm>} ldrt{<c>}{<q>} <Rt>, [<Rn>] {, #+/-<imm>} strbt{<c>}{<q>} <Rt>, [<Rn>] {, #<imm>} strt{<c>}{<q>} <Rt>, [<Rn>] {, #+/-<imm>} This improves the parser to deal with the implicit immediate 0 for the mnemonics as per the specification. Thanks to Joerg Sonnenberger for the tests! llvm-svn: 198914
-
Venkatraman Govindaraju authored
[Sparc] Emit retl/ret instead of jmp instruction. It improves the readability of the assembly generated. llvm-svn: 198910
-
Venkatraman Govindaraju authored
[Sparc] Add support for parsing jmpl instruction and make indirect call and jmp instructions as aliases to jmpl. llvm-svn: 198909
-
David Blaikie authored
This reverts commit r198865 which reverts r198851. ASan identified a use-of-uninitialized of the DwarfTypeUnit::Ty variable in skeleton type units. llvm-svn: 198908
-
Kevin Enderby authored
branch to the next instruction. This can not be encoded but can be turned into a NOP. rdar://15062072 llvm-svn: 198904
-
- Jan 09, 2014
-
-
Venkatraman Govindaraju authored
llvm-svn: 198893
-
Evan Cheng authored
llvm-svn: 198889
-
Nadav Rotem authored
This reverts r198854. llvm-svn: 198879
-
NAKAMURA Takumi authored
It caused undefined behavior. DwarfTypeUnit::Ty might not be initialized properly, I guess. llvm-svn: 198865
-
Stepan Dyatkovskiy authored
Detailed description is here: http://llvm.org/bugs/show_bug.cgi?id=18000#c16 For participation in bugfix process special thanks to David Wiberg. llvm-svn: 198863
-
Richard Sandiford authored
The zext handling added in r197802 wasn't right for RNSBG. This patch restricts it to ROSBG, RXSBG and RISBG. (The tests for RISBG were added in r197802 since RISBG was the motivating example.) llvm-svn: 198862
-
Richard Sandiford authored
At the moment we expect rotates to have the form: (or (shl X, Y), (shr X, Z)) where Y == bitsize(X) - Z or Z == bitsize(X) - Y. This form means that the (or ...) is undefined for Y == 0 or Z == 0. This undefinedness can be avoided by using Y == (C * bitsize(X) - Z) & (bitsize(X) - 1) or Z == (C * bitsize(X) - Y) & (bitsize(X) - 1) for any integer C (including 0, the most natural choice). llvm-svn: 198861
-
Richard Sandiford authored
InstCombine converts (sub 32, (add X, C)) into (sub 32-C, X), so a rotate left of a 32-bit Y by X+C could appear as either: (or (shl Y, (add X, C)), (shr Y, (sub 32, (add X, C)))) without InstCombine or: (or (shl Y, (add X, C)), (shr Y, (sub 32-C, X))) with it. We already matched the first form. This patch handles the second too. llvm-svn: 198860
-
Nadav Rotem authored
llvm-svn: 198854
-
David Blaikie authored
llvm-svn: 198851
-
David Blaikie authored
llvm-svn: 198850
-
David Blaikie authored
llvm-svn: 198846
-
David Blaikie authored
llvm-svn: 198843
-
David Blaikie authored
Since we'll now also need the split dwarf file name along with the language in DwarfTypeUnits, just use the whole DICompileUnit rather than explicitly handling each field needed. llvm-svn: 198842
-
David Blaikie authored
This reverts commit r198830. Decided to go a different way with this... llvm-svn: 198841
-
Chandler Carruth authored
I add support for the new pass manager to it. llvm-svn: 198838
-
Chandler Carruth authored
operand into the Value interface just like the core print method is. That gives a more conistent organization to the IR printing interfaces -- they are all attached to the IR objects themselves. Also, update all the users. This removes the 'Writer.h' header which contained only a single function declaration. llvm-svn: 198836
-
David Blaikie authored
It's unused in DwarfTypeUnit, as is expected. llvm-svn: 198830
-
Rafael Espindola authored
llvm-svn: 198819
-
Andrew Trick authored
In the stackmap format we advertise the constant field as signed. However, we were determining whether to promote to a 64-bit constant pool based on an unsigned comparison. This fix allows -1 to be encoded as a small constant. llvm-svn: 198816
-
David Blaikie authored
llvm-svn: 198813
-
David Blaikie authored
This makes it easier to write a test that's mostly shared between fission and non-fission (using FileCheck's multiple prefix support). llvm-svn: 198806
-
- Jan 08, 2014
-
-
Chandler Carruth authored
having the include could cause weird layering problems between the IR and MC libraries. llvm-svn: 198796
-
Hal Finkel authored
MIsNeedChainEdge, which is used by -enable-aa-sched-mi (AA in misched), had an llvm_unreachable when -enable-aa-sched-mi is enabled and we reach an instruction with multiple MMOs. Instead, return a conservative answer. This allows testing -enable-aa-sched-mi on x86. Also, this moves the check above the isUnsafeMemoryObject checks. isUnsafeMemoryObject is currently correct only for instructions with one MMO (as noted in the comment in isUnsafeMemoryObject): // We purposefully do no check for hasOneMemOperand() here // in hope to trigger an assert downstream in order to // finish implementation. The problem with this is that, had the candidate edge passed the "!MIa->mayStore() && !MIb->mayStore()" check, the hoped-for assert would never happen (which could, in theory, lead to incorrect behavior if one of these secondary MMOs was volatile, for example). llvm-svn: 198795
-
Matt Arsenault authored
llvm-svn: 198794
-
Ana Pazos authored
llvm-svn: 198791
-
Roman Divacky authored
resolution works. llvm-svn: 198780
-