VFPASSERT VECTOR

VFPASSERT VECTOR ディレクティブは、後続の VFP 命令がベクタモードであることをアセンブラに通知します。ベクタの長さとストライドを指定することもできます

Show/hide構文

VFPASSERT VECTOR{<{n{:s}}>}

各パラメータには以下の意味があります。

n

1 ~ 8 でベクタの長さを指定します。

s

1 ~ 2 でベクタのストライドを指定します。

Show/hide使用法

VFPASSERT VECTOR ディレクティブを使用して、VFP モードが VECTOR となる命令ブロックの開始位置と、ベクタの長さまたはストライドの変更をマークできます。

VFPASSERT VECTOR ディレクティブは、変更が発生する命令の直後に配置します。これは一般に FMXR 命令ですが、BL 命令の場合もあります。

関数のエントリ処理で VFP がベクタモードになることが予測される場合は、VFPASSERT VECTOR ディレクティブを最初の命令の直前に配置します。このような関数は AAPCS に準拠しません。

Note

このディレクティブからはコードは生成されません。プログラマによるアサートにすぎません。これらのアサートが互いに一致しない場合や、VFP データ処理命令のベクタ表記と一致しない場合は、アセンブラによってエラーメッセージが生成されます。

Show/hide

    VMRS    r10,FPSCR          ; UAL ニーモニック(代わりに、FMRX を使用できる)
    BIC     r10,r10,#0x00370000
    ORR     r10,r10,#0x00020000    ; 長さ = 3、ストライド = 1 に設定する
    VMSR    FPSCR,r10
    VFPASSERT VECTOR           ; アサートベクタモード、長さとストライドが指定されていない
    faddd  d4, d4, d0          ; エラー、ベクタモードでのスカラ
    fadds  s16<3>, s0, s8<3>   ; OK
    fabss  s24<1>, s28<1>      ; 長さが正しくないが、エラーにはならない(指定されていない)
    VMRS    r10,FPSCR
    BIC     r10,r10,#0x00370000
    ORR     r10,r10,#0x00030000    ; 長さ = 4、ストライド = 1 に設定する
    VMSR    FPSCR,r10
    VFPASSERT VECTOR<4>        ; アサートベクタモード、長さ = 4、ストライド = 1
    fadds  s24<4>, s0, s8<4>   ; OK
    fabss  s24<2>, s24<2>      ; エラー、長さが正しくない
    VMRS    r10,FPSCR
    BIC     r10,r10,#0x00370000
    ORR     r10,r10,#0x00130000    ; 長さ = 4、ストライド = 2 に設定する
    VMSR    FPSCR,r10
    VFPASSERT VECTOR<4:2>      ; アサートベクタモード、長さ = 4、ストライド = 2
    fadds  s8<4>, s0, s16<4>   ; エラー、ストライドが省略されて
                               ; デフォルトの 1 になるため、ストライドが正しくない
    fabss  s16<4:2>, s28<4:2>  ; OK
    fadds  s8<>, s2, s16<>     ; OK(s8 と s16 は両方
                               ; 長さ = 4、ストライド = 2。
                               ; s2 はスカラ)

Show/hide関連項目

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0473FJ
Non-ConfidentialID111311