<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/97326>97326</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [SPIR-V] Refactor SPIRVModuleAnalysis ideas
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:SPIR-V
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          michalpaszkowski
      </td>
    </tr>
</table>

<pre>
    Before the new SPIRVModuleAnalysis:
ModuleAnalysisInfo collects information (from all passes) on required extensions, capabilities, and decorations (so they are not emitted).

New SPIRVModuleAnalysis (uses global ModuleAnalysisInfo)
    - Collects requirements for existing instructions
    - Collect global type/const/global var/func declaration instructions, number their destination registers
    - Adds missing decorations (those which could not be deduced at individual instruction level)
    - Number instructions
    - Collect "other" global instructions
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyEk0Fv2zAMhX-NfCESOHQS2wcf0hYBelgxdEDvskTHXGUpE-W02a8f7KRY2xXYxYYJ8_F7D6QW4YMnatTmRm3uMj2mPsRmYNNrd9Ty-zm8yDNnbbDn5oa6EAlST-DpBX58v398-hbs6GjntTsLiyp2Kr9T-e5j-d53AUxwjkwSYN-FOOjEwYPCqothAO0cHLUIicIagodIv0aOZIFeE3nh4EXhLRh91C07Tkzzt_YWLJkQZzmZ9CRMhGfQkcCHBDRwSmQV1ssL2-X58LWDSWEUEji40GoH_xpRWF8UAAAWcPtm60o8kE8CXYhAryyJ_QHYS4qjmQm_aH0blc5HUrg3wUtSuL9WTzoq3HejN5NRpy9OP2riLfhxaClOzjmCpWnw5cdIB5ZE8cPknbUCA4tMeJ_yS30QgpeeTQ8mjM7OKbYEluxoyIJOwN7yie2o3XsQcHQi9ymfhwvY_zJQiCH1FBXiWx7vWzLbFLYuap1RsypXdbXZ5NU665u27Oq87FY5bstuvc232HZVZ6oKy5osUsYN5rjOy3y1KosVrpcrs61aLMqtrQpTlKTWOQ2a3dK507AM8ZCxyEhNXRa4zZxuycl8HoitNs_krSp20-YsnhTidDSxmVoX7XgQtc4dS5K_YomTm8_r2rK5g0fqtEkhfrl_bElLNkbX9Ckd54vC_bQOnPqxXZowKNxP6tfX4hjDTzLTxszconB_QT81-CcAAP__0T5Mmw">