[clang] [llvm] [RegisterCoalescer] Improve register allocation for return values by limiting rematerialization (PR #163047)

guan jian via cfe-commits cfe-commits at lists.llvm.org
Wed Oct 15 18:36:37 PDT 2025


================
@@ -202,13 +202,13 @@ define { <4 x i8>, <4 x i1> } @always_usub_const_vector() nounwind {
 ; SSE-LABEL: always_usub_const_vector:
 ; SSE:       # %bb.0:
 ; SSE-NEXT:    pcmpeqd %xmm0, %xmm0
-; SSE-NEXT:    pcmpeqd %xmm1, %xmm1
+; SSE-NEXT:    movdqa %xmm0, %xmm1
----------------
rez5427 wrote:

It will be something like: 
```
pcmpeqd %xmm0, %xmm0
%xmm1 = copy %xmm0
```
In the original registercoalescer it would trigger rematerialize,so it became
```
pcmpeqd %xmm0, %xmm0
pcmpeqd %xmm1, %xmm1
```
This patch avoid the rematerialize, so it would still be like `%xmm1 = copy %xmm0`.

https://github.com/llvm/llvm-project/pull/163047


More information about the cfe-commits mailing list