forked from OSchip/llvm-project
[RISCV][NFC] Add tests for scalable-vector DAGCombiner improvements
These will all be improved by future patches.
This commit is contained in:
parent
2aea830ec4
commit
60622b82a7
|
@ -1107,3 +1107,14 @@ define <vscale x 8 x i64> @vor_vx_nxv8i64_2(<vscale x 8 x i64> %va) {
|
|||
ret <vscale x 8 x i64> %vc
|
||||
}
|
||||
|
||||
define <vscale x 8 x i64> @vor_vx_nxv8i64_3(<vscale x 8 x i64> %va) {
|
||||
; CHECK-LABEL: vor_vx_nxv8i64_3:
|
||||
; CHECK: # %bb.0:
|
||||
; CHECK-NEXT: vsetvli a0, zero, e64,m8,ta,mu
|
||||
; CHECK-NEXT: vor.vi v8, v8, -1
|
||||
; CHECK-NEXT: ret
|
||||
%head = insertelement <vscale x 8 x i64> undef, i64 -1, i32 0
|
||||
%splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> undef, <vscale x 8 x i32> zeroinitializer
|
||||
%vc = or <vscale x 8 x i64> %va, %splat
|
||||
ret <vscale x 8 x i64> %vc
|
||||
}
|
||||
|
|
|
@ -1079,3 +1079,15 @@ define <vscale x 8 x i64> @vor_vx_nxv8i64_2(<vscale x 8 x i64> %va) {
|
|||
ret <vscale x 8 x i64> %vc
|
||||
}
|
||||
|
||||
|
||||
define <vscale x 8 x i64> @vor_vx_nxv8i64_3(<vscale x 8 x i64> %va) {
|
||||
; CHECK-LABEL: vor_vx_nxv8i64_3:
|
||||
; CHECK: # %bb.0:
|
||||
; CHECK-NEXT: vsetvli a0, zero, e64,m8,ta,mu
|
||||
; CHECK-NEXT: vor.vi v8, v8, -1
|
||||
; CHECK-NEXT: ret
|
||||
%head = insertelement <vscale x 8 x i64> undef, i64 -1, i32 0
|
||||
%splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> undef, <vscale x 8 x i32> zeroinitializer
|
||||
%vc = or <vscale x 8 x i64> %va, %splat
|
||||
ret <vscale x 8 x i64> %vc
|
||||
}
|
||||
|
|
|
@ -102,6 +102,32 @@ define <vscale x 8 x half> @vfmerge_zv_nxv8f16(<vscale x 8 x half> %va, <vscale
|
|||
ret <vscale x 8 x half> %vc
|
||||
}
|
||||
|
||||
define <vscale x 8 x half> @vmerge_truelhs_nxv8f16_0(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) {
|
||||
; CHECK-LABEL: vmerge_truelhs_nxv8f16_0:
|
||||
; CHECK: # %bb.0:
|
||||
; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu
|
||||
; CHECK-NEXT: vmset.m v0
|
||||
; CHECK-NEXT: vsetvli a0, zero, e16,m2,ta,mu
|
||||
; CHECK-NEXT: vmerge.vvm v8, v10, v8, v0
|
||||
; CHECK-NEXT: ret
|
||||
%mhead = insertelement <vscale x 8 x i1> undef, i1 1, i32 0
|
||||
%mtrue = shufflevector <vscale x 8 x i1> %mhead, <vscale x 8 x i1> undef, <vscale x 8 x i32> zeroinitializer
|
||||
%vc = select <vscale x 8 x i1> %mtrue, <vscale x 8 x half> %va, <vscale x 8 x half> %vb
|
||||
ret <vscale x 8 x half> %vc
|
||||
}
|
||||
|
||||
define <vscale x 8 x half> @vmerge_falselhs_nxv8f16_0(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) {
|
||||
; CHECK-LABEL: vmerge_falselhs_nxv8f16_0:
|
||||
; CHECK: # %bb.0:
|
||||
; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu
|
||||
; CHECK-NEXT: vmclr.m v0
|
||||
; CHECK-NEXT: vsetvli a0, zero, e16,m2,ta,mu
|
||||
; CHECK-NEXT: vmerge.vvm v8, v10, v8, v0
|
||||
; CHECK-NEXT: ret
|
||||
%vc = select <vscale x 8 x i1> zeroinitializer, <vscale x 8 x half> %va, <vscale x 8 x half> %vb
|
||||
ret <vscale x 8 x half> %vc
|
||||
}
|
||||
|
||||
define <vscale x 16 x half> @vfmerge_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, <vscale x 16 x i1> %cond) {
|
||||
; CHECK-LABEL: vfmerge_vv_nxv16f16:
|
||||
; CHECK: # %bb.0:
|
||||
|
@ -367,4 +393,3 @@ define <vscale x 8 x double> @vfmerge_zv_nxv8f64(<vscale x 8 x double> %va, <vsc
|
|||
%vc = select <vscale x 8 x i1> %cond, <vscale x 8 x double> %splat, <vscale x 8 x double> %va
|
||||
ret <vscale x 8 x double> %vc
|
||||
}
|
||||
|
||||
|
|
|
@ -102,6 +102,32 @@ define <vscale x 8 x half> @vfmerge_zv_nxv8f16(<vscale x 8 x half> %va, <vscale
|
|||
ret <vscale x 8 x half> %vc
|
||||
}
|
||||
|
||||
define <vscale x 8 x half> @vmerge_truelhs_nxv8f16_0(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) {
|
||||
; CHECK-LABEL: vmerge_truelhs_nxv8f16_0:
|
||||
; CHECK: # %bb.0:
|
||||
; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu
|
||||
; CHECK-NEXT: vmset.m v0
|
||||
; CHECK-NEXT: vsetvli a0, zero, e16,m2,ta,mu
|
||||
; CHECK-NEXT: vmerge.vvm v8, v10, v8, v0
|
||||
; CHECK-NEXT: ret
|
||||
%mhead = insertelement <vscale x 8 x i1> undef, i1 1, i32 0
|
||||
%mtrue = shufflevector <vscale x 8 x i1> %mhead, <vscale x 8 x i1> undef, <vscale x 8 x i32> zeroinitializer
|
||||
%vc = select <vscale x 8 x i1> %mtrue, <vscale x 8 x half> %va, <vscale x 8 x half> %vb
|
||||
ret <vscale x 8 x half> %vc
|
||||
}
|
||||
|
||||
define <vscale x 8 x half> @vmerge_falselhs_nxv8f16_0(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) {
|
||||
; CHECK-LABEL: vmerge_falselhs_nxv8f16_0:
|
||||
; CHECK: # %bb.0:
|
||||
; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu
|
||||
; CHECK-NEXT: vmclr.m v0
|
||||
; CHECK-NEXT: vsetvli a0, zero, e16,m2,ta,mu
|
||||
; CHECK-NEXT: vmerge.vvm v8, v10, v8, v0
|
||||
; CHECK-NEXT: ret
|
||||
%vc = select <vscale x 8 x i1> zeroinitializer, <vscale x 8 x half> %va, <vscale x 8 x half> %vb
|
||||
ret <vscale x 8 x half> %vc
|
||||
}
|
||||
|
||||
define <vscale x 16 x half> @vfmerge_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, <vscale x 16 x i1> %cond) {
|
||||
; CHECK-LABEL: vfmerge_vv_nxv16f16:
|
||||
; CHECK: # %bb.0:
|
||||
|
|
|
@ -777,3 +777,28 @@ define <vscale x 8 x i64> @vmerge_iv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8
|
|||
ret <vscale x 8 x i64> %vc
|
||||
}
|
||||
|
||||
define <vscale x 8 x i64> @vmerge_truelhs_nxv8i64_0(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb) {
|
||||
; CHECK-LABEL: vmerge_truelhs_nxv8i64_0:
|
||||
; CHECK: # %bb.0:
|
||||
; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu
|
||||
; CHECK-NEXT: vmset.m v0
|
||||
; CHECK-NEXT: vsetvli a0, zero, e64,m8,ta,mu
|
||||
; CHECK-NEXT: vmerge.vvm v8, v16, v8, v0
|
||||
; CHECK-NEXT: ret
|
||||
%mhead = insertelement <vscale x 8 x i1> undef, i1 1, i32 0
|
||||
%mtrue = shufflevector <vscale x 8 x i1> %mhead, <vscale x 8 x i1> undef, <vscale x 8 x i32> zeroinitializer
|
||||
%vc = select <vscale x 8 x i1> %mtrue, <vscale x 8 x i64> %va, <vscale x 8 x i64> %vb
|
||||
ret <vscale x 8 x i64> %vc
|
||||
}
|
||||
|
||||
define <vscale x 8 x i64> @vmerge_falselhs_nxv8i64_0(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb) {
|
||||
; CHECK-LABEL: vmerge_falselhs_nxv8i64_0:
|
||||
; CHECK: # %bb.0:
|
||||
; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu
|
||||
; CHECK-NEXT: vmclr.m v0
|
||||
; CHECK-NEXT: vsetvli a0, zero, e64,m8,ta,mu
|
||||
; CHECK-NEXT: vmerge.vvm v8, v16, v8, v0
|
||||
; CHECK-NEXT: ret
|
||||
%vc = select <vscale x 8 x i1> zeroinitializer, <vscale x 8 x i64> %va, <vscale x 8 x i64> %vb
|
||||
ret <vscale x 8 x i64> %vc
|
||||
}
|
||||
|
|
|
@ -749,3 +749,28 @@ define <vscale x 8 x i64> @vmerge_iv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8
|
|||
ret <vscale x 8 x i64> %vc
|
||||
}
|
||||
|
||||
define <vscale x 8 x i64> @vmerge_truelhs_nxv8i64_0(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb) {
|
||||
; CHECK-LABEL: vmerge_truelhs_nxv8i64_0:
|
||||
; CHECK: # %bb.0:
|
||||
; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu
|
||||
; CHECK-NEXT: vmset.m v0
|
||||
; CHECK-NEXT: vsetvli a0, zero, e64,m8,ta,mu
|
||||
; CHECK-NEXT: vmerge.vvm v8, v16, v8, v0
|
||||
; CHECK-NEXT: ret
|
||||
%mhead = insertelement <vscale x 8 x i1> undef, i1 1, i32 0
|
||||
%mtrue = shufflevector <vscale x 8 x i1> %mhead, <vscale x 8 x i1> undef, <vscale x 8 x i32> zeroinitializer
|
||||
%vc = select <vscale x 8 x i1> %mtrue, <vscale x 8 x i64> %va, <vscale x 8 x i64> %vb
|
||||
ret <vscale x 8 x i64> %vc
|
||||
}
|
||||
|
||||
define <vscale x 8 x i64> @vmerge_falselhs_nxv8i64_0(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb) {
|
||||
; CHECK-LABEL: vmerge_falselhs_nxv8i64_0:
|
||||
; CHECK: # %bb.0:
|
||||
; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu
|
||||
; CHECK-NEXT: vmclr.m v0
|
||||
; CHECK-NEXT: vsetvli a0, zero, e64,m8,ta,mu
|
||||
; CHECK-NEXT: vmerge.vvm v8, v16, v8, v0
|
||||
; CHECK-NEXT: ret
|
||||
%vc = select <vscale x 8 x i1> zeroinitializer, <vscale x 8 x i64> %va, <vscale x 8 x i64> %vb
|
||||
ret <vscale x 8 x i64> %vc
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue