History log of /frameworks/compile/libbcc/include/bcc/Compiler.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
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