Timo Aaltonen pushed to branch upstream-unstable at X Strike Force / vulkan / 

860b2ee5 by GregF at 2018-02-05T16:54:03-05:00
ADCE: Fix combinator initialization

The combinator initialization was only looking at the capabilities
in the shader and not the inferred capabilities. Geometry and tessellation
shaders were not setting the Shader capability which is inferred. So the
combinator set was not initialized correctly causing problems for ADCE.

- - - - -
87102277 by Alan Baker at 2018-02-06T10:17:56-05:00
Registering a type now rebuilds it out of memory owned by the manager.

* Added TypeManager::RebuildType
 * rebuilds the type and its constituent types in terms of memory owned
 by the manager.
 * Used by TypeManager::RegisterType to properly allocate memory
* Adding an unit test to expose the issue
* Added some tests to provide coverage of RebuildType
* Added an accessor to the target pointer for a forward pointer

- - - - -
c452bfd0 by David Neto at 2018-02-06T11:47:44-05:00

- - - - -
e7fafdaa by David Neto at 2018-02-06T12:10:50-05:00
Fix test inclusion when Effcee is absent

- - - - -
b1c9c4e8 by David Neto at 2018-02-06T14:40:28-05:00
Enable Visual Studio 2013 again

Disable use of Effcee and RE2 with MSVC compilers older than Visual
Studio 2015 since RE2 doesn't support them.

- - - - -
30138975 by Józef Kucia at 2018-02-07T10:43:32-05:00
Build SPIRV-Tools as shared library

Add pkg-config file for shared libraries

Properly build SPIRV-Tools DLL

Test C interface with shared library

Set PATH to shared library file for c_interface_shared test

Otherwise, the test won't find SPIRV-Tools-shared.dll.

Do not use private functions when testing with shared library

Make all symbols hidden by default for shared library target

- - - - -
2f0c3aaa by Andrey Tuganov at 2018-02-07T13:31:35-05:00
Add Vulkan-specific validation rules for atomics

Added atomic instructions validation rules from

- - - - -
a61e4c13 by Andrey Tuganov at 2018-02-07T13:31:35-05:00
Disable check which fails Vulkan CTS

- - - - -
06cdb969 by Steven Perron at 2018-02-07T23:01:47-05:00
Make use of the instruction folder.

Implementation of the simplification pass.

- Create pass that calls the instruction folder on each instruction and
  propagate instructions that fold to a copy.  This will do copy
  propagation as well.

- Did not use the propagator engine because I want to modify the instruction
  as we go along.

- Change folding to not allocate new instructions, but make changes in
  place.  This change had a big impact on compile time.

- Add simplification pass to the legalization passes in place of
  insert-extract elimination.

- Added test cases for new folding rules.

- Added tests for the simplification pass

- Added a method to the CFG to apply a function to the basic blocks in
  reverse post order.

Contributes to #1164.

- - - - -
ca4457b4 by GregF at 2018-02-08T15:20:02-05:00
SROA: Do replacement on structs with no partial references.

- - - - -
84ccd0b9 by Alexander Johnston at 2018-02-08T22:55:47-05:00
Loop invariant code motion initial implementation

- - - - -
1a849ffb by Steven Perron at 2018-02-08T23:02:22-05:00
Add header files missing from CMakeLists.txt

- - - - -
4e4a254b by Józef Kucia at 2018-02-09T12:43:03+01:00
Do not hardcode libdir and includedir in pkg config files

- - - - -
88685915 by David Neto at 2018-02-09T17:47:51-05:00
Fix generation of Vim syntax file

- - - - -
1d7b1423 by Steven Perron at 2018-02-09T17:52:33-05:00
Add folding of OpCompositeExtract and OpConstantComposite constant instructions.

Create files for constant folding rules.

Add the rules for OpConstantComposite and OpCompositeExtract.

- - - - -
70bf3514 by Arseny Kapoulkine at 2018-02-09T18:29:17-08:00
Fix spirv.h include to rely on include paths

