[InstCombine] Signed saturation patterns
[llvm-core.git] / test / CodeGen / MSP430 / selectcc.ll
blob28b90f0131703e5ad8ba2e4f01d84b7be3f99072
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=msp430-- < %s | FileCheck %s
4 define i16 @select_to_shifts_i16(i16 %a, i16 %b) {
5 ; CHECK-LABEL: select_to_shifts_i16:
6 ; CHECK:       ; %bb.0:
7 ; CHECK-NEXT:    mov r12, r14
8 ; CHECK-NEXT:    clr r12
9 ; CHECK-NEXT:    bit #2, r14
10 ; CHECK-NEXT:    jeq .LBB0_2
11 ; CHECK-NEXT:  ; %bb.1:
12 ; CHECK-NEXT:    mov r13, r12
13 ; CHECK-NEXT:  .LBB0_2:
14 ; CHECK-NEXT:    ret
15   %and = and i16 %a, 2
16   %tobool = icmp eq i16 %and, 0
17   %select = select i1 %tobool, i16 0, i16 %b
18   ret i16 %select
21 define i32 @select_to_shifts_i32(i32 %a, i32 %b) {
22 ; CHECK-LABEL: select_to_shifts_i32:
23 ; CHECK:       ; %bb.0:
24 ; CHECK-NEXT:    mov r12, r11
25 ; CHECK-NEXT:    and #2, r11
26 ; CHECK-NEXT:    clr r13
27 ; CHECK-NEXT:    tst r11
28 ; CHECK-NEXT:    clr r12
29 ; CHECK-NEXT:    jne .LBB1_3
30 ; CHECK-NEXT:  ; %bb.1:
31 ; CHECK-NEXT:    tst r11
32 ; CHECK-NEXT:    jne .LBB1_4
33 ; CHECK-NEXT:  .LBB1_2:
34 ; CHECK-NEXT:    ret
35 ; CHECK-NEXT:  .LBB1_3:
36 ; CHECK-NEXT:    mov r14, r12
37 ; CHECK-NEXT:    tst r11
38 ; CHECK-NEXT:    jeq .LBB1_2
39 ; CHECK-NEXT:  .LBB1_4:
40 ; CHECK-NEXT:    mov r15, r13
41 ; CHECK-NEXT:    ret
42   %and = and i32 %a, 2
43   %tobool = icmp eq i32 %and, 0
44   %select = select i1 %tobool, i32 0, i32 %b
45   ret i32 %select