- Jan 14, 2015
-
-
Duncan P. N. Exon Smith authored
llvm-svn: 225929
-
Hal Finkel authored
The form of nops used is CPU-specific (some CPUs, such as the POWER7, have special group-terminating nops). We probably want a different callback for this kind of nop insertion (something more like MCAsmBackend::writeNopData), or for PPC to use a different mechanism for scheduling nops, but this will stop the test from failing for now. llvm-svn: 225928
-
Matt Arsenault authored
This reduces coverage for Evergreen, since the more complete tests have those run lines disabled. llvm-svn: 225927
-
Matt Arsenault authored
Don't do the v4i8 -> v4f32 combine if the load will need to be expanded due to alignment. This stops adding instructions to repack into a single register that the v_cvt_ubyteN_f32 instructions read. llvm-svn: 225926
-
Matt Arsenault authored
Now that the source and destination types can be specified, allow doing an expansion that doesn't use an EXTLOAD of the result type. Try to do a legal extload to an intermediate type and extend that if possible. This generalizes the special case custom lowering of extloads R600 has been using to work around this problem. This also happens to fix a bug that would incorrectly use more aligned loads than should be used. llvm-svn: 225925
-
Duncan P. N. Exon Smith authored
llvm-svn: 225924
-
Oleksiy Vyalov authored
Extend PipePosix with support for named pipes/timeout-based IO and integrate it with GDBRemoteCommunication / lldb-gdbserver - include reviews fixes. http://reviews.llvm.org/D6954 llvm-svn: 225923
-
Adam Nemet authored
These are implemented with __builtin_shufflevector just like AVX. We have some tests on the LLVM side to assert that these shufflevectors do indeed generate the corresponding unpck instruction. Part of <rdar://problem/17688758> llvm-svn: 225922
-
Duncan P. N. Exon Smith authored
Part of PR21433. llvm-svn: 225921
-
Jon Roelofs authored
llvm-svn: 225920
-
Rafael Espindola authored
Should fix the bots after r225890. llvm-svn: 225919
-
Duncan P. N. Exon Smith authored
The new logic isn't actually reachable yet, so no functionality change. llvm-svn: 225918
-
Duncan P. N. Exon Smith authored
llvm-svn: 225917
-
Duncan P. N. Exon Smith authored
llvm-svn: 225915
-
Duncan P. N. Exon Smith authored
Still doesn't handle distinct ones. Part of PR21433. llvm-svn: 225914
-
Tom Stellard authored
The machine scheduler is still disabled by default. The schedule model is not complete yet, and could be improved. llvm-svn: 225913
-
Duncan P. N. Exon Smith authored
llvm-svn: 225912
-
Duncan P. N. Exon Smith authored
llvm-svn: 225911
-
JF Bastien authored
A pass that adds random noops to X86 binaries to introduce diversity with the goal of increasing security against most return-oriented programming attacks. Command line options: -noop-insertion // Enable noop insertion. -noop-insertion-percentage=X // X% of assembly instructions will have a noop prepended (default: 50%, requires -noop-insertion) -max-noops-per-instruction=X // Randomly generate X noops per instruction. ie. roll the dice X times with probability set above (default: 1). This doesn't guarantee X noop instructions. In addition, the following 'quick switch' in clang enables basic diversity using default settings (currently: noop insertion and schedule randomization; it is intended to be extended in the future). -fdiversify This is the clang part of the patch. llvm part: D3392 http://reviews.llvm.org/D3393 Patch by Stephen Crane (@rinon) llvm-svn: 225910
-
Hal Finkel authored
This re-applies r225808, fixed to avoid problems with SDAG dependencies along with the preceding fix to ScheduleDAGSDNodes::RegDefIter::InitNodeNumDefs. These problems caused the original regression tests to assert/segfault on many (but not all) systems. Original commit message: This commit does two things: 1. Refactors PPCFastISel to use more of the common infrastructure for call lowering (this lets us take advantage of this common code for lowering some common intrinsics, stackmap/patchpoint among them). 2. Adds support for stackmap/patchpoint lowering. For the most part, this is very similar to the support in the AArch64 target, with the obvious differences (different registers, NOP instructions, etc.). The test cases are adapted from the AArch64 test cases. One difference of note is that the patchpoint call sequence takes 24 bytes, so you can't use less than that (on AArch64 you can go down to 16). Also, as noted in the docs, we take the patchpoint address to be the actual code address (assuming the call is local in the TOC-sharing sense), which should yield higher performance than generating the full cross-DSO indirect-call sequence and is likely just as useful for JITed code (if not, we'll change it). StackMaps and Patchpoints are still marked as experimental, and so this support is doubly experimental. So go ahead and experiment! llvm-svn: 225909
-
JF Bastien authored
A pass that adds random noops to X86 binaries to introduce diversity with the goal of increasing security against most return-oriented programming attacks. Command line options: -noop-insertion // Enable noop insertion. -noop-insertion-percentage=X // X% of assembly instructions will have a noop prepended (default: 50%, requires -noop-insertion) -max-noops-per-instruction=X // Randomly generate X noops per instruction. ie. roll the dice X times with probability set above (default: 1). This doesn't guarantee X noop instructions. In addition, the following 'quick switch' in clang enables basic diversity using default settings (currently: noop insertion and schedule randomization; it is intended to be extended in the future). -fdiversify This is the llvm part of the patch. clang part: D3393 http://reviews.llvm.org/D3392 Patch by Stephen Crane (@rinon) llvm-svn: 225908
-
Hal Finkel authored
PATCHPOINT is a strange pseudo-instruction. Depending on how it is used, and whether or not the AnyReg calling convention is being used, it might or might not define a value. However, its TableGen definition says that it defines one value, and so when it doesn't, the code in ScheduleDAGSDNodes::RegDefIter becomes confused and the code that uses the RegDefIter will try to get the register class of the MVT::Other type associated with the PATCHPOINT's chain result (under certain circumstances). This will be covered by the PPC64 PatchPoint test cases once that support is re-committed. llvm-svn: 225907
-
Duncan P. N. Exon Smith authored
llvm-svn: 225906
-
Duncan P. N. Exon Smith authored
llvm-svn: 225905
-
Reid Kleckner authored
This adds handling for ExceptionHandling::MSVC, used by the x86_64-pc-windows-msvc triple. It assumes that filter functions have already been outlined in either the frontend or the backend. Filter functions are used in place of the landingpad catch clause type info operands. In catch clause order, the first filter to return true will catch the exception. The C specific handler table expects the landing pad to be split into one block per handler, but LLVM IR uses a single landing pad for all possible unwind actions. This patch papers over the mismatch by synthesizing single instruction BBs for every catch clause to fill in the EH selector that the landing pad block expects. Missing functionality: - Accessing data in the parent frame from outlined filters - Cleanups (from __finally) are unsupported, as they will require outlining and parent frame access - Filter clauses are unsupported, as there's no clear analogue in SEH In other words, this is the minimal set of changes needed to write IR to catch arbitrary exceptions and resume normal execution. Reviewers: majnemer Differential Revision: http://reviews.llvm.org/D6300 llvm-svn: 225904
-
Duncan P. N. Exon Smith authored
Although this makes the `cast<>` assert more often, the `assert(Node->isResolved())` on the following line would assert in all those cases. So, no functionality change here. llvm-svn: 225903
-
Duncan P. N. Exon Smith authored
llvm-svn: 225902
-
Duncan P. N. Exon Smith authored
llvm-svn: 225901
-
Adrian Prantl authored
DIEDwarfExpression (and get rid of a bunch of redundant code). NFC llvm-svn: 225900
-
Adrian Prantl authored
status in a bool and let the users deal with the error. NFC. llvm-svn: 225899
-
Adrian Prantl authored
needs to be accessed from both DwarfCompileUnit.cpp and DwarfUnit.cpp. NFC. llvm-svn: 225898
-
Duncan P. N. Exon Smith authored
llvm-svn: 225897
-
Duncan P. N. Exon Smith authored
Working towards supporting `MDLocation` in `MapMetadata()`. llvm-svn: 225896
-
Ahmed Bougacha authored
It turns out, all callsites of the simplifier are guarded by a check for CallInst::getCalledFunction (i.e., to make sure the callee is direct). This check wasn't done when trying to further optimize a simplified fortified libcall, introduced by a refactoring in r225640. Fix that, add a testcase, and document the requirement. llvm-svn: 225895
-
Alexey Samsonov authored
There are too many available sanitizers now - redirect to user manual instead of listing them all. llvm-svn: 225894
-
Eric Christopher authored
llvm-svn: 225893
-
Eric Christopher authored
llvm-svn: 225892
-
Eric Christopher authored
the TargetMachine level and the MC level. llvm-svn: 225891
-
Rafael Espindola authored
Patch by Brad Smith. llvm-svn: 225890
-
Richard Smith authored
type. Patch by Stephan Bergmann! llvm-svn: 225889
-