Skip to content

Commit 92b71ed

Browse files
committed
Revert "Add tuning feature for p470 and p670"
This reverts commit a2d5a537a98111c8659dad1d85dc4f3a2b4a7786.
1 parent ed612d2 commit 92b71ed

File tree

4 files changed

+6
-31
lines changed

4 files changed

+6
-31
lines changed

llvm/lib/Target/RISCV/RISCVFeatures.td

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1357,11 +1357,6 @@ def TuneOptimizedZeroStrideLoad
13571357
"true", "Optimized (perform fewer memory operations)"
13581358
"zero-stride vector load">;
13591359

1360-
def TuneOptimizedVectorGather
1361-
: SubtargetFeature<"optimized-vector-gather", "HasOptimizedVectorGather",
1362-
"true", "At LMUL > 1 vrgather.vv doesn't read from"
1363-
"registers that have no indices">;
1364-
13651360
def Experimental
13661361
: SubtargetFeature<"experimental", "HasExperimental",
13671362
"true", "Experimental intrinsics">;

llvm/lib/Target/RISCV/RISCVISelLowering.cpp

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10331,11 +10331,10 @@ SDValue RISCVTargetLowering::lowerVECTOR_REVERSE(SDValue Op,
1033110331
MVT XLenVT = Subtarget.getXLenVT();
1033210332
auto [Mask, VL] = getDefaultVLOps(VecVT, ContainerVT, DL, DAG, Subtarget);
1033310333

10334-
// On some uarchs vrgather.vv will read from every input register for each
10335-
// output register, regardless of the indices. However to reverse a vector
10336-
// each output register only needs to read from one register. So decompose it
10337-
// into LMUL * M1 vrgather.vvs, so we get O(LMUL) performance instead of
10338-
// O(LMUL^2).
10334+
// On most uarchs vrgather.vv is quadratic in LMUL because each output
10335+
// register may read from LMUL registers. However to reverse a vector each
10336+
// output register only needs to read from one register. So decompose it into
10337+
// LMUL * M1 vrgather.vvs, so we get O(LMUL) performance instead of O(LMUL^2).
1033910338
//
1034010339
// vsetvli a1, zero, e64, m4, ta, ma
1034110340
// vrgatherei16.vv v12, v8, v16
@@ -10345,8 +10344,7 @@ SDValue RISCVTargetLowering::lowerVECTOR_REVERSE(SDValue Op,
1034510344
// vrgather.vv v14, v9, v16
1034610345
// vrgather.vv v13, v10, v16
1034710346
// vrgather.vv v12, v11, v16
10348-
if (!Subtarget.hasOptimizedVectorGather() &&
10349-
ContainerVT.bitsGT(getLMUL1VT(ContainerVT)) &&
10347+
if (ContainerVT.bitsGT(getLMUL1VT(ContainerVT)) &&
1035010348
ContainerVT.getVectorElementCount().isKnownMultipleOf(2)) {
1035110349
auto [Lo, Hi] = DAG.SplitVector(Vec, DL);
1035210350
Lo = DAG.getNode(ISD::VECTOR_REVERSE, DL, Lo.getSimpleValueType(), Lo);

llvm/lib/Target/RISCV/RISCVProcessors.td

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -269,8 +269,7 @@ def SIFIVE_P470 : RISCVProcessorModel<"sifive-p470", SiFiveP400Model,
269269
FeatureUnalignedScalarMem,
270270
FeatureUnalignedVectorMem]),
271271
!listconcat(SiFiveP400TuneFeatures,
272-
[TuneNoSinkSplatOperands,
273-
TuneOptimizedVectorGather])>;
272+
[TuneNoSinkSplatOperands])>;
274273

275274

276275
def SIFIVE_P670 : RISCVProcessorModel<"sifive-p670", SiFiveP600Model,
@@ -291,7 +290,6 @@ def SIFIVE_P670 : RISCVProcessorModel<"sifive-p670", SiFiveP600Model,
291290
TuneLUIADDIFusion,
292291
TuneAUIPCADDIFusion,
293292
TuneNoSinkSplatOperands,
294-
TuneOptimizedVectorGather,
295293
FeaturePostRAScheduler]>;
296294

297295
def SYNTACORE_SCR1_BASE : RISCVProcessorModel<"syntacore-scr1-base",

llvm/test/CodeGen/RISCV/rvv/named-vector-shuffle-reverse.ll

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2014,19 +2014,3 @@ declare <vscale x 8 x double> @llvm.vector.reverse.nxv8f64(<vscale x 8 x double>
20142014
declare <vscale x 3 x i64> @llvm.vector.reverse.nxv3i64(<vscale x 3 x i64>)
20152015
declare <vscale x 6 x i64> @llvm.vector.reverse.nxv6i64(<vscale x 6 x i64>)
20162016
declare <vscale x 12 x i64> @llvm.vector.reverse.nxv12i64(<vscale x 12 x i64>)
2017-
2018-
define <vscale x 8 x i64> @reverse_nxv8i64_optimized_vector_gather(<vscale x 8 x i64> %a) "target-features"="+optimized-vector-gather" {
2019-
; CHECK-LABEL: reverse_nxv8i64_optimized_vector_gather:
2020-
; CHECK: # %bb.0:
2021-
; CHECK-NEXT: csrr a0, vlenb
2022-
; CHECK-NEXT: addi a0, a0, -1
2023-
; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, ma
2024-
; CHECK-NEXT: vid.v v16
2025-
; CHECK-NEXT: vrsub.vx v24, v16, a0
2026-
; CHECK-NEXT: vsetvli zero, zero, e64, m8, ta, ma
2027-
; CHECK-NEXT: vrgatherei16.vv v16, v8, v24
2028-
; CHECK-NEXT: vmv.v.v v8, v16
2029-
; CHECK-NEXT: ret
2030-
%res = call <vscale x 8 x i64> @llvm.vector.reverse.nxv8i64(<vscale x 8 x i64> %a)
2031-
ret <vscale x 8 x i64> %res
2032-
}

0 commit comments

Comments
 (0)