Skip to content

Commit 529feec

Browse files
committed
[RISCV][test] Add fixed vectors tests for hasAndNot
1 parent 1940d78 commit 529feec

File tree

1 file changed

+89
-0
lines changed

1 file changed

+89
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2+
; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s | FileCheck %s
3+
; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s | FileCheck %s
4+
; RUN: llc -mtriple=riscv32 -mattr=+v,+zvkb -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK-ZVKB
5+
; RUN: llc -mtriple=riscv64 -mattr=+v,+zvkb -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK-ZVKB
6+
7+
define <8 x i8> @not_signbit_mask_v8i8(<8 x i8> %a, <8 x i8> %b) {
8+
; CHECK-LABEL: not_signbit_mask_v8i8:
9+
; CHECK: # %bb.0:
10+
; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
11+
; CHECK-NEXT: vmsgt.vi v0, v8, -1
12+
; CHECK-NEXT: vmv.v.i v8, 0
13+
; CHECK-NEXT: vmerge.vvm v8, v8, v9, v0
14+
; CHECK-NEXT: ret
15+
;
16+
; CHECK-ZVKB-LABEL: not_signbit_mask_v8i8:
17+
; CHECK-ZVKB: # %bb.0:
18+
; CHECK-ZVKB-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
19+
; CHECK-ZVKB-NEXT: vmsgt.vi v0, v8, -1
20+
; CHECK-ZVKB-NEXT: vmv.v.i v8, 0
21+
; CHECK-ZVKB-NEXT: vmerge.vvm v8, v8, v9, v0
22+
; CHECK-ZVKB-NEXT: ret
23+
%cond = icmp sgt <8 x i8> %a, splat (i8 -1)
24+
%r = select <8 x i1> %cond, <8 x i8> %b, <8 x i8> zeroinitializer
25+
ret <8 x i8> %r
26+
}
27+
28+
define <4 x i16> @not_signbit_mask_v4i16(<4 x i16> %a, <4 x i16> %b) {
29+
; CHECK-LABEL: not_signbit_mask_v4i16:
30+
; CHECK: # %bb.0:
31+
; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
32+
; CHECK-NEXT: vmsgt.vi v0, v8, -1
33+
; CHECK-NEXT: vmv.v.i v8, 0
34+
; CHECK-NEXT: vmerge.vvm v8, v8, v9, v0
35+
; CHECK-NEXT: ret
36+
;
37+
; CHECK-ZVKB-LABEL: not_signbit_mask_v4i16:
38+
; CHECK-ZVKB: # %bb.0:
39+
; CHECK-ZVKB-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
40+
; CHECK-ZVKB-NEXT: vmsgt.vi v0, v8, -1
41+
; CHECK-ZVKB-NEXT: vmv.v.i v8, 0
42+
; CHECK-ZVKB-NEXT: vmerge.vvm v8, v8, v9, v0
43+
; CHECK-ZVKB-NEXT: ret
44+
%cond = icmp sgt <4 x i16> %a, splat (i16 -1)
45+
%r = select <4 x i1> %cond, <4 x i16> %b, <4 x i16> zeroinitializer
46+
ret <4 x i16> %r
47+
}
48+
49+
define <2 x i32> @not_signbit_mask_v2i32(<2 x i32> %a, <2 x i32> %b) {
50+
; CHECK-LABEL: not_signbit_mask_v2i32:
51+
; CHECK: # %bb.0:
52+
; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
53+
; CHECK-NEXT: vmsgt.vi v0, v8, -1
54+
; CHECK-NEXT: vmv.v.i v8, 0
55+
; CHECK-NEXT: vmerge.vvm v8, v8, v9, v0
56+
; CHECK-NEXT: ret
57+
;
58+
; CHECK-ZVKB-LABEL: not_signbit_mask_v2i32:
59+
; CHECK-ZVKB: # %bb.0:
60+
; CHECK-ZVKB-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
61+
; CHECK-ZVKB-NEXT: vmsgt.vi v0, v8, -1
62+
; CHECK-ZVKB-NEXT: vmv.v.i v8, 0
63+
; CHECK-ZVKB-NEXT: vmerge.vvm v8, v8, v9, v0
64+
; CHECK-ZVKB-NEXT: ret
65+
%cond = icmp sgt <2 x i32> %a, splat (i32 -1)
66+
%r = select <2 x i1> %cond, <2 x i32> %b, <2 x i32> zeroinitializer
67+
ret <2 x i32> %r
68+
}
69+
70+
define <2 x i64> @not_signbit_mask_v2i64(<2 x i64> %a, <2 x i64> %b) {
71+
; CHECK-LABEL: not_signbit_mask_v2i64:
72+
; CHECK: # %bb.0:
73+
; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma
74+
; CHECK-NEXT: vmsgt.vi v0, v8, -1
75+
; CHECK-NEXT: vmv.v.i v8, 0
76+
; CHECK-NEXT: vmerge.vvm v8, v8, v9, v0
77+
; CHECK-NEXT: ret
78+
;
79+
; CHECK-ZVKB-LABEL: not_signbit_mask_v2i64:
80+
; CHECK-ZVKB: # %bb.0:
81+
; CHECK-ZVKB-NEXT: vsetivli zero, 2, e64, m1, ta, ma
82+
; CHECK-ZVKB-NEXT: vmsgt.vi v0, v8, -1
83+
; CHECK-ZVKB-NEXT: vmv.v.i v8, 0
84+
; CHECK-ZVKB-NEXT: vmerge.vvm v8, v8, v9, v0
85+
; CHECK-ZVKB-NEXT: ret
86+
%cond = icmp sgt <2 x i64> %a, splat (i64 -1)
87+
%r = select <2 x i1> %cond, <2 x i64> %b, <2 x i64> zeroinitializer
88+
ret <2 x i64> %r
89+
}

0 commit comments

Comments
 (0)