summary |
shortlog | log |
commit |
commitdiff |
tree
first ⋅ prev ⋅ next
David Neto [Tue, 8 Sep 2015 19:29:22 +0000 (15:29 -0400)]
Simplify uses of spvBinaryDestroy in tests
Always try to destroy the binary during common methods
of test fixtures. This is safe if no other code in the test
attempted to destroy the binary.
Take advantage of the fact spvBinaryDestroy is a no-op on a nullptr,
by eliminating the null pointer check in the caller.
David Neto [Tue, 8 Sep 2015 19:34:26 +0000 (15:34 -0400)]
spvTextDestroy is no-op on nullptr.
David Neto [Wed, 9 Sep 2015 15:35:01 +0000 (11:35 -0400)]
Fix spvBinaryDestroy test to use an API-created object
David Neto [Tue, 8 Sep 2015 13:55:52 +0000 (09:55 -0400)]
Enable OpcodeMake test, by sampling values.
The previous version of the test was disabled, presumably
because it took to long to run.
David Neto [Tue, 8 Sep 2015 19:15:23 +0000 (15:15 -0400)]
spvBinaryDestroy(nullptr) is a no-op.
David Neto [Tue, 8 Sep 2015 18:59:57 +0000 (14:59 -0400)]
Remove spvOpcodeIsVariable
Nothing was using it.
David Neto [Tue, 8 Sep 2015 15:51:54 +0000 (11:51 -0400)]
Fix -p on disassembler.
spvTextToBinary fails if printing option is on
*and* you send in a non-null pointer-to-spv_text.
Dejan Mircevski [Tue, 8 Sep 2015 18:20:12 +0000 (14:20 -0400)]
Add hex-format tests for !<integer>.
Dejan Mircevski [Tue, 8 Sep 2015 18:17:14 +0000 (14:17 -0400)]
Add invalid-operand tests for !<integer>.
Dejan Mircevski [Tue, 8 Sep 2015 16:14:07 +0000 (12:14 -0400)]
Make all SpirvVectors const in ImmediateInt.cpp.
Dejan Mircevski [Tue, 8 Sep 2015 15:41:36 +0000 (11:41 -0400)]
Tests for parsing recognizable words after !<integer>.
David Neto [Fri, 4 Sep 2015 18:55:28 +0000 (14:55 -0400)]
Add disabled test to check float value parsing
Disabled for now because float parsing is broken.
David Neto [Tue, 1 Sep 2015 14:01:53 +0000 (10:01 -0400)]
Remove SPV_OPERAND_TYPE_ELLIPSIS
Andrew Woloszyn [Fri, 4 Sep 2015 19:13:57 +0000 (15:13 -0400)]
Added option to only compile spirv library instead of all binaries as well
David Neto [Tue, 1 Sep 2015 22:05:14 +0000 (18:05 -0400)]
Print diagnostics at the beginning of input.
A spv_diagnostic_t value knows if the source is textual rather
than binary.
Dejan Mircevski [Thu, 3 Sep 2015 20:29:27 +0000 (16:29 -0400)]
Avoid "operands" in the !<immediate> explanation.
Also declare "!<integer> = OpCode" legal.
David Neto [Fri, 4 Sep 2015 18:31:01 +0000 (14:31 -0400)]
Document current support and known bugs.
Dejan Mircevski [Thu, 3 Sep 2015 21:42:50 +0000 (17:42 -0400)]
Test consecutive opcodes being !<integer>.
David Neto [Thu, 27 Aug 2015 17:03:52 +0000 (13:03 -0400)]
Use opcode operand definitions from SPIR-V specification generator.
The assembler and disassembler now use a dynamically adjusted
sequence of expected operand types. (Internally, it is a deque,
for readability.) Both parsers repeatedly pull an expected operand
type from the left of this pattern list, and try to match the next
input token against it.
The expected pattern is adjusted during the parse to accommodate:
- an extended instruction's expected operands, depending on the
extended instruction's index.
- when an operand itself has operands
- to handle sequences of zero or more operands, or pairs of
operands. These are expanded lazily during the parse.
Adds spv::OperandClass from the SPIR-V specification generator.
Modifies spv_operand_desc_t:
- adds hasResult, hasType, and operandClass array to the opcode
description type.
- "wordCount" is replaced with "numTypes", which counts the number
of entries in operandTypes. And each of those describes a
*logical* operand, including the type id for the instruction,
and the result id for the instruction. A logical operand could be
variable-width, such as a literal string.
Adds opcode.inc, an automatically-generated table of operation
descriptions, with one line to describe each core instruction.
Externally, we have modified the SPIR-V spec doc generator to
emit this file.
(We have hacked this copy to use the old semantics for OpLine.)
Inside the assembler, parsing an operand may fail with new
error code SPV_FAIL_MATCH. For an optional operand, this is not
fatal, but should trigger backtracking at a higher level.
The spvTextIsStartOfNewInst checks the case of the third letter
of what might be an opcode. So now, "OpenCL" does not look like
an opcode name.
In assembly, the EntryPoint name field is mandatory, but can be
an empty string.
Adjust tests for changes to:
- OpSampedImage
- OpTypeSampler
Dejan Mircevski [Fri, 4 Sep 2015 12:51:52 +0000 (08:51 -0400)]
Print failing assembly text in CompileSuccessfully().
David Neto [Tue, 1 Sep 2015 16:24:06 +0000 (12:24 -0400)]
Remove unused struct "bin"
Dejan Mircevski [Wed, 2 Sep 2015 21:17:42 +0000 (17:17 -0400)]
More !<integer> tests.
Dejan Mircevski [Thu, 3 Sep 2015 18:28:41 +0000 (14:28 -0400)]
Use spvOpcodeMake() in ImmediateInt tests.
David Neto [Tue, 1 Sep 2015 18:56:09 +0000 (14:56 -0400)]
Don't overload operators in std namespace.
Use a spvtest::WordVector proxy object to easily print
std::vector<uint32_t> and spv_binary_t values.
Dejan Mircevski [Wed, 2 Sep 2015 18:48:33 +0000 (14:48 -0400)]
Add a few unit tests for !<integer>. More to come.
Start using GMock: modify CMakeLists, fix googletest URL in readme.
Add useful utilities to the TestFixture class. Also make it conform to
go/gunit recommendations about setup/teardown.
David Neto [Mon, 31 Aug 2015 18:07:22 +0000 (14:07 -0400)]
Add bin-to-text test for operand with operands
David Neto [Mon, 31 Aug 2015 17:34:28 +0000 (13:34 -0400)]
Add binary-to-text test for single instruction
This is easier to debug!
Binary-to-text testing needs more tests, and more
specific tests. That's for future work.
David Neto [Tue, 25 Aug 2015 18:21:13 +0000 (14:21 -0400)]
Getting the next word respects quoting and escaping.
Use double quotes ("). They can be interspersed with
other whitespace characters, just like shell quoting.
A backslash (\) always escapes the next character.
The end of the stream always terminates the word.
Add AutoText struct to unit test utilities, to easily
make spv_text_t values and reference them as spv_text values.
Andrew Woloszyn [Tue, 1 Sep 2015 19:15:36 +0000 (15:15 -0400)]
Had spriv-tools stay inside it's own directory.
In order to facilitate having a project depend on spirv-tools,
have spirv-tools not pollute any external builds.
Dejan Mircevski [Mon, 31 Aug 2015 21:42:22 +0000 (17:42 -0400)]
Move ImmediateInt tests into their own file.
This is in preparation of adding many more tests in accordance with the
evolved spec.
Also sort the test-source lines in CMakeLists.
Dejan Mircevski [Mon, 31 Aug 2015 20:19:07 +0000 (16:19 -0400)]
Warn about !<integer> opcode in assignment format.
Dejan Mircevski [Mon, 31 Aug 2015 19:24:32 +0000 (15:24 -0400)]
Put test classes in anonymous namespace.
Put TestFixture.h classes in a namespace.
Remove unused #includes.
Dejan Mircevski [Mon, 31 Aug 2015 16:13:33 +0000 (12:13 -0400)]
Clarify !<integer> behaviour in readme.md.
David Neto [Tue, 25 Aug 2015 17:53:19 +0000 (13:53 -0400)]
Getting the next word ends at a comment (;)
David Neto [Thu, 27 Aug 2015 17:50:05 +0000 (13:50 -0400)]
Combine parsing of ID and RESULT_ID operand types
David Neto [Mon, 24 Aug 2015 20:27:02 +0000 (16:27 -0400)]
String literals must be quoted.
David Neto [Mon, 24 Aug 2015 19:33:14 +0000 (15:33 -0400)]
Fix some bugs in parsing literals.
- a single hyphen is a string, not a number.
- a string with more than one period is a string, not a number
- check for string overflow
Add some unit tests
David Neto [Thu, 27 Aug 2015 17:38:39 +0000 (13:38 -0400)]
Add SPV_FAILED_MATCH status code
This is for future use by the parser.
David Neto [Thu, 27 Aug 2015 17:14:02 +0000 (13:14 -0400)]
Add enum values for instructions added after Rev31
Lei Zhang [Thu, 27 Aug 2015 18:20:19 +0000 (14:20 -0400)]
Add GLSL std450 extended instruction 72-80.
Dejan Mircevski [Thu, 27 Aug 2015 17:57:08 +0000 (13:57 -0400)]
Add std450 instructions 53-64.
Lei Zhang [Thu, 27 Aug 2015 17:44:31 +0000 (13:44 -0400)]
Add GLSL std450 extended instruction 65-71.
David Neto [Thu, 27 Aug 2015 17:11:01 +0000 (13:11 -0400)]
Fix spelling of SPV_OPERAND_TYPE_KERNEL_PROFILING_INFO
Lei Zhang [Thu, 27 Aug 2015 15:15:49 +0000 (11:15 -0400)]
Add test for Modf and ModfStruct.
Lei Zhang [Thu, 27 Aug 2015 15:22:14 +0000 (11:22 -0400)]
Simplify macro names used for GLSL std450 extended instruction table.
Dejan Mircevski [Thu, 27 Aug 2015 15:23:54 +0000 (11:23 -0400)]
Add std450 instructions 49-52.
Lei Zhang [Thu, 27 Aug 2015 14:00:16 +0000 (10:00 -0400)]
Reformat GLSL std450 extended instruction table.
Also add test for Smoothstep.
Dejan Mircevski [Thu, 27 Aug 2015 03:39:37 +0000 (23:39 -0400)]
Add tests for Atan2 and Pow.
Fix a typo in "ParameterizedExtInst."
Lei Zhang [Wed, 26 Aug 2015 21:23:35 +0000 (17:23 -0400)]
Unify tests for GLSL std450 extended instructions.
Previously we had two tests: one checks test to binary, the other
checks round trip. This patch merges the check in the former to
the latter.
Lei Zhang [Wed, 26 Aug 2015 14:28:42 +0000 (10:28 -0400)]
Add GLSL std450 instructions 35-48.
Lei Zhang [Wed, 26 Aug 2015 14:52:19 +0000 (10:52 -0400)]
Move tests for GLSL std450 instructions to a separate file.
Dejan Mircevski [Tue, 25 Aug 2015 21:41:45 +0000 (17:41 -0400)]
Add std450 instructions 25-34.
Lei Zhang [Mon, 24 Aug 2015 18:07:37 +0000 (14:07 -0400)]
Update readme about the "<result-id> = <opcode> <operand>..." format.
Lei Zhang [Mon, 24 Aug 2015 19:52:26 +0000 (15:52 -0400)]
Disassemble in the format of "<result-id> = <opcode> <operand>..".
Kenneth Benzie [Wed, 2 Sep 2015 09:49:42 +0000 (05:49 -0400)]
Merge branch 'google-catch-up' into 'master'
Google changes during GitLab outage
These are the changes made by Google during the GitLab outage last week.
See merge request !9
Kenneth Benzie [Thu, 27 Aug 2015 07:58:08 +0000 (03:58 -0400)]
Merge branch 'capability-enumerant' into 'master'
Capability enumerant
See merge request !5
Kenneth Benzie [Tue, 25 Aug 2015 08:09:08 +0000 (04:09 -0400)]
Merge branch 'fix-p-switch' into 'master'
Fix the '-p' command-line switch
(Fix for issue #1)
The -p option of the SPIR-V disassembler does not print anything to stdout, contrarily to what the usage help says.
See merge request !8
Lei Zhang [Fri, 21 Aug 2015 15:52:29 +0000 (11:52 -0400)]
Only use '%' as variable name prefix.
Since now we can distinguish between def and use according to
the variable's location, there is no need to keep two variable
prefixes.
Also reformat tests to use the value generating instruction
format ("<result-id> = <opcode> <operand>..").
Lei Zhang [Fri, 21 Aug 2015 15:52:03 +0000 (11:52 -0400)]
Bugfix: report the correct location for wrong opcode.
Also add more tests for the "<result-id> = <opcode> <operand>.."
format.
Lei Zhang [Fri, 21 Aug 2015 15:51:28 +0000 (11:51 -0400)]
Fix TextAdvance() problems involving whitespace around comment lines.
Fix the bug that TextAdvance() forgot to skip whitespace at the
beginning of the next line after a comment line.
Fix the bug that TextAdvanceLine() increase line number after going
over a character.
Andrew Woloszyn [Fri, 21 Aug 2015 19:40:02 +0000 (15:40 -0400)]
Added stream operators for spv_binary_t and std::vector<uint32_t>
Lei Zhang [Fri, 21 Aug 2015 15:50:55 +0000 (11:50 -0400)]
Support "<result-id> = <opcode> <operand>.." format.
Andrew Woloszyn [Fri, 21 Aug 2015 18:23:42 +0000 (14:23 -0400)]
Make the disassembler print the Extended instruction name.
This allows the disassembled output to more closely follow the
original assembly.
Andrew Woloszyn [Fri, 21 Aug 2015 17:39:34 +0000 (13:39 -0400)]
Added the initial set of glsl450 instructions.
Also rewrote the extended-instruction tests so that they would actually
make sure that the instruction actually appears in the output.
Lei Zhang [Fri, 21 Aug 2015 15:50:09 +0000 (11:50 -0400)]
Move test fixture into a separate header file so it can be reused.
Christopher Gautier [Sun, 21 Jun 2015 15:20:05 +0000 (17:20 +0200)]
Fix the '-p' command-line switch
Lei Zhang [Tue, 18 Aug 2015 13:49:04 +0000 (09:49 -0400)]
Address new enumerants in enum Capability for rev 31.
Kenneth Benzie [Tue, 18 Aug 2015 09:34:27 +0000 (05:34 -0400)]
Merge branch 'update-header-to-rev31' into 'master'
Update external headers to rev 31
See merge request !3
Kenneth Benzie [Tue, 18 Aug 2015 09:31:23 +0000 (05:31 -0400)]
Merge branch 'bitshift-parens' into 'master'
Bitshift parens
Parenthesize SPV_BIT macro to avoid surprises.
Adds LibspirvMacros.cpp unit test file.
See merge request !4
David Neto [Fri, 14 Aug 2015 17:57:02 +0000 (13:57 -0400)]
Parenthesize SPV_BIT macro to avoid surprises.
Lei Zhang [Fri, 14 Aug 2015 18:46:43 +0000 (14:46 -0400)]
Update spirv.h to revision 31.
For enum Capability and enum Op, not all newly added enumerants are
registered into capabilityInfoEntries and opcodeTableEntries yet.
That will come in following commits.
Lei Zhang [Fri, 14 Aug 2015 18:44:38 +0000 (14:44 -0400)]
Update OpenCLLib.h to revision 31.
Lei Zhang [Fri, 14 Aug 2015 18:42:30 +0000 (14:42 -0400)]
Substitute GLSL450Lib.h with GLSL.std.450.h of revision 31.
Kenneth Benzie [Mon, 17 Aug 2015 11:58:16 +0000 (07:58 -0400)]
Merge branch 'avoid-cmake-target-conflicts' into 'master'
Avoid cmake target conflicts
This makes it easier to include spirv-tools into larger cmake-based
projects, which may already include glslang or googletest. It is
currently difficult to do this because of target clashes and a
hardcoded googletest path.
glslang defines a target named SPIRV, so rename ours to SPIRV-TOOLS.
A googletest subdirectory may already be added somewhere else, so if
the external/googletest directory does not exist, probe whether there
is a gtest target defined already. This makes spirv-tools work
out-of-the-box when plopped into a larger project already containing
googletest; otherwise the README.md procedure still works as before.
See merge request !1
Kenneth Benzie [Mon, 17 Aug 2015 11:58:00 +0000 (07:58 -0400)]
Merge branch 'fix-failing-test' into 'master'
Fix failing test
The generator number is set to `SPV_GENERATOR_KHRONOS` in the
`spvBinaryHeaderSet` function, so tests should catch up.
See merge request !2
Lei Zhang [Thu, 30 Jul 2015 14:30:28 +0000 (10:30 -0400)]
Fix failing tests.
The generator number is set to SPV_GENERATOR_KHRONOS in the
spvBinaryHeaderSet function, so tests should catch up.
Lei Zhang [Wed, 29 Jul 2015 19:22:09 +0000 (15:22 -0400)]
Avoid target conflicts with glslang and googletest.
This makes it easier to include spirv-tools into larger cmake-based
projects, which may already include glslang or googletest. It is
currently difficult to do this because of target clashes and a
hardcoded googletest path.
glslang defines a target named SPIRV, so rename ours to SPIRV-TOOLS.
A googletest subdirectory may already be added somewhere else, so if
the external/googletest directory does not exist, probe whether there
is a gtest target defined already. This makes spirv-tools work
out-of-the-box when plopped into a larger project already containing
googletest; otherwise the README.md procedure still works as before.
Kenneth Benzie (Benie) [Mon, 1 Jun 2015 16:50:46 +0000 (09:50 -0700)]
Change binary header generator word to Khronos
Kenneth Benzie (Benie) [Tue, 26 May 2015 09:40:58 +0000 (10:40 +0100)]
Update readme file with repo maintainer.
Kenneth Benzie (Benie) [Fri, 22 May 2015 17:26:19 +0000 (18:26 +0100)]
Code drop of the Codeplay spirv-tools source.
This commit contains the source for the SPIRV static library, spirv-as,
spirv-dis, and spirv-val tools.