From: Sanjay Patel Date: Fri, 17 Feb 2017 21:10:40 +0000 (+0000) Subject: [x86] add tests for sext (not bool); NFC X-Git-Tag: android-x86-7.1-r4~20176 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=69382f17373a6e756e664368bdf885865b57a87b;p=android-x86%2Fexternal-llvm.git [x86] add tests for sext (not bool); NFC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@295495 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/CodeGen/X86/sext-i1.ll b/test/CodeGen/X86/sext-i1.ll index c10667dce70..935e88d5753 100644 --- a/test/CodeGen/X86/sext-i1.ll +++ b/test/CodeGen/X86/sext-i1.ll @@ -112,3 +112,75 @@ define i64 @t5(i32 %x) nounwind readnone ssp { ret i64 %t1 } +; FIXME: sext (xor Bool, -1) --> sub (zext Bool), 1 + +define i32 @select_0_or_1s(i1 %cond) { +; X32-LABEL: select_0_or_1s: +; X32: # BB#0: +; X32-NEXT: movb {{[0-9]+}}(%esp), %al +; X32-NEXT: notb %al +; X32-NEXT: movzbl %al, %eax +; X32-NEXT: andl $1, %eax +; X32-NEXT: negl %eax +; X32-NEXT: retl +; +; X64-LABEL: select_0_or_1s: +; X64: # BB#0: +; X64-NEXT: notb %dil +; X64-NEXT: movzbl %dil, %eax +; X64-NEXT: andl $1, %eax +; X64-NEXT: negl %eax +; X64-NEXT: retq + %not = xor i1 %cond, 1 + %sext = sext i1 %not to i32 + ret i32 %sext +} + +; FIXME: sext (xor Bool, -1) --> sub (zext Bool), 1 + +define i32 @select_0_or_1s_zeroext(i1 zeroext %cond) { +; X32-LABEL: select_0_or_1s_zeroext: +; X32: # BB#0: +; X32-NEXT: movb {{[0-9]+}}(%esp), %al +; X32-NEXT: notb %al +; X32-NEXT: movzbl %al, %eax +; X32-NEXT: andl $1, %eax +; X32-NEXT: negl %eax +; X32-NEXT: retl +; +; X64-LABEL: select_0_or_1s_zeroext: +; X64: # BB#0: +; X64-NEXT: notb %dil +; X64-NEXT: movzbl %dil, %eax +; X64-NEXT: andl $1, %eax +; X64-NEXT: negl %eax +; X64-NEXT: retq + %not = xor i1 %cond, 1 + %sext = sext i1 %not to i32 + ret i32 %sext +} + +; FIXME: sext (xor Bool, -1) --> sub (zext Bool), 1 + +define i32 @select_0_or_1s_signext(i1 signext %cond) { +; X32-LABEL: select_0_or_1s_signext: +; X32: # BB#0: +; X32-NEXT: movb {{[0-9]+}}(%esp), %al +; X32-NEXT: notb %al +; X32-NEXT: movzbl %al, %eax +; X32-NEXT: andl $1, %eax +; X32-NEXT: negl %eax +; X32-NEXT: retl +; +; X64-LABEL: select_0_or_1s_signext: +; X64: # BB#0: +; X64-NEXT: notb %dil +; X64-NEXT: movzbl %dil, %eax +; X64-NEXT: andl $1, %eax +; X64-NEXT: negl %eax +; X64-NEXT: retq + %not = xor i1 %cond, 1 + %sext = sext i1 %not to i32 + ret i32 %sext +} +