Extract trivial rs(Get/Set)ElementAtImpl() method
Reduce redundant code and create the rs(Get/Set)ElementAtImpl() methods which
only load or store data, but which do nothing else. Keeping those functions
simple is important, as they may later be replaced by LLVM-IR implementations
annotated with RenderScript specific alias information.
The immediate benefit of this change is the removal of code duplication.
Instead we rely on LLVM to perform inlining and constant propagation. We
verified that LLVM performs these transformations successfully by both
examining the generated LLVM-IR as well as by running the image processing
benchmark. We did not measure any performance impact.
We also discussed the possibility, that other compilers may not be able to
do this (rather basic) transformation. However, this code will generally be
compiled by LLVM. Vendors that might use a different compiler normally have
also their own implementation of the run-time library, such that this change
does not apply for them.
Change-Id: I3d079785b2fd5ce8373cc6e5fa118611ec1f487e
1 file changed