|
Packit |
5c3484 |
dnl PowerPC-32 mpn_mod_34lsub1 -- mpn remainder mod 2^24-1.
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
dnl Copyright 2002, 2003, 2005-2007, 2012 Free Software Foundation, Inc.
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
dnl This file is part of the GNU MP Library.
|
|
Packit |
5c3484 |
dnl
|
|
Packit |
5c3484 |
dnl The GNU MP Library is free software; you can redistribute it and/or modify
|
|
Packit |
5c3484 |
dnl it under the terms of either:
|
|
Packit |
5c3484 |
dnl
|
|
Packit |
5c3484 |
dnl * the GNU Lesser General Public License as published by the Free
|
|
Packit |
5c3484 |
dnl Software Foundation; either version 3 of the License, or (at your
|
|
Packit |
5c3484 |
dnl option) any later version.
|
|
Packit |
5c3484 |
dnl
|
|
Packit |
5c3484 |
dnl or
|
|
Packit |
5c3484 |
dnl
|
|
Packit |
5c3484 |
dnl * the GNU General Public License as published by the Free Software
|
|
Packit |
5c3484 |
dnl Foundation; either version 2 of the License, or (at your option) any
|
|
Packit |
5c3484 |
dnl later version.
|
|
Packit |
5c3484 |
dnl
|
|
Packit |
5c3484 |
dnl or both in parallel, as here.
|
|
Packit |
5c3484 |
dnl
|
|
Packit |
5c3484 |
dnl The GNU MP Library is distributed in the hope that it will be useful, but
|
|
Packit |
5c3484 |
dnl WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
Packit |
5c3484 |
dnl or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
Packit |
5c3484 |
dnl for more details.
|
|
Packit |
5c3484 |
dnl
|
|
Packit |
5c3484 |
dnl You should have received copies of the GNU General Public License and the
|
|
Packit |
5c3484 |
dnl GNU Lesser General Public License along with the GNU MP Library. If not,
|
|
Packit |
5c3484 |
dnl see https://www.gnu.org/licenses/.
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
include(`../config.m4')
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
C cycles/limb
|
|
Packit |
5c3484 |
C 603e: -
|
|
Packit |
5c3484 |
C 604e: -
|
|
Packit |
5c3484 |
C 75x (G3): -
|
|
Packit |
5c3484 |
C 7400,7410 (G4): 1 simple load-use scheduling results in 0.75
|
|
Packit |
5c3484 |
C 744x,745x (G4+): 0.75
|
|
Packit |
5c3484 |
C ppc970: 0.75
|
|
Packit |
5c3484 |
C power4: -
|
|
Packit |
5c3484 |
C power5: -
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
C TODO
|
|
Packit |
5c3484 |
C * Either start using the low-end masking constants, or remove them.
|
|
Packit |
5c3484 |
C * Merge multiple feed-in cases into a parameterized code block.
|
|
Packit |
5c3484 |
C * Reduce register usage. It should be possible to almost halve it.
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
define(`up', `r3')
|
|
Packit |
5c3484 |
define(`n', `r4')
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
define(`a0', `v3')
|
|
Packit |
5c3484 |
define(`a1', `v4')
|
|
Packit |
5c3484 |
define(`a2', `v5')
|
|
Packit |
5c3484 |
define(`c0', `v6')
|
|
Packit |
5c3484 |
define(`c1', `v7')
|
|
Packit |
5c3484 |
define(`c2', `v8')
|
|
Packit |
5c3484 |
define(`z', `v9')
|
|
Packit |
5c3484 |
define(`x0', `v10')
|
|
Packit |
5c3484 |
define(`x1', `v11')
|
|
Packit |
5c3484 |
define(`x2', `v12')
|
|
Packit |
5c3484 |
define(`x3', `v13')
|
|
Packit |
5c3484 |
define(`pv', `v14')
|
|
Packit |
5c3484 |
define(`y0', `v0')
|
|
Packit |
5c3484 |
define(`y1', `v1')
|
|
Packit |
5c3484 |
define(`y2', `v2')
|
|
Packit |
5c3484 |
define(`y3', `v15')
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
ASM_START()
|
|
Packit |
5c3484 |
PROLOGUE(mpn_mod_34lsub1)
|
|
Packit |
5c3484 |
cmpwi cr0, n, 20 C tuned cutoff point
|
|
Packit |
5c3484 |
bge L(large)
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
li r9, 0 C result accumulator
|
|
Packit |
5c3484 |
mulli r10, n, 0xb C 0xb = ceil(32/3)
|
|
Packit |
5c3484 |
srwi. r10, r10, 5 C r10 = floor(n/3), n < 32
|
|
Packit |
5c3484 |
beq L(small_tail)
|
|
Packit |
5c3484 |
mtctr r10
|
|
Packit |
5c3484 |
lwz r6, 0(up)
|
|
Packit |
5c3484 |
lwz r7, 4(up)
|
|
Packit |
5c3484 |
lwzu r8, 8(up)
|
|
Packit |
5c3484 |
subf n, r10, n
|
|
Packit |
5c3484 |
subf n, r10, n
|
|
Packit |
5c3484 |
subf n, r10, n
|
|
Packit |
5c3484 |
bdz L(small_end)
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
ALIGN(16)
|
|
Packit |
5c3484 |
L(los): rlwinm r0, r6, 0,8,31
|
|
Packit |
5c3484 |
add r9, r9, r0 C add 24b from u0
|
|
Packit |
5c3484 |
srwi r0, r6, 24
|
|
Packit |
5c3484 |
lwz r6, 4(up)
|
|
Packit |
5c3484 |
rlwimi r0, r7, 8, 0x00ffff00 C --111100
|
|
Packit |
5c3484 |
add r9, r9, r0 C add 8b from u0 and 16b from u1
|
|
Packit |
5c3484 |
srwi r0, r7, 16
|
|
Packit |
5c3484 |
lwz r7, 8(up)
|
|
Packit |
5c3484 |
rlwimi r0, r8, 16, 0x00ff0000 C --221111
|
|
Packit |
5c3484 |
add r9, r9, r0 C add 16b from u1 and 8b from u2
|
|
Packit |
5c3484 |
srwi r0, r8, 8 C --222222
|
|
Packit |
5c3484 |
lwzu r8, 12(up)
|
|
Packit |
5c3484 |
add r9, r9, r0 C add 24b from u2
|
|
Packit |
5c3484 |
bdnz L(los)
|
|
Packit |
5c3484 |
L(small_end):
|
|
Packit |
5c3484 |
rlwinm r0, r6, 0,8,31
|
|
Packit |
5c3484 |
add r9, r9, r0 C add 24b from u0
|
|
Packit |
5c3484 |
srwi r0, r6, 24
|
|
Packit |
5c3484 |
rlwimi r0, r7, 8, 0x00ffff00 C --111100
|
|
Packit |
5c3484 |
add r9, r9, r0 C add 8b from u0 and 16b from u1
|
|
Packit |
5c3484 |
srwi r0, r7, 16
|
|
Packit |
5c3484 |
rlwimi r0, r8, 16, 0x00ff0000 C --221111
|
|
Packit |
5c3484 |
add r9, r9, r0 C add 16b from u1 and 8b from u2
|
|
Packit |
5c3484 |
srwi r0, r8, 8 C --222222
|
|
Packit |
5c3484 |
add r9, r9, r0 C add 24b from u2
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
addi up, up, 4
|
|
Packit |
5c3484 |
rlwinm r0, r9, 0,8,31
|
|
Packit |
5c3484 |
srwi r9, r9, 24
|
|
Packit |
5c3484 |
add r9, r9, r0
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
L(small_tail):
|
|
Packit |
5c3484 |
cmpi cr0, n, 1
|
|
Packit |
5c3484 |
blt L(ret)
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
lwz r6, 0(up)
|
|
Packit |
5c3484 |
rlwinm r0, r6, 0,8,31
|
|
Packit |
5c3484 |
srwi r6, r6, 24
|
|
Packit |
5c3484 |
add r9, r9, r0
|
|
Packit |
5c3484 |
add r9, r9, r6
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
beq L(ret)
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
lwz r6, 4(up)
|
|
Packit |
5c3484 |
rlwinm r0, r6, 8,8,23
|
|
Packit |
5c3484 |
srwi r6, r6, 16
|
|
Packit |
5c3484 |
add r9, r9, r0
|
|
Packit |
5c3484 |
add r9, r9, r6
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
L(ret): mr r3, r9
|
|
Packit |
5c3484 |
blr
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
L(large):
|
|
Packit |
5c3484 |
stwu r1, -32(r1)
|
|
Packit |
5c3484 |
mfspr r10, 256
|
|
Packit |
5c3484 |
oris r0, r10, 0xffff C Set VRSAVE bit 0-15
|
|
Packit |
5c3484 |
mtspr 256, r0
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
andi. r7, up, 15
|
|
Packit |
5c3484 |
vxor a0, v0, v0
|
|
Packit |
5c3484 |
lis r9, 0xaaaa
|
|
Packit |
5c3484 |
vxor a1, v0, v0
|
|
Packit |
5c3484 |
ori r9, r9, 0xaaab
|
|
Packit |
5c3484 |
vxor a2, v0, v0
|
|
Packit |
5c3484 |
li r5, 16
|
|
Packit |
5c3484 |
vxor c0, v0, v0
|
|
Packit |
5c3484 |
li r6, 32
|
|
Packit |
5c3484 |
vxor c1, v0, v0
|
|
Packit |
5c3484 |
LEAL( r11, cnsts) C CAUTION clobbers r0 for elf, darwin
|
|
Packit |
5c3484 |
vxor c2, v0, v0
|
|
Packit |
5c3484 |
vxor z, v0, v0
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
beq L(aligned16)
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
cmpwi cr7, r7, 8
|
|
Packit |
5c3484 |
bge cr7, L(na4)
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
lvx a2, 0, up
|
|
Packit |
5c3484 |
addi up, up, 16
|
|
Packit |
5c3484 |
vsldoi a2, a2, z, 4
|
|
Packit |
5c3484 |
vsldoi a2, z, a2, 12
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
addi n, n, 9
|
|
Packit |
5c3484 |
mulhwu r0, n, r9
|
|
Packit |
5c3484 |
srwi r0, r0, 3 C r0 = floor(n/12)
|
|
Packit |
5c3484 |
mtctr r0
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
mulli r8, r0, 12
|
|
Packit |
5c3484 |
subf n, r8, n
|
|
Packit |
5c3484 |
b L(2)
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
L(na4): bne cr7, L(na8)
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
lvx a1, 0, up
|
|
Packit |
5c3484 |
addi up, up, -16
|
|
Packit |
5c3484 |
vsldoi a1, a1, z, 8
|
|
Packit |
5c3484 |
vsldoi a1, z, a1, 8
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
addi n, n, 6
|
|
Packit |
5c3484 |
mulhwu r0, n, r9
|
|
Packit |
5c3484 |
srwi r0, r0, 3 C r0 = floor(n/12)
|
|
Packit |
5c3484 |
mtctr r0
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
mulli r8, r0, 12
|
|
Packit |
5c3484 |
subf n, r8, n
|
|
Packit |
5c3484 |
b L(1)
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
L(na8):
|
|
Packit |
5c3484 |
lvx a0, 0, up
|
|
Packit |
5c3484 |
vsldoi a0, a0, z, 12
|
|
Packit |
5c3484 |
vsldoi a0, z, a0, 4
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
addi n, n, 3
|
|
Packit |
5c3484 |
mulhwu r0, n, r9
|
|
Packit |
5c3484 |
srwi r0, r0, 3 C r0 = floor(n/12)
|
|
Packit |
5c3484 |
mtctr r0
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
mulli r8, r0, 12
|
|
Packit |
5c3484 |
subf n, r8, n
|
|
Packit |
5c3484 |
b L(0)
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
L(aligned16):
|
|
Packit |
5c3484 |
mulhwu r0, n, r9
|
|
Packit |
5c3484 |
srwi r0, r0, 3 C r0 = floor(n/12)
|
|
Packit |
5c3484 |
mtctr r0
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
mulli r8, r0, 12
|
|
Packit |
5c3484 |
subf n, r8, n
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
lvx a0, 0, up
|
|
Packit |
5c3484 |
L(0): lvx a1, r5, up
|
|
Packit |
5c3484 |
L(1): lvx a2, r6, up
|
|
Packit |
5c3484 |
addi up, up, 48
|
|
Packit |
5c3484 |
L(2): bdz L(end)
|
|
Packit |
5c3484 |
li r12, 256
|
|
Packit |
5c3484 |
li r9, 288
|
|
Packit |
5c3484 |
ALIGN(32)
|
|
Packit |
5c3484 |
L(top):
|
|
Packit |
5c3484 |
lvx v0, 0, up
|
|
Packit |
5c3484 |
vaddcuw v10, a0, v0
|
|
Packit |
5c3484 |
vadduwm a0, a0, v0
|
|
Packit |
5c3484 |
vadduwm c0, c0, v10
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
lvx v1, r5, up
|
|
Packit |
5c3484 |
vaddcuw v10, a1, v1
|
|
Packit |
5c3484 |
vadduwm a1, a1, v1
|
|
Packit |
5c3484 |
vadduwm c1, c1, v10
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
lvx v2, r6, up
|
|
Packit |
5c3484 |
dcbt up, r12
|
|
Packit |
5c3484 |
dcbt up, r9
|
|
Packit |
5c3484 |
addi up, up, 48
|
|
Packit |
5c3484 |
vaddcuw v10, a2, v2
|
|
Packit |
5c3484 |
vadduwm a2, a2, v2
|
|
Packit |
5c3484 |
vadduwm c2, c2, v10
|
|
Packit |
5c3484 |
bdnz L(top)
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
L(end):
|
|
Packit |
5c3484 |
C n = 0...11
|
|
Packit |
5c3484 |
cmpwi cr0, n, 0
|
|
Packit |
5c3484 |
beq L(sum)
|
|
Packit |
5c3484 |
cmpwi cr0, n, 4
|
|
Packit |
5c3484 |
ble L(tail.1..4)
|
|
Packit |
5c3484 |
cmpwi cr0, n, 8
|
|
Packit |
5c3484 |
ble L(tail.5..8)
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
L(tail.9..11):
|
|
Packit |
5c3484 |
lvx v0, 0, up
|
|
Packit |
5c3484 |
vaddcuw v10, a0, v0
|
|
Packit |
5c3484 |
vadduwm a0, a0, v0
|
|
Packit |
5c3484 |
vadduwm c0, c0, v10
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
lvx v1, r5, up
|
|
Packit |
5c3484 |
vaddcuw v10, a1, v1
|
|
Packit |
5c3484 |
vadduwm a1, a1, v1
|
|
Packit |
5c3484 |
vadduwm c1, c1, v10
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
lvx v2, r6, up
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
addi r8, r11, 96
|
|
Packit |
5c3484 |
rlwinm r3, n ,4,26,27
|
|
Packit |
5c3484 |
lvx v11, r3, r8
|
|
Packit |
5c3484 |
vand v2, v2, v11
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
vaddcuw v10, a2, v2
|
|
Packit |
5c3484 |
vadduwm a2, a2, v2
|
|
Packit |
5c3484 |
vadduwm c2, c2, v10
|
|
Packit |
5c3484 |
b L(sum)
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
L(tail.5..8):
|
|
Packit |
5c3484 |
lvx v0, 0, up
|
|
Packit |
5c3484 |
vaddcuw v10, a0, v0
|
|
Packit |
5c3484 |
vadduwm a0, a0, v0
|
|
Packit |
5c3484 |
vadduwm c0, c0, v10
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
lvx v1, r5, up
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
addi r8, r11, 96
|
|
Packit |
5c3484 |
rlwinm r3, n ,4,26,27
|
|
Packit |
5c3484 |
lvx v11, r3, r8
|
|
Packit |
5c3484 |
vand v1, v1, v11
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
vaddcuw v10, a1, v1
|
|
Packit |
5c3484 |
vadduwm a1, a1, v1
|
|
Packit |
5c3484 |
vadduwm c1, c1, v10
|
|
Packit |
5c3484 |
b L(sum)
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
L(tail.1..4):
|
|
Packit |
5c3484 |
lvx v0, 0, up
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
addi r8, r11, 96
|
|
Packit |
5c3484 |
rlwinm r3, n ,4,26,27
|
|
Packit |
5c3484 |
lvx v11, r3, r8
|
|
Packit |
5c3484 |
vand v0, v0, v11
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
vaddcuw v10, a0, v0
|
|
Packit |
5c3484 |
vadduwm a0, a0, v0
|
|
Packit |
5c3484 |
vadduwm c0, c0, v10
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
L(sum): lvx pv, 0, r11
|
|
Packit |
5c3484 |
vperm x0, a0, z, pv C extract 4 24-bit field from a0
|
|
Packit |
5c3484 |
vperm y0, c2, z, pv
|
|
Packit |
5c3484 |
lvx pv, r5, r11
|
|
Packit |
5c3484 |
vperm x1, a1, z, pv C extract 4 24-bit field from a1
|
|
Packit |
5c3484 |
vperm y1, c0, z, pv C extract 4 24-bit field from a1
|
|
Packit |
5c3484 |
lvx pv, r6, r11
|
|
Packit |
5c3484 |
vperm x2, a2, z, pv C extract 4 24-bit field from a1
|
|
Packit |
5c3484 |
vperm y2, c1, z, pv C extract 4 24-bit field from a1
|
|
Packit |
5c3484 |
li r10, 48
|
|
Packit |
5c3484 |
lvx pv, r10, r11
|
|
Packit |
5c3484 |
vperm x3, a0, z, pv C extract remaining/partial a0 fields
|
|
Packit |
5c3484 |
vperm y3, c2, z, pv C extract remaining/partial a0 fields
|
|
Packit |
5c3484 |
li r10, 64
|
|
Packit |
5c3484 |
lvx pv, r10, r11
|
|
Packit |
5c3484 |
vperm x3, a1, x3, pv C insert remaining/partial a1 fields
|
|
Packit |
5c3484 |
vperm y3, c0, y3, pv C insert remaining/partial a1 fields
|
|
Packit |
5c3484 |
li r10, 80
|
|
Packit |
5c3484 |
lvx pv, r10, r11
|
|
Packit |
5c3484 |
vperm x3, a2, x3, pv C insert remaining/partial a2 fields
|
|
Packit |
5c3484 |
vperm y3, c1, y3, pv C insert remaining/partial a2 fields
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
C We now have 4 128-bit accumulators to sum
|
|
Packit |
5c3484 |
vadduwm x0, x0, x1
|
|
Packit |
5c3484 |
vadduwm x2, x2, x3
|
|
Packit |
5c3484 |
vadduwm x0, x0, x2
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
vadduwm y0, y0, y1
|
|
Packit |
5c3484 |
vadduwm y2, y2, y3
|
|
Packit |
5c3484 |
vadduwm y0, y0, y2
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
vadduwm x0, x0, y0
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
C Reduce 32-bit fields
|
|
Packit |
5c3484 |
vsumsws x0, x0, z
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
li r7, 16
|
|
Packit |
5c3484 |
stvx x0, r7, r1
|
|
Packit |
5c3484 |
lwz r3, 28(r1)
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
mtspr 256, r10
|
|
Packit |
5c3484 |
addi r1, r1, 32
|
|
Packit |
5c3484 |
blr
|
|
Packit |
5c3484 |
EPILOGUE()
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
C load | v0 | v1 | v2 |
|
|
Packit |
5c3484 |
C acc | a0 | a1 | a2 |
|
|
Packit |
5c3484 |
C carry | c0 | c1 | c2 |
|
|
Packit |
5c3484 |
C | 0 1 2 3 | 4 5 6 7 | 8 9 10 11 | 128
|
|
Packit |
5c3484 |
C |---|---|---|---|---|---|---|---|---|---|---|---| 32
|
|
Packit |
5c3484 |
C | | | | | | | | | | | | | | | | | 24
|
|
Packit |
5c3484 |
C | | | | | | | | | 48
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
C $---------------$---------------$---------------$---------------$
|
|
Packit |
5c3484 |
C | . . . . . . . . . . . . . . . |
|
|
Packit |
5c3484 |
C |_______________________________________________________________|
|
|
Packit |
5c3484 |
C | | | | | | |
|
|
Packit |
5c3484 |
C <-hi16-> <--- 24 --> <--- 24 --> <--- 24 --> <--- 24 --> <-lo16->
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
DEF_OBJECT(cnsts,16)
|
|
Packit |
5c3484 |
C Permutation vectors in the order they are used above
|
|
Packit |
5c3484 |
C # 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
|
|
Packit |
5c3484 |
.byte 0x10,0x01,0x02,0x03, 0x10,0x06,0x07,0x00, 0x10,0x0b,0x04,0x05, 0x10,0x08,0x09,0x0a C a0
|
|
Packit |
5c3484 |
.byte 0x10,0x07,0x00,0x01, 0x10,0x04,0x05,0x06, 0x10,0x09,0x0a,0x0b, 0x10,0x0e,0x0f,0x08 C a1
|
|
Packit |
5c3484 |
.byte 0x10,0x00,0x01,0x02, 0x10,0x05,0x06,0x07, 0x10,0x0a,0x0b,0x04, 0x10,0x0f,0x08,0x09 C a2
|
|
Packit |
5c3484 |
.byte 0x10,0x0d,0x0e,0x0f, 0x10,0x10,0x10,0x0c, 0x10,0x10,0x10,0x10, 0x10,0x10,0x10,0x10 C part a0
|
|
Packit |
5c3484 |
.byte 0x10,0x11,0x12,0x13, 0x10,0x02,0x03,0x17, 0x10,0x10,0x0c,0x0d, 0x10,0x10,0x10,0x10 C part a1
|
|
Packit |
5c3484 |
.byte 0x10,0x11,0x12,0x13, 0x10,0x15,0x16,0x17, 0x10,0x03,0x1a,0x1b, 0x10,0x0c,0x0d,0x0e C part a2
|
|
Packit |
5c3484 |
C Masks for high end of number
|
|
Packit |
5c3484 |
.byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
|
|
Packit |
5c3484 |
.byte 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
Packit |
5c3484 |
.byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
Packit |
5c3484 |
.byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00
|
|
Packit |
5c3484 |
C Masks for low end of number
|
|
Packit |
5c3484 |
C .byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
|
|
Packit |
5c3484 |
C .byte 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
|
|
Packit |
5c3484 |
C .byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
|
|
Packit |
5c3484 |
C .byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff
|
|
Packit |
5c3484 |
END_OBJECT(cnsts)
|