<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/146475>146475</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[X86][GlobalIsel] Missed optimization for memory access
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
mahesh-attarde
</td>
</tr>
</table>
<pre>
Hi
I have small case that produces suboptimal code. In GISEL we dont do memory access contraction as follows.
```
define void @test_float_abs(ptr %argptr) {
%arg = load float, float* %argptr
%abs = tail call float @llvm.fabs.f32(float %arg)
store float %abs, ptr %argptr
ret void
}
```
SDAG
```
*** IR Dump After Module Verifier (verify) ***
define void @test_float_abs(ptr %argptr) {
%arg = load float, ptr %argptr, align 4
%abs = tail call float @llvm.fabs.f32(float %arg)
store float %abs, ptr %argptr, align 4
ret void
}
# *** IR Dump After X86 DAG->DAG Instruction Selection (x86-isel) ***:
%0:gr64 = COPY $rdi
AND8mi %0:gr64, 1, $noreg, 3, $noreg, 127, implicit-def dead $eflags :: (store (s8) into %ir.argptr + 3), (load (s8) from %ir.argptr + 3)
RET 0
# FINAL
test_float_abs: # @test_float_abs
and byte ptr [rdi + 3], 127
ret
```
GISEL
```
test_float_abs: # @test_float_abs
and dword ptr [rdi], 2147483647
ret
```
Please note dword and byte ptr reads on AND.
https://godbolt.org/z/bfoM3qE31
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJysVV-P4yYQ_zTkZRQL4z9xHvxA1ps00u31dFtV16cTNuOECpsUcLZ7n77CdnLZXFeq2iIUE5g_v_kxwwjn1KFHLEm2IVm1EIM_Glt24ojuuBTeCytxURv5Wv6kCOV7OIozguuE1tAIh-CPwsPJGjk06MANtTl51QkNjZEYwb6H3f758QPAC4I0vQdpoMPO2FcQTYPOQWN6b0XjlelBOGiN1ubFRYTyMHM6T8oltqpHOBslgaTUo_NfW22E_ypqR1hx8hYIy4Q9nLwlbA0AZLUhlEMY0wmQpAJthAQYVQl7uCz4jfKNTu1GHS9UiFjrSTwA0PrcRa2oXdQmjLBiPhiNELa-GHHeWITvhwHrA7wFO4ta9GN44T9ZVXfxE8qfK76732XzhP1nqIbuBLz1aOHJyEEj_IpWtQqDs-Ic1q-BmavSv6H1Quo9o1dC7zQeQGh16CG9av03Tv8JoXdOb4ideWUJvMfclyKHiu-WJHms-A72vfN2mPLzGTVOK8KKP4t8qRzqt4Qm_BImJQk_2DwdY334-dNvQFhqpRrP-ceq6NStWMAchx_C0t5YPIR1cr8Rs1X4qO6kVaP8UmILEoUMQthqcQjUBhQB4cRUWBQBpOq9CR6VjSaagLBNcLGevBTjNV7FW2u6d8RDBJ8ffwE6U7ndf-QfphS9y59kyuy_G-Md_JBwlIPo5ShQv3qc7jXbWKlm91l14YHycLE_PhSE8vHRudv-H5DN4wJQvhgrbxDO2FicrtIiydNbiG_xfdIYXs_eeJytBJvXgC0K6cD0IU0iIJQfvT8FyIRtCdsejKyN9pEJRbH9Rti2bs1T8sdjEi9kmch1shYLLONVFicZLbJ4cSwZo20mE9oUyApM8gYLxJiu2yJOktW6WaiSUZbRFY1pzmgWRy1FWjcrbNdxHqfrhqQUO6F0NBapsYeFcm7AMk7zdJUttKhRu7GTMNbjC4ynhLHQWGwZlJb1cHChypXz7rsZr7weW9CXIg8UZpudNrXQ-1BcWQVPyjmUMHYW9U2M9dca-7aPLAaryzualD8OddSYjrBt8DZ_lidrfsfGE7YdMTrCtnMQ55L9FQAA__-J6hC2">