Browse Source

Add NaN tests

pull/4191/head
Martin Kroeker GitHub 2 years ago
parent
commit
43f5e4251b
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 155 additions and 1 deletions
  1. +155
    -1
      kernel/x86_64/iamax_sse.S

+ 155
- 1
kernel/x86_64/iamax_sse.S View File

@@ -93,6 +93,10 @@
addq INCX, X
decq M
shufps $0, %xmm0, %xmm0
incq RET
comiss %xmm0, %xmm0
jp .L999
decq RET
#ifdef USE_ABS
andps %xmm15, %xmm0
#endif
@@ -254,6 +258,10 @@
decq M
addq $SIZE, X

incq RET
comiss %xmm1, %xmm1
jp .L998
decq RET
#ifdef USE_ABS
andps %xmm15, %xmm1
#endif
@@ -268,6 +276,14 @@

movss 0 * SIZE(X), %xmm1
movss 1 * SIZE(X), %xmm2
incq RET
comiss %xmm1, %xmm1
jp .L998
incq RET
comiss %xmm2, %xmm2
jp .L998
decq RET
decq RET

subq $2, M
addq $2 * SIZE, X
@@ -332,6 +348,31 @@
movss 5 * SIZE(X), %xmm6
movss 6 * SIZE(X), %xmm7
movss 7 * SIZE(X), %xmm8
incq RET
comiss %xmm1, %xmm1
jp .L998
incq RET
comiss %xmm2, %xmm2
jp .L998
incq RET
comiss %xmm3, %xmm3
jp .L998
incq RET
comiss %xmm4, %xmm4
jp .L998
incq RET
comiss %xmm5, %xmm5
jp .L998
incq RET
comiss %xmm6, %xmm6
jp .L998
incq RET
comiss %xmm7, %xmm7
jp .L998
incq RET
comiss %xmm8, %xmm8
jp .L998
subq $8, RET
#ifdef USE_ABS
andps %xmm15, %xmm1
andps %xmm15, %xmm2
@@ -378,6 +419,19 @@
movss 1 * SIZE(X), %xmm2
movss 2 * SIZE(X), %xmm3
movss 3 * SIZE(X), %xmm4
incq RET
comiss %xmm1, %xmm1
jp .L998
incq RET
comiss %xmm2, %xmm2
jp .L998
incq RET
comiss %xmm3, %xmm3
jp .L998
incq RET
comiss %xmm4, %xmm4
jp .L998
subq $4, RET
#ifdef USE_ABS
andps %xmm15, %xmm1
andps %xmm15, %xmm2
@@ -405,6 +459,13 @@

movss 0 * SIZE(X), %xmm1
movss 1 * SIZE(X), %xmm2
incq RET
comiss %xmm1, %xmm1
jp .L998
incq RET
comiss %xmm2, %xmm2
jp .L998
subq $2, RET
#ifdef USE_ABS
andps %xmm15, %xmm1
andps %xmm15, %xmm2
@@ -593,6 +654,31 @@
movss 5 * SIZE(X), %xmm6
movss 6 * SIZE(X), %xmm7
movss 7 * SIZE(X), %xmm8
incq RET
comiss %xmm1, %xmm1
jp .L998
incq RET
comiss %xmm2, %xmm2
jp .L998
incq RET
comiss %xmm3, %xmm3
jp .L998
incq RET
comiss %xmm4, %xmm4
jp .L998
incq RET
comiss %xmm5, %xmm5
jp .L998
incq RET
comiss %xmm6, %xmm6
jp .L998
incq RET
comiss %xmm7, %xmm7
jp .L998
incq RET
comiss %xmm8, %xmm8
jp .L998
subq $8, RET
#ifdef USE_ABS
andps %xmm15, %xmm1
andps %xmm15, %xmm2
@@ -639,6 +725,19 @@
movss 1 * SIZE(X), %xmm2
movss 2 * SIZE(X), %xmm3
movss 3 * SIZE(X), %xmm4
incq RET
comiss %xmm1, %xmm1
jp .L998
incq RET
comiss %xmm2, %xmm2
jp .L998
incq RET
comiss %xmm3, %xmm3
jp .L998
incq RET
comiss %xmm4, %xmm4
jp .L998
subq $4, RET
#ifdef USE_ABS
andps %xmm15, %xmm1
andps %xmm15, %xmm2
@@ -666,6 +765,13 @@

movss 0 * SIZE(X), %xmm1
movss 1 * SIZE(X), %xmm2
incq RET
comiss %xmm1, %xmm1
jp .L998
incq RET
comiss %xmm2, %xmm2
jp .L998
subq $2, RET
#ifdef USE_ABS
andps %xmm15, %xmm1
andps %xmm15, %xmm2
@@ -885,6 +991,31 @@
movss 0 * SIZE(X), %xmm2
subq INCX, X
movss 0 * SIZE(X), %xmm1
incq RET
comiss %xmm1, %xmm1
jp .L998
incq RET
comiss %xmm2, %xmm2
jp .L998
incq RET
comiss %xmm3, %xmm3
jp .L998
incq RET
comiss %xmm4, %xmm4
jp .L998
incq RET
comiss %xmm5, %xmm5
jp .L998
incq RET
comiss %xmm6, %xmm6
jp .L998
incq RET
comiss %xmm7, %xmm7
jp .L998
incq RET
comiss %xmm8, %xmm8
jp .L998
subq $8, RET
#ifdef USE_ABS
andps %xmm15, %xmm1
andps %xmm15, %xmm2
@@ -932,7 +1063,19 @@
addq INCX, X
movss 0 * SIZE(X), %xmm4
addq INCX, X

incq RET
comiss %xmm1, %xmm1
jp .L998
incq RET
comiss %xmm2, %xmm2
jp .L998
incq RET
comiss %xmm3, %xmm3
jp .L998
incq RET
comiss %xmm4, %xmm4
jp .L998
subq $4, RET
#ifdef USE_ABS
andps %xmm15, %xmm1
andps %xmm15, %xmm2
@@ -961,6 +1104,13 @@
addq INCX, X
movss 0 * SIZE(X), %xmm2
addq INCX, X
incq RET
comiss %xmm1, %xmm1
jp .L998
incq RET
comiss %xmm2, %xmm2
jp .L998
subq $2, RET
#ifdef USE_ABS
andps %xmm15, %xmm1
andps %xmm15, %xmm2
@@ -982,5 +1132,9 @@

ret

.L998:
// incq RET
jmp .L999

EPILOGUE


Loading…
Cancel
Save