diff options
author | Craig Topper <craig.topper@intel.com> | 2017-09-01 16:40:24 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@intel.com> | 2017-09-01 16:40:24 +0000 |
commit | 2a75b6f26b4da5edadf6a11540c17792ccce38c3 (patch) | |
tree | 9775d91e10071cadaecd4b301d3f36b605bab47f | |
parent | 5e8b94c137d1a6f182dbb5afe0f739724c2dddd7 (diff) | |
download | bcm5719-llvm-2a75b6f26b4da5edadf6a11540c17792ccce38c3.tar.gz bcm5719-llvm-2a75b6f26b4da5edadf6a11540c17792ccce38c3.zip |
[X86] Add test case I forgot to commit with r312285.
llvm-svn: 312335
-rw-r--r-- | llvm/test/CodeGen/X86/pr34381.ll | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/pr34381.ll b/llvm/test/CodeGen/X86/pr34381.ll new file mode 100644 index 00000000000..dc5916d212d --- /dev/null +++ b/llvm/test/CodeGen/X86/pr34381.ll @@ -0,0 +1,49 @@ +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py +;RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mattr=slow-incdec -fast-isel -O0 | FileCheck %s + +@var_21 = external constant i32, align 4 +@var_29 = external constant i8, align 1 +@var_390 = external global i32, align 4 +@var_11 = external constant i8, align 1 +@var_370 = external global i8, align 1 + +; Function Attrs: noinline nounwind optnone uwtable +define void @_Z3foov() { +; CHECK-LABEL: _Z3foov: +; CHECK: # BB#0: # %entry +; CHECK-NEXT: movl {{.*}}(%rip), %eax +; CHECK-NEXT: movsbl {{.*}}(%rip), %ecx +; CHECK-NEXT: negl %ecx +; CHECK-NEXT: subl %ecx, %eax +; CHECK-NEXT: setb %dl +; CHECK-NEXT: addb $-1, %dl +; CHECK-NEXT: sete %sil +; CHECK-NEXT: movzbl %sil, %ecx +; CHECK-NEXT: movl %ecx, {{.*}}(%rip) +; CHECK-NEXT: movb {{.*}}(%rip), %sil +; CHECK-NEXT: movsbl %sil, %ecx +; CHECK-NEXT: movw %cx, %di +; CHECK-NEXT: movb %dil, %sil +; CHECK-NEXT: movb %sil, var_370 +; CHECK-NEXT: movl %eax, -{{[0-9]+}}(%rsp) # 4-byte Spill +; CHECK-NEXT: movb %dl, -{{[0-9]+}}(%rsp) # 1-byte Spill +; CHECK-NEXT: retq +entry: + %0 = load i32, i32* @var_21, align 4 + %1 = load i8, i8* @var_29, align 1 + %conv = sext i8 %1 to i32 + %sub = sub nsw i32 0, %conv + %cmp = icmp ult i32 %0, %sub + %conv1 = zext i1 %cmp to i32 + %add = add nsw i32 %conv1, -1 + %conv2 = trunc i32 %add to i8 + %tobool = icmp ne i8 %conv2, 0 + %lnot = xor i1 %tobool, true + %conv3 = zext i1 %lnot to i32 + store i32 %conv3, i32* @var_390, align 4 + %2 = load i8, i8* @var_11, align 1 + %conv4 = sext i8 %2 to i16 + %conv5 = trunc i16 %conv4 to i8 + store i8 %conv5, i8* @var_370, align 1 + ret void +} |