-
Notifications
You must be signed in to change notification settings - Fork 2
/
cpufp_x86_fma.s
executable file
·57 lines (54 loc) · 1.61 KB
/
cpufp_x86_fma.s
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
.globl cpufp_x86_fma_fp32
.globl cpufp_x86_fma_fp64
cpufp_x86_fma_fp32:
mov $0x80000000, %rax
vxorps %ymm0, %ymm0, %ymm0
vxorps %ymm1, %ymm1, %ymm1
vxorps %ymm2, %ymm2, %ymm2
vxorps %ymm3, %ymm3, %ymm3
vxorps %ymm4, %ymm4, %ymm4
vxorps %ymm5, %ymm5, %ymm5
vxorps %ymm6, %ymm6, %ymm6
vxorps %ymm7, %ymm7, %ymm7
vxorps %ymm8, %ymm8, %ymm8
vxorps %ymm9, %ymm9, %ymm9
.cpufp.x86.fma.fp32.L1:
vfmadd132ps %ymm0, %ymm0, %ymm0
vfmadd132ps %ymm1, %ymm1, %ymm1
vfmadd132ps %ymm2, %ymm2, %ymm2
vfmadd132ps %ymm3, %ymm3, %ymm3
vfmadd132ps %ymm4, %ymm4, %ymm4
vfmadd132ps %ymm5, %ymm5, %ymm5
vfmadd132ps %ymm6, %ymm6, %ymm6
vfmadd132ps %ymm7, %ymm7, %ymm7
vfmadd132ps %ymm8, %ymm8, %ymm8
vfmadd132ps %ymm9, %ymm9, %ymm9
sub $0x1, %rax
jne .cpufp.x86.fma.fp32.L1
ret
cpufp_x86_fma_fp64:
mov $0x80000000, %rax
vxorpd %ymm0, %ymm0, %ymm0
vxorpd %ymm1, %ymm1, %ymm1
vxorpd %ymm2, %ymm2, %ymm2
vxorpd %ymm3, %ymm3, %ymm3
vxorpd %ymm4, %ymm4, %ymm4
vxorpd %ymm5, %ymm5, %ymm5
vxorpd %ymm6, %ymm6, %ymm6
vxorpd %ymm7, %ymm7, %ymm7
vxorpd %ymm8, %ymm8, %ymm8
vxorpd %ymm9, %ymm9, %ymm9
.cpufp.x86.fma.fp64.L1:
vfmadd132pd %ymm0, %ymm0, %ymm0
vfmadd132pd %ymm1, %ymm1, %ymm1
vfmadd132pd %ymm2, %ymm2, %ymm2
vfmadd132pd %ymm3, %ymm3, %ymm3
vfmadd132pd %ymm4, %ymm4, %ymm4
vfmadd132pd %ymm5, %ymm5, %ymm5
vfmadd132pd %ymm6, %ymm6, %ymm6
vfmadd132pd %ymm7, %ymm7, %ymm7
vfmadd132pd %ymm8, %ymm8, %ymm8
vfmadd132pd %ymm9, %ymm9, %ymm9
sub $0x1, %rax
jne .cpufp.x86.fma.fp64.L1
ret