Andrey Tuganov
73e8dac5b9
Added compression tool tools/spirv-markv. Work in progress.
...
Command line application is located at tools/spirv-markv
API at include/spirv-tools/markv.h
At the moment only very basic compression is implemented, mostly varint.
Scope of supported SPIR-V opcodes is also limited.
Using a simple move-to-front implementation instead of encoding mapped
ids.
Work in progress:
- Does not cover all of SPIR-V
- Does not promise compatibility of compression/decompression across
different versions of the code.
2017-06-30 12:22:48 -04:00
Andrey Tuganov
8d3882a408
Added log(n) move-to-front implementation
...
The implementation is based on AVL and order statistic tree.
It accepts all kinds of values and the implementation
doesn't expect the behaviour to be consistent with id coding.
Intended by SPIR-V compression algorithms.
2017-06-29 16:16:18 -04:00
Andrey Tuganov
40a2829611
Added Huffman codec to utils
...
Attached ids to Huffman nodes for deterministic internal node
comparison.
2017-06-29 14:51:01 -04:00
Lei Zhang
65ea885234
Travis CI: stop requiring sudo and use make instead of ninja
...
This gives us shorter testing time since we can use the container
based testing environment, which starts faster. Also using make
means we don't need to install ninja separately.
2017-06-28 16:40:12 -04:00
Chris Forbes
d431b69c28
Don't do hash lookup twice in FindDef
2017-06-28 11:13:26 -04:00
Chris Forbes
c14966b882
Move spv_instruction_t's into vector
...
No need to incur another copy here. These guys have embedded vectors
we'd rather not copy.
2017-06-28 11:13:26 -04:00
Chris Forbes
1cd47d7af2
Reserve expected length of instructions vector
2017-06-28 11:13:26 -04:00
Chris Forbes
fcd991f081
Move some temp vectors into parser state
...
We don't need to churn the allocations for these every instruction.
2017-06-28 11:13:26 -04:00
GregF
ad1d0351a0
BlockMerge: Add BlockMergePass
...
Also, add BasicBlock::tail()
2017-06-27 11:31:33 -04:00
David Neto
0b0454c42c
Update CHANGES
...
- Describe support for AMD extensions
- Describe recently added optimizer passes
2017-06-22 10:22:55 -04:00
Rex Xu
5fbbadca4e
Add support for SPV AMD extensions
2017-06-21 15:08:07 -04:00
GregF
6136bf9e0b
mem2reg: Add InsertExtractElimPass
2017-06-21 08:13:15 -04:00
David Neto
760789f58d
Transform multiple entry points
...
Don't stop just after one because of short-circuiting logical-or.
2017-06-20 15:57:47 -04:00
GregF
0c5722fc01
mem2reg: Add LocalSingleStoreElimPass
...
Eliminate function scope variables with one store, if possible.
2017-06-19 10:43:02 -04:00
GregF
7c8da66bc2
mem2reg: Add pass to eliminate local loads and stores in single block.
2017-06-12 17:03:47 -04:00
rdb
1567cddc36
Don't install googletest and googlemock
2017-06-07 10:32:45 -04:00
GregF
aa7e687ef0
Mem2Reg: Add Local Access Chain Convert pass
...
- Supports OpAccessChain and OpInBoundsAccessChain
- Does not process modules with non-32-bit integer types.
2017-06-04 12:49:27 -04:00
Gabríel Arthúr Pétursson
d71d976875
Fix memory leak in ValidateBinaryUsingContextAndValidationState
2017-06-03 23:08:22 +00:00
Andrey Tuganov
66fc10564c
Bots print output from timed out tests
...
Timeout set to 300 seconds. If no timeout, then ctest itself will be
timed out and terminated leaving no output.
2017-05-31 10:34:54 -04:00
Andrey Tuganov
e7aff807a0
Fixed misspelled ctest flag --output_on_failure
2017-05-29 13:26:46 -04:00
rdb
ddf4de61c9
Support building on FreeBSD
2017-05-28 23:20:18 +02:00
Greg Fischer
3bea99d378
CFA: Move TraversalRoots and ComputeAugmentedCFG into CFA
2017-05-25 11:43:24 -06:00
Greg Fischer
d6f2979068
CFA: Pull in CalculateDominators
2017-05-25 12:31:38 -04:00
GregF
df6537cee0
DefUseManager: Fix ReplaceAllUsesWith() to update inst_to_used_ids_
2017-05-25 11:53:50 -04:00
Andrey Tuganov
20fe946666
Added extension SPV_VALIDATOR_ignore_type_decl_unique
...
If extension is present in the module, validator will ignore the "type
declaration must be unique" rule.
2017-05-25 11:36:48 -04:00
Lei Zhang
3492cc63b8
Remove unused this in lambda capture
2017-05-17 14:12:25 -04:00
David Neto
dbc2049aa3
Add SPIR-V 1.2 support, for OpenCL 2.2
2017-05-15 17:10:07 -04:00
David Neto
eb720b2ad1
Fix size_t conversion error on MinGW
2017-05-15 11:55:22 -04:00
David Neto
51b6778379
Update CHANGES: note fix of issue 629
2017-05-12 17:35:18 -04:00
Greg Fischer
bba812f4e4
Inline: Inline early return function if no returns in loop.
2017-05-12 17:18:00 -04:00
Andrey Tuganov
3eb716cae4
Added bit stream utils
...
Also added generalized zigzag coding.
- Due to signed integers being mostly non-negative, improved zigzag coding
to favor positive values.
2017-05-12 17:08:33 -04:00
Andrey Tuganov
f5facf842f
Stats analyzer aggregates OpConstant usage
2017-05-09 11:50:15 -04:00
Andrey Tuganov
b4cf371936
Stats analyzer uses validator
...
Stats analyzer calls validator to check the instruction and update
validator state.
Fixed unit tests (validator was failing).
2017-05-09 11:17:23 -04:00
David Neto
01b28750bf
Avoid snprintf warning in GCC 7.1
...
Tries to fix https://github.com/KhronosGroup/SPIRV-Tools/issues/642
See also https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80655
2017-05-08 15:58:24 -04:00
Greg Fischer
b25b330069
Inline: Create CFA class
...
Create class to encapsulate control flow analysis and share across
validator and optimizer. A WIP. Start with DepthFirstTraversal. Next
pull in CalculateDominators.
2017-05-08 15:02:59 -04:00
Mike Lothain
3f90058d2f
Update set_spec_const_default_value_test.cpp
...
Work around warning of dangling else
2017-05-08 10:41:48 -04:00
Andrey Tuganov
87a3f651e2
Added Markov chain analysis to stats
...
Added data structure to SpirvStats which is used to collect statistics
on opcodes following other opcodes.
Added a simple analysis print-out to spirv-stats.
2017-04-26 02:31:13 -04:00
Greg Fischer
bad90d9f12
Inline: Change "--inline-entry-points-all" to "-exhaustive"
2017-04-26 02:23:20 -04:00
Greg Fischer
d870dbe6a9
Inline: Fix inliner description in usage message to reflect exceptions.
2017-04-25 17:47:18 -06:00
GregF
a107d349e3
Inline: Do not inline functions with multiple returns (for now)
2017-04-25 16:50:57 -06:00
qining
144f59e451
Add bit pattern interface for setting default value for spec constants
2017-04-21 11:22:47 -04:00
David Neto
1d8efb02ed
Update CHANGES with recent news
2017-04-20 15:54:10 -04:00
Andrey Tuganov
1e309af80a
Added --compact-ids to /tools/opt
...
The pass remaps ids to a compact set which starts with %1 and
has no gaps.
2017-04-20 10:54:39 -04:00
Andrey Tuganov
b173d1c3cd
Added option --preserve-numeric-ids to tools/spirv-as
...
Added options to tools::Assemble
2017-04-13 14:13:33 -04:00
Andrey Tuganov
4f216402ba
Added statistical analysis tool (tool/stats)
...
Currently analyzes percentages of the following:
- version (how many 1.0 or 1.1)
- generator
- extension
- capability
- opcode prevalence
2017-04-10 17:15:04 -04:00
David Neto
72debb8fd4
Test source language HLSL
2017-04-07 09:54:38 -04:00
David Neto
bf68c81426
Support SPV_KHR_storage_buffer_storage_class
...
Includes interaction with SPV_KHR_variable_pointers
TODO: Update capabilitly dependency tests for new capabilities.
2017-04-07 09:54:38 -04:00
Ehsan Nasiri
23af06c3a3
Validator support for Variable Pointer extension.
...
If the variable_pointer extension is used:
* OpLoad's pointer argument may be the result of any of the following:
* OpSelect
* OpPhi
* OpFunctionCall
* OpPtrAccessChain
* OpCopyObject
* OpLoad
* OpConstantNull
* Return value of a function may be a pointer.
* It is valid to use a pointer as the return value of a function.
* OpStore should allow a variable pointer argument.
2017-04-07 09:49:48 -04:00
David Neto
4895ace29b
Update cap tests for SPV_KHR_16bit_storage
2017-04-07 09:49:48 -04:00
David Neto
4087e89bc6
Test asm,dis support for SPV_KHR_variable_pointers
2017-04-07 09:49:48 -04:00