9e0f8f0c8965834de02d007bb30e1dc950cf9762 |
|
12-Apr-2016 |
Pirama Arumuga Nainar <pirama@google.com> |
Translate GEP instructions on structs to GEP on int8* http://b/24142721 X86 data layout has 64-bit scalars aligned at 4-byte boundaries, while ARM aligns these data at 8-byte boundaries. To bring frontend- and backend-generated code into agreement, this patch adds a pass to translate GEPs on structs to GEPs with int8* operands and byte offsets. This pass runs only on X86 targets. Change-Id: I961b2bc7db9f57f15126f27396db42c9deedfd43 (cherry picked from commit d2d5ee3893220cec256c829a4740a718232f84ac)
/frameworks/compile/libbcc/include/bcc/Compiler.h
|
09c7a41f73602bec33e9d392cc959d78931f73c4 |
|
25-Nov-2015 |
Dean De Leo <dean@codeplay.com> |
Initial version of debug info pass for RS. This introduces a new LLVM pass into libbcc called RSAddDebugInfoPass. Its purpose is to add debug information metadata to LLVM constructs generated by the other parts of libbcc. The generated code generally lacks sufficient debugging information as it has not been processed by the clang-based front-end. The initial version of RSAddDebugInfoPass provides the following: 1. It annotates the expanded function generated by RSExpandKernel pass with debug information, stating the name of the function and source file indicating that the function has been generated. 2. It annotates the instructions of the *.expand function with filename/line indicating that the function code has been generated. The source file of both the generated function definition and the instructions that make up the function is mapped to the source location of /opt/renderscriptdebugger/1/generated.rs:1. That might be source-mapped by the debugger to an appropriate file in the SDK, the contents of which clearly indicate that the user is dealing with generated code (i.e. one without a "physical" source file). Change-Id: I2e566160a448d7bfbb3f8d16680e09e43c845693
/frameworks/compile/libbcc/include/bcc/Compiler.h
|
4e7a50685ae18a24087f6f2a51c604e71fab69e2 |
|
31-Jul-2015 |
Matt Wala <wala@google.com> |
Expand reduce-style kernels. Bug: 22631253 Rename the RSForEachExpand pass / source file to RSKernelExpand. In addition to already being responsible for expanding foreach-style kernels, RSKernelExpand now expands reduce-style kernels from define foo @func(foo %a, foo %b) into define void @func.expand(i8* %inBuf, i8* %outBuf, i32 len) The expanded function reduces a sub-range of its input. Change-Id: I518fa9367b57111a2f2a1b23903ff870c421beeb
/frameworks/compile/libbcc/include/bcc/Compiler.h
|
5aefc98db2dc14a703ce3d4f134565b834686552 |
|
04-Aug-2015 |
David Gross <dgross@google.com> |
Clean up Compiler::runPasses(). Flatten out call tree rooted at Compiler::runPasses(), to make it easier to understand. Bug: 22801527 Change-Id: I680f9443bba3328c4c0da73a2358d4cd12094d20
/frameworks/compile/libbcc/include/bcc/Compiler.h
|
ebff2ead4ad622ff1bd3f3c108790cead62fe7c7 |
|
22-May-2015 |
Pirama Arumuga Nainar <pirama@google.com> |
Screen bitcode for non-RS functions before linking with runtime lib Bug: 19425238 Bug: 20894432 Perform the screening of non-RenderScript functions in the script before linking against the runtime lib. Previously, this used to be done after linking with the runtime lib, LTO passes and just before code generation. This allows vendors to link against a different runtime library that may not have all the functions as the CPU reference driver and add new builtins specific to their driver. Moreover, symbols introduced by LLVM optimizations no longer need any special handling. Change-Id: I5628aa15547a9d56ef7e6550fcb45e8ffa821ade
/frameworks/compile/libbcc/include/bcc/Compiler.h
|
e57fde54a4145a85439545f79bd8747682f86ded |
|
15-May-2015 |
Pirama Arumuga Nainar <pirama@google.com> |
Merge "Update libbcc for rebase to LLVM r235153"
|
98137cca7eebca946b869b010fef2821c9bf4971 |
|
06-May-2015 |
Pirama Arumuga Nainar <pirama@google.com> |
Update libbcc for rebase to LLVM r235153 Some changes related to GEP may impact us in the future: - GEP constructors take an additional argument - the pointee type of the resulting pointer. Update bitcode readers accordingly. They take nullptr for now. This behavior should be retained at least for 3.x. - Likewise, CreateStructGEP and CreateConstInBoundsGEP2_32 need the pointee type argument. Passing nullptr for the extra argument for now. According to commit message in r233938, passing nullptr may not work in the future. Unlike the BitcodeReaders, we can pass the right pointee type here. b/20886457 is created to track this issue. Change-Id: I2450da1c36470fb9defd387d74360480c3e4bd2f
/frameworks/compile/libbcc/include/bcc/Compiler.h
|
750ee65e129a2baef2dc5bb9ad210b45c9184926 |
|
17-Apr-2015 |
Stephen Hines <srhines@google.com> |
Provide a pass that creates information about global variables in RS. Bug: 20306487 This change implements RSGlobalInfoPass, which is an optional LLVM pass that adds several new global variables to a given Module. These variables contain information about the other RenderScript global variables that are present. Change-Id: I671013c11c7a528254edad5c66f2858953c0f5c4
/frameworks/compile/libbcc/include/bcc/Compiler.h
|
8c24f8d1d75b619130e8bfce204ed9695362d4a1 |
|
17-Mar-2015 |
Pirama Arumuga Nainar <pirama@google.com> |
Undo AArch64 pass-by-pointer for X86-64 bug 19779488 AArch64's calling convention passes large objects by pointer/reference. Consequently, RS functions exported in the driver need special handling for x86-64. This patch creates a new pass to libbcc that identifies pointer arguments created due to the AArch64 convention and marks them as pass-by-value. Change-Id: I2e24edd9704e843b118f4c445cfd92f61f9de909
/frameworks/compile/libbcc/include/bcc/Compiler.h
|
5cb1f3949c5bdd43c84647920d147a6b8509e256 |
|
07-Apr-2015 |
Stephen Hines <srhines@google.com> |
Update libbcc for LLVM rebase to r233350. - Remove direct calls/use of DataLayoutPass. - Move BitcodeReader.h (declarations) into BitcodeReader.cpp files. - Fix typed/untyped GEP. - Add empty materializeMetadata(), since we don't defer it ever. - Fix longstanding (but insconsequential) difference between bitc::CST_CODE_INLINEASM and bitc::CST_CODE_INLINEASM_OLD. Change-Id: I135e494beea2f5992db1cb5c038d52cced991e72
/frameworks/compile/libbcc/include/bcc/Compiler.h
|
1bd9f627fa0affb457507e86b0b6684c695fe726 |
|
18-Mar-2015 |
Stephen Hines <srhines@google.com> |
Update libbcc for LLVM rebase to r230699. Change-Id: If6717d2df5cc74e7daa493a4be7ac891f8e4928f
/frameworks/compile/libbcc/include/bcc/Compiler.h
|
1d93a190e62ec1588b4724ca8759216b2d0b76d7 |
|
25-Mar-2015 |
David Gross <dgross@google.com> |
Add RSInvariant pass to recognize Load from RsExpandKernelDriverInfo as invariant. This allows more-aggressive optimization of foreachexp-generated code and of the rsGet*(rs_kernel_context) API functions. In particular, it facilitates LICM of Loads out of the wrapper loop in a .expand function. Bug: 18964628 Change-Id: I77a87b325724ca08c4a04f5a46f316be78a5e0fd
/frameworks/compile/libbcc/include/bcc/Compiler.h
|
1e0557ae75ae780352845bd2ba0f4babdc5ae4e6 |
|
03-Dec-2014 |
Pirama Arumuga Nainar <pirama@google.com> |
BCC updates to handle linkloader removal Bug: 18322681 - Add -fPIC and -embedRSInfo flags to bcc. fPIC generates relocatable object code and -embedRSInfo embeds RS symbol information into the .rs.info variable in the object file. - PIC_ relocation in x86_64 also entails that the CodeModel must be small. Otherwise, we end up with TEXTRELs in the shared library. - Add an LLVM pass to screen functions visibile in RS. lib/RenderScript/generate-whitelist.sh is used to automatically generate the stubbed functions to the whitelist. Change-Id: Ib0a16b7e7aff89490ac631885ffa97dd31c184ce
/frameworks/compile/libbcc/include/bcc/Compiler.h
|
b7bce7436876884dfd78ec41d147ddbe47e37cbd |
|
04-Nov-2014 |
Tim Murray <timmurray@google.com> |
generate calls to rsSetObject inside .helper invoke functions bug 18071147 Change-Id: I0ff00b3a86cd799cdb1eebcd1000b74070ee0cdf
/frameworks/compile/libbcc/include/bcc/Compiler.h
|
b4447cd2b14f53efd9102d28da48000be7b2d4fd |
|
20-Aug-2014 |
Chris Wailes <chriswailes@google.com> |
De-cruft the libbcc compiler infrastructure. This patch removes the RSCompiler subclass of Compiler and moves most of its functionality over to the original Compiler class. Methods and variables are re-named to make the code clearer. In addition, unused functions have been removed. Change-Id: I121463df6309c377496cebea8cbb82bb49624ed1
/frameworks/compile/libbcc/include/bcc/Compiler.h
|
dee928bc6675807469a05ebd00816063e2ecff25 |
|
11-Feb-2014 |
Stephen Hines <srhines@google.com> |
Update libbcc for LLVM 3.4 rebase. Convert all bitcode readers to use error_code instead of bool + char* for status returns. Remove LinkOnceODRAutoHideLinkage, since it is now just a special case of LinkOnceODRLinkage. Handle the PassManager -> legacy::PassManager transition. Change-Id: I33f0fe1c95436d35d02bc3f1b19b268f25f149d1
/frameworks/compile/libbcc/include/bcc/Compiler.h
|
6a5fa14074200a18824defa0bffc64e5f2487152 |
|
24-Jul-2013 |
Tobias Grosser <grosser@google.com> |
Remove beforeExecuteLTOPasses callback This callback had very unclear semantics and the current use was suprising. Specifically, it took a PassManager parameter, but adding anything to this pass manager would cause the passes to be executed after the other LTO passes The only way to execute passes before the LTO passes, was to create a new pass manager that executes a pass right before all LTO passes (that have already being queued in the pass manager passed in as a parameter) will be executed. The very same behavior can be achieved by just adding our passes to the normal pass manager using the "BeforeAddLTOPasses" callback. We used this callback to schedule the ForEachExpand pass. This pass is now moved to the beforeAddLTOPasses callback. Change-Id: I3916543a4ee282e403174b90dc7b7588baab9ea3
/frameworks/compile/libbcc/include/bcc/Compiler.h
|
5b7f52aff2030d520ee2ac6d3ac7d917f38d550c |
|
23-Jul-2013 |
Tobias Grosser <grosser@google.com> |
Improve error code to error string translation We now use an explicit switch to translate an error code to an error string as this allows the compiler to statically verify that we covered all cases. While at it we add a new error message for "kErrInvalidSource" which was missing previously. We also remove "kMaxErrorCode" as it was unused. Change-Id: I8ade465697c7fa6cc3e48c5c581e5a4dfcf15959
/frameworks/compile/libbcc/include/bcc/Compiler.h
|
27fb7edfd3f53f52fba6ee81267c02f7896198a3 |
|
22-Jun-2013 |
Tobias Grosser <grosser@google.com> |
Dump LLVM-IR before generating target code Dumping the IR earlier prevents target specific passes to modify the IR before it is dumped. Change-Id: I8a61efb7140b0c2025381ea1ad1f4cf3522ec870
/frameworks/compile/libbcc/include/bcc/Compiler.h
|
47f0d5a8d9ed629a6d58d3e69891f2c7fdee44d9 |
|
05-Jun-2013 |
Stephen Hines <srhines@google.com> |
Further separate build (compile) and load in libbcc. Bug: 7342767 Change-Id: Ia6000d6c3557280126c6bb7f945c922528adeedc
/frameworks/compile/libbcc/include/bcc/Compiler.h
|
b730e239619a546d93e5926ea92d698ab77ec7f6 |
|
10-Jan-2013 |
Stephen Hines <srhines@google.com> |
Updates for LLVM merge to r171906 on 20130108. Change-Id: I096cb90103b19e3110ea562d60e5eb8ad48d9b67
/frameworks/compile/libbcc/include/bcc/Compiler.h
|
0dbd4fbaf5966b52e4382a748fd9c7c7b9b31f55 |
|
27-Jul-2012 |
Shih-wei Liao <sliao@google.com> |
Provide a way to obtain TargetMachine. BUG=6886348. Change-Id: I39da6c634586f8993df10af4a1b7bfb603a38f84
/frameworks/compile/libbcc/include/bcc/Compiler.h
|
c72c4ddfcd79c74f70713da91a69569451b5c19e |
|
12-Apr-2012 |
Zonr Chang <zonr.net@gmail.com> |
Make libbcc public. This commit is not expected to change any functionality. Change-Id: I364e8bad32d946281b78b1ce36a1b26bf60e3055
/frameworks/compile/libbcc/include/bcc/Compiler.h
|
2f6a493aea1b6e5ad318a759fedb58713a5a374c |
|
03-May-2012 |
Stephen Hines <srhines@google.com> |
Revert "Make libbcc public." This reverts commit 80232dd16c0affb2afae01cde6c94abf23ac1ba8.
/frameworks/compile/libbcc/include/bcc/Compiler.h
|
80232dd16c0affb2afae01cde6c94abf23ac1ba8 |
|
12-Apr-2012 |
Zonr Chang <zonr.net@gmail.com> |
Make libbcc public. This commit is not expected to change any functionality.
/frameworks/compile/libbcc/include/bcc/Compiler.h
|