David Neto
6b31ce4d50
Assembler test TODOs for image instructions.
2015-10-26 12:55:33 -04:00
David Neto
d768798d48
Assembler supports new decorations in Rev32
...
They are:
- NoContraction
- InputTargetIndex
- Alignment
2015-10-26 12:55:33 -04:00
Lei Zhang
863ddbeeaa
Rev32: Remove DepthAny and mark Xfb as requiring TransformFeedback.
2015-10-26 12:55:33 -04:00
David Neto
d30b2331a3
Fix Capability dependencies on capabilities, Rev32
2015-10-26 12:55:33 -04:00
David Neto
c66f5074e2
Assembler support for new capabilities in Rev32
2015-10-26 12:55:33 -04:00
David Neto
8576c9c327
Support Image operand MinLod
2015-10-26 12:55:33 -04:00
David Neto
2d1b5e5bba
Assembler supports new builtins in Rev32
...
They are VertexIndex and InstanceIndex.
2015-10-26 12:55:33 -04:00
David Neto
49c299b094
Assembler support for Nontemporal memory access
2015-10-26 12:55:33 -04:00
Lei Zhang
85c6f79081
Define two macros to simplify code for ExecutionMode operands.
2015-10-26 12:55:33 -04:00
David Neto
c09d3857ff
Fix permissions on test/TextToBinary.Barrier.cpp
2015-10-26 12:55:33 -04:00
David Neto
aa0c3a5c07
Support Dim InputTarget
2015-10-26 12:55:33 -04:00
David Neto
9819adf4cb
Support StorageClass PushConstant
2015-10-26 12:55:33 -04:00
David Neto
3e52dd915d
Support ExecutionMode IndependentForwardProgress
2015-10-26 12:55:33 -04:00
David Neto
16df562ad3
Assembler test for Memory Semantics enum
...
Enables mask expression parsing for Memory Semantics arguments,
e.g. on OpMemoryBarrier.
2015-10-26 12:55:33 -04:00
Andrew Woloszyn
13804e5d63
All values now represent symbolic names instead of mixed with numeric.
...
Also removed un-necessary heap-allocation of spv_named_id_table.
This removed the necessity to expose a function to create/destroy it
and simplified the interface.
2015-10-26 12:55:33 -04:00
Lei Zhang
a66952d38c
Remove executable file mode bits on source files.
2015-10-26 12:55:33 -04:00
David Neto
dbaf40718a
Update to Rev32 headers. Part 1.
...
Just enough fixes to code make it build and pass tests.
Core changes:
- Fix spelling for: NoPerspective, NonWritable, NonReadable,
- Remove NoStaticUse, RelaxedMask
GLSL changes:
- Fixed spelling for: InverseSqrt, FaceForward, MatrixInverse,
SmoothStep, FindILsb, FindSMsb, FindUMsb
- Replace Mix with IMix and FMix
- Remove AddCarry, SubBorrow, MulExtended
Replace header OpenCLLib.h with OpenCL.std.h
TODO:
- Regenerate the core instruction syntax table (source/opcode.inc)
- Add test coverage for new enums and instructions.
2015-10-26 12:55:33 -04:00
Andrew Woloszyn
e0d351b3ad
Switched VecTypeHint to take a LiteralNumber instead of an ID
2015-10-26 12:55:33 -04:00
Andrew Woloszyn
fabeeb863b
Removed duplicate code due to what looks like a merge issue
2015-10-26 12:55:33 -04:00
David Neto
74af05f012
Cleanups for EnumCase
...
Make it a class, since it has non-trivial behaviour for converting
the enumerated value to a uint32_t value. (Comply with style guide.)
Merge EnumCaseWithOperands into EnumCase.
2015-10-26 12:55:33 -04:00
David Neto
1b5fd4962e
Put the test fixture into spvtest namespace.
...
All test utility code should go into the spvtest namespace.
2015-10-26 12:55:33 -04:00
Andrew Woloszyn
815cb95247
Fix MSVC build for boolean opeartions on enums.
2015-10-26 12:55:33 -04:00
David Neto
cde47431bd
Fix the Supported Features section.
2015-10-26 12:55:33 -04:00
David Neto
a570570e17
Readme: Assembler supports all of Rev31, for 32-bit code
...
Also say that we have fixed problems building with MSVC 2013.
Also document other recent changes.
2015-10-26 12:55:33 -04:00
David Neto
d1dd2fbd7c
Put const back on const char* in test case structs
2015-10-26 12:55:33 -04:00
Andrew Woloszyn
f2d0775f1b
A bunch of small fixes to build in MSVC2013.
...
Fixed an issue where some of the tests were testing
the wrong word with the wrong operation. (| != ||).
Coalesced the many versions of EnumCase into one.
Added a get_value() to EnumCase to convert to a uint32_t.
Replaces ASSERT_TRUE(pointer), with ASSERT_NE(nullptr, pointer),
so that we do not do implicit pointer->bool conversion.
Removed const from some test structs since gtest needs to be
able to swap them.
2015-10-26 12:55:33 -04:00
David Neto
ee1b3bb3bb
Assembler support for image operands from Rev31
...
Rev32 and later add many more image operands, and
rearrange their values.
2015-10-26 12:55:33 -04:00
Lei Zhang
184c76dbaf
Let EncodeAndDecodeSuccessfully remove preamble comments.
2015-10-26 12:55:33 -04:00
Lei Zhang
6d41581c93
Clean up code for encoding literal operands.
2015-10-26 12:55:33 -04:00
David Neto
3fca4cddee
Remove SPV_OPERAND_TYPE_VARIABLE_MEMORY_ACCESS
...
If a memory mask operand is present, it is a mask. The mask appears
only once, so just use SPV_OPERAND_TYPE_OPTIONAL_MEMORY_MASK.
The "variable literals" aspect comes into play as follows: if the
Aligned bit is set in the mask, then the parser will be made to
expect the alignment value as a literal number operand that follows
the mask. That is done through mask operand expansion.
2015-10-26 12:55:33 -04:00
David Neto
5bf88fcc95
Assembler: mask expressions where 1 bits imply operands
...
Properly support a memory access mask with a combination
of bits, including the Aligned bit. When the Aligned bit is
set, the parser should expect an alignment value literal operand.
2015-10-26 12:55:33 -04:00
David Neto
fbf5cf4591
Document the syntax of mask expressions
2015-10-26 12:55:33 -04:00
David Neto
36b0c0f6b3
Assembler support for simple mask expressions
...
For example, support combining mask enums with "|",
such as "NotNaN|AllowRecip" for the fast math mode.
This is supported for mask values that don't modify the
expected operand pattern:
- fast math mode
- function control
- loop control
- selection control
TODO: disassembler support to print them as mask expressions.
2015-10-26 12:55:33 -04:00
David Neto
388c40d9c6
Generalize spvOperandTableNameLookup to take string length.
...
This is preparation for parsing mask expressions.
2015-10-26 12:55:33 -04:00
Dejan Mircevski
e3a19c0d63
Forbid !<integer> preceding or succeeding '='.
2015-10-26 12:55:33 -04:00
David Neto
b30a0c529b
Assembler test for Dim, ImageFormat enums.
...
Adds SPV_OPERAND_TYPE_SAMPLER_IMAGE_FORMAT, and the
translation tables for its values from the spv::ImageFormat values.
2015-10-26 12:55:33 -04:00
David Neto
8382de2670
Document inability to use names from 3.12, 1.13
...
You can't use names from 3.12 Image Channel Order and
3.13 Image Channel Data Type since in the intstruction grammar,
they are only used as return values, but never named arguments
to instructions.
2015-10-26 12:55:33 -04:00
David Neto
f7ee0ca5da
Use generalized EnumCase in AccessQualifier assembly tests
...
This is in preparation for coming tests that will also
use the templated EnumCase instead of making their
own structs.
Also reformat AccessQualifier test.
2015-10-26 12:55:33 -04:00
Dejan Mircevski
ba569fb1aa
Handle IDs among !<integer> operands.
2015-10-26 12:55:33 -04:00
David Neto
5f33d31d89
Assembler test for SamplerAddressingMode, SamplerFilterMode
...
Uses OpConstantSampler instruction.
2015-10-26 12:55:33 -04:00
David Neto
5494dd4334
Assembler test for Storage Class enum values
...
This covers the storage classes in SPIR-V Rev31. Rev32 has more.
2015-10-26 12:55:33 -04:00
Lei Zhang
b41d150b7f
Support multiple word literal numbers as constants.
...
Add a new operand type SPV_OPERAND_TYPE_MULTIWORD_LITERAL_NUMBER
to represent those operands that can expand into multiple words.
Now only OpConstant and OpSpecConstant have such kind of operand.
2015-10-26 12:55:33 -04:00
David Neto
cebad036f7
Update CHANGES and Future Work
2015-10-26 12:55:33 -04:00
David Neto
fadbf6220e
Assembler test for ExecutionScope, with OpGroupIAdd
...
Use spvOperandTypeStr to generalize the error message
for failure to parse an ID.
Extend spvOperandTypeStr to cover SPV_OPERAND_TYPE_EXECUTION_SCOPE.
2015-10-26 12:55:33 -04:00
David Neto
abe51c4142
Assembler test for OpTypePipe
...
Covers all AccessQualifier enums.
In Rev32, OpTypePipe no longer has a type argument.
Added TODOs for this.
2015-10-26 12:55:33 -04:00
David Neto
4a29131dcd
Assembler test for single-valued Memory Access flag.
2015-10-26 12:55:33 -04:00
David Neto
f4fde6c60d
Assembler test for single-valued FunctionControl mask
...
Fixed name of "Inline" enumerant.
Support for combinations of function control masks should come later.
2015-10-26 12:55:33 -04:00
Lei Zhang
97afd5c03c
Remove useless variable.
2015-10-26 12:55:33 -04:00
David Neto
c0b32ecb54
Assembler test for single-valued LoopControl mask
...
Support for combining masks should come later.
2015-10-26 12:55:33 -04:00
David Neto
ad18c77ac9
Assembler test for single-valued SelectionControl mask
...
Support for combining masks should come later.
2015-10-26 12:55:33 -04:00