<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">