- Oct 10, 2013
-
-
Manman Ren authored
DIScopeRef. A paired commit at clang is required due to changes to DIBuilder. llvm-svn: 192378
-
Manman Ren authored
llvm-svn: 192376
-
Matt Arsenault authored
llvm-svn: 192375
-
Hans Wennborg authored
Patch by Josh Samuel! llvm-svn: 192371
-
Hans Wennborg authored
We previously failed to check whether the SUCCESS variable was set, and would thus always exit with a failure if vs2012 didn't exist. llvm-svn: 192370
-
Tom Stellard authored
The function is used by the machine verifier and checks that VOP* instructions have legal operands. llvm-svn: 192367
-
Tom Stellard authored
We can't enable the verifier for tests with SI_IF and SI_ELSE, because these instructions are always followed by a COPY which copies their result to the next basic block. This violates the machine verifier's rule that non-terminators can not folow terminators. Reviewed-by: Vincent Lejeune<vljn at ovi.com> llvm-svn: 192366
-
Tom Stellard authored
During instruction selection, we rewrite the destination register class for MIMG instructions based on their writemasks. This creates machine verifier errors since the new register class does not match the register class in the MIMG instruction definition. We can avoid this by defining different MIMG instructions for each possible destination type and then switching to the correct instruction when we change the register class. llvm-svn: 192365
-
Tom Stellard authored
This prevents the machine verifier from complaining about uses of an undefined physical register. Reviewed-by: Vincent Lejeune<vljn at ovi.com> llvm-svn: 192364
-
Tom Stellard authored
StructurizeCFG pass allows to make complex cfg reducible ; it allows a lot of shader from shadertoy (which exhibits complex control flow constructs) to works correctly with respect to CFG handling (and allow us to detect potential bug in other part of the backend). We provide a cmd line argument to disable the pass for debug purpose. Patch by: Vincent Lejeune Reviewed-by:
Tom Stellard <thomas.stellard@amd.com> llvm-svn: 192363
-
Hao Liu authored
Including following 14 instructions: 4 ld1 insts: load multiple 1-element structure to sequential 1/2/3/4 registers. ld2/ld3/ld4: load multiple N-element structure to sequential N registers (N=2,3,4). 4 st1 insts: store multiple 1-element structure from sequential 1/2/3/4 registers. st2/st3/st4: store multiple N-element structure from sequential N registers (N = 2,3,4). llvm-svn: 192361
-
Rafael Espindola authored
Revert "Implement AArch64 vector load/store multiple N-element structure class SIMD(lselem). Including following 14 instructions: 4 ld1 insts: load multiple 1-element structure to sequential 1/2/3/4 registers. ld2/ld3/ld4: load multiple N-element structure to sequential N registers (N=2,3,4). 4 st1 insts: store multiple 1-element structure from sequential 1/2/3/4 registers. st2/st3/st4: store multiple N-element structure from sequential N registers (N = 2,3,4)." This reverts commit r192352. It broke the build. llvm-svn: 192354
-
Hao Liu authored
Including following 14 instructions: 4 ld1 insts: load multiple 1-element structure to sequential 1/2/3/4 registers. ld2/ld3/ld4: load multiple N-element structure to sequential N registers (N=2,3,4). 4 st1 insts: store multiple 1-element structure from sequential 1/2/3/4 registers. st2/st3/st4: store multiple N-element structure from sequential N registers (N = 2,3,4). llvm-svn: 192352
-
Benjamin Kramer authored
llvm-svn: 192350
-
Benjamin Kramer authored
llvm-svn: 192348
-
Tim Northover authored
When we had a sequence like: s1 = VLDRS [r0, 1], Q0<imp-def> s3 = VLDRS [r0, 2], Q0<imp-use,kill>, Q0<imp-def> s0 = VLDRS [r0, 0], Q0<imp-use,kill>, Q0<imp-def> s2 = VLDRS [r0, 4], Q0<imp-use,kill>, Q0<imp-def> we were gathering the {s0, s1} loads below the s3 load. This is fine, but confused the verifier since now the s3 load had Q0<imp-use> with no definition above it. This should mark such uses <undef> as well. The liveness structure at the beginning and end of the block is unaffected, and the true sN definitions should prevent any dodgy reorderings being introduced elsewhere. rdar://problem/15124449 llvm-svn: 192344
-
Craig Topper authored
llvm-svn: 192341
-
Craig Topper authored
llvm-svn: 192340
-
Craig Topper authored
llvm-svn: 192339
-
Akira Hatanaka authored
ins/ext. llvm-svn: 192330
-
Rui Ueyama authored
This reverts commit r192316. The original change introduced circular dependencies between libTarget and backends. That would broke a build unless link everything into one big binary. llvm-svn: 192329
-
- Oct 09, 2013
-
-
Manman Ren authored
template_value are updated to use DIRef. A paired commit at clang is required due to changes to DIBuilder. llvm-svn: 192320
-
Anders Waldenborg authored
Making them proper functions defined in the (shared)lib instead of static inlines defined in the header files makes it possible to actually distribute a binary compiled against the shared library without having to worry about getting undefined symbol errors when calling e.g LLVMInitializeAllTargetInfos because the shared library on the other system was compiled with different targets. Differential Revision: http://llvm-reviews.chandlerc.com/D1714 llvm-svn: 192316
-
Manman Ren authored
to use DIScopeRef. llvm-svn: 192309
-
Bill Wendling authored
llvm-svn: 192304
-
Benjamin Kramer authored
MCStreamer now owns the target streamer. This prevents leaking the target streamer. llvm-svn: 192303
-
Shuxin Yang authored
If a function seen at compile time is not necessarily the one linked to the binary being built, it is illegal to change the actual arguments passing to it. e.g. -------------------------- void foo(int lol) { // foo() has linkage satisifying isWeakForLinker() // "lol" is not used at all. } void bar(int lo2) { // xform to foo(undef) is illegal, as compiler dose not know which // instance of foo() will be linked to the the binary being built. foo(lol2); } ----------------------------- Such functions can be captured by isWeakForLinker(). NOTE that mayBeOverridden() is insufficient for this purpose as it dosen't include linkage types like AvailableExternallyLinkage and LinkOnceODRLinkage. Take link_odr* as an example, it indicates a set of *EQUIVALENT* globals that can be merged at link-time. However, the semantic of *EQUIVALENT*-functions includes parameters. Changing parameters breaks the assumption. Thank John McCall for help, especially for the explanation of subtle difference between linkage types. rdar://11546243 llvm-svn: 192302
-
Rafael Espindola authored
Thanks to Reid Kleckner for the suggestion. llvm-svn: 192298
-
Venkatraman Govindaraju authored
This patch fixes PR17506. llvm-svn: 192294
-
Greg Bedwell authored
llvm-svn: 192284
-
Elena Demikhovsky authored
llvm-svn: 192283
-
Tim Northover authored
Substantial SelectionDAG scheduling is going away soon, and is interfering with Hao's attempts to implement LDn/STn instructions, so I say we make the leap first. There were a few reorderings (inevitably) which broke some tests. I tried to replace them with CHECK-DAG variants mostly, but some too complex for that to be useful and I just reordered them. llvm-svn: 192282
-
Tim Northover authored
llvm-svn: 192281
-
Craig Topper authored
llvm-svn: 192279
-
Andrew Trick authored
This was only working because AVX had cheaper rules in all cases. I'm sure there are other places in this file where predicates are missing. llvm-svn: 192276
-
Craig Topper authored
llvm-svn: 192275
-
Craig Topper authored
Replace a couple instructions with patterns referring to other instructions with same encoding and operands. Mark a couple other instructions as CodeGenOnly since we have FR and VR instructions and only one of them is needed by the assembler/disassembler. llvm-svn: 192274
-
Craig Topper authored
Use AVX512PIi8 for the alt forms of vcmp instructions. This adds the TB prefix and keeps the mnemonic from starting with an extra 'v' llvm-svn: 192272
-
Craig Topper authored
Mark some instructions as CodeGenOnly since they aren't needed by the assembler or disassembler. Disassembler already filtered them, but asm parser still had them in its tables. llvm-svn: 192271
-
Craig Topper authored
Add in64BitMode/in32BitMode to the MMX/SSE2/AVX maskmovq/dq instructions. This way the asm parser will pick the right one based on the mode. Instruction selection already did the right thing based on the pointer size. llvm-svn: 192266
-