diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2017-06-03 15:20:36 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2017-06-03 15:20:36 +0000 |
commit | d288ef4c1788d3a951a7558c68312c2d320612b1 (patch) | |
tree | ece909a5200f95f85f0813599a9500620f4d9217 /test/CodeGen/X86/shrink-compare.ll | |
parent | f382538d471e38a9b98f016c4caebd24c8d60b62 (diff) | |
download | src-d288ef4c1788d3a951a7558c68312c2d320612b1.tar.gz src-d288ef4c1788d3a951a7558c68312c2d320612b1.zip |
Vendor import of llvm trunk r304659:vendor/llvm/llvm-trunk-r304659
Notes
Notes:
svn path=/vendor/llvm/dist/; revision=319523
svn path=/vendor/llvm/llvm-trunk-r304659/; revision=319524; tag=vendor/llvm/llvm-trunk-r304659
Diffstat (limited to 'test/CodeGen/X86/shrink-compare.ll')
-rw-r--r-- | test/CodeGen/X86/shrink-compare.ll | 129 |
1 files changed, 97 insertions, 32 deletions
diff --git a/test/CodeGen/X86/shrink-compare.ll b/test/CodeGen/X86/shrink-compare.ll index 41f5d2d5be23..7f35258377ec 100644 --- a/test/CodeGen/X86/shrink-compare.ll +++ b/test/CodeGen/X86/shrink-compare.ll @@ -1,8 +1,15 @@ +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s declare void @bar() define void @test1(i32* nocapture %X) nounwind minsize { +; CHECK-LABEL: test1: +; CHECK: # BB#0: # %entry +; CHECK-NEXT: cmpb $47, (%rdi) +; CHECK-NEXT: je bar # TAILCALL +; CHECK-NEXT: # BB#1: # %if.end +; CHECK-NEXT: retq entry: %tmp1 = load i32, i32* %X, align 4 %and = and i32 %tmp1, 255 @@ -15,11 +22,15 @@ if.then: if.end: ret void -; CHECK-LABEL: test1: -; CHECK: cmpb $47, (%{{rdi|rcx}}) } define void @test2(i32 %X) nounwind minsize { +; CHECK-LABEL: test2: +; CHECK: # BB#0: # %entry +; CHECK-NEXT: cmpb $47, %dil +; CHECK-NEXT: je bar # TAILCALL +; CHECK-NEXT: # BB#1: # %if.end +; CHECK-NEXT: retq entry: %and = and i32 %X, 255 %cmp = icmp eq i32 %and, 47 @@ -31,11 +42,15 @@ if.then: if.end: ret void -; CHECK-LABEL: test2: -; CHECK: cmpb $47, %{{dil|cl}} } define void @test3(i32 %X) nounwind minsize { +; CHECK-LABEL: test3: +; CHECK: # BB#0: # %entry +; CHECK-NEXT: cmpb $-1, %dil +; CHECK-NEXT: je bar # TAILCALL +; CHECK-NEXT: # BB#1: # %if.end +; CHECK-NEXT: retq entry: %and = and i32 %X, 255 %cmp = icmp eq i32 %and, 255 @@ -47,12 +62,22 @@ if.then: if.end: ret void -; CHECK-LABEL: test3: -; CHECK: cmpb $-1, %{{dil|cl}} } ; PR16083 define i1 @test4(i64 %a, i32 %b) { +; CHECK-LABEL: test4: +; CHECK: # BB#0: # %entry +; CHECK-NEXT: movb $1, %al +; CHECK-NEXT: testl %esi, %esi +; CHECK-NEXT: je .LBB3_1 +; CHECK-NEXT: # BB#2: # %lor.end +; CHECK-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill> +; CHECK-NEXT: retq +; CHECK-NEXT: .LBB3_1: # %lor.rhs +; CHECK-NEXT: xorl %eax, %eax +; CHECK-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill> +; CHECK-NEXT: retq entry: %tobool = icmp ne i32 %b, 0 br i1 %tobool, label %lor.end, label %lor.rhs @@ -71,6 +96,16 @@ lor.end: ; preds = %lor.rhs, %entry ; PR16551 define void @test5(i32 %X) nounwind minsize { +; CHECK-LABEL: test5: +; CHECK: # BB#0: # %entry +; CHECK-NEXT: movzbl x+{{.*}}(%rip), %eax +; CHECK-NEXT: shll $16, %eax +; CHECK-NEXT: movzwl x+{{.*}}(%rip), %ecx +; CHECK-NEXT: orl %eax, %ecx +; CHECK-NEXT: cmpl $1, %ecx +; CHECK-NEXT: jne bar # TAILCALL +; CHECK-NEXT: # BB#1: # %if.end +; CHECK-NEXT: retq entry: %bf.load = load i56, i56* bitcast ({ i8, i8, i8, i8, i8, i8, i8, i8 }* @x to i56*), align 4 %bf.lshr = lshr i56 %bf.load, 32 @@ -84,17 +119,16 @@ if.then: if.end: ret void - -; CHECK-LABEL: test5: -; CHECK-NOT: cmpl $1,{{.*}}x+4 -; CHECK: ret } -; CHECK-LABEL: test2_1: -; CHECK: movzbl -; CHECK: cmpl $256 -; CHECK: je bar define void @test2_1(i32 %X) nounwind minsize { +; CHECK-LABEL: test2_1: +; CHECK: # BB#0: # %entry +; CHECK-NEXT: movzbl %dil, %eax +; CHECK-NEXT: cmpl $256, %eax # imm = 0x100 +; CHECK-NEXT: je bar # TAILCALL +; CHECK-NEXT: # BB#1: # %if.end +; CHECK-NEXT: retq entry: %and = and i32 %X, 255 %cmp = icmp eq i32 %and, 256 @@ -108,9 +142,13 @@ if.end: ret void } -; CHECK-LABEL: test_sext_i8_icmp_1: -; CHECK: cmpb $1, %{{dil|cl}} define void @test_sext_i8_icmp_1(i8 %x) nounwind minsize { +; CHECK-LABEL: test_sext_i8_icmp_1: +; CHECK: # BB#0: # %entry +; CHECK-NEXT: cmpb $1, %dil +; CHECK-NEXT: je bar # TAILCALL +; CHECK-NEXT: # BB#1: # %if.end +; CHECK-NEXT: retq entry: %sext = sext i8 %x to i32 %cmp = icmp eq i32 %sext, 1 @@ -124,9 +162,13 @@ if.end: ret void } -; CHECK-LABEL: test_sext_i8_icmp_47: -; CHECK: cmpb $47, %{{dil|cl}} define void @test_sext_i8_icmp_47(i8 %x) nounwind minsize { +; CHECK-LABEL: test_sext_i8_icmp_47: +; CHECK: # BB#0: # %entry +; CHECK-NEXT: cmpb $47, %dil +; CHECK-NEXT: je bar # TAILCALL +; CHECK-NEXT: # BB#1: # %if.end +; CHECK-NEXT: retq entry: %sext = sext i8 %x to i32 %cmp = icmp eq i32 %sext, 47 @@ -140,9 +182,13 @@ if.end: ret void } -; CHECK-LABEL: test_sext_i8_icmp_127: -; CHECK: cmpb $127, %{{dil|cl}} define void @test_sext_i8_icmp_127(i8 %x) nounwind minsize { +; CHECK-LABEL: test_sext_i8_icmp_127: +; CHECK: # BB#0: # %entry +; CHECK-NEXT: cmpb $127, %dil +; CHECK-NEXT: je bar # TAILCALL +; CHECK-NEXT: # BB#1: # %if.end +; CHECK-NEXT: retq entry: %sext = sext i8 %x to i32 %cmp = icmp eq i32 %sext, 127 @@ -156,9 +202,13 @@ if.end: ret void } -; CHECK-LABEL: test_sext_i8_icmp_neg1: -; CHECK: cmpb $-1, %{{dil|cl}} define void @test_sext_i8_icmp_neg1(i8 %x) nounwind minsize { +; CHECK-LABEL: test_sext_i8_icmp_neg1: +; CHECK: # BB#0: # %entry +; CHECK-NEXT: cmpb $-1, %dil +; CHECK-NEXT: je bar # TAILCALL +; CHECK-NEXT: # BB#1: # %if.end +; CHECK-NEXT: retq entry: %sext = sext i8 %x to i32 %cmp = icmp eq i32 %sext, -1 @@ -172,9 +222,13 @@ if.end: ret void } -; CHECK-LABEL: test_sext_i8_icmp_neg2: -; CHECK: cmpb $-2, %{{dil|cl}} define void @test_sext_i8_icmp_neg2(i8 %x) nounwind minsize { +; CHECK-LABEL: test_sext_i8_icmp_neg2: +; CHECK: # BB#0: # %entry +; CHECK-NEXT: cmpb $-2, %dil +; CHECK-NEXT: je bar # TAILCALL +; CHECK-NEXT: # BB#1: # %if.end +; CHECK-NEXT: retq entry: %sext = sext i8 %x to i32 %cmp = icmp eq i32 %sext, -2 @@ -188,9 +242,13 @@ if.end: ret void } -; CHECK-LABEL: test_sext_i8_icmp_neg127: -; CHECK: cmpb $-127, %{{dil|cl}} define void @test_sext_i8_icmp_neg127(i8 %x) nounwind minsize { +; CHECK-LABEL: test_sext_i8_icmp_neg127: +; CHECK: # BB#0: # %entry +; CHECK-NEXT: cmpb $-127, %dil +; CHECK-NEXT: je bar # TAILCALL +; CHECK-NEXT: # BB#1: # %if.end +; CHECK-NEXT: retq entry: %sext = sext i8 %x to i32 %cmp = icmp eq i32 %sext, -127 @@ -204,9 +262,13 @@ if.end: ret void } -; CHECK-LABEL: test_sext_i8_icmp_neg128: -; CHECK: cmpb $-128, %{{dil|cl}} define void @test_sext_i8_icmp_neg128(i8 %x) nounwind minsize { +; CHECK-LABEL: test_sext_i8_icmp_neg128: +; CHECK: # BB#0: # %entry +; CHECK-NEXT: cmpb $-128, %dil +; CHECK-NEXT: je bar # TAILCALL +; CHECK-NEXT: # BB#1: # %if.end +; CHECK-NEXT: retq entry: %sext = sext i8 %x to i32 %cmp = icmp eq i32 %sext, -128 @@ -220,11 +282,14 @@ if.end: ret void } -; CHECK-LABEL: test_sext_i8_icmp_255: -; CHECK: movb $1, -; CHECK: testb -; CHECK: je bar define void @test_sext_i8_icmp_255(i8 %x) nounwind minsize { +; CHECK-LABEL: test_sext_i8_icmp_255: +; CHECK: # BB#0: # %entry +; CHECK-NEXT: movb $1, %al +; CHECK-NEXT: testb %al, %al +; CHECK-NEXT: je bar # TAILCALL +; CHECK-NEXT: # BB#1: # %if.end +; CHECK-NEXT: retq entry: %sext = sext i8 %x to i32 %cmp = icmp eq i32 %sext, 255 |