forked from OSchip/llvm-project
43ee367d1e
The values for the char/short/integer/long minimums were declared with their actual values, not the definitions from the CL spec (v1.1). As a result, (-2147483648) was actually being treated as a long by the compiler, not an int, which caused issues when trying to add/subtract that value from a vector. Update the definitions to use the values declared by the spec, and also add explicit casts for the char/short/int minimums so that the compiler actually treats them as shorts/chars. Without those casts, they actually end up stored as integers, and the compiler may end up storing the INT_MIN as a long. The compiler can sign extend the values if it needs to convert the char->short, short->int, or int->long v2: Add explicit cast for INT_MIN and fix some type-o's and wrapping in the commit message. Reported-by: Moritz Pflanzer <moritz.pflanzer14@imperial.ac.uk> CC: Moritz Pflanzer <moritz.pflanzer14@imperial.ac.uk> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> Signed-off-by: Aaron Watry <awatry@gmail.com> llvm-svn: 247661 |
||
---|---|---|
.. | ||
build | ||
generic | ||
ptx/lib | ||
ptx-nvidiacl/lib | ||
r600/lib | ||
test | ||
utils | ||
www | ||
CREDITS.TXT | ||
LICENSE.TXT | ||
README.TXT | ||
compile-test.sh | ||
configure.py |
README.TXT
libclc ------ libclc is an open source, BSD licensed implementation of the library requirements of the OpenCL C programming language, as specified by the OpenCL 1.1 Specification. The following sections of the specification impose library requirements: * 6.1: Supported Data Types * 6.2.3: Explicit Conversions * 6.2.4.2: Reinterpreting Types Using as_type() and as_typen() * 6.9: Preprocessor Directives and Macros * 6.11: Built-in Functions * 9.3: Double Precision Floating-Point * 9.4: 64-bit Atomics * 9.5: Writing to 3D image memory objects * 9.6: Half Precision Floating-Point libclc is intended to be used with the Clang compiler's OpenCL frontend. libclc is designed to be portable and extensible. To this end, it provides generic implementations of most library requirements, allowing the target to override the generic implementation at the granularity of individual functions. libclc currently only supports the PTX target, but support for more targets is welcome. Compiling and installing with Make ---------------------------------- $ ./configure.py --with-llvm-config=/path/to/llvm-config && make $ make install Note you can use the DESTDIR Makefile variable to do staged installs. $ make install DESTDIR=/path/for/staged/install Compiling and installing with Ninja ----------------------------------- $ ./configure.py -g ninja --with-llvm-config=/path/to/llvm-config && ninja $ ninja install Note you can use the DESTDIR environment variable to do staged installs. $ DESTDIR=/path/for/staged/install ninja install Website ------- http://www.pcc.me.uk/~peter/libclc/