History log of /frameworks/compile/libbcc/include/bcc/Renderscript/RSTransforms.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/Renderscript/RSTransforms.h
ba1a8f1e6f3eb5b7069e9ba1575f16e393c84c23 25-Nov-2015 Dean De Leo <dean@codeplay.com> Make RSKernelExpand use memory rather than registers.

The RSKernelExpand pass generates a loop around the main kernel body.
This patch changes it to use LLVM memory with loads and stores rather
than generating the SSA directly. This is required in order to be able
to attach debugging information to the memory location associated with
the loop iteration index variable, enabling the debugger to inspect
current thread coordinate. The regular SSA form of LLVM IR doesn't allow
this to be done efficiently.

If optimizations are enabled, the subsequent passes promote memory back
to registers, avoiding potential performance regressions.

(cherry picked from commit 4165d29822fc7caf81e435995ff6189608fc0323)

Change-Id: Ic394c2876e72a4b3c7e1fe888f2369510fdd3d33
/frameworks/compile/libbcc/include/bcc/Renderscript/RSTransforms.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/Renderscript/RSTransforms.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/Renderscript/RSTransforms.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/Renderscript/RSTransforms.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/Renderscript/RSTransforms.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/Renderscript/RSTransforms.h
9fe081b8bae8a95d903f8fa8dc0a7590ae706606 27-Jan-2015 Pirama Arumuga Nainar <pirama@google.com> Mark whether a script is threadable

bug 19095896

Add a pass to check for calls to non-threadable functions. We add a
metadata flag to store the result. RSEmbedInfo also adds this
information to .rs.info.

Change-Id: Iba9a41b338d21a3529a1092656a51be985910fca
/frameworks/compile/libbcc/include/bcc/Renderscript/RSTransforms.h
5db508c73e6177eb306bac4725616b7c001587c4 06-Jan-2015 Stephen Hines <srhines@google.com> Fix a few bugs in RSScreenFunctionsPass.

Bug: 18322681

This patch fixes a few small issues:
1) The debug context runtime stubs had a few minor name mangling errors.
2) The verification of functions needs to be done after we have stripped
away any unused code. Without this, there are issues with debug contexts,
because they have unused references to rsOffset()/rsOffsetNs().
3) We don't actually need to maintain a separate status return for the pass,
since llvm::report_fatal_error() will do the right thing in the case of
an illegal function being called.

Change-Id: I0afe7cf58148cd132f9356268d5ad8acdce1a02d
/frameworks/compile/libbcc/include/bcc/Renderscript/RSTransforms.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/Renderscript/RSTransforms.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/Renderscript/RSTransforms.h
25eb586bb055ae07c7e82a2b1bdbd6936641580c 09-May-2014 Stephen Hines <srhines@google.com> Switch RSForEachExpandPass to use MetadataExtractor.

Change-Id: I442054e7aa2329b369f578052bd41c7a973cc822
/frameworks/compile/libbcc/include/bcc/Renderscript/RSTransforms.h
1253c195dd7911ad91bd66790f03e4c2f8888ad2 09-May-2014 Stephen Hines <srhines@google.com> Switch to MetadataExtractor path.

Change-Id: Iabef9abb1c770ffe1e753cfd2fac808f60c19d8a
/frameworks/compile/libbcc/include/bcc/Renderscript/RSTransforms.h
86a0b797c221d4c3373dc10c8229b75b6747f6e7 07-Nov-2012 Stephen Hines <srhines@google.com> Embed RS metadata info directly in emitted object code.

Bug: 7419958
Change-Id: Ibd82e503c006532aa74013a46dd13ec3e9473daa
/frameworks/compile/libbcc/include/bcc/Renderscript/RSTransforms.h
2b04086acbef6520ae2c54a868b1271abf053122 28-Jul-2012 Stephen Hines <srhines@google.com> Use known strides instead of input args when possible.

BUG=6892059

Change-Id: I15b3726624ff0eeca5e30aaa6de928f1c9912471
/frameworks/compile/libbcc/include/bcc/Renderscript/RSTransforms.h
e198abec6c5e3eab380ccf6897b0a0b9c2dd92dd 28-Jul-2012 Stephen Hines <srhines@google.com> Rename RenderScript -> Renderscript.

Change-Id: I187928033b47f3e3f4cb811a0b3562f479cfe417
/frameworks/compile/libbcc/include/bcc/Renderscript/RSTransforms.h