From 1fd065d4bbf6d6f90c5fbd251656dde7e97d48e6 Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Mon, 30 Oct 2017 14:50:10 +0000 Subject: [PATCH] [X86] Regenerate test using update_llc_test_checks.py git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@316911 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/CodeGen/X86/pr32284.ll | 471 +++++++++++++++++++++++++++++++++--- 1 file changed, 439 insertions(+), 32 deletions(-) diff --git a/test/CodeGen/X86/pr32284.ll b/test/CodeGen/X86/pr32284.ll index c54909cf93c..76e26c769a1 100644 --- a/test/CodeGen/X86/pr32284.ll +++ b/test/CodeGen/X86/pr32284.ll @@ -1,17 +1,79 @@ -; RUN: llc -O0 -mtriple=x86_64-unknown -mcpu=skx -o - %s | FileCheck %s --check-prefixes=CHECK,X64 -; RUN: llc -mtriple=x86_64-unknown -mcpu=skx -o - %s | FileCheck %s --check-prefixes=CHECK,X64 -; RUN: llc -O0 -mtriple=i686-unknown -mcpu=skx -o - %s | FileCheck %s --check-prefixes=CHECK,686 -; RUN: llc -mtriple=i686-unknown -mcpu=skx -o - %s | FileCheck %s --check-prefixes=CHECK,686 -; REQUIRES: asserts +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py +; RUN: llc -O0 -mtriple=x86_64-unknown -mcpu=skx -o - %s | FileCheck %s --check-prefix=X86-O0 +; RUN: llc -mtriple=x86_64-unknown -mcpu=skx -o - %s | FileCheck %s --check-prefix=X64 +; RUN: llc -O0 -mtriple=i686-unknown -mcpu=skx -o - %s | FileCheck %s --check-prefix=686-O0 +; RUN: llc -mtriple=i686-unknown -mcpu=skx -o - %s | FileCheck %s --check-prefix=686 @c = external constant i8, align 1 define void @foo() { -; CHECK-LABEL: foo: -; CHECK: # BB#0: # %entry -; CHECK-DAG: setne -; CHECK-DAG: setle -; CHECK: ret +; 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: retq +; +; X64-LABEL: foo: +; X64: # BB#0: # %entry +; X64-NEXT: movzbl {{.*}}(%rip), %eax +; X64-NEXT: testb %al, %al +; X64-NEXT: setne -{{[0-9]+}}(%rsp) +; X64-NEXT: xorl %ecx, %ecx +; X64-NEXT: testl %eax, %eax +; X64-NEXT: setne %cl +; X64-NEXT: xorl %edx, %edx +; X64-NEXT: cmpl %eax, %ecx +; X64-NEXT: setle %dl +; X64-NEXT: movl %edx, -{{[0-9]+}}(%rsp) +; X64-NEXT: retq +; +; 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: 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: setne %al +; 686-O0-NEXT: movzbl %al, %edx +; 686-O0-NEXT: subl %ecx, %edx +; 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: retl +; +; 686-LABEL: foo: +; 686: # BB#0: # %entry +; 686-NEXT: subl $8, %esp +; 686-NEXT: .cfi_def_cfa_offset 12 +; 686-NEXT: movzbl c, %eax +; 686-NEXT: xorl %ecx, %ecx +; 686-NEXT: testl %eax, %eax +; 686-NEXT: setne %cl +; 686-NEXT: testb %al, %al +; 686-NEXT: setne {{[0-9]+}}(%esp) +; 686-NEXT: xorl %edx, %edx +; 686-NEXT: cmpl %eax, %ecx +; 686-NEXT: setle %dl +; 686-NEXT: movl %edx, {{[0-9]+}}(%esp) +; 686-NEXT: addl $8, %esp +; 686-NEXT: retl entry: %a = alloca i8, align 1 %b = alloca i32, align 4 @@ -42,12 +104,163 @@ entry: @_ZN8struct_210member_2_0E = external global i64, align 8 define void @f1() { -; CHECK-LABEL: f1: -; CHECK: # BB#0: # %entry -; CHECK: sete -; X64: addq $7093, {{.*}} -; 686: addl $7093, {{.*}} -; CHECK: ret +; 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: 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: 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: +; X64: # BB#0: # %entry +; X64-NEXT: movslq {{.*}}(%rip), %rax +; X64-NEXT: xorl %ecx, %ecx +; X64-NEXT: cmpq $-1, %rax +; X64-NEXT: sete %cl +; X64-NEXT: movabsq $-8381627093, %rdx # imm = 0xFFFFFFFE0C6A852B +; X64-NEXT: cmpq %rdx, %rax +; X64-NEXT: setne -{{[0-9]+}}(%rsp) +; X64-NEXT: xorl %edx, %edx +; X64-NEXT: cmpl $-1, %eax +; X64-NEXT: sete %dl +; X64-NEXT: addq $7093, %rax # imm = 0x1BB5 +; X64-NEXT: xorl %esi, %esi +; X64-NEXT: cmpq %rax, %rdx +; X64-NEXT: setg %sil +; X64-NEXT: movq %rsi, {{.*}}(%rip) +; X64-NEXT: movq %rcx, {{.*}}(%rip) +; X64-NEXT: retq +; +; 686-O0-LABEL: f1: +; 686-O0: # BB#0: # %entry +; 686-O0-NEXT: pushl %ebp +; 686-O0-NEXT: .cfi_def_cfa_offset 8 +; 686-O0-NEXT: pushl %ebx +; 686-O0-NEXT: .cfi_def_cfa_offset 12 +; 686-O0-NEXT: pushl %edi +; 686-O0-NEXT: .cfi_def_cfa_offset 16 +; 686-O0-NEXT: pushl %esi +; 686-O0-NEXT: .cfi_def_cfa_offset 20 +; 686-O0-NEXT: subl $36, %esp +; 686-O0-NEXT: .cfi_def_cfa_offset 56 +; 686-O0-NEXT: .cfi_offset %esi, -20 +; 686-O0-NEXT: .cfi_offset %edi, -16 +; 686-O0-NEXT: .cfi_offset %ebx, -12 +; 686-O0-NEXT: .cfi_offset %ebp, -8 +; 686-O0-NEXT: movl var_5, %eax +; 686-O0-NEXT: movl %eax, %ecx +; 686-O0-NEXT: sarl $31, %ecx +; 686-O0-NEXT: movl %eax, %edx +; 686-O0-NEXT: andl %ecx, %edx +; 686-O0-NEXT: subl $-1, %edx +; 686-O0-NEXT: sete %bl +; 686-O0-NEXT: movl %eax, %esi +; 686-O0-NEXT: xorl $208307499, %esi # imm = 0xC6A852B +; 686-O0-NEXT: movl %ecx, %edi +; 686-O0-NEXT: xorl $-2, %edi +; 686-O0-NEXT: orl %edi, %esi +; 686-O0-NEXT: setne {{[0-9]+}}(%esp) +; 686-O0-NEXT: movl %eax, %edi +; 686-O0-NEXT: subl $-1, %edi +; 686-O0-NEXT: sete %bh +; 686-O0-NEXT: movzbl %bh, %ebp +; 686-O0-NEXT: movl %eax, {{[0-9]+}}(%esp) # 4-byte Spill +; 686-O0-NEXT: xorl %eax, %eax +; 686-O0-NEXT: movl %eax, {{[0-9]+}}(%esp) # 4-byte Spill +; 686-O0-NEXT: movl {{[0-9]+}}(%esp), %eax # 4-byte Reload +; 686-O0-NEXT: addl $7093, %eax # imm = 0x1BB5 +; 686-O0-NEXT: movl %eax, {{[0-9]+}}(%esp) # 4-byte Spill +; 686-O0-NEXT: movl {{[0-9]+}}(%esp), %eax # 4-byte Reload +; 686-O0-NEXT: adcxl %eax, %ecx +; 686-O0-NEXT: movl {{[0-9]+}}(%esp), %eax # 4-byte Reload +; 686-O0-NEXT: subl %ebp, %eax +; 686-O0-NEXT: sbbl $0, %ecx +; 686-O0-NEXT: setl %bh +; 686-O0-NEXT: movzbl %bh, %ebp +; 686-O0-NEXT: movl %ebp, var_57 +; 686-O0-NEXT: movl $0, var_57+4 +; 686-O0-NEXT: movzbl %bl, %ebp +; 686-O0-NEXT: movl %ebp, _ZN8struct_210member_2_0E +; 686-O0-NEXT: movl $0, _ZN8struct_210member_2_0E+4 +; 686-O0-NEXT: movl %edi, {{[0-9]+}}(%esp) # 4-byte Spill +; 686-O0-NEXT: movl %eax, {{[0-9]+}}(%esp) # 4-byte Spill +; 686-O0-NEXT: movl %edx, {{[0-9]+}}(%esp) # 4-byte Spill +; 686-O0-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill +; 686-O0-NEXT: movl %esi, (%esp) # 4-byte Spill +; 686-O0-NEXT: addl $36, %esp +; 686-O0-NEXT: popl %esi +; 686-O0-NEXT: popl %edi +; 686-O0-NEXT: popl %ebx +; 686-O0-NEXT: popl %ebp +; 686-O0-NEXT: retl +; +; 686-LABEL: f1: +; 686: # BB#0: # %entry +; 686-NEXT: pushl %edi +; 686-NEXT: .cfi_def_cfa_offset 8 +; 686-NEXT: pushl %esi +; 686-NEXT: .cfi_def_cfa_offset 12 +; 686-NEXT: subl $1, %esp +; 686-NEXT: .cfi_def_cfa_offset 13 +; 686-NEXT: .cfi_offset %esi, -12 +; 686-NEXT: .cfi_offset %edi, -8 +; 686-NEXT: movl var_5, %edx +; 686-NEXT: movl %edx, %esi +; 686-NEXT: sarl $31, %esi +; 686-NEXT: movl %edx, %ecx +; 686-NEXT: andl %esi, %ecx +; 686-NEXT: xorl %eax, %eax +; 686-NEXT: cmpl $-1, %ecx +; 686-NEXT: sete %al +; 686-NEXT: movl %edx, %ecx +; 686-NEXT: xorl $208307499, %ecx # imm = 0xC6A852B +; 686-NEXT: movl %esi, %edi +; 686-NEXT: xorl $-2, %edi +; 686-NEXT: orl %ecx, %edi +; 686-NEXT: setne (%esp) +; 686-NEXT: xorl %ecx, %ecx +; 686-NEXT: cmpl $-1, %edx +; 686-NEXT: sete %cl +; 686-NEXT: xorl %edi, %edi +; 686-NEXT: addl $7093, %edx # imm = 0x1BB5 +; 686-NEXT: adcxl %edi, %esi +; 686-NEXT: cmpl %ecx, %edx +; 686-NEXT: sbbl $0, %esi +; 686-NEXT: setl %cl +; 686-NEXT: movzbl %cl, %ecx +; 686-NEXT: movl %ecx, var_57 +; 686-NEXT: movl $0, var_57+4 +; 686-NEXT: movl %eax, _ZN8struct_210member_2_0E +; 686-NEXT: movl $0, _ZN8struct_210member_2_0E+4 +; 686-NEXT: addl $1, %esp +; 686-NEXT: popl %esi +; 686-NEXT: popl %edi +; 686-NEXT: retl entry: %a = alloca i8, align 1 %0 = load i32, i32* @var_5, align 4 @@ -80,13 +293,106 @@ entry: @var_7 = external global i8, align 1 define void @f2() { -; CHECK-LABEL: f2: -; CHECK: # BB#0: # %entry -; X64: movzbl {{.*}}(%rip), %[[R:[a-z]*]] -; 686: movzbl {{.*}}, %[[R:[a-z]*]] -; CHECK: test{{[qlwb]}} %[[R]], %[[R]] -; CHECK: sete {{.*}} -; CHECK: ret +; 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 %dl, %esi +; X86-O0-NEXT: subl %ecx, %esi +; 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: retq +; +; X64-LABEL: f2: +; X64: # BB#0: # %entry +; X64-NEXT: movzbl {{.*}}(%rip), %eax +; X64-NEXT: xorl %ecx, %ecx +; X64-NEXT: testl %eax, %eax +; X64-NEXT: sete %cl +; X64-NEXT: xorl %eax, %ecx +; X64-NEXT: movw %cx, -{{[0-9]+}}(%rsp) +; X64-NEXT: xorl %ecx, %ecx +; X64-NEXT: testb %al, %al +; X64-NEXT: sete %cl +; X64-NEXT: xorl %edx, %edx +; X64-NEXT: cmpl %eax, %ecx +; X64-NEXT: sete %dl +; X64-NEXT: movw %dx, (%rax) +; X64-NEXT: retq +; +; 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: 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: # 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 %DL %EDX +; 686-O0-NEXT: testb %dl, %dl +; 686-O0-NEXT: sete %dl +; 686-O0-NEXT: movzbl %dl, %esi +; 686-O0-NEXT: subl %ecx, %esi +; 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: popl %esi +; 686-O0-NEXT: popl %edi +; 686-O0-NEXT: popl %ebx +; 686-O0-NEXT: retl +; +; 686-LABEL: f2: +; 686: # BB#0: # %entry +; 686-NEXT: subl $2, %esp +; 686-NEXT: .cfi_def_cfa_offset 6 +; 686-NEXT: movzbl var_7, %eax +; 686-NEXT: xorl %ecx, %ecx +; 686-NEXT: testl %eax, %eax +; 686-NEXT: sete %cl +; 686-NEXT: xorl %eax, %ecx +; 686-NEXT: movw %cx, (%esp) +; 686-NEXT: xorl %ecx, %ecx +; 686-NEXT: testb %al, %al +; 686-NEXT: sete %cl +; 686-NEXT: xorl %edx, %edx +; 686-NEXT: cmpl %eax, %ecx +; 686-NEXT: sete %dl +; 686-NEXT: movw %dx, (%eax) +; 686-NEXT: addl $2, %esp +; 686-NEXT: retl entry: %a = alloca i16, align 2 %0 = load i8, i8* @var_7, align 1 @@ -118,15 +424,116 @@ entry: @var_46 = external global i32, align 4 define void @f3() #0 { -; CHECK-LABEL: f3: -; X64-DAG: movl var_13(%rip), {{.*}} -; X64-DAG: movl var_16(%rip), {{.*}} -; X64-DAG: movl {{.*}},{{.*}}var_46{{.*}} -; X64: retq -; 686-DAG: movl var_13, {{.*}} -; 686-DAG: movl var_16, {{.*}} -; 686-DAG: movl {{.*}},{{.*}}var_46{{.*}} -; 686: retl +; X86-O0-LABEL: f3: +; X86-O0: # BB#0: # %entry +; X86-O0-NEXT: movl {{.*}}(%rip), %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: movl %eax, %ecx +; X86-O0-NEXT: andq $0, %rcx +; X86-O0-NEXT: orq %rcx, %rsi +; X86-O0-NEXT: movl %esi, %eax +; X86-O0-NEXT: movl %eax, var_46 +; X86-O0-NEXT: retq +; +; X64-LABEL: f3: +; X64: # BB#0: # %entry +; X64-NEXT: movl {{.*}}(%rip), %eax +; X64-NEXT: movl $4294967295, %ecx # imm = 0xFFFFFFFF +; X64-NEXT: xorq %rax, %rcx +; X64-NEXT: xorl %edx, %edx +; X64-NEXT: testq %rax, %rax +; X64-NEXT: sete %dl +; X64-NEXT: movl {{.*}}(%rip), %eax +; X64-NEXT: xorl %ecx, %eax +; X64-NEXT: andq %rdx, %rax +; X64-NEXT: orq %rcx, %rax +; X64-NEXT: movq %rax, -{{[0-9]+}}(%rsp) +; X64-NEXT: movl %ecx, {{.*}}(%rip) +; X64-NEXT: retq +; +; 686-O0-LABEL: f3: +; 686-O0: # BB#0: # %entry +; 686-O0-NEXT: pushl %ebp +; 686-O0-NEXT: .cfi_def_cfa_offset 8 +; 686-O0-NEXT: .cfi_offset %ebp, -8 +; 686-O0-NEXT: movl %esp, %ebp +; 686-O0-NEXT: .cfi_def_cfa_register %ebp +; 686-O0-NEXT: pushl %edi +; 686-O0-NEXT: pushl %esi +; 686-O0-NEXT: andl $-8, %esp +; 686-O0-NEXT: subl $8, %esp +; 686-O0-NEXT: .cfi_offset %esi, -16 +; 686-O0-NEXT: .cfi_offset %edi, -12 +; 686-O0-NEXT: movl var_13, %eax +; 686-O0-NEXT: movl %eax, %ecx +; 686-O0-NEXT: notl %ecx +; 686-O0-NEXT: testl %eax, %eax +; 686-O0-NEXT: sete %dl +; 686-O0-NEXT: movzbl %dl, %eax +; 686-O0-NEXT: movl var_16, %esi +; 686-O0-NEXT: movl %ecx, %edi +; 686-O0-NEXT: xorl %esi, %edi +; 686-O0-NEXT: andl %edi, %eax +; 686-O0-NEXT: movb %al, %dl +; 686-O0-NEXT: movzbl %dl, %eax +; 686-O0-NEXT: movl %ecx, %esi +; 686-O0-NEXT: orl %eax, %esi +; 686-O0-NEXT: movl %esi, (%esp) +; 686-O0-NEXT: movl $0, {{[0-9]+}}(%esp) +; 686-O0-NEXT: movl %ecx, var_46 +; 686-O0-NEXT: leal -8(%ebp), %esp +; 686-O0-NEXT: popl %esi +; 686-O0-NEXT: popl %edi +; 686-O0-NEXT: popl %ebp +; 686-O0-NEXT: retl +; +; 686-LABEL: f3: +; 686: # BB#0: # %entry +; 686-NEXT: pushl %ebp +; 686-NEXT: .cfi_def_cfa_offset 8 +; 686-NEXT: .cfi_offset %ebp, -8 +; 686-NEXT: movl %esp, %ebp +; 686-NEXT: .cfi_def_cfa_register %ebp +; 686-NEXT: andl $-8, %esp +; 686-NEXT: subl $8, %esp +; 686-NEXT: movl var_13, %ecx +; 686-NEXT: xorl %eax, %eax +; 686-NEXT: testl %ecx, %ecx +; 686-NEXT: notl %ecx +; 686-NEXT: sete %al +; 686-NEXT: movl var_16, %edx +; 686-NEXT: xorl %ecx, %edx +; 686-NEXT: andl %eax, %edx +; 686-NEXT: movzbl %dl, %eax +; 686-NEXT: orl %ecx, %eax +; 686-NEXT: movl %eax, (%esp) +; 686-NEXT: movl $0, {{[0-9]+}}(%esp) +; 686-NEXT: movl %ecx, var_46 +; 686-NEXT: movl %ebp, %esp +; 686-NEXT: popl %ebp +; 686-NEXT: retl entry: %a = alloca i64, align 8 %0 = load i32, i32* @var_13, align 4 -- 2.40.0