The unified diff between revisions [63c067b5..] and [67768644..] is displayed below. It can also be downloaded as a raw diff.

This diff has been restricted to the following files: 'modules/alg_amd64/asm_macr.h'

#
#
# patch "modules/alg_amd64/asm_macr.h"
#  from [c8fe2875602bdeeb27250cf791110e664b82cf0e]
#    to [b9d8a0bb0350c0f45355b78469fc63bb48c1b590]
#
============================================================
--- modules/alg_amd64/asm_macr.h	c8fe2875602bdeeb27250cf791110e664b82cf0e
+++ modules/alg_amd64/asm_macr.h	b9d8a0bb0350c0f45355b78469fc63bb48c1b590
@@ -44,7 +44,7 @@ func_name:
    jge LABEL##_LOOP

 /*************************************************
- Conditional Jumps                              *
+* Conditional Jumps                              *
 *************************************************/
 #define JUMP_IF_ZERO(REG, LABEL) \
    cmp IMM(0), REG;              \
@@ -55,9 +55,48 @@ func_name:
    jl LABEL

 /*************************************************
+* Register Names                                 *
+*************************************************/
+#define R0  %rax
+#define R1  %rbx
+#define R2  %rcx
+#define R3  %rdx
+#define R4  %rsp
+#define R5  %rbp
+#define R6  %rsi
+#define R7  %rdi
+#define R8  %r8
+#define R9  %r9
+#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_3 R3
+#define ARG_4 R2
+#define ARG_5 R8
+#define ARG_6 R9
+
+#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_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

@@ -66,19 +105,23 @@ func_name:
 *************************************************/
 #define IMM(VAL) $VAL

-#define ADD(TO, FROM) addq FROM, TO
-#define ADD_LAST_CARRY(REG) adcq IMM(0), REG
+#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) addq FROM, TO1; adcq IMM(0), TO2;
+#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) mulq REG
+#define MUL(REG) mul REG

-#define XOR(TO, FROM) xorq FROM, TO
-#define AND(TO, FROM) andq FROM, TO
-#define OR(TO, FROM) orq FROM, TO
-#define NOT(REG) notq 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