Skip to content

Commit 5d636a2

Browse files
committed
[DAGCombine] Add test for folding vp.select.
1 parent 6cce67a commit 5d636a2

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed

llvm/test/CodeGen/RISCV/rvv/vselect-vp.ll

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -825,3 +825,75 @@ define <vscale x 2 x i1> @select_cond_x_cond(<vscale x 2 x i1> %x, <vscale x 2 x
825825
%a = call <vscale x 2 x i1> @llvm.vp.select.nxv2i1(<vscale x 2 x i1> %x, <vscale x 2 x i1> %y, <vscale x 2 x i1> %x, i32 %evl)
826826
ret <vscale x 2 x i1> %a
827827
}
828+
829+
define <vscale x 2 x i1> @select_undef_T_F(<vscale x 2 x i1> %x, <vscale x 2 x i1> %y, i32 zeroext %evl) {
830+
; CHECK-LABEL: select_undef_T_F:
831+
; CHECK: # %bb.0:
832+
; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
833+
; CHECK-NEXT: vmandn.mm v8, v8, v8
834+
; CHECK-NEXT: vmand.mm v9, v0, v8
835+
; CHECK-NEXT: vmor.mm v0, v9, v8
836+
; CHECK-NEXT: ret
837+
%a = call <vscale x 2 x i1> @llvm.vp.select.nxv2i1(<vscale x 2 x i1> poison, <vscale x 2 x i1> %x, <vscale x 2 x i1> %y, i32 %evl)
838+
ret <vscale x 2 x i1> %a
839+
}
840+
841+
define <vscale x 2 x i1> @select_undef_undef_F(<vscale x 2 x i1> %x, i32 zeroext %evl) {
842+
; CHECK-LABEL: select_undef_undef_F:
843+
; CHECK: # %bb.0:
844+
; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
845+
; CHECK-NEXT: vmor.mm v0, v8, v0
846+
; CHECK-NEXT: ret
847+
%a = call <vscale x 2 x i1> @llvm.vp.select.nxv2i1(<vscale x 2 x i1> poison, <vscale x 2 x i1> undef, <vscale x 2 x i1> %x, i32 %evl)
848+
ret <vscale x 2 x i1> %a
849+
}
850+
851+
define <vscale x 2 x i1> @select_unknown_undef_F(<vscale x 2 x i1> %x, <vscale x 2 x i1> %y, i32 zeroext %evl) {
852+
; CHECK-LABEL: select_unknown_undef_F:
853+
; CHECK: # %bb.0:
854+
; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
855+
; CHECK-NEXT: vmandn.mm v8, v8, v0
856+
; CHECK-NEXT: vmand.mm v9, v8, v0
857+
; CHECK-NEXT: vmor.mm v0, v9, v8
858+
; CHECK-NEXT: ret
859+
%a = call <vscale x 2 x i1> @llvm.vp.select.nxv2i1(<vscale x 2 x i1> %x, <vscale x 2 x i1> undef, <vscale x 2 x i1> %y, i32 %evl)
860+
ret <vscale x 2 x i1> %a
861+
}
862+
863+
define <vscale x 2 x i1> @select_unknown_T_undef(<vscale x 2 x i1> %x, <vscale x 2 x i1> %y, i32 zeroext %evl) {
864+
; CHECK-LABEL: select_unknown_T_undef:
865+
; CHECK: # %bb.0:
866+
; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
867+
; CHECK-NEXT: vmandn.mm v9, v8, v0
868+
; CHECK-NEXT: vmand.mm v8, v8, v0
869+
; CHECK-NEXT: vmor.mm v0, v8, v9
870+
; CHECK-NEXT: ret
871+
%a = call <vscale x 2 x i1> @llvm.vp.select.nxv2i1(<vscale x 2 x i1> %x, <vscale x 2 x i1> %y, <vscale x 2 x i1> poison, i32 %evl)
872+
ret <vscale x 2 x i1> %a
873+
}
874+
875+
define <vscale x 2 x i1> @select_false_T_F(<vscale x 2 x i1> %x, <vscale x 2 x i1> %y, <vscale x 2 x i1> %z, i32 zeroext %evl) {
876+
; CHECK-LABEL: select_false_T_F:
877+
; CHECK: # %bb.0:
878+
; CHECK-NEXT: vsetvli a1, zero, e8, mf4, ta, ma
879+
; CHECK-NEXT: vmclr.m v10
880+
; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
881+
; CHECK-NEXT: vmandn.mm v9, v9, v10
882+
; CHECK-NEXT: vmand.mm v8, v8, v10
883+
; CHECK-NEXT: vmor.mm v0, v8, v9
884+
; CHECK-NEXT: ret
885+
%a = call <vscale x 2 x i1> @llvm.vp.select.nxv2i1(<vscale x 2 x i1> zeroinitializer, <vscale x 2 x i1> %y, <vscale x 2 x i1> %z, i32 %evl)
886+
ret <vscale x 2 x i1> %a
887+
}
888+
889+
define <vscale x 2 x i1> @select_unknown_T_T(<vscale x 2 x i1> %x, <vscale x 2 x i1> %y, i32 zeroext %evl) {
890+
; CHECK-LABEL: select_unknown_T_T:
891+
; CHECK: # %bb.0:
892+
; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
893+
; CHECK-NEXT: vmandn.mm v9, v8, v0
894+
; CHECK-NEXT: vmand.mm v8, v8, v0
895+
; CHECK-NEXT: vmor.mm v0, v8, v9
896+
; CHECK-NEXT: ret
897+
%a = call <vscale x 2 x i1> @llvm.vp.select.nxv2i1(<vscale x 2 x i1> %x, <vscale x 2 x i1> %y, <vscale x 2 x i1> %y, i32 %evl)
898+
ret <vscale x 2 x i1> %a
899+
}

0 commit comments

Comments
 (0)