summaryrefslogtreecommitdiffstats
path: root/libclc/generic/include/clc
Commit message (Collapse)AuthorAgeFilesLines
...
* atomic: Add generic atom[ic]_xorAaron Watry2014-09-164-0/+10
| | | | | | Signed-off-by: Aaron Watry <awatry@gmail.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 217915
* atomic: Add atom[ic]_orAaron Watry2014-09-164-0/+10
| | | | | | Signed-off-by: Aaron Watry <awatry@gmail.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 217914
* atomics: Add generic atom[ic]_andAaron Watry2014-09-164-0/+10
| | | | | | | | Not used yet. Signed-off-by: Aaron Watry <awatry@gmail.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 217913
* atomic: Add generic implementation of atom[ic]_maxAaron Watry2014-09-164-0/+14
| | | | | | | | | | Not used yet... v2: Correct int/uint behavior Signed-off-by: Aaron Watry <awatry@gmail.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 217912
* atomic: define extension functions for existing atomic implementationsAaron Watry2014-09-165-0/+14
| | | | | | | | We were missing the local versions of the atom_* before Signed-off-by: Aaron Watry <awatry@gmail.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 217911
* math: Add tan implementationAaron Watry2014-09-103-0/+4
| | | | | | | | | | | | | | | | | Uses the algorithm: tan(x) = sin(x) / sqrt(1-sin^2(x)) An alternative is: tan(x) = sin(x) / cos(x) Which produces more verbose bitcode and longer assembly. Either way, the generated bitcode seems pretty nasty and a more optimized but still precise-enough solution is welcome. Signed-off-by: Aaron Watry <awatry@gmail.com> Reviewed-by: Jan Vesely <jan.vesely@rutgers.edu> llvm-svn: 217511
* math: Add asin implementationAaron Watry2014-09-103-0/+4
| | | | | | | | | | | | | | asin(x) = atan2(x, sqrt( 1-x^2 )) alternatively: asin(x) = PI/2 - acos(x) Use the atan2 implementation since it produces slightly shorter bitcode and R600 machine code. Signed-off-by: Aaron Watry <awatry@gmail.com> Reviewed-by: Jan Vesely <jan.vesely@rutgers.edu> llvm-svn: 217510
* math: Add acos implementationAaron Watry2014-09-103-0/+4
| | | | | | | | | | Passes the tests that were submitted to the piglit list Tested on R600 (Pitcairn) Signed-off-by: Aaron Watry <awatry@gmail.com> Reviewed-by: Jan Vesely <jan.vesely@rutgers.edu> llvm-svn: 217509
* add isordered builtinJan Vesely2014-09-052-0/+10
| | | | | | Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu> Reviewed-by: Aaron Watry <awatry@gmail.com> llvm-svn: 217247
* add isunordered builtinJan Vesely2014-09-052-0/+10
| | | | | | | | v2: remove trailing newline Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu> Reviewed-by: Aaron Watry <awatry@gmail.com> llvm-svn: 217246
* add islessgreater builtinJan Vesely2014-09-052-0/+8
| | | | | | | | v2: remove trailing newline Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu> Reviewed-by: Aaron Watry <awatry@gmail.com> llvm-svn: 217245
* add isnormal builtinJan Vesely2014-09-052-0/+10
| | | | | | | | | v2: simplify and remove isnan leftovers remove trailing newline Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu> Reviewed-by: Aaron Watry <awatry@gmail.com> llvm-svn: 217244
* add isfinite builtinJan Vesely2014-09-052-0/+10
| | | | | | | | | v2: simplify and remove isinf leftovers remove trailing newline Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu> Reviewed-by: Aaron Watry <awatry@gmail.com> llvm-svn: 217243
* Implement isinf builtinTom Stellard2014-09-032-0/+22
| | | | llvm-svn: 217046
* Fix implementation of copysignTom Stellard2014-09-032-1/+3
| | | | | | | | | This was previously implemented with a macro and we were using __builtin_copysign(), which takes double inputs for the float version of copysign(). Reviewed-and-Tested-by: Aaron Watry <awatry@gmail.com> llvm-svn: 217045
* Implement generic mad_satJan Vesely2014-09-023-0/+5
| | | | | | | | | | | | 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-233-5/+0
| | | | | | | | This reverts commit cf62eded8b623a1c10d3692d25e5882b7939f564. I didn't mean to commit this... Jan has a v3 incoming llvm-svn: 216322
* Add int3/uint3 to integer-gentype.incAaron Watry2014-08-231-0/+8
| | | | | | | | These were missing and caused mad24/mul24 with int3/uint3 arg type to fail Signed-off-by: Aaron Watry <awatry@gmail.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 216321
* Implement generic mad_satAaron Watry2014-08-233-0/+5
| | | | | | | | | v2: Fix trailing whitespace Fix signed long overflow improve comment Signed-off-by: Jan Vesely <jan.vesely at rutgers.edu> llvm-svn: 216320
* Add missing file from r216127Tom Stellard2014-08-201-0/+204
| | | | llvm-svn: 216128
* Implement prefetch builtinTom Stellard2014-08-203-0/+7
| | | | | | | The default implementation is a no-op. Targets should override this with their own implementations. llvm-svn: 216127
* relational: Add islessequal(floatN) builtinJan Vesely2014-08-012-0/+8
| | | | | | | | v2: remove the initial undef Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu> Reviewed-by: Aaron Watry <awatry@gmail.com> llvm-svn: 214568
* relational: Add isless(floatN) builtinJan Vesely2014-08-012-0/+8
| | | | | | | | v2: remove the initial undef Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu> Reviewed-by: Aaron Watry <awatry@gmail.com> llvm-svn: 214567
* Implement sin builtin for float typesTom Stellard2014-07-232-6/+4
| | | | | | This double version still uses @llvm.sin. llvm-svn: 213762
* Implement cos builtin for float typesTom Stellard2014-07-232-6/+4
| | | | | | The double version still uses @llvm.cos. llvm-svn: 213761
* Implement atan2 builtinTom Stellard2014-07-234-0/+50
| | | | llvm-svn: 213760
* Implement atan builtinTom Stellard2014-07-233-0/+48
| | | | llvm-svn: 213759
* Add several missing double constant definitionsAaron Watry2014-07-171-0/+11
| | | | | | | | | | | These were present in CL 1.0, just not implemented yet. v2: Use hex values and fix commit message Signed-off-by: Aaron Watry <awatry@gmail.com> Reviewed-by: Jeroen Ketema <j.ketema@imperial.ac.uk> CC: Matt Arsenault <Matthew.Arsenault@amd.com> llvm-svn: 213321
* relational: Implement isnotequalAaron Watry2014-07-172-0/+10
| | | | | | | | v2: Use relational macros instead of hand-rolled ones Signed-off-by: Aaron Watry <awatry@gmail.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 213320
* relational: Implement isgreaterequalAaron Watry2014-07-172-0/+10
| | | | | | | | v2: Use relational macros instead of hand-rolled macros Signed-off-by: Aaron Watry <awatry@gmail.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 213319
* relational: Implement isgreaterAaron Watry2014-07-172-0/+10
| | | | | | | | v2: Use relational macros instead of hand-rolled macros Signed-off-by: Aaron Watry <awatry@gmail.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 213318
* relational/signbit: Refactor to use relational macrosAaron Watry2014-07-171-15/+6
| | | | | | Signed-off-by: Aaron Watry <awatry@gmail.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 213317
* relational: create re-usable macros for relational declarationsAaron Watry2014-07-173-0/+83
| | | | | | | | | | | | | | | | | | relational.h includes relational macros for defining functions which need to return 1 for scalar true and -1 for vector true. I believe that this is the only place that this behavior is required, so the macro is placed at its lowest useful level (same directory as it is used in). This also creates re-usable unary/binary declaration and floatn includes which should simplify relational builtin declarations. Mostly patterned off of include/math/[binary_decl|unary_decl|floatn].inc but with required changes for relational functions. Signed-off-by: Aaron Watry <awatry@gmail.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 213315
* OpenCL 1.1 does not define CL_VERSION_1_2 so use hardcoded number insteadJeroen Ketema2014-06-262-4/+4
| | | | | | | | Otherwise the test evaluates to true on OpenCL 1.1 and earlier. Since we therefore cannot use the CL_VERSION_?_? macros move them to the proper position in the top-level header. llvm-svn: 211787
* relational: Implement signbitAaron Watry2014-06-252-0/+19
| | | | | | | | | | | v2 Changes: - use __builtin_signbit instead of shifting by hand - significantly improve vector shuffling - Works correctly now for signbit(float16) on radeonsi Signed-off-by: Aaron Watry <awatry@gmail.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 211696
* Add exp10Jeroen Ketema2014-06-253-0/+12
| | | | | Reviewed-by: Tom Stellard <tom@stellard.net> llvm-svn: 211680
* Add half limitsJeroen Ketema2014-06-241-0/+15
| | | | | | | | | | | These are apparently only defined in OpenCL 1.2. HALF_MAX, HALF_MIN and HALF_EPSILON are currently omitted. Clang does not seem to support the ‘h’ suffix for half float constants even with the cl_khr_fp16 extension enabled. Reviewed-by: Tom Sellard <tom@stellard.net> llvm-svn: 211579
* Introduce CLC_VERSION macros v2Jeroen Ketema2014-06-242-0/+11
| | | | | | | | | Add these out-of-order in clc.h so we can use these in other headers. v2: Take into account the lack of a definition in OpenCL 1.0 Reviewed-by: Tom Stellard <tom@stellard.net> llvm-svn: 211578
* Add MAXFLOATJeroen Ketema2014-06-241-5/+6
| | | | | | | Align definitions while we are here. Reviewed-by: Tom Stellard <tom@stellard.net> llvm-svn: 211577
* Move clcmacro.h to avoid cluttering user namespace v2Jeroen Ketema2014-06-242-57/+0
| | | | | | | | | 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
* Add pownJeroen Ketema2014-06-182-0/+25
| | | | | Reviewed-by: Tom Stellard <tom@stellard.net> llvm-svn: 211211
* Add missing undefsJeroen Ketema2014-06-182-3/+7
| | | | | Reviewed-by: Tom Stellard <tom@stellard.net> llvm-svn: 211210
* Fix definition of INFINITY and add NAN/HUGE_VAL[F]Aaron Watry2014-06-161-0/+6
| | | | | | | | | | | | v3: change __builtin_nanf() to __builtin_nanf("") This doesn't work yet, but it was agreed to commit as-is with the logic that "broken" is better than "completely missing" and this should be fixed in clang. v2: use __builtin_inff() and also add nan/huge_val definitions Signed-off-by: Aaron Watry <awatry@gmail.com> llvm-svn: 211065
* Add remaining float constantsJeroen Ketema2014-06-161-0/+8
| | | | | Reviewed-by: Aaron Watry <awatry@gmail.com> llvm-svn: 211062
* Revert "clctypes.h: Don't rely on stddef.h for size_t and ptrdiff_t"Aaron Watry2014-06-161-2/+1
| | | | | | This reverts commit 4cf021ae67b6ea8cfd42aa76ce6f5e1c329e145a. llvm-svn: 211049
* math: Implement mix builtinAaron Watry2014-06-163-0/+8
| | | | | | Signed-off-by: Aaron Watry <awatry@gmail.com> Reviewed-by: Tom Stellard <tom@stellard.net> llvm-svn: 211047
* relational: Add isequal(floatN) builtinAaron Watry2014-06-162-0/+19
| | | | | | Signed-off-by: Aaron Watry <awatry@gmail.com> Reviewed-by: Tom Stellard <tom@stellard.net> llvm-svn: 211046
* Add all(igentype) builtinAaron Watry2014-06-162-0/+17
| | | | | | Signed-off-by: Aaron Watry <awatry@gmail.com> Reviewed-by: Tom Stellard <tom@stellard.net> llvm-svn: 211045
* clctypes.h: Don't rely on stddef.h for size_t and ptrdiff_tAaron Watry2014-06-161-1/+2
| | | | llvm-svn: 211044
* Add intptr typesJan Vesely2014-06-131-0/+12
| | | | | | | | Based on clang's stdint.h Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu> Reviewed-by: Tom Stellard <tom@stellard.net> llvm-svn: 210933
OpenPOWER on IntegriCloud