[llvm] r316912 - [X86] Remove AVX512 early out from X86FastISel::X86SelectCmp.
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 30 07:50:11 PDT 2017
Author: ctopper
Date: Mon Oct 30 07:50:11 2017
New Revision: 316912
URL: http://llvm.org/viewvc/llvm-project?rev=316912&view=rev
Log:
[X86] Remove AVX512 early out from X86FastISel::X86SelectCmp.
This shouldn't be needed anymore since i1 isn't a legal type.
Modified:
llvm/trunk/lib/Target/X86/X86FastISel.cpp
llvm/trunk/test/CodeGen/X86/avx512-fsel.ll
llvm/trunk/test/CodeGen/X86/pr27591.ll
llvm/trunk/test/CodeGen/X86/pr32241.ll
llvm/trunk/test/CodeGen/X86/pr32284.ll
Modified: llvm/trunk/lib/Target/X86/X86FastISel.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86FastISel.cpp?rev=316912&r1=316911&r2=316912&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86FastISel.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86FastISel.cpp Mon Oct 30 07:50:11 2017
@@ -1428,9 +1428,6 @@ bool X86FastISel::X86SelectCmp(const Ins
if (!isTypeLegal(I->getOperand(0)->getType(), VT))
return false;
- if (I->getType()->isIntegerTy(1) && Subtarget->hasAVX512())
- return false;
-
// Try to optimize or fold the cmp.
CmpInst::Predicate Predicate = optimizeCmpPredicate(CI);
unsigned ResultReg = 0;
Modified: llvm/trunk/test/CodeGen/X86/avx512-fsel.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/avx512-fsel.ll?rev=316912&r1=316911&r2=316912&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/avx512-fsel.ll (original)
+++ llvm/trunk/test/CodeGen/X86/avx512-fsel.ll Mon Oct 30 07:50:11 2017
@@ -9,11 +9,12 @@ define i32 @test(float %a, float %b) {
; CHECK: ## BB#0:
; CHECK-NEXT: pushq %rax
; CHECK-NEXT: .cfi_def_cfa_offset 16
-; CHECK-NEXT: vcmpeqss %xmm1, %xmm0, %k0
-; CHECK-NEXT: kmovw %k0, %eax
-; CHECK-NEXT: movb %al, %cl
-; CHECK-NEXT: xorb $-1, %cl
-; CHECK-NEXT: testb $1, %cl
+; CHECK-NEXT: vucomiss %xmm1, %xmm0
+; CHECK-NEXT: sete %al
+; CHECK-NEXT: setnp %cl
+; CHECK-NEXT: andb %cl, %al
+; CHECK-NEXT: xorb $-1, %al
+; CHECK-NEXT: testb $1, %al
; CHECK-NEXT: jne LBB0_1
; CHECK-NEXT: jmp LBB0_2
; CHECK-NEXT: LBB0_1: ## %L_0
Modified: llvm/trunk/test/CodeGen/X86/pr27591.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/pr27591.ll?rev=316912&r1=316911&r2=316912&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/pr27591.ll (original)
+++ llvm/trunk/test/CodeGen/X86/pr27591.ll Mon Oct 30 07:50:11 2017
@@ -7,7 +7,7 @@ define void @test1(i32 %x) #0 {
; CHECK-LABEL: test1:
; CHECK: # BB#0: # %entry
; CHECK-NEXT: pushq %rax
-; CHECK-NEXT: testl %edi, %edi
+; CHECK-NEXT: cmpl $0, %edi
; CHECK-NEXT: setne %al
; CHECK-NEXT: andb $1, %al
; CHECK-NEXT: movzbl %al, %edi
@@ -24,7 +24,7 @@ define void @test2(i32 %x) #0 {
; CHECK-LABEL: test2:
; CHECK: # BB#0: # %entry
; CHECK-NEXT: pushq %rax
-; CHECK-NEXT: testl %edi, %edi
+; CHECK-NEXT: cmpl $0, %edi
; CHECK-NEXT: setne %al
; CHECK-NEXT: movzbl %al, %edi
; CHECK-NEXT: andl $1, %edi
Modified: llvm/trunk/test/CodeGen/X86/pr32241.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/pr32241.ll?rev=316912&r1=316911&r2=316912&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/pr32241.ll (original)
+++ llvm/trunk/test/CodeGen/X86/pr32241.ll Mon Oct 30 07:50:11 2017
@@ -6,8 +6,8 @@ define i32 @_Z3foov() {
; CHECK: # BB#0: # %entry
; CHECK-NEXT: pushl %esi
; CHECK-NEXT: .cfi_def_cfa_offset 8
-; CHECK-NEXT: subl $24, %esp
-; CHECK-NEXT: .cfi_def_cfa_offset 32
+; CHECK-NEXT: subl $16, %esp
+; CHECK-NEXT: .cfi_def_cfa_offset 24
; CHECK-NEXT: .cfi_offset %esi, -8
; CHECK-NEXT: movb $1, %al
; CHECK-NEXT: movw $10959, {{[0-9]+}}(%esp) # imm = 0x2ACF
@@ -29,13 +29,12 @@ define i32 @_Z3foov() {
; CHECK-NEXT: andb $1, %al
; CHECK-NEXT: movzbl %al, %edx
; CHECK-NEXT: movl {{[0-9]+}}(%esp), %esi # 4-byte Reload
-; CHECK-NEXT: subl %edx, %esi
+; CHECK-NEXT: cmpl %edx, %esi
; CHECK-NEXT: setl %al
; CHECK-NEXT: andb $1, %al
; CHECK-NEXT: movzbl %al, %edx
; CHECK-NEXT: xorl $-1, %edx
; CHECK-NEXT: cmpl $0, %edx
-; CHECK-NEXT: movl %esi, {{[0-9]+}}(%esp) # 4-byte Spill
; CHECK-NEXT: movb %cl, {{[0-9]+}}(%esp) # 1-byte Spill
; CHECK-NEXT: jne .LBB0_4
; CHECK-NEXT: # BB#3: # %lor.rhs4
@@ -50,7 +49,7 @@ define i32 @_Z3foov() {
; CHECK-NEXT: movw %cx, %dx
; CHECK-NEXT: movw %dx, {{[0-9]+}}(%esp)
; CHECK-NEXT: movzwl {{[0-9]+}}(%esp), %eax
-; CHECK-NEXT: addl $24, %esp
+; CHECK-NEXT: addl $16, %esp
; CHECK-NEXT: popl %esi
; CHECK-NEXT: retl
entry:
Modified: llvm/trunk/test/CodeGen/X86/pr32284.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/pr32284.ll?rev=316912&r1=316911&r2=316912&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/pr32284.ll (original)
+++ llvm/trunk/test/CodeGen/X86/pr32284.ll Mon Oct 30 07:50:11 2017
@@ -9,19 +9,30 @@
define void @foo() {
; X86-O0-LABEL: foo:
; X86-O0: # BB#0: # %entry
-; X86-O0-NEXT: movb {{.*}}(%rip), %al
-; X86-O0-NEXT: testb %al, %al
-; X86-O0-NEXT: setne -{{[0-9]+}}(%rsp)
-; X86-O0-NEXT: movzbl {{.*}}(%rip), %ecx
-; X86-O0-NEXT: testl %ecx, %ecx
-; X86-O0-NEXT: setne %al
-; X86-O0-NEXT: movzbl %al, %edx
-; X86-O0-NEXT: subl %ecx, %edx
-; X86-O0-NEXT: setle %al
-; X86-O0-NEXT: andb $1, %al
-; X86-O0-NEXT: movzbl %al, %ecx
-; X86-O0-NEXT: movl %ecx, -{{[0-9]+}}(%rsp)
-; X86-O0-NEXT: movl %edx, -{{[0-9]+}}(%rsp) # 4-byte Spill
+; X86-O0-NEXT: xorl %eax, %eax
+; X86-O0-NEXT: movl %eax, %ecx
+; X86-O0-NEXT: xorl %eax, %eax
+; X86-O0-NEXT: movzbl c, %edx
+; X86-O0-NEXT: subl %edx, %eax
+; X86-O0-NEXT: movslq %eax, %rsi
+; X86-O0-NEXT: subq %rsi, %rcx
+; X86-O0-NEXT: movb %cl, %dil
+; X86-O0-NEXT: cmpb $0, %dil
+; X86-O0-NEXT: setne %dil
+; X86-O0-NEXT: andb $1, %dil
+; X86-O0-NEXT: movb %dil, -{{[0-9]+}}(%rsp)
+; X86-O0-NEXT: cmpb $0, c
+; X86-O0-NEXT: setne %dil
+; X86-O0-NEXT: xorb $-1, %dil
+; X86-O0-NEXT: xorb $-1, %dil
+; X86-O0-NEXT: andb $1, %dil
+; X86-O0-NEXT: movzbl %dil, %eax
+; X86-O0-NEXT: movzbl c, %edx
+; X86-O0-NEXT: cmpl %edx, %eax
+; X86-O0-NEXT: setle %dil
+; X86-O0-NEXT: andb $1, %dil
+; X86-O0-NEXT: movzbl %dil, %eax
+; X86-O0-NEXT: movl %eax, -{{[0-9]+}}(%rsp)
; X86-O0-NEXT: retq
;
; X64-LABEL: foo:
@@ -40,22 +51,26 @@ define void @foo() {
;
; 686-O0-LABEL: foo:
; 686-O0: # BB#0: # %entry
-; 686-O0-NEXT: subl $12, %esp
-; 686-O0-NEXT: .cfi_def_cfa_offset 16
+; 686-O0-NEXT: subl $8, %esp
+; 686-O0-NEXT: .cfi_def_cfa_offset 12
; 686-O0-NEXT: movb c, %al
-; 686-O0-NEXT: testb %al, %al
-; 686-O0-NEXT: setne {{[0-9]+}}(%esp)
-; 686-O0-NEXT: movzbl c, %ecx
-; 686-O0-NEXT: testl %ecx, %ecx
+; 686-O0-NEXT: cmpb $0, %al
; 686-O0-NEXT: setne %al
-; 686-O0-NEXT: movzbl %al, %edx
-; 686-O0-NEXT: subl %ecx, %edx
+; 686-O0-NEXT: andb $1, %al
+; 686-O0-NEXT: movb %al, {{[0-9]+}}(%esp)
+; 686-O0-NEXT: cmpb $0, c
+; 686-O0-NEXT: setne %al
+; 686-O0-NEXT: xorb $-1, %al
+; 686-O0-NEXT: xorb $-1, %al
+; 686-O0-NEXT: andb $1, %al
+; 686-O0-NEXT: movzbl %al, %ecx
+; 686-O0-NEXT: movzbl c, %edx
+; 686-O0-NEXT: cmpl %edx, %ecx
; 686-O0-NEXT: setle %al
; 686-O0-NEXT: andb $1, %al
; 686-O0-NEXT: movzbl %al, %ecx
-; 686-O0-NEXT: movl %ecx, {{[0-9]+}}(%esp)
-; 686-O0-NEXT: movl %edx, (%esp) # 4-byte Spill
-; 686-O0-NEXT: addl $12, %esp
+; 686-O0-NEXT: movl %ecx, (%esp)
+; 686-O0-NEXT: addl $8, %esp
; 686-O0-NEXT: retl
;
; 686-LABEL: foo:
@@ -106,34 +121,38 @@ entry:
define void @f1() {
; X86-O0-LABEL: f1:
; X86-O0: # BB#0: # %entry
-; X86-O0-NEXT: movslq {{.*}}(%rip), %rax
-; X86-O0-NEXT: movq %rax, %rcx
-; X86-O0-NEXT: subq $-1, %rcx
+; X86-O0-NEXT: movabsq $8381627093, %rax # imm = 0x1F3957AD5
+; X86-O0-NEXT: movslq var_5, %rcx
+; X86-O0-NEXT: addq %rax, %rcx
+; X86-O0-NEXT: cmpq $0, %rcx
+; X86-O0-NEXT: setne %dl
+; X86-O0-NEXT: andb $1, %dl
+; X86-O0-NEXT: movb %dl, -{{[0-9]+}}(%rsp)
+; X86-O0-NEXT: movl var_5, %esi
+; X86-O0-NEXT: xorl $-1, %esi
+; X86-O0-NEXT: cmpl $0, %esi
+; X86-O0-NEXT: setne %dl
+; X86-O0-NEXT: xorb $-1, %dl
+; X86-O0-NEXT: andb $1, %dl
+; X86-O0-NEXT: movzbl %dl, %esi
+; X86-O0-NEXT: movl %esi, %eax
+; X86-O0-NEXT: movslq var_5, %rcx
+; X86-O0-NEXT: addq $7093, %rcx # imm = 0x1BB5
+; X86-O0-NEXT: cmpq %rcx, %rax
+; X86-O0-NEXT: setg %dl
+; X86-O0-NEXT: andb $1, %dl
+; X86-O0-NEXT: movzbl %dl, %esi
+; X86-O0-NEXT: movl %esi, %eax
+; X86-O0-NEXT: movq %rax, var_57
+; X86-O0-NEXT: movl var_5, %esi
+; X86-O0-NEXT: xorl $-1, %esi
+; X86-O0-NEXT: cmpl $0, %esi
; X86-O0-NEXT: setne %dl
-; X86-O0-NEXT: movabsq $-8381627093, %rsi # imm = 0xFFFFFFFE0C6A852B
-; X86-O0-NEXT: movq %rax, %rdi
-; X86-O0-NEXT: subq %rsi, %rdi
-; X86-O0-NEXT: setne -{{[0-9]+}}(%rsp)
-; X86-O0-NEXT: movl %eax, %r8d
-; X86-O0-NEXT: subl $-1, %r8d
-; X86-O0-NEXT: sete %r9b
-; X86-O0-NEXT: movzbl %r9b, %r10d
-; X86-O0-NEXT: movl %r10d, %esi
-; X86-O0-NEXT: addq $7093, %rax # imm = 0x1BB5
-; X86-O0-NEXT: subq %rax, %rsi
-; X86-O0-NEXT: setg %r9b
-; X86-O0-NEXT: movzbl %r9b, %r10d
-; X86-O0-NEXT: movl %r10d, %eax
-; X86-O0-NEXT: movq %rax, {{.*}}(%rip)
; X86-O0-NEXT: xorb $-1, %dl
; X86-O0-NEXT: andb $1, %dl
-; X86-O0-NEXT: movzbl %dl, %r10d
-; X86-O0-NEXT: movl %r10d, %eax
+; X86-O0-NEXT: movzbl %dl, %esi
+; X86-O0-NEXT: movl %esi, %eax
; X86-O0-NEXT: movq %rax, _ZN8struct_210member_2_0E
-; X86-O0-NEXT: movq %rsi, -{{[0-9]+}}(%rsp) # 8-byte Spill
-; X86-O0-NEXT: movq %rcx, -{{[0-9]+}}(%rsp) # 8-byte Spill
-; X86-O0-NEXT: movl %r8d, -{{[0-9]+}}(%rsp) # 4-byte Spill
-; X86-O0-NEXT: movq %rdi, -{{[0-9]+}}(%rsp) # 8-byte Spill
; X86-O0-NEXT: retq
;
; X64-LABEL: f1:
@@ -296,25 +315,29 @@ define void @f2() {
; X86-O0-LABEL: f2:
; X86-O0: # BB#0: # %entry
; X86-O0-NEXT: # implicit-def: %RAX
-; X86-O0-NEXT: movzbl {{.*}}(%rip), %ecx
-; X86-O0-NEXT: testl %ecx, %ecx
-; X86-O0-NEXT: sete %dl
-; X86-O0-NEXT: movzbl %dl, %esi
-; X86-O0-NEXT: movl %ecx, %edi
-; X86-O0-NEXT: xorl %esi, %edi
-; X86-O0-NEXT: movw %di, %r8w
-; X86-O0-NEXT: movw %r8w, -{{[0-9]+}}(%rsp)
-; X86-O0-NEXT: movb %cl, %dl
-; X86-O0-NEXT: testb %dl, %dl
-; X86-O0-NEXT: sete %dl
+; X86-O0-NEXT: movzbl var_7, %ecx
+; X86-O0-NEXT: cmpb $0, var_7
+; X86-O0-NEXT: setne %dl
+; X86-O0-NEXT: xorb $-1, %dl
+; X86-O0-NEXT: andb $1, %dl
; X86-O0-NEXT: movzbl %dl, %esi
-; X86-O0-NEXT: subl %ecx, %esi
+; X86-O0-NEXT: xorl %esi, %ecx
+; X86-O0-NEXT: movw %cx, %di
+; X86-O0-NEXT: movw %di, -{{[0-9]+}}(%rsp)
+; X86-O0-NEXT: movzbl var_7, %ecx
+; X86-O0-NEXT: movw %cx, %di
+; X86-O0-NEXT: cmpw $0, %di
+; X86-O0-NEXT: setne %dl
+; X86-O0-NEXT: xorb $-1, %dl
+; X86-O0-NEXT: andb $1, %dl
+; X86-O0-NEXT: movzbl %dl, %ecx
+; X86-O0-NEXT: movzbl var_7, %esi
+; X86-O0-NEXT: cmpl %esi, %ecx
; X86-O0-NEXT: sete %dl
; X86-O0-NEXT: andb $1, %dl
; X86-O0-NEXT: movzbl %dl, %ecx
-; X86-O0-NEXT: movw %cx, %r8w
-; X86-O0-NEXT: movw %r8w, (%rax)
-; X86-O0-NEXT: movl %esi, -{{[0-9]+}}(%rsp) # 4-byte Spill
+; X86-O0-NEXT: movw %cx, %di
+; X86-O0-NEXT: movw %di, (%rax)
; X86-O0-NEXT: retq
;
; X64-LABEL: f2:
@@ -336,42 +359,41 @@ define void @f2() {
;
; 686-O0-LABEL: f2:
; 686-O0: # BB#0: # %entry
-; 686-O0-NEXT: pushl %ebx
-; 686-O0-NEXT: .cfi_def_cfa_offset 8
; 686-O0-NEXT: pushl %edi
-; 686-O0-NEXT: .cfi_def_cfa_offset 12
+; 686-O0-NEXT: .cfi_def_cfa_offset 8
; 686-O0-NEXT: pushl %esi
-; 686-O0-NEXT: .cfi_def_cfa_offset 16
-; 686-O0-NEXT: subl $8, %esp
-; 686-O0-NEXT: .cfi_def_cfa_offset 24
-; 686-O0-NEXT: .cfi_offset %esi, -16
-; 686-O0-NEXT: .cfi_offset %edi, -12
-; 686-O0-NEXT: .cfi_offset %ebx, -8
+; 686-O0-NEXT: .cfi_def_cfa_offset 12
+; 686-O0-NEXT: subl $2, %esp
+; 686-O0-NEXT: .cfi_def_cfa_offset 14
+; 686-O0-NEXT: .cfi_offset %esi, -12
+; 686-O0-NEXT: .cfi_offset %edi, -8
; 686-O0-NEXT: # implicit-def: %EAX
; 686-O0-NEXT: movzbl var_7, %ecx
-; 686-O0-NEXT: testl %ecx, %ecx
-; 686-O0-NEXT: sete %dl
-; 686-O0-NEXT: movzbl %dl, %esi
-; 686-O0-NEXT: movl %ecx, %edi
-; 686-O0-NEXT: xorl %esi, %edi
-; 686-O0-NEXT: movw %di, %bx
-; 686-O0-NEXT: movw %bx, {{[0-9]+}}(%esp)
-; 686-O0-NEXT: movl %ecx, %edx
-; 686-O0-NEXT: # kill: %DL<def> %DL<kill> %EDX<kill>
-; 686-O0-NEXT: testb %dl, %dl
-; 686-O0-NEXT: sete %dl
+; 686-O0-NEXT: cmpb $0, var_7
+; 686-O0-NEXT: setne %dl
+; 686-O0-NEXT: xorb $-1, %dl
+; 686-O0-NEXT: andb $1, %dl
; 686-O0-NEXT: movzbl %dl, %esi
-; 686-O0-NEXT: subl %ecx, %esi
+; 686-O0-NEXT: xorl %esi, %ecx
+; 686-O0-NEXT: movw %cx, %di
+; 686-O0-NEXT: movw %di, (%esp)
+; 686-O0-NEXT: movzbl var_7, %ecx
+; 686-O0-NEXT: movw %cx, %di
+; 686-O0-NEXT: cmpw $0, %di
+; 686-O0-NEXT: setne %dl
+; 686-O0-NEXT: xorb $-1, %dl
+; 686-O0-NEXT: andb $1, %dl
+; 686-O0-NEXT: movzbl %dl, %ecx
+; 686-O0-NEXT: movzbl var_7, %esi
+; 686-O0-NEXT: cmpl %esi, %ecx
; 686-O0-NEXT: sete %dl
; 686-O0-NEXT: andb $1, %dl
; 686-O0-NEXT: movzbl %dl, %ecx
-; 686-O0-NEXT: movw %cx, %bx
-; 686-O0-NEXT: movw %bx, (%eax)
-; 686-O0-NEXT: movl %esi, (%esp) # 4-byte Spill
-; 686-O0-NEXT: addl $8, %esp
+; 686-O0-NEXT: movw %cx, %di
+; 686-O0-NEXT: movw %di, (%eax)
+; 686-O0-NEXT: addl $2, %esp
; 686-O0-NEXT: popl %esi
; 686-O0-NEXT: popl %edi
-; 686-O0-NEXT: popl %ebx
; 686-O0-NEXT: retl
;
; 686-LABEL: f2:
@@ -426,34 +448,37 @@ entry:
define void @f3() #0 {
; X86-O0-LABEL: f3:
; X86-O0: # BB#0: # %entry
-; X86-O0-NEXT: movl {{.*}}(%rip), %eax
+; X86-O0-NEXT: movl var_13, %eax
+; X86-O0-NEXT: xorl $-1, %eax
+; X86-O0-NEXT: movl %eax, %eax
; X86-O0-NEXT: movl %eax, %ecx
-; X86-O0-NEXT: movl $4294967295, %eax # imm = 0xFFFFFFFF
-; X86-O0-NEXT: movl %eax, %edx
-; X86-O0-NEXT: movq %rcx, %rsi
-; X86-O0-NEXT: xorq %rdx, %rsi
-; X86-O0-NEXT: movl %esi, %eax
-; X86-O0-NEXT: testq %rcx, %rcx
-; X86-O0-NEXT: sete %dil
-; X86-O0-NEXT: movzbl %dil, %r8d
-; X86-O0-NEXT: movl %r8d, %edx
-; X86-O0-NEXT: movl {{.*}}(%rip), %r8d
-; X86-O0-NEXT: xorl %r8d, %eax
-; X86-O0-NEXT: movl %eax, %r9d
-; X86-O0-NEXT: andq %r9, %rdx
-; X86-O0-NEXT: movq %rsi, %r9
-; X86-O0-NEXT: orq %rdx, %r9
-; X86-O0-NEXT: movq %r9, -{{[0-9]+}}(%rsp)
-; X86-O0-NEXT: movl %ecx, %eax
-; X86-O0-NEXT: testl %eax, %eax
-; X86-O0-NEXT: setne %dil
-; X86-O0-NEXT: xorb $-1, %dil
-; X86-O0-NEXT: andb $1, %dil
-; X86-O0-NEXT: movzbl %dil, %eax
+; X86-O0-NEXT: cmpl $0, var_13
+; X86-O0-NEXT: setne %dl
+; X86-O0-NEXT: xorb $-1, %dl
+; X86-O0-NEXT: andb $1, %dl
+; X86-O0-NEXT: movzbl %dl, %eax
+; X86-O0-NEXT: movl %eax, %esi
+; X86-O0-NEXT: movl var_13, %eax
+; X86-O0-NEXT: xorl $-1, %eax
+; X86-O0-NEXT: xorl var_16, %eax
+; X86-O0-NEXT: movl %eax, %eax
+; X86-O0-NEXT: movl %eax, %edi
+; X86-O0-NEXT: andq %rdi, %rsi
+; X86-O0-NEXT: orq %rsi, %rcx
+; X86-O0-NEXT: movq %rcx, -{{[0-9]+}}(%rsp)
+; X86-O0-NEXT: movl var_13, %eax
+; X86-O0-NEXT: xorl $-1, %eax
+; X86-O0-NEXT: movl %eax, %eax
; X86-O0-NEXT: movl %eax, %ecx
-; X86-O0-NEXT: andq $0, %rcx
-; X86-O0-NEXT: orq %rcx, %rsi
-; X86-O0-NEXT: movl %esi, %eax
+; X86-O0-NEXT: cmpl $0, var_13
+; X86-O0-NEXT: setne %dl
+; X86-O0-NEXT: xorb $-1, %dl
+; X86-O0-NEXT: andb $1, %dl
+; X86-O0-NEXT: movzbl %dl, %eax
+; X86-O0-NEXT: movl %eax, %esi
+; X86-O0-NEXT: andq $0, %rsi
+; X86-O0-NEXT: orq %rsi, %rcx
+; X86-O0-NEXT: movl %ecx, %eax
; X86-O0-NEXT: movl %eax, var_46
; X86-O0-NEXT: retq
;
More information about the llvm-commits
mailing list