Add gcc7-generated assembly cdot for POWER9
This commit is contained in:
parent
4427ffe8b2
commit
15c5a013d0
|
@ -0,0 +1,242 @@
|
||||||
|
.file "cdot.c"
|
||||||
|
.abiversion 2
|
||||||
|
.section ".text"
|
||||||
|
.align 2
|
||||||
|
.p2align 4,,15
|
||||||
|
.globl cdot_k
|
||||||
|
.type cdot_k, @function
|
||||||
|
cdot_k:
|
||||||
|
.LCF0:
|
||||||
|
0: addis 2,12,.TOC.-.LCF0@ha
|
||||||
|
addi 2,2,.TOC.-.LCF0@l
|
||||||
|
.localentry cdot_k,.-cdot_k
|
||||||
|
mr. 9,3
|
||||||
|
ble 0,.L10
|
||||||
|
cmpdi 7,5,1
|
||||||
|
beq 7,.L18
|
||||||
|
.L3:
|
||||||
|
mtctr 9
|
||||||
|
xxlxor 2,2,2
|
||||||
|
sldi 5,5,3
|
||||||
|
sldi 7,7,3
|
||||||
|
#ifdef CONJ
|
||||||
|
fmr 12,2
|
||||||
|
#endif
|
||||||
|
fmr 8,2
|
||||||
|
#ifndef CONJ
|
||||||
|
fmr 9,2
|
||||||
|
#endif
|
||||||
|
fmr 1,2
|
||||||
|
.p2align 4,,15
|
||||||
|
.L9:
|
||||||
|
#ifdef CONJ
|
||||||
|
lfs 9,0(4)
|
||||||
|
lfs 11,0(6)
|
||||||
|
lfs 10,4(6)
|
||||||
|
lfs 0,4(4)
|
||||||
|
add 6,6,7
|
||||||
|
add 4,4,5
|
||||||
|
fmadds 1,9,11,1
|
||||||
|
fmadds 12,9,10,12
|
||||||
|
fmadds 8,0,10,8
|
||||||
|
fmadds 2,11,0,2
|
||||||
|
#else
|
||||||
|
lfs 10,0(4)
|
||||||
|
lfs 12,0(6)
|
||||||
|
lfs 11,4(6)
|
||||||
|
lfs 0,4(4)
|
||||||
|
add 6,6,7
|
||||||
|
add 4,4,5
|
||||||
|
fmadds 1,10,12,1
|
||||||
|
fmadds 8,10,11,8
|
||||||
|
fmadds 9,0,11,9
|
||||||
|
fmadds 2,12,0,2
|
||||||
|
#endif
|
||||||
|
bdnz .L9
|
||||||
|
.L7:
|
||||||
|
#ifdef CONJ
|
||||||
|
fsubs 2,12,2
|
||||||
|
fadds 1,1,8
|
||||||
|
#else
|
||||||
|
fadds 2,2,8
|
||||||
|
fsubs 1,1,9
|
||||||
|
#endif
|
||||||
|
blr
|
||||||
|
.p2align 4,,15
|
||||||
|
.L18:
|
||||||
|
cmpdi 7,7,1
|
||||||
|
bne 7,.L3
|
||||||
|
rldicr. 10,9,0,60
|
||||||
|
bne 0,.L19
|
||||||
|
xxlxor 2,2,2
|
||||||
|
li 8,0
|
||||||
|
#ifdef CONJ
|
||||||
|
fmr 12,2
|
||||||
|
#endif
|
||||||
|
fmr 8,2
|
||||||
|
#ifndef CONJ
|
||||||
|
fmr 9,2
|
||||||
|
#endif
|
||||||
|
fmr 1,2
|
||||||
|
.L4:
|
||||||
|
addi 7,10,1
|
||||||
|
sldi 8,8,2
|
||||||
|
subf 10,10,9
|
||||||
|
cmpd 7,7,9
|
||||||
|
mtctr 10
|
||||||
|
add 4,4,8
|
||||||
|
add 6,6,8
|
||||||
|
bgt 7,.L16
|
||||||
|
li 10,-1
|
||||||
|
rldicr 10,10,0,0
|
||||||
|
cmpd 7,9,10
|
||||||
|
beq 7,.L16
|
||||||
|
.p2align 4,,15
|
||||||
|
.L8:
|
||||||
|
#ifdef CONJ
|
||||||
|
lfs 9,0(4)
|
||||||
|
lfs 11,0(6)
|
||||||
|
lfs 10,4(6)
|
||||||
|
lfs 0,4(4)
|
||||||
|
addi 6,6,8
|
||||||
|
addi 4,4,8
|
||||||
|
fmadds 1,9,11,1
|
||||||
|
fmadds 12,9,10,12
|
||||||
|
fmadds 8,0,10,8
|
||||||
|
fmadds 2,11,0,2
|
||||||
|
#else
|
||||||
|
lfs 10,0(4)
|
||||||
|
lfs 12,0(6)
|
||||||
|
lfs 11,4(6)
|
||||||
|
lfs 0,4(4)
|
||||||
|
addi 6,6,8
|
||||||
|
addi 4,4,8
|
||||||
|
fmadds 1,10,12,1
|
||||||
|
fmadds 8,10,11,8
|
||||||
|
fmadds 9,0,11,9
|
||||||
|
fmadds 2,12,0,2
|
||||||
|
#endif
|
||||||
|
bdnz .L8
|
||||||
|
b .L7
|
||||||
|
.p2align 4,,15
|
||||||
|
.L10:
|
||||||
|
xxlxor 1,1,1
|
||||||
|
fmr 2,1
|
||||||
|
blr
|
||||||
|
.L19:
|
||||||
|
addis 8,2,.LANCHOR0@toc@ha
|
||||||
|
sradi. 3,10,1
|
||||||
|
xxspltib 42,0
|
||||||
|
addi 8,8,.LANCHOR0@toc@l
|
||||||
|
lxv 32,0(8)
|
||||||
|
beq 0,.L12
|
||||||
|
xxlor 6,42,42
|
||||||
|
xxlor 4,42,42
|
||||||
|
xxlor 0,42,42
|
||||||
|
xxlor 7,42,42
|
||||||
|
xxlor 5,42,42
|
||||||
|
xxlor 3,42,42
|
||||||
|
xxlor 12,42,42
|
||||||
|
mr 7,4
|
||||||
|
mr 8,6
|
||||||
|
li 5,0
|
||||||
|
.p2align 4,,15
|
||||||
|
.L6:
|
||||||
|
lxv 43,0(8)
|
||||||
|
lxv 44,16(8)
|
||||||
|
addi 5,5,4
|
||||||
|
addi 8,8,64
|
||||||
|
addi 7,7,64
|
||||||
|
lxv 45,-32(8)
|
||||||
|
lxv 33,-16(8)
|
||||||
|
lxv 8,-64(7)
|
||||||
|
lxv 9,-48(7)
|
||||||
|
cmpd 7,3,5
|
||||||
|
lxv 10,-32(7)
|
||||||
|
lxv 11,-16(7)
|
||||||
|
vpermr 6,11,11,0
|
||||||
|
vpermr 7,12,12,0
|
||||||
|
vpermr 8,13,13,0
|
||||||
|
vpermr 9,1,1,0
|
||||||
|
xvmaddasp 12,43,8
|
||||||
|
xvmaddasp 3,44,9
|
||||||
|
xvmaddasp 0,8,38
|
||||||
|
xvmaddasp 4,9,39
|
||||||
|
xvmaddasp 6,10,40
|
||||||
|
xvmaddasp 5,45,10
|
||||||
|
xvmaddasp 42,11,41
|
||||||
|
xvmaddasp 7,33,11
|
||||||
|
bgt 7,.L6
|
||||||
|
xvaddsp 12,12,3
|
||||||
|
xvaddsp 0,0,4
|
||||||
|
xvaddsp 12,12,5
|
||||||
|
xvaddsp 0,0,6
|
||||||
|
xvaddsp 12,12,7
|
||||||
|
xvaddsp 42,0,42
|
||||||
|
.L5:
|
||||||
|
#ifdef CONJ
|
||||||
|
xxpermdi 8,12,12,2
|
||||||
|
xxpermdi 0,42,42,2
|
||||||
|
cmpd 7,9,10
|
||||||
|
sldi 8,10,1
|
||||||
|
xvaddsp 8,8,12
|
||||||
|
xvaddsp 0,0,42
|
||||||
|
xxsldwi 1,8,8,3
|
||||||
|
xxsldwi 12,0,0,3
|
||||||
|
xxsldwi 8,8,8,2
|
||||||
|
xxsldwi 0,0,0,2
|
||||||
|
xscvspdp 1,1
|
||||||
|
xscvspdp 12,12
|
||||||
|
xscvspdp 8,8
|
||||||
|
#else
|
||||||
|
xxpermdi 9,12,12,2
|
||||||
|
xxpermdi 0,42,42,2
|
||||||
|
cmpd 7,9,10
|
||||||
|
sldi 8,10,1
|
||||||
|
xvaddsp 9,9,12
|
||||||
|
xvaddsp 0,0,42
|
||||||
|
xxsldwi 1,9,9,3
|
||||||
|
xxsldwi 2,0,0,3
|
||||||
|
xxsldwi 9,9,9,2
|
||||||
|
xxsldwi 0,0,0,2
|
||||||
|
xscvspdp 8,2
|
||||||
|
xscvspdp 1,1
|
||||||
|
xscvspdp 9,9
|
||||||
|
#endif
|
||||||
|
xscvspdp 2,0
|
||||||
|
bgt 7,.L4
|
||||||
|
b .L7
|
||||||
|
.L12:
|
||||||
|
xxlor 12,42,42
|
||||||
|
b .L5
|
||||||
|
.L16:
|
||||||
|
li 9,1
|
||||||
|
mtctr 9
|
||||||
|
b .L8
|
||||||
|
.long 0
|
||||||
|
.byte 0,0,0,0,0,0,0,0
|
||||||
|
.size cdot_k,.-cdot_k
|
||||||
|
.section .rodata
|
||||||
|
.align 4
|
||||||
|
.set .LANCHOR0,. + 0
|
||||||
|
.type swap_mask_arr, @object
|
||||||
|
.size swap_mask_arr, 16
|
||||||
|
swap_mask_arr:
|
||||||
|
.byte 4
|
||||||
|
.byte 5
|
||||||
|
.byte 6
|
||||||
|
.byte 7
|
||||||
|
.byte 0
|
||||||
|
.byte 1
|
||||||
|
.byte 2
|
||||||
|
.byte 3
|
||||||
|
.byte 12
|
||||||
|
.byte 13
|
||||||
|
.byte 14
|
||||||
|
.byte 15
|
||||||
|
.byte 8
|
||||||
|
.byte 9
|
||||||
|
.byte 10
|
||||||
|
.byte 11
|
||||||
|
.ident "GCC: (SUSE Linux) 7.3.1 20180323 [gcc-7-branch revision 258812]"
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
Loading…
Reference in New Issue