This is important when SPIRV-Headers are not checked out to external/
folder and mirrors other places in the code where spirv.h is included.

- - - - -
06b437de by Steven Perron at 2018-02-12T09:47:55-05:00
Avoid using the def-use manager during inlining.

There seems to only be a single location where the def-use manager is
used.  It is to get information about a type.  We can do that with the
type manager instead.

Fixes #1285

- - - - -
08699920 by Diego Novillo at 2018-02-12T13:21:48-05:00
Cleanup.  Use proper #include guard.  NFC.

- - - - -
229ebc06 by Alan Baker at 2018-02-14T10:21:26-05:00
Fixes #1295. Mark undef values as varying in ccp.

* Undef now marked as varying in ccp
 * this prevents incorrect meet operations since phis were always not
* added a test to catch the bug

- - - - -
dd8400e1 by Stephen McGroarty at 2018-02-14T15:44:38-05:00
Initial support for loop unrolling.

This patch adds initial support for loop unrolling in the form of a
series of utility classes which perform the unrolling. The pass can
be run with the command spirv-opt --loop-unroll. This will unroll
loops within the module which have the unroll hint set. The unroller
imposes a number of requirements on the loops it can unroll. These are
documented in the comments for the LoopUtils::CanPerformUnroll method in
loop_utils.h. Some of the restrictions will be lifted in future patches.

- - - - -
6669d816 by Steven Perron at 2018-02-14T15:48:15-05:00
Fold binary floating point operators.

Adds the floating rules for FAdd, FDiv, FMul, and FSub.

Contributes to #1164.

- - - - -
0e9f2f94 by Steven Perron at 2018-02-14T15:53:13-05:00
Add id to name map

Adding a map from an id to it set of OpName and OpMemberName
instructions.  This will be used in KillNameAndDecorates to kill the
names for the ids that are being removed.

In my test, the compile time for 50 shaders went from 1m57s to 55s.
This was on linux using the release build.

Fixes #1290.

- - - - -
32a8e04c by Arseny Kapoulkine at 2018-02-15T10:03:22-05:00
Add folding of redundant OpSelect insns

We can fold OpSelect into one of the operands in two cases:

- condition is constant
- both results are the same

Even if the original shader doesn't have either of these, if-conversion
pass sometimes ends up generating instructions like

   %7127 = OpSelect %int %3220 %7058 %7058

And this optimization cleans them up.

