I think that the big endian version (see grep below)
would suffer if you would use packed
because the high field of size 2,
would put the low field of size 8 at offset 2,
which would trigger unaligned access to this field.
For the little endian definition,
it doesn't change anything, does it?
Pierre
See this grep result:
muller@cfarm187:~/pas/trunk/fpcsrc/rtl/inc$ grep -inA9 "floatx80 *=" *
softfpu.pp:139: floatx80 = record
softfpu.pp-140- case byte of
softfpu.pp-141- // force the record to be aligned like a double
softfpu.pp-142- // else *_to_double will fail for cpus like sparc
softfpu.pp-143- // and avoid expensive unpacking/packing operations
softfpu.pp-144- 1: (dummy : extended);
softfpu.pp-145- 2: (low : qword;high : word);
softfpu.pp-146- end;
softfpu.pp-147-
softfpu.pp-148- float128 = record
--
softfpu.pp:167: floatx80 = record
softfpu.pp-168- case byte of
softfpu.pp-169- // force the record to be aligned like a double
softfpu.pp-170- // else *_to_double will fail for cpus like sparc
softfpu.pp-171- // and avoid expensive unpacking/packing operations
softfpu.pp-172- 1: (dummy : qword);
softfpu.pp-173- 2: (high : word;low : qword);
softfpu.pp-174- end;
softfpu.pp-175-
softfpu.pp-176- float128 = record
--
ufloatx80.pp:32: floatx80 = {$IFDEF
FPC_DOTTEDUNITS}System.SoftFpuX80{$ELSE}sfpux80{$ENDIF}.floatx80;
ufloatx80.pp-33-
Le 27/09/2024 à 20:00, Martin Frb via fpc-devel a écrit :
Is there any indention in
floatx80 = record
case byte of
1: (low : qword;high : word);
// force the record to be aligned like a double
// else *_to_double will fail for cpus like sparc
// and avoid expensive unpacking/packing operations
2: (dummy : extended);
end;
NOT being a packed record?
If it was packed, it should have the same size as an actual extended: 80
bits / 10 bytes.
Possible similar issues for other softfloat types
_______________________________________________
fpc-devel maillist - [email protected]
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
_______________________________________________
fpc-devel maillist - [email protected]
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel