<div><br></div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Jun 8, 2019 at 12:34 PM Roman Lebedev via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: lebedevri<br>
Date: Sat Jun  8 12:38:14 2019<br>
New Revision: 362886<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=362886&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=362886&view=rev</a><br>
Log:<br>
[X86][Codegen] Add missed pattern that may be a lea+neg<br>
<br>
Added:<br>
    llvm/trunk/test/CodeGen/X86/neg-of-3ops-lea.ll<br>
<br>
Added: llvm/trunk/test/CodeGen/X86/neg-of-3ops-lea.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/neg-of-3ops-lea.ll?rev=362886&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/neg-of-3ops-lea.ll?rev=362886&view=auto</a><br>
==============================================================================<br>
--- llvm/trunk/test/CodeGen/X86/neg-of-3ops-lea.ll (added)<br>
+++ llvm/trunk/test/CodeGen/X86/neg-of-3ops-lea.ll Sat Jun  8 12:38:14 2019<br>
@@ -0,0 +1,86 @@<br>
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py<br>
+; RUN: llc < %s -mtriple=i686--   -mattr=+slow-3ops-lea | FileCheck %s -check-prefixes=CHECK,X86,SLOW,SLOW-X86<br>
+; RUN: llc < %s -mtriple=i686--   -mattr=-slow-3ops-lea | FileCheck %s -check-prefixes=CHECK,X86,FAST,FAST-X86<br>
+; RUN: llc < %s -mtriple=x86_64-- -mattr=+slow-3ops-lea | FileCheck %s -check-prefixes=CHECK,X64,SLOW,SLOW-X64<br>
+; RUN: llc < %s -mtriple=x86_64-- -mattr=-slow-3ops-lea | FileCheck %s -check-prefixes=CHECK,X64,FAST,FAST-X64<br>
+<br>
+; )32-a)-b  -->  32-(a+b)  -->  -(a+b)+32  -->  -((a+b)-32)  ->  -(a+b+(-32))</blockquote><div dir="auto"><br></div><div dir="auto">I think the first paren is backwards.</div><div dir="auto"><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
+<br>
+define i32 @t0(i32 %a, i32 %b) {<br>
+; X86-LABEL: t0:<br>
+; X86:       # %bb.0:<br>
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx<br>
+; X86-NEXT:    addl {{[0-9]+}}(%esp), %ecx<br>
+; X86-NEXT:    movl $32, %eax<br>
+; X86-NEXT:    subl %ecx, %eax<br>
+; X86-NEXT:    retl<br>
+;<br>
+; X64-LABEL: t0:<br>
+; X64:       # %bb.0:<br>
+; X64-NEXT:    addl %esi, %edi<br>
+; X64-NEXT:    movl $32, %eax<br>
+; X64-NEXT:    subl %edi, %eax<br>
+; X64-NEXT:    retq<br>
+  %t0 = sub i32 32, %a<br>
+  %r = sub i32 %t0, %b<br>
+  ret i32 %r<br>
+}<br>
+define i32 @t1(i32 %a, i32 %b) {<br>
+; X86-LABEL: t1:<br>
+; X86:       # %bb.0:<br>
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx<br>
+; X86-NEXT:    addl {{[0-9]+}}(%esp), %ecx<br>
+; X86-NEXT:    movl $32, %eax<br>
+; X86-NEXT:    subl %ecx, %eax<br>
+; X86-NEXT:    retl<br>
+;<br>
+; X64-LABEL: t1:<br>
+; X64:       # %bb.0:<br>
+; X64-NEXT:    addl %esi, %edi<br>
+; X64-NEXT:    movl $32, %eax<br>
+; X64-NEXT:    subl %edi, %eax<br>
+; X64-NEXT:    retq<br>
+  %t0 = add i32 %a, %b<br>
+  %r = sub i32 32, %t0<br>
+  ret i32 %r<br>
+}<br>
+define i32 @t2(i32 %a, i32 %b) {<br>
+; X86-LABEL: t2:<br>
+; X86:       # %bb.0:<br>
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx<br>
+; X86-NEXT:    addl {{[0-9]+}}(%esp), %ecx<br>
+; X86-NEXT:    movl $32, %eax<br>
+; X86-NEXT:    subl %ecx, %eax<br>
+; X86-NEXT:    retl<br>
+;<br>
+; X64-LABEL: t2:<br>
+; X64:       # %bb.0:<br>
+; X64-NEXT:    addl %esi, %edi<br>
+; X64-NEXT:    movl $32, %eax<br>
+; X64-NEXT:    subl %edi, %eax<br>
+; X64-NEXT:    retq<br>
+  %t0 = add i32 %a, %b<br>
+  %t1 = sub i32 0, %t0<br>
+  %r = add i32 %t1, 32<br>
+  ret i32 %r<br>
+}<br>
+define i32 @t3(i32 %a, i32 %b) {<br>
+; X86-LABEL: t3:<br>
+; X86:       # %bb.0:<br>
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx<br>
+; X86-NEXT:    addl {{[0-9]+}}(%esp), %ecx<br>
+; X86-NEXT:    movl $32, %eax<br>
+; X86-NEXT:    subl %ecx, %eax<br>
+; X86-NEXT:    retl<br>
+;<br>
+; X64-LABEL: t3:<br>
+; X64:       # %bb.0:<br>
+; X64-NEXT:    addl %esi, %edi<br>
+; X64-NEXT:    movl $32, %eax<br>
+; X64-NEXT:    subl %edi, %eax<br>
+; X64-NEXT:    retq<br>
+  %t0 = add i32 %a, %b<br>
+  %t1 = sub i32 %t0, 32<br>
+  %r = sub i32 0, %t1<br>
+  ret i32 %r<br>
+}<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">~Craig</div>