ZHCUAQ1F july 2015 – april 2023
as_<destination type>(<source type object>) 函数用于将对象的原始类型重新解释为另一种矢量类型。源类型和目标类型的位数必须相同。如果大小不同,则返回错误。
虽然算术转换由上一段中介绍的转换函数执行,但重新解释函数不执行算术转换。例如,假设浮点值 1.0 被重新解释为整数值。浮点值 1.0 以十六进制表示为 0x3f800000,由此得到的整数值为 1,065,353,216。
以下示例将 longlong 类型(64 位)的非矢量变量重新解释为 float2 矢量(2 个元素,每个元素 32 位)。mylonglong 的最低有效 32 位放在 fltvec2.s0 中,而 mylonglong 的最高有效 32 位放在 fltvec2.s1 中。不执行算术转换。
extern longlong mylonglong;
float2 fltvec2 = as_float2(mylonglong);
如果源类型和目标类型的大小不同,则会发生错误。
如果启用了矢量数据类型,还可以对标量(非矢量)类型使用 as_<type>() 函数。类型必须具有相同的位数。以下示例将浮点值重新解释为整数值。浮点值 1.0 以十六进制表示为 0x3f800000,由此得到的整数值为 1,065,353,216。
float myfloat = 1.0f;
myint = as_int(myfloat);
as_<destination type>() 函数不可用于复数矢量类型。