1d5395fbfSPeter Collingbourne<html> 2d5395fbfSPeter Collingbourne<head> 3d5395fbfSPeter Collingbourne<title>libclc</title> 4d5395fbfSPeter Collingbourne</head> 5d5395fbfSPeter Collingbourne<body> 6d5395fbfSPeter Collingbourne<h1>libclc</h1> 7d5395fbfSPeter Collingbourne<p> 874790d6cSPeter Collingbournelibclc is an open source, BSD/MIT dual licensed 9d5395fbfSPeter Collingbourneimplementation of the library requirements of the 10d5395fbfSPeter CollingbourneOpenCL C programming language, as specified by the <a 112e4f1e11SStephan T. Lavavejhref="https://www.khronos.org/registry/OpenCL/specs/opencl-1.1.pdf">OpenCL 12d5395fbfSPeter Collingbourne1.1 Specification</a>. The following sections of the specification 13d5395fbfSPeter Collingbourneimpose library requirements: 14d5395fbfSPeter Collingbourne<ul> 15d5395fbfSPeter Collingbourne<li>6.1: Supported Data Types 16d5395fbfSPeter Collingbourne<li>6.2.3: Explicit Conversions 17d5395fbfSPeter Collingbourne<li>6.2.4.2: Reinterpreting Types Using as_type() and as_typen() 18d5395fbfSPeter Collingbourne<li>6.9: Preprocessor Directives and Macros 19d5395fbfSPeter Collingbourne<li>6.11: Built-in Functions 20d5395fbfSPeter Collingbourne<li>9.3: Double Precision Floating-Point 21d5395fbfSPeter Collingbourne<li>9.4: 64-bit Atomics 22d5395fbfSPeter Collingbourne<li>9.5: Writing to 3D image memory objects 23d5395fbfSPeter Collingbourne<li>9.6: Half Precision Floating-Point 24d5395fbfSPeter Collingbourne</ul> 25d5395fbfSPeter Collingbourne</p> 26d5395fbfSPeter Collingbourne 27d5395fbfSPeter Collingbourne<p> 282e4f1e11SStephan T. Lavavejlibclc is intended to be used with the <a href="https://clang.llvm.org/">Clang</a> 29d5395fbfSPeter Collingbournecompiler's OpenCL frontend. 30d5395fbfSPeter Collingbourne</p> 31d5395fbfSPeter Collingbourne 32d5395fbfSPeter Collingbourne<p> 33d5395fbfSPeter Collingbournelibclc is designed to be portable and extensible. To this end, 34d5395fbfSPeter Collingbourneit provides generic implementations of most library requirements, 35d5395fbfSPeter Collingbourneallowing the target to override the generic implementation at the 36d5395fbfSPeter Collingbournegranularity of individual functions. 37d5395fbfSPeter Collingbourne</p> 38d5395fbfSPeter Collingbourne 39d5395fbfSPeter Collingbourne<p> 40d4cd67abSMatt Arsenaultlibclc currently supports the AMDGCN, and R600 and NVPTX targets, but 41d4cd67abSMatt Arsenaultsupport for more targets is welcome. 42d5395fbfSPeter Collingbourne</p> 43d5395fbfSPeter Collingbourne 44d5395fbfSPeter Collingbourne<h2>Download</h2> 45d5395fbfSPeter Collingbourne 465d71fc5dSJames Y Knight<tt>git clone https://github.com/llvm/llvm-project.git</tt> (<a href="https://github.com/llvm/llvm-project/tree/libclc">View sources</a>) 47d5395fbfSPeter Collingbourne 48*44f81dfbStlattner<h2>Discourse forums</h2> 49d5395fbfSPeter Collingbourne 50*44f81dfbStlattner<a href="https://discourse.llvm.org/c/runtimes/opencl/65">Runtimes - OpenCL category</a> 51d5395fbfSPeter Collingbourne 52d5395fbfSPeter Collingbourne</body> 53d5395fbfSPeter Collingbourne</html> 54