Commit Graph

530 Commits

Author SHA1 Message Date
Jamie Madill
dc4c2ba7dc Add PipeStorage tests. 2016-05-09 13:54:05 -04:00
Jamie Madill
34cb0035fd Fix several warnings exposed in MSVS 2015.
diagnostic.cpp:
- unreachable code

operand.cpp
- conversion between int and uint32_t
- unreachable code

hex_float.h:
- conversion from 'const int' to 'unsigned int'
- unreachable code

validate_id.cpp
- forcing value to bool 'true' or 'false'

validate_types.cpp:
- forcing value to bool 'true' or 'false'
2016-04-29 18:02:01 -04:00
Florian Ziesche
66fcb456c1 bitcast fixes
* ValidationState_t and idUsage now store the addressing model and memory model of the SPIR-V module (this is necessary for certain instructions that need different checks depending on if the logical or physical addressing model is used)
 * removed SpvOpPtrAccessChain and SpvOpInBoundsPtrAccessChain from spvOpcodeIsPointer again as these are disallowed in logical addressing mode and only allowed in physical addressing mode (which doesn't use/need spvOpcodeIsPointer in the first place)
 * added SpvOpImageTexelPointer and SpvOpCopyObject to spvOpcodeIsPointer
 * OpLoad/OpStore now only check if the used pointer operand originated from a valid pointer producing opcode in logical addressing mode (as per 2.16.1)
 * moved bitcast pointer tests to the kernel / physical addressing model part (+cleanup)
 * renamed spvOpcodeIsPointer to spvOpcodeReturnsLogicalPointer to clarify this function is only meant to be used with the logical addressing model
2016-04-29 14:55:05 -04:00
Dejan Mircevski
13877a3b0e Add v1.1 tests for OpLoopMerge. 2016-04-29 14:09:52 -04:00
Dejan Mircevski
3732d6cc21 Add v1.1 capabilities validation.
Refactor the ValidateCapability test fixture.

Explain the meaning of test parameters.  Factor out methods for
convenience and readability.  DRY v1.0 and v1.1 tests.
2016-04-29 13:40:01 -04:00
Dejan Mircevski
af701f8f6a Add basic Initializer/Finalizer tests. 2016-04-27 22:02:39 -04:00
Lei Zhang
ca1bf94c90 Use a single definition of ARRAY_SIZE to simplify code. 2016-04-27 17:05:24 -04:00
Dejan Mircevski
45d391b7b1 Add OpSizeOf tests. 2016-04-27 15:41:58 -04:00
Dejan Mircevski
da8222ee4e Refactor OpExecutionModeTest and apply it on v1.1.
Previously v1.1 testing was dead.
2016-04-26 13:03:28 -04:00
Dejan Mircevski
27d6008889 Refactor v1.1 tests and turn them on.
Previously, the "V11" text fixture was empty.
2016-04-26 12:16:00 -04:00
David Neto
9166854ac9 Add CHANGES file with high level software history
Add a high level version number for SPIRV-Tools, beginning
with v2016.0-dev.  The README describes the format of the
version number.

The high level version number is extracted from the CHANGES
file.  That works around:
 - stale-bait for when we don't add tags to the repository
 - our inability to add tags to the repository

Option --version causes spirv-as, spirv-dis, and spirv-val to
show the high level version number.

Add spvSoftwareVersionString to return the C-string for
the high level version number.

Add spvSoftwareVersionDetailsString() so that clients can get
more information if they want to.
Also allows us to clean up the uses in the tool executables files,
so now only one file includes build-version.inc.

Move the update-build-version logic to the only
CMakeLists file that needs it.

The update build version script takes a new argument
to name the output file.
2016-04-22 15:19:45 -04:00
Dejan Mircevski
776029fb71 Make grammar-generation fail if over 64 capabilities. 2016-04-22 14:56:07 -04:00
Dejan Mircevski
a9f36d0143 Eliminate kCapabilitiesMin/Max. 2016-04-22 14:05:55 -04:00
Dejan Mircevski
59436bb6b7 Turn module_capabilities_ into a spv_capability_mask_t. 2016-04-22 13:35:15 -04:00
Dejan Mircevski
549d78f77f Bump kCapabilitiesMaxValue for v1.1. 2016-04-21 17:27:24 -04:00
Dejan Mircevski
d3da705a22 Fix Windows build.
Replace `#ifdef 0` with comment inside a macro call.
2016-04-21 17:12:47 -04:00
Lei Zhang
f2cf719f50 Avoid going out of bound in advanceLine() and refine comments. 2016-04-21 16:08:51 -04:00
Dejan Mircevski
2ea54f5d1b Add tests for SubgroupDispatch.
Introduced in v1.1, SubgroupDispatch adds the following:
- two new execution modes
- one new capability
- two new opcodes

Extend ValidateBase methods to take a spv_target_env.  Replace the
context_ member with ScopedContext inside the said methods.  Give
ScopedContext wider visibility by moving it outside
TextToBinaryTestBase.
2016-04-21 15:46:08 -04:00
Dejan Mircevski
2d975d54ae Mention 1.1 support in the README. 2016-04-20 12:58:59 -04:00
Dejan Mircevski
7b33485f6e First tests for SPIR-V v1.1.
Add test for named-barrier instructions and capability.

Add spv_target_env as an optional argument to CompileSuccessfully() and
CompileFailure().  Currently defaults to UNIVERSAL_1_0, though that
could change in the future.

Make spv_context a local variable in test methods instead of a
TextToBinaryTestBase member.  Introduce ScopedContext to make temp
contexts easier.
2016-04-19 16:34:12 -04:00
Lei Zhang
d12a10d2dd Fix wrong grammar .inc file dependency introduced by copy-paste. 2016-04-18 16:48:33 -04:00
Lei Zhang
e94d6d18dd Rework CMake rules for building grammar tables.
Use add_custom_command() to generate all .inc files and manage
dependency with set_source_files_properties().
2016-04-18 15:50:43 -04:00
Derek Sollenberger
009c4358b5 Update cmake files to support Android as a build target.
This enables cross-compiling to Android using scripts like
cmake-android that update the system name to reflect the build
target.
2016-04-18 11:43:24 -04:00
David Neto
552d319962 Make directories more safely.
Avoid a race on check-for-dir vs. make-dir
when running the inc-file generation script concurrently.
2016-04-18 10:46:15 -04:00
Dejan Mircevski
cb3c49ef82 Add SPIR-V 1.1 grammar.
Switch to SPIR-V 1.1 as default.
Introduce SPV_ENV_UNIVERSAL_1_1.
Add "1_0" to the internal variable names.
Add spv_target_env to spv*GetTable().
2016-04-18 10:45:57 -04:00
Dejan Mircevski
e26fdc6bd1 Mark SPIR-V grammar files as 1.0.
Factor the CMake generate_grammar_tables invocation into a function
parameterized on the version.
2016-04-18 10:00:01 -04:00
Lei Zhang
77d4e30eda GLSL grammar update.
* Add names to operands.
* Fix capability requirements for UnpackDouble2x32.
* Fix operands list error for NClamp.
2016-04-14 18:35:14 -04:00
John Kessenich
27d98e2954 Merge pull request #181 from antiagainst/readme
Use footnotes for links in README.md.
2016-04-14 13:09:09 -06:00
Lei Zhang
29ca6f9894 Use footnotes for links in README.md. 2016-04-14 14:13:28 -04:00
Lei Zhang
489786465a Grammar update: OpPhi now uses PairIdRefIdRef as the last operand. 2016-04-13 13:43:44 -04:00
Lei Zhang
11636fb100 Update the core grammar.
* IdType is renamed to IdResultType.
* version is splitted into major_version and minor_version.
* Seperate Scope and IdScope operand kinds. Same for MemorySemantics.
2016-04-13 13:43:44 -04:00
David Neto
469f0e8fd5 Make paths to grammar output files
The directory for a grammar output file will be created if
it doesn't already exist.

This is required to make the Android.mk build work.
2016-04-12 16:09:13 -04:00
Dejan Mircevski
8ba7c92a94 Remove revision from SPV_ENV_*.
Revisions proliferate quickly and we don't promise to retain extra
grammar copies for every historical one.
2016-04-11 15:31:00 -04:00
Lei Zhang
670c0ac831 Allow to only build certain grammar tables. 2016-04-08 15:38:02 -04:00
Lei Zhang
051e067f25 Remove the outdated patch file.
Now we use the JSON grammar and the generate_grammar_tables.py
script to maintain various info tables. That patch file will not
be needed anymore.
2016-04-07 15:10:19 -04:00
Dejan Mircevski
7649c7362d Fix MSVC error C2797. 2016-04-04 20:16:15 -04:00
Lei Zhang
80e416ce91 Use JSON grammar files to generate extended instruction sets. 2016-04-04 16:13:06 -04:00
Lei Zhang
9ca2d6dcd2 Rname grammar.json to spirv.core.grammar.json and add version info. 2016-04-04 16:13:06 -04:00
Dejan Mircevski
3fb2676d23 Fix validation of array length. 2016-04-04 15:55:05 -04:00
Lei Zhang
6fa3f8aad9 Remove dependency on SPIR-V headers in libspirv.h.
For fulfilling this purpose, the |opcode| field in the
|spv_parsed_instruction_t| struct is changed to of type uint16_t.

Also add functions to query the information of a given SPIR-V
target environment.
2016-04-04 10:34:28 -04:00
Chris Forbes
d03c0a1153 Enable linking against libSPIRV-Tools from linux shared libraries
Required for linking against libSPIRV-Tools from LVL's
libVkLayer_core_validation.so.

Signed-off-by: Chris Forbes <chrisforbes@google.com>
2016-04-04 10:21:35 +12:00
Eric Engestrom
c9b2285bfc Fix spelling mistakes 2016-04-02 22:54:59 +01:00
Lei Zhang
4f293b7139 Use the JSON grammar file to generate various info tables.
This patch uses a Python script to parse the JSON grammar file to
generate the opcode table and operand kind tables.

Now we don't need to do the post-processing (from OperandClass
to spv_operand_type_t) and copying of the opcode info table is
not required anymore!
2016-04-01 13:18:42 -04:00
Dejan Mircevski
a1de2b37c7 Handle CRLF in assembly text. 2016-04-01 00:47:02 -04:00
Dejan Mircevski
3d27da4bc7 Add a target environment to spvContextCreate().
Run clang-format.
2016-03-31 12:16:51 -04:00
David Neto
6836e17f24 OpExecutionMode only takes a single ExecutionMode
Previously, the grammar allowed many execution modes for a single
OpExecutionMode instruction.

Removes the variable- and optional- execution mode operand type
enum values.

Issue found by antiagainst@
2016-03-29 14:51:02 -04:00
Lei Zhang
452914634e Capability fix: ImageReadWrite & ImageMipmap require ImageBasic. 2016-03-29 09:47:23 -04:00
Andrew Woloszyn
4c657bfa8f Make everything compile cleanly with -Wpedantic.
This makes SPIRV_WARN_EVERYTHING compile cleanly.
2016-03-21 10:01:13 -04:00
David Neto
e04b935599 Support both -h, --help on spirv-as, spirv-val
The spirv-dis command already supports both.
2016-03-17 16:06:25 -04:00
Lei Zhang
d0f80fabbc Travis CI: update test binary location and return correct status. 2016-03-17 15:20:22 -04:00