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

    <tr>
        <th>Summary</th>
        <td>
            [X86][clang] 128bit floating-point operations in x86 machines
        </td>
    </tr>

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

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

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

<pre>
    testcase:

```
#include <fenv.h>
#include <stdlib.h>
#include <stdio.h>

int main (void)
{
  volatile __float128 a = 0x0.fffp-16382q, b = 0x0.fffp0q, c;
  c = a / b;
  if (fetestexcept (FE_UNDERFLOW | FE_INEXACT))
 printf("Fail1\n");
  if (c != 0x1p-16382q)
 printf("Fail2\n");
  exit (0);
}
```

compile command:
```
% clang test.c -o test -lm -m32
% ./test
Fail1
Fail2
```
compile in x86_64 will return normally, but x86 output Fail.
https://godbolt.org/z/vhdsMhd8d
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx8U02PmzAQ_TXDxQoyw_eBw24IUqV2K1VbdW-RMSa4NTbFJs3211cm2c12lVZCxp43PL95wzBr5UELUUF6D2kdsMUNZq625lHqH2IOWtM9V05Yx5kVEN8BrYG-rBm9POcjxlJztXSCQLzthT6GA8S7W6B1nZLt_2Bp3qLrKrUjI5OaABZHIzvA8gLn9-cNIUejmJNKkP2-V4a5CAvCCMQ1oSca9n0_baIsLvAn4Ja0fwF0jXGIX8n4ijMC2JD2TVz2XkIvvC3ixMXk_LnZ7b8-1LsvzcfP3wjkW9Ls9h8edk9320ev9EUsmWapXQ9YAGLDpIog3WpA9Bnv7-AEMDqLjK7K_8WEN5nESa766Nsw5PXtHq4rN-PkTeRmHJnurm1_3_CUcMX0gXgnQk42Zt2RjRrJZozxmhYCNh46R85lv27xJvuLCKnJqcj2WUJ-SaXILNwya6LNPDKlntc-Ls6nELO4aXHEU4ZnjsG5yXr52AA2B9O1RrnQzAfA5jdgcxw6-2noii7oqrgr45IFoopymuRZkiZxMFRFnnVtHiVlRjkv-64oirJNKOa8pymPokBWSDGhES1plCDGYYQJL8tSpJmgNOpKSKgYvSSljqO_O5DWLqLK84RGgWKtUHadPsTVTN_AtA7myudv2uVgIaFKWmevDE46tY7sU5FBWkN6f_40rUmERSsdWf9-qQ-byfi5MZOYmZNG24ufZGR8kFrYYJlV9c4n6YalDbkZARt_5-W1mWbzXXAH2KwlWMBmreJPAAAA__8awzXQ">