blob: 3ae0b915edd5c769fba52171600cb84f3100572a [file] [log] [blame]
#
# (C) 2008-2009 Advanced Micro Devices, Inc. All Rights Reserved.
#
# This file is part of libacml_mv.
#
# libacml_mv is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# libacml_mv is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with libacml_mv. If not, see
# <http://www.gnu.org/licenses/>.
#
#
#
# vrd4frcpa.asm
#
# A vector implementation of the floating point reciprocal approximation function.
# The goal is to be faster than a divide. This routine provides four double
# precision results from four double precision inputs. It would not be necessary
## if SSE defined a double precision instruction similar to the single precision
# rcpss.
#
# Prototype:
#
# __m128d,__m128d __vrd4_frcpa(__m128d x1, __m128d x2);
#
# Computes an approximate reciprocal of x.
# A table lookup is performed on the higher 10 bits of the mantissa
# (not including the implicit bit).
#
#
#
# This routine computes 4 double precision frcpa values at a time.
# The four values are passed as packed doubles in xmm0 and xmm1.
# The four results are returned as packed doubles in xmm0 and xmm1.
# Note that this represents a non-standard ABI usage, as no ABI
# ( and indeed C) currently allows returning 2 values for a function.
# It is expected that some compilers may be able to take advantage of this
# interface when implementing vectorized loops.
#
# define local variable storage offsets
.equ p_x,0 # temporary for get/put bits operation
.equ p_x2,0x10 # temporary for get/put bits operation
.equ stack_size,0x028
#ifdef __ELF__
.section .note.GNU-stack,"",@progbits
#endif
# parameters are expected as:
# xmm0 - __m128d x1
# xmm1 - __m128d x2
.text
.align 16
.p2align 4,,15
.globl __vrd4_frcpa
.type __vrd4_frcpa,@function
__vrd4_frcpa:
sub $stack_size,%rsp
# 10 bit GPR method
xor %rax,%rax
movdqa .L__mask_expext(%rip),%xmm3
movdqa %xmm1,%xmm6
movdqa %xmm0,%xmm4
movdqa %xmm3,%xmm5
## if 1/2 bit set, increment the index+exponent
psrlq $41,%xmm4
psrlq $41,%xmm6
movdqa %xmm4,%xmm2
paddq .L__int_one(%rip),%xmm4
psrlq $1,%xmm4
pand .L__mask_10bits(%rip),%xmm4
# invert the exponent
psubq %xmm2,%xmm3
movdqa %xmm6,%xmm2
paddq .L__int_one(%rip),%xmm6
psrlq $1,%xmm6
pand .L__mask_10bits(%rip),%xmm6
psubq %xmm2,%xmm5
pand .L__mask_expext2(%rip),%xmm3
pand .L__mask_expext2(%rip),%xmm5
psllq $1,%xmm3
# do the lookup and recombine
lea .L__rcp_table(%rip),%rdx
movdqa %xmm4,p_x(%rsp) # move the indexes to a memory location
psllq $1,%xmm5
mov p_x(%rsp),%r8 # 3 cycles faster for frcpa, but 2 cycles slower for log
mov p_x+8(%rsp),%r9
movdqa %xmm6,p_x2(%rsp) # move the indexes to a memory location
movd (%rdx,%r9,4),%xmm2 # lookup
movd (%rdx,%r8,4),%xmm4 # lookup
pslldq $8,%xmm2 # shift by 8 bytes
por %xmm4,%xmm2
por %xmm2,%xmm3
mov p_x2(%rsp),%r8 # 3 cycles faster for frcpa, but 2 cycles slower for log
mov p_x2+8(%rsp),%r9
movd (%rdx,%r9,4),%xmm2 # lookup
movd (%rdx,%r8,4),%xmm4 # lookup
pslldq $8,%xmm2 # shift by 8 bytes
por %xmm4,%xmm2
por %xmm2,%xmm5
# shift and restore the sign
pand .L__mask_sign(%rip),%xmm0
pand .L__mask_sign(%rip),%xmm1
psllq $40,%xmm3
psllq $40,%xmm5
por %xmm3,%xmm0
por %xmm5,%xmm1
add $stack_size,%rsp
ret
.data
.align 16
.L__int_one: .quad 0x00000000000000001
.quad 0x00000000000000001
.L__mask_10bits: .quad 0x000000000000003ff
.quad 0x000000000000003ff
.L__mask_expext: .quad 0x000000000003ff000
.quad 0x000000000003ff000
.L__mask_expext2: .quad 0x000000000003ff800
.quad 0x000000000003ff800
.L__mask_sign: .quad 0x08000000000000000
.quad 0x08000000000000000
.L__real_one: .quad 0x03ff0000000000000
.quad 0x03ff0000000000000
.L__real_two: .quad 0x04000000000000000
.quad 0x04000000000000000
.align 16
.L__rcp_table:
.long 0x0000
.long 0x0FF8
.long 0x0FF0
.long 0x0FE8
.long 0x0FE0
.long 0x0FD8
.long 0x0FD0
.long 0x0FC8
.long 0x0FC0
.long 0x0FB8
.long 0x0FB1
.long 0x0FA9
.long 0x0FA1
.long 0x0F99
.long 0x0F91
.long 0x0F89
.long 0x0F82
.long 0x0F7A
.long 0x0F72
.long 0x0F6B
.long 0x0F63
.long 0x0F5B
.long 0x0F53
.long 0x0F4C
.long 0x0F44
.long 0x0F3D
.long 0x0F35
.long 0x0F2D
.long 0x0F26
.long 0x0F1E
.long 0x0F17
.long 0x0F0F
.long 0x0F08
.long 0x0F00
.long 0x0EF8
.long 0x0EF1
.long 0x0EEA
.long 0x0EE2
.long 0x0EDB
.long 0x0ED3
.long 0x0ECC
.long 0x0EC4
.long 0x0EBD
.long 0x0EB6
.long 0x0EAE
.long 0x0EA7
.long 0x0EA0
.long 0x0E98
.long 0x0E91
.long 0x0E8A
.long 0x0E82
.long 0x0E7B
.long 0x0E74
.long 0x0E6D
.long 0x0E65
.long 0x0E5E
.long 0x0E57
.long 0x0E50
.long 0x0E49
.long 0x0E41
.long 0x0E3A
.long 0x0E33
.long 0x0E2C
.long 0x0E25
.long 0x0E1E
.long 0x0E17
.long 0x0E10
.long 0x0E09
.long 0x0E02
.long 0x0DFB
.long 0x0DF4
.long 0x0DED
.long 0x0DE6
.long 0x0DDF
.long 0x0DD8
.long 0x0DD1
.long 0x0DCA
.long 0x0DC3
.long 0x0DBC
.long 0x0DB5
.long 0x0DAE
.long 0x0DA7
.long 0x0DA0
.long 0x0D9A
.long 0x0D93
.long 0x0D8C
.long 0x0D85
.long 0x0D7E
.long 0x0D77
.long 0x0D71
.long 0x0D6A
.long 0x0D63
.long 0x0D5C
.long 0x0D56
.long 0x0D4F
.long 0x0D48
.long 0x0D42
.long 0x0D3B
.long 0x0D34
.long 0x0D2E
.long 0x0D27
.long 0x0D20
.long 0x0D1A
.long 0x0D13
.long 0x0D0C
.long 0x0D06
.long 0x0CFF
.long 0x0CF9
.long 0x0CF2
.long 0x0CEC
.long 0x0CE5
.long 0x0CDF
.long 0x0CD8
.long 0x0CD2
.long 0x0CCB
.long 0x0CC5
.long 0x0CBE
.long 0x0CB8
.long 0x0CB1
.long 0x0CAB
.long 0x0CA4
.long 0x0C9E
.long 0x0C98
.long 0x0C91
.long 0x0C8B
.long 0x0C85
.long 0x0C7E
.long 0x0C78
.long 0x0C72
.long 0x0C6B
.long 0x0C65
.long 0x0C5F
.long 0x0C58
.long 0x0C52
.long 0x0C4C
.long 0x0C46
.long 0x0C3F
.long 0x0C39
.long 0x0C33
.long 0x0C2D
.long 0x0C26
.long 0x0C20
.long 0x0C1A
.long 0x0C14
.long 0x0C0E
.long 0x0C08
.long 0x0C02
.long 0x0BFB
.long 0x0BF5
.long 0x0BEF
.long 0x0BE9
.long 0x0BE3
.long 0x0BDD
.long 0x0BD7
.long 0x0BD1
.long 0x0BCB
.long 0x0BC5
.long 0x0BBF
.long 0x0BB9
.long 0x0BB3
.long 0x0BAD
.long 0x0BA7
.long 0x0BA1
.long 0x0B9B
.long 0x0B95
.long 0x0B8F
.long 0x0B89
.long 0x0B83
.long 0x0B7D
.long 0x0B77
.long 0x0B71
.long 0x0B6C
.long 0x0B66
.long 0x0B60
.long 0x0B5A
.long 0x0B54
.long 0x0B4E
.long 0x0B48
.long 0x0B43
.long 0x0B3D
.long 0x0B37
.long 0x0B31
.long 0x0B2B
.long 0x0B26
.long 0x0B20
.long 0x0B1A
.long 0x0B14
.long 0x0B0F
.long 0x0B09
.long 0x0B03
.long 0x0AFE
.long 0x0AF8
.long 0x0AF2
.long 0x0AED
.long 0x0AE7
.long 0x0AE1
.long 0x0ADC
.long 0x0AD6
.long 0x0AD0
.long 0x0ACB
.long 0x0AC5
.long 0x0AC0
.long 0x0ABA
.long 0x0AB4
.long 0x0AAF
.long 0x0AA9
.long 0x0AA4
.long 0x0A9E
.long 0x0A99
.long 0x0A93
.long 0x0A8E
.long 0x0A88
.long 0x0A83
.long 0x0A7D
.long 0x0A78
.long 0x0A72
.long 0x0A6D
.long 0x0A67
.long 0x0A62
.long 0x0A5C
.long 0x0A57
.long 0x0A52
.long 0x0A4C
.long 0x0A47
.long 0x0A41
.long 0x0A3C
.long 0x0A37
.long 0x0A31
.long 0x0A2C
.long 0x0A27
.long 0x0A21
.long 0x0A1C
.long 0x0A17
.long 0x0A11
.long 0x0A0C
.long 0x0A07
.long 0x0A01
.long 0x09FC
.long 0x09F7
.long 0x09F2
.long 0x09EC
.long 0x09E7
.long 0x09E2
.long 0x09DD
.long 0x09D7
.long 0x09D2
.long 0x09CD
.long 0x09C8
.long 0x09C3
.long 0x09BD
.long 0x09B8
.long 0x09B3
.long 0x09AE
.long 0x09A9
.long 0x09A4
.long 0x099E
.long 0x0999
.long 0x0994
.long 0x098F
.long 0x098A
.long 0x0985
.long 0x0980
.long 0x097B
.long 0x0976
.long 0x0971
.long 0x096C
.long 0x0967
.long 0x0962
.long 0x095C
.long 0x0957
.long 0x0952
.long 0x094D
.long 0x0948
.long 0x0943
.long 0x093E
.long 0x0939
.long 0x0935
.long 0x0930
.long 0x092B
.long 0x0926
.long 0x0921
.long 0x091C
.long 0x0917
.long 0x0912
.long 0x090D
.long 0x0908
.long 0x0903
.long 0x08FE
.long 0x08FA
.long 0x08F5
.long 0x08F0
.long 0x08EB
.long 0x08E6
.long 0x08E1
.long 0x08DC
.long 0x08D8
.long 0x08D3
.long 0x08CE
.long 0x08C9
.long 0x08C4
.long 0x08C0
.long 0x08BB
.long 0x08B6
.long 0x08B1
.long 0x08AC
.long 0x08A8
.long 0x08A3
.long 0x089E
.long 0x089A
.long 0x0895
.long 0x0890
.long 0x088B
.long 0x0887
.long 0x0882
.long 0x087D
.long 0x0879
.long 0x0874
.long 0x086F
.long 0x086B
.long 0x0866
.long 0x0861
.long 0x085D
.long 0x0858
.long 0x0853
.long 0x084F
.long 0x084A
.long 0x0846
.long 0x0841
.long 0x083C
.long 0x0838
.long 0x0833
.long 0x082F
.long 0x082A
.long 0x0825
.long 0x0821
.long 0x081C
.long 0x0818
.long 0x0813
.long 0x080F
.long 0x080A
.long 0x0806
.long 0x0801
.long 0x07FD
.long 0x07F8
.long 0x07F4
.long 0x07EF
.long 0x07EB
.long 0x07E6
.long 0x07E2
.long 0x07DD
.long 0x07D9
.long 0x07D5
.long 0x07D0
.long 0x07CC
.long 0x07C7
.long 0x07C3
.long 0x07BE
.long 0x07BA
.long 0x07B6
.long 0x07B1
.long 0x07AD
.long 0x07A9
.long 0x07A4
.long 0x07A0
.long 0x079B
.long 0x0797
.long 0x0793
.long 0x078E
.long 0x078A
.long 0x0786
.long 0x0781
.long 0x077D
.long 0x0779
.long 0x0774
.long 0x0770
.long 0x076C
.long 0x0768
.long 0x0763
.long 0x075F
.long 0x075B
.long 0x0757
.long 0x0752
.long 0x074E
.long 0x074A
.long 0x0746
.long 0x0741
.long 0x073D
.long 0x0739
.long 0x0735
.long 0x0730
.long 0x072C
.long 0x0728
.long 0x0724
.long 0x0720
.long 0x071C
.long 0x0717
.long 0x0713
.long 0x070F
.long 0x070B
.long 0x0707
.long 0x0703
.long 0x06FE
.long 0x06FA
.long 0x06F6
.long 0x06F2
.long 0x06EE
.long 0x06EA
.long 0x06E6
.long 0x06E2
.long 0x06DE
.long 0x06DA
.long 0x06D5
.long 0x06D1
.long 0x06CD
.long 0x06C9
.long 0x06C5
.long 0x06C1
.long 0x06BD
.long 0x06B9
.long 0x06B5
.long 0x06B1
.long 0x06AD
.long 0x06A9
.long 0x06A5
.long 0x06A1
.long 0x069D
.long 0x0699
.long 0x0695
.long 0x0691
.long 0x068D
.long 0x0689
.long 0x0685
.long 0x0681
.long 0x067D
.long 0x0679
.long 0x0675
.long 0x0671
.long 0x066D
.long 0x066A
.long 0x0666
.long 0x0662
.long 0x065E
.long 0x065A
.long 0x0656
.long 0x0652
.long 0x064E
.long 0x064A
.long 0x0646
.long 0x0643
.long 0x063F
.long 0x063B
.long 0x0637
.long 0x0633
.long 0x062F
.long 0x062B
.long 0x0628
.long 0x0624
.long 0x0620
.long 0x061C
.long 0x0618
.long 0x0614
.long 0x0611
.long 0x060D
.long 0x0609
.long 0x0605
.long 0x0601
.long 0x05FE
.long 0x05FA
.long 0x05F6
.long 0x05F2
.long 0x05EF
.long 0x05EB
.long 0x05E7
.long 0x05E3
.long 0x05E0
.long 0x05DC
.long 0x05D8
.long 0x05D4
.long 0x05D1
.long 0x05CD
.long 0x05C9
.long 0x05C6
.long 0x05C2
.long 0x05BE
.long 0x05BA
.long 0x05B7
.long 0x05B3
.long 0x05AF
.long 0x05AC
.long 0x05A8
.long 0x05A4
.long 0x05A1
.long 0x059D
.long 0x0599
.long 0x0596
.long 0x0592
.long 0x058F
.long 0x058B
.long 0x0587
.long 0x0584
.long 0x0580
.long 0x057C
.long 0x0579
.long 0x0575
.long 0x0572
.long 0x056E
.long 0x056B
.long 0x0567
.long 0x0563
.long 0x0560
.long 0x055C
.long 0x0559
.long 0x0555
.long 0x0552
.long 0x054E
.long 0x054A
.long 0x0547
.long 0x0543
.long 0x0540
.long 0x053C
.long 0x0539
.long 0x0535
.long 0x0532
.long 0x052E
.long 0x052B
.long 0x0527
.long 0x0524
.long 0x0520
.long 0x051D
.long 0x0519
.long 0x0516
.long 0x0512
.long 0x050F
.long 0x050B
.long 0x0508
.long 0x0505
.long 0x0501
.long 0x04FE
.long 0x04FA
.long 0x04F7
.long 0x04F3
.long 0x04F0
.long 0x04EC
.long 0x04E9
.long 0x04E6
.long 0x04E2
.long 0x04DF
.long 0x04DB
.long 0x04D8
.long 0x04D5
.long 0x04D1
.long 0x04CE
.long 0x04CA
.long 0x04C7
.long 0x04C4
.long 0x04C0
.long 0x04BD
.long 0x04BA
.long 0x04B6
.long 0x04B3
.long 0x04B0
.long 0x04AC
.long 0x04A9
.long 0x04A6
.long 0x04A2
.long 0x049F
.long 0x049C
.long 0x0498
.long 0x0495
.long 0x0492
.long 0x048E
.long 0x048B
.long 0x0488
.long 0x0484
.long 0x0481
.long 0x047E
.long 0x047B
.long 0x0477
.long 0x0474
.long 0x0471
.long 0x046E
.long 0x046A
.long 0x0467
.long 0x0464
.long 0x0461
.long 0x045D
.long 0x045A
.long 0x0457
.long 0x0454
.long 0x0450
.long 0x044D
.long 0x044A
.long 0x0447
.long 0x0444
.long 0x0440
.long 0x043D
.long 0x043A
.long 0x0437
.long 0x0434
.long 0x0430
.long 0x042D
.long 0x042A
.long 0x0427
.long 0x0424
.long 0x0420
.long 0x041D
.long 0x041A
.long 0x0417
.long 0x0414
.long 0x0411
.long 0x040E
.long 0x040A
.long 0x0407
.long 0x0404
.long 0x0401
.long 0x03FE
.long 0x03FB
.long 0x03F8
.long 0x03F5
.long 0x03F1
.long 0x03EE
.long 0x03EB
.long 0x03E8
.long 0x03E5
.long 0x03E2
.long 0x03DF
.long 0x03DC
.long 0x03D9
.long 0x03D6
.long 0x03D3
.long 0x03CF
.long 0x03CC
.long 0x03C9
.long 0x03C6
.long 0x03C3
.long 0x03C0
.long 0x03BD
.long 0x03BA
.long 0x03B7
.long 0x03B4
.long 0x03B1
.long 0x03AE
.long 0x03AB
.long 0x03A8
.long 0x03A5
.long 0x03A2
.long 0x039F
.long 0x039C
.long 0x0399
.long 0x0396
.long 0x0393
.long 0x0390
.long 0x038D
.long 0x038A
.long 0x0387
.long 0x0384
.long 0x0381
.long 0x037E
.long 0x037B
.long 0x0378
.long 0x0375
.long 0x0372
.long 0x036F
.long 0x036C
.long 0x0369
.long 0x0366
.long 0x0363
.long 0x0360
.long 0x035E
.long 0x035B
.long 0x0358
.long 0x0355
.long 0x0352
.long 0x034F
.long 0x034C
.long 0x0349
.long 0x0346
.long 0x0343
.long 0x0340
.long 0x033E
.long 0x033B
.long 0x0338
.long 0x0335
.long 0x0332
.long 0x032F
.long 0x032C
.long 0x0329
.long 0x0327
.long 0x0324
.long 0x0321
.long 0x031E
.long 0x031B
.long 0x0318
.long 0x0315
.long 0x0313
.long 0x0310
.long 0x030D
.long 0x030A
.long 0x0307
.long 0x0304
.long 0x0302
.long 0x02FF
.long 0x02FC
.long 0x02F9
.long 0x02F6
.long 0x02F3
.long 0x02F1
.long 0x02EE
.long 0x02EB
.long 0x02E8
.long 0x02E5
.long 0x02E3
.long 0x02E0
.long 0x02DD
.long 0x02DA
.long 0x02D8
.long 0x02D5
.long 0x02D2
.long 0x02CF
.long 0x02CC
.long 0x02CA
.long 0x02C7
.long 0x02C4
.long 0x02C1
.long 0x02BF
.long 0x02BC
.long 0x02B9
.long 0x02B7
.long 0x02B4
.long 0x02B1
.long 0x02AE
.long 0x02AC
.long 0x02A9
.long 0x02A6
.long 0x02A3
.long 0x02A1
.long 0x029E
.long 0x029B
.long 0x0299
.long 0x0296
.long 0x0293
.long 0x0291
.long 0x028E
.long 0x028B
.long 0x0288
.long 0x0286
.long 0x0283
.long 0x0280
.long 0x027E
.long 0x027B
.long 0x0278
.long 0x0276
.long 0x0273
.long 0x0270
.long 0x026E
.long 0x026B
.long 0x0268
.long 0x0266
.long 0x0263
.long 0x0261
.long 0x025E
.long 0x025B
.long 0x0259
.long 0x0256
.long 0x0253
.long 0x0251
.long 0x024E
.long 0x024C
.long 0x0249
.long 0x0246
.long 0x0244
.long 0x0241
.long 0x023E
.long 0x023C
.long 0x0239
.long 0x0237
.long 0x0234
.long 0x0232
.long 0x022F
.long 0x022C
.long 0x022A
.long 0x0227
.long 0x0225
.long 0x0222
.long 0x021F
.long 0x021D
.long 0x021A
.long 0x0218
.long 0x0215
.long 0x0213
.long 0x0210
.long 0x020E
.long 0x020B
.long 0x0208
.long 0x0206
.long 0x0203
.long 0x0201
.long 0x01FE
.long 0x01FC
.long 0x01F9
.long 0x01F7
.long 0x01F4
.long 0x01F2
.long 0x01EF
.long 0x01ED
.long 0x01EA
.long 0x01E8
.long 0x01E5
.long 0x01E3
.long 0x01E0
.long 0x01DE
.long 0x01DB
.long 0x01D9
.long 0x01D6
.long 0x01D4
.long 0x01D1
.long 0x01CF
.long 0x01CC
.long 0x01CA
.long 0x01C7
.long 0x01C5
.long 0x01C2
.long 0x01C0
.long 0x01BD
.long 0x01BB
.long 0x01B9
.long 0x01B6
.long 0x01B4
.long 0x01B1
.long 0x01AF
.long 0x01AC
.long 0x01AA
.long 0x01A7
.long 0x01A5
.long 0x01A3
.long 0x01A0
.long 0x019E
.long 0x019B
.long 0x0199
.long 0x0196
.long 0x0194
.long 0x0192
.long 0x018F
.long 0x018D
.long 0x018A
.long 0x0188
.long 0x0186
.long 0x0183
.long 0x0181
.long 0x017E
.long 0x017C
.long 0x017A
.long 0x0177
.long 0x0175
.long 0x0173
.long 0x0170
.long 0x016E
.long 0x016B
.long 0x0169
.long 0x0167
.long 0x0164
.long 0x0162
.long 0x0160
.long 0x015D
.long 0x015B
.long 0x0159
.long 0x0156
.long 0x0154
.long 0x0151
.long 0x014F
.long 0x014D
.long 0x014A
.long 0x0148
.long 0x0146
.long 0x0143
.long 0x0141
.long 0x013F
.long 0x013C
.long 0x013A
.long 0x0138
.long 0x0136
.long 0x0133
.long 0x0131
.long 0x012F
.long 0x012C
.long 0x012A
.long 0x0128
.long 0x0125
.long 0x0123
.long 0x0121
.long 0x011F
.long 0x011C
.long 0x011A
.long 0x0118
.long 0x0115
.long 0x0113
.long 0x0111
.long 0x010F
.long 0x010C
.long 0x010A
.long 0x0108
.long 0x0105
.long 0x0103
.long 0x0101
.long 0x00FF
.long 0x00FC
.long 0x00FA
.long 0x00F8
.long 0x00F6
.long 0x00F3
.long 0x00F1
.long 0x00EF
.long 0x00ED
.long 0x00EA
.long 0x00E8
.long 0x00E6
.long 0x00E4
.long 0x00E2
.long 0x00DF
.long 0x00DD
.long 0x00DB
.long 0x00D9
.long 0x00D6
.long 0x00D4
.long 0x00D2
.long 0x00D0
.long 0x00CE
.long 0x00CB
.long 0x00C9
.long 0x00C7
.long 0x00C5
.long 0x00C3
.long 0x00C0
.long 0x00BE
.long 0x00BC
.long 0x00BA
.long 0x00B8
.long 0x00B5
.long 0x00B3
.long 0x00B1
.long 0x00AF
.long 0x00AD
.long 0x00AB
.long 0x00A8
.long 0x00A6
.long 0x00A4
.long 0x00A2
.long 0x00A0
.long 0x009E
.long 0x009B
.long 0x0099
.long 0x0097
.long 0x0095
.long 0x0093
.long 0x0091
.long 0x008F
.long 0x008C
.long 0x008A
.long 0x0088
.long 0x0086
.long 0x0084
.long 0x0082
.long 0x0080
.long 0x007D
.long 0x007B
.long 0x0079
.long 0x0077
.long 0x0075
.long 0x0073
.long 0x0071
.long 0x006F
.long 0x006D
.long 0x006A
.long 0x0068
.long 0x0066
.long 0x0064
.long 0x0062
.long 0x0060
.long 0x005E
.long 0x005C
.long 0x005A
.long 0x0058
.long 0x0056
.long 0x0053
.long 0x0051
.long 0x004F
.long 0x004D
.long 0x004B
.long 0x0049
.long 0x0047
.long 0x0045
.long 0x0043
.long 0x0041
.long 0x003F
.long 0x003D
.long 0x003B
.long 0x0039
.long 0x0036
.long 0x0034
.long 0x0032
.long 0x0030
.long 0x002E
.long 0x002C
.long 0x002A
.long 0x0028
.long 0x0026
.long 0x0024
.long 0x0022
.long 0x0020
.long 0x001E
.long 0x001C
.long 0x001A
.long 0x0018
.long 0x0016
.long 0x0014
.long 0x0012
.long 0x0010
.long 0x000E
.long 0x000C
.long 0x000A
.long 0x0008
.long 0x0006
.long 0x0004
.long 0x0002