我试图通过使用MMX和SSE扩展中包含的寄存器和指令来优化点积的计算。
当我插入下面看到的行时,gcc给出了一个关于%xxmX寄存器的错误寄存器名称的错误
.L3:
movl -8(%ebp), %eax
leal 0(,%eax,4), %edx
movl 8(%ebp), %eax
addl %edx, %eax
movups (%eax), %xxm0 <--------------------
flds (%eax)
movl -8(%ebp), %eax
leal 0(,%eax,4), %edx
movl 12(%ebp), %eax
addl %edx, %eax
flds (%eax)
fmulp %st, %st(1)
flds -4(%ebp)
faddp %st, %st(1)
fstps -4(%ebp)
addl $1, -8(%ebp)
用
编译时 gcc -m32 -march=corei7 dot_product.s
我得到了
dot_product.s: Assembler messages:
dot_product.s:24: Error: bad register name `%xxm0'
我有如下所示的corei7架构
dpkg --print-foreign-architectures
产量
i386
corei7
任何想法为什么gcc会抛出错误?