__m256

読み:アンダースコア・アンダースコア・エムにひゃくごじゅうろく
外語:__m256 英語
品詞:名詞

x86プロセッサー用のC/C++で、Intel AVXを扱うための独自のデータ型(変数型)。関連して__m256iと__m256dが存在する。

目次

Intel AVXで使うYMMレジスターは、256ビット長のSIMD演算装置用レジスターである。これは従来のSSEの128ビット長XMMレジスターの拡張である。

通常のintやlongなどと性質の異なるものであり、Intel AVXで使われるレジスター幅の変数を定義するため、このような独自の型が用意された。

またこのデータ型を使用した場合、コンパイラーは自動的にアラインメントを32ビット境界に合わせる。

定義

Windows

Microsoft Visual Studio 2010の場合、immintrin.hに、次のように定義がある。

typedef union __declspec(intrin_type) _CRT_ALIGN(32) __m256 {
    float m256_f32[8];
} __m256;
typedef struct __declspec(intrin_type) _CRT_ALIGN(32) {
    double m256d_f64[4];
} __m256d;
typedef union  __declspec(intrin_type) _CRT_ALIGN(32) __m256i {
    __int8              m256i_i8[32];
    __int16             m256i_i16[16];
    __int32             m256i_i32[8];
    __int64             m256i_i64[4];
    unsigned __int8     m256i_u8[32];
    unsigned __int16    m256i_u16[16];
    unsigned __int32    m256i_u32[8];
    unsigned __int64    m256i_u64[4];
} __m256i;

Cの標準機能のみで定義することができないため、Visual C/C++の独自拡張機能を用いて定義されているが、その実体はどうやらunionのようである。

FreeBSD

FreeBSD 8.0現在、定義がないため使用できない。

利用方法

__m256は、関数の戻り値やパラメーターとして利用できるが、他の一般的な算術式と共に使うことはできない。

処理系の実装に依存するが、この変数型を扱うための関数が用意されており、これを通してIntel AVXを使うことになる。

結果として、__m256データ型は8つの32ビット浮動小数点数、__m256dデータ型は4つの64ビット浮動小数点数、__m256iデータ型は32個の8ビット整数値、16個の16ビット整数値、8個の32ビット整数値、または4個の64ビット整数値を保持することができる。

用語の所属
データ型
関連する用語
Intel AVX
__m64
__m128
__m512

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club