@@ -298,7 +298,8 @@ namespace lsp
298
298
(
299
299
__ASM_EMIT (" xor %[off], %[off]" )
300
300
// x4 blocks
301
- __ASM_EMIT (" sub $4, %[count]" )
301
+ __ASM_EMIT32 (" subl $4, %[count]" ) \
302
+ __ASM_EMIT64 (" sub $4, %[count]" ) \
302
303
__ASM_EMIT (" jb 2f" )
303
304
__ASM_EMIT (" 1:" )
304
305
__ASM_EMIT32 (" mov %[t_re], %[ptr_re]" )
@@ -333,11 +334,13 @@ namespace lsp
333
334
__ASM_EMIT64 (" movups %%xmm0, 0x00(%[dst_re], %[off])" )
334
335
__ASM_EMIT64 (" movups %%xmm1, 0x00(%[dst_im], %[off])" )
335
336
__ASM_EMIT (" add $0x10, %[off]" )
336
- __ASM_EMIT (" sub $4, %[count]" )
337
+ __ASM_EMIT32 (" subl $4, %[count]" ) \
338
+ __ASM_EMIT64 (" sub $4, %[count]" ) \
337
339
__ASM_EMIT (" jae 1b" )
338
340
__ASM_EMIT (" 2:" )
339
341
// x1 blocks
340
- __ASM_EMIT (" add $3, %[count]" )
342
+ __ASM_EMIT32 (" addl $4, %[count]" ) \
343
+ __ASM_EMIT64 (" add $4, %[count]" ) \
341
344
__ASM_EMIT (" jl 4f" )
342
345
__ASM_EMIT (" 3:" )
343
346
__ASM_EMIT32 (" mov %[t_re], %[ptr_re]" )
@@ -372,15 +375,16 @@ namespace lsp
372
375
__ASM_EMIT64 (" movss %%xmm0, 0x00(%[dst_re], %[off])" )
373
376
__ASM_EMIT64 (" movss %%xmm1, 0x00(%[dst_im], %[off])" )
374
377
__ASM_EMIT (" add $0x04, %[off]" )
375
- __ASM_EMIT (" dec %[count]" )
378
+ __ASM_EMIT32 (" decl %[count]" ) \
379
+ __ASM_EMIT64 (" dec %[count]" ) \
376
380
__ASM_EMIT (" jge 3b" )
377
381
__ASM_EMIT (" 4:" )
378
382
/* end */
379
383
380
384
: __IF_32 (
381
385
[ptr_re] " =&r" (ptr_re), [ptr_im] " =&r" (ptr_im),
382
386
)
383
- [count] " +r " (count), [off] " =&r" (off)
387
+ [count] X86_PGREG (count), [off] " =&r" (off)
384
388
: [dst_re] X86_GREG (dst_re), [dst_im] X86_GREG (dst_im),
385
389
[t_re] X86_GREG (t_re), [t_im] X86_GREG (t_im),
386
390
[b_re] " r" (b_re), [b_im] " r" (b_im),
0 commit comments