From 19bcfecc67fa8e50725d2d0c84341b17a760bd35 Mon Sep 17 00:00:00 2001
From: Christoph Oelckers <coelckers@users.noreply.github.com>
Date: Sun, 8 Sep 2019 21:22:42 +0200
Subject: [PATCH] - get rid of the non-inlined assembly as well.

---
 source/build/src/pragmas.cpp | 208 -----------------------------------
 1 file changed, 208 deletions(-)

diff --git a/source/build/src/pragmas.cpp b/source/build/src/pragmas.cpp
index e11a2d7fe..d73144a78 100644
--- a/source/build/src/pragmas.cpp
+++ b/source/build/src/pragmas.cpp
@@ -26,214 +26,6 @@ uint32_t divideu32_noinline(uint32_t n, uint32_t d) { return divideu32(n, d); }
 int32_t tabledivide32_noinline(int32_t n, int32_t d) { return tabledivide32(n, d); }
 int64_t tabledivide64_noinline(int64_t n, int64_t d) { return tabledivide64(n, d); }
 
-#if defined(__GNUC__) && defined(__i386__) && !defined(NOASM)	// NOASM
-
-//
-// GCC Inline Assembler version
-//
-
-#define ASM __asm__ __volatile__
-
-#define pragmas_have_clearbufbyte
-
-void clearbufbyte(void *D, int32_t c, int32_t a)
-{
-    ASM(
-        "cmpl $4, %%ecx\n\t"
-        "jae 1f\n\t"
-        "testb $1, %%cl\n\t"
-        "jz 0f\n\t"			// jz preskip
-        "stosb\n\t"
-        "0:\n\t"			// preskip:
-        "shrl $1, %%ecx\n\t"
-        "rep\n\t"
-        "stosw\n\t"
-        "jmp 5f\n\t"			// jmp endit
-        "1:\n\t"			// intcopy:
-        "testl $1, %%edi\n\t"
-        "jz 2f\n\t"			// jz skip1
-        "stosb\n\t"
-        "decl %%ecx\n\t"
-        "2:\n\t"			// skip1:
-        "testl $2, %%edi\n\t"
-        "jz 3f\n\t"			// jz skip2
-        "stosw\n\t"
-        "subl $2, %%ecx\n\t"
-        "3:\n\t"			// skip2:
-        "movl %%ecx, %%ebx\n\t"
-        "shrl $2, %%ecx\n\t"
-        "rep\n\t"
-        "stosl\n\t"
-        "testb $2, %%bl\n\t"
-        "jz 4f\n\t"			// jz skip3
-        "stosw\n\t"
-        "4:\n\t"			// skip3:
-        "testb $1, %%bl\n\t"
-        "jz 5f\n\t"			// jz endit
-        "stosb\n\t"
-        "5:"				// endit
-    : "+D"(D), "+c"(c), "+a"(a) :
-            : "ebx", "memory", "cc"
-        );
-}
-
-#define pragmas_have_copybufbyte
-
-void copybufbyte(const void *S, void *D, int32_t c)
-{
-    ASM(
-        "cmpl $4, %%ecx\n\t"		// cmp ecx, 4
-        "jae 1f\n\t"
-        "testb $1, %%cl\n\t"		// test cl, 1
-        "jz 0f\n\t"
-        "movsb\n\t"
-        "0:\n\t"			// preskip:
-        "shrl $1, %%ecx\n\t"		// shr ecx, 1
-        "rep\n\t"
-        "movsw\n\t"
-        "jmp 5f\n\t"
-        "1:\n\t"			// intcopy:
-        "testl $1, %%edi\n\t"		// test edi, 1
-        "jz 2f\n\t"
-        "movsb\n\t"
-        "decl %%ecx\n\t"
-        "2:\n\t"			// skip1:
-        "testl $2, %%edi\n\t"		// test edi, 2
-        "jz 3f\n\t"
-        "movsw\n\t"
-        "subl $2, %%ecx\n\t"		// sub ecx, 2
-        "3:\n\t"			// skip2:
-        "movl %%ecx, %%ebx\n\t"		// mov ebx, ecx
-        "shrl $2, %%ecx\n\t"		// shr ecx ,2
-        "rep\n\t"
-        "movsl\n\t"
-        "testb $2, %%bl\n\t"		// test bl, 2
-        "jz 4f\n\t"
-        "movsw\n\t"
-        "4:\n\t"			// skip3:
-        "testb $1, %%bl\n\t"		// test bl, 1
-        "jz 5f\n\t"
-        "movsb\n\t"
-        "5:"				// endit:
-    : "+c"(c), "+S"(S), "+D"(D) :
-            : "ebx", "memory", "cc"
-        );
-}
-
-#define pragmas_have_copybufreverse
-
-void copybufreverse(const void *S, void *D, int32_t c)
-{
-    ASM(
-        "shrl $1, %%ecx\n\t"
-        "jnc 0f\n\t"		// jnc skipit1
-        "movb (%%esi), %%al\n\t"
-        "decl %%esi\n\t"
-        "movb %%al, (%%edi)\n\t"
-        "incl %%edi\n\t"
-        "0:\n\t"		// skipit1:
-        "shrl $1, %%ecx\n\t"
-        "jnc 1f\n\t"		// jnc skipit2
-        "movw -1(%%esi), %%ax\n\t"
-        "subl $2, %%esi\n\t"
-        "rorw $8, %%ax\n\t"
-        "movw %%ax, (%%edi)\n\t"
-        "addl $2, %%edi\n\t"
-        "1:\n\t"		// skipit2
-        "testl %%ecx, %%ecx\n\t"
-        "jz 3f\n\t"		// jz endloop
-        "2:\n\t"		// begloop
-        "movl -3(%%esi), %%eax\n\t"
-        "subl $4, %%esi\n\t"
-        "bswapl %%eax\n\t"
-        "movl %%eax, (%%edi)\n\t"
-        "addl $4, %%edi\n\t"
-        "decl %%ecx\n\t"
-        "jnz 2b\n\t"		// jnz begloop
-        "3:"
-    : "+S"(S), "+D"(D), "+c"(c) :
-            : "eax", "memory", "cc"
-        );
-}
-
-#elif defined(_MSC_VER) && !defined(NOASM)		// __GNUC__ && __i386__
-
-//
-// Microsoft C Inline Assembler version
-//
-
-#elif defined(__GNUC__) && defined(GEKKO)
-
-#define pragmas_have_clearbufbyte
-
-void clearbufbyte(void *d, int32_t c, int32_t a)
-{
-    if (a==0) {
-        uint8_t *dd = (uint8_t*)d;
-        int32_t align = (32 - (int32_t)d) & 31;
-
-        if (align && c >= align) {
-            uint32_t izero = 0;
-            double fzero = 0;
-            c -= align;
-
-            if (align&1) {
-                *dd = izero;
-                dd += 1;
-            }
-            if (align&2) {
-                *(uint16_t*)dd = izero;
-                dd += 2;
-            }
-            if (align&4) {
-                *(uint32_t*)dd = izero;
-                dd += 4;
-            }
-            if (align&8) {
-                *(double*)dd = fzero;
-                dd += 8;
-            }
-            if (align&16) {
-                *(double*)dd = fzero;
-                *(double*)(dd+8) = fzero;
-                dd += 16;
-            }
-        }
-        align = c >> 5;
-        while (align) {
-            __asm__ (
-                " dcbz  0, %0\n"
-                " addi %0, %0, 32\n"
-                : "+r"(dd)
-                :
-                : "memory"
-                );
-            align--;
-        }
-        if ((c &= 31)) {
-            while (c--) {
-                *dd++ = 0;
-            }
-        }
-        return;
-    }
-    __asm__ __volatile__(
-        " add    %1, %1, %2\n"
-        " neg.   %2, %2\n"
-        " beq 2f\n"
-        "1:\n"
-        " stbx   %0, %1, %2\n"
-        " addic. %2, %2, 1\n"
-        " rotrwi %0, %0, 8\n"
-        " bne 1b\n"
-        "2:\n"
-        : "+r"(a), "+b"(d), "+r"(c)
-        :
-        : "cc", "xer", "memory"
-        );
-}
-
-#endif
 
 //
 // Generic C version