David Neto [Fri, 20 Nov 2015 19:21:10 +0000 (14:21 -0500)]
spv_parsed_instruction_t cleanup
Add members:
- words: a pointer to an array of words in the instruction,
in host native endianness.
- num_words: sizes the words member
Remove member:
- offset
This simplifies clients of spvBinaryParse, because they don't
have to handle endianness translation.
Also, it makes the binary parse API more composable, allowing
for easy chaining of binary parse clients. A binary parse client
is handed the array of words directly instead of having to reference
some external array of all the words in the SPIR-V binary. It also
allows a binary parse client to mutate the instruction stream before
handing off to a downstream consumer.
TODO(dneto): Still need to write the unit tests for spvBinaryParse
Fixes: https://github.com/KhronosGroup/SPIRV-Tools/issues/1
Ben Vanik [Sun, 22 Nov 2015 16:32:53 +0000 (08:32 -0800)]
Merge pull request #23.
Fixing some C++ conversion errors.
* Implicit conversion from int to bool.
* Implicit conversion from size_t to uint32_t.
* Implicit conversion from char* to uint8_t.
Adding no-op color operators so unhandled platforms can still link.
David Neto [Fri, 20 Nov 2015 15:44:41 +0000 (10:44 -0500)]
Put DiagnosticStream and clr exports in libspirv namespace
Each exported functions either has an "spv" prefix, or is inthe libspirv
namespace.
Fixes https://github.com/KhronosGroup/SPIRV-Tools/issues/18
Lei Zhang [Fri, 20 Nov 2015 14:44:13 +0000 (09:44 -0500)]
Fix paths for binaries to match changes in CMake configuration.
Lei Zhang [Thu, 19 Nov 2015 15:30:39 +0000 (10:30 -0500)]
Use test fixture for a test.
Andrew Woloszyn [Thu, 19 Nov 2015 15:12:44 +0000 (10:12 -0500)]
Removed executable flag from HexFloat.cpp.
David Neto [Thu, 19 Nov 2015 14:38:05 +0000 (09:38 -0500)]
Updated spirv.h header. Fixes SPV_VERSION macro
The SPV_VERSION macro value was updated to be 0x10000.
Previously it was missing the "0x" prefix, which caused
confusion.
The value of the const unsigned int SpvVersion has always
been 0x00010000. That's what should appear as the version
word in the SPIR-V header.
The SPV_VERSION symbol is to be used in preprocessor directives.
Andrew Woloszyn [Thu, 19 Nov 2015 14:22:53 +0000 (09:22 -0500)]
Turned warnings-as-errors on by default.
Fixed a few warnings that appear in builds on VS2013 and VS2015.
Lei Zhang [Wed, 18 Nov 2015 14:22:10 +0000 (09:22 -0500)]
Clean up CMake configuration and address compiler warnings.
- Removed dead configuration in CMakeLists.txt.
- Used target_compile_options() instead of CMAKE_{C|CXX}_FLAGS.
- Turned on warnings on tests.
- Fixed various warnings for comparing signed with unsigned values.
- Removed dead code exposed by compiler warnings.
David Neto [Wed, 18 Nov 2015 20:48:32 +0000 (15:48 -0500)]
Remove old names for enums: memory semantics, scope ID
David Neto [Tue, 17 Nov 2015 21:37:10 +0000 (16:37 -0500)]
Bottom byte of version header word should be 0
The assembler should always make it 0.
The disassembler should ignore it.
Remove the macro support for supplying a value for it.
Fixes https://github.com/KhronosGroup/SPIRV-Tools/issues/6
Pierre Moreau [Tue, 17 Nov 2015 22:27:35 +0000 (23:27 +0100)]
CMake: Respect user-defined install path
David Neto [Tue, 17 Nov 2015 23:00:56 +0000 (18:00 -0500)]
Object files should depend on spirv.h and friends
Don't use SYSTEM attribute on include_directories directive
for the SPIR-V standard header files. When you do, object files
are not considered dependent on those headers.
Checked by looking at the dependency file source/disassemble.cpp.o.d,
and by trying to compile after a trivial edit to spirv.h
Fixes https://github.com/KhronosGroup/SPIRV-Tools/issues/7
Also, use "" inclusion instead of <> inclusion for standard SPIR-V
headers.
Lei Zhang [Tue, 17 Nov 2015 21:46:55 +0000 (16:46 -0500)]
Fix test: version number has changed.
Lei Zhang [Tue, 17 Nov 2015 21:00:53 +0000 (16:00 -0500)]
Update external headers.
Now use the headers published at
https://www.khronos.org/registry/spir-v/api/1.0/.
Lei Zhang [Mon, 16 Nov 2015 15:48:43 +0000 (10:48 -0500)]
Use Google comment style and fix typos.
David Neto [Sat, 14 Nov 2015 14:23:03 +0000 (08:23 -0600)]
Fix grammar: "The SPIR-V Tools project provides"
David Neto [Fri, 13 Nov 2015 18:03:28 +0000 (12:03 -0600)]
Register Glslang tool
Lei Zhang [Fri, 13 Nov 2015 16:00:10 +0000 (11:00 -0500)]
Fix many typos.
David Neto [Fri, 13 Nov 2015 01:42:16 +0000 (20:42 -0500)]
Revamp the README for public release.
Reorganize the README, and update its contents to more accurately
reflect the public release.
Remove the incremental "Changes" section.
Rename readme.md to README.md
Rename license.txt to LICENSE
Update the assembler tool to support -h, and make its help look
more consistent with the disassembler.
Change the target and library name to SPIRV-Tools. To better
match the GitHub repo name. Also, it's not SHOUTING.
David Neto [Fri, 13 Nov 2015 00:40:21 +0000 (19:40 -0500)]
The version header word has 3 byte-size components.
Bits 24-31: 0
Bits 16-23: SPIR-V major number (1)
Bits 8-15: SPIR-V minor number (0)
Bits 0-7: SPIR-V minor number (2)
The assembler will construct the word appropriately,
and the disassemble will print it in major.minor.revision form.
David Neto [Thu, 12 Nov 2015 23:33:47 +0000 (18:33 -0500)]
Generator word now has two 16-bit components
The high 16-bits are a registered generator tool.
These are registered at
https://www.khronos.org/registry/spir-v/api/spir-v.xml
The low 16-bits are tool-specific. It might be a version number,
for example, but is not constrained by the spec or by the registration
process.
The disassembler prints the tool name when we know it.
If we don't, print "Unknown" and then the numeric tool number
in parentheses.
In all cases, the disassembler prints lower 16-bit number on the
same line but after the tool name.
Also add newly registered generators:
6: Khronos LLVM/SPIR-V Translator
7: Khronos SPIR-V Tools Assembler
David Neto [Thu, 12 Nov 2015 20:44:25 +0000 (15:44 -0500)]
Support capabilities StorageImageReadWithoutFormat
Also add capability StorageImageWriteWithoutFormat.
They only affect validation rules.
David Neto [Thu, 12 Nov 2015 16:57:41 +0000 (11:57 -0500)]
Disassembler can read the binary from stdin.
Read from stdin if:
- no input filename specified
- the input filename is "-"
Also, output goes to stdout if the output filename (argument to -o)
is "-".
David Neto [Thu, 12 Nov 2015 20:30:28 +0000 (15:30 -0500)]
Add GeometryStreams capability
Decoration Stream depends on it.
GeometryStreams depends on Geometry capability.
Spot check dependence of OpEmitStreamVertex on GeometryStreams.
(Opcode dependencies on capabilities are automatically generated from
opcode.inc)
David Neto [Wed, 11 Nov 2015 21:36:42 +0000 (16:36 -0500)]
Support OpImage
It's already in the syntax table. Just test it.
Lei Zhang [Thu, 12 Nov 2015 18:48:30 +0000 (13:48 -0500)]
Use opaque context object to hold SPIR-V info tables.
Previously the opcode table is declared as an global array and we
have spvOpcodeTableInitialize() modifying it. That can result in
race condition. Now spvOpcodeTabelGet() copies the whole underlying
array.
Lei Zhang [Thu, 12 Nov 2015 19:42:03 +0000 (14:42 -0500)]
Remove an obselete and redundant text.
David Neto [Thu, 12 Nov 2015 18:53:27 +0000 (13:53 -0500)]
Disassembler tool indents to 15 by default
The assigned-to result Id appears to the left of the 15th column.
Add --no-indent option.
The API form of the disassembler does not indent by default.
David Neto [Thu, 12 Nov 2015 16:44:42 +0000 (11:44 -0500)]
spirv-dis prints to stdout by default.
Color printing is enabled only for printing to stdout.
Add --no-color to turn off color printing.
Lei Zhang [Thu, 12 Nov 2015 15:45:36 +0000 (10:45 -0500)]
Simplify some tests
Lei Zhang [Wed, 11 Nov 2015 22:29:23 +0000 (17:29 -0500)]
libspirv.h doesn't depend on spirv_operands.hpp anymore.
Also change spirv_operands.hpp to a C header since we only have
an enum inside it, and move it to source/.
Lei Zhang [Wed, 11 Nov 2015 21:59:31 +0000 (16:59 -0500)]
Moves parser interface to libspirv.h.
Lei Zhang [Wed, 11 Nov 2015 21:50:55 +0000 (16:50 -0500)]
Move internal macros/structs for SPIR-V to a separate header.
David Neto [Wed, 11 Nov 2015 17:32:21 +0000 (12:32 -0500)]
Update to 1.0 Rev 2 work-in-progress headers
Updated readme.
Note: The header advertises itself as Rev 1, but contains
many (all?) the updates intended for Rev 2. We might need
to update one more time before SPIR-V 1.0 Rev2 is published.
Regenerated syntax tables for 1.0.
Changed names:
InputTriangles -> Triangles
InputQuads -> Quads
InputIsolines -> Isolines
WorkgroupLocal -> Workgroup
WorkgroupGlobal -> CrossWorkgroup
PrivateGlobal -> Private
(Dim) InputTarget -> SubpassData
WorkgroupLocalMemoryMask -> WorkgroupMemoryMask
WorkgroupGlobalMemoryMask -> CrossWorkgroupMemoryMask
AsyncGroupCopy -> GroupAsyncCopy
WaitGroupEvents -> GroupWaitEvents
Remove:
IndependentForwardProgress capability
Smooth decoration
FragColor BuiltIn
WorkgroupLinearId in favour of LocalInvocationId
ImageSRGBWrite capability
Special OpenCL image instructions
Add:
image channel data type UnormInt101010_2
AcquireReleaseMask
InputTargetIndex updates:
InputTargetIndex -> InputAttachmentIndex
InputAttachmentIndex depends on InputAttachment capability,
and it takes a literal number argument.
Capability StorageImageExtendedFormats updates:
Enum value changed from 26 to 49. (Changes position in tables).
Replaces AdvancedImageFormat capability.
OpenCL source language -> OpenCL_C, OpenCL_CPP
Lei Zhang [Wed, 11 Nov 2015 19:24:04 +0000 (14:24 -0500)]
Move SPIR-V constants/limits to a separate header.
Lei Zhang [Wed, 11 Nov 2015 20:37:01 +0000 (15:37 -0500)]
Use std::string instead of a huge array for storing literal strings.
Lei Zhang [Wed, 11 Nov 2015 18:57:43 +0000 (13:57 -0500)]
Add missing copyright.
Lei Zhang [Wed, 11 Nov 2015 17:45:23 +0000 (12:45 -0500)]
Use quotation for libspirv.h and sort headers.
Lei Zhang [Wed, 11 Nov 2015 17:40:25 +0000 (12:40 -0500)]
Move info table related structs into table.h.
Lei Zhang [Wed, 11 Nov 2015 17:14:36 +0000 (12:14 -0500)]
Move spv*TableGet() functions out of libspirv.h.
This is a part of the effort to clean up libspirv.h.
Lei Zhang [Wed, 11 Nov 2015 16:33:26 +0000 (11:33 -0500)]
Remove table parameters from API functions.
Opcode, operand, and external instruction tables are no longer
passed in as parameters to spvTextToBinary(), spvBinaryToText(),
and spvValidate().
Andrew Woloszyn [Wed, 11 Nov 2015 17:06:46 +0000 (12:06 -0500)]
Fixed permissions
Andrew Woloszyn [Wed, 11 Nov 2015 16:05:07 +0000 (11:05 -0500)]
Fixed warnings on windows and constness of spv_binary.
Replaced uint64_t with size_t in the places that make sense and
added spv_const_binary{,_t} to allow the interface to accept non
modifiable spirv where appropriate.
Lei Zhang [Wed, 11 Nov 2015 15:17:16 +0000 (10:17 -0500)]
Get magic number and version from spirv.h.
This is a part of the effort to clean up libspirv.h.
David Neto [Wed, 11 Nov 2015 07:45:45 +0000 (02:45 -0500)]
Disassembler support for OpSpecConstantOp
Document the fact that we use names for extended instructions
and OpSpecConstantOp opcode operands.
David Neto [Wed, 11 Nov 2015 06:56:49 +0000 (01:56 -0500)]
Assembler support for OpSpecConstantOp
Adds SPV_OPERAND_TYPE_SPEC_CONSTANT_OP_NUMBER.
David Neto [Wed, 11 Nov 2015 14:44:23 +0000 (09:44 -0500)]
Fix Windows build errors.
- uint64_t != size_t sometimes
- don't use C99 runtime sized arrays
David Neto [Tue, 10 Nov 2015 21:04:30 +0000 (16:04 -0500)]
Fix description of NaN encoding.
David Neto [Tue, 10 Nov 2015 20:43:12 +0000 (15:43 -0500)]
Enable round trip tests for OpSwitch
Lei Zhang [Tue, 10 Nov 2015 19:29:35 +0000 (14:29 -0500)]
Optional typed literal number should be concrete in BinaryParser.
David Neto [Tue, 10 Nov 2015 19:14:21 +0000 (14:14 -0500)]
Update readme: binary parser refactor; non-32-bit literals
David Neto [Tue, 10 Nov 2015 19:46:35 +0000 (14:46 -0500)]
syntax.md: Describe hex floats and their use.
David Neto [Mon, 9 Nov 2015 23:55:42 +0000 (18:55 -0500)]
Fix handling of OpExtInstImport
The assembler tracks mapping of extended instruction import Id
to extended instruction type.
Adds a few new ways to fail.
David Neto [Fri, 6 Nov 2015 23:08:49 +0000 (18:08 -0500)]
Assembler supports hex float constants.
The bit pattern for a hex float is preserved through
assembly and disassembly.
You can use a hex float to express Inf and any kind of NaN
in a portable way.
David Neto [Fri, 6 Nov 2015 16:23:57 +0000 (11:23 -0500)]
Print OpConstant values according to type.
Zero and normal floating point values are printed with enough
enough digits to reproduce all the bits exactly.
Other float values (subnormal, infinity, and NaN) are printed
as hex floats.
Fix a binary parse bug: Count partially filled words in a
typed literal number operand.
TODO: Assembler support for hex numbers, and therefore reading
infinities and NaNs.
Lei Zhang [Fri, 6 Nov 2015 15:10:28 +0000 (10:10 -0500)]
Remove canonical assembly format in syntax.md.
Lei Zhang [Fri, 6 Nov 2015 20:09:04 +0000 (15:09 -0500)]
advance() should check current string index is in bound.
Lei Zhang [Thu, 5 Nov 2015 22:45:09 +0000 (17:45 -0500)]
Remove support for canonical assembly syntax format.
David Neto [Wed, 4 Nov 2015 22:38:17 +0000 (17:38 -0500)]
spv_operand_type_t cleanup.
- Concrete operand types are never optional.
Split them to make this so, e.g. add SPV_OPERAND_TYPE_IMAGE
since there was SPV_OPERAND_TYPE_OPTIONAL_IMAGE.
Similarly for SPV_OPERAND_TYPE_MEMORY_ACCESS.
This entails duplicating two operand table entries.
- The above, plus some rearranging of enums, allows us to define
first and last optional operand types, and first and last
variable operand types.
This lets us simplify the code for spvOperandIsOptional, and
spvOperandIsVariable.
- Replace SPV_OPERAND_TYPE_MULTIWORD_LITERAL_NUMBER with the
more accurately named SPV_OPERAND_TYPE_TYPED_LITERAL_NUMBER.
Its special characteristic is that the type of the literal
number is determined by some previous operand in the instruction.
This is used for literals in OpSwitch, OpConstant, and OpSpecConstant.
This lets us refactor operand parsing cases in the assembler.
- Remove the special required-thing-in-optional-tuple in favour of
the corresponding concrete operand type:
SPV_OPERAND_TYPE_ID_IN_OPTIONAL_TUPLE
--> SPV_OPERAND_TYPE_ID
SPV_OPERAND_TYPE_INTEGER_LITERAL_IN_OPTIONAL_TUPLE
--> SPV_OPERAND_TYPE_INTEGER_LITERAL
- Constrain spvOpeandTypeStr to only have to work for non-variable
operand types. Add a test for this.
David Neto [Thu, 5 Nov 2015 22:37:48 +0000 (17:37 -0500)]
Remove TODO: Strings are always little-endian
SPIR-V strings are UTF-8 encoded, and always byte-addressed.
David Neto [Fri, 30 Oct 2015 20:06:15 +0000 (16:06 -0400)]
Refactor the binary parser.
The binary parser has a C API, described in binary.h.
Eventually we will make it public in libspirv.h.
The API is event-driven in the sense that a callback is called
when a valid header is parsed, and for each parsed instruction.
Classify some operand types as "concrete". The binary parser uses
only concrete operand types to describe parsed instructions.
The old disassembler APIs are moved into disassemble.cpp
TODO: Add unit tests for spvBinaryParse.
Dejan Mircevski [Tue, 3 Nov 2015 18:52:41 +0000 (13:52 -0500)]
Slay "undeflow."
Dejan Mircevski [Tue, 3 Nov 2015 17:02:07 +0000 (12:02 -0500)]
Refactor EncodeTestHelper() and DecodeTestHelper().
David Neto [Tue, 3 Nov 2015 16:26:15 +0000 (11:26 -0500)]
Consts before the type, not after
David Neto [Wed, 28 Oct 2015 17:50:32 +0000 (13:50 -0400)]
A spv_binary_t points to const code words.
David Neto [Tue, 27 Oct 2015 20:56:14 +0000 (16:56 -0400)]
Move spvBinaryToText into new disassembler file.
This begins the refactoring of the disassembler into
two parts: A binary decoder in binary.cpp, and an
event-driven converter to text in disassemble.cpp
David Neto [Mon, 2 Nov 2015 21:03:12 +0000 (16:03 -0500)]
Use the syntax table for opcode to name mappings.
This method is more reliably complete.
Andrew Woloszyn [Mon, 2 Nov 2015 20:45:29 +0000 (15:45 -0500)]
Updated comment in SetBits.
It now mentions that it will fail if you try to set a bit that
does not exist.
David Neto [Wed, 28 Oct 2015 17:16:56 +0000 (13:16 -0400)]
DiagnosticStream keeps a copy of the position.
Don't store the pointer, as the underlying storage
could disappear. This a bit more flexible and robust.
Andrew Woloszyn [Mon, 2 Nov 2015 20:19:18 +0000 (15:19 -0500)]
Added double tests to HexFloat
David Neto [Mon, 2 Nov 2015 16:40:59 +0000 (11:40 -0500)]
Empty assembly text compiles to no instructions.
But it's still a valid module.
David Neto [Mon, 2 Nov 2015 19:59:02 +0000 (14:59 -0500)]
Consolidate: spvOpcodeIsType into spvOpcodeGeneratesType
And fix the spvOpcodeGeneratesType: OpTypeForwardPointer
does not generate a new type.
Lei Zhang [Mon, 2 Nov 2015 14:41:20 +0000 (09:41 -0500)]
Run clang-format to enforce Google style globally.
Note that we are more strict than Google style for one aspect:
pointer/reference indicators are adjacent to their types, not
their variables.
find . -name "*.h" -exec clang-format -i {} \;
find . -name "*.cpp" -exec clang-format -i {} \;
David Neto [Mon, 2 Nov 2015 14:44:20 +0000 (09:44 -0500)]
Update readme: fix utf-8 tests, use spirv.h
Andrew Woloszyn [Mon, 2 Nov 2015 16:45:38 +0000 (11:45 -0500)]
Updated HexFloat parsing for windows.
It is valid for float values to be modified on copy if they are NaN,
so long as they remain the correct NaN. What this means is that
we can not rely on the float data-type for storing float values
if we want to retain bit patterns.
Added FloatProxy which stores data in an unsigned integer, and updated
the HexFloat template to deal with FloatProxy values instead.
Andrew Woloszyn [Fri, 23 Oct 2015 17:26:02 +0000 (13:26 -0400)]
Added HexFloat reading to HexFloat.
This allows reading of hex-encoded floats.
Andrew Woloszyn [Fri, 23 Oct 2015 17:23:19 +0000 (13:23 -0400)]
Added HexFloat helper class to print out floating point numbers.
TODO Add double tests before we actually use this.
Andrew Woloszyn [Thu, 29 Oct 2015 13:57:24 +0000 (09:57 -0400)]
Changed SetBits to index from LSB and take a size.
Lei Zhang [Wed, 28 Oct 2015 17:40:52 +0000 (13:40 -0400)]
Use spirv.h instead of spirv.hpp.
This is a part of the effort to make libspirv.h C-compatible.
David Neto [Tue, 27 Oct 2015 20:27:05 +0000 (16:27 -0400)]
Inclusion guards follow Google C++ style
Follow the scheme in
http://google-styleguide.googlecode.com/svn/trunk/cppguide.html#The__define_Guard
except:
- 'include/' is dropped from the guard token
- 'source/' is dropped from the guard token
David Neto [Tue, 27 Oct 2015 20:14:40 +0000 (16:14 -0400)]
Move endian utilities to their own file.
David Neto [Tue, 27 Oct 2015 19:51:34 +0000 (15:51 -0400)]
Hide spvBinaryHeaderSet with its only client.
Also rename it to SetHeader since it's not part of the "binary"
API.
David Neto [Tue, 27 Oct 2015 19:31:10 +0000 (15:31 -0400)]
Move AssemblyGrammar into its own source files
David Neto [Fri, 16 Oct 2015 18:26:40 +0000 (14:26 -0400)]
Add DISABLED failing test for ext inst import confusion
Currently, the assembler does not track external import
IDs when there are two or more.
TODO(dneto): Fix this functionality.
David Neto [Tue, 27 Oct 2015 15:10:29 +0000 (11:10 -0400)]
Use basic_string<char> for the UTF-8 test string
This is an attempt to fix the unit tests on DeveloperStudio 2013.
Currently, the size of the earth_africa string is reported as 2
on Windows. But I think that may be 2 16-bit characters.
David Neto [Mon, 26 Oct 2015 19:43:12 +0000 (15:43 -0400)]
Update to latest registered generator enums
The registry is at:
https://www.khronos.org/registry/spir-v/api/spir-v.xml
Andrew Woloszyn [Fri, 23 Oct 2015 13:53:58 +0000 (09:53 -0400)]
Added set_bits<> to bitutils.
This allows us to get a constant with the given bits set at
compile-time. This is needed for a future patch for HexFloat.
David Neto [Thu, 22 Oct 2015 17:24:41 +0000 (13:24 -0400)]
Test cleanup: remove useless std::string constructor
Lei Zhang [Wed, 21 Oct 2015 14:22:05 +0000 (10:22 -0400)]
Use typedef instead of using in libspirv.h.
The header file should be compatible with pre-C++11 code.
Kenneth Benzie [Tue, 27 Oct 2015 10:14:44 +0000 (06:14 -0400)]
Merge branch 'google-asm-dis-oct-25' into 'master'
Google assembler disassembler catchup to oct 25
Catches up with the google branch through 2015-10-25:
* SPIR-V 0.99 Rev32
* Core instructions, enumerants, and capabilities
* GLSL std450 extended instructions supported
* OpenCL extended instruction supported, version 1.0 Revision 1
See readme.md for missing features and known bugs, e.g.
* Fix disassembler support for non-32 bit numeric literals
* Fix: Assembler can't use extended instructions from two different imports
in the same module
* TODO: 16-bit floating point literals
See merge request !10
David Neto [Mon, 26 Oct 2015 16:57:40 +0000 (12:57 -0400)]
Fix readme: this is not the 'google' branch
Dejan Mircevski [Wed, 21 Oct 2015 13:26:54 +0000 (09:26 -0400)]
Fix GMOCK directory in CMakeLists.txt.
Andrew Woloszyn [Tue, 20 Oct 2015 14:32:09 +0000 (10:32 -0400)]
Fixed typo in utf8 string literal
Andrew Woloszyn [Tue, 20 Oct 2015 13:12:32 +0000 (09:12 -0400)]
Fixed UTF-8 encoding issues on windows.
Also cleaned up some warnings related to implicit size_t/uint64_t
conversions.
Andrew Woloszyn [Fri, 16 Oct 2015 19:11:00 +0000 (15:11 -0400)]
Added type tracking to the disassembler.
TODO: Actually use the tracked types to make sure that we print out
values correctly.
David Neto [Fri, 16 Oct 2015 18:44:40 +0000 (14:44 -0400)]
Update readme: Support OpenCL, UTF-8 literal strings
David Neto [Thu, 15 Oct 2015 18:15:34 +0000 (14:15 -0400)]
Remaining tests for OpenCL extended instructions.
David Neto [Thu, 15 Oct 2015 19:22:06 +0000 (15:22 -0400)]
Add operand type for extension instruction number
This is required to support extended instructions that
have literal numbers as operands. An example is OpenCL's
vloadn.
The previous code in the assembler assumed that *any* literal
number argument in any part of an OpExtInst must be the name
of the extended instruction. That's true only for the first
literal number argument.
David Neto [Fri, 16 Oct 2015 18:16:00 +0000 (14:16 -0400)]
Use literal integers for OpenCL extended instructions.