Skip to content

Commit

Permalink
vmovq_n_u8: mov data to neon register
Browse files Browse the repository at this point in the history
  • Loading branch information
LyleLee committed Nov 12, 2019
1 parent 6fd7d77 commit 0478174
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 0 deletions.
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -50,3 +50,11 @@ modules.order
Module.symvers
Mkfile.old
dkms.conf

# Cmake files

CMakeFiles/
Makefile
CMakeCache.txt
cmake_install.cmake

15 changes: 15 additions & 0 deletions CMakeLists.txt
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)
40 changes: 40 additions & 0 deletions arm_neon_add.c
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);

}
21 changes: 21 additions & 0 deletions vmovq_n_u8.c
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);
}

0 comments on commit 0478174

Please sign in to comment.