AMDGPU 指令表示法

简介

本文概述了用于描述 AMDGPU 汇编指令语法的表示法。

这种表示法与汇编指令语法非常相似,不同之处在于它使用对其描述的引用,而不是实际的操作数和修饰符。

指令

表示法

这是用于描述 AMDGPU 指令的表示法

操作码

表示法

待定

操作数

一条指令可以有零个或多个操作数。 它们在描述中以逗号分隔

操作数的顺序是固定的。 除了下面描述的特殊情况外,操作数不能省略。

表示法

操作数使用以下表示法描述

<类型><名称><标签0><标签1>…

其中

  • 类型是描述操作数类型的可选前缀。

  • 名称是指向操作数描述的链接。

  • 标签是可选的。 它们用于指示特殊操作数属性

操作数类型

操作数类型指示操作数接受哪些值。

  • 仅接受向量寄存器的操作数标有 ‘v’ 前缀。

  • 仅接受标量寄存器和值的操作数标有 ‘s’ 前缀。

  • 接受任何寄存器和值的操作数没有前缀。

示例

vdata          // operand only accepts vector registers
sdst           // operand only accepts scalar registers
src1           // operand accepts vector registers, scalar registers, and scalar values

操作数标签

操作数标签指示特殊的操作数属性。

操作数标签

含义

:opt

一个可选的操作数。

:m

可以与操作数修饰符 absnegsext 一起使用的操作数。

:dst

如果指定了 glc 修饰符,则也用作目的地的输入操作数。

:fx

这是一个 f32f16 操作数,具体取决于 m_op_sel_hi 修饰符。

:<type>

操作数类型操作码名称暗示的类型不同。 此标签指定实际的操作数类型

示例

src1:m             // src1 operand may be used with operand modifiers
vdata:dst          // vdata operand may be used as both source and destination
vdst:u32           // vdst operand has u32 type

修饰符

一条指令可以有零个或多个可选的修饰符。 它们在描述中以空格分隔

修饰符的顺序是固定的。

表示法

修饰符使用以下表示法描述

<名称>

其中名称是指向修饰符描述的链接。