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

    <tr>
        <th>Summary</th>
        <td>
            Inline ASM not ignored in Insertwait pass
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          Temperature-block
      </td>
    </tr>
</table>

<pre>
    ~$ cat k.c
```
int main(){
int val;
__asm__ volatile ("movl   %%fs:%1, %0"
:"=r" (val)
:"m" (*(int *)100)
);

}
```
~$ clang k.c -c -mno-sse -ftrapping-math
~$ objdump -d k.o

```
k.o:     file format elf64-x86-64


Disassembly of section .text:

0000000000000000 <main>:
   0:   55                      push   %rbp
   1:   48 89 e5 mov    %rsp,%rbp
   4:   64 8b 04 25 64 00 00    mov %fs:0x64,%eax
   b:   00
   c:   9b                      fwait
   d: 89 45 fc                mov    %eax,-0x4(%rbp)
  10:   31 c0 xor    %eax,%eax
  12:   5d                      pop    %rbp
 13:   c3                      ret
```
As we can see thers a fwait inserted even though its not valid insertion. this was causing exception retriggering in a propreitary RTOS
IR:
`  %0 = call i32 asm sideeffect "mov   $1, $0\0Afwait", "=r,*m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) inttoptr (i64 100 to ptr))
`  
  MI
`  INLINEASM &"mov   $1, $0\0Afwait" [sideeffect] [mayload] [attdialect], $0:[regdef:GR32_NOREX2], def renamable $eax, $1:[mem:m], $noreg, 1, $noreg, 100, $noreg, $2:[clobber], implicit-def dead early-clobber $df, $3:[clobber], implicit-def early-clobber $fpsw, $4:[clobber], implicit-def dead early-clobber $eflags, implicit-def $fpcw, implicit-def $mxcsr, !6`
  
 
  looks like inline asm is falsely marked as X87 instruction because of implicit-def's 
  I think inline asm need to be ignored @ https://github.com/llvm/llvm-project/blob/main/llvm/lib/Target/X86/X86InsertWait.cpp#L107
 
  
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycVk2P2rwW_jVmcxTk2E4ICxYMdK6Q-iFNK93uRk5yElycOLINA5v-9ivHGWCmc1W9bxSF-Pg5j893kM6ptkdckeyBZNuZPPq9sasf2A1opT9aTEptqsOsNPVl9ZswAZX0cJhXhG4JXZOcTve4VL2HTqqesIKwJVk83MQnqQmf1s_P0nXPz3AyWnqlEUY868xJAwBhGWFZ4whfE5alhG2CiBLGpjODnBG-tYSxoBqo2fJ-s5t2CFsTVoTjx7dlSukNyZZXg6bnYvuhV9FtLfs2OA5JBUnXm8Q5hKTxVg6D6tukk35_hzflr_rYDZDUcJibN8e8ZQ-7fA3hakIsGmM76QF1k4vkXORJLt5oj8-tctI57Ep9AdOAw8or08Pc49mHENxB6bsLCN-MOeKfrkgAoNGILIMPr-Ho9jE3thyuSmlUEgUUS8AMOnOCCeUGwjbv4CLCcwFFCVQAy8I7peEGGLVfM0_PuYgEKM9XgjISUHqVVFGyLD82u3mRyl_BdQAXSxAZNNV76M32cCLbJPQsxhIaXXitGoB0ihRPoaJwNvaN1luDUzZFtf4_UTUDvI9qyqNOxT_Wseg_rKO1gxeESvbgEMHv0TqQMQCgeofWYw14wh783hzbPSjvoDdjZ6p6gijTz8HvlYMX6aCSR6f6FvBc4TAWmEVvVduiDWLVg4TBmsGi8tJe4OnHt-_RmN3TrQpzOnoYCm8LldQaFGcgXQdO1YhNg1XoTxYTQJiYWl5Qkm3oOqaQsSic-n5D2LojbPObLB5qZRst29C9UdAMzt6ttGzduGSEFYO3gBo77L2_DBimA2eELUH13puwG0S5gJRS8AYGb0Pur0NjdGbK7pfdnXD39fPu66f19y9AWP53b4BkDzf3SbYNgk5etJH1tJLe10rquH0l4WuSPVhsa2wIX__nibPnr9-ePv1kE6jGBiz2spPlOFhFrMtoyajcYUf4uruR9sZiG97TPwRhXr4VESZY5Km0KUu0E4_qBq0q5ZNgQI2yBpRWX5IJFfTqZiLgfyX4Q7cZ3MukLf7l8Rgr4T14JK9ePpJ358rZeGqaXxvtWgCvS23MwYFWBwTVa9XjWNzKQSO1Q32BTtoD1iAd_CwWodO8PcaBXWLoMQwz_P5wwhbuSr8LDdkf7rl7xDpUZ4mg2pCaGoigsPd-iJ_NR8IeW-X3x3JemY6wR61Prz_JYM2vUFXssdSmJOwxfrKvGBVkP6RtMWB-Fnl87sYJ8V-p_LwaBsL455Qu3oViVq94veRLOcNVumAsW2Q0K2b7VZEVkolF2tSIkosGl5kUqZSCI-eSiplaMcoELSijGRXpYs5TwfNsWZZZLrgUJREUO6n0PJg5N7adKeeOuEppmqd8pmWJ2o3_Yxjr8QXG3dD02XZmV6Pj5bF1RFCtnHc3Gq-8xtUuRjc0cBiKr2FVPUS_xzk6SOdmR6tX_zjSozWOsMfJ3NOK_S8AAP__T0ymcw">