[RISCV] Match vcompress during shuffle lowering (#117748)
[llvm-project.git] / llvm / test / CodeGen / RISCV / fold-binop-into-select.ll
blob2036e7c7adfa81c76467c91508186ab3a216d354
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
2 ; RUN: llc -mtriple=riscv64 < %s  | FileCheck  %s
4 define i64 @fold_binop_into_select_0(i1 %c, i64 %x) {
5 ; CHECK-LABEL: fold_binop_into_select_0:
6 ; CHECK:       # %bb.0: # %entry
7 ; CHECK-NEXT:    addi a1, a1, -2
8 ; CHECK-NEXT:    slli a0, a0, 63
9 ; CHECK-NEXT:    srai a0, a0, 63
10 ; CHECK-NEXT:    and a0, a0, a1
11 ; CHECK-NEXT:    ret
12 entry:
13   %select_ = select i1 %c, i64 %x, i64 2
14   %res = sub i64 %select_, 2
15   ret i64 %res
18 define i64 @fold_binop_into_select_1(i1 %c, i64 %x) {
19 ; CHECK-LABEL: fold_binop_into_select_1:
20 ; CHECK:       # %bb.0: # %entry
21 ; CHECK-NEXT:    andi a0, a0, 1
22 ; CHECK-NEXT:    addi a1, a1, -2
23 ; CHECK-NEXT:    addi a0, a0, -1
24 ; CHECK-NEXT:    and a0, a0, a1
25 ; CHECK-NEXT:    ret
26 entry:
27   %select_ = select i1 %c, i64 2, i64 %x
28   %res = sub i64 %select_, 2
29   ret i64 %res
32 define i64 @fold_binop_into_select_2(i1 %c, i64 %x) {
33 ; CHECK-LABEL: fold_binop_into_select_2:
34 ; CHECK:       # %bb.0: # %entry
35 ; CHECK-NEXT:    li a2, 2
36 ; CHECK-NEXT:    slli a0, a0, 63
37 ; CHECK-NEXT:    sub a2, a2, a1
38 ; CHECK-NEXT:    srai a0, a0, 63
39 ; CHECK-NEXT:    and a0, a0, a2
40 ; CHECK-NEXT:    ret
41 entry:
42   %select_ = select i1 %c, i64 %x, i64 2
43   %res = sub i64 2, %select_
44   ret i64 %res
47 define i64 @fold_binop_into_select_3(i1 %c, i64 %x) {
48 ; CHECK-LABEL: fold_binop_into_select_3:
49 ; CHECK:       # %bb.0: # %entry
50 ; CHECK-NEXT:    andi a0, a0, 1
51 ; CHECK-NEXT:    li a2, 2
52 ; CHECK-NEXT:    sub a2, a2, a1
53 ; CHECK-NEXT:    addi a0, a0, -1
54 ; CHECK-NEXT:    and a0, a0, a2
55 ; CHECK-NEXT:    ret
56 entry:
57   %select_ = select i1 %c, i64 2, i64 %x
58   %res = sub i64 2, %select_
59   ret i64 %res