Browse Source

Merge pull request #3567 from cenewcombe/develop

Fix unsafe read of Y in zsymv_L_sse2.S
tags/v0.3.21
Martin Kroeker GitHub 4 years ago
parent
commit
501bf31e3e
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 16 additions and 15 deletions
  1. +16
    -15
      kernel/x86_64/zsymv_L_sse2.S

+ 16
- 15
kernel/x86_64/zsymv_L_sse2.S View File

@@ -452,11 +452,6 @@


MOVDDUP(4 * SIZE, A1, a1) MOVDDUP(4 * SIZE, A1, a1)


movsd 0 * SIZE(YY), yy1
movhpd 1 * SIZE(YY), yy1
movsd 2 * SIZE(YY), yy2
movhpd 3 * SIZE(YY), yy2

movapd 8 * SIZE(XX), xtemp1 movapd 8 * SIZE(XX), xtemp1
movapd 10 * SIZE(XX), xtemp2 movapd 10 * SIZE(XX), xtemp2
movapd 12 * SIZE(XX), xtemp3 movapd 12 * SIZE(XX), xtemp3
@@ -475,6 +470,12 @@
MOVDDUP(6 * SIZE - (4 * SIZE), A2, a2) MOVDDUP(6 * SIZE - (4 * SIZE), A2, a2)
ALIGN_3 ALIGN_3


.L12_prep:
movsd 0 * SIZE(YY), yy1
movhpd 1 * SIZE(YY), yy1
movsd 2 * SIZE(YY), yy2
movhpd 3 * SIZE(YY), yy2

.L12: .L12:
movapd xtemp1, xt1 movapd xtemp1, xt1
mulpd a1, xt1 mulpd a1, xt1
@@ -608,8 +609,6 @@


movlpd yy2, 6 * SIZE(YY) movlpd yy2, 6 * SIZE(YY)
movhpd yy2, 7 * SIZE(YY) movhpd yy2, 7 * SIZE(YY)
movsd 10 * SIZE(YY), yy2
movhpd 11 * SIZE(YY), yy2


movapd xtemp2, xt1 movapd xtemp2, xt1
movapd 18 * SIZE(XX), xtemp2 movapd 18 * SIZE(XX), xtemp2
@@ -621,8 +620,6 @@


movlpd yy1, 4 * SIZE(YY) movlpd yy1, 4 * SIZE(YY)
movhpd yy1, 5 * SIZE(YY) movhpd yy1, 5 * SIZE(YY)
movsd 8 * SIZE(YY), yy1
movhpd 9 * SIZE(YY), yy1


subq $-16 * SIZE, XX subq $-16 * SIZE, XX
addq $ 8 * SIZE, YY addq $ 8 * SIZE, YY
@@ -630,7 +627,8 @@
addq $ 8 * SIZE, A2 addq $ 8 * SIZE, A2


decq I decq I
jg .L12
jg .L12_prep
jmp .L15
ALIGN_3 ALIGN_3


.L14: .L14:
@@ -641,7 +639,6 @@
jle .L16 jle .L16


MOVDDUP(6 * SIZE - (4 * SIZE), A2, a2) MOVDDUP(6 * SIZE - (4 * SIZE), A2, a2)
jmp .L15_pastcheck


.L15: .L15:
movq M, I movq M, I
@@ -650,6 +647,11 @@
testq $2, I testq $2, I
jle .L16 jle .L16


movsd 0 * SIZE(YY), yy1
movhpd 1 * SIZE(YY), yy1
movsd 2 * SIZE(YY), yy2
movhpd 3 * SIZE(YY), yy2

.L15_pastcheck: .L15_pastcheck:
movapd xtemp1, xt1 movapd xtemp1, xt1
mulpd a1, xt1 mulpd a1, xt1
@@ -705,8 +707,6 @@


movlpd yy2, 2 * SIZE(YY) movlpd yy2, 2 * SIZE(YY)
movhpd yy2, 3 * SIZE(YY) movhpd yy2, 3 * SIZE(YY)
movsd 6 * SIZE(YY), yy2
movhpd 7 * SIZE(YY), yy2


movapd xtemp2, xt1 movapd xtemp2, xt1
movapd 10 * SIZE(XX), xtemp2 movapd 10 * SIZE(XX), xtemp2
@@ -717,8 +717,6 @@


movlpd yy1, 0 * SIZE(YY) movlpd yy1, 0 * SIZE(YY)
movhpd yy1, 1 * SIZE(YY) movhpd yy1, 1 * SIZE(YY)
movsd 4 * SIZE(YY), yy1
movhpd 5 * SIZE(YY), yy1


addq $4 * SIZE, YY addq $4 * SIZE, YY
addq $4 * SIZE, A1 addq $4 * SIZE, A1
@@ -731,6 +729,9 @@


MOVDDUP(1 * SIZE, A1, a2) MOVDDUP(1 * SIZE, A1, a2)


movsd 0 * SIZE(YY), yy1
movhpd 1 * SIZE(YY), yy1

movapd xtemp1, xt1 movapd xtemp1, xt1
mulpd a1, xt1 mulpd a1, xt1
mulpd atemp1, a1 mulpd atemp1, a1


Loading…
Cancel
Save