- Aug 06, 2013
-
-
Shuxin Yang authored
llvm-svn: 187819
-
Reid Kleckner authored
Clang does not provide BitScan* intrinsic implementations yet. llvm-svn: 187813
-
Manman Ren authored
Also remove checking of llvm.dbg.sp since it is not used in generating dwarf. Current state of Finder: DebugInfoFinder tries to list all debug info MDNodes used in a module. To list debug info MDNodes used by an instruction, DebugInfoFinder provides processDeclare, processValue and processLocation to handle DbgDeclareInst, DbgValueInst and DbgLoc attached to instructions. processModule will go through all DICompileUnits in llvm.dbg.cu and list debug info MDNodes used by the CUs. TODO: 1> Finder has a list of CUs, SPs, Types, Scopes and global variables. We need to add a list of variables that are used by DbgDeclareInst and DbgValueInst. 2> MDString fields should be null or isa<MDString> and MDNode fields should be null or isa<MDNode>. We currently use empty string or int 0 to represent null. 3> Go though Verify functions and make sure that they check field types. 4> Clean up existing testing cases to remove llvm.dbg.sp and make sure each testing case has a llvm.dbg.cu. Re-apply r187609 with fix to pass ocaml binding. vmcore.ml generates a debug location with scope being metadata !{}, in verifier we treat this as a null scope. llvm-svn: 187812
-
Sean Silva authored
No content change. Patch by Andrea Di Biagio! llvm-svn: 187811
-
Jakub Staszak authored
llvm-svn: 187808
-
Hal Finkel authored
The PPC backend had been missing a pattern to generate mulli for 64-bit multiples. We had been generating it only for 32-bit multiplies. Unfortunately, generating li + mulld unnecessarily increases register pressure. llvm-svn: 187807
-
Jakub Staszak authored
llvm-svn: 187806
-
Mihai Popa authored
as pldw does not have a literal variant (i.e. pc relative version) llvm-svn: 187804
-
Mihai Popa authored
llvm-svn: 187803
-
Justin Holewinski authored
llvm-svn: 187800
-
Justin Holewinski authored
We do use a very small set of physical registers, so account for them in the virtual register encoding between MachineInstr and MC llvm-svn: 187799
-
Justin Holewinski authored
This change converts the NVPTX target to use the MC infrastructure instead of directly emitting MachineInstr instances. This brings the target more up-to-date with LLVM TOT, and should fix PR15175 and PR15958 (libNVPTXInstPrinter is empty) as a side-effect. llvm-svn: 187798
-
Tim Northover authored
Now that it's in place, it seems silly not to let ARM make use of the extra tail call opportunities. llvm-svn: 187795
-
Rafael Espindola authored
Thanks to Bill Wendling for the reminder. llvm-svn: 187794
-
Tim Northover authored
Patch by Edward-san. llvm-svn: 187793
-
Alexey Samsonov authored
Store compile unit corresponding to each chain of inlined debug info entries. No functionality change. llvm-svn: 187792
-
Elena Demikhovsky authored
fix for: Bug 16694 - ExecutionEngine/test-interp-vec-loadstore.ll failing on powerpc-darwin8 (http://llvm.org/bugs/show_bug.cgi?id=16694) The ExecutionEngine/test-interp-vec-loadstore.ll test has been failing on powerpc-darwin8 (on other platforms it passed) the reason of fail was wrong output by printf. this output is checked by FileCheck, but on little-endian powerpc the output numeric data were printed inside out and FileCheck reported fail. the printfs have been replaced by checking data inside test and numeric output has been replaced by the text output like : "int test passed, float test passed". The text output is checked by FileCheck. the dependency on data layout has been removed. done by Yuri Veselov (Intel) llvm-svn: 187791
-
Alexey Samsonov authored
llvm-svn: 187790
-
Tim Northover authored
This change came about primarily because of two issues in the existing code. Niether of: define i64 @test1(i64 %val) { %in = trunc i64 %val to i32 tail call i32 @ret32(i32 returned %in) ret i64 %val } define i64 @test2(i64 %val) { tail call i32 @ret32(i32 returned undef) ret i32 42 } should be tail calls, and the function sameNoopInput is responsible. The main problem is that it is completely symmetric in the "tail call" and "ret" value, but in reality different things are allowed on each side. For these cases: 1. Any truncation should lead to a larger value being generated by "tail call" than needed by "ret". 2. Undef should only be allowed as a source for ret, not as a result of the call. Along the way I noticed that a mismatch between what this function treats as a valid truncation and what the backends see can lead to invalid calls as well (see x86-32 test case). This patch refactors the code so that instead of being based primarily on values which it recurses into when necessary, it starts by inspecting the type and considers each fundamental slot that the backend will see in turn. For example, given a pathological function that returned {{}, {{}, i32, {}}, i32} we would consider each "real" i32 in turn, and ask if it passes through unchanged. This is much closer to what the backend sees as a result of ComputeValueVTs. Aside from the bug fixes, this eliminates the recursion that's going on and, I believe, makes the bulk of the code significantly easier to understand. The trade-off is the nasty iterators needed to find the real types inside a returned value. llvm-svn: 187787
-
Serge Pavlov authored
llvm-svn: 187786
-
Craig Topper authored
llvm-svn: 187783
-
Craig Topper authored
llvm-svn: 187781
-
NAKAMURA Takumi authored
Target/*/CMakeLists.txt: Add the dependency to CommonTableGen explicitly for each corresponding CodeGen. Without explicit dependencies, both per-file action and in-CommonTableGen action could run in parallel. It races to emit *.inc files simultaneously. llvm-svn: 187780
-
Craig Topper authored
llvm-svn: 187779
-
NAKAMURA Takumi authored
llvm-svn: 187778
-
NAKAMURA Takumi authored
llvm-svn: 187777
-
Craig Topper authored
Put an llvm_unreachable at the end of getSplatIndex as its loop should never find all undef elements. llvm-svn: 187775
-
Craig Topper authored
Check against >= 0 instead of != -1 in getSplatIndex because it generally compiles to better code and is equivalent for shuffle indices. llvm-svn: 187774
-
Craig Topper authored
llvm-svn: 187773
-
Craig Topper authored
llvm-svn: 187771
-
Tom Stellard authored
Patch by: Mei Ye llvm-svn: 187764
-
Eric Christopher authored
llvm-svn: 187763
-
Shuxin Yang authored
llvm-svn: 187761
-
Matt Arsenault authored
llvm-svn: 187758
-
Bill Wendling authored
llvm-svn: 187756
-
Bill Wendling authored
llvm-svn: 187755
-
Tom Stellard authored
llvm-svn: 187754
-
Eric Christopher authored
llvm-svn: 187752
-
Tom Stellard authored
We use MVT::i32 for the vector index type, because we use 32-bit operations to caculate offsets when dynamically indexing vectors. llvm-svn: 187749
-
Tom Stellard authored
This virtual function can be implemented by targets to specify the type to use for the index operand of INSERT_VECTOR_ELT, EXTRACT_VECTOR_ELT, INSERT_SUBVECTOR, EXTRACT_SUBVECTOR. The default implementation returns the result from TargetLowering::getPointerTy() The previous code was using TargetLowering::getPointerTy() for vector indices, because this is guaranteed to be legal on all targets. However, using TargetLowering::getPointerTy() can be a problem for targets with pointer sizes that differ across address spaces. On such targets, when vectors need to be loaded or stored to an address space other than the default 'zero' address space (which is the address space assumed by TargetLowering::getPointerTy()), having an index that is a different size than the pointer can lead to inefficient pointer calculations, (e.g. 64-bit adds for a 32-bit address space). There is no intended functionality change with this patch. llvm-svn: 187748
-