2014年2月2日日曜日

Ubuntu/x86 で NEON のコードをクロスコンパイルして実行する

必要な作業は以下の三つ。

  • クロスコンパイル環境を構築する
  • QEMU を入れる
  • NEON のコードを書いて実行する

クロスコンパイル環境を構築する


$ sudo apt-get install g++-arm-linux-gnueabi binutils-arm-linux-gnueabi

QEMU を入れる


$ sudo apt-get install qemu

NEON のコードを書いて実行する


#include <stdio.h>
#include <stdint.h>
#include <arm_neon.h>

int main(int argc, char* argv[])
{
    uint32_t src[] = {0, 1, 2, 3, 4, 5, 6, 7};
    uint32_t dst[4];
    uint32x4_t i0 = vld1q_u32(src);
    uint32x4_t i1 = vld1q_u32(src + 4);
    uint32x4_t i2 = vaddq_u32(i0, i1);
    vst1q_u32(dst, i2);
    for (size_t i = 0; i < sizeof(dst)/sizeof(*dst); ++i) {
        printf("%d ", dst[i]);
    }

    return 0;
}

のようなコードを書いてビルドする。

$ arm-linux-gnueabi-g++ -mfpu=neon -mfloat-abi=softfp test.cpp

QEMU の実行には root 権限が必要なこととターゲットのライブラリパスを指定する必要があることに注意する。
$ sudo qemu-arm -L /usr/arm-linux-gnueabi/ a.out 
4 6 8 10

2 件のコメント:

  1. Borgata Hotel Casino & Spa, Atlantic City - Mapyro
    Borgata Hotel Casino & Spa, Atlantic City. 보령 출장마사지 818.6K. 김해 출장샵 See Map. See 삼척 출장마사지 More. 93613 visitors. Rating: 시흥 출장샵 7.3/10 · ‎93613 reviews 김포 출장샵

    返信削除
  2. The app will only function if you end up} bodily situated in Connecticut. "The proposal is 100% primarily based on enterprise rationale," a spokesman for Rupert Murdoch advised Reuters. "Any commentary 바카라사이트 that implies it has to do with succession planning is absurd and comes from sources with no information of the strategy." Popular casino on OLBG with members, with an excellent range of giant jackpot slots and stay casino sellers and tables too.

    返信削除