@@ -16,9 +16,9 @@ define <8 x i8> @not_signbit_mask_v8i8(<8 x i8> %a, <8 x i8> %b) {
1616; CHECK-ZVKB-LABEL: not_signbit_mask_v8i8:
1717; CHECK-ZVKB: # %bb.0:
1818; 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
19+ ; CHECK-ZVKB-NEXT: vsra .vi v8 , v8, 7
20+ ; CHECK-ZVKB-NEXT: vnot.v v8, v8
21+ ; CHECK-ZVKB-NEXT: vand.vv v8, v8, v9
2222; CHECK-ZVKB-NEXT: ret
2323 %cond = icmp sgt <8 x i8 > %a , splat (i8 -1 )
2424 %r = select <8 x i1 > %cond , <8 x i8 > %b , <8 x i8 > zeroinitializer
@@ -37,9 +37,9 @@ define <4 x i16> @not_signbit_mask_v4i16(<4 x i16> %a, <4 x i16> %b) {
3737; CHECK-ZVKB-LABEL: not_signbit_mask_v4i16:
3838; CHECK-ZVKB: # %bb.0:
3939; 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
40+ ; CHECK-ZVKB-NEXT: vsra .vi v8 , v8, 15
41+ ; CHECK-ZVKB-NEXT: vnot.v v8, v8
42+ ; CHECK-ZVKB-NEXT: vand.vv v8, v8, v9
4343; CHECK-ZVKB-NEXT: ret
4444 %cond = icmp sgt <4 x i16 > %a , splat (i16 -1 )
4545 %r = select <4 x i1 > %cond , <4 x i16 > %b , <4 x i16 > zeroinitializer
@@ -58,9 +58,8 @@ define <2 x i32> @not_signbit_mask_v2i32(<2 x i32> %a, <2 x i32> %b) {
5858; CHECK-ZVKB-LABEL: not_signbit_mask_v2i32:
5959; CHECK-ZVKB: # %bb.0:
6060; 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
61+ ; CHECK-ZVKB-NEXT: vsra.vi v8, v8, 31
62+ ; CHECK-ZVKB-NEXT: vandn.vv v8, v9, v8
6463; CHECK-ZVKB-NEXT: ret
6564 %cond = icmp sgt <2 x i32 > %a , splat (i32 -1 )
6665 %r = select <2 x i1 > %cond , <2 x i32 > %b , <2 x i32 > zeroinitializer
@@ -78,10 +77,10 @@ define <2 x i64> @not_signbit_mask_v2i64(<2 x i64> %a, <2 x i64> %b) {
7877;
7978; CHECK-ZVKB-LABEL: not_signbit_mask_v2i64:
8079; CHECK-ZVKB: # %bb.0:
80+ ; CHECK-ZVKB-NEXT: li a0, 63
8181; 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
82+ ; CHECK-ZVKB-NEXT: vsra.vx v8, v8, a0
83+ ; CHECK-ZVKB-NEXT: vandn.vv v8, v9, v8
8584; CHECK-ZVKB-NEXT: ret
8685 %cond = icmp sgt <2 x i64 > %a , splat (i64 -1 )
8786 %r = select <2 x i1 > %cond , <2 x i64 > %b , <2 x i64 > zeroinitializer
0 commit comments