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 3 4define 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 12entry: 13 %select_ = select i1 %c, i64 %x, i64 2 14 %res = sub i64 %select_, 2 15 ret i64 %res 16} 17 18define 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 26entry: 27 %select_ = select i1 %c, i64 2, i64 %x 28 %res = sub i64 %select_, 2 29 ret i64 %res 30} 31 32define 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 41entry: 42 %select_ = select i1 %c, i64 %x, i64 2 43 %res = sub i64 2, %select_ 44 ret i64 %res 45} 46 47define 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 56entry: 57 %select_ = select i1 %c, i64 2, i64 %x 58 %res = sub i64 2, %select_ 59 ret i64 %res 60} 61