Skip to content

Commit 1ad5d63

Browse files
authored
[LoongArch] Add generation support for [x]vnori.b (#158772)
1 parent d41bc68 commit 1ad5d63

File tree

4 files changed

+8
-6
lines changed

4 files changed

+8
-6
lines changed

llvm/lib/Target/LoongArch/LoongArchLASXInstrInfo.td

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1404,10 +1404,12 @@ def : Pat<(and (v32i8 LASX256:$xj), (v32i8 (SplatPat_uimm8 uimm8:$imm))),
14041404
// XVORI_B
14051405
def : Pat<(or (v32i8 LASX256:$xj), (v32i8 (SplatPat_uimm8 uimm8:$imm))),
14061406
(XVORI_B LASX256:$xj, uimm8:$imm)>;
1407-
14081407
// XVXORI_B
14091408
def : Pat<(xor (v32i8 LASX256:$xj), (v32i8 (SplatPat_uimm8 uimm8:$imm))),
14101409
(XVXORI_B LASX256:$xj, uimm8:$imm)>;
1410+
// XVNORI_B
1411+
def : Pat<(vnot (or (v32i8 LASX256:$xj), (v32i8 (SplatPat_uimm8 uimm8:$imm)))),
1412+
(XVNORI_B LASX256:$xj, uimm8:$imm)>;
14111413

14121414
// XVBSLL_V
14131415
foreach vt = [v32i8, v16i16, v8i32, v4i64, v8f32,

llvm/lib/Target/LoongArch/LoongArchLSXInstrInfo.td

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1598,10 +1598,12 @@ def : Pat<(and (v16i8 LSX128:$vj), (v16i8 (SplatPat_uimm8 uimm8:$imm))),
15981598
// VORI_B
15991599
def : Pat<(or (v16i8 LSX128:$vj), (v16i8 (SplatPat_uimm8 uimm8:$imm))),
16001600
(VORI_B LSX128:$vj, uimm8:$imm)>;
1601-
16021601
// VXORI_B
16031602
def : Pat<(xor (v16i8 LSX128:$vj), (v16i8 (SplatPat_uimm8 uimm8:$imm))),
16041603
(VXORI_B LSX128:$vj, uimm8:$imm)>;
1604+
// VNORI_B
1605+
def : Pat<(vnot (or (v16i8 LSX128:$vj), (v16i8 (SplatPat_uimm8 uimm8:$imm)))),
1606+
(VNORI_B LSX128:$vj, uimm8:$imm)>;
16051607

16061608
// VBSLL_V
16071609
foreach vt = [v16i8, v8i16, v4i32, v2i64, v4f32,

llvm/test/CodeGen/LoongArch/lasx/ir-instruction/nor.ll

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,7 @@ define void @nor_u_v32i8(ptr %res, ptr %a0) nounwind {
7474
; CHECK-LABEL: nor_u_v32i8:
7575
; CHECK: # %bb.0: # %entry
7676
; CHECK-NEXT: xvld $xr0, $a1, 0
77-
; CHECK-NEXT: xvrepli.b $xr1, 31
78-
; CHECK-NEXT: xvnor.v $xr0, $xr0, $xr1
77+
; CHECK-NEXT: xvnori.b $xr0, $xr0, 31
7978
; CHECK-NEXT: xvst $xr0, $a0, 0
8079
; CHECK-NEXT: ret
8180
entry:

llvm/test/CodeGen/LoongArch/lsx/ir-instruction/nor.ll

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,7 @@ define void @nor_u_v16i8(ptr %res, ptr %a0) nounwind {
7474
; CHECK-LABEL: nor_u_v16i8:
7575
; CHECK: # %bb.0: # %entry
7676
; CHECK-NEXT: vld $vr0, $a1, 0
77-
; CHECK-NEXT: vrepli.b $vr1, 31
78-
; CHECK-NEXT: vnor.v $vr0, $vr0, $vr1
77+
; CHECK-NEXT: vnori.b $vr0, $vr0, 31
7978
; CHECK-NEXT: vst $vr0, $a0, 0
8079
; CHECK-NEXT: ret
8180
entry:

0 commit comments

Comments
 (0)