- - - - -
f3a10470 by Lei Zhang at 2018-02-15T10:19:15-05:00
Avoid using static unordered_map (#1304)

unordered_map is not POD. Using it as static may cause problems
when operator new() and operator delete() is customized.

Also changed some function signatures to use const char* instead
of std::string, which will give caller the flexibility to avoid
creating a std::string.

- - - - -
d2c0fce3 by David Neto at 2018-02-15T11:34:50-05:00
Invoke cmake via CMAKE_COMMAND variable

Need to do this in case cmake is not on the path.
This should fix the Android NDK build, as in when building the NDK

- - - - -
5d442fad by Nerijus Baliūnas at 2018-02-15T12:00:02-05:00
fix typo
- - - - -
efe286cd by Lei Zhang at 2018-02-16T10:02:18-05:00
SubgroupBallotKHR can enable SubgroupSize & SubgroupLocalInvocationId

- - - - -
3756b387 by Steven Perron at 2018-02-16T13:49:47-05:00
Get CCP to use the constant floating point rules.

Fixes #1311

- - - - -
50f307f8 by Steven Perron at 2018-02-16T18:58:03-05:00
Simplify OpPhi instructions referencing unreachable continues

In dead branch elimination, we already recognize unreachable continue
blocks, and update OpPhi instruction accordingly.  This change adds an
extra check: if the head block has exactly 1 other incoming edge, then
replace the OpPhi with the value from that edge.

Fixes #1314.

- - - - -
27d23a92 by Arseny Kapoulkine at 2018-02-16T20:37:12-05:00
Remove constants from constant manager in KillInst

Registering a constant in constant manager establishes a relation
between instruction that defined it and constant object. On complex
shaders this could result in the constant definition getting removed as
part of one of the DCE pass, and a subsequent simplification pass trying
to use the defining instruction for the constant.

To fix this, we now remove associated constant entries from constant
manager when killing constant instructions; the constant object is still
registered and can be remapped to a new instruction later.

GetDefiningInstruction shouldn't ever return nullptr after this change
so add an assertion to check for that.

- - - - -
10544136 by Arseny Kapoulkine at 2018-02-16T20:41:22-05:00
Add constant folding rules for floating-point comparison

This change handles all 6 regular comparison types in two variations,
ordered (true if values are ordered *and* comparison is true) and
unordered (true if values are unordered *or* comparison is true).

Ordered comparison matches the default floating-point behavior on host
but we use std::isnan to check ordering explicitly anyway.

This change also slightly reworks the floating-point folding support
code to make it possible to define a folding operation that returns
boolean instead of floating point.

These tests exhaustively test ordered/unordered comparisons for

Since for NaN inputs the comparison result doesn't depend on the
comparison function, we just test == and !=; NaN inputs result in true
unordered comparisons and false ordered comparisons.

- - - - -
04cd63e5 by Steven Perron at 2018-02-16T20:46:49-05:00
Make better use of simplification pass

The simplification pass works better after all of the dead branches are
removed.  So swapping them around in the legalization passes.  Also
adding the simplification pass to performance passes right after dead
branch elimination.

Added CCP to the legalization passes so we can propagate the constants
into the branchs, and remove as many branches a possible.  CCP is
designed to still get opportunities even if the branches are dead, so it
is a good place for it.

Fixes #1118

- - - - -
e543b195 by Andrew Woloszyn at 2018-02-16T21:15:51-05:00
Removed warnings from hex_float.h

Bitcasting FloatProxy<->uint_type was hitting a warning
with g++8.0.1. Replace bitcasts with new casting traits for FloatProxy.

- - - - -
c3f34d8b by Alan Baker at 2018-02-18T19:41:34-05:00
Fixes #1300. Adding checks for bad CCP transitions and unsettled values

* Now track propagation status and assert on bad statuses
 * Added helper methods to access instruction propagation status
* Modified the phi meet operator to properly reflect the paper it is
based on
* Modified SSA edge addition so that all edge are added, but only on
state changes
* Fixed a bug in instruction simulation where interesting conditional
branches would not mark the interesting edge as executed
 * Added a test to catch this bug
* Added an ostream operator for SSAPropagator::PropStatus

- - - - -
9d95a91a by Steven Perron at 2018-02-20T11:22:51-05:00
Fix folding insert feeding extract

I mixed up two cases when folding an OpCompositeExtract that is feed by
and OpCompositeInsert.  The specific cases are demonstracted in the new
test.  I mixed up the conditions for the cases, and treated one like the

Fixes #1323.

- - - - -
ac9ab0da by Lei Zhang at 2018-02-20T11:25:38-05:00
Travis: require MacOS to build and test again

- - - - -
6c750501 by Diego Novillo at 2018-02-20T12:04:06-05:00
Speed up Phi insertion.

On some shader code we have in our testsuite, Phi insertion is showing
massive compile time slowdowns, particularly during destruction.  The
specific shader I was looking at has about 600 variables to keep track
of and around 3200 basic blocks.  The algorithm is currently O(var x
blocks), which means maps with around 2M entries.  This was taking about
8 minutes of compile time.

This patch changes the tracking of stored variables to be more sparse.
Instead of having every basic block contain all the tracked variables in
the map, they now have only the variables actually stored in that block.

This speeds up deallocation, which brings down compile time to about

Note that this is not the definite fix for this.  I will re-write Phi
insertion to use a standard SSA rewriting algorithm

This contributes to

- - - - -
ec3bbf09 by Steven Perron at 2018-02-20T14:45:08-05:00
Preserve analysies in the simplification pass

Building the def-use chains is very expensive, so we do not want to
invalidate them it if is not necessary.  At the moment, it seems like
most optimizatoins are good at not invalidating the def-use chains, but
simplification does.

This PR get the simlification pass to keep the analysies valid.

Contributes to #1328.

- - - - -
fa3ac3cc by Steven Perron at 2018-02-20T18:21:25-05:00
Revert "Preserve analysies in the simplification pass"

This reverts commit ec3bbf093e686964d464e3a7c70e691d98ed82c1.

- - - - -
309be423 by Arseny Kapoulkine at 2018-02-20T18:29:27-05:00
Add folding for redundant add/sub/mul/div/mix operations

This change implements instruction folding for arithmetic operations
that are redundant, specifically:

  x + 0 = 0 + x = x
  x - 0 = x
  0 - x = -x
  x * 0 = 0 * x = 0
  x * 1 = 1 * x = x
  0 / x = 0
  x / 1 = x
  mix(a, b, 0) = a
  mix(a, b, 1) = b

Cache ExtInst import id in feature manager

This allows us to avoid string lookups during optimization; for now we
just cache GLSL std450 import id but I can imagine caching more sets as
they become utilized by the optimizer.

Add tests for add/sub/mul/div/mix folding

The tests cover scalar float/double cases, and some vector cases.

Since most of the code for floating point folding is shared, the tests
for vector folding are not as exhaustive as scalar.

To test sub->negate folding I had to implement a custom fixture.

- - - - -
c1b93663 by Steven Perron at 2018-02-21T09:46:51-05:00
Add Insert-extract elimination back into legalization passes.

Fixes #1326.

- - - - -
51ecc731 by Steven Perron at 2018-02-21T09:50:47-05:00
Reduce instruction create and deletion during inlining.

When inlining a function call the instructions in the same basic block
as the call get cloned.  The clone is added to the set of new blocks
containing the inlined code, and the original instructions are deleted.

This PR will change this so that we simply move the instructions to the
new blocks.  This saves on the creation and deletion of the

Contributes to #1328.

- - - - -
01760d2f by Alan Baker at 2018-02-21T10:22:39-05:00
Fixes #1338. Handle OpConstantNull in branch/switch conditions

* No longer assume the branch/switch condition must be bool or int
constants (respectively)
* Added a couple unit tests for each case

- - - - -
46a9ec9d by GregF at 2018-02-22T12:24:13-05:00
Opt: Check for side-effects in DCEInst()

This function now checks for side-effects before adding operand
instructions to the dead instruction work list.

Because this fix puts more pressure on IsCombinatorInstruction() to
be correct, this commit adds all OpConstant* and OpType* instructions
to combinator_ops_ set.

Fixes #1341.

- - - - -
432dc404 by Lei Zhang at 2018-02-22T15:17:04-05:00
Appveyor: remove VS2015 configuration to reduce build time

We already have VS2013 and VS2017, which should be good guards.

- - - - -
3f19c203 by Steven Perron at 2018-02-22T16:06:30-05:00
Preserve analysies in the simplification pass

Fixes a bug at the same time.  In `UpdateDefUse`, if the definition
already exists, we are not suppose to analyse it again.  When you do
the entries for the definition are deleted, and we don't want that.
The check for this was wrong.

- - - - -
94af58a3 by Steven Perron at 2018-02-22T21:40:58-05:00
Clean up variables before sroa

In some shaders there are a lot of very large and deeply nested
structures.  This creates a lot of work for scalar replacement.  Also,
since commit ca4457b we have been very aggressive as rewriting
variables.  This has causes a large increase in compile time in creating
and then deleting the instructions.

To help low the costs, I want to run a cleanup of some of the easy loads
and stores to remove.  This reduces the number of symbols sroa has to
work on.  It also reduces the amount of code the simplifier has to
simplify because it was not generated by sroa.

To confirm the improvement, I ran numbers on three different sets of

Time to run --legalize-hlsl:

Set #1: 55.89s -> 12.0s
Set #2: 1m44s -> 1m40.5s
Set #3: 6.8s -> 5.7s

Time to run -O

Set #1: 18.8s -> 10.9s
Set #2: 5m44s -> 4m17s
Set #3: 7.8s -> 7.8s

Contributes to #1328.

- - - - -
e354984b by Stephen McGroarty at 2018-02-27T11:50:08+00:00
Unroller support for multiple induction variables

Support for multiple induction variables within a loop and support for
loop condition operands <= and >=.

- - - - -
3497a944 by Victor Lomuller at 2018-02-27T08:52:46-05:00
Add loop unswitch pass.

It moves all conditional branching and switch whose conditions are loop
invariant and uniform. Before performing the loop unswitch we check that
the loop does not contain any instruction that would prevent it
(barriers, group instructions etc.).

- - - - -
b08b94ec by David Neto at 2018-02-27T11:48:40-05:00

- - - - -
64298bfd by Pierre Moreau at 2018-02-27T12:06:24-05:00
tools/linker: Allow setting --verify-ids on the command line

- - - - -
bdd6617f by Pierre Moreau at 2018-02-27T12:21:13-05:00
linker: Allow modules to be partially linked

Fixes: https://github.com/KhronosGroup/SPIRV-Tools/issues/1144

- - - - -
9394272c by Pierre Moreau at 2018-02-27T12:31:50-05:00
linker: merge debug annotations from category c)

