Apple M1上存在未记录的arm64 ISA扩展

2020-12-29 01:50:01

#在M1上的行为。 其中一些可能是错误的-我还没有扭转 #使名称冲突更加混乱,但这并不是一个不好的地方 #将x,y和z描述为寄存器组,其中64字节的每一行是一个 #到61,以及第61位中的1位标志(充当0x40字节加载/存储 #amx2(z),但是8和9的结果分别在amx0和amx1(x / y)中,并且似乎22 #(以8为一组)到寄存器的第8行" z" (z0,z8,z16)。 #(以16为一组)到寄存器" z"的第4行 (z0,z4,z8)。

#输入两个32位16位值的向量,其中一个来自寄存器" x"。 和另一个 #来自寄存器" y"。 注册" z" 是输出,但也可以视为 #将第一个向量中的每个值与第二个向量中的每个值相乘 #向量(给出32 * 32 = 1024个结果),并将每个结果添加到值中 #在寄存器" z"中。 (尽管可以将输入寄存器中的某个位置设置为跳过 #如果位62为零,则输出在第二行,并且如果位27也为 #set,仅第二行被清零(旧值保留在其他行中)

#[x0,x2,x4,x6,x8,x10,x12,x14,x16,x18,x20,x22,x24,x26,x28,x30] * y0, #[x1,x3,x5,x7,x9,x11,x13,x15,x17,x19,x21,x23,x25,x27,x29,x31] * y0, #[x0,x2,x4,x6,x8,x10,x12,x14,x16,x18,x20,x22,x24,x26,x28,x30] * y1, #[x1,x3,x5,x7,x9,x11,x13,x15,x17,x19,x21,x23,x25,x27,x29,x31] * y1, #[x0,x2,x4,x6,x8,x10,x12,x14,x16,x18,x20,x22,x24,x26,x28,x30] * y2, #[x1,x3,x5,x7,x9,x11,x13,x15,x17,x19,x21,x23,x25,x27,x29,x31] * y2, #注意,这与&store z交错操作"一起很好地工作 获得价值

#[x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19,x20,x21,x22,x23, x24,x25,x26,x27,x28,x29,x30,x31] * y0, #0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ,0、0、0、0、0、0、0, #[x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19,x20,x21,x22,x23, x24,x25,x26,x27,x28,x29,x30,x31] * y1, #0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ,0、0、0、0、0、0、0, #[x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19,x20,x21,x22,x23, x24,x25,x26,x27,x28,x29,x30,x31] * y2, #0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ,0、0、0、0、0、0、0,