ES31: Fix some bugs in ShaderStorageBlockOutputHLSL

When EOpIndexDirect/EOpIndexIndirect/EOpIndexDirectStruct/TIntermSwizzle
appear in [] in ssbo access chain, we should transfer the process of them to
OutputHLSL.

For example:
    instance.v[gl_GlobalInvocationID.x] = data;
    // becomes
    float_Store(dx_instance, 0 + 16 * gl_GlobalInvocationID.x, _data);

    instance.v[s.index[0].x] = data;
    // becomes
    float_Store(dx_instance, 0 + 16 * _s.index[0].x, _data);

Bug: angleproject:1951
Change-Id: I333e238400a10a799a6294f8759cf9c4ef2451c8
Reviewed-on: https://chromium-review.googlesource.com/c/1250661
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
diff --git a/src/compiler/translator/util.cpp b/src/compiler/translator/util.cpp
index 37bf48e..72ac655 100644
--- a/src/compiler/translator/util.cpp
+++ b/src/compiler/translator/util.cpp
@@ -762,6 +762,11 @@
         {
             return IsInShaderStorageBlock(binaryNode->getLeft());
         }
+        TIntermSymbol *symbolNode = swizzleNode->getOperand()->getAsSymbolNode();
+        if (symbolNode)
+        {
+            return symbolNode->getQualifier() == EvqBuffer;
+        }
     }
     binaryNode = node->getAsBinaryNode();