Lu Guanqun [Tue, 25 Dec 2012 05:26:55 +0000 (13:26 +0800)]
fix assertion when two kernels exist in cl file
The root cause is that it fails to increment `currID` when traversing hash map.
Signed-off-by: Lu Guanqun <guanqun.lu@intel.com>
Reviewed-by: Zhigang Gong <zhigang.gong@linux.intel.com>
Lu Guanqun [Tue, 25 Dec 2012 03:43:44 +0000 (11:43 +0800)]
output file name and kernel name when cl_kernel_init() fails
This would help ease the debugging process a lot.
Signed-off-by: Lu Guanqun <guanqun.lu@intel.com>
Reviewed-by: Zhigang Gong <zhigang.gong@linux.intel.com>
Homer Hsing [Tue, 25 Dec 2012 00:53:39 +0000 (08:53 +0800)]
support vector data load/store for char,short,long
Signed-off-by: Homer Hsing <homer.xing@intel.com>
Feng, Boqun [Wed, 28 Nov 2012 08:21:10 +0000 (16:21 +0800)]
Change to Clang/LLVM ToT(Top of the Tree)
Two minor changed in this patch
1.files that use llvm new api.
backend/src/llvm/llvm_{gen_backend,passes}.cpp
2.change backend IR from ptx32 to nvptx.
all test cases in utest passed [SUSSECC], but may give wrong output.
for example, app_mandelbrot makes a wrong picture.
silk's cl_gl_fill passed.
revision of Clang/LLVM components:
llvm r168773
clang r168774
compiler-rt r168700
Signed-off-by: Feng, Boqun <boqun.feng@intel.com>
Reviewed-by: Zhigang Gong <zhigang.gong>
Zhigang Gong [Mon, 17 Dec 2012 07:21:11 +0000 (15:21 +0800)]
Fixed compilation warnings.
__STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS are in cflags,
we don't need to put them in source file. Otherwise, it causes
redefine warnings. Reported by guanqun.
Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
Xing, Homer [Wed, 12 Dec 2012 08:37:28 +0000 (16:37 +0800)]
Ignore OpenCL kernel copied from Intel OpenCL SDK
just modify .gitignore, to ignore OpenCL kernel copied from Intel OpenCL SDK
Homer Hsing [Mon, 10 Dec 2012 01:02:02 +0000 (09:02 +0800)]
support OpenCL 1.1 relational builtin functions "all","any"
Homer Hsing [Mon, 10 Dec 2012 00:41:01 +0000 (08:41 +0800)]
support OpenCL 1.1 relational builtin function "signbit"
Homer Hsing [Fri, 7 Dec 2012 01:56:21 +0000 (09:56 +0800)]
support some OpenCL 1.1 relational built-in functions
support isfinite, isinf, isnan, isnormal, islessgreater, isordered, isunordered
Homer Hsing [Fri, 7 Dec 2012 01:17:07 +0000 (09:17 +0800)]
add missing #define in ocl_stdlib.h: INLINE_OVERLOADABLE and OVERLOADABLE
use INLINE_OVERLOADABLE in DECL
Homer Hsing [Fri, 7 Dec 2012 01:10:05 +0000 (09:10 +0800)]
support some of OpenCL 1.1 relational built-in functions
support isequal, isnotequal, isgreater, isgreaterequal, isless, islessequal
also fix typo (these typo does not cause bug)
Homer Hsing [Thu, 6 Dec 2012 08:24:55 +0000 (16:24 +0800)]
support OpenCL 1.1 kernel_exec preprocessor macro
Homer Hsing [Thu, 6 Dec 2012 08:20:04 +0000 (16:20 +0800)]
test case for __kernel_exec
Homer Hsing [Thu, 6 Dec 2012 08:19:32 +0000 (16:19 +0800)]
support OpenCL 1.1 __kernel_exec preprocessor macro
Homer Hsing [Thu, 6 Dec 2012 08:00:13 +0000 (16:00 +0800)]
pass build-options of clBuildProgram to clang compiler
Homer Hsing [Thu, 6 Dec 2012 06:42:59 +0000 (14:42 +0800)]
add OpenCL 1.1 preprocessor macros ENDIAN_LITTLE
Homer Hsing [Thu, 6 Dec 2012 03:18:51 +0000 (11:18 +0800)]
support OpenCL 1.1 other built-in data types
Homer Hsing [Thu, 6 Dec 2012 03:14:58 +0000 (11:14 +0800)]
a more general typedef for size_t and ptrdiff_t
Homer Hsing [Thu, 6 Dec 2012 01:33:55 +0000 (09:33 +0800)]
support OpenCL 1.1 floating-point macros
Homer Hsing [Thu, 6 Dec 2012 01:18:27 +0000 (09:18 +0800)]
support some OpenCL 1.1 preprocessor directives & macros
Homer Hsing [Thu, 6 Dec 2012 01:05:44 +0000 (09:05 +0800)]
add test case for bool const, and vector component addressing
Homer Hsing [Thu, 6 Dec 2012 00:53:31 +0000 (08:53 +0800)]
support OpenCL 1.1 built-in scalar data types, built-in vector data types
Homer Hsing [Thu, 29 Nov 2012 01:41:46 +0000 (09:41 +0800)]
test OpenCL 1.1 Vector Data Load/Store Functions
Homer Hsing [Thu, 29 Nov 2012 01:40:50 +0000 (09:40 +0800)]
test OpenCL 1.1 Async Copies and Prefetch Functions
Homer Hsing [Mon, 26 Nov 2012 07:27:53 +0000 (15:27 +0800)]
Test OpenCL 1.1 Geometric Builtin Functions
Homer Hsing [Mon, 26 Nov 2012 07:20:58 +0000 (15:20 +0800)]
test OpenCL 1.1 Relational Built-in Functions
Homer Hsing [Mon, 26 Nov 2012 07:13:07 +0000 (15:13 +0800)]
Enable build-in vector data types test in kernels/compiler_data_types.cl
Homer Hsing [Fri, 23 Nov 2012 00:51:48 +0000 (08:51 +0800)]
test OpenCL 1.1 Synchronization, explicit memory fence
Homer Hsing [Fri, 23 Nov 2012 00:45:59 +0000 (08:45 +0800)]
test OpenCL 1.1 sampler declaration fields
Homer Hsing [Thu, 22 Nov 2012 08:21:02 +0000 (16:21 +0800)]
Test case for OpenCL 1.1 Sampler Objects
Homer Hsing [Thu, 22 Nov 2012 01:07:36 +0000 (09:07 +0800)]
Test case for OpenCL 1.1 Atomic Functions
Homer Hsing [Thu, 22 Nov 2012 00:56:02 +0000 (08:56 +0800)]
test case for OpenCL 1.1 function qualifiers
Homer Hsing [Thu, 22 Nov 2012 00:50:28 +0000 (08:50 +0800)]
test case for OpenCL 1.1 conversion & type casting
Homer Hsing [Thu, 22 Nov 2012 00:42:48 +0000 (08:42 +0800)]
Test case for OpenCL 1.1 address space qualifier
Homer Hsing [Wed, 21 Nov 2012 06:51:39 +0000 (14:51 +0800)]
Test case for OpenCL 1.1 integer built-in functions
Homer Hsing [Wed, 21 Nov 2012 06:42:31 +0000 (14:42 +0800)]
Test case for OpenCL 1.1 structure attributes
Homer Hsing [Tue, 20 Nov 2012 03:01:31 +0000 (11:01 +0800)]
Test case for OpenCL 1.1 Preprocessor Directives & Macros
Homer Hsing [Tue, 20 Nov 2012 02:49:10 +0000 (10:49 +0800)]
Test case for OpenCL 1.1 math constants
Homer Hsing [Tue, 20 Nov 2012 02:27:42 +0000 (10:27 +0800)]
Test case for OpenCL 1.1 workitem builtin functions
Homer Hsing [Tue, 20 Nov 2012 01:51:03 +0000 (09:51 +0800)]
Test case for OpenCL 1.1 supported data types
Homer Hsing [Tue, 20 Nov 2012 01:31:17 +0000 (09:31 +0800)]
Add test case, OpenCL 1.1 Math Built-in Functions
Homer Hsing [Mon, 19 Nov 2012 08:17:31 +0000 (16:17 +0800)]
test creating program objects, build program executable, build options, query program objects
Homer Hsing [Fri, 2 Nov 2012 05:06:52 +0000 (13:06 +0800)]
Fix up README.md
miss a line "cd build" in section "How to build"
Zhigang Gong [Wed, 28 Nov 2012 08:01:26 +0000 (16:01 +0800)]
new test case from Nanhai.
Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
Zhigang Gong [Fri, 16 Nov 2012 07:29:37 +0000 (15:29 +0800)]
First implementation for extension cl_khr_gl_sharing.
Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
Zhigang Gong [Fri, 16 Nov 2012 07:22:36 +0000 (15:22 +0800)]
Remove glext.h.
It's part of ogl not ocl.
Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
Zhigang Gong [Fri, 29 Mar 2013 10:35:12 +0000 (18:35 +0800)]
Only llvm3.0 and 3.1 have TargetData.h.
Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
Zhigang Gong [Fri, 29 Mar 2013 10:26:31 +0000 (18:26 +0800)]
Fixed a potential Null pointer reference in emitMovForPHI.
Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
Benjamin Segovia [Sat, 17 Nov 2012 02:10:07 +0000 (18:10 -0800)]
Updated comment on lost copy since it is supported now
Benjamin Segovia [Sat, 17 Nov 2012 02:05:59 +0000 (18:05 -0800)]
Implemented a work around for LLVM / clang 3.2. They handle swizzle of constant
vectors in a weird way such that the final LLVM code uses ConstantExpr which are
not supported yet. So, I modified the kernels to make them work.
Still two kernels are not working. They basically use undefined values which are
actually used. I am not supporting such case right now. It would be the
opportunity to simplify all this.
LLVM 3.2 works now. I needed to deactivate fmulall though. The code does not
seem to be correct. Well, I am not sure. May be related to the llvm+clang
version I have.
Benjamin Segovia [Fri, 16 Nov 2012 19:24:23 +0000 (11:24 -0800)]
Improved llvm 3.2 support (remove some warnings using nasty macros)
Benjamin Segovia [Fri, 16 Nov 2012 03:59:53 +0000 (19:59 -0800)]
Fixed lost copy issue when deSSAing the code. Yeah for even more MOV!!
global copy propagation is overdue!
Benjamin Segovia [Wed, 14 Nov 2012 04:55:06 +0000 (20:55 -0800)]
Added complete support for barrier (and use of SLM)
Added some tests to assert this functionnality
Benjamin Segovia [Tue, 13 Nov 2012 04:48:00 +0000 (20:48 -0800)]
Started to implement OpenCL barrier() function
Benjamin Segovia [Sat, 10 Nov 2012 04:50:58 +0000 (20:50 -0800)]
Started the boiler plate for barrier (and fences) instructions
Improved the comment on the instruction selection
Benjamin Segovia [Sat, 10 Nov 2012 04:28:17 +0000 (20:28 -0800)]
Removed MAD instruction in the IR
Benjamin Segovia [Sat, 10 Nov 2012 04:16:24 +0000 (20:16 -0800)]
Added support for __local pointer in kernel arguments. This require to add more
features in the run-time and proper support in the rest of the compiler
Benjamin Segovia [Fri, 9 Nov 2012 09:26:51 +0000 (01:26 -0800)]
Updated README since LLVM 3.1 is supported and LLVM 3.2 is almost supported
Benjamin Segovia [Fri, 9 Nov 2012 09:25:29 +0000 (01:25 -0800)]
Improved the comment on the LLVM pass
Benjamin Segovia [Fri, 9 Nov 2012 09:05:16 +0000 (01:05 -0800)]
Fixed more warning with LLVM 3.2
Redisabled LLVM 3.2. There are still problems. Some kernels output wrong code.
It is certainly the lost copy issue.
Benjamin Segovia [Fri, 9 Nov 2012 08:52:47 +0000 (00:52 -0800)]
Fixed inverted assertion
Benjamin Segovia [Fri, 9 Nov 2012 08:46:08 +0000 (00:46 -0800)]
Added a lengthy comment on the LLVM to Gen IR translation
Benjamin Segovia [Fri, 9 Nov 2012 08:30:35 +0000 (00:30 -0800)]
Forbid use of LLVM 3.2 since there are still issues with the code generated by
clang 3.2
Benjamin Segovia [Fri, 9 Nov 2012 08:29:08 +0000 (00:29 -0800)]
Fixed a warning when compiling with LLVM 3.1
Replaced invocatiopn of clang with dirty "system()" by a cleaner "popen()". The
cleanest solution should to use the clang API
Benjamin Segovia [Fri, 9 Nov 2012 08:06:21 +0000 (00:06 -0800)]
Finished proper support for LLVM 3.1
All tests pass
Benjamin Segovia [Fri, 9 Nov 2012 07:56:57 +0000 (23:56 -0800)]
Fixed a bug in llvm Gen backend
Benjamin Segovia [Fri, 9 Nov 2012 07:38:27 +0000 (23:38 -0800)]
Fixed preprocessor defines for LLVM 3.0
Benjamin Segovia [Fri, 9 Nov 2012 06:58:18 +0000 (22:58 -0800)]
Cleaned some old bitrot code in llvm_gen_backend
Started to implement support for llvm 3.2. There are problems for complex
kernels with this version. Maybe the lost copy issue.
Benjamin Segovia [Fri, 9 Nov 2012 03:22:48 +0000 (19:22 -0800)]
Enabled assertions and internal errors for the compiler. The compiler missed too
many things to turn that off
Benjamin Segovia [Fri, 9 Nov 2012 03:06:35 +0000 (19:06 -0800)]
Added support for llvm 3.1
Cleaned up some warnings
Forced pedantic option removal in the Makefile
Benjamin Segovia [Fri, 9 Nov 2012 00:24:26 +0000 (16:24 -0800)]
Fixed a leak in the code using libdrm_intel
Benjamin Segovia [Thu, 8 Nov 2012 05:50:28 +0000 (21:50 -0800)]
Made a quick pass to clean up a bit the headers (there is way too many "INLINE"
methods in this code)
Benjamin Segovia [Thu, 8 Nov 2012 05:24:05 +0000 (21:24 -0800)]
Removed one useless rforeach for the basic blocks
Benjamin Segovia [Thu, 8 Nov 2012 05:10:30 +0000 (21:10 -0800)]
Removed old bits of ir::Instruction
Benjamin Segovia [Thu, 8 Nov 2012 05:03:05 +0000 (21:03 -0800)]
Started to revamp ir::Instruction class to make it use intrusive_list instead
Benjamin Segovia [Wed, 7 Nov 2012 08:41:20 +0000 (00:41 -0800)]
Added supports for loads and stores of float8/float16
Benjamin Segovia [Wed, 7 Nov 2012 07:55:21 +0000 (23:55 -0800)]
Implemented merge of identical immediates per basic block
Benjamin Segovia [Wed, 7 Nov 2012 07:09:17 +0000 (23:09 -0800)]
Added a new menger sponge with no shadow (just to have an extra kernel a bit
simpler than menger sponge itself)
Benjamin Segovia [Wed, 7 Nov 2012 07:02:07 +0000 (23:02 -0800)]
Added support for select instructions with embedded compares
Added missing Julia missing tests
Benjamin Segovia [Wed, 7 Nov 2012 03:02:22 +0000 (19:02 -0800)]
Changed style of the comment for insn scheduling
Benjamin Segovia [Wed, 7 Nov 2012 02:59:42 +0000 (18:59 -0800)]
Made the zero cycle strategy work. This stronly limits the register pressure.
Added a simpler version of Julia.
Added a lengthy comment on the instruction scheduling strategy
Benjamin Segovia [Wed, 7 Nov 2012 01:47:26 +0000 (17:47 -0800)]
Added a additional rule for MADs. When we try to avoid spilling, we do not
generate MADs
Benjamin Segovia [Wed, 7 Nov 2012 01:42:51 +0000 (17:42 -0800)]
Added more features to the instruction scheduler to support both pre-register
allocation and post-register allocation scheduling
Well, we really need to implement something really good for the pre-reg
allocation scheduling to avoid spilling (which is not supported anyway today)
Benjamin Segovia [Tue, 6 Nov 2012 06:32:13 +0000 (22:32 -0800)]
Fixed a potential bug with cvar
Fixed MAD related cvar initialization in c++ pre-main
Benjamin Segovia [Tue, 6 Nov 2012 06:03:52 +0000 (22:03 -0800)]
Added julia set
Improved a bit the MOV removal pass
Benjamin Segovia [Tue, 6 Nov 2012 04:39:43 +0000 (20:39 -0800)]
Added three kernels from Inigo website. Be aware that glsl mod functions is not
the same as ocl one... Damn :-)
Benjamin Segovia [Tue, 6 Nov 2012 01:49:48 +0000 (17:49 -0800)]
Farctorized the code for the kernels I picked up from Inigo websites
Benjamin Segovia [Tue, 6 Nov 2012 01:01:59 +0000 (17:01 -0800)]
Removed the remaining bits of the Gen specific extensions. Much cleaner code
now.
Benjamin Segovia [Mon, 5 Nov 2012 23:41:58 +0000 (15:41 -0800)]
Started to remove support for gen extensions. This was basically a quick fire
and forget code to play a bit with ideas similar to what NV proposed. The goal
is to make the code we have as much clear as we can. So, I just removed
everything.
Benjamin Segovia [Mon, 5 Nov 2012 23:29:58 +0000 (15:29 -0800)]
Removed the remaining bits of the c++ simulator. We only need the support for
real hardware here. Nothing more.
Benjamin Segovia [Sat, 3 Nov 2012 04:19:14 +0000 (21:19 -0700)]
Updated the utest Makefile
Benjamin Segovia [Sat, 3 Nov 2012 04:12:41 +0000 (21:12 -0700)]
- Added reference images for all the remaining tests that need them
- Added a lengthy comment on instruction selection
- Added some new patters to improve immediate matching
Benjamin Segovia [Sat, 3 Nov 2012 02:36:17 +0000 (19:36 -0700)]
- Made ribbon test pass (still need to generate the golden image)
- Fixed a corner case with the register allocator. Actually, the insn selection is
able to remove dead code automatically. So, I handle this case now.
- Added a first support for undef values in vectors in the llvm to gen IR
compiler
Benjamin Segovia [Sat, 3 Nov 2012 01:42:03 +0000 (18:42 -0700)]
Add support for insertion into vector of constants
Benjamin Segovia [Sat, 3 Nov 2012 00:55:20 +0000 (17:55 -0700)]
Made compiler_clod pass. The image is now properly computed.
I basically added a bunch of new intrinsics and cleaned a bit the ocl std
library. Well, it is not going to be compliant for a while with the spec (mostly
due to precision issues and the way denormals and nan are handled). But,
it should do the job for now.
Started to add a more complex test called "ribbon"
Benjamin Segovia [Fri, 2 Nov 2012 21:25:42 +0000 (14:25 -0700)]
Removed outdated html documentation files. Markdown files are OK.
Benjamin Segovia [Tue, 23 Oct 2012 02:39:02 +0000 (19:39 -0700)]
Changed name of CMake utest program to make it match with the "Makefile version"
Benjamin Segovia [Tue, 23 Oct 2012 02:20:46 +0000 (19:20 -0700)]
Removed c++ simulator documentation since it is going to be deprecated
Changed the name to "Beignet" for the complete project
Benjamin Segovia [Fri, 12 Oct 2012 18:31:31 +0000 (18:31 +0000)]
Removed use of exceptions since LLVM may not support them (depending on how it
is compiled)
Benjamin Segovia [Fri, 12 Oct 2012 17:44:20 +0000 (17:44 +0000)]
Fixed 32 bit compilation issue. Unfortunately dropped an alignment requirement
for the instructions