Skip to content

Commit 82b179c

Browse files
authored
[RISCV][VLOPT] Consider EMUL if it is unknown in EMULAndEEWAreEqual (#139670)
Fix #139288
1 parent 1483659 commit 82b179c

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
lines changed

llvm/lib/Target/RISCV/RISCVVLOptimizer.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,7 @@ struct OperandInfo {
8383
OperandInfo() = delete;
8484

8585
static bool EMULAndEEWAreEqual(const OperandInfo &A, const OperandInfo &B) {
86-
return A.Log2EEW == B.Log2EEW && A.EMUL->first == B.EMUL->first &&
87-
A.EMUL->second == B.EMUL->second;
86+
return A.Log2EEW == B.Log2EEW && A.EMUL == B.EMUL;
8887
}
8988

9089
static bool EEWAreEqual(const OperandInfo &A, const OperandInfo &B) {

llvm/test/CodeGen/RISCV/rvv/vl-opt.mir

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -498,4 +498,29 @@ body: |
498498
%z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
499499
PseudoBR %bb.1
500500
...
501+
---
502+
name: EMUL_is_unknown
503+
tracksRegLiveness: true
504+
body: |
505+
bb.0.entry:
506+
; CHECK-LABEL: name: EMUL_is_unknown
507+
; CHECK: [[PseudoVMCLR_M_B4_:%[0-9]+]]:vr = PseudoVMCLR_M_B4 1, 0 /* e8 */
508+
; CHECK-NEXT: [[PseudoVMOR_MM_B4_:%[0-9]+]]:vmv0 = PseudoVMOR_MM_B4 [[PseudoVMCLR_M_B4_]], [[PseudoVMCLR_M_B4_]], 1, 0 /* e8 */
509+
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x0
510+
; CHECK-NEXT: [[PseudoVMV_S_X:%[0-9]+]]:vr = PseudoVMV_S_X $noreg, [[COPY]], 1, 5 /* e32 */
511+
; CHECK-NEXT: [[PseudoVMV_V_I_M8_:%[0-9]+]]:vrm8 = PseudoVMV_V_I_M8 $noreg, 0, 1, 5 /* e32 */, 0 /* tu, mu */
512+
; CHECK-NEXT: [[PseudoVREDMAX_VS_M8_E32_MASK:%[0-9]+]]:vrnov0 = PseudoVREDMAX_VS_M8_E32_MASK $noreg, killed [[PseudoVMV_V_I_M8_]], killed [[PseudoVMV_S_X]], [[PseudoVMOR_MM_B4_]], 1, 5 /* e32 */, 1 /* ta, mu */
513+
; CHECK-NEXT: [[PseudoVMV_X_S:%[0-9]+]]:gpr = PseudoVMV_X_S killed [[PseudoVREDMAX_VS_M8_E32_MASK]], 5 /* e32 */
514+
; CHECK-NEXT: $x10 = COPY [[PseudoVMV_X_S]]
515+
; CHECK-NEXT: PseudoRET implicit $x10
516+
%2:vr = PseudoVMCLR_M_B4 -1, 0 /* e8 */
517+
%3:vmv0 = PseudoVMOR_MM_B4 %2, %2, 1, 0 /* e8 */
518+
%4:gpr = COPY $x0
519+
%5:vr = PseudoVMV_S_X $noreg, %4, 1, 5 /* e32 */
520+
%6:vrm8 = PseudoVMV_V_I_M8 $noreg, 0, 1, 5 /* e32 */, 0 /* tu, mu */
521+
%7:vrnov0 = PseudoVREDMAX_VS_M8_E32_MASK $noreg, killed %6, killed %5, %3, 1, 5 /* e32 */, 1 /* ta, mu */
522+
%9:gpr = PseudoVMV_X_S killed %7, 5 /* e32 */
523+
$x10 = COPY %9
524+
PseudoRET implicit $x10
525+
...
501526

0 commit comments

Comments
 (0)