-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
vmovq_n_u8: mov data to neon register
- Loading branch information
Showing
4 changed files
with
84 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
project(leetcode) | ||
|
||
set(CMAKE_VERBOSE_MAKEFILE on) | ||
|
||
#build vmovq_n_u8 with and without neon instructtion, like: movi v0.16b, #0x3 | ||
add_compile_options(-Wall -march=armv8-a) | ||
|
||
add_executable(vmovq_n_u8_have_neon.out vmovq_n_u8.c) | ||
add_executable(vmovq_n_u8_no_neon.out vmovq_n_u8.c) | ||
|
||
target_compile_options(vmovq_n_u8_have_neon.out PRIVATE -O3) | ||
target_compile_options(vmovq_n_u8_no_neon.out PRIVATE -O0) | ||
|
||
add_executable(arm_neon_add.out arm_neon_add.c) | ||
cmake_minimum_required(VERSION 2.8.0) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
#include <stdio.h> | ||
#include "arm_neon.h" | ||
|
||
void pr(uint8_t *p, int n) | ||
{ | ||
int i; | ||
printf("data: "); | ||
for(i = 0; i < n; i++) | ||
{ | ||
printf("%02d ", p[i]); | ||
} | ||
printf("\n"); | ||
} | ||
|
||
void print_uint8x16(uint8x16_t *a, int n) | ||
{ | ||
uint8_t *p = (uint8_t *)a; | ||
int i; | ||
for(i = 0; i < n; i++) | ||
{ | ||
printf("%02d ", *(p+1)); | ||
} | ||
printf("\n"); | ||
} | ||
|
||
int main() | ||
{ | ||
//uint8_t origin[16] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; | ||
//uint8_t final[16] = {0}; | ||
|
||
uint8x16_t three = vmovq_n_u8(3); | ||
|
||
//print_uint8x16(&three, 16); | ||
//uint8x16_t data = vld1q_u8(origin); | ||
//uint8x16_t result = vaddq_u8(data, three); | ||
//vst1q_u8(final, result); | ||
|
||
//pr(final, 16); | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
#include <stdio.h> | ||
#include "arm_neon.h" | ||
|
||
void print_uint8x16(uint8x16_t *a, int n) | ||
{ | ||
uint8_t *p = (uint8_t *)a; | ||
int i; | ||
for(i = 0; i < n; i++) | ||
{ | ||
printf("%02d ", *(p+1)); | ||
} | ||
printf("\n"); | ||
} | ||
|
||
int main() | ||
{ | ||
|
||
uint8x16_t three = vmovq_n_u8(3); | ||
|
||
print_uint8x16(&three, 16); | ||
} |