Fixes: https://github.com/KhronosGroup/SPIRV-Tools/issues/1218

- - - - -
20b8cdb7 by Stephen McGroarty at 2018-02-27T12:59:26-05:00
Make IR builder use the type manager for constants

This change makes the IR builder use the type manager to generate
OpTypeInts when creating OpConstants. This avoids dangling references
being stored by the created OpConstants.

- - - - -
802cf053 by Alan Baker at 2018-02-27T13:02:13-05:00
Merge arithmetic with non-trivial constant operands

Adding basis of arithmetic merging

* Refactored constant collection in ConstantManager
* New rules:
 * consecutive negates
 * negate of arithmetic op with a constant
 * consecutive muls
 * reciprocal of div

* Removed IRContext::CanFoldFloatingPoint
 * replaced by Instruction::IsFloatingPointFoldingAllowed
* Fixed some bad tests
* added some header comments

Added PerformIntegerOperation

* minor fixes to constants and tests
* fixed IntMultiplyBy1 to work with 64 bit ints
* added tests for integer mul merging

Adding test for vector integer multiply merging

Adding support for merging integer add and sub through negate

* Added tests

Adding rules to merge mult with preceding divide

* Has a couple tests, but needs more
* Added more comments

Fixed bug in integer division folding

* Will no longer merge through integer division if there would be a
remainder in the division
* Added a bunch more tests

