blob: 4c4fa868906f3642a44a85550ccacb2c8caad63d (
plain) (
tree)
|
|
#ifndef ATLAS_ASM_H
#define ATLAS_ASM_H
#ifndef Mjoin
#define Mjoin(pre, nam) my_join(pre, nam)
#define my_join(pre, nam) pre ## nam
#endif
#if defined(ATL_OS_WinNT) || defined(ATL_OS_Win9x) || defined(ATL_OS_OSX)
#define ATL_asmdecor(nam) Mjoin(_,nam)
#elif defined(ATL_OS_AIX) && defined(ATL_GAS_PPC)
#define ATL_asmdecor(nam) Mjoin(.,nam)
#elif !defined(ATL_OS_OSX) && defined(ATL_GAS_PPC) && defined(ATL_USE64BITS)
#define ATL_asmdecor(nam) Mjoin(.,nam)
#else
#define ATL_asmdecor(nam) nam
#endif
#ifdef ATL_GAS_PARISC
#ifdef ATL_OS_HPUX
#define ATL_HPUX_PARISC
#else
#define ATL_LINUX_PARISC
#endif
#endif
#ifdef ATL_GAS_PPC
#ifdef ATL_OS_OSX
#define ATL_AS_OSX_PPC
#elif defined(ATL_OS_AIX)
#define ATL_AS_AIX_PPC
#else
#define ATL_GAS_LINUX_PPC
#endif
#endif
#if defined(ATL_GAS_LINUX_PPC) || defined(ATL_AS_AIX_PPC)
#define r0 0
#define f0 0
#define r1 1
#define f1 1
#define r2 2
#define f2 2
#define r3 3
#define f3 3
#define r4 4
#define f4 4
#define r5 5
#define f5 5
#define r6 6
#define f6 6
#define r7 7
#define f7 7
#define r8 8
#define f8 8
#define r9 9
#define f9 9
#define r10 10
#define f10 10
#define r11 11
#define f11 11
#define r12 12
#define f12 12
#define r13 13
#define f13 13
#define r14 14
#define f14 14
#define r15 15
#define f15 15
#define r16 16
#define f16 16
#define r17 17
#define f17 17
#define r18 18
#define f18 18
#define r19 19
#define f19 19
#define r20 20
#define f20 20
#define r21 21
#define f21 21
#define r22 22
#define f22 22
#define r23 23
#define f23 23
#define r24 24
#define f24 24
#define r25 25
#define f25 25
#define r26 26
#define f26 26
#define r27 27
#define f27 27
#define r28 28
#define f28 28
#define r29 29
#define f29 29
#define r30 30
#define f30 30
#define r31 31
#define f31 31
#define cr0 0
#define cr1 1
#define cr2 2
#define cr3 3
#define cr4 4
#define cr5 5
#define cr6 6
#define cr7 7
#endif
#ifdef ATL_OS_OSX
#define ALIGN2 .align 1
#define ALIGN4 .align 2
#define ALIGN8 .align 3
#define ALIGN16 .align 4
#define ALIGN32 .align 5
#define ALIGN64 .align 6
#define ALIGN128 .align 7
#define global globl
#else
#define ALIGN2 .align 2
#define ALIGN4 .align 4
#define ALIGN8 .align 8
#define ALIGN16 .align 16
#define ALIGN32 .align 32
#define ALIGN64 .align 64
#define ALIGN128 .align 128
#endif
#if defined(ATL_SSE1) && !defined(ATL_3DNow)
#define prefetchw prefetchnta
#endif
/*
* Solaris doesn't allow division in integer expressions in assembly, but
* many x86 kernels need to do $MB/mu; we work around this insanity with
* this kludge
*/
#if defined(ATL_DIV_NUM) && defined(ATL_DIV_DEN)
#if (ATL_DIV_NUM/ATL_DIV_DEN) == 0
#define ATL_DivAns 0
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 1
#define ATL_DivAns 1
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 2
#define ATL_DivAns 2
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 3
#define ATL_DivAns 3
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 4
#define ATL_DivAns 4
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 5
#define ATL_DivAns 5
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 6
#define ATL_DivAns 6
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 7
#define ATL_DivAns 7
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 8
#define ATL_DivAns 8
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 9
#define ATL_DivAns 9
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 10
#define ATL_DivAns 10
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 11
#define ATL_DivAns 11
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 12
#define ATL_DivAns 12
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 13
#define ATL_DivAns 13
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 14
#define ATL_DivAns 14
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 15
#define ATL_DivAns 15
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 16
#define ATL_DivAns 16
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 17
#define ATL_DivAns 17
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 18
#define ATL_DivAns 18
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 19
#define ATL_DivAns 19
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 20
#define ATL_DivAns 20
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 21
#define ATL_DivAns 21
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 22
#define ATL_DivAns 22
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 23
#define ATL_DivAns 23
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 24
#define ATL_DivAns 24
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 25
#define ATL_DivAns 25
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 26
#define ATL_DivAns 26
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 27
#define ATL_DivAns 27
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 28
#define ATL_DivAns 28
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 29
#define ATL_DivAns 29
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 30
#define ATL_DivAns 30
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 31
#define ATL_DivAns 31
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 32
#define ATL_DivAns 32
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 33
#define ATL_DivAns 33
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 34
#define ATL_DivAns 34
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 35
#define ATL_DivAns 35
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 36
#define ATL_DivAns 36
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 37
#define ATL_DivAns 37
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 38
#define ATL_DivAns 38
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 39
#define ATL_DivAns 39
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 40
#define ATL_DivAns 40
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 41
#define ATL_DivAns 41
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 42
#define ATL_DivAns 42
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 43
#define ATL_DivAns 43
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 44
#define ATL_DivAns 44
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 45
#define ATL_DivAns 45
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 46
#define ATL_DivAns 46
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 47
#define ATL_DivAns 47
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 48
#define ATL_DivAns 48
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 49
#define ATL_DivAns 49
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 50
#define ATL_DivAns 50
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 51
#define ATL_DivAns 51
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 52
#define ATL_DivAns 52
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 53
#define ATL_DivAns 53
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 54
#define ATL_DivAns 54
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 55
#define ATL_DivAns 55
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 56
#define ATL_DivAns 56
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 57
#define ATL_DivAns 57
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 58
#define ATL_DivAns 58
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 59
#define ATL_DivAns 59
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 60
#define ATL_DivAns 60
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 61
#define ATL_DivAns 61
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 62
#define ATL_DivAns 62
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 63
#define ATL_DivAns 63
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 64
#define ATL_DivAns 64
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 65
#define ATL_DivAns 65
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 66
#define ATL_DivAns 66
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 67
#define ATL_DivAns 67
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 68
#define ATL_DivAns 68
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 69
#define ATL_DivAns 69
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 70
#define ATL_DivAns 70
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 71
#define ATL_DivAns 71
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 72
#define ATL_DivAns 72
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 73
#define ATL_DivAns 73
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 74
#define ATL_DivAns 74
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 75
#define ATL_DivAns 75
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 76
#define ATL_DivAns 76
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 77
#define ATL_DivAns 77
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 78
#define ATL_DivAns 78
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 79
#define ATL_DivAns 79
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 80
#define ATL_DivAns 80
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 81
#define ATL_DivAns 81
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 82
#define ATL_DivAns 82
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 83
#define ATL_DivAns 83
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 84
#define ATL_DivAns 84
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 85
#define ATL_DivAns 85
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 86
#define ATL_DivAns 86
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 87
#define ATL_DivAns 87
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 88
#define ATL_DivAns 88
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 89
#define ATL_DivAns 89
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 90
#define ATL_DivAns 90
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 91
#define ATL_DivAns 91
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 92
#define ATL_DivAns 92
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 93
#define ATL_DivAns 93
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 94
#define ATL_DivAns 94
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 95
#define ATL_DivAns 95
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 96
#define ATL_DivAns 96
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 97
#define ATL_DivAns 97
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 98
#define ATL_DivAns 98
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 99
#define ATL_DivAns 99
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 100
#define ATL_DivAns 100
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 101
#define ATL_DivAns 101
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 102
#define ATL_DivAns 102
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 103
#define ATL_DivAns 103
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 104
#define ATL_DivAns 104
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 105
#define ATL_DivAns 105
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 106
#define ATL_DivAns 106
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 107
#define ATL_DivAns 107
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 108
#define ATL_DivAns 108
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 109
#define ATL_DivAns 109
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 110
#define ATL_DivAns 110
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 111
#define ATL_DivAns 111
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 112
#define ATL_DivAns 112
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 113
#define ATL_DivAns 113
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 114
#define ATL_DivAns 114
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 115
#define ATL_DivAns 115
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 116
#define ATL_DivAns 116
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 117
#define ATL_DivAns 117
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 118
#define ATL_DivAns 118
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 119
#define ATL_DivAns 119
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 120
#define ATL_DivAns 120
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 121
#define ATL_DivAns 121
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 122
#define ATL_DivAns 122
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 123
#define ATL_DivAns 123
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 124
#define ATL_DivAns 124
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 125
#define ATL_DivAns 125
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 126
#define ATL_DivAns 126
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 127
#define ATL_DivAns 127
#elif (ATL_DIV_NUM/ATL_DIV_DEN) == 128
#define ATL_DivAns 128
#endif
#endif
/*
* For GNU/Linux, set no-execute bit for all ATLAS assembly
*/
#if defined(ATL_OS_Linux) && defined(__ELF__) && defined(__GNUC__) && \
defined(ATL_SSE1)
.section .note.GNU-stack,"",%progbits
#endif
#endif
|