タグ

x86_64に関するwasabizのブックマーク (3)

  • x86/x64 SIMD命令一覧表 (SSE~AVX2)

    MMXレジスタ(64ビット)の命令は割愛しました。 S1=SSE  S2=SSE2 S3=SSE3 SS3=SSSE3 S4.1=SSE4.1 S4.2=SSE4.2 V1=AVX V2=AVX2 #=64ビットモード専用 *はPS/PD/DQ を SS/SD/SI に変えるとスカラー命令(最下位のひとつのデータだけ計算)になります。 各命令の下の青字はその命令に対応するC/C++ intrinsicsの名前です。 AVX/AVX2 SSE4.2までの命令の先頭にVをつけるとAVX命令になります。 実数のAVX命令でスカラーでないものはYMMレジスタで256ビット演算ができます。 整数のAVX命令でYMMレジスタが使えるのはAVX2からです。 instrinsicsで256ビット命令を使うには先頭の_mmを_mm256に、末尾のsi128をsi256に変えます。 YMMレジスタの使用には対

  • x86_64 Assembly Language Programming

    レジスタの使い方は次の通りです. レジスタ用途保存 rax戻り値不要 rcx1番目の整数型引数不要 rdx2番目の整数型引数不要 r83番目の整数型引数不要 r94番目の整数型引数不要 r10, r11-必要なら呼び出し元(caller)で保存 r12〜r15, rdi, rsi, rbx, rbp, rsp-必要なら呼び出し側(callee)で保存 xm01番目の浮動小数型引数 / 戻り値不要 xm12番目の浮動小数型引数不要 xm23番目の浮動小数型引数不要 xm34番目の浮動小数型引数不要 xm4, xm5-必要なら呼び出し元(caller)で保存 xm6〜xm15-必要なら呼び出し側(callee)で保存 スタックは常に16byteアラインメントされています. ただし関数呼び出し直後は戻りアドレス(8byte)がpushされているため, 8(mod 1

  • 条件分岐とcmovとmaxps

    3. 自己紹介 光成滋生(サイボウズ・ラボ) 姑息な最適化が大好き 以前はコーデック系の趣味仕事をやっていた 最近は仕事のために機械学習を勉強中 PRMLあんちょこ公開中(https://github.com/herumi/prml/) blog : http://homepage1.nifty.com/herumi/ mail : herumi@nifty.com twitter : @herumi 3 /24 5. プロファイル プロファイラ 関数組み込みタイプ プログラム自体に組み込まれる それ自体がプログラムに影響を与える 回数は正確 gprofやDevPartner, Vtune タイミング割り込みによる集計タイプ 割り込みでその瞬間のeipを取得し集計 プログラムに影響を(殆ど)与えない 回数は不正確,時間は概ね正確 CodeAnalys

    条件分岐とcmovとmaxps
  • 1