Files
amigaos-cross-toolchain6/test/test13/golden/transpositiontable.s
T

395 lines
5.5 KiB
ArmAsm

#NO_APP
.text
.align 2
.globl _TT_free
_TT_free:
move.l _board+32336,d0
jeq .L1
move.l d0,-(sp)
jsr _free
addq.l #4,sp
.L1:
rts
.LC0:
.ascii "Hash table memory allocation problem. Exiting...\12\0"
.LC1:
.ascii "Transposition Table: %lld entries allocated...%lld bytes.\12\0"
.align 2
.globl _TT_set_size
_TT_set_size:
movem.l #16128,-(sp)
move.l 28(sp),d0
lsl.w #4,d0
swap d0
clr.w d0
move.l d0,d7
moveq #0,d6
cmp.l #32767,d0
jls .L19
clr.l d0
move.l #1024,d1
.L10:
add.l d1,d1
addx.l d0,d0
move.l d1,d3
moveq #27,d2
lsr.l d2,d3
move.l d0,d2
lsl.l #5,d2
or.l d3,d2
move.l d1,d3
lsl.l #5,d3
move.l d2,d4
move.l d3,d5
sub.l d7,d5
subx.l d6,d4
jls .L10
move.l d1,d5
lsl.l #4,d5
moveq #-1,d2
moveq #-1,d3
add.l d1,d3
addx.l d0,d2
move.l d3,d4
lsl.l #4,d4
.L9:
move.l _board+32336,d0
jeq .L11
move.l d0,-(sp)
jsr _free
addq.l #4,sp
.L11:
move.l d5,-(sp)
jsr _malloc
move.l d0,_board+32336
move.l d2,_board+32340
move.l d3,_board+32344
addq.l #4,sp
tst.l d0
jeq .L27
move.l d3,d1
moveq #28,d0
lsr.l d0,d1
move.l d2,d0
lsl.l #4,d0
or.l d1,d0
move.l d3,d1
lsl.l #4,d1
move.l d1,-(sp)
move.l d0,-(sp)
move.l d3,-(sp)
move.l d2,-(sp)
pea .LC1
jsr _printf
lea (20,sp),sp
.L13:
tst.l d4
jeq .L8
move.l _board+32336,a0
moveq #64,d0
cmp.l d4,d0
jcs .L28
move.l a0,d0
add.l d4,d0
.L17:
clr.b (a0)+
cmp.l a0,d0
jne .L17
.L8:
movem.l (sp)+,#252
rts
.L28:
move.l d4,-(sp)
clr.l -(sp)
move.l a0,-(sp)
jsr ___memset64
lea (12,sp),sp
movem.l (sp)+,#252
rts
.L27:
pea .LC0
jsr _printf
pea 1.w
jsr _exit
addq.l #8,sp
jra .L13
.L19:
move.l #16368,d4
clr.l d2
move.l #1023,d3
move.l #16384,d5
jra .L9
.align 2
.globl _TT_clear
_TT_clear:
move.l _board+32336,a0
cmp.w #0,a0
jeq .L29
move.l _board+32344,d0
lsl.l #4,d0
jeq .L29
moveq #64,d1
cmp.l d0,d1
jcs .L41
add.l a0,d0
.L34:
clr.b (a0)+
cmp.l a0,d0
jne .L34
.L29:
rts
.L41:
move.l d0,-(sp)
clr.l -(sp)
move.l a0,-(sp)
jsr ___memset64
lea (12,sp),sp
rts
.align 2
.globl _TT_RecordHash
_TT_RecordHash:
movem.l #12320,-(sp)
move.l 20(sp),a1
lea _board,a2
move.l 134(a2),d2
move.l 138(a2),d3
move.l 32344(a2),d0
and.l d3,d0
lsl.l #4,d0
move.l 32336(a2),a0
add.l d0,a0
move.l (a0),d0
move.l 4(a0),d1
sub.l d3,d1
subx.l d2,d0
jeq .L49
cmp.w #30800,a1
jgt .L50
.L45:
cmp.w #-30800,a1
jge .L46
sub.w _board+132,a1
.L46:
move.l d2,(a0)
move.l d3,4(a0)
move.l 28(sp),12(a0)
move.w a1,10(a0)
move.b 27(sp),9(a0)
move.b 19(sp),8(a0)
.L42:
movem.l (sp)+,#1036
rts
.L50:
move.w _board+132,a2
add.l a2,a1
move.l d2,(a0)
move.l d3,4(a0)
move.l 28(sp),12(a0)
move.w a1,10(a0)
move.b 27(sp),9(a0)
move.b 19(sp),8(a0)
jra .L42
.L49:
moveq #0,d0
move.b 8(a0),d0
cmp.l 16(sp),d0
jgt .L42
cmp.w #30800,a1
jle .L45
jra .L50
.align 2
.globl _TT_probe
_TT_probe:
movem.l #12336,-(sp)
lea _board,a3
move.l 134(a3),d2
move.l 138(a3),d3
move.l 32344(a3),d0
and.l d3,d0
lsl.l #4,d0
move.l 32336(a3),a0
add.l d0,a0
move.l (a0),d0
move.l 4(a0),d1
sub.l d3,d1
subx.l d2,d0
jne .L54
move.l 20(sp),a1
move.l 12(a0),(a1)
moveq #0,d0
move.b 8(a0),d0
cmp.l 28(sp),d0
jlt .L54
move.b 9(a0),d0
cmp.b #1,d0
jeq .L60
cmp.b #2,d0
jeq .L61
cmp.b #3,d0
jne .L54
move.w 10(a0),a1
cmp.l 36(sp),a1
jlt .L54
move.l 24(sp),a2
move.l 36(sp),(a2)
.L51:
move.l a0,d0
movem.l (sp)+,#3084
rts
.L54:
sub.l a0,a0
move.l a0,d0
movem.l (sp)+,#3084
rts
.L61:
move.w 10(a0),a1
cmp.l 32(sp),a1
jgt .L54
move.l 24(sp),a1
move.l 32(sp),(a1)
move.l a0,d0
movem.l (sp)+,#3084
rts
.L60:
move.w 10(a0),a1
move.l 24(sp),a2
move.l a1,(a2)
cmp.w #30800,a1
jgt .L62
cmp.w #-30800,a1
jge .L51
move.l a2,a3
move.w _board+132,a2
add.l a1,a2
move.l a2,(a3)
move.l a0,d0
movem.l (sp)+,#3084
rts
.L62:
sub.w _board+132,a1
move.l a1,(a2)
move.l a0,d0
movem.l (sp)+,#3084
rts
.LC2:
.ascii " <--- move not legal\12\0"
.LC3:
.ascii "No moves from hash table probing!!!\12\0"
.align 2
.globl _TT_fillPVLineFromTT
_TT_fillPVLineFromTT:
lea (-2412,sp),sp
movem.l #15422,-(sp)
move.l 2452(sp),d3
move.l 2456(sp),a3
jle .L65
lea _board,a1
move.l 134(a1),d4
move.l 138(a1),d5
move.l 32344(a1),d0
and.l d5,d0
lsl.l #4,d0
move.l 32336(a1),a0
add.l d0,a0
move.l (a0),d0
move.l 4(a0),d1
sub.l d5,d1
subx.l d4,d0
jne .L65
lea (48,sp),a2
move.l a2,a4
moveq #0,d2
lea _moveExists,a5
lea _move_make,a6
.L70:
move.l 12(a0),d4
jeq .L67
move.l d4,-(sp)
jsr (a5)
addq.l #4,sp
tst.l d0
jeq .L68
move.l d4,(a4)
move.l a4,-(sp)
jsr (a6)
addq.l #1,d2
addq.l #4,sp
cmp.l d3,d2
jeq .L66
lea _board,a1
move.l 134(a1),d4
move.l 138(a1),d5
move.l 32344(a1),d0
and.l d5,d0
lsl.l #4,d0
move.l 32336(a1),a0
add.l d0,a0
lea (12,a4),a4
move.l (a0),d0
move.l 4(a0),d1
sub.l d5,d1
subx.l d4,d0
jeq .L70
.L66:
move.l d2,d3
subq.l #1,d3
jmi .L75
move.l d3,a4
add.l d3,a4
add.l d3,a4
add.l a4,a4
add.l a4,a4
moveq #48,d0
add.l sp,d0
add.l d0,a4
lea _move_unmake,a5
.L74:
move.l a4,-(sp)
jsr (a5)
lea (-12,a4),a4
addq.l #4,sp
dbra d3,.L74
clr.w d3
subq.l #1,d3
jcc .L74
.L75:
tst.l d2
jle .L73
lea (4,a3),a0
move.l d2,d0
addq.l #1,d0
add.l d0,d0
add.l d0,d0
add.l a3,d0
.L77:
move.l (a2),(a0)+
lea (12,a2),a2
cmp.l a0,d0
jne .L77
.L73:
move.l d2,(a3)
movem.l (sp)+,#31804
lea (2412,sp),sp
rts
.L68:
move.l d4,36(sp)
jsr _printBoard
lea (48,sp),a0
move.l -(a0),-(sp)
move.l -(a0),-(sp)
move.l -4(a0),-(sp)
jsr _printMove
pea .LC2
jsr _printf
lea (16,sp),sp
.L67:
tst.l d2
jne .L66
.L65:
pea .LC3
jsr _printf
addq.l #4,sp
movem.l (sp)+,#31804
lea (2412,sp),sp
rts