Filip Pizlo
c95bd8d88f
Stackmaps are used for OSR exits, which is a custom kind of unwinding. Hence, they
...
should not be marked nounwind.
Marking them nounwind caused crashes in the WebKit FTL JIT, because if we enable
sufficient optimizations, LLVM starts eliding compact_unwind sections (or any unwind
data for that matter), making deoptimization via stackmaps impossible.
This changes the stackmap intrinsic to be may-throw, adds a test for exactly the
sympton that WebKit saw, and fixes TableGen to handle un-attributed intrinsics.
Thanks to atrick and philipreames for reviewing this.
llvm-svn: 201826
2014-02-20 23:57:31 +00:00
Adrian Prantl
4b54f20e80
test_debuginfo.pl: Make failures easier to debug by printing the debugger
...
output.
llvm-svn: 201809
2014-02-20 19:55:44 +00:00
Craig Topper
e2347df24d
[x86] Switch PAUSE instruction to use XS prefix instead of HasREPPrefix. Remove HasREPPrefix support from disassembler table generator since its now only used by CodeGenOnly instructions.
...
llvm-svn: 201767
2014-02-20 07:59:43 +00:00
Alexey Samsonov
9225ba31de
Support GTest for FreeBSD platforms (9.x)
...
Patch by Viktor Kutuzov!
llvm-svn: 201683
2014-02-19 15:18:30 +00:00
Craig Topper
56f0ed815e
Remove special FP opcode maps and instead add enough MRM_XX formats to handle all the FP operations. This increases format by 1 bit, but decreases opcode map by 1 bit so the TSFlags size doesn't change.
...
llvm-svn: 201649
2014-02-19 08:25:02 +00:00
Craig Topper
2fb696b214
Put some of the X86 formats in a more logical order.
...
llvm-svn: 201645
2014-02-19 06:59:13 +00:00
Craig Topper
0d1fd55c13
Remove A6/A7 opcode maps. They can all be handled with a TB map, opcode of 0xa6/0xa7, and adding MRM_C0/MRM_E0 forms. Removes 376K from the disassembler tables.
...
llvm-svn: 201641
2014-02-19 05:34:21 +00:00
Rafael Espindola
ea09c595a6
Rename a DebugLoc variable to DbgLoc and a DataLayout to DL.
...
This is quiet a bit less confusing now that TargetData was renamed DataLayout.
llvm-svn: 201606
2014-02-18 22:05:46 +00:00
Tim Northover
d5fe8ce005
Darwin builds: handle different possible form for SDKROOT.
...
Modifying build_llvm to handle SDKROOT being the name of an SDK rather than a
path. This will still work if SDKROOT is a path.
rdar://problem/15162322
llvm-svn: 201560
2014-02-18 11:20:44 +00:00
Craig Topper
5ccb61781f
Add an x86 prefix encoding for instructions that would decode to a different instruction with 0xf2/f3/66 were in front of them, but don't themselves have a prefix. For now this doesn't change any bbehavior, but plan to use it to fix some bugs in the disassembler.
...
llvm-svn: 201538
2014-02-18 00:21:49 +00:00
NAKAMURA Takumi
4c0116cb75
llvmbuild: Exclude disabled targets from LLVMExports.cmake.
...
llvm-svn: 201490
2014-02-16 12:14:24 +00:00
Craig Topper
7aaa0c2ddb
Remove unused method declaration.
...
llvm-svn: 201301
2014-02-13 07:12:40 +00:00
Craig Topper
69e245c01d
Remove filtering concept from X86 disassembler table generation. It's no longer necessary.
...
llvm-svn: 201299
2014-02-13 07:07:16 +00:00
Craig Topper
5b3a6bd370
Remove special case filtering for instructions with lock prefix as they are all marked with isCodeGenOnly already.
...
llvm-svn: 201216
2014-02-12 08:09:20 +00:00
Craig Topper
ea91f02762
Mark XACQUIRE_PREFIX/XRELEASE_PREFIX as isAsmParserOnly so they'll disappear from the disassembler table build without custom filtering code.
...
llvm-svn: 201215
2014-02-12 08:02:29 +00:00
NAKAMURA Takumi
0dc73dfdf4
[CMake] Add dependencies to gtest.
...
llvm-svn: 201079
2014-02-10 11:27:41 +00:00
NAKAMURA Takumi
2f96171cb0
[CMake] LLVMSupport should be responsible to provide system_libs.
...
llvm-svn: 201077
2014-02-10 10:52:19 +00:00
Craig Topper
a0869dceea
Recommit r201059 and r201060 with hopefully a fix for its original failure.
...
Original commits messages:
Add MRMXr/MRMXm form to X86 for use by instructions which treat the 'reg' field of modrm byte as a don't care value. Will allow for simplification of disassembler code.
Simplify a bunch of code by removing the need for the x86 disassembler table builder to know about extended opcodes. The modrm forms are sufficient to convey the information.
llvm-svn: 201065
2014-02-10 06:55:41 +00:00
Bob Wilson
ebdae7c2ff
Revert r201059 and r201060.
...
r201059 appears to cause a crash in a bootstrapped build of clang. Craig
isn't available to look at it right now, so I'm reverting it while he
investigates.
llvm-svn: 201064
2014-02-10 05:28:30 +00:00
Craig Topper
0a43c2c393
Simplify a bunch of code by removing the need for the x86 disassembler table builder to know about extended opcodes. The modrm forms are sufficient to convey the information.
...
llvm-svn: 201060
2014-02-10 01:58:12 +00:00
Craig Topper
0d88de8c56
Add MRMXr/MRMXm form to X86 for use by instructions which treat the 'reg' field of modrm byte as a don't care value. Will allow for simplification of disassembler code.
...
llvm-svn: 201059
2014-02-10 00:50:34 +00:00
NAKAMURA Takumi
01e3c64f11
Provide CMake package modules in install tree
...
Teach the Makefile build system to generate and install CMake modules
LLVMConfig.cmake and LLVMConfigVersion.cmake so that applications that
build with CMake can use 'find_package(LLVM)' even when LLVM is not
built with CMake. These modules tell such applications about available
LLVM libraries and their dependencies.
Run llvm-config to generate the list of libraries and use the results of
llvm-build to generate the library dependencies. Use sed to perform
substitutions in the LLVMConfig.cmake.in and LLVMConfigVersion.cmake.in
sources that our CMake build system uses.
Teach the Makefile build system to generate the LLVMExports.cmake file
with content similar to that produced by the CMake install(EXPORT)
command. Extend llvm-build with an option to generate the library
dependencies fragment for this file.
Contributed by Brad King.
llvm-svn: 201053
2014-02-09 16:37:02 +00:00
Craig Topper
2813e3a46e
Remove unnecessary include.
...
llvm-svn: 201041
2014-02-09 07:55:19 +00:00
Craig Topper
31afdb8c26
Remove some unnecessary code. The conditions it was checking had already been ruled out by the caller.
...
llvm-svn: 201039
2014-02-09 07:13:41 +00:00
Nikola Smiljanic
958dbe1e34
Improve existing visualizers by:
...
- Properly displaying non null terminated StringRef.
- Auto expanding pointer types.
- Displaying real type names for PointerUnions.
- Using "size" and "capacity" across all containers.
- Simplifying code where possible.
llvm-svn: 201004
2014-02-07 22:57:20 +00:00
Oliver Stannard
1dc1034218
LLVM-1163: AAPCS-VFP violation when CPRC allocated to stack
...
According to the AAPCS, when a CPRC is allocated to the stack, all other
VFP registers should be marked as unavailable.
I have also modified the rules for allocating non-CPRCs to the stack, to make
it more explicit that all GPRs must be made unavailable. I cannot think of a
case where the old version would produce incorrect answers, so there is no test
for this.
llvm-svn: 200970
2014-02-07 11:19:53 +00:00
Craig Topper
f1aab4502e
Delete all of the CodeGenInstructions from CodeGenTarget destructor.
...
llvm-svn: 200906
2014-02-06 06:27:59 +00:00
Craig Topper
bc9486bea0
Shrink the size of CodeGenInstruction a little bit by using bitfields. 32 bools seemed excessive.
...
llvm-svn: 200829
2014-02-05 09:10:40 +00:00
Craig Topper
4c6129af32
Get rid of a vector copy by just making a pointer out of the reference returned by getInstructionsByEnumValue instead of assigning it to a new vector.
...
llvm-svn: 200828
2014-02-05 07:56:49 +00:00
Craig Topper
65efcb4685
Fix a vector that was passed by value instead of reference.
...
llvm-svn: 200827
2014-02-05 07:27:49 +00:00
Craig Topper
1129d452cd
Fix a doxygen comment referencing the wrong method name.
...
llvm-svn: 200825
2014-02-05 07:21:07 +00:00
Craig Topper
7ca1d18055
Add CheckChildInteger to ISelMatcher operations. Removes nearly 2000 bytes from X86 matcher table.
...
llvm-svn: 200821
2014-02-05 05:44:28 +00:00
NAKAMURA Takumi
d8dd194f03
TableGen/X86RecognizableInstr.h: Prune out-of-date "@param isSSE". [-Wdocumentation]
...
llvm-svn: 200628
2014-02-02 10:53:36 +00:00
Craig Topper
fa6298a162
Merge x86 HasOpSizePrefix/HasOpSize16Prefix into a 2-bit OpSize field with 0 meaning no 0x66 prefix in any mode. Rename Opsize16->OpSize32 and OpSize->OpSize16. The classes now refer to their operand size rather than the mode in which they need a 0x66 prefix. Hopefully can merge REX_W into this as OpSize64.
...
llvm-svn: 200626
2014-02-02 09:25:09 +00:00
Craig Topper
8e92e85ac7
Simplify some code since VEX and EVEX instructions never have HasOpSizePrefix.
...
llvm-svn: 200625
2014-02-02 07:46:05 +00:00
Craig Topper
d402df3ce8
Merge HasVEXPrefix/HasEVEXPrefix/HasXOPPrefix into a 2-bit 'encoding' field in TSFlags.
...
llvm-svn: 200624
2014-02-02 07:08:01 +00:00
Craig Topper
10243c8907
Separate x86 opcode maps and 0x66/0xf2/0xf3 prefixes from each other in the TSFlags. This greatly simplifies the switch statements in the disassembler tables and the code emitters.
...
llvm-svn: 200522
2014-01-31 08:47:06 +00:00
Craig Topper
ec68866f55
Move REP out of the Prefix field of the X86 format. Give it its own bit. It had special handling anyway and this enables a future patch.
...
llvm-svn: 200520
2014-01-31 07:00:55 +00:00
Renato Golin
9b37d35051
Comment out unused macro because of warning
...
Modern compilers (Clang 3.4, GCC 4.8) warn on variadic macros being
introduced in C99, which produces a huge number of useless diagnostics
since this macro is unused in the whole project.
llvm-svn: 200479
2014-01-30 18:55:47 +00:00
Craig Topper
bdf33ca08d
Couple minor formatting fixes to the XXXGenDAGISel.inc files.
...
llvm-svn: 200459
2014-01-30 06:42:52 +00:00
Craig Topper
0d16d2dc31
Delete the Matchers stored in the SmallVectors in SwitchOpcodeMatcher/SwitchTypeMatcher.
...
llvm-svn: 200377
2014-01-29 07:06:07 +00:00
David Woodhouse
3fa98a65e9
Propagate MCSubtargetInfo through TableGen's getBinaryCodeForInstr()
...
llvm-svn: 200349
2014-01-28 23:13:18 +00:00
David Woodhouse
e6c13e4abd
Change MCStreamer EmitInstruction interface to take subtarget info
...
llvm-svn: 200345
2014-01-28 23:12:42 +00:00
Owen Anderson
5c65e7f345
Use the proper SDK when building iOS sim builds of LLVM and/or Mac OS X builds.
...
llvm-svn: 200335
2014-01-28 19:57:18 +00:00
Craig Topper
74169dcf45
Improve handling of EnforceSmallerThan. Remove all types that are smaller from the larger set not just the smallest type from the smaller set. Ensure 'smaller' vectors have the same or fewer total bits. Similar for 'larger' vectors.
...
llvm-svn: 200287
2014-01-28 04:49:01 +00:00
Craig Topper
6e1faaf886
Don't use EnforceSmallerThan for EnforceVectorSubVectorTypeIs. EnforceSmallerThan doesn't handle vectors quite right and should really enforce that vectors have the same number of elements. Add explicit checks for vector element count differing in EnforceVectorSubVectorTypeIs instead. This removes some unnecessary type checks in X86GenDAGISel.inc.
...
llvm-svn: 200091
2014-01-25 17:40:33 +00:00
Craig Topper
336e1f1179
Fix typo in commment tyep->type.
...
llvm-svn: 200089
2014-01-25 17:34:23 +00:00
Craig Topper
5f730e8ef1
Use isConcrete and getConcrete instead of using TypeVec directly.
...
llvm-svn: 200071
2014-01-25 05:33:48 +00:00
Craig Topper
6dbcb945a2
Fix EnforceSmallerThan to check !hasVectorTypes on the other type instead of this type to force this type to be scalar.
...
llvm-svn: 200070
2014-01-25 05:17:38 +00:00
Craig Topper
3f9978e65a
Remove TGValueTypes.cpp from CMakeLists.txt which I forgot to do in r200036.
...
llvm-svn: 200037
2014-01-24 20:51:32 +00:00