Cuda ptx中的基元数据类型

Cuda ptx中的基元数据类型,cuda,gpu,nvidia,ptx,Cuda,Gpu,Nvidia,Ptx,以上代码来自此处: 根据作者的说法,“d”表示浮动,“r”表示整数 我想写一小段内联asm代码,我想知道其余基本类型变量(如无符号短、无符号长、float-32等)的符号是什么,我在ptx isa中找不到 我用字母“l”来表示无符号的long,对吗 您可以找到它们,但为了完整起见,这些字母对应于底层PTX寄存器类型: __device__ __inline__ double ld_gbl_cg(const double *addr) { double return_valu

以上代码来自此处:

根据作者的说法,“d”表示浮动,“r”表示整数

我想写一小段内联asm代码,我想知道其余基本类型变量(如无符号短、无符号长、float-32等)的符号是什么,我在ptx isa中找不到

我用字母“l”来表示无符号的long,对吗

您可以找到它们,但为了完整起见,这些字母对应于底层PTX寄存器类型:

__device__ __inline__ double ld_gbl_cg(const double *addr) {
          double return_value;
          asm("ld.global.cg.f64 %0, [%1];" : "=d"(return_value) : "l"(addr));
          return return_value;
        }

因此,
无符号long-long
映射到“l”(用于64位整数PTX寄存器)。

感谢这一点,int64是否使用与uint64相同的符号/reg类型?s64寄存器和
u64
寄存器之间的约束字母相同,但实际的寄存器类型不同。如果您研究@Talonmes提供的链接,您会注意到在上面摘录的表格之后,有一个示例使用
l
约束字母将参数传递给
s64
寄存器。同样,您将看到使用
r
约束字母向寄存器传递值或从寄存器传递值的示例。
"h" = .u16 reg
"r" = .u32 reg
"l" = .u64 reg
"f" = .f32 reg
"d" = .f64 reg