From 46c134b0f9524a47e7ee74b798e83fcc33b74202 Mon Sep 17 00:00:00 2001 From: Jack Lloyd Date: Sat, 25 Jul 2015 00:00:51 -0400 Subject: Remove the x86 asm versions of MD4, MD5, SHA-1 and Serpent With modern compilers, all are slower than the C++ and SSE2 versions of the same algos. GH #216 --- src/lib/utils/asm_x86_32/asm_x86_32.h | 128 ---------------------------------- src/lib/utils/asm_x86_32/info.txt | 26 ------- src/lib/utils/asm_x86_64/asm_x86_64.h | 127 --------------------------------- src/lib/utils/asm_x86_64/info.txt | 24 ------- 4 files changed, 305 deletions(-) delete mode 100644 src/lib/utils/asm_x86_32/asm_x86_32.h delete mode 100644 src/lib/utils/asm_x86_32/info.txt delete mode 100644 src/lib/utils/asm_x86_64/asm_x86_64.h delete mode 100644 src/lib/utils/asm_x86_64/info.txt (limited to 'src/lib/utils') diff --git a/src/lib/utils/asm_x86_32/asm_x86_32.h b/src/lib/utils/asm_x86_32/asm_x86_32.h deleted file mode 100644 index 7149b8db5..000000000 --- a/src/lib/utils/asm_x86_32/asm_x86_32.h +++ /dev/null @@ -1,128 +0,0 @@ -/* -* Assembly Macros for 32-bit x86 -* (C) 1999-2008 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#ifndef BOTAN_ASM_MACROS_X86_32_H__ -#define BOTAN_ASM_MACROS_X86_32_H__ - -/* -* General/Global Macros -*/ -#define ALIGN .p2align 4,,15 - -#define START_LISTING(FILENAME) \ - .file #FILENAME; \ - .text; \ - ALIGN; - -#if defined(__ELF__) -.section .note.GNU-stack,"",%progbits -#endif - -/* -* Function Definitions -*/ -#define START_FUNCTION(func_name) \ - ALIGN; \ - .global func_name; \ - .type func_name,@function; \ -func_name: - -#define END_FUNCTION(func_name) \ - ret - -/* -* Loop Control -*/ -#define START_LOOP(LABEL) \ - ALIGN; \ - LABEL##_LOOP: - -#define LOOP_UNTIL_EQ(REG, NUM, LABEL) \ - cmpl IMM(NUM), REG; \ - jne LABEL##_LOOP - -#define LOOP_UNTIL_LT(REG, NUM, LABEL) \ - cmpl IMM(NUM), REG; \ - jge LABEL##_LOOP - -/* - Conditional Jumps -*/ -#define JUMP_IF_ZERO(REG, LABEL) \ - cmpl IMM(0), REG; \ - jz LABEL - -#define JUMP_IF_LT(REG, NUM, LABEL) \ - cmpl IMM(NUM), REG; \ - jl LABEL - -/* -* Register Names -*/ -#define EAX %eax -#define EBX %ebx -#define ECX %ecx -#define EDX %edx -#define EBP %ebp -#define EDI %edi -#define ESI %esi -#define ESP %esp - -/* -* Memory Access Operations -*/ -#define ARRAY1(REG, NUM) (NUM)(REG) -#define ARRAY4(REG, NUM) 4*(NUM)(REG) -#define ARRAY4_INDIRECT(BASE, OFFSET, NUM) 4*(NUM)(BASE,OFFSET,4) -#define ARG(NUM) 4*(PUSHED) + ARRAY4(ESP, NUM) - -#define ASSIGN(TO, FROM) movl FROM, TO -#define ASSIGN_BYTE(TO, FROM) movzbl FROM, TO - -#define PUSH(REG) pushl REG -#define POP(REG) popl REG - -#define SPILL_REGS() \ - PUSH(EBP) ; \ - PUSH(EDI) ; \ - PUSH(ESI) ; \ - PUSH(EBX) - -#define RESTORE_REGS() \ - POP(EBX) ; \ - POP(ESI) ; \ - POP(EDI) ; \ - POP(EBP) - -/* -* ALU Operations -*/ -#define IMM(VAL) $VAL - -#define ADD(TO, FROM) addl FROM, TO -#define ADD_IMM(TO, NUM) ADD(TO, IMM(NUM)) -#define ADD_W_CARRY(TO1, TO2, FROM) addl FROM, TO1; adcl IMM(0), TO2; -#define SUB_IMM(TO, NUM) subl IMM(NUM), TO -#define ADD2_IMM(TO, FROM, NUM) leal NUM(FROM), TO -#define ADD3_IMM(TO, FROM, NUM) leal NUM(TO,FROM,1), TO -#define MUL(REG) mull REG - -#define SHL_IMM(REG, SHIFT) shll IMM(SHIFT), REG -#define SHR_IMM(REG, SHIFT) shrl IMM(SHIFT), REG -#define SHL2_3(TO, FROM) leal 0(,FROM,8), TO - -#define XOR(TO, FROM) xorl FROM, TO -#define AND(TO, FROM) andl FROM, TO -#define OR(TO, FROM) orl FROM, TO -#define NOT(REG) notl REG -#define ZEROIZE(REG) XOR(REG, REG) - -#define ROTL_IMM(REG, NUM) roll IMM(NUM), REG -#define ROTR_IMM(REG, NUM) rorl IMM(NUM), REG -#define BSWAP(REG) bswapl REG - -#endif diff --git a/src/lib/utils/asm_x86_32/info.txt b/src/lib/utils/asm_x86_32/info.txt deleted file mode 100644 index 8eeefe70e..000000000 --- a/src/lib/utils/asm_x86_32/info.txt +++ /dev/null @@ -1,26 +0,0 @@ -load_on dep - - -asm_x86_32.h - - - -x86_32 - - -# ELF systems - -android -linux -freebsd -dragonfly -netbsd -openbsd -solaris - - - -gcc -clang -icc - diff --git a/src/lib/utils/asm_x86_64/asm_x86_64.h b/src/lib/utils/asm_x86_64/asm_x86_64.h deleted file mode 100644 index eaf4388de..000000000 --- a/src/lib/utils/asm_x86_64/asm_x86_64.h +++ /dev/null @@ -1,127 +0,0 @@ -/* -* Assembly Macros for 64-bit x86 -* (C) 1999-2008 Jack Lloyd -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#ifndef BOTAN_ASM_MACROS_X86_64_H__ -#define BOTAN_ASM_MACROS_X86_64_H__ - -/* -* General/Global Macros -*/ -#define ALIGN .p2align 4,,15 - -#define START_LISTING(FILENAME) \ - .file #FILENAME; \ - .text; \ - ALIGN; - -#if defined(__ELF__) -.section .note.GNU-stack,"",%progbits -#endif - -/* -* Function Definitions -*/ -#define START_FUNCTION(func_name) \ - ALIGN; \ - .global func_name; \ - .type func_name,@function; \ -func_name: - -#define END_FUNCTION(func_name) \ - ret - -/* -* Conditional Jumps -*/ -#define JUMP_IF_ZERO(REG, LABEL) \ - cmp IMM(0), REG; \ - jz LABEL - -#define JUMP_IF_LT(REG, NUM, LABEL) \ - cmp IMM(NUM), REG; \ - jl LABEL - -/* -* Register Names -*/ -#define R0 %rax -#define R1 %rbx -#define R2 %rcx -#define R2_32 %ecx -#define R3 %rdx -#define R3_32 %edx -#define R4 %rsp -#define R5 %rbp -#define R6 %rsi -#define R6_32 %esi -#define R7 %rdi -#define R8 %r8 -#define R9 %r9 -#define R9_32 %r9d -#define R10 %r10 -#define R11 %r11 -#define R12 %r12 -#define R13 %r13 -#define R14 %r14 -#define R15 %r15 -#define R16 %r16 - -#define ARG_1 R7 -#define ARG_2 R6 -#define ARG_2_32 R6_32 -#define ARG_3 R3 -#define ARG_3_32 R3_32 -#define ARG_4 R2 -#define ARG_4_32 R2_32 -#define ARG_5 R8 -#define ARG_6 R9 -#define ARG_6_32 R9_32 - -#define TEMP_1 R10 -#define TEMP_2 R11 -#define TEMP_3 ARG_6 -#define TEMP_4 ARG_5 -#define TEMP_5 ARG_4 -#define TEMP_5_32 ARG_4_32 -#define TEMP_6 ARG_3 -#define TEMP_7 ARG_2 -#define TEMP_8 ARG_1 -#define TEMP_9 R0 - -/* -* Memory Access Operations -*/ -#define ARRAY8(REG, NUM) 8*(NUM)(REG) -#define ARRAY4(REG, NUM) 4*(NUM)(REG) - -#define ASSIGN(TO, FROM) mov FROM, TO - -/* -* ALU Operations -*/ -#define IMM(VAL) $VAL - -#define ADD(TO, FROM) add FROM, TO -#define ADD_LAST_CARRY(REG) adc IMM(0), REG -#define ADD_IMM(TO, NUM) ADD(TO, IMM(NUM)) -#define ADD_W_CARRY(TO1, TO2, FROM) add FROM, TO1; adc IMM(0), TO2; -#define SUB_IMM(TO, NUM) sub IMM(NUM), TO -#define MUL(REG) mul REG - -#define XOR(TO, FROM) xor FROM, TO -#define AND(TO, FROM) and FROM, TO -#define OR(TO, FROM) or FROM, TO -#define NOT(REG) not REG -#define ZEROIZE(REG) XOR(REG, REG) - -#define RETURN_VALUE_IS(V) ASSIGN(%rax, V) - -#define ROTL_IMM(REG, NUM) rol IMM(NUM), REG -#define ROTR_IMM(REG, NUM) ror IMM(NUM), REG -#define ADD3_IMM(TO, FROM, NUM) lea NUM(TO,FROM,1), TO - -#endif diff --git a/src/lib/utils/asm_x86_64/info.txt b/src/lib/utils/asm_x86_64/info.txt deleted file mode 100644 index 8e381486d..000000000 --- a/src/lib/utils/asm_x86_64/info.txt +++ /dev/null @@ -1,24 +0,0 @@ -load_on dep - - -asm_x86_64.h - - - -x86_64 - - - -clang -gcc -icc - - -# ELF systems - -android -linux -netbsd -openbsd -solaris - -- cgit v1.2.3