From: Luke Lau Date: Fri, 23 Jun 2023 13:56:56 +0000 (+0100) Subject: [RISCV] Teach doPeepholeMaskedRVV to handle vslide{up,down} X-Git-Tag: upstream/17.0.6~3901 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0e9384a6c6ca86e042a1ed75c5f22db7cf14f132;p=platform%2Fupstream%2Fllvm.git [RISCV] Teach doPeepholeMaskedRVV to handle vslide{up,down} We already handle vslide1{up,down}, so this extends it to vslide{up,down}. This was unintentionally added in https://reviews.llvm.org/D150463 and then removed in 37cfcfcef76bb615b941d7077ca81168bd7ad080, but unless I'm missing something this should still be ok as the mask only controls what destination elements are written to. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D153631 --- diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td b/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td index c36c97d..64b57f2 100644 --- a/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td +++ b/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td @@ -3275,7 +3275,8 @@ multiclass VPseudoVSLDVWithPolicy { let VLMul = MInfo.value in { def "_" # MInfo.MX : VPseudoTernaryNoMaskWithPolicy; - def "_" # MInfo.MX # "_MASK" : VPseudoBinaryMaskPolicy; + def "_" # MInfo.MX # "_MASK" : VPseudoBinaryMaskPolicy, + RISCVMaskedPseudo; } } diff --git a/llvm/test/CodeGen/RISCV/rvv/rvv-peephole-vmerge-masked-vops.ll b/llvm/test/CodeGen/RISCV/rvv/rvv-peephole-vmerge-masked-vops.ll index 9b14816..e75a292 100644 --- a/llvm/test/CodeGen/RISCV/rvv/rvv-peephole-vmerge-masked-vops.ll +++ b/llvm/test/CodeGen/RISCV/rvv/rvv-peephole-vmerge-masked-vops.ll @@ -98,9 +98,7 @@ define @vpmerge_vslideup( %passthru, @llvm.riscv.vslideup.mask.nxv2i32( %passthru, %v, i64 %x, %m, i64 %vl, i64 0) %splat = insertelement poison, i1 -1, i32 0 @@ -114,9 +112,7 @@ define @vpmerge_vslidedown( %passthru, @llvm.riscv.vslidedown.mask.nxv2i32( %passthru, %v, i64 %x, %m, i64 %vl, i64 0) %splat = insertelement poison, i1 -1, i32 0 diff --git a/llvm/test/CodeGen/RISCV/rvv/rvv-peephole-vmerge-vops.ll b/llvm/test/CodeGen/RISCV/rvv/rvv-peephole-vmerge-vops.ll index 8a9e3c0..c4c849d 100644 --- a/llvm/test/CodeGen/RISCV/rvv/rvv-peephole-vmerge-vops.ll +++ b/llvm/test/CodeGen/RISCV/rvv/rvv-peephole-vmerge-vops.ll @@ -751,9 +751,8 @@ declare @llvm.riscv.vslideup.nxv2i32(, @vpselect_vslideup( %passthru, %v, i64 %x, %m, i32 zeroext %vl) { ; CHECK-LABEL: vpselect_vslideup: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma -; CHECK-NEXT: vslideup.vx v10, v9, a0 -; CHECK-NEXT: vmerge.vvm v8, v8, v10, v0 +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, mu +; CHECK-NEXT: vslideup.vx v8, v9, a0, v0.t ; CHECK-NEXT: ret %1 = zext i32 %vl to i64 %a = call @llvm.riscv.vslideup.nxv2i32( undef, %v, i64 %x, i64 %1, i64 0) @@ -765,9 +764,8 @@ declare @llvm.riscv.vslidedown.nxv2i32(, @vpselect_vslidedown( %passthru, %v, i64 %x, %m, i32 zeroext %vl) { ; CHECK-LABEL: vpselect_vslidedown: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma -; CHECK-NEXT: vslidedown.vx v9, v9, a0 -; CHECK-NEXT: vmerge.vvm v8, v8, v9, v0 +; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, mu +; CHECK-NEXT: vslidedown.vx v8, v9, a0, v0.t ; CHECK-NEXT: ret %1 = zext i32 %vl to i64 %a = call @llvm.riscv.vslidedown.nxv2i32( undef, %v, i64 %x, i64 %1, i64 0)