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

    <tr>
        <th>Summary</th>
        <td>
            [clang] The VecLib bitfield in CodeGenOptions.def is too small for 9 different vector libraries
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          pawosm-arm
      </td>
    </tr>
</table>

<pre>
    The VecLib bitfield is defined in `clang/include/clang/Basic/CodeGenOptions.def` as such:
```
// Vector functions library to use.
ENUM_CODEGENOPT(VecLib, llvm::driver::VectorLibrary, 3, llvm::driver::VectorLibrary::NoLibrary)
```

When this bitfield had been introduced, there were not many of the Vector Libraries to choose. Now we have 9 of them, as defined in `Options.td`:

```
def fveclib : Joined<["-"], "fveclib=">, Group<f_Group>,
  Visibility<[ClangOption, CC1Option, FlangOption, FC1Option]>,
    HelpText<"Use the given vector functions library">,
 Values<"Accelerate,libmvec,MASSV,SVML,SLEEF,Darwin_libsystem_m,ArmPL,AMDLIBM,none">,
 NormalizedValuesScope<"llvm::driver::VectorLibrary">,
 NormalizedValues<["Accelerate", "LIBMVEC", "MASSV", "SVML", "SLEEF",
                      "Darwin_libsystem_m", "ArmPL", "AMDLIBM", "NoLibrary"]>,
 MarshallingInfoEnum<CodeGenOpts<"VecLib">, "NoLibrary">;
```

In effect, they are not encoded correclty resulting in mysterious cases of the lost vectorization opportunity.

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMVdFu4joTfhrnZlQUnJDCRS5oIP37q9CV2uVcVo49IT5ybGQ7cNinPzJJYNvtWS1CSTye-WbmmxmbOSf3GjEnswcyW0Ws842x-YGdjGvvmG2jyohz_tYg7JA_ywoq6WuJSoB0ILCWGgVIDSSLuWJ6T2gpNVedQELLUfLAnOSEloUR-Ij65eCl0W4isCZZDMyB63hDkiWJVyRekiwe_v2SloSWwb03FupO84s1KFlZZs_gDXQOJ73yevt98168rNaP6-3LtzdC533YhBag1LENTpKlsPKItv_ucZ97sKCW_KnuRbQ1V9PF1-Ffnn81qME30t34a5iAClGD1N4a0XEUwbNv0CKcwkMbDy3TZzB1EI8U9A4lupA6b4xxOIGtOcEJoWFHhMVg0AY89rlMI_tehBivpH8Vu8Aa6iNyJSsgyRL-bwIOSYrQLZTeEUrJbBW8EEoHRZKsgjhZB_GjNd2BJEX9PnwFaY8NsJNOVlJJf-4Ri9AtfXTBtiimt0X5ca-87s1WH0EB_ofq8Ib_-ABK6XeHF-728ogajv_RRNeIB5gdUx26HmHJOSq0zCOhhZJVe0ROaLFZvr7uCC1ed5vn8Hper0tCixWzJ6nflazc2Xls30MRlrb9FpSWm9Xz08OG0EIbjZ-dbo1tmZI_UPTuX7k5YB_DH7Xu79GuVfs5HzrULkS1Wxc3wZDduOyTvK76XOkH2n_9EUq_YmNEGUi5LkduRsFPk0U_l3nDrGuYUlLvn3Rt1rprSVLcjpehdOPsj-34GTVZk-ThN1P7pAHrGrkfBvMMbBhL1NwIFMCNtciVP4NF1ykv9T6MWRuytdJ0Djhz6MYJVsb5oQnlDxZaEMzhYKzvtPTn4QyLRJ6IRbJgEebTe5olNMvu51GTp1TcZ1WaxXG6YPHivubTmC3mcVpnmGW8imROY5rGi2k6nU2n0_lknsWiQjrDdJbMq0yQNMaWSTUJDTUxdh9J5zrMp_H8Pk4jxSpULu_7ZDi8A_eRzYPBXdXtHUljJZ13NwgvvbpcIL3FbAVfXhcafj3-wyXijQHXMqWgNhYWIGRdo0U9EjXMqEQXdVbljfcHF_r_ci3spW-6asJNS2h5mZL-dXew5u9L4cpLho7QckjymNN_AwAA__8vICGV">