Assembly 如何在SMLAWy指令中存储低位32位?

Assembly 如何在SMLAWy指令中存储低位32位?,assembly,arm,inline-assembly,Assembly,Arm,Inline Assembly,我想使用SMLAWy指令将较低的32位存储到目标寄存器中。然而,文档中说,SMLAWy指令将48位结果的高32位存储到目标寄存器中。我该怎么做? 没有一条指令可以满足您的需求,但最简单的解决方案可能是将sxth和mla结合起来,也就是说,将相关的16位操作数提取到一个临时寄存器中,这样您就可以执行一个普通的32x32乘法并累加底部的32位。没有一条指令可以满足您的要求,但最简单的解决方案可能是将sxth和mla组合起来,也就是说,将相关的16位操作数提取到一个临时寄存器中,这样您就可以执行普通的

我想使用
SMLAWy
指令将较低的32位存储到目标寄存器中。然而,文档中说,
SMLAWy
指令将48位结果的高32位存储到目标寄存器中。我该怎么做?

没有一条指令可以满足您的需求,但最简单的解决方案可能是将
sxth
mla
结合起来,也就是说,将相关的16位操作数提取到一个临时寄存器中,这样您就可以执行一个普通的32x32乘法并累加底部的32位。

没有一条指令可以满足您的要求,但最简单的解决方案可能是将
sxth
mla
组合起来,也就是说,将相关的16位操作数提取到一个临时寄存器中,这样您就可以执行普通的32x32乘法并累加底部的32位。

这是一种可能的解决方案,但会增加执行整个操作所需的指令数。是否有其他方法来代替使用
MLA
指令?因为没有指令从压缩半字操作数执行32x16乘法并累加低32位,所以没有。返回乘法结果最低有效部分的唯一操作是
mul
MLA
,它们是32x32操作。但是,如果在算法中还有其他地方由于其他原因也需要解包16位数据,那么尝试重新排序可能是值得的,这样您就可以在乘法中利用它。这是一种可能的解决方案,但会增加执行整个操作所需的指令数。是否有其他方法来代替使用
MLA
指令?因为没有指令从压缩半字操作数执行32x16乘法并累加低32位,所以没有。返回乘法结果最低有效部分的唯一操作是
mul
MLA
,它们是32x32操作。但是,如果在算法中还有其他地方,由于其他原因也需要解包16位数据,那么尝试重新排序可能是值得的,这样您也可以利用它进行乘法。