diff options
author | Sanjay Patel <spatel@rotateright.com> | 2017-07-03 15:27:19 +0000 |
---|---|---|
committer | Sanjay Patel <spatel@rotateright.com> | 2017-07-03 15:27:19 +0000 |
commit | e9b1d16a8c82f61c2559fb0d6798bdeb643f3dd3 (patch) | |
tree | a74233b3748e4855769f3c28c8e9fcf7b0752877 /llvm/test/CodeGen/X86/bool-simplify.ll | |
parent | bd4943e2ca7288de650d0ef76fde2d4c53f5cb3e (diff) | |
download | bcm5719-llvm-e9b1d16a8c82f61c2559fb0d6798bdeb643f3dd3.tar.gz bcm5719-llvm-e9b1d16a8c82f61c2559fb0d6798bdeb643f3dd3.zip |
[x86] auto-generate complete checks for tests; NFC
These all used 'CHECK-NOT' which isn't necessary if we have complete checks.
There were also over-specifications in the RUN params such as CPU model.
llvm-svn: 307033
Diffstat (limited to 'llvm/test/CodeGen/X86/bool-simplify.ll')
-rw-r--r-- | llvm/test/CodeGen/X86/bool-simplify.ll | 129 |
1 files changed, 76 insertions, 53 deletions
diff --git a/llvm/test/CodeGen/X86/bool-simplify.ll b/llvm/test/CodeGen/X86/bool-simplify.ll index a0a1c364662..7f7f9791d90 100644 --- a/llvm/test/CodeGen/X86/bool-simplify.ll +++ b/llvm/test/CodeGen/X86/bool-simplify.ll @@ -1,45 +1,62 @@ -; RUN: llc < %s -march=x86-64 -mattr=+sse4.1,-avx,+rdrnd,+rdseed | FileCheck %s +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py +; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse4.1,-avx,+rdrnd,+rdseed | FileCheck %s define i32 @foo(<2 x i64> %c, i32 %a, i32 %b) { +; CHECK-LABEL: foo: +; CHECK: # BB#0: +; CHECK-NEXT: ptest %xmm0, %xmm0 +; CHECK-NEXT: cmovnel %esi, %edi +; CHECK-NEXT: movl %edi, %eax +; CHECK-NEXT: retq %t1 = call i32 @llvm.x86.sse41.ptestz(<2 x i64> %c, <2 x i64> %c) %t2 = icmp ne i32 %t1, 0 %t3 = select i1 %t2, i32 %a, i32 %b ret i32 %t3 -; CHECK: foo -; CHECK: ptest -; CHECK-NOT: testl -; CHECK: cmov -; CHECK: ret } define i32 @bar(<2 x i64> %c) { +; CHECK-LABEL: bar: +; CHECK: # BB#0: # %entry +; CHECK-NEXT: ptest %xmm0, %xmm0 +; CHECK-NEXT: jne .LBB1_2 +; CHECK-NEXT: # BB#1: # %if-true-block +; CHECK-NEXT: xorl %eax, %eax +; CHECK-NEXT: retq +; CHECK-NEXT: .LBB1_2: # %endif-block +; CHECK-NEXT: movl $1, %eax +; CHECK-NEXT: retq entry: %0 = call i32 @llvm.x86.sse41.ptestz(<2 x i64> %c, <2 x i64> %c) %1 = icmp ne i32 %0, 0 br i1 %1, label %if-true-block, label %endif-block -if-true-block: ; preds = %entry +if-true-block: ret i32 0 -endif-block: ; preds = %entry, +endif-block: ret i32 1 -; CHECK: bar -; CHECK: ptest -; CHECK-NOT: testl -; CHECK: jne -; CHECK: ret } define i32 @bax(<2 x i64> %c) { +; CHECK-LABEL: bax: +; CHECK: # BB#0: +; CHECK-NEXT: xorl %eax, %eax +; CHECK-NEXT: ptest %xmm0, %xmm0 +; CHECK-NEXT: sete %al +; CHECK-NEXT: retq %t1 = call i32 @llvm.x86.sse41.ptestz(<2 x i64> %c, <2 x i64> %c) %t2 = icmp eq i32 %t1, 1 %t3 = zext i1 %t2 to i32 ret i32 %t3 -; CHECK: bax -; CHECK: ptest -; CHECK-NOT: cmpl -; CHECK: ret } -define i16 @rnd16(i16 %arg) nounwind uwtable { +define i16 @rnd16(i16 %arg) nounwind { +; CHECK-LABEL: rnd16: +; CHECK: # BB#0: +; CHECK-NEXT: xorl %eax, %eax +; CHECK-NEXT: rdrandw %cx +; CHECK-NEXT: cmovbw %di, %ax +; CHECK-NEXT: addl %ecx, %eax +; CHECK-NEXT: # kill: %AX<def> %AX<kill> %EAX<kill> +; CHECK-NEXT: retq %1 = tail call { i16, i32 } @llvm.x86.rdrand.16() nounwind %2 = extractvalue { i16, i32 } %1, 0 %3 = extractvalue { i16, i32 } %1, 1 @@ -47,14 +64,16 @@ define i16 @rnd16(i16 %arg) nounwind uwtable { %5 = select i1 %4, i16 0, i16 %arg %6 = add i16 %5, %2 ret i16 %6 -; CHECK: rnd16 -; CHECK: rdrand -; CHECK: cmov -; CHECK-NOT: cmov -; CHECK: ret } -define i32 @rnd32(i32 %arg) nounwind uwtable { +define i32 @rnd32(i32 %arg) nounwind { +; CHECK-LABEL: rnd32: +; CHECK: # BB#0: +; CHECK-NEXT: xorl %eax, %eax +; CHECK-NEXT: rdrandl %ecx +; CHECK-NEXT: cmovbl %edi, %eax +; CHECK-NEXT: addl %ecx, %eax +; CHECK-NEXT: retq %1 = tail call { i32, i32 } @llvm.x86.rdrand.32() nounwind %2 = extractvalue { i32, i32 } %1, 0 %3 = extractvalue { i32, i32 } %1, 1 @@ -62,14 +81,16 @@ define i32 @rnd32(i32 %arg) nounwind uwtable { %5 = select i1 %4, i32 0, i32 %arg %6 = add i32 %5, %2 ret i32 %6 -; CHECK: rnd32 -; CHECK: rdrand -; CHECK: cmov -; CHECK-NOT: cmov -; CHECK: ret } -define i64 @rnd64(i64 %arg) nounwind uwtable { +define i64 @rnd64(i64 %arg) nounwind { +; CHECK-LABEL: rnd64: +; CHECK: # BB#0: +; CHECK-NEXT: xorl %eax, %eax +; CHECK-NEXT: rdrandq %rcx +; CHECK-NEXT: cmovbq %rdi, %rax +; CHECK-NEXT: addq %rcx, %rax +; CHECK-NEXT: retq %1 = tail call { i64, i32 } @llvm.x86.rdrand.64() nounwind %2 = extractvalue { i64, i32 } %1, 0 %3 = extractvalue { i64, i32 } %1, 1 @@ -77,14 +98,17 @@ define i64 @rnd64(i64 %arg) nounwind uwtable { %5 = select i1 %4, i64 0, i64 %arg %6 = add i64 %5, %2 ret i64 %6 -; CHECK: rnd64 -; CHECK: rdrand -; CHECK: cmov -; CHECK-NOT: cmov -; CHECK: ret } -define i16 @seed16(i16 %arg) nounwind uwtable { +define i16 @seed16(i16 %arg) nounwind { +; CHECK-LABEL: seed16: +; CHECK: # BB#0: +; CHECK-NEXT: xorl %eax, %eax +; CHECK-NEXT: rdseedw %cx +; CHECK-NEXT: cmovbw %di, %ax +; CHECK-NEXT: addl %ecx, %eax +; CHECK-NEXT: # kill: %AX<def> %AX<kill> %EAX<kill> +; CHECK-NEXT: retq %1 = tail call { i16, i32 } @llvm.x86.rdseed.16() nounwind %2 = extractvalue { i16, i32 } %1, 0 %3 = extractvalue { i16, i32 } %1, 1 @@ -92,14 +116,16 @@ define i16 @seed16(i16 %arg) nounwind uwtable { %5 = select i1 %4, i16 0, i16 %arg %6 = add i16 %5, %2 ret i16 %6 -; CHECK: seed16 -; CHECK: rdseed -; CHECK: cmov -; CHECK-NOT: cmov -; CHECK: ret } -define i32 @seed32(i32 %arg) nounwind uwtable { +define i32 @seed32(i32 %arg) nounwind { +; CHECK-LABEL: seed32: +; CHECK: # BB#0: +; CHECK-NEXT: xorl %eax, %eax +; CHECK-NEXT: rdseedl %ecx +; CHECK-NEXT: cmovbl %edi, %eax +; CHECK-NEXT: addl %ecx, %eax +; CHECK-NEXT: retq %1 = tail call { i32, i32 } @llvm.x86.rdseed.32() nounwind %2 = extractvalue { i32, i32 } %1, 0 %3 = extractvalue { i32, i32 } %1, 1 @@ -107,14 +133,16 @@ define i32 @seed32(i32 %arg) nounwind uwtable { %5 = select i1 %4, i32 0, i32 %arg %6 = add i32 %5, %2 ret i32 %6 -; CHECK: seed32 -; CHECK: rdseed -; CHECK: cmov -; CHECK-NOT: cmov -; CHECK: ret } -define i64 @seed64(i64 %arg) nounwind uwtable { +define i64 @seed64(i64 %arg) nounwind { +; CHECK-LABEL: seed64: +; CHECK: # BB#0: +; CHECK-NEXT: xorl %eax, %eax +; CHECK-NEXT: rdseedq %rcx +; CHECK-NEXT: cmovbq %rdi, %rax +; CHECK-NEXT: addq %rcx, %rax +; CHECK-NEXT: retq %1 = tail call { i64, i32 } @llvm.x86.rdseed.64() nounwind %2 = extractvalue { i64, i32 } %1, 0 %3 = extractvalue { i64, i32 } %1, 1 @@ -122,11 +150,6 @@ define i64 @seed64(i64 %arg) nounwind uwtable { %5 = select i1 %4, i64 0, i64 %arg %6 = add i64 %5, %2 ret i64 %6 -; CHECK: seed64 -; CHECK: rdseed -; CHECK: cmov -; CHECK-NOT: cmov -; CHECK: ret } declare i32 @llvm.x86.sse41.ptestz(<2 x i64>, <2 x i64>) nounwind readnone |