From c1aac4e600c4b34a9d1730da6f704d89bef0a3a0 Mon Sep 17 00:00:00 2001 From: Sanjay Patel Date: Tue, 22 Aug 2017 16:21:45 +0000 Subject: [PATCH] [x86] simplify runs and auto-generate full checks I've replaced the two OS-specific runs with a generic run because there's no functional difference in the resulting output that we're checking. Also, the script still doesn't work with a Win target. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@311463 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/CodeGen/X86/bool-zext.ll | 73 +++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/test/CodeGen/X86/bool-zext.ll b/test/CodeGen/X86/bool-zext.ll index 5cc758c06b5..b2680c570e0 100644 --- a/test/CodeGen/X86/bool-zext.ll +++ b/test/CodeGen/X86/bool-zext.ll @@ -1,56 +1,63 @@ -; RUN: llc < %s -mtriple=i686-unknown-linux-gnu | FileCheck %s -check-prefix=X86 -; RUN: llc < %s -mtriple=x86_64-apple-darwin10 | FileCheck %s -check-prefix=X64 -; RUN: llc < %s -mtriple=x86_64-pc-win32 | FileCheck %s -check-prefix=WIN64 +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py +; RUN: llc < %s -mtriple=i686-unknown-unknown | FileCheck %s -check-prefix=X32 +; RUN: llc < %s -mtriple=x86_64-unknown-unknown | FileCheck %s -check-prefix=X64 ; Check that the argument gets zero-extended before calling. -; X86-LABEL: bar1 -; X86: movzbl -; X86: calll -; X64-LABEL: bar1 -; X64: movzbl -; X64: jmp -; WIN64-LABEL: bar1 -; WIN64: movzbl -; WIN64: callq define void @bar1(i1 zeroext %v1) nounwind ssp { -entry: +; X32-LABEL: bar1: +; X32: # BB#0: +; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax +; X32-NEXT: pushl %eax +; X32-NEXT: calll foo1 +; X32-NEXT: addl $4, %esp +; X32-NEXT: retl +; +; X64-LABEL: bar1: +; X64: # BB#0: +; X64-NEXT: movzbl %dil, %edi +; X64-NEXT: xorl %eax, %eax +; X64-NEXT: jmp foo1 # TAILCALL %conv = zext i1 %v1 to i32 %call = tail call i32 (...) @foo1(i32 %conv) nounwind ret void } ; Check that on x86-64 the arguments are simply forwarded. -; X64-LABEL: bar2 -; X64-NOT: movzbl -; X64: jmp -; WIN64-LABEL: bar2 -; WIN64-NOT: movzbl -; WIN64: callq define void @bar2(i8 zeroext %v1) nounwind ssp { -entry: +; X32-LABEL: bar2: +; X32: # BB#0: +; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax +; X32-NEXT: pushl %eax +; X32-NEXT: calll foo1 +; X32-NEXT: addl $4, %esp +; X32-NEXT: retl +; +; X64-LABEL: bar2: +; X64: # BB#0: +; X64-NEXT: xorl %eax, %eax +; X64-NEXT: jmp foo1 # TAILCALL %conv = zext i8 %v1 to i32 %call = tail call i32 (...) @foo1(i32 %conv) nounwind ret void } ; Check that i1 return values are not zero-extended. -; X86-LABEL: bar3 -; X86: call -; X86-NEXT: {{add|pop}} -; X86-NEXT: ret -; X64-LABEL: bar3 -; X64: call -; X64-NEXT: {{add|pop}} -; X64-NEXT: ret -; WIN64-LABEL: bar3 -; WIN64: call -; WIN64-NEXT: {{add|pop}} -; WIN64-NEXT: ret define zeroext i1 @bar3() nounwind ssp { -entry: +; X32-LABEL: bar3: +; X32: # BB#0: +; X32-NEXT: calll foo2 +; X32-NEXT: retl +; +; X64-LABEL: bar3: +; X64: # BB#0: +; X64-NEXT: pushq %rax +; X64-NEXT: callq foo2 +; X64-NEXT: popq %rcx +; X64-NEXT: retq %call = call i1 @foo2() nounwind ret i1 %call } declare i32 @foo1(...) declare zeroext i1 @foo2() + -- 2.40.0