From: Yicong Yang <yangyicong(a)hisilicon.com>
Signed-off-by: Yicong Yang <yangyicong(a)hisilicon.com>
---
.../WayCa-Kunpeng-SVE.md | 131 ++++++++++++++++++
1 file changed, 131 insertions(+)
create mode 100644 WayCa-Kunpeng-������/Wayca-Kunpeng-���������������/WayCa-Kunpeng-SVE.md
diff --git a/WayCa-Kunpeng-������/Wayca-Kunpeng-���������������/WayCa-Kunpeng-SVE.md b/WayCa-Kunpeng-������/Wayca-Kunpeng-���������������/WayCa-Kunpeng-SVE.md
new file mode 100644
index 0000000..823baed
--- /dev/null
+++ b/WayCa-Kunpeng-������/Wayca-Kunpeng-���������������/WayCa-Kunpeng-SVE.md
@@ -0,0 +1,131 @@
+
+
+# WayCa-Kunpeng-SVE
+
+������Linux���������Openeuler OLK-5.10���������������������
+
+## 1. ������
+
+������ Neon ������������������������������������������ 128 ������������������������������Arm ���������������������
+��������� (SVE) ������ AArch64 ������������ SIMD ���������SVE������������������������ ���������������������
+���������������������������������������������������������������������������������������CPU������������������������������
+��������������������������������������������� 128 ������������ 2048 ��������������� 128 ���������������SVE������
+���������������������������������������������SVE������������������������������������������������������������������������
+������������������������������������,������������������������������������������������������������������������������������
+������������������������������������������������������������������������������SVE2 ��������� SVE ������������������
+������������������������������������������������������������������������������������������������������������LTE ���������
+���������������������
+
+sve���������������������������
+- 32���������������������������������Z0-Z31���
+![avatar](https://documentation-service.arm.com/static/63b8334140f3173eeee2a7ca?token=)
+- 16���������������������������������P0-P15���
+![avatar](https://documentation-service.arm.com/static/63b8334140f3173eeee2a7cd?token=)
+- ������First Fault ������������������FFR������
+���������������������������������������ZCR_Elx
+
+## 2. ������������������
+
+SVE���������������������������������������
+
+- CONFIG_ARM64_SVE
+
+## 3. ������������
+
+### 3.1 ������������
+
+Linux���SVE������������������CPU���������������/proc/cpuinfo������������������������������������������������
+���HWCAP_SVE���ID_AA64PFR0_EL1���������������������SVE���������������������
+
+### 3.1 SVE������
+
+- ������������SVE������������������
+
+Linux������������/proc/sys/abi/sve_default_vector_length������������������������������������SVE
+���������������������������������prctl���������SVE������������������������������������������������������������������
+������������������������
+
+- ���������������������������������
+
+Linux������������������������������������������������SVE���������������������������prctl������������������������
+������SVE������������������������������������������������������������������������������
+
+```
+PR_SVE_SET_VL
+ ���������������������������������������PR_SVE_VL_INHERIT���������������������������������������������
+ VL���������������������������������������������������������������������PR_SVE_SET_VL_ONEXEC������
+ ������������������������������������execve()������������������������������������
+ ���������������������P0-P15���FFR������Z0-Z31������������������128bits���������������������������
+PR_SVE_GET_VL
+ ������������������������������������������
+```
+
+
+## 4. ���������������������
+
+| COMMITID | SUBJECT |openeuler OLK-5.10 enabled���Y/N���
+| ---------- | ---------- | -----------|
+| 27e64b4be4b8 | regset: Add support for dynamically sized regsets |Y|
+| 94ef7ecbdf6f | arm64: fpsimd: Correctly annotate exception helpers called from asm | Y |
+| abf73988a7c2| arm64: signal: Verify extra data is user-readable in sys_rt_sigreturn |Y|
+| 93390c0a1b20| arm64: KVM: Hide unsupported AArch64 CPU features from guests |Y|
+| b472db6cf8c6 | arm64: efi: Add missing Kconfig dependency on KERNEL_MODE_NEON|Y|
+| 38b9aeb32fa7| arm64: Port deprecated instruction emulation to new sysctl interface |Y|
+| 9cf5b54fafed| arm64: fpsimd: Simplify uses of {set, clear}_ti_thread_flag()|Y|
+| 672365649cca |arm64/sve: System register and exception syndrome definitions |Y|
+| 1fc5dce78ad1| arm64/sve: Low-level SVE architectural state manipulation functions |Y|
+| ddd25ad1fde8| arm64/sve: Kconfig update and conditional compilation support |Y|
+| d0b8cd318788| arm64/sve: Signal frame and context structure definition |Y|
+| 22043a3c082a | arm64/sve: Low-level CPU setup |Y|
+| bc0ee4760364 | arm64/sve: Core task context handling|Y|
+| 79ab007c75d6| arm64/sve: Support vector length resetting for new processes |Y|
+| 8cd969d28fd2 | arm64/sve: Signal handling support |Y|
+| 7582e22038a2| arm64/sve: Backend logic for setting the vector length |Y|
+| 8f1eec57cdcc | arm64: cpufeature: Move sys_caps_initialised declarations |Y|
+| 2e0f2478ea37 | arm64/sve: Probe SVE capabilities and usable vector lengths |Y|
+| 1bd3f93641ec| arm64/sve: Preserve SVE registers around kernel-mode NEON use |Y|
+| fdfa976cae5c | arm64/sve: Preserve SVE registers around EFI runtime service calls |Y|
+| 43d4da2c45b2 | arm64/sve: ptrace and ELF coredump support |Y|
+| 2d2123bc7c7f | rm64/sve: Add prctl controls for userspace vector length management |Y|
+| 4ffa09a939ab| arm64/sve: Add sysctl to set the default vector length for new processes|Y|
+| 17eed27b02da | arm64/sve: KVM: Prevent guests from using SVE |Y|
+| aac45ffd1f8e | arm64/sve: KVM: Treat guest SVE use as undefined instruction execution |Y|
+| 07d79fe7c223 | arm64/sve: KVM: Hide SVE from CPU features exposed to guests |Y|
+| 43994d824e84 | arm64/sve: Detect SVE and activate runtime support |Y|
+| ce6990813f15 | arm64/sve: Add documentation |Y|
+| 94b07c1f8c39| arm64: signal: Report signal frame size to userspace via auxv |Y|
+
+
+## 5.������������
+
+- ������������������������������������������������sve������������������������sve������������:
+
+```C
+void daxpy_1_1_no_sve(int64_t n, double da, double *dx, double *dy)
+{
+ for (int64_t i = 0; i < n; ++i) {
+ dy[i] = dx[i] * da + dy[i];
+ }
+}
+
+#include <arm_sve.h>
+void daxpy_1_1(int64_t n, double da, double *dx, double *dy)
+{
+ int64_t i = 0;
+ svbool_t pg = svwhilelt_b64(i, n);
+ do
+ {
+ svfloat64_t dx_vec = svld1(pg, &dx[i]);
+ svfloat64_t dy_vec = svld1(pg, &dy[i]);
+ svst1(pg, &dy[i], svmla_x(pg, dy_vec, dx_vec, da));
+ i += svcntd();
+ pg = svwhilelt_b64(i, n);
+ }
+ while (svptest_any(svptrue_b64(), pg));
+}
+```
+
+- ������
+gcc -march=armv8-a+sve xxx.c xxx
+
+
--
2.24.0