Skip to content

RISC-V Zvfh(min) 拡張サポート調査報告書(LLVM CodeGen段階)

作者:Lee 等
最后更新:
字数: 349
预计阅读时间: 1 分钟

著作権声明

本記事は元々 xlinsist/llvm-project Issue #2 に掲載され、原作者は私自身です。元リポジトリのライセンス Apache License 2.0 に従っています。この内容をもとに、再編集して当ブログで公開します。

概要

調査目標

  • ventus-llvm に Zvfh (min) 拡張サポートを追加する

開発背景

  • Ventus 向けに半精度 16 ビット half 浮動小数点データ型のサポート追加
  • 本プロジェクトは half 型の段階的なサポート(スカラ型(Zhinx (min))およびベクトル型(Zvfh (min)))を目標とします
  • Zhinx (min) 拡張は基本的に動作し、現在 PR のレビューおよび修正中です

ニーズ分析

  • half 型はより低い精度と範囲を持ち、メモリ消費が少なくスループットが高いです

公式 Zvfh (min) パッチまとめ

  • パッチ先:D151414
  • 対象ファイル:
    • RISCVISAInfo.cpp
    • RISCVFeatures.td
    • RISCVISelLowering.cpp
    • RISCVInstrInfoVPseudos.td
    • RISCVInstrInfoVSDPatterns.td
    • RISCVInstrInfoVVLPatterns.td
    • RISCVSubtarget.h
    • **.ll
  • 主な変更点:
    • zvfhmin の登録
    • f16 用の型・命令の合法化処理を追加
    • f16 に対する vfwcvt.f.f.v vfncvt.f.f.w 命令の処理
    • 現在のデバイスが f16 ベクトル命令に対応しているか判定
    • f16 関連の SDNode と機械命令のマッピング追加
    • テストケースの追加

変更ファイル

ファイルパス変更内容
llvm/lib/Support/RISCVISAInfo.cppzvfhmin 命令セット拡張を拡張テーブルに登録
llvm/lib/Target/RISCV/RISCV.tdzvfhmin 機能を追加し、依存 zve32f [FeatureStdExtZve32f] をマッチ
llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td & RISCVInstrInfoVSDPatterns.tdZvfh (min) 命令とパターンの追加
llvm/lib/Target/RISCV/RISCVISelLowering.cppMVT::f16 型と操作サポートを導入し、Zvfhmin が有効な場合のみ MVT::f16 ベクトル型を許可
llvm/test/CodeGen/RISCV/VentusGPGPU/half.llテストケースの追加

テストケース

種類目的
命令生成半精度命令が正しく生成されるか検証float.llhalf.ll に書き換え
型変換half と float32 の変換vfwcvt.f.f.v , vfncvt.f.f.w

補足

Zvfhmin は変換( vfwcvt.f.f.v f16=>f32 , vfncvt.f.f.w f32=>16 )のみサポートし、半精度ベクトル算術演算は直接サポートしません。算術演算には zvfh が必要です。

页面历史

布局切换

调整 VitePress 的布局样式,以适配不同的阅读习惯和屏幕环境。

全部展开
使侧边栏和内容区域占据整个屏幕的全部宽度。
全部展开,但侧边栏宽度可调
侧边栏宽度可调,但内容区域宽度不变,调整后的侧边栏将可以占据整个屏幕的最大宽度。
全部展开,且侧边栏和内容区域宽度均可调
侧边栏宽度可调,但内容区域宽度不变,调整后的侧边栏将可以占据整个屏幕的最大宽度。
原始宽度
原始的 VitePress 默认布局宽度

页面最大宽度

调整 VitePress 布局中页面的宽度,以适配不同的阅读习惯和屏幕环境。

调整页面最大宽度
一个可调整的滑块,用于选择和自定义页面最大宽度。

内容最大宽度

调整 VitePress 布局中内容区域的宽度,以适配不同的阅读习惯和屏幕环境。

调整内容最大宽度
一个可调整的滑块,用于选择和自定义内容最大宽度。

聚光灯

支持在正文中高亮当前鼠标悬停的行和元素,以优化阅读和专注困难的用户的阅读体验。

ON开启
开启聚光灯。
OFF关闭
关闭聚光灯。

聚光灯样式

调整聚光灯的样式。

置于底部
在当前鼠标悬停的元素下方添加一个纯色背景以突出显示当前鼠标悬停的位置。
置于侧边
在当前鼠标悬停的元素旁边添加一条固定的纯色线以突出显示当前鼠标悬停的位置。