From: Elena Demikhovsky Date: Tue, 28 Jun 2016 06:25:38 +0000 (+0000) Subject: [X86 Target Lowering] Merged ICMP test. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=514f9dc33cb66ec0be29e36840ab314f9268d5af;p=llvm [X86 Target Lowering] Merged ICMP test. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273995 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/CodeGen/X86/2016-06-28-ICmpCrash.ll b/test/CodeGen/X86/2016-06-28-ICmpCrash.ll deleted file mode 100644 index f5a8d96fd47..00000000000 --- a/test/CodeGen/X86/2016-06-28-ICmpCrash.ll +++ /dev/null @@ -1,31 +0,0 @@ -;RUN: llc < %s -mcpu=core-avx2 - -target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" - -%struct.struct_1 = type { i24 } - -@a = global i8 0, align 1 -@b = global i8 0, align 1 -@d = global i8 0, align 1 -@e = global i8 0, align 1 -@c = global %struct.struct_1 zeroinitializer, align 4 - -; Function Attrs: norecurse nounwind uwtable -define void @_Z3fn1v() #0 { - %bf.load = load i32, i32* bitcast (%struct.struct_1* @c to i32*), align 4 - %bf.shl = shl i32 %bf.load, 8 - %bf.ashr = ashr exact i32 %bf.shl, 8 - %tobool4 = icmp ne i32 %bf.ashr, 0 - %conv = zext i1 %tobool4 to i32 - %x1 = load i8, i8* @e, align 1 - %conv6 = zext i8 %x1 to i32 - %add = add nuw nsw i32 %conv, %conv6 - %tobool7 = icmp ne i32 %add, 0 - %frombool = zext i1 %tobool7 to i8 - store i8 %frombool, i8* @b, align 1 - %tobool14 = icmp ne i32 %bf.shl, 0 - %frombool15 = zext i1 %tobool14 to i8 - store i8 %frombool15, i8* @d, align 1 - ret void -} \ No newline at end of file diff --git a/test/CodeGen/X86/cmp.ll b/test/CodeGen/X86/cmp.ll index eb9a2901142..94f7c54c285 100644 --- a/test/CodeGen/X86/cmp.ll +++ b/test/CodeGen/X86/cmp.ll @@ -255,3 +255,30 @@ define zeroext i1 @test19(i32 %L) { ; CHECK: testl %edi, %edi ; CHECK: setns %al } + +@d = global i8 0, align 1 + +; This test failed due to incorrect handling of "shift + icmp" sequence +define void @test20(i32 %bf.load, i8 %x1, i8* %b_addr) { + %bf.shl = shl i32 %bf.load, 8 + %bf.ashr = ashr exact i32 %bf.shl, 8 + %tobool4 = icmp ne i32 %bf.ashr, 0 + %conv = zext i1 %tobool4 to i32 + %conv6 = zext i8 %x1 to i32 + %add = add nuw nsw i32 %conv, %conv6 + %tobool7 = icmp ne i32 %add, 0 + %frombool = zext i1 %tobool7 to i8 + store i8 %frombool, i8* %b_addr, align 1 + %tobool14 = icmp ne i32 %bf.shl, 0 + %frombool15 = zext i1 %tobool14 to i8 + store i8 %frombool15, i8* @d, align 1 + ret void + +; CHECK-LABEL: test20 +; CHECK: andl +; CHECK: setne +; CHECK: addl +; CHECK: setne +; CHECK: testl +; CHECK: setne +} \ No newline at end of file