Adding rules to merge divide and multiply through divide

* Improved comments
* Added tests

Adding rules to handle mul or div of a negation

* Added tests

Changes for review

* Early exit if no constants are involved in more functions
* fixed some comments
* removed unused declaration
* clarified some logic

Adding new rules for add and subtract

* Fold adds of adds, subtracts or negates
* Fold subtracts of adds, subtracts or negates
* Added tests

- - - - -
0c134671 by David Neto at 2018-02-27T18:47:29-05:00
Consistently include latest spirv.h header file.

Use indirection through latest_version_spirv.h

Also, when generating enum tables, use the unified1 JSON grammar since
it now has FragmentFullyCoveredEXT but the other JSON grammars don't.
They are starting to fall behind.

- - - - -
2cb589cc by Steven Perron at 2018-02-27T21:06:08-05:00
Remove uses DCEInst and call ADCE

The algorithm used in DCEInst to remove dead code is very slow.  It is
fine if you only want to remove a small number of instructions, but, if
you need to remove a large number of instructions, then the algorithm in
ADCE is much faster.

This PR removes the calls to DCEInst in the load-store removal passes
and adds a pass of ADCE afterwards.

A number of different iterations of the order of optimization, and I
believe this is the best I could find.

The results I have on 3 sets of shaders are:


