ula*_*ade 2 c++ cpu simd cpu-registers
我不确定当我调用_mm_load_ps时会发生什么?我的意思是我知道我将一个4个浮点数组加载到__m128中,我可以使用它来进行SIMD加速算法然后将它们存回,但不是这个__m128数据类型仍然在堆栈上?我的意思是显然没有足够的寄存器来加载任意数量的向量.所以这些128位数据在每次使用某些SIMD指令进行计算时来回移动?如果是这样,比_mm_load_ps更重要的是什么?
也许我错了?
与int变量可能驻留在寄存器或内存中(或者甚至两者,在不同时间)的方式相同,SSE变量也是如此__m128.如果有足够的自由XMM寄存器,那么编译器通常会尝试将变量保存在寄存器中(除非你做了一些无用的操作,比如获取变量的地址),但是如果注册压力太大,那么一些变量可能会溢出到记忆.