tree a62347cf0e7b4e4e6d6cf7a94dbde158555a37ec
parent c0640e0789c9c9daea61fac38c6535abd0744fa2
parent f18e1f293b7cf8f24a42587b48f35bc49912a5dd
author David Neto <dneto@google.com> 1474475769 -0400
committer David Neto <dneto@google.com> 1474478338 -0400

Merge remote-tracking branch 'aosp/upstream-master' into shaderc-update-master

Pulls in the following:
f18e1f2 Add a C++ interface to the optimization functionalities.
1bc0b27 Allow changing MessageConsumer in Pass & PassManager.
f8dbed0 Change BuildModule() to accept pointer-size pair for binary.
2cbb2cc Change interface of Pass::Process() to return possible failures.
12b5777 Provide friendly names for shader ballot BuiltIns
bf467da Update validate interface to accept binary pointers
3590279 Set the default source name as "input".
6519fce Start v2016.6-dev
f9763ac Finalize v2016.5
9382035 Add basic support for SPV_KHR_shader_ballot
8654caa Prepare the C++ interface for publication.
b54686d Move functions for building modules outside of the C++ interface.
869440e Let SPIRV_ASSERT() exit the program if the assertion fails.
114af21 Add MessageConsumer to PassManager, Pass, and analysis interfaces.
bfd7cd6 Add utility macros for logging messages.
755f97f Add a callback mechanism for communicating messages to callers.
e0dd033 Make friendly names for built-in variables.
247e024 Update CHANGES to say #414 is fixed
1f3fb50 Fix validator: OpUndef can be member of a constant composite
4e2ed04 Clarify: Ok to pass null diagnostic to spvBinaryParse
5c9080e Fix validator SSA check: Phi can use its own value sometimes
66f5b4b Build "spec id->default val str" mapping from string
5ac6352 Guard against nullptr in number parsing utilities
abf5793 Set default values for spec const decorated by SpecId
26b51ef Update CMake condition for Emacs load/save helper
6accefc add spirv-dis/spirv-as support for emacs when loading .spv binaries
049f80f Add IsSigned() to opt::Analysis::Integer.
1773b95 Pull out the number parsing logic
a35919c Merge diagnostic tests and single them out in a separate binary.
219f0cc Create separate binaries for validation tests.
ef600df Prefix test binaries with `test_`, rename UnitSPIRV, update README.
860030f Travis CI: mark build as finished once a job failed.
9222467 Kill the spvCheck macro which is just alias to if-statement.
53c8433 Update README about the optimization library and tool.
dcd7fed Say contributors have to click through the CLA
881816f Add test for presence of copyrights and license terms
e70a957 Start v2016.5-dev
9fc8658 Relicense SPIRV-Tools under Apache 2.0
6f35405 Add check_copyright to check or update copyright.
0e001b7 Fix Google copyright lines
5abf408 Kill the spvCheckReturn macro.
75bf78c Kill diagnostic_helper & the wrapping DIAGNOSTIC macro.
2ad3b74 Tests for preserving line debug insts even killing its affecting targets.
eb60e29 Unify constants pass
909d7f9 Refactor CapabilitySet into templated class EnumSet
2ce6725 Add forwarding so that passes' ctor can have args.
273920c Handle capabilities larger than value 63
47f2a14 Add libspirv::CapabilitySet
7698270 Get annotation instructions of a given id.
ecb5692 Add AppendNames() interface for AssemblyBuilder
d9e63de Create a separate header and source file for each pass.
380f36e Fold spec constants to normal constants (values fixed)
1d59aa0 Pass manager recomputes Id bound automatically.
b1b2cac Create const overloads for begin() and end() in Instruction.
923a459 Fix typo in spirv-opt help
d7b6362 Add Module::ComputeIdBound
0a175eb Add tests for decoration_empty().
ec07a07 Add a method in the types to check whether there is no decoration on a type.
58e1a1e Test ir::Instruction::GetOperand and GetInOperand
cc60cab IrLoader gracefully handles incomplete blocks and functions
53013cc Add Instruction begin and end mutable iterators
2607bbf Add Instruction cbegin and cend to access operands
97fc6aa ForEachInst optionally runs on attached debug line insts
e96a881 Travis CI: add build configuration for Android NDK with cmake.
0d4b73c Start v2016.4-dev
a7a84bd Finalize v2016.3
3c35b63 Add spirv-lesspipe.sh
97d06a3 Mere mention of PointSize BuiltIn does not require Shader capability
f51d823 Add a home brewed make_unique to ease creating unique_ptrs.
6f13c73 Remove some unused macros and functions.
f33aacd CHANGES captures fix for issue 365
358cb29 Relax ClipDistance, CullDistance capability check in all environments
ccabcc4 Add opt::ir::Module::SetIdBound
7e775aa Get the number of elements for Vector and Matrix type
b891845 Refine the DefUseManager
6c5bdc9 Get the width from integer and float type

Test: ndk/checkbuild.py on Linux; manually ran unit tests on Windows
Change-Id: Ia552c511929fb196d33efec54c0d39d023e0c263
