Skip to content

Commit

Permalink
initial
Browse files Browse the repository at this point in the history
  • Loading branch information
DavidX authored and DavidX committed May 8, 2015
0 parents commit 67c9b64
Show file tree
Hide file tree
Showing 7,459 changed files with 1,839,749 additions and 0 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
Binary file added 7-Zip/7z920.tar.bz2
Binary file not shown.
100 changes: 100 additions & 0 deletions 7-Zip/7z920/Asm/arm/7zCrcOpt.asm
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
CODE32

EXPORT |CrcUpdateT4@16|

AREA |.text|, CODE, ARM

MACRO
CRC32_STEP_1

ldrb r4, [r1], #1
subs r2, r2, #1
eor r4, r4, r0
and r4, r4, #0xFF
ldr r4, [r3, +r4, lsl #2]
eor r0, r4, r0, lsr #8

MEND


MACRO
CRC32_STEP_4 $STREAM_WORD
eor r7, r7, r8
eor r7, r7, r9
eor r0, r0, r7
eor r0, r0, $STREAM_WORD
ldr $STREAM_WORD, [r1], #4
and r7, r0, #0xFF
and r8, r0, #0xFF00
and r9, r0, #0xFF0000
and r0, r0, #0xFF000000

ldr r7, [r6, +r7, lsl #2]
ldr r8, [r5, +r8, lsr #6]
ldr r9, [r4, +r9, lsr #14]
ldr r0, [r3, +r0, lsr #22]
MEND


|CrcUpdateT4@16| PROC

stmdb sp!, {r4-r11, lr}
cmp r2, #0
beq |$fin|

|$v1|
tst r1, #7
beq |$v2|
CRC32_STEP_1
bne |$v1|

|$v2|
cmp r2, #16
blo |$v3|

ldr r10, [r1], #4
ldr r11, [r1], #4

add r4, r3, #0x400
add r5, r3, #0x800
add r6, r3, #0xC00

mov r7, #0
mov r8, #0
mov r9, #0

sub r2, r2, #16

|$loop|
; pld [r1, #0x40]

CRC32_STEP_4 r10
CRC32_STEP_4 r11

subs r2, r2, #8
bhs |$loop|

sub r1, r1, #8
add r2, r2, #16

eor r7, r7, r8
eor r7, r7, r9
eor r0, r0, r7

|$v3|
cmp r2, #0
beq |$fin|

|$v4|
CRC32_STEP_1
bne |$v4|

|$fin|
ldmia sp!, {r4-r11, pc}

|CrcUpdateT4@16| ENDP

END
93 changes: 93 additions & 0 deletions 7-Zip/7z920/Asm/x86/7zAsm.asm
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
; 7zAsm.asm -- ASM macros
; 2009-12-12 : Igor Pavlov : Public domain

MY_ASM_START macro
ifdef x64
.code
else
.386
.model flat
_TEXT$00 SEGMENT PARA PUBLIC 'CODE'
endif
endm

MY_PROC macro name:req, numParams:req
align 16
proc_numParams equ numParams
ifdef x64
proc_name equ name
name PROC
else
proc_fastcall_name equ @CatStr(@,name,@, %numParams * 4)
public proc_fastcall_name
proc_fastcall_name:
endif
endm

MY_ENDP macro
ifdef x64
ret
proc_name ENDP
else
ret (proc_numParams - 2) * 4
endif
endm

ifdef x64
REG_SIZE equ 8
else
REG_SIZE equ 4
endif

x0 equ EAX
x1 equ ECX
x2 equ EDX
x3 equ EBX
x4 equ ESP
x5 equ EBP
x6 equ ESI
x7 equ EDI

x0_L equ AL
x1_L equ CL
x2_L equ DL
x3_L equ BL

x0_H equ AH
x1_H equ CH
x2_H equ DH
x3_H equ BH

ifdef x64
r0 equ RAX
r1 equ RCX
r2 equ RDX
r3 equ RBX
r4 equ RSP
r5 equ RBP
r6 equ RSI
r7 equ RDI
else
r0 equ x0
r1 equ x1
r2 equ x2
r3 equ x3
r4 equ x4
r5 equ x5
r6 equ x6
r7 equ x7
endif

MY_PUSH_4_REGS macro
push r3
push r5
push r6
push r7
endm

MY_POP_4_REGS macro
pop r7
pop r6
pop r5
pop r3
endm
147 changes: 147 additions & 0 deletions 7-Zip/7z920/Asm/x86/7zCrcOpt.asm
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
; 7zCrcOpt.asm -- CRC32 calculation : optimized version
; 2009-12-12 : Igor Pavlov : Public domain

include 7zAsm.asm

MY_ASM_START

rD equ r2
rN equ r7

ifdef x64
num_VAR equ r8
table_VAR equ r9
else
data_size equ (REG_SIZE * 5)
crc_table equ (REG_SIZE + data_size)
num_VAR equ [r4 + data_size]
table_VAR equ [r4 + crc_table]
endif

SRCDAT equ rN + rD + 4 *

CRC macro op:req, dest:req, src:req, t:req
op dest, DWORD PTR [r5 + src * 4 + 0400h * t]
endm

CRC_XOR macro dest:req, src:req, t:req
CRC xor, dest, src, t
endm

CRC_MOV macro dest:req, src:req, t:req
CRC mov, dest, src, t
endm

CRC1b macro
movzx x6, BYTE PTR [rD]
inc rD
movzx x3, x0_L
xor x6, x3
shr x0, 8
CRC xor, x0, r6, 0
dec rN
endm

MY_PROLOG macro crc_end:req
MY_PUSH_4_REGS
mov x0, x1
mov rN, num_VAR
mov r5, table_VAR
test rN, rN
jz crc_end
@@:
test rD, 7
jz @F
CRC1b
jnz @B
@@:
cmp rN, 16
jb crc_end
add rN, rD
mov num_VAR, rN
sub rN, 8
and rN, NOT 7
sub rD, rN
xor x0, [SRCDAT 0]
endm

MY_EPILOG macro crc_end:req
xor x0, [SRCDAT 0]
mov rD, rN
mov rN, num_VAR
sub rN, rD
crc_end:
test rN, rN
jz @F
CRC1b
jmp crc_end
@@:
MY_POP_4_REGS
endm

MY_PROC CrcUpdateT8, 4
MY_PROLOG crc_end_8
mov x1, [SRCDAT 1]
align 16
main_loop_8:
mov x6, [SRCDAT 2]
movzx x3, x1_L
CRC_XOR x6, r3, 3
movzx x3, x1_H
CRC_XOR x6, r3, 2
shr x1, 16
movzx x3, x1_L
movzx x1, x1_H
CRC_XOR x6, r3, 1
movzx x3, x0_L
CRC_XOR x6, r1, 0

mov x1, [SRCDAT 3]
CRC_XOR x6, r3, 7
movzx x3, x0_H
shr x0, 16
CRC_XOR x6, r3, 6
movzx x3, x0_L
CRC_XOR x6, r3, 5
movzx x3, x0_H
CRC_MOV x0, r3, 4
xor x0, x6
add rD, 8
jnz main_loop_8

MY_EPILOG crc_end_8
MY_ENDP

MY_PROC CrcUpdateT4, 4
MY_PROLOG crc_end_4
align 16
main_loop_4:
movzx x1, x0_L
movzx x3, x0_H
shr x0, 16
movzx x6, x0_H
and x0, 0FFh
CRC_MOV x1, r1, 3
xor x1, [SRCDAT 1]
CRC_XOR x1, r3, 2
CRC_XOR x1, r6, 0
CRC_XOR x1, r0, 1
movzx x0, x1_L
movzx x3, x1_H
shr x1, 16
movzx x6, x1_H
and x1, 0FFh
CRC_MOV x0, r0, 3
xor x0, [SRCDAT 2]
CRC_XOR x0, r3, 2
CRC_XOR x0, r6, 0
CRC_XOR x0, r1, 1
add rD, 8
jnz main_loop_4

MY_EPILOG crc_end_4
MY_ENDP

end
Loading

0 comments on commit 67c9b64

Please sign in to comment.