* Replaced 'movzbl %r8b, %r8' because it is rejected by GAS (suffix does not match the operand size). The correct instruction is 'movzbq %r8b, %r8' but that one is rejected by FPC reader instead. Provides a fix for broken builds of targets using external assembler (Mantis #19188).

git-svn-id: trunk@17339 -
This commit is contained in:
sergei 2011-04-18 13:31:07 +00:00
parent 46d50c9ebc
commit e1616fd8ef

View File

@ -365,8 +365,16 @@ Procedure FillChar(var x;count:SizeInt;value:byte);assembler;nostackframe;
cmp $8, %rdx
jl .Ltiny
// TODO: movz?q and movs?q are not accepted by FPC asmreader, it needs fixing.
// `movzbl' instead is accepted and generates correct code with internal assembler,
// but breaks targets using external GAS (Mantis #19188).
// So use a different instruction for now.
{ expand byte value }
movzbl %r8b, %r8
andq $0xffffffffffffff00, %r8
{
movzbq %r8b, %r8
}
mov $0x0101010101010101,%r9
imul %r9, %r8