mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-21 13:50:01 +02:00
* fixed fpc_set_set_byte and fpc_set_unset_byte
This commit is contained in:
parent
77d8f335aa
commit
6bd01c68d2
@ -78,15 +78,15 @@ function fpc_set_set_byte(const source: fpc_normal_set; b : byte): fpc_normal_se
|
|||||||
}
|
}
|
||||||
asm
|
asm
|
||||||
// copy source to result
|
// copy source to result
|
||||||
li r0,8
|
lfd f0,0(r4)
|
||||||
mtctr r0
|
lfd f1,8(r4)
|
||||||
subi r4,r4,4
|
lfd f2,16(r4)
|
||||||
subi r3,r3,4
|
lfd f3,24(r4)
|
||||||
Lset_set_byte_copy:
|
stfd f0,0(r3)
|
||||||
lwzu r0,4(r4)
|
stfd f1,8(r3)
|
||||||
stwu r0,4(r3)
|
stfd f2,16(r3)
|
||||||
bdnz Lset_set_byte_copy
|
stfd f3,24(r3)
|
||||||
subi r3,r3,32
|
|
||||||
// get the index of the correct *dword* in the set
|
// get the index of the correct *dword* in the set
|
||||||
// r0 := (r5 rotl(32-3)) and (0x0fffffff8)
|
// r0 := (r5 rotl(32-3)) and (0x0fffffff8)
|
||||||
rlwinm r0,r5,31-3+1,3,31-2
|
rlwinm r0,r5,31-3+1,3,31-2
|
||||||
@ -95,7 +95,7 @@ Lset_set_byte_copy:
|
|||||||
li r0,1
|
li r0,1
|
||||||
// generate bit which has to be inserted
|
// generate bit which has to be inserted
|
||||||
// (can't use rlwimi, since that one only works for constants)
|
// (can't use rlwimi, since that one only works for constants)
|
||||||
slw r5,r0,r5
|
rlwnm r5,r0,r5,0,31
|
||||||
// insert it
|
// insert it
|
||||||
or r5,r4,r5
|
or r5,r4,r5
|
||||||
// store result
|
// store result
|
||||||
@ -113,15 +113,14 @@ function fpc_set_unset_byte(const source: fpc_normal_set; b : byte): fpc_normal_
|
|||||||
}
|
}
|
||||||
asm
|
asm
|
||||||
// copy source to result
|
// copy source to result
|
||||||
li r0,8
|
lfd f0,0(r4)
|
||||||
mtctr r0
|
lfd f1,8(r4)
|
||||||
subi r4,r4,4
|
lfd f2,16(r4)
|
||||||
subi r3,r3,4
|
lfd f3,24(r4)
|
||||||
Lset_unset_byte_copy:
|
stfd f0,0(r3)
|
||||||
lwzu r0,4(r4)
|
stfd f1,8(r3)
|
||||||
stwu r0,4(r3)
|
stfd f2,16(r3)
|
||||||
bdnz Lset_unset_byte_copy
|
stfd f3,24(r3)
|
||||||
subi r3,r3,32
|
|
||||||
// get the index of the correct *dword* in the set
|
// get the index of the correct *dword* in the set
|
||||||
// r0 := (r4 rotl(32-3)) and (0x0fffffff8)
|
// r0 := (r4 rotl(32-3)) and (0x0fffffff8)
|
||||||
rlwinm r0,r5,31-3+1,3,31-2
|
rlwinm r0,r5,31-3+1,3,31-2
|
||||||
@ -524,7 +523,10 @@ end;
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.19 2003-05-02 15:10:53 jonas
|
Revision 1.20 2003-05-11 11:06:34 jonas
|
||||||
|
* fixed fpc_set_set_byte and fpc_set_unset_byte
|
||||||
|
|
||||||
|
Revision 1.19 2003/05/02 15:10:53 jonas
|
||||||
* fixed fpc_set_set_range
|
* fixed fpc_set_set_range
|
||||||
|
|
||||||
Revision 1.18 2003/04/26 15:29:34 jonas
|
Revision 1.18 2003/04/26 15:29:34 jonas
|
||||||
|
Loading…
Reference in New Issue
Block a user