summaryrefslogtreecommitdiffstats
path: root/libclc/generic/lib/integer
Commit message (Collapse)AuthorAgeFilesLines
* popcount: Provide function implementation rather than intrinsic redirectJan Vesely2018-03-081-0/+8
| | | | | | | | amdgcn will need to override this Reviewer: Aaron Watry <awatry@gmail.com> Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu> llvm-svn: 327042
* integer/sub_sat: Use clang builtin instead of llvm asmJan Vesely2017-10-023-156/+26
| | | | | | | reviewer: Tom Stellard Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu> llvm-svn: 314703
* integer/add_sat: Use clang builtin instead of llvm asmJan Vesely2017-10-023-146/+28
| | | | | | | reviewer: Tom Stellard Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu> llvm-svn: 314702
* integer/clz: Use clang builtin instead of llvm asmJan Vesely2017-10-023-117/+8
| | | | | | | | | The generated llvm IR mostly identical. char/uchar case is a bit worse. reviewer: Tom Stellard Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu> llvm-svn: 314701
* Implement generic mad_satJan Vesely2014-09-021-0/+72
| | | | | | | | | | | | v2: Fix trailing whitespace Fix signed long overflow improve comment v3: fix typo Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu> Reviewed-by: Tom Stellard <tom@stellard.net> llvm-svn: 216923
* Revert "Implement generic mad_sat"Aaron Watry2014-08-231-72/+0
| | | | | | | | This reverts commit cf62eded8b623a1c10d3692d25e5882b7939f564. I didn't mean to commit this... Jan has a v3 incoming llvm-svn: 216322
* Implement generic mad_satAaron Watry2014-08-231-0/+72
| | | | | | | | | v2: Fix trailing whitespace Fix signed long overflow improve comment Signed-off-by: Jan Vesely <jan.vesely at rutgers.edu> llvm-svn: 216320
* Move clcmacro.h to avoid cluttering user namespace v2Jeroen Ketema2014-06-243-0/+3
| | | | | | | | | v2: - use quotes instead of <> - add include to r600/lib/math/nextafter.c changed Reviewed-by: Tom Stellard <tom@stellard.net> Reviewed-by: Aaron Watry <awatry@gmail.com> llvm-svn: 211576
* s/_CLC_DECL/_CLC_DEF/Tom Stellard2013-10-312-14/+14
| | | | | | | | | Some function definitions were using _CLC_DECL, which meant that they weren't being marked as always_inline. Reviewed-by and Tested-by: Aaron Watry <awatry@gmail.com> llvm-svn: 193754
* Add mul_hi implementation [v2]Aaron Watry2013-08-191-0/+109
| | | | | | | | | | | | | | | Everything except long/ulong is handled by just casting to the next larger type, doing the math and then shifting/casting the result. For 64-bit types, we break the high/low parts of each operand apart, and do a FOIL-based multiplication. v2: Discard the stack-overflow implementation due to copyright concerns. - The implementation is still FOIL-based, but discards the previous code. Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 188684
* Add rhadd builtinAaron Watry2013-08-152-0/+10
| | | | | | | | | | | | rhadd = (x+y+1)>>1 Implemented as: (x>>1) + (y>>1) + ((x&1)|(y&1)) This prevents us having to do assembly addition and overflow detection Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 188477
* Add hadd builtinAaron Watry2013-08-152-0/+10
| | | | | | | | | | (x + y) >> 1 gets changed to: (x>>1) + (y>>1) + (x&y&1) Saves us having to do any llvm assembly and overflow checking in the addition. Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 188476
* Implement generic upsample()Aaron Watry2013-07-191-0/+34
| | | | | | | | | | | | | | Reduces all vector upsamples down to its scalar components, so probably not the most efficient thing in the world, but it does what the spec says it needs to do. Another possible implementation would be to convert/cast everything as unsigned if necessary, upsample the input vectors, create the upsampled value, and then cast back to signed if required. Signed-off-by: Aaron Watry <awatry@gmail.com> Reviewed-by: Tom Stellard <thomas.stellard at amd.com> llvm-svn: 186691
* Implement mad24() and mul24() builtinsTom Stellard2013-07-084-0/+22
| | | | | Reviewed-by: Aaron Watry <awatry@gmail.com> llvm-svn: 185839
* Add __CLC_ prefix to all macro definitions in headersTom Stellard2013-07-086-22/+22
| | | | | | | | | | | libclc was defining and undefing GENTYPE and several other macros with common names in its header files. This was preventing applications from defining macros with identical names as command line arguments to the compiler, because the definitions in the header files were masking the macros defined as compiler arguements. Reviewed-by: Aaron Watry <awatry@gmail.com> llvm-svn: 185838
* libclc: Implement clz() builtinTom Stellard2013-06-263-0/+151
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Squashed commit of the following: commit a0df0a0e86c55c1bdc0b9c0f5a739e5adef4b056 Author: Aaron Watry <awatry@gmail.com> Date: Mon Apr 15 18:42:04 2013 -0500 libclc: Rename clz.ll to clz_if.ll to ensure it gets built. configure.py treats files that have the same name with the .cl and .ll extensions as overriding eachother. E.g. If you have clz.cl and clz.ll both specified to be built in the same SOURCES file, only the first file listed will actually be built. Since the contents of clz.ll were an interface that is implemented in clz_impl.ll, rename clz.ll to clz_if.ll to make sure that the interface is built. commit 931b62bed05c58f737de625bd415af09571a6a5a Author: Aaron Watry <awatry@gmail.com> Date: Sat Apr 13 12:32:54 2013 -0500 libclc: llvm assembly implementation of clz Untested... currently crashes in the same manner as add_sat. commit 6ef0b7b0b6d2e5584086b4b9a9243743b2e0538f Author: Aaron Watry <awatry@gmail.com> Date: Sat Mar 23 12:35:27 2013 -0500 libclc: Add stub clz builtin For scalar int/uint, attempt to use the clz llvm builtin.. for all others return 0 until an actual implementation is finished. Patch by: Aaron Watry llvm-svn: 185004
* libclc: Rename [add|sub]_sat.ll to [add|sub]_sat_if.llTom Stellard2013-06-262-0/+0
| | | | | | | | | | | | | | | | | configure.py allows overloading *.cl with *.ll, but will only ever build the first file listed in SOURCES of ${file}.cl and ${file}.ll add_sat, sub_sat, (and the soon to be submitted clz) all define interfaces in ${function_name}.ll which are implemented in ${function_name}_impl.ll. Renaming the interface files is enough to get them to build again, fixing CL usage of these functions. Tested on clover/r600g. Patch by: Aaron Watry llvm-svn: 185000
* Add a another TODO note.Tom Stellard2013-06-261-0/+3
| | | | | | Patch by: Aaron Watry llvm-svn: 184999
* Add a TODO note.Tom Stellard2013-06-261-0/+4
| | | | | | Patch by: Aaron Watry llvm-svn: 184998
* Simplify rotate implementation a bit..Tom Stellard2013-06-261-21/+21
| | | | | | | | Much more understandable/readable as a result, and probably more efficient. Patch by: Aaron Watry llvm-svn: 184997
* libclc: implement rotate builtinTom Stellard2013-06-262-0/+39
| | | | | | | | | | | | This implementation does a lot of bit shifting and masking. Suffice to say, this is somewhat suboptimal... but it does look to produce correct results (after the piglit tests were corrected for sign extension issues). Someone who knows LLVM better than I could re-write this more efficiently. Patch by: Aaron Watry llvm-svn: 184996
* libclc: Move max builtin to shared/Tom Stellard2013-06-262-7/+0
| | | | | | | | Max(x,y) is available for all integer/floating types. Patch by: Aaron Watry llvm-svn: 184995
* libclc: Fix abs_diff builtin integer functionTom Stellard2013-06-261-1/+1
| | | | | | Patch by: Aaron Watry llvm-svn: 184993
* libclc: Add max() builtin functionTom Stellard2013-06-262-0/+7
| | | | | | | | Adds this function for both int and floating data types. Patch by: Aaron Watry llvm-svn: 184992
* Do not use linkonce_odr linkage in .ll files. This prevented themPeter Collingbourne2012-08-054-32/+32
| | | | | | from being linked into the library under lazy linkage. llvm-svn: 161314
* Implement sub_sat builtin. Patch by Lei Mou!Peter Collingbourne2012-08-053-0/+190
| | | | llvm-svn: 161312
* Fix declarations of __clc_add_sat_*. Patch by Lei Mou!Peter Collingbourne2012-08-051-8/+8
| | | | llvm-svn: 161311
* Initial commit.Peter Collingbourne2012-01-087-0/+204
llvm-svn: 147756
OpenPOWER on IntegriCloud