The source as below:

#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <arm_neon.h>


int process(){
    __fp16* zcb_hal16 = (__fp16*)malloc(100);
    zcb_hal16[0] = 0;

    float16x8_t vblkA0, vblkB0, vblkC0;
    vblkC0 = vfmaq_n_f16(vblkC0, vblkB0, vblkA0[0]);
    __asm __volatile("fmla     %[c0].8h, %[b0].8h, %[a0].h[0]" : [c0] 
"+w"(vblkC0) : [b0] "w"(vblkB0), [a0] "w"(vblkA0));
    return 0;
}

int main()
{
    printf("start...\n");
    process();
    printf("ok...\n");
    return 0;
}

The compile tool: clang 6
The compile args: clang ./test.cpp

The output as below:
localhost:~/workspace/neonfp16_test/jni # valgrind ./a.out
==9762== Memcheck, a memory error detector
==9762== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==9762== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
==9762== Command: ./a.out
==9762==
start...
disInstr(arm64): unhandled instruction 0x1EE703E0
disInstr(arm64): 0001'1110 1110'0111 0000'0011 1110'0000
==9762== valgrind: Unrecognised instruction at address 0x4005f8.
==9762==    at 0x4005F8: process() (in /root/workspace/neonfp16_test/jni/a.out)
==9762==    by 0x4006C7: main (in /root/workspace/neonfp16_test/jni/a.out)

_______________________________________________
Valgrind-users mailing list
Valgrind-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to