Benjamin Segovia [Mon, 8 Oct 2012 00:59:40 +0000 (00:59 +0000)]
Fixed compilation issue with gcc 4.6
Benjamin Segovia [Fri, 5 Oct 2012 19:44:16 +0000 (19:44 +0000)]
Handled null register when scheduling
Changed the way accumulator is written in the pre-ISA
Benjamin Segovia [Thu, 4 Oct 2012 22:08:10 +0000 (22:08 +0000)]
Almost finished instruction scheduling. Just need to handle accumulator write
update when AccWrEn is set
Benjamin Segovia [Thu, 4 Oct 2012 22:03:35 +0000 (22:03 +0000)]
Fixed bug in growing pool allocator
Benjamin Segovia [Thu, 4 Oct 2012 21:12:53 +0000 (21:12 +0000)]
Fixed read/write dependencies for the insn scheduler
Benjamin Segovia [Tue, 2 Oct 2012 19:46:42 +0000 (19:46 +0000)]
Started to make instruction scheduling work
Benjamin Segovia [Fri, 21 Sep 2012 20:46:06 +0000 (20:46 +0000)]
First implementation (untested) of instruction scheduling. Now it is pretty
clear that a clean and generic implementation of intrusive_list is *overdue*
Benjamin Segovia [Wed, 19 Sep 2012 20:40:10 +0000 (20:40 +0000)]
Removed unused files
Added extra functionalities to debug special allocator with valgrind
Benjamin Segovia [Wed, 19 Sep 2012 20:07:36 +0000 (20:07 +0000)]
Cleaned up instruction selection interface. Push everything back to the cpp
using opaque implementation.
The selection implementation is a big blob now to split up
Benjamin Segovia [Wed, 19 Sep 2012 17:59:23 +0000 (17:59 +0000)]
Cleaned up register allocator interface to limit dependencies
It uses now a pimpl interface
Benjamin Segovia [Wed, 19 Sep 2012 17:32:39 +0000 (17:32 +0000)]
Made SelectionInstruction variable sized
Also used a linear allocator for them (for fast variable size allocation)
Benjamin Segovia [Wed, 19 Sep 2012 17:12:49 +0000 (17:12 +0000)]
Implemented linear allocator to have both fast instruction allocation and
variable size for them
Started to revamp SelectionInstruction to make them variable sized
Benjamin Segovia [Tue, 18 Sep 2012 20:03:01 +0000 (20:03 +0000)]
Started to implemented instruction scheduling
Benjamin Segovia [Tue, 18 Sep 2012 18:52:51 +0000 (18:52 +0000)]
Improved MOVs generation while resolving PHIs
bsegovia [Mon, 17 Sep 2012 18:36:47 +0000 (18:36 +0000)]
Fixed a warning with gcc 4.7 related to the use of zero sized arrays...
bsegovia [Mon, 17 Sep 2012 18:33:55 +0000 (18:33 +0000)]
Implemented greedy instruction on DAG. The idea is mostly to merge instructions
bottom to top marking instructions to be generated on the fly
Several patterns are implemented like using immediates as the second source or
merging mul and add into mads
Actually implemented the MAD encoding at the same time.
bsegovia [Mon, 17 Sep 2012 18:01:32 +0000 (18:01 +0000)]
Added proper flag register allocation. Flag are spilled into GRFs. The spilling
code is not reaaly efficient i.e. sometimes the spilling can be avoided in a
basic block but it is still done. The idea is to improve that when the general
GRF spilling will be implemented. Right now, it works, so it is good enough
bsegovia [Mon, 17 Sep 2012 15:53:57 +0000 (15:53 +0000)]
Pushed back modified files for Gen extension support
Added tests in CMake files
bsegovia [Mon, 17 Sep 2012 12:46:31 +0000 (12:46 +0000)]
Added support for some Gen extensions. The idea is mostly to play with Gen
specific hardware and propose simple way to use them. We have three extensions
here:
- Gen register regions. This allows us to perform strided loads in the register
file. To implement that on top of OCL, the idea is to encapsulate them in a
function with a side effect. Not really clean but it works.
- Gen gather from register file. Same idea but here we simply gather data from
a bunch of registers
- Vote any/all. This is basically the same idea as ptx i.e. uniform predicates
for branches.
- block read/write. Just to play with uniform load/store messages
I added a bunch of tests for all that and fix thing here and there to make them
work
bsegovia [Mon, 13 Aug 2012 16:42:01 +0000 (16:42 +0000)]
Fixed a bug in register allocator
bsegovia [Mon, 13 Aug 2012 16:33:09 +0000 (16:33 +0000)]
Fixed a bug with LLVM alloca
Fixed CFG linearization
Fixed a bug with function stack
bsegovia [Mon, 13 Aug 2012 16:17:43 +0000 (16:17 +0000)]
Reenabled the CMake build path. It is really imperfect and the build CMake
scripts should be cleanly unified later
bsegovia [Mon, 13 Aug 2012 15:21:35 +0000 (15:21 +0000)]
Fixed constness warning for gcc 4.7
bsegovia [Mon, 13 Aug 2012 14:52:52 +0000 (14:52 +0000)]
Fixed build by adding LLVM library directory
Removed unnecessary dependencies to LLVM for libcl.so
Keith Packard [Fri, 10 Aug 2012 01:14:26 +0000 (18:14 -0700)]
Build tests
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Fri, 10 Aug 2012 00:50:07 +0000 (17:50 -0700)]
Fix build order between backend and cl library
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Fri, 10 Aug 2012 00:41:36 +0000 (17:41 -0700)]
Build .so and .so.0 versions of libgbe
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Thu, 12 Jul 2012 18:08:03 +0000 (11:08 -0700)]
Build backend before main library
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Thu, 12 Jul 2012 17:50:28 +0000 (10:50 -0700)]
Create make-based build infrastructure
It's simple, but it works on linux at least.
Signed-off-by: Keith Packard <keithp@keithp.com>
Keith Packard [Thu, 12 Jul 2012 16:58:30 +0000 (09:58 -0700)]
Create make-based build infrastructure
Fairly simplistic, but does the job for Linux at least.
Signed-off-by: Keith Packard <keithp@keithp.com>
Benjamin Segovia [Sun, 1 Jul 2012 20:44:41 +0000 (20:44 +0000)]
Removed unused file
Benjamin Segovia [Sun, 1 Jul 2012 20:42:01 +0000 (20:42 +0000)]
Removed a test that does not pass yet
Benjamin Segovia [Sun, 1 Jul 2012 19:50:16 +0000 (19:50 +0000)]
Cleaned up SLM code
Conflicts:
utests/CMakeLists.txt
Benjamin Segovia [Sun, 1 Jul 2012 19:25:48 +0000 (19:25 +0000)]
Added missing file
Benjamin Segovia [Sun, 1 Jul 2012 19:20:36 +0000 (19:20 +0000)]
Used a hash map to handle OCL instrinsic functions
Benjamin Segovia [Mon, 25 Jun 2012 01:30:11 +0000 (01:30 +0000)]
Started to support __local and __constant
Benjamin Segovia [Mon, 25 Jun 2012 01:29:35 +0000 (01:29 +0000)]
Started to play with __local and __constant declarations
Benjamin Segovia [Tue, 19 Jun 2012 23:59:18 +0000 (23:59 +0000)]
Removed unused file
Benjamin Segovia [Tue, 19 Jun 2012 21:53:26 +0000 (21:53 +0000)]
Updated and compiled README
Benjamin Segovia [Tue, 19 Jun 2012 21:52:52 +0000 (21:52 +0000)]
Recompiled the documentation
Benjamin Segovia [Tue, 19 Jun 2012 21:50:14 +0000 (21:50 +0000)]
Updated compiled README
Benjamin Segovia [Tue, 19 Jun 2012 21:43:02 +0000 (21:43 +0000)]
Made errors explicit while loading kernels
Benjamin Segovia [Tue, 19 Jun 2012 21:36:09 +0000 (21:36 +0000)]
Fixed a typo in Release
Benjamin Segovia [Tue, 19 Jun 2012 21:17:34 +0000 (21:17 +0000)]
Fix unitialized value in instruction selection
Benjamin Segovia [Tue, 19 Jun 2012 21:16:49 +0000 (21:16 +0000)]
Fixed uninitialized values reported by valgrind
Benjamin Segovia [Tue, 19 Jun 2012 20:43:20 +0000 (20:43 +0000)]
Properly added use of the custom allocators everywhere
Benjamin Segovia [Tue, 19 Jun 2012 20:39:39 +0000 (20:39 +0000)]
Added more information in the README Checked memory leaks
Benjamin Segovia [Tue, 19 Jun 2012 19:56:21 +0000 (19:56 +0000)]
Added missing file while using the blob (TM)
Benjamin Segovia [Tue, 19 Jun 2012 00:21:29 +0000 (00:21 +0000)]
Spell-checked the documentation Added a TODO entry for uniform analysis and uniform loads and samples
Benjamin Segovia [Mon, 18 Jun 2012 04:05:34 +0000 (04:05 +0000)]
Added more info on general plumbering to do
Benjamin Segovia [Mon, 18 Jun 2012 03:54:26 +0000 (03:54 +0000)]
Added support for disassembling Gen ISA (instead of just using Fulsim...). It is quick and dirty since I copied files directly from Mesa (and therefore, I duplicated Gen structures and defines)
Added more stuff in the documentation.
Benjamin Segovia [Sun, 17 Jun 2012 21:40:13 +0000 (21:40 +0000)]
Added more documentation
Benjamin Segovia [Thu, 14 Jun 2012 22:13:10 +0000 (22:13 +0000)]
Started to clean up the headers
Benjamin Segovia [Wed, 13 Jun 2012 22:39:37 +0000 (22:39 +0000)]
Added missing files in the documentation
Benjamin Segovia [Wed, 13 Jun 2012 22:38:31 +0000 (22:38 +0000)]
Added more stuff in the documentation (mostly on how the branching code is handled in the compiler)
Benjamin Segovia [Wed, 13 Jun 2012 19:37:19 +0000 (19:37 +0000)]
Implemented the description of the flat address space implementation
Benjamin Segovia [Wed, 13 Jun 2012 00:48:39 +0000 (00:48 +0000)]
Added first documentation on flat address space Compiled markdown files
Benjamin Segovia [Tue, 12 Jun 2012 21:51:44 +0000 (21:51 +0000)]
Fixed README
Benjamin Segovia [Tue, 12 Jun 2012 21:50:53 +0000 (21:50 +0000)]
Added the markdown extension to the README file
Benjamin Segovia [Tue, 12 Jun 2012 21:50:33 +0000 (21:50 +0000)]
Added the markdown extension to the README file
Benjamin Segovia [Tue, 12 Jun 2012 21:50:06 +0000 (21:50 +0000)]
Fixed a exception safety issue in the LLVM to GenIR translation Added a markdown readme file
Benjamin Segovia [Tue, 12 Jun 2012 21:41:37 +0000 (21:41 +0000)]
Improved markdown syntax for README
Benjamin Segovia [Tue, 12 Jun 2012 18:34:25 +0000 (18:34 +0000)]
Cleaned up the code to enable the blob compilation path
Benjamin Segovia [Tue, 12 Jun 2012 18:33:23 +0000 (18:33 +0000)]
Cleaned up the code from previous unused dependencies Upate the README
Benjamin Segovia [Tue, 12 Jun 2012 04:23:33 +0000 (04:23 +0000)]
s/gen_eu.*/gen_encoder.*/g
Benjamin Segovia [Tue, 12 Jun 2012 04:19:36 +0000 (04:19 +0000)]
s/GenEmitter/GenEncoder/g
Benjamin Segovia [Tue, 12 Jun 2012 04:00:28 +0000 (04:00 +0000)]
Removed unused crap for the final encoding step
Benjamin Segovia [Tue, 12 Jun 2012 03:47:09 +0000 (03:47 +0000)]
Removed even more kludge from previous register allocation
Benjamin Segovia [Tue, 12 Jun 2012 03:38:25 +0000 (03:38 +0000)]
Removed kludge from pre instruction selection era
Benjamin Segovia [Tue, 12 Jun 2012 03:33:32 +0000 (03:33 +0000)]
Removed kludge from previous register allocator
Benjamin Segovia [Tue, 12 Jun 2012 03:27:19 +0000 (03:27 +0000)]
First working implementation of linear scan register allocator Spilling is still TODO
Benjamin Segovia [Tue, 12 Jun 2012 00:08:00 +0000 (00:08 +0000)]
Implemented the first phase of the linear scan allocator
Benjamin Segovia [Mon, 11 Jun 2012 19:47:53 +0000 (19:47 +0000)]
Played around for register allocation
Benjamin Segovia [Mon, 11 Jun 2012 19:33:50 +0000 (19:33 +0000)]
Used first bits the register file memory allocator in the Gen register allocator
Benjamin Segovia [Mon, 11 Jun 2012 17:17:41 +0000 (17:17 +0000)]
Implemented the CURBE allocation with the register file allocator
Benjamin Segovia [Mon, 11 Jun 2012 16:34:02 +0000 (16:34 +0000)]
Started to implement proper allocation of curbe entries
Benjamin Segovia [Wed, 6 Jun 2012 21:41:07 +0000 (21:41 +0000)]
Fixed the comment for block coalescing
Benjamin Segovia [Wed, 6 Jun 2012 21:37:39 +0000 (21:37 +0000)]
Started to implement the generic memory allocator used to register allocate the programs
Benjamin Segovia [Wed, 6 Jun 2012 20:05:13 +0000 (20:05 +0000)]
Removed this selection tile crap. It was just a bad idea. Instead use a selection block that basically keeps track of the way basic blocks are encoding while performing the instruction selection
Benjamin Segovia [Wed, 6 Jun 2012 19:29:41 +0000 (19:29 +0000)]
Fixed scalar register encoding for untyped reads and writes
Benjamin Segovia [Tue, 5 Jun 2012 21:44:59 +0000 (21:44 +0000)]
Played around for the new back end boilerplate
Benjamin Segovia [Tue, 5 Jun 2012 21:44:25 +0000 (21:44 +0000)]
Fixed various bug in the new boilerplate (selection / allocation / encoding)
Benjamin Segovia [Tue, 5 Jun 2012 00:21:19 +0000 (00:21 +0000)]
Simplify the new emission code
Benjamin Segovia [Tue, 5 Jun 2012 00:07:51 +0000 (00:07 +0000)]
Finished first implementation of the boiler plate code to separate instruction selection from the rest (final encoding and register allocation). Neither debugged nor activated.
Benjamin Segovia [Tue, 29 May 2012 02:53:18 +0000 (02:53 +0000)]
Added most of the boiler plate for the instruction selection and vector allocation (i.e. the registers that need to be contiguous are allocated together in vectors)
Benjamin Segovia [Sun, 27 May 2012 22:45:30 +0000 (22:45 +0000)]
Prepare the work for proper register allocation (i.e. after instruction selection)
Benjamin Segovia [Sun, 27 May 2012 19:44:45 +0000 (19:44 +0000)]
Move the register allocation in a dedicated class
Benjamin Segovia [Sun, 27 May 2012 16:58:49 +0000 (16:58 +0000)]
Implemented first methods of the gen selection engine
Benjamin Segovia [Tue, 22 May 2012 18:32:23 +0000 (18:32 +0000)]
Fixed compilation
Benjamin Segovia [Tue, 22 May 2012 18:30:53 +0000 (18:30 +0000)]
Started to segment the final code generation into: - instruction selection phase - register allocation - mov insertion - instruction scheduling - instrucition encoding
Started with the instruction selection engine
Benjamin Segovia [Mon, 21 May 2012 17:41:37 +0000 (17:41 +0000)]
Now booleans are encoded with 1 short instead of a vector of shorts.
Benjamin Segovia [Mon, 21 May 2012 16:33:44 +0000 (16:33 +0000)]
Fixed typo in the curbe load for SimContext
Benjamin Segovia [Mon, 21 May 2012 14:52:57 +0000 (14:52 +0000)]
Fixed compilation with gcc 4.7
Benjamin Segovia [Mon, 21 May 2012 04:00:06 +0000 (04:00 +0000)]
Added support for bool to int conversion (that uses a select)
Benjamin Segovia [Mon, 21 May 2012 03:31:57 +0000 (03:31 +0000)]
Fixed a type in a range-based for loop
Benjamin Segovia [Mon, 21 May 2012 03:20:34 +0000 (03:20 +0000)]
Made a systematic of range-based for loops when it is possible
Benjamin Segovia [Mon, 21 May 2012 02:38:53 +0000 (02:38 +0000)]
Replace some C cast by C++ const_cast to make things a bit more pure and clearer...
Benjamin Segovia [Mon, 21 May 2012 02:32:27 +0000 (02:32 +0000)]
s/getInput/getArg/g (just to make things consistent with the previous related renaming)
Benjamin Segovia [Mon, 21 May 2012 02:19:24 +0000 (02:19 +0000)]
Removed unused file
Benjamin Segovia [Mon, 21 May 2012 02:18:01 +0000 (02:18 +0000)]
Added first support for structure kernel arguments (anything bigger than 4 bytes). They work on c++ simulator and regular Gen backend