Beignet is an open-source OpenCL implementation for Intel graphics cores on Linux.
- backend: refine load store optimization
Song, Ruiling: this fix basic test in conformance tests failed for vec8 of char because of overflow.
- backend: improve add zero pattern
rander: remove the negation check for adding zero.
- backend: refine load/store merging algorithm
rander: Now it works for sequence: load(0), load(1), load(2) but it cant work for load(2), load(0), load(1).
- backend: add global immediate optimization
rander: there are some global immediates in global var list of LLVM.
- Add utest case for filling image by small region
Yan Wang: It is used to reproduce the bug of allocations of conformance test.
- Backend: Add optimization for negative modifier
rander: LLVM transform Mad(a, -b, c) to Add b, -b, 0 Mad val, a, b, c
pow(a,-b) and other buildin math function to the same instruction sequence like above
for Gen support negtive modifier, mad(a, -b, c) is native suppoted.
- backend: add sqrt-div pattern to instruction select
rander: there some patterns like: sqrt r1, r2; load r4, 1.
- Runtime: Fix a mssing llvm version marco for LLVM40+
Pan Xiuli: Found a missing macro that need change to support LLVM40+.