1c158ddd9SMikhail Gudim; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 2c158ddd9SMikhail Gudim; RUN: llc -mtriple=riscv64 < %s | FileCheck %s 3c158ddd9SMikhail Gudim 4c158ddd9SMikhail Gudimdefine i64 @fold_binop_into_select_0(i1 %c, i64 %x) { 5c158ddd9SMikhail Gudim; CHECK-LABEL: fold_binop_into_select_0: 6c158ddd9SMikhail Gudim; CHECK: # %bb.0: # %entry 7c158ddd9SMikhail Gudim; CHECK-NEXT: addi a1, a1, -2 8c158ddd9SMikhail Gudim; CHECK-NEXT: slli a0, a0, 63 9c158ddd9SMikhail Gudim; CHECK-NEXT: srai a0, a0, 63 10c158ddd9SMikhail Gudim; CHECK-NEXT: and a0, a0, a1 11c158ddd9SMikhail Gudim; CHECK-NEXT: ret 12c158ddd9SMikhail Gudimentry: 13c158ddd9SMikhail Gudim %select_ = select i1 %c, i64 %x, i64 2 14c158ddd9SMikhail Gudim %res = sub i64 %select_, 2 15c158ddd9SMikhail Gudim ret i64 %res 16c158ddd9SMikhail Gudim} 17c158ddd9SMikhail Gudim 18c158ddd9SMikhail Gudimdefine i64 @fold_binop_into_select_1(i1 %c, i64 %x) { 19c158ddd9SMikhail Gudim; CHECK-LABEL: fold_binop_into_select_1: 20c158ddd9SMikhail Gudim; CHECK: # %bb.0: # %entry 21c158ddd9SMikhail Gudim; CHECK-NEXT: andi a0, a0, 1 22c158ddd9SMikhail Gudim; CHECK-NEXT: addi a1, a1, -2 23c158ddd9SMikhail Gudim; CHECK-NEXT: addi a0, a0, -1 24c158ddd9SMikhail Gudim; CHECK-NEXT: and a0, a0, a1 25c158ddd9SMikhail Gudim; CHECK-NEXT: ret 26c158ddd9SMikhail Gudimentry: 27c158ddd9SMikhail Gudim %select_ = select i1 %c, i64 2, i64 %x 28c158ddd9SMikhail Gudim %res = sub i64 %select_, 2 29c158ddd9SMikhail Gudim ret i64 %res 30c158ddd9SMikhail Gudim} 31c158ddd9SMikhail Gudim 32c158ddd9SMikhail Gudimdefine i64 @fold_binop_into_select_2(i1 %c, i64 %x) { 33c158ddd9SMikhail Gudim; CHECK-LABEL: fold_binop_into_select_2: 34c158ddd9SMikhail Gudim; CHECK: # %bb.0: # %entry 35c158ddd9SMikhail Gudim; CHECK-NEXT: li a2, 2 36c158ddd9SMikhail Gudim; CHECK-NEXT: slli a0, a0, 63 37*9122c523SPengcheng Wang; CHECK-NEXT: sub a2, a2, a1 38c158ddd9SMikhail Gudim; CHECK-NEXT: srai a0, a0, 63 39c158ddd9SMikhail Gudim; CHECK-NEXT: and a0, a0, a2 40c158ddd9SMikhail Gudim; CHECK-NEXT: ret 41c158ddd9SMikhail Gudimentry: 42c158ddd9SMikhail Gudim %select_ = select i1 %c, i64 %x, i64 2 43c158ddd9SMikhail Gudim %res = sub i64 2, %select_ 44c158ddd9SMikhail Gudim ret i64 %res 45c158ddd9SMikhail Gudim} 46c158ddd9SMikhail Gudim 47c158ddd9SMikhail Gudimdefine i64 @fold_binop_into_select_3(i1 %c, i64 %x) { 48c158ddd9SMikhail Gudim; CHECK-LABEL: fold_binop_into_select_3: 49c158ddd9SMikhail Gudim; CHECK: # %bb.0: # %entry 50c158ddd9SMikhail Gudim; CHECK-NEXT: andi a0, a0, 1 51c158ddd9SMikhail Gudim; CHECK-NEXT: li a2, 2 52c158ddd9SMikhail Gudim; CHECK-NEXT: sub a2, a2, a1 53c158ddd9SMikhail Gudim; CHECK-NEXT: addi a0, a0, -1 54c158ddd9SMikhail Gudim; CHECK-NEXT: and a0, a0, a2 55c158ddd9SMikhail Gudim; CHECK-NEXT: ret 56c158ddd9SMikhail Gudimentry: 57c158ddd9SMikhail Gudim %select_ = select i1 %c, i64 2, i64 %x 58c158ddd9SMikhail Gudim %res = sub i64 2, %select_ 59c158ddd9SMikhail Gudim ret i64 %res 60c158ddd9SMikhail Gudim} 61