[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / X86 / pr32515.ll
blobaeb6803867aaaa8a3beb122f52ec9ac7fbcd603c
1 ; RUN: llc -O0 -mtriple=x86_64-unknown -mcpu=skx -o - %s
2 ; RUN: llc     -mtriple=x86_64-unknown -mcpu=skx -o - %s
3 ; RUN: llc -O0 -mtriple=i686-unknown   -mcpu=skx -o - %s
4 ; RUN: llc     -mtriple=i686-unknown   -mcpu=skx -o - %s
5 ; REQUIRES: asserts
7 @var_26 = external global i16, align 2
9 define void @foo() #0 {
10  %1 = alloca i16, align 2
11  %2 = load i16, i16* @var_26, align 2
12  %3 = zext i16 %2 to i32
13  %4 = icmp ne i32 %3, 7
14  %5 = zext i1 %4 to i16
15  store i16 %5, i16* %1, align 2
16  %6 = load i16, i16* @var_26, align 2
17  %7 = zext i16 %6 to i32
18  %8 = and i32 1, %7
19  %9 = shl i32 %8, 0
20  %10 = load i16, i16* @var_26, align 2
21  %11 = zext i16 %10 to i32
22  %12 = icmp ne i32 %11, 7
23  %13 = zext i1 %12 to i32
24  %14 = and i32 %9, %13
25  %15 = icmp ne i32 %14, 0
26  %16 = zext i1 %15 to i8
27  store i8 %16, i8* undef, align 1
28  unreachable
29  }