#include "symbol-underscore.h"

#if defined(_MSC_VER) && !defined(__clang__) /* MSVC on Windows */

PUBLIC SYMBOL_NAME(square_unsigned)
_TEXT   SEGMENT

SYMBOL_NAME(square_unsigned) PROC
        mov     eax, ecx
	imul	eax, eax
	ret
SYMBOL_NAME(square_unsigned) ENDP

_TEXT   ENDS
END

#else

.text
.globl SYMBOL_NAME(square_unsigned)
/* Only supported with GAS */
# if defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__sun)
.type  square_unsigned,@function
# endif

# if defined(_WIN32) || defined(__CYGWIN__) /* msabi */
SYMBOL_NAME(square_unsigned):
	imull	%ecx, %ecx
	movl	%ecx, %eax
	retq
# else /* sysvabi */
SYMBOL_NAME(square_unsigned):
	imull	%edi, %edi
	movl	%edi, %eax
	retq
# endif

#endif
