[llvm] [X86] Transform `(xor x, SIGN_BIT)` -> `(add x, SIGN_BIT)` 32 bit and smaller scalars (PR #83659)
via llvm-commits
llvm-commits at lists.llvm.org
Sat Mar 2 10:35:46 PST 2024
================
@@ -205,15 +205,15 @@ define i8 @sub_xor_sminval_i8(i8 %x, i8 %y) {
; X86-LABEL: sub_xor_sminval_i8:
; X86: # %bb.0:
; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax
-; X86-NEXT: addb $-128, %al
; X86-NEXT: subb {{[0-9]+}}(%esp), %al
+; X86-NEXT: addb $-128, %al
; X86-NEXT: retl
;
; X64-LABEL: sub_xor_sminval_i8:
; X64: # %bb.0:
; X64-NEXT: # kill: def $edi killed $edi def $rdi
+; X64-NEXT: subb %sil, %dil
----------------
goldsteinn wrote:
Both new/old have same low 8-bits and may have different set high 24 bits. Different from eachother and different than if we had stuck with `xor`.
https://github.com/llvm/llvm-project/pull/83659
More information about the llvm-commits
mailing list