From 90cb5f2fc8dc25ba34a980254f471d991a65350d Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Mon, 19 Dec 2022 19:12:35 -0800 Subject: [PATCH] [RISCV] Add +xventanacondops command line to select-binop-identity.ll. NFC --- llvm/test/CodeGen/RISCV/select-binop-identity.ll | 68 ++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/llvm/test/CodeGen/RISCV/select-binop-identity.ll b/llvm/test/CodeGen/RISCV/select-binop-identity.ll index f9a9c2c..3d3cdd7 100644 --- a/llvm/test/CodeGen/RISCV/select-binop-identity.ll +++ b/llvm/test/CodeGen/RISCV/select-binop-identity.ll @@ -5,6 +5,8 @@ ; RUN: | FileCheck -check-prefix=RV64I %s ; RUN: llc -mtriple=riscv64 -mcpu=sifive-u74 -verify-machineinstrs < %s \ ; RUN: | FileCheck -check-prefix=SFB64 %s +; RUN: llc -mtriple=riscv64 -mattr=+xventanacondops -verify-machineinstrs < %s \ +; RUN: | FileCheck -check-prefix=CONDOPS64 %s ; InstCombine canonicalizes (c ? x | y : x) to (x | (c ? y : 0)) similar for ; other binary operations using their identity value as the constant. @@ -35,6 +37,15 @@ define signext i32 @and_select_all_ones_i32(i1 zeroext %c, i32 signext %x, i32 s ; SFB64-NEXT: .LBB0_2: ; SFB64-NEXT: mv a0, a2 ; SFB64-NEXT: ret +; +; CONDOPS64-LABEL: and_select_all_ones_i32: +; CONDOPS64: # %bb.0: +; CONDOPS64-NEXT: li a3, -1 +; CONDOPS64-NEXT: vt.maskcn a3, a3, a0 +; CONDOPS64-NEXT: vt.maskc a0, a1, a0 +; CONDOPS64-NEXT: or a0, a0, a3 +; CONDOPS64-NEXT: and a0, a0, a2 +; CONDOPS64-NEXT: ret %a = select i1 %c, i32 %x, i32 -1 %b = and i32 %a, %y ret i32 %b @@ -65,6 +76,15 @@ define i64 @and_select_all_ones_i64(i1 zeroext %c, i64 %x, i64 %y) { ; SFB64-NEXT: .LBB1_2: ; SFB64-NEXT: mv a0, a2 ; SFB64-NEXT: ret +; +; CONDOPS64-LABEL: and_select_all_ones_i64: +; CONDOPS64: # %bb.0: +; CONDOPS64-NEXT: vt.maskcn a1, a1, a0 +; CONDOPS64-NEXT: li a3, -1 +; CONDOPS64-NEXT: vt.maskc a0, a3, a0 +; CONDOPS64-NEXT: or a0, a0, a1 +; CONDOPS64-NEXT: and a0, a2, a0 +; CONDOPS64-NEXT: ret %a = select i1 %c, i64 -1, i64 %x %b = and i64 %y, %a ret i64 %b @@ -93,6 +113,12 @@ define signext i32 @or_select_all_zeros_i32(i1 zeroext %c, i32 signext %x, i32 s ; SFB64-NEXT: .LBB2_2: ; SFB64-NEXT: mv a0, a2 ; SFB64-NEXT: ret +; +; CONDOPS64-LABEL: or_select_all_zeros_i32: +; CONDOPS64: # %bb.0: +; CONDOPS64-NEXT: vt.maskc a0, a1, a0 +; CONDOPS64-NEXT: or a0, a2, a0 +; CONDOPS64-NEXT: ret %a = select i1 %c, i32 %x, i32 0 %b = or i32 %y, %a ret i32 %b @@ -123,6 +149,12 @@ define i64 @or_select_all_zeros_i64(i1 zeroext %c, i64 %x, i64 %y) { ; SFB64-NEXT: .LBB3_2: ; SFB64-NEXT: mv a0, a2 ; SFB64-NEXT: ret +; +; CONDOPS64-LABEL: or_select_all_zeros_i64: +; CONDOPS64: # %bb.0: +; CONDOPS64-NEXT: vt.maskcn a0, a1, a0 +; CONDOPS64-NEXT: or a0, a0, a2 +; CONDOPS64-NEXT: ret %a = select i1 %c, i64 0, i64 %x %b = or i64 %a, %y ret i64 %b @@ -151,6 +183,12 @@ define signext i32 @xor_select_all_zeros_i32(i1 zeroext %c, i32 signext %x, i32 ; SFB64-NEXT: .LBB4_2: ; SFB64-NEXT: mv a0, a2 ; SFB64-NEXT: ret +; +; CONDOPS64-LABEL: xor_select_all_zeros_i32: +; CONDOPS64: # %bb.0: +; CONDOPS64-NEXT: vt.maskcn a0, a1, a0 +; CONDOPS64-NEXT: xor a0, a2, a0 +; CONDOPS64-NEXT: ret %a = select i1 %c, i32 0, i32 %x %b = xor i32 %y, %a ret i32 %b @@ -181,6 +219,12 @@ define i64 @xor_select_all_zeros_i64(i1 zeroext %c, i64 %x, i64 %y) { ; SFB64-NEXT: .LBB5_2: ; SFB64-NEXT: mv a0, a2 ; SFB64-NEXT: ret +; +; CONDOPS64-LABEL: xor_select_all_zeros_i64: +; CONDOPS64: # %bb.0: +; CONDOPS64-NEXT: vt.maskc a0, a1, a0 +; CONDOPS64-NEXT: xor a0, a0, a2 +; CONDOPS64-NEXT: ret %a = select i1 %c, i64 %x, i64 0 %b = xor i64 %a, %y ret i64 %b @@ -209,6 +253,12 @@ define signext i32 @add_select_all_zeros_i32(i1 zeroext %c, i32 signext %x, i32 ; SFB64-NEXT: .LBB6_2: ; SFB64-NEXT: mv a0, a2 ; SFB64-NEXT: ret +; +; CONDOPS64-LABEL: add_select_all_zeros_i32: +; CONDOPS64: # %bb.0: +; CONDOPS64-NEXT: vt.maskcn a0, a1, a0 +; CONDOPS64-NEXT: addw a0, a2, a0 +; CONDOPS64-NEXT: ret %a = select i1 %c, i32 0, i32 %x %b = add i32 %y, %a ret i32 %b @@ -241,6 +291,12 @@ define i64 @add_select_all_zeros_i64(i1 zeroext %c, i64 %x, i64 %y) { ; SFB64-NEXT: .LBB7_2: ; SFB64-NEXT: mv a0, a2 ; SFB64-NEXT: ret +; +; CONDOPS64-LABEL: add_select_all_zeros_i64: +; CONDOPS64: # %bb.0: +; CONDOPS64-NEXT: vt.maskc a0, a1, a0 +; CONDOPS64-NEXT: add a0, a0, a2 +; CONDOPS64-NEXT: ret %a = select i1 %c, i64 %x, i64 0 %b = add i64 %a, %y ret i64 %b @@ -269,6 +325,12 @@ define signext i32 @sub_select_all_zeros_i32(i1 zeroext %c, i32 signext %x, i32 ; SFB64-NEXT: .LBB8_2: ; SFB64-NEXT: mv a0, a2 ; SFB64-NEXT: ret +; +; CONDOPS64-LABEL: sub_select_all_zeros_i32: +; CONDOPS64: # %bb.0: +; CONDOPS64-NEXT: vt.maskcn a0, a1, a0 +; CONDOPS64-NEXT: subw a0, a2, a0 +; CONDOPS64-NEXT: ret %a = select i1 %c, i32 0, i32 %x %b = sub i32 %y, %a ret i32 %b @@ -301,6 +363,12 @@ define i64 @sub_select_all_zeros_i64(i1 zeroext %c, i64 %x, i64 %y) { ; SFB64-NEXT: .LBB9_2: ; SFB64-NEXT: mv a0, a2 ; SFB64-NEXT: ret +; +; CONDOPS64-LABEL: sub_select_all_zeros_i64: +; CONDOPS64: # %bb.0: +; CONDOPS64-NEXT: vt.maskc a0, a1, a0 +; CONDOPS64-NEXT: sub a0, a2, a0 +; CONDOPS64-NEXT: ret %a = select i1 %c, i64 %x, i64 0 %b = sub i64 %y, %a ret i64 %b -- 2.7.4