summaryrefslogtreecommitdiffstats
path: root/llvm/test/ExecutionEngine/MCJIT/remote
Commit message (Collapse)AuthorAgeFilesLines
* [Mips64] Add support for MCJIT for MIPS64r2 and MIPS64r6Petar Jovanovic2015-05-284-4/+4
| | | | | | | | | | Add support for resolving MIPS64r2 and MIPS64r6 relocations in MCJIT. Patch by Vladimir Radosavljevic. Differential Revision: http://reviews.llvm.org/D9667 llvm-svn: 238424
* [opaque pointer type] Add textual IR support for explicit type parameter to ↵David Blaikie2015-03-135-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | gep operator Similar to gep (r230786) and load (r230794) changes. Similar migration script can be used to update test cases, which successfully migrated all of LLVM and Polly, but about 4 test cases needed manually changes in Clang. (this script will read the contents of stdin and massage it into stdout - wrap it in the 'apply.sh' script shown in previous commits + xargs to apply it over a large set of test cases) import fileinput import sys import re rep = re.compile(r"(getelementptr(?:\s+inbounds)?\s*\()((<\d*\s+x\s+)?([^@]*?)(|\s*addrspace\(\d+\))\s*\*(?(3)>)\s*)(?=$|%|@|null|undef|blockaddress|getelementptr|addrspacecast|bitcast|inttoptr|zeroinitializer|<|\[\[[a-zA-Z]|\{\{)", re.MULTILINE | re.DOTALL) def conv(match): line = match.group(1) line += match.group(4) line += ", " line += match.group(2) return line line = sys.stdin.read() off = 0 for match in re.finditer(rep, line): sys.stdout.write(line[off:match.start()]) sys.stdout.write(conv(match)) off = match.end() sys.stdout.write(line[off:]) llvm-svn: 232184
* [opaque pointer type] Add textual IR support for explicit type parameter to ↵David Blaikie2015-02-278-26/+26
| | | | | | | | | | | | | | | | | | | | | | | | load instruction Essentially the same as the GEP change in r230786. A similar migration script can be used to update test cases, though a few more test case improvements/changes were required this time around: (r229269-r229278) import fileinput import sys import re pat = re.compile(r"((?:=|:|^)\s*load (?:atomic )?(?:volatile )?(.*?))(| addrspace\(\d+\) *)\*($| *(?:%|@|null|undef|blockaddress|getelementptr|addrspacecast|bitcast|inttoptr|\[\[[a-zA-Z]|\{\{).*$)") for line in sys.stdin: sys.stdout.write(re.sub(pat, r"\1, \2\3*\4", line)) Reviewers: rafael, dexonsmith, grosser Differential Revision: http://reviews.llvm.org/D7649 llvm-svn: 230794
* [opaque pointer type] Add textual IR support for explicit type parameter to ↵David Blaikie2015-02-271-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | getelementptr instruction One of several parallel first steps to remove the target type of pointers, replacing them with a single opaque pointer type. This adds an explicit type parameter to the gep instruction so that when the first parameter becomes an opaque pointer type, the type to gep through is still available to the instructions. * This doesn't modify gep operators, only instructions (operators will be handled separately) * Textual IR changes only. Bitcode (including upgrade) and changing the in-memory representation will be in separate changes. * geps of vectors are transformed as: getelementptr <4 x float*> %x, ... ->getelementptr float, <4 x float*> %x, ... Then, once the opaque pointer type is introduced, this will ultimately look like: getelementptr float, <4 x ptr> %x with the unambiguous interpretation that it is a vector of pointers to float. * address spaces remain on the pointer, not the type: getelementptr float addrspace(1)* %x ->getelementptr float, float addrspace(1)* %x Then, eventually: getelementptr float, ptr addrspace(1) %x Importantly, the massive amount of test case churn has been automated by same crappy python code. I had to manually update a few test cases that wouldn't fit the script's model (r228970,r229196,r229197,r229198). The python script just massages stdin and writes the result to stdout, I then wrapped that in a shell script to handle replacing files, then using the usual find+xargs to migrate all the files. update.py: import fileinput import sys import re ibrep = re.compile(r"(^.*?[^%\w]getelementptr inbounds )(((?:<\d* x )?)(.*?)(| addrspace\(\d\)) *\*(|>)(?:$| *(?:%|@|null|undef|blockaddress|getelementptr|addrspacecast|bitcast|inttoptr|\[\[[a-zA-Z]|\{\{).*$))") normrep = re.compile( r"(^.*?[^%\w]getelementptr )(((?:<\d* x )?)(.*?)(| addrspace\(\d\)) *\*(|>)(?:$| *(?:%|@|null|undef|blockaddress|getelementptr|addrspacecast|bitcast|inttoptr|\[\[[a-zA-Z]|\{\{).*$))") def conv(match, line): if not match: return line line = match.groups()[0] if len(match.groups()[5]) == 0: line += match.groups()[2] line += match.groups()[3] line += ", " line += match.groups()[1] line += "\n" return line for line in sys.stdin: if line.find("getelementptr ") == line.find("getelementptr inbounds"): if line.find("getelementptr inbounds") != line.find("getelementptr inbounds ("): line = conv(re.match(ibrep, line), line) elif line.find("getelementptr ") != line.find("getelementptr ("): line = conv(re.match(normrep, line), line) sys.stdout.write(line) apply.sh: for name in "$@" do python3 `dirname "$0"`/update.py < "$name" > "$name.tmp" && mv "$name.tmp" "$name" rm -f "$name.tmp" done The actual commands: From llvm/src: find test/ -name *.ll | xargs ./apply.sh From llvm/src/tools/clang: find test/ -name *.mm -o -name *.m -o -name *.cpp -o -name *.c | xargs -I '{}' ../../apply.sh "{}" From llvm/src/tools/polly: find test/ -name *.ll | xargs ./apply.sh After that, check-all (with llvm, clang, clang-tools-extra, lld, compiler-rt, and polly all checked out). The extra 'rm' in the apply.sh script is due to a few files in clang's test suite using interesting unicode stuff that my python script was throwing exceptions on. None of those files needed to be migrated, so it seemed sufficient to ignore those cases. Reviewers: rafael, dexonsmith, grosser Differential Revision: http://reviews.llvm.org/D7636 llvm-svn: 230786
* Reinstate "Nuke the old JIT."Eric Christopher2014-09-0214-14/+14
| | | | | | | | Approved by Jim Grosbach, Lang Hames, Rafael Espindola. This reinstates commits r215111, 215115, 215116, 215117, 215136. llvm-svn: 216982
* Temporarily Revert "Nuke the old JIT." as it's not quite ready toEric Christopher2014-08-0714-14/+14
| | | | | | | | | | | be deleted. This will be reapplied as soon as possible and before the 3.6 branch date at any rate. Approved by Jim Grosbach, Lang Hames, Rafael Espindola. This reverts commits r215111, 215115, 215116, 215117, 215136. llvm-svn: 215154
* Nuke the old JIT.Rafael Espindola2014-08-0714-14/+14
| | | | | | | | | I am sure we will be finding bits and pieces of dead code for years to come, but this is a good start. Thanks to Lang Hames for making MCJIT a good replacement! llvm-svn: 215111
* Enable EHABI by defaultRenato Golin2014-01-299-13/+12
| | | | | | | | | | | | | | | | | | | | | | After all hard work to implement the EHABI and with the test-suite passing, it's time to turn it on by default and allow users to disable it as a work-around while we fix the eventual bugs that show up. This commit also remove the -arm-enable-ehabi-descriptors, since we want the tables to be printed every time the EHABI is turned on for non-Darwin ARM targets. Although MCJIT EHABI is not working yet (needs linking with the right libraries), this commit also fixes some relocations on MCJIT regarding the EH tables/lib calls, and update some tests to avoid using EH tables when none are needed. The EH tests in the test-suite that were previously disabled on ARM now pass with these changes, so a follow-up commit on the test-suite will re-enable them. llvm-svn: 200388
* Re-enabling MCJIT tests on ARMRenato Golin2014-01-251-2/+2
| | | | | | | | | After several refactorings on the MCJIT remote communication, things are finally looking good on Clang-compiled LLVM regarding MCJIT remote tests, so I'm re-enabling them to see how the self-hosting buildbot behaves over a longer period. llvm-svn: 200102
* Eliminate inappropriate use of FindProgramByName() from lliAlp Toker2014-01-2211-11/+11
| | | | llvm-svn: 199835
* Revert 199262 - MCJIT remote still failing on ARMRenato Golin2014-01-151-2/+2
| | | | | | | | Disabling remote MCJIT tests on ARM again, as they're still failing when self-hosting on ARM, despite all my tests. At least now we have more info on what message it's breaking and what is going on. Investigating. llvm-svn: 199310
* Re-disable MCJIT remote tests on ARMRenato Golin2014-01-151-0/+5
| | | | llvm-svn: 199309
* Re-enable remote MCJIT tests on ARMv7Renato Golin2014-01-141-5/+0
| | | | llvm-svn: 199262
* Fix lit config for disabled MCJIT tests on ARMRenato Golin2013-12-031-1/+7
| | | | | | | Separating permanent from temporary targets, added the bug that will fix the temporary (PR18057). llvm-svn: 196274
* Disable Remote MCJIT tests on ARMRenato Golin2013-12-031-2/+1
| | | | | | | | | | The communication protocol is unstable on ARM when compiled with Clang, which is disrupting the self-hosting buildbots that are going to be added this week. I'm working on a solution, but remote MCJIT is not high-priority for ARM at the moment, so it might take a while. llvm-svn: 196257
* [mips] Resolve relocation for the stubs in MCJIT when load address is knownPetar Jovanovic2013-11-197-14/+0
| | | | | | | | | | Instead of processing relocation for branch to stubs right away, emit a modified relocation and add it to queue to be resolved later when final load address is known. This resolves seven MIPS MCJIT issues that were caused by missing relocation fixups at the end. llvm-svn: 195157
* Add XFAIL:arm again on 4 MCJIT tests, since r194558. AArch64 has been left ↵NAKAMURA Takumi2013-11-132-2/+2
| | | | | | | | | | removed. They are failing on clang-native-arm-cortex-a9. Please tweak MCJIT/lit.local.cfg, if this didn't satisfy bots. llvm-svn: 194561
* Remove XFAIL:aarch64,arm from 4 tests in test/ExecutionEngine/MCJIT.NAKAMURA Takumi2013-11-132-2/+2
| | | | | | They are reported as XPASSing. llvm-svn: 194558
* [mips] XFAIL several MCJIT remote testsPetar Jovanovic2013-10-314-0/+8
| | | | | | | | Two of the tests are new test cases (cross-module-a.ll, multi-module-a.ll) not yet supported on MIPS, while XFAIL for the other two tests was accidentally removed in r193570 and this change reverts those lines. llvm-svn: 193781
* Adding a workaround for __main linking with remote lli and Cygwin/MinGWAndrew Kaylor2013-10-298-21/+3
| | | | llvm-svn: 193570
* Renaming MCJIT .ir files to .ll and moving them to InputsAndrew Kaylor2013-10-287-4/+4
| | | | llvm-svn: 193562
* Standardizing lli's extra module command line optionAndrew Kaylor2013-10-284-4/+4
| | | | llvm-svn: 193544
* MCJIT-remote: __main should be resolved in child context.NAKAMURA Takumi2013-10-278-5/+24
| | | | | | | | | | | | | | | - Mark tests as XFAIL:cygming in test/ExecutionEngine/MCJIT/remote. Rather to suppress them, I'd like to leave them running as XFAIL. - Revert r193472. RecordMemoryManager no longer resolves __main on cygming. There are a couple of issues. - X86 Codegen emits "call __main" in @main for targeting cygming. It is useless in JIT. FYI, tests are passing when emitting __main is disabled. - Current remote JIT does not resolve any symbols in child context. FIXME: __main should be disabled, or remote JIT should resolve __main. llvm-svn: 193498
* Fixing problems in lli's RemoteMemoryManager.Andrew Kaylor2013-10-112-2/+4
| | | | | | | | This fixes a problem from a previous check-in where a return value was omitted. Previously the remote/stubs-remote.ll and remote/stubs-sm-pic.ll tests were reporting passes, but they should have been failing. Those tests attempt to link against an external symbol and remote symbol resolution is not supported. The old RemoteMemoryManager implementation resulted in local symbols being used for resolution and the child process crashed but the test didn't notice. With this check-in remote symbol resolution fails, and so the test (correctly) fails. llvm-svn: 192514
* Updating XFAILs for recent GOT testsAndrew Kaylor2013-10-052-0/+2
| | | | llvm-svn: 192022
* Adding tests for multiple GOTs with MCJITAndrew Kaylor2013-10-052-0/+22
| | | | llvm-svn: 192021
* Adding support and tests for multiple module handling in lliAndrew Kaylor2013-10-045-0/+40
| | | | llvm-svn: 191938
* Adding out-of-process execution support to lli.Andrew Kaylor2013-10-027-7/+7
| | | | | | | | At this time only Unix-based systems are supported. Windows has stubs and should re-route to the simulated mode. Thanks to Sriram Murali for contributions to this patch. llvm-svn: 191843
* Fix some more MCJIT PIC test XFAILs (for i386)Andrew Kaylor2013-09-202-2/+2
| | | | | | Patch by Dimitry Andric llvm-svn: 191111
* X86TargetMachine.cpp: Clarify to emit GOT in i686-{cygming|win32}-elf for mcjit.NAKAMURA Takumi2013-08-212-2/+2
| | | | | | I suppose all "lli -use-mcjit i686-*" should require GOT, (and to fail.) llvm-svn: 188856
* Still more MCJIT PIC test XFAILsAndrew Kaylor2013-08-203-3/+3
| | | | llvm-svn: 188815
* Clarifying two MCJIT PIC tests as XFAIL on i686-pc-linuxAndrew Kaylor2013-08-202-2/+2
| | | | llvm-svn: 188814
* Marking two more MCJIT PIC tests as XFAIL on i686Andrew Kaylor2013-08-202-2/+2
| | | | llvm-svn: 188808
* Marking MCJIT PIC tests as XFAIL on AArch64Andrew Kaylor2013-08-203-3/+3
| | | | llvm-svn: 188740
* Fixing XPASSes among MCJIT PIC test on i686Andrew Kaylor2013-08-202-2/+2
| | | | llvm-svn: 188736
* Trying again with PIC tests for MCJITAndrew Kaylor2013-08-193-0/+88
| | | | llvm-svn: 188730
* Reverting r188709 until I can figure out the proper way to XFAIL it.Andrew Kaylor2013-08-193-88/+0
| | | | llvm-svn: 188715
* Adding tests for PIC with MCJITAndrew Kaylor2013-08-193-0/+88
| | | | llvm-svn: 188709
* [tests] Cleanup initialization of test suffixes.Daniel Dunbar2013-08-161-10/+2
| | | | | | | | | | | | | | | | | - Instead of setting the suffixes in a bunch of places, just set one master list in the top-level config. We now only modify the suffix list in a few suites that have one particular unique suffix (.ml, .mc, .yaml, .td, .py). - Aside from removing the need for a bunch of lit.local.cfg files, this enables 4 tests that were inadvertently being skipped (one in Transforms/BranchFolding, a .s file each in DebugInfo/AArch64 and CodeGen/PowerPC, and one in CodeGen/SI which is now failing and has been XFAILED). - This commit also fixes a bunch of config files to use config.root instead of older copy-pasted code. llvm-svn: 188513
* [mips] Remove XFAIL from test-ptr-reloc-remote.llPetar Jovanovic2013-07-241-1/+0
| | | | | | | The change r187019 has fixed multiple relocations in dynamic linker for MIPS, so now this test passes for MIPS. llvm-svn: 187053
* ARM: use pristine object file while processing relocationsTim Northover2013-05-283-3/+3
| | | | | | | | | | | | | | Previously we would read-modify-write the target bits when processing relocations for the MCJIT. This had the problem that when relocations were processed multiple times for the same object file (as they can be), the result is not idempotent and the values became corrupted. The solution to this is to take any bits used in the destination from the pristine object file as LLVM emitted it. This should fix PR16013 and remote MCJIT on ARM ELF targets. llvm-svn: 182800
* Disable remote MCJIT on pre-v6 ARMRenato Golin2013-05-201-0/+11
| | | | llvm-svn: 182235
* Invalidate instruction cache when setting memory to be executable.Tim Northover2013-05-195-15/+4
| | | | | | | | | lli's remote MCJIT code calls setExecutable just prior to running code. In line with Darwin behaviour this seems to be the place to invalidate any caches needed so that relocations can take effect properly. llvm-svn: 182213
* Unsupported remote JIT on ARMRenato Golin2013-05-188-0/+235
llvm-svn: 182201
OpenPOWER on IntegriCloud