Set 1: 5.39 -> 5.01
Set 2: 13.98 -> 8.38
Set 3: 98.00 -> 96.26

Performance passes:

Set 1: 6.90 -> 5.23
Set 2: 10.11 -> 6.62
Set 3: 253.69 -> 253.74

Size reduction passes:

Set 1: 7.16 -> 7.25
Set 2: 17.17 -> 16.81
Set 3: 112.06 -> 107.71

Note that the third set's compile time is large because of the large
number of basic blocks, not so much because of the number of
instructions.  That is why we don't see much gain there.

- - - - -
90e1637c by Victor Lomuller at 2018-02-27T21:07:10-05:00
Remove Function::GetBlocks pushed by accident

- - - - -
588f4fcc by Steven Perron at 2018-02-27T21:20:22-05:00
Add more folding rules for vector shuffle.

Adds rule to fold OpVectorShuffle with constant inputs.

Adds rules to fold OpCompositeExtrac being fed by an OpVectorShuffle.

- - - - -
9457cabb by Alan Baker at 2018-02-28T13:33:21-05:00
Fixes #1354. Do not merge integer division.

* Removes merging of div with a div or mul for integers
* Updated tests

- - - - -
bdaf8d56 by GregF at 2018-02-28T23:08:52-05:00
Opt: Add constant folding for FToI and IToF

- - - - -
ce5941a6 by Alan Baker at 2018-02-28T23:12:27-05:00
Fixes #1357. Support null constants better in folding

* getFloatConstantKind() now handles OpConstantNull
* PerformOperation() now handles OpConstantNull for vectors
* Fixed some instances where we would attempt to merge a division by 0
* added tests

- - - - -
8b27ba83 by Arseny Kapoulkine at 2018-03-01T15:00:08-05:00
Vulkan BuiltIn variables can't have Location/Component decorations

As per Vulkan spec, BuiltIn variables can't have Location or Component
decorations. On some drivers, these can lead to driver crashing when
compiling the shader pipeline; for example, NVidia/AMD desktop drivers:

This change adds validation and tests to catch this.

- - - - -
82462576 by Alan Baker at 2018-03-01T15:24:41-05:00
Fixes #1361. Mark all non-constant global values as varying in CCP

* Also mark function parameters as varying
* Conservatively mark assignment instructions as varying if any input is
varying after attempting to fold
* Added a test to catch this case

- - - - -
a7cec784 by David Neto at 2018-03-02T14:01:28-05:00

- - - - -
52bceb35 by Alan Baker at 2018-03-02T14:28:08-05:00
Handles more cases of redundant selects

* Handles OpConstantNull and vector types
 * vector selects (except against a null) are converted to vector
* Added tests

- - - - -
6432a129 by David Neto at 2018-03-02T14:30:49-05:00
Finalize v2018.1

- - - - -
fe219216 by David Neto at 2018-03-02T14:30:49-05:00
Start v2018.2 development

- - - - -
a942ff40 by David Neto at 2018-03-02T15:27:22-05:00
Android.mk: Generate enum mappings from unified1 grammar

Some tokens are only showing up in the unified1 grammar.
So enum string mappings have to be generated from that grammar, not
the grammar from the (deprecated) include/spirv/1.2 grammar.

Example: capabilities FragmentFullyCovered, Float16ImageAMD

- - - - -
6cd6e5eb by Pierre Moreau at 2018-03-02T16:40:52-05:00
Define Disassemble only when Effcee is used in fold_test

- - - - -
9ba50e34 by Steven Perron at 2018-03-05T12:02:50-05:00
Avoid generating duplicate names when merging types

