Skip to content

Commit 7eacdcf

Browse files
committed
[RISCV] VL pattern for VANDN ignoring XOR constant bits above SEW
1 parent a25e006 commit 7eacdcf

File tree

2 files changed

+3
-5
lines changed

2 files changed

+3
-5
lines changed

llvm/lib/Target/RISCV/RISCVInstrInfoZvk.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -737,7 +737,7 @@ foreach vti = AllIntegerVectors in {
737737
GetVTypePredicates<vti>.Predicates) in {
738738
def : Pat<(vti.Vector (riscv_and_vl (riscv_xor_vl
739739
(vti.Vector vti.RegClass:$rs1),
740-
(riscv_splat_vector -1),
740+
(riscv_splat_vector !cast<ImmLeaf>("allonessew"#vti.SEW)),
741741
(vti.Vector vti.RegClass:$passthru),
742742
(vti.Mask VMV0:$vm),
743743
VLOpFrag),

llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vandn.ll

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,7 @@ define <8 x i8> @not_signbit_mask_v8i8(<8 x i8> %a, <8 x i8> %b) {
1717
; CHECK-ZVKB: # %bb.0:
1818
; CHECK-ZVKB-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
1919
; 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
20+
; CHECK-ZVKB-NEXT: vandn.vv v8, v9, v8
2221
; CHECK-ZVKB-NEXT: ret
2322
%cond = icmp sgt <8 x i8> %a, splat (i8 -1)
2423
%r = select <8 x i1> %cond, <8 x i8> %b, <8 x i8> zeroinitializer
@@ -38,8 +37,7 @@ define <4 x i16> @not_signbit_mask_v4i16(<4 x i16> %a, <4 x i16> %b) {
3837
; CHECK-ZVKB: # %bb.0:
3938
; CHECK-ZVKB-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
4039
; 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
40+
; CHECK-ZVKB-NEXT: vandn.vv v8, v9, v8
4341
; CHECK-ZVKB-NEXT: ret
4442
%cond = icmp sgt <4 x i16> %a, splat (i16 -1)
4543
%r = select <4 x i1> %cond, <4 x i16> %b, <4 x i16> zeroinitializer

0 commit comments

Comments
 (0)