0

このコード (ARM NEON) を intel から at&t 構文に変換しようとしています:

AREA    BRISK_ASM_NEON, CODE, READNOLY
    EXPORT  Function
    CODE32

Function    FUNCTION

loop
    pld     [r0, #192]
    vld2.32     {q8, q9}, [r0]!
    vld2.32     {q10, q11}, [r0]!
    pld     [r0, #192]
    vld2.32     {q12, q13}, [r0]!
    vld2.32     {q14, q15}, [r0]!

vcgt.u32    q8, q8, q9
vcgt.u32    q9, q10, q11
vcgt.u32    q10, q12, q13
vcgt.u32    q11, q14, q15

pld     [r0, #192]
vld2.32     {q12, q13}, [r0]!
vld2.32     {q14, q15}, [r0]!
pld     [r0, #192]
vld2.32     {q0, q1}, [r0]!
vld2.32     {q2, q3}, [r0]!

vcgt.u32    q12, q12, q13
vcgt.u32    q13, q14, q15
vcgt.u32    q14, q0, q1
vcgt.u32    q15, q2, q3

vsli.32     q8, q10, #8
vsli.32     q9, q11, #8
vsli.32     q8, q12, #16
vsli.32     q9, q13, #16
vsli.32     q8, q14, #24
vsli.32     q9, q15, #24

vsli.8      d16, d17, #2
vsli.8      d18, d19, #2
vsli.8      d16, d18, #4

vbic.i8     d16, #0xaa
vshr.u64    d17, d16, #31
vorr        d16, d16, d17

vst1.32     {d16[0]}, [r1]!

subs        r2, r2, #32
bgt     loop

bx  lr

ENDFUNC
END

g++でコンパイルしています。ディレクティブ *.intel_syntax* を追加してコンパイルすると、これを実行できることがわかりましたが、そうすると、コンパイラから次のメッセージが表示されます。

Error: unknown pseudo-op: `.intel_syntax'.

コンパイル時に -masm=intel も追加しようとしましたが、次のようになります。

g++: error: unrecognized command line option '-masm=intel'

この問題が発生する理由を知っていますか、または intel から at&t に変換するために使用できる適切なリファレンスを教えていただけますか? ありがとうございました。

編集:このように修正しました

.globl function

function:

loop:
    pld     [r0, #192]
    vld2.32     {q8, q9}, [r0]!
    vld2.32     {q10, q11}, [r0]!
    pld     [r0, #192]
    vld2.32     {q12, q13}, [r0]!
    vld2.32     {q14, q15}, [r0]!

    vcgt.u32    q8, q8, q9
    vcgt.u32    q9, q10, q11
    vcgt.u32    q10, q12, q13
    vcgt.u32    q11, q14, q15

    pld     [r0, #192]
    vld2.32     {q12, q13}, [r0]!
    vld2.32     {q14, q15}, [r0]!
    pld     [r0, #192]
    vld2.32     {q0, q1}, [r0]!
    vld2.32     {q2, q3}, [r0]!

    vcgt.u32    q12, q12, q13
    vcgt.u32    q13, q14, q15
    vcgt.u32    q14, q0, q1
    vcgt.u32    q15, q2, q3

    vsli.32     q8, q10, #8
    vsli.32     q9, q11, #8
    vsli.32     q8, q12, #16
    vsli.32     q9, q13, #16
    vsli.32     q8, q14, #24
    vsli.32     q9, q15, #24

    vsli.8      d16, d17, #2
    vsli.8      d18, d19, #2
    vsli.8      d16, d18, #4

    vbic.i8     d16, 10101010
    vshr.u64    d17, d16, #31
    vorr        d16, d16, d17

    vst1.32     {d16[0]}, [r1]!

    subs        r2, r2, #32
    bgt     loop

    bx  lr

これで、このエラーを除いて正常にコンパイルされます:

Error: immediate value out of range -- `vbic.i8 d16,#0xaa'
4

0 に答える 0