<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/138819>138819</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
InstSimplify: incorrect frexp(frexp(x)) -> frexp(x) fold
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
nunoplopes
</td>
</tr>
</table>
<pre>
It's not ok to fold `frexp(frexp(x))` to `frexp(x)`:
```llvm
; Transforms/InstSimplify/frexp.ll
define {float, i32} @frexp_frexp(float %x) {
%frexp0 = frexp float %x
%frexp0.0 = extractvalue {float, i32} %frexp0, 0
%frexp1 = frexp float %frexp0.0
ret {float, i32} %frexp1
}
=>
define {float, i32} @frexp_frexp(float %x) {
%frexp0 = frexp float %x
ret {float, i32} %frexp0
}
Transformation doesn't verify!
ERROR: Value mismatch
Example:
float %x = #x0000000a (0.000000000000?)
Source:
{float, i32} %frexp0 = { #x3f200000 (0.625), #xffffff6f (4294967151, -145) }
float %frexp0.0 = #x3f200000 (0.625)
{float, i32} %frexp1 = { #x3f200000 (0.625), #x00000000 (0) }
Target:
{float, i32} %frexp0 = { #x3f200000 (0.625), #xffffff6f (4294967151, -145) }
Source value: { #x3f200000 (0.625), #x00000000 (0) }
Target value: { #x3f200000 (0.625), #xffffff6f (4294967151, -145) }
```
cc @arsenm
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzEVFFvmzwU_TWXFyuRuQYcHnhImkbq0ye1n_Y6GTAJm8HINln67yfbTZpIbddp0mZZAnyPj4_vvRxhbb8fpawg30C-TcTsDtpU4zzqSelJ2qTW7XP14AC5JaN2RH8nTpNOq5ZAQTsjTxPg6vw8AZZ-FtSjrgCnuApsDTTMgsap1HHw32xD_jditJ02gwXcPYzWPfXDpPruGXAXeJZKxd2t7PpREuCbTmnhAO9IzxD4lkAWj_x6UeYBBDD3CvwOoGvivwOAEmBbEl7JFfIGsowgeXJGNO4o1Pz2yWe8X6M3FOlbp5zJPdJI9xFl6m_NtyFNW2D3fykDv1BFL6ouhROu1yNptbQjIHfkKE0oXxrLdv_4-N8jsDX5EpI49HYQrjm8BE9imJSMHfKqJMgDZCcahyCAK7qkVwPYzndXYHnSs2leSD7SHmn5JlCzDgNRpC4wD118F2JdGEXnYxmWWVnwNE99dJFmeczo9lrxTdO8y_6huvTT6s4pCLFXMb4mwuyl-weJiBUg4T_xtf6Da8Q7_B7VZ2VeDCimq2n8jyOMleOQtBVrS1aKRFYpz4qC5og0OVRlXog2KzLJUkpzKXnD2rrGnPGcS5alSV8hxZzmlNMV5ZQumxWveSYaWtRtQbMSMioH0ault72lNvukt3aWVcpWq7RMlKilssGMEUf5g4QoIHpvNpXftKjnvYWMqt46-0rjeqdkdWOabE36sdHGyMaRd4yaLIDdk-vFYO3JbFR1cG6yvoFwB7jb9-4w18tGD4C7YNrxsZiM_iYbB7gLYr13v9zmWOHPAAAA__9sScHl">