4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Scalable Matrix Extension (SME)Advent Calendar 2024

Day 2

SME日記その1: Apple Silicon M4に搭載されたScalable Matrix Extension (SME)のベクトル長(SVL)を取得する

Last updated at Posted at 2024-12-02

Apple Silicon M4にはScalable Matrix Extension(SME),すなわち可変長行列演算拡張命令が備わっています.これを探求してみたいと思います.

下記記事を試そうとしたのですが,

下記記事にもあるように,サンプルプログラムがエラーになって動作しませんでした.

なので,インラインアセンブラで書いてみました.

まず,RDSVL命令を試します.

Read multiple of Streaming SVE vector register size to scalar register
ストリーミングSVEベクトルレジスタサイズの倍数をスカラーレジスタに読み取る

さっそく書いてみました.

rdsvl.c
#include <stdint.h>
#include <stdio.h>

uint64_t rdsvl8()
{
  uint64_t len;
  asm volatile ("rdsvl %0, 8"
                : "=r"(len)
               );
  return len;
}

int main()
{
  printf("%llu\n", rdsvl8());
}

コンパイル方法は次のとおりです.

clang -march=armv9-a+sme -o rdsvl rdsvl.c

実行結果は次のとおりです.

% ./rdsvl 
512

すなわち,512ビット(64バイト)のレジスタ長を持っていることがわかりました.

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?