Skip to content

Commit 8665140

Browse files
Fros1erlukel97
authored andcommitted
optimize check and fix conflict in test
1 parent 3d5223f commit 8665140

File tree

2 files changed

+34
-3
lines changed

2 files changed

+34
-3
lines changed

llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27004,7 +27004,7 @@ static SDValue scalarizeBinOpOfSplats(SDNode *N, SelectionDAG &DAG,
2700427004
Src0.getValueType().getVectorElementType() != EltVT ||
2700527005
Src1.getValueType().getVectorElementType() != EltVT ||
2700627006
!(IsBothSplatVector || TLI.isExtractVecEltCheap(VT, Index0)) ||
27007-
(LegalTypes && !TLI.isOperationLegalOrCustom(Opcode, EltVT)) ||
27007+
(LegalTypes && !TLI.isTypeLegal(EltVT)) ||
2700827008
!(EltAction == TargetLoweringBase::Legal ||
2700927009
EltAction == TargetLoweringBase::Custom))
2701027010
return SDValue();

llvm/test/CodeGen/RISCV/rvv/vmul-sdnode.ll

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2-
; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV32
2+
; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV32,RV32NOM
33
; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV64,RV64NOM
44

5-
; RUN: llc -mtriple=riscv32 -mattr=+v,+m -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV32
5+
; RUN: llc -mtriple=riscv32 -mattr=+v,+m -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV32,RV32M
66
; RUN: llc -mtriple=riscv64 -mattr=+v,+m -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV64,RV64M
77

88
define <vscale x 1 x i8> @vmul_vv_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb) {
@@ -864,13 +864,44 @@ define <vscale x 8 x i64> @vmul_vi_nxv8i64_2(<vscale x 8 x i64> %va) {
864864
}
865865

866866
define <vscale x 8 x i64> @vmul_xx_nxv8i64(i64 %a, i64 %b) nounwind {
867+
; RV32NOM-LABEL: vmul_xx_nxv8i64:
868+
; RV32NOM: # %bb.0:
869+
; RV32NOM-NEXT: addi sp, sp, -16
870+
; RV32NOM-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
871+
; RV32NOM-NEXT: call __muldi3
872+
; RV32NOM-NEXT: sw a1, 4(sp)
873+
; RV32NOM-NEXT: sw a0, 0(sp)
874+
; RV32NOM-NEXT: mv a0, sp
875+
; RV32NOM-NEXT: vsetvli a1, zero, e64, m8, ta, ma
876+
; RV32NOM-NEXT: vlse64.v v8, (a0), zero
877+
; RV32NOM-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
878+
; RV32NOM-NEXT: addi sp, sp, 16
879+
; RV32NOM-NEXT: ret
880+
;
867881
; RV64NOM-LABEL: vmul_xx_nxv8i64:
868882
; RV64NOM: # %bb.0:
869883
; RV64NOM-NEXT: vsetvli a2, zero, e64, m8, ta, ma
870884
; RV64NOM-NEXT: vmv.v.x v8, a0
871885
; RV64NOM-NEXT: vmul.vx v8, v8, a1
872886
; RV64NOM-NEXT: ret
873887
;
888+
; RV32M-LABEL: vmul_xx_nxv8i64:
889+
; RV32M: # %bb.0:
890+
; RV32M-NEXT: addi sp, sp, -16
891+
; RV32M-NEXT: mul a4, a0, a2
892+
; RV32M-NEXT: sw a4, 8(sp)
893+
; RV32M-NEXT: mul a3, a0, a3
894+
; RV32M-NEXT: mulhu a0, a0, a2
895+
; RV32M-NEXT: add a0, a0, a3
896+
; RV32M-NEXT: mul a1, a1, a2
897+
; RV32M-NEXT: add a0, a0, a1
898+
; RV32M-NEXT: sw a0, 12(sp)
899+
; RV32M-NEXT: addi a0, sp, 8
900+
; RV32M-NEXT: vsetvli a1, zero, e64, m8, ta, ma
901+
; RV32M-NEXT: vlse64.v v8, (a0), zero
902+
; RV32M-NEXT: addi sp, sp, 16
903+
; RV32M-NEXT: ret
904+
;
874905
; RV64M-LABEL: vmul_xx_nxv8i64:
875906
; RV64M: # %bb.0:
876907
; RV64M-NEXT: mul a0, a0, a1

0 commit comments

Comments
 (0)