David Neto
3c35b6321e
Add spirv-lesspipe.sh
...
Idea suggested by @steve-lunarg in issue 359.
2016-08-24 10:39:04 -04:00
David Neto
97d06a36b0
Mere mention of PointSize BuiltIn does not require Shader capability
...
Fixes https://github.com/KhronosGroup/SPIRV-Tools/issues/365 which
was reopened for this.
2016-08-24 10:04:17 -04:00
Lei Zhang
f51d82338e
Add a home brewed make_unique to ease creating unique_ptrs.
2016-08-24 09:41:55 -04:00
Lei Zhang
6f13c73229
Remove some unused macros and functions.
2016-08-24 09:34:06 -04:00
David Neto
f33aacd165
CHANGES captures fix for issue 365
2016-08-23 18:44:26 -04:00
David Neto
358cb2940a
Relax ClipDistance, CullDistance capability check in all environments
...
Fixes https://github.com/KhronosGroup/SPIRV-Tools/issues/365
2016-08-23 18:41:44 -04:00
David Neto
ccabcc4673
Add opt::ir::Module::SetIdBound
2016-08-23 15:20:34 -04:00
qining
7e775aa99e
Get the number of elements for Vector and Matrix type
2016-08-23 11:34:24 -04:00
qining
b891845b53
Refine the DefUseManager
...
* Fix the behavior when analyzing an individual instruction:
* exisiting instruction:
Clear the original records and re-analyze it as a new instruction.
* new instruction with exisiting result id:
Clear the original records of the exisiting result id. This means
the records of the analyzed result-id-defining instruction will be
overwritten by the record of the new instruction with the same
result id.
* new instruction with new result id or without result id:
Just update the internal records to incorperate the new
instruction.
* Add tests for analyzing individual instruction w/o an exisiting module.
* Refactor ClearInst() implementation
* Remove ClearDef() function.
* Fixed a bug in DefUseManager::ReplaceAllUsesWith() that OpName
instruction may trigger the assertion incorrectly.
* update the blurbs for EraseUseRecordsOfOperandIds()
2016-08-17 23:13:01 -04:00
qining
6c5bdc9a39
Get the width from integer and float type
2016-08-17 20:33:56 -04:00
qining
e8b7c7b210
Replace the SetOperand() with SetInOperand() and SetResultType()
2016-08-16 15:05:07 -04:00
Lei Zhang
b65124f097
Make clear that we are using ptrdiff_t as the iterator difference type.
...
And ptrdiff_t is a implementation defined signed type. Comparing it
with unsigned number literal causes compiler warnings.
2016-08-16 11:21:08 -04:00
Lei Zhang
9747d33d08
Derive iterator from std::iterator to reap standarad algorithms.
...
By deriving from std::iterator, iterator_traits will be properly
set up for our custom iterator type, thus we can use algorithms
from STL with our custom iterators.
2016-08-15 16:29:56 -04:00
Lei Zhang
1eec0ed4b9
Make analyses RAII-like and turn disable copy/move constructors.
2016-08-15 13:41:47 -04:00
David Neto
4dd4c14b80
Avoid integer modulo by 1, to avoid warning
...
Fixes https://github.com/KhronosGroup/SPIRV-Tools/issues/349
2016-08-15 11:27:13 -04:00
David Neto
033b7d00f0
Avoid race on mkdir
...
Should fix https://github.com/KhronosGroup/SPIRV-Tools/issues/340
2016-08-15 11:14:34 -04:00
Lei Zhang
097ff25ea7
Allow OpUndef appearing in the type and global variable section.
...
Also clean up API functions for adding instructions into the
type and global values section.
2016-08-15 10:44:14 -04:00
qining
c814911904
Add another construtor for opt::ir::Instruction
2016-08-13 11:17:11 -04:00
David Neto
4987ae6549
Test INotEqual for OpSpecConstantOp in asm, disasm
2016-08-12 16:00:46 -04:00
qining
d065593404
Add iterator getter interface for types_values_
2016-08-12 15:10:51 -04:00
Umar Arshad
b01755a5e2
OpUndef can appear in type declaration section
2016-08-12 14:28:17 -04:00
Lei Zhang
94912ad1ba
Turn off modifying methods for const iterators.
2016-08-12 14:05:41 -04:00
qining
81532584cb
Clear old def-use record when re-analyze an ID
2016-08-12 13:04:07 -04:00
Lei Zhang
95dc16d1ec
Add make_range() & make_const_range() for creating iterator ranges.
2016-08-12 10:34:47 -04:00
Lei Zhang
4b3247feba
Avoid non-oneliner definition in class and add missing iterators.
2016-08-12 10:34:47 -04:00
qining
7a94e66433
Move the def-use analysis for single inst to public
2016-08-12 10:25:37 -04:00
qining
e5bb46d274
Add getter for pointee, element type
2016-08-11 20:53:57 -04:00
Lei Zhang
645ee1d9e0
Create an iterator class for in-memory representation.
2016-08-11 18:35:12 -04:00
qining
f949e321f2
Make the lookup up of type id accepts const arg
2016-08-11 18:21:57 -04:00
David Neto
82405cf499
Reuse the iterator on Id and type lookup
2016-08-11 18:18:12 -04:00
qining
f4e3a905d4
Add the const version of AsXXtype() interface.
2016-08-11 17:13:43 -04:00
qining
cd6d6c0ccf
Add GetId(Type* type) API to the type manager
2016-08-11 15:10:09 -04:00
David Neto
892239b7cc
Avoid double-copy of NameMapper object.
2016-08-11 12:11:36 -04:00
David Neto
8a5ce18f12
Use friendly names for Ids
2016-08-11 11:30:18 -04:00
David Neto
996a814ae3
Add spirv-cfg to dump a GraphViz graph of the CFG
...
This is experimental, and has not tests.
It's been used to debug validation of structured control flow.
- Has a legend describing special arcs to merge blocks and continue
targets.
- Labels the function entry block, with the Id of the function.
2016-08-11 11:24:51 -04:00
qining
23266c9b56
Add back the missing msg about --eliminate-dead-const
2016-08-10 19:44:18 -04:00
Lei Zhang
75d4316280
Fix build error about passing initializer-list to constructor.
...
VS2013 is not happy with using initializer-list to initialize
vector parameters to explicit constructors taking one vector.
2016-08-10 16:10:14 -04:00
Lei Zhang
dda9de965d
Make type manager RAII-like w.r.t. the module to be analyzed.
2016-08-10 12:53:17 -04:00
Lei Zhang
c562e231e3
Optimization: Add type manager.
...
Type manager will construct a map of types gradually from
instructions.
2016-08-10 12:53:17 -04:00
Lei Zhang
6d4d15b9d0
Optimization: Add type class hierarchy.
2016-08-10 12:53:17 -04:00
Lei Zhang
478d96aac4
Appveyor: also test on Visual Studio 2013.
2016-08-10 12:52:11 -04:00
David Neto
75c6db0746
Fix paths in the README.
2016-08-10 12:18:22 -04:00
Lei Zhang
80c94a4fa8
Change the interfaces of in-memory representation to use pointers.
...
Previously we use vectors of objects and move semantics to handle
ownership. That approach has the flaw that inserting an object into
the middle of a vector, which may trigger a vector reallocation,
can invalidate some addresses taken from instructions.
Now the in-memory representation internally uses vector of unique
pointers to handle ownership. Since objects are explicitly heap-
allocated now, pointers to them won't be invalidated by vector
resizing anymore.
2016-08-10 12:11:33 -04:00
David Neto
7784829b3a
Update CHANGES to say issue 288 is fixed
2016-08-10 10:40:59 -04:00
Andrew Woloszyn
38c9471a0e
Fixed the build for MSVC.
...
assembly_builder was missing an include for cstdint.
2016-08-10 09:45:15 -04:00
Lei Zhang
485f513a29
Manually create move the constructor/assignment for Instruction.
...
This is because some old visual studio versions (e.g., 2013) do
not support automatically generating move constructors/assignments.
2016-08-09 19:27:13 -04:00
David Neto
677ae7fbe8
Fix compilation. My bad
...
The API changed, and I forgot to submit this patch.
2016-08-09 18:23:40 -04:00
Umar Arshad
489204cf03
Check dominance of OpPhi parent and variable pairs
2016-08-09 18:19:47 -04:00
Umar Arshad
8ea1268f84
Removed dead code/const_casts/lists
2016-08-09 18:09:38 -04:00
qining
60461428f4
Separate pass.h from passes.h
...
Future pass implementations should only need to include pass.h
2016-08-09 17:16:52 -04:00