[InstCombine] Signed saturation patterns
[llvm-core.git] / test / Transforms / InstCombine / switch-constant-expr.ll
blobc2ea83b2adbd3291039c706189fd293c7e8f366a
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt < %s -instcombine -S | FileCheck %s
4 @g = global i32 0
6 ; PR30486
7 define i32 @single_case() {
8 ; CHECK-LABEL: @single_case(
9 ; CHECK-NEXT:    switch i32 ptrtoint (i32* @g to i32), label %x [
10 ; CHECK-NEXT:    ]
11 ; CHECK:       x:
12 ; CHECK-NEXT:    ret i32 0
14   switch i32 add (i32 ptrtoint (i32* @g to i32), i32 -1), label %x []
16   ret i32 0
19 define i32 @multiple_cases() {
20 ; CHECK-LABEL: @multiple_cases(
21 ; CHECK-NEXT:    switch i32 ptrtoint (i32* @g to i32), label %x [
22 ; CHECK-NEXT:    i32 2, label %one
23 ; CHECK-NEXT:    i32 3, label %two
24 ; CHECK-NEXT:    ]
25 ; CHECK:       x:
26 ; CHECK-NEXT:    ret i32 0
27 ; CHECK:       one:
28 ; CHECK-NEXT:    ret i32 1
29 ; CHECK:       two:
30 ; CHECK-NEXT:    ret i32 2
32   switch i32 add (i32 ptrtoint (i32* @g to i32), i32 -1), label %x [
33   i32 1, label %one
34   i32 2, label %two
35   ]
37   ret i32 0
39 one:
40   ret i32 1
42 two:
43   ret i32 2