aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/RISCV/RISCVFeatures.td
diff options
context:
space:
mode:
authorMichael Maitland <michaeltmaitland@gmail.com>2024-01-25 12:44:36 -0700
committerGitHub <noreply@github.com>2024-01-25 14:44:36 -0500
commit594b92a7b987b839af10bd1035a816f233033826 (patch)
tree634d61f9c61e9c5d39ae2df0f01ea791880afe2b /llvm/lib/Target/RISCV/RISCVFeatures.td
parenta315fb1c577a40a40968daa9d346435458d7e06e (diff)
downloadllvm-594b92a7b987b839af10bd1035a816f233033826.zip
llvm-594b92a7b987b839af10bd1035a816f233033826.tar.gz
llvm-594b92a7b987b839af10bd1035a816f233033826.tar.bz2
[RISCV] Add Tune to DontSinkSplatOperands (#79199)
A CPU may prefer to not sink splat operands, one reason being that it could require a S2V transfer buffer to move scalars into buffers.
Diffstat (limited to 'llvm/lib/Target/RISCV/RISCVFeatures.td')
-rw-r--r--llvm/lib/Target/RISCV/RISCVFeatures.td7
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/Target/RISCV/RISCVFeatures.td b/llvm/lib/Target/RISCV/RISCVFeatures.td
index 045173b..c822b9c 100644
--- a/llvm/lib/Target/RISCV/RISCVFeatures.td
+++ b/llvm/lib/Target/RISCV/RISCVFeatures.td
@@ -1074,6 +1074,13 @@ def TuneShortForwardBranchOpt
def HasShortForwardBranchOpt : Predicate<"Subtarget->hasShortForwardBranchOpt()">;
def NoShortForwardBranchOpt : Predicate<"!Subtarget->hasShortForwardBranchOpt()">;
+// Some subtargets require a S2V transfer buffer to move scalars into vectors.
+// FIXME: Forming .vx/.vf/.wx/.wf can reduce register pressure.
+def TuneNoSinkSplatOperands
+ : SubtargetFeature<"no-sink-splat-operands", "SinkSplatOperands",
+ "false", "Disable sink splat operands to enable .vx, .vf,"
+ ".wx, and .wf instructions">;
+
def TuneConditionalCompressedMoveFusion
: SubtargetFeature<"conditional-cmv-fusion", "HasConditionalCompressedMoveFusion",
"true", "Enable branch+c.mv fusion">;