aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Plugins/ScriptInterpreter/Python/SWIGPythonBridge.cpp
diff options
context:
space:
mode:
authorFraser Cormack <fraser@codeplay.com>2022-01-18 14:13:13 +0000
committerFraser Cormack <fraser@codeplay.com>2022-01-24 11:05:05 +0000
commitaf773a18181dc1a1e3846f518b2d44f2abbbdf87 (patch)
tree844ae7df18479bb4aa77128b18e60c25138b435e /lldb/source/Plugins/ScriptInterpreter/Python/SWIGPythonBridge.cpp
parente7926e8d972e8129d4b64e10a38719b066a526be (diff)
downloadllvm-af773a18181dc1a1e3846f518b2d44f2abbbdf87.zip
llvm-af773a18181dc1a1e3846f518b2d44f2abbbdf87.tar.gz
llvm-af773a18181dc1a1e3846f518b2d44f2abbbdf87.tar.bz2
[RISCV][VP] Lower VP_MERGE to RVV instructions
This patch adds lowering of the llvm.vp.merge.* intrinsic (ISD::VP_MERGE) to RVV vmerge/vfmerge instructions. It introduces a special pseudo form of vmerge which allows a tied merge operand, allowing us to specify the tail elements as being equal to the "on false" operand, using a tied-def constraint and a "tail undisturbed" policy. While this strategy allows us to often lower the intrinsic to just one instruction, it may be less efficient in fixed-vector types as the number of tail elements may extend far beyond the length of the fixed vector. Another strategy could be to use a vmerge/vfmerge instruction with an AVL equal to the length of the vector type, and manipulate the condition operand such that mask elements greater than the operation's EVL are false. I've also observed inefficient codegen in which our 'VF' patterns don't match raw floating-point SPLAT_VECTORs, which occur in scalable-vector code. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D117561
Diffstat (limited to 'lldb/source/Plugins/ScriptInterpreter/Python/SWIGPythonBridge.cpp')
0 files changed, 0 insertions, 0 deletions