The merging types we do not remove other information related to the
types.  We simply leave it duplicated, and hope it is removed later.
This is what happens with decorations.  They are removed in the next
phase of remove duplicates.  However, for OpNames that is not the case.
We end up with two different names for the same id, which does not make

The solution is to remove the names and decorations for the type being
removed instead of rewriting them to refer to the other type.

Note that it is possible that if the first type does not have a name,
then the types will end up with no name.  That is fine because the names
should not have any semantic significance anyway.

The was identified in issue #1372, but this does not fix that issue.

- - - - -
5f69f751 by David Neto at 2018-03-05T13:34:13-05:00
Support SPV_GOOGLE_decorate_string and SPV_GOOGLE_hlsl_functionality1

This commit add assembling, disassembling, and basic validation for two
Google extensions to better support HLSL translation.

- - - - -
5f50e620 by Alan Baker at 2018-03-06T14:00:02-05:00
Fixes #1376. Don't handle half folding gracefully.

* Added early returns to folding rules to prevent half attempts
* Added some tests

- - - - -
00fa3931 by David Neto at 2018-03-06T15:17:31-05:00
Support SPIR-V 1.3 and Vulkan 1.1

The default target is SPIR-V 1.3.

For example, spirv-as will generate a SPIR-V 1.3 binary by default.
Use command line option "--target-env spv1.0" if you want to make a 
1.0 binary or validate against SPIR-V 1.0 rules.

        # Generate a SPIR-V 1.0 binary instead of SPIR-V 1.3
        spirv-as --target-env spv1.0 a.spvasm -o a.spv
        spirv-as --target-env vulkan1.0 a.spvasm -o a.spv

        # Validate as SPIR-V 1.0.
        spirv-val --target-env spv1.0 a.spv
        # Validate as Vulkan 1.0
        spirv-val --target-env vulkan1.0 a.spv

- - - - -
01f32ee0 by David Neto at 2018-03-06T15:17:31-05:00
Update README for SPIR-V 1.3

- - - - -
03b8a3fe by Andrey Tuganov at 2018-03-07T11:07:58-05:00
AMD_gpu_shader_half_float enables float16

Fixes https://github.com/KhronosGroup/SPIRV-Tools/issues/1375

Hardcoded float16 feature enabling if extension
SPV_AMD_gpu_shader_half_float is present.

- - - - -
bc9cfee6 by Alan Baker at 2018-03-07T16:07:40-05:00
Fixes #1385. Grab correct input to calculate indices.

* Added tests to catch the bug

- - - - -
a0da44ef by David Neto at 2018-03-07T17:10:13-05:00

- - - - -
8d8a7127 by David Neto at 2018-03-07T17:11:50-05:00
Finalize v2018.2

- - - - -

30 changed files:

- .appveyor.yml
- .travis.yml
- Android.mk
- CMakeLists.txt
- + cmake/SPIRV-Tools-shared.pc.in
- cmake/SPIRV-Tools.pc.in
- external/CMakeLists.txt
- include/spirv-tools/libspirv.h
- include/spirv-tools/linker.hpp
- include/spirv-tools/optimizer.hpp
- source/CMakeLists.txt
- source/binary.cpp
- source/enum_string_mapping.cpp
- source/enum_string_mapping.h
- source/ext_inst.cpp
- source/link/linker.cpp
- source/name_mapper.cpp
- source/opcode.cpp
- source/operand.cpp
- source/opt/CMakeLists.txt
- source/opt/basic_block.cpp
- source/opt/basic_block.h
- source/opt/ccp_pass.cpp
- source/opt/cfg.cpp
- source/opt/cfg.h
- + source/opt/const_folding_rules.cpp
- + source/opt/const_folding_rules.h
- source/opt/constants.cpp

The diff was not included because it is too large.

View it on GitLab: 

View it on GitLab: 
You're receiving this email because of your account on salsa.debian.org.

Reply via email to