2 changed files with 29 additions and 0 deletions
@ -0,0 +1,27 @@ |
|||
#include <stdio.h> |
|||
#include <string.h> |
|||
#include <riscv_vector.h> |
|||
|
|||
int main() |
|||
{ |
|||
const size_t N = 1001; |
|||
volatile int a[N]; |
|||
int* b = (int*)a; |
|||
|
|||
for (size_t i = 0; i < N; i++) |
|||
a[i] = i; |
|||
|
|||
vint32m8_t vsum = __riscv_vmv_v_x_i32m8(0, -1); |
|||
for (size_t i = 0; i < N; ) { |
|||
size_t vl = __riscv_vsetvl_e32m8(N - i); |
|||
vint32m8_t v = __riscv_vle32_v_i32m8(b + i, vl); |
|||
vsum = __riscv_vadd_vv_i32m8(vsum, v, vl); |
|||
i += vl; |
|||
} |
|||
vint32m1_t vzero = __riscv_vmv_v_x_i32m1(0, 1); |
|||
int sum = __riscv_vmv_x_s_i32m1_i32(__riscv_vredsum_vs_i32m8_i32m1(vsum, vzero, -1)); |
|||
|
|||
printf("The sum of the first %zu positive integers is %d.\n", N - 1, sum); |
|||
|
|||
return 0; |
|||
} |
|||
Loading…
Reference in new issue