mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-21 06:45:39 -06:00
Core: SIMD AnyTrue, AllTrue, CountTrue, FirstTrue, IsTrue
This commit is contained in:
parent
46fcfdc092
commit
2ae4a30077
5 changed files with 672 additions and 18 deletions
486
autotest/SIMD_CMP/Etalon.log
Normal file
486
autotest/SIMD_CMP/Etalon.log
Normal file
|
|
@ -0,0 +1,486 @@
|
|||
* /Users/cxl/out/CLANG.Debug.Debug_Full.Shared/SIMD_CMP 02.04.2025 12:04:20, user: cxl
|
||||
|
||||
=============== f32x4
|
||||
a = 9 9 9 9
|
||||
c = 9 9 9 9
|
||||
AllTrue(c == a) = true
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 4
|
||||
FirstTrue(c == a) = 0
|
||||
matches = 0 1 2 3
|
||||
b = 0 0 0 0
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = false
|
||||
CountTrue(c == b) = 0
|
||||
matches =
|
||||
---
|
||||
a = 9 9 9 0
|
||||
c = 9 9 9 9
|
||||
AllTrue(c == a) = false
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 3
|
||||
FirstTrue(c == a) = 1
|
||||
matches = 1 2 3
|
||||
b = 0 0 0 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 1
|
||||
FirstTrue(c == b) = 0
|
||||
matches = 0
|
||||
---
|
||||
a = 9 9 0 0
|
||||
c = 9 9 9 9
|
||||
AllTrue(c == a) = false
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 2
|
||||
FirstTrue(c == a) = 2
|
||||
matches = 2 3
|
||||
b = 0 0 9 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 2
|
||||
FirstTrue(c == b) = 0
|
||||
matches = 0 1
|
||||
---
|
||||
a = 9 0 0 0
|
||||
c = 9 9 9 9
|
||||
AllTrue(c == a) = false
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 1
|
||||
FirstTrue(c == a) = 3
|
||||
matches = 3
|
||||
b = 0 9 9 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 3
|
||||
FirstTrue(c == b) = 0
|
||||
matches = 0 1 2
|
||||
---
|
||||
a = 1 2 3 4
|
||||
b = 1 2 3 9
|
||||
c = 9 9 9 9
|
||||
AllTrue(a == b) = false
|
||||
AllTrue(a == a) = true
|
||||
AnyTrue(a == b) = true
|
||||
AnyTrue(a == c) = false
|
||||
CountTrue(a == b) = 3
|
||||
FirstTrue(a == b) = 1
|
||||
=============== i16x8
|
||||
a = 9 9 9 9 9 9 9 9
|
||||
c = 9 9 9 9 9 9 9 9
|
||||
AllTrue(c == a) = true
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 8
|
||||
FirstTrue(c == a) = 0
|
||||
matches = 0 1 2 3 4 5 6 7
|
||||
b = 0 0 0 0 0 0 0 0
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = false
|
||||
CountTrue(c == b) = 0
|
||||
matches =
|
||||
---
|
||||
a = 9 9 9 9 9 9 9 0
|
||||
c = 9 9 9 9 9 9 9 9
|
||||
AllTrue(c == a) = false
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 7
|
||||
FirstTrue(c == a) = 1
|
||||
matches = 1 2 3 4 5 6 7
|
||||
b = 0 0 0 0 0 0 0 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 1
|
||||
FirstTrue(c == b) = 0
|
||||
matches = 0
|
||||
---
|
||||
a = 9 9 9 9 9 9 0 0
|
||||
c = 9 9 9 9 9 9 9 9
|
||||
AllTrue(c == a) = false
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 6
|
||||
FirstTrue(c == a) = 2
|
||||
matches = 2 3 4 5 6 7
|
||||
b = 0 0 0 0 0 0 9 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 2
|
||||
FirstTrue(c == b) = 0
|
||||
matches = 0 1
|
||||
---
|
||||
a = 9 9 9 9 9 0 0 0
|
||||
c = 9 9 9 9 9 9 9 9
|
||||
AllTrue(c == a) = false
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 5
|
||||
FirstTrue(c == a) = 3
|
||||
matches = 3 4 5 6 7
|
||||
b = 0 0 0 0 0 9 9 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 3
|
||||
FirstTrue(c == b) = 0
|
||||
matches = 0 1 2
|
||||
---
|
||||
a = 9 9 9 9 0 0 0 0
|
||||
c = 9 9 9 9 9 9 9 9
|
||||
AllTrue(c == a) = false
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 4
|
||||
FirstTrue(c == a) = 4
|
||||
matches = 4 5 6 7
|
||||
b = 0 0 0 0 9 9 9 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 4
|
||||
FirstTrue(c == b) = 0
|
||||
matches = 0 1 2 3
|
||||
---
|
||||
a = 9 9 9 0 0 0 0 0
|
||||
c = 9 9 9 9 9 9 9 9
|
||||
AllTrue(c == a) = false
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 3
|
||||
FirstTrue(c == a) = 5
|
||||
matches = 5 6 7
|
||||
b = 0 0 0 9 9 9 9 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 5
|
||||
FirstTrue(c == b) = 0
|
||||
matches = 0 1 2 3 4
|
||||
---
|
||||
a = 9 9 0 0 0 0 0 0
|
||||
c = 9 9 9 9 9 9 9 9
|
||||
AllTrue(c == a) = false
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 2
|
||||
FirstTrue(c == a) = 6
|
||||
matches = 6 7
|
||||
b = 0 0 9 9 9 9 9 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 6
|
||||
FirstTrue(c == b) = 0
|
||||
matches = 0 1 2 3 4 5
|
||||
---
|
||||
a = 9 0 0 0 0 0 0 0
|
||||
c = 9 9 9 9 9 9 9 9
|
||||
AllTrue(c == a) = false
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 1
|
||||
FirstTrue(c == a) = 7
|
||||
matches = 7
|
||||
b = 0 9 9 9 9 9 9 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 7
|
||||
FirstTrue(c == b) = 0
|
||||
matches = 0 1 2 3 4 5 6
|
||||
---
|
||||
a = 1 2 3 4 5 6 7 8
|
||||
b = 1 4 2 4 5 7 7 9
|
||||
c = 9 9 9 9 9 9 9 9
|
||||
AllTrue(a == b) = false
|
||||
AllTrue(a == a) = true
|
||||
AnyTrue(a == b) = true
|
||||
AnyTrue(a == c) = false
|
||||
CountTrue(a == b) = 4
|
||||
FirstTrue(a == b) = 1
|
||||
=============== i32x4
|
||||
a = 9 9 9 9
|
||||
c = 9 9 9 9
|
||||
AllTrue(c == a) = true
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 4
|
||||
FirstTrue(c == a) = 0
|
||||
matches = 0 1 2 3
|
||||
b = 0 0 0 0
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = false
|
||||
CountTrue(c == b) = 0
|
||||
matches =
|
||||
---
|
||||
a = 9 9 9 0
|
||||
c = 9 9 9 9
|
||||
AllTrue(c == a) = false
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 3
|
||||
FirstTrue(c == a) = 1
|
||||
matches = 1 2 3
|
||||
b = 0 0 0 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 1
|
||||
FirstTrue(c == b) = 0
|
||||
matches = 0
|
||||
---
|
||||
a = 9 9 0 0
|
||||
c = 9 9 9 9
|
||||
AllTrue(c == a) = false
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 2
|
||||
FirstTrue(c == a) = 2
|
||||
matches = 2 3
|
||||
b = 0 0 9 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 2
|
||||
FirstTrue(c == b) = 0
|
||||
matches = 0 1
|
||||
---
|
||||
a = 9 0 0 0
|
||||
c = 9 9 9 9
|
||||
AllTrue(c == a) = false
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 1
|
||||
FirstTrue(c == a) = 3
|
||||
matches = 3
|
||||
b = 0 9 9 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 3
|
||||
FirstTrue(c == b) = 0
|
||||
matches = 0 1 2
|
||||
---
|
||||
a = 1 2 3 4
|
||||
b = 1 2 3 9
|
||||
c = 9 9 9 9
|
||||
AllTrue(a == b) = false
|
||||
AllTrue(a == a) = true
|
||||
AnyTrue(a == b) = true
|
||||
AnyTrue(a == c) = false
|
||||
CountTrue(a == b) = 3
|
||||
FirstTrue(a == b) = 1
|
||||
=============== i8x16
|
||||
a = 9 9 9 9 . 9 9 9 9 . 9 9 9 9 . 9 9 9 9
|
||||
c = 9 9 9 9 . 9 9 9 9 . 9 9 9 9 . 9 9 9 9
|
||||
AllTrue(c == a) = true
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 16
|
||||
FirstTrue(c == a) = 0
|
||||
matches = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
||||
b = 0 0 0 0 . 0 0 0 0 . 0 0 0 0 . 0 0 0 0
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = false
|
||||
CountTrue(c == b) = 0
|
||||
matches =
|
||||
---
|
||||
a = 9 9 9 9 . 9 9 9 9 . 9 9 9 9 . 9 9 9 0
|
||||
c = 9 9 9 9 . 9 9 9 9 . 9 9 9 9 . 9 9 9 9
|
||||
AllTrue(c == a) = false
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 15
|
||||
FirstTrue(c == a) = 1
|
||||
matches = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
||||
b = 0 0 0 0 . 0 0 0 0 . 0 0 0 0 . 0 0 0 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 1
|
||||
FirstTrue(c == b) = 0
|
||||
matches = 0
|
||||
---
|
||||
a = 9 9 9 9 . 9 9 9 9 . 9 9 9 9 . 9 9 0 0
|
||||
c = 9 9 9 9 . 9 9 9 9 . 9 9 9 9 . 9 9 9 9
|
||||
AllTrue(c == a) = false
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 14
|
||||
FirstTrue(c == a) = 2
|
||||
matches = 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
||||
b = 0 0 0 0 . 0 0 0 0 . 0 0 0 0 . 0 0 9 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 2
|
||||
FirstTrue(c == b) = 0
|
||||
matches = 0 1
|
||||
---
|
||||
a = 9 9 9 9 . 9 9 9 9 . 9 9 9 9 . 9 0 0 0
|
||||
c = 9 9 9 9 . 9 9 9 9 . 9 9 9 9 . 9 9 9 9
|
||||
AllTrue(c == a) = false
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 13
|
||||
FirstTrue(c == a) = 3
|
||||
matches = 3 4 5 6 7 8 9 10 11 12 13 14 15
|
||||
b = 0 0 0 0 . 0 0 0 0 . 0 0 0 0 . 0 9 9 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 3
|
||||
FirstTrue(c == b) = 0
|
||||
matches = 0 1 2
|
||||
---
|
||||
a = 9 9 9 9 . 9 9 9 9 . 9 9 9 9 . 0 0 0 0
|
||||
c = 9 9 9 9 . 9 9 9 9 . 9 9 9 9 . 9 9 9 9
|
||||
AllTrue(c == a) = false
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 12
|
||||
FirstTrue(c == a) = 4
|
||||
matches = 4 5 6 7 8 9 10 11 12 13 14 15
|
||||
b = 0 0 0 0 . 0 0 0 0 . 0 0 0 0 . 9 9 9 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 4
|
||||
FirstTrue(c == b) = 0
|
||||
matches = 0 1 2 3
|
||||
---
|
||||
a = 9 9 9 9 . 9 9 9 9 . 9 9 9 0 . 0 0 0 0
|
||||
c = 9 9 9 9 . 9 9 9 9 . 9 9 9 9 . 9 9 9 9
|
||||
AllTrue(c == a) = false
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 11
|
||||
FirstTrue(c == a) = 5
|
||||
matches = 5 6 7 8 9 10 11 12 13 14 15
|
||||
b = 0 0 0 0 . 0 0 0 0 . 0 0 0 9 . 9 9 9 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 5
|
||||
FirstTrue(c == b) = 0
|
||||
matches = 0 1 2 3 4
|
||||
---
|
||||
a = 9 9 9 9 . 9 9 9 9 . 9 9 0 0 . 0 0 0 0
|
||||
c = 9 9 9 9 . 9 9 9 9 . 9 9 9 9 . 9 9 9 9
|
||||
AllTrue(c == a) = false
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 10
|
||||
FirstTrue(c == a) = 6
|
||||
matches = 6 7 8 9 10 11 12 13 14 15
|
||||
b = 0 0 0 0 . 0 0 0 0 . 0 0 9 9 . 9 9 9 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 6
|
||||
FirstTrue(c == b) = 0
|
||||
matches = 0 1 2 3 4 5
|
||||
---
|
||||
a = 9 9 9 9 . 9 9 9 9 . 9 0 0 0 . 0 0 0 0
|
||||
c = 9 9 9 9 . 9 9 9 9 . 9 9 9 9 . 9 9 9 9
|
||||
AllTrue(c == a) = false
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 9
|
||||
FirstTrue(c == a) = 7
|
||||
matches = 7 8 9 10 11 12 13 14 15
|
||||
b = 0 0 0 0 . 0 0 0 0 . 0 9 9 9 . 9 9 9 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 7
|
||||
FirstTrue(c == b) = 0
|
||||
matches = 0 1 2 3 4 5 6
|
||||
---
|
||||
a = 9 9 9 9 . 9 9 9 9 . 0 0 0 0 . 0 0 0 0
|
||||
c = 9 9 9 9 . 9 9 9 9 . 9 9 9 9 . 9 9 9 9
|
||||
AllTrue(c == a) = false
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 8
|
||||
FirstTrue(c == a) = 8
|
||||
matches = 8 9 10 11 12 13 14 15
|
||||
b = 0 0 0 0 . 0 0 0 0 . 9 9 9 9 . 9 9 9 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 8
|
||||
FirstTrue(c == b) = 0
|
||||
matches = 0 1 2 3 4 5 6 7
|
||||
---
|
||||
a = 9 9 9 9 . 9 9 9 0 . 0 0 0 0 . 0 0 0 0
|
||||
c = 9 9 9 9 . 9 9 9 9 . 9 9 9 9 . 9 9 9 9
|
||||
AllTrue(c == a) = false
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 7
|
||||
FirstTrue(c == a) = 9
|
||||
matches = 9 10 11 12 13 14 15
|
||||
b = 0 0 0 0 . 0 0 0 9 . 9 9 9 9 . 9 9 9 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 9
|
||||
FirstTrue(c == b) = 0
|
||||
matches = 0 1 2 3 4 5 6 7 8
|
||||
---
|
||||
a = 9 9 9 9 . 9 9 0 0 . 0 0 0 0 . 0 0 0 0
|
||||
c = 9 9 9 9 . 9 9 9 9 . 9 9 9 9 . 9 9 9 9
|
||||
AllTrue(c == a) = false
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 6
|
||||
FirstTrue(c == a) = 10
|
||||
matches = 10 11 12 13 14 15
|
||||
b = 0 0 0 0 . 0 0 9 9 . 9 9 9 9 . 9 9 9 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 10
|
||||
FirstTrue(c == b) = 0
|
||||
matches = 0 1 2 3 4 5 6 7 8 9
|
||||
---
|
||||
a = 9 9 9 9 . 9 0 0 0 . 0 0 0 0 . 0 0 0 0
|
||||
c = 9 9 9 9 . 9 9 9 9 . 9 9 9 9 . 9 9 9 9
|
||||
AllTrue(c == a) = false
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 5
|
||||
FirstTrue(c == a) = 11
|
||||
matches = 11 12 13 14 15
|
||||
b = 0 0 0 0 . 0 9 9 9 . 9 9 9 9 . 9 9 9 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 11
|
||||
FirstTrue(c == b) = 0
|
||||
matches = 0 1 2 3 4 5 6 7 8 9 10
|
||||
---
|
||||
a = 9 9 9 9 . 0 0 0 0 . 0 0 0 0 . 0 0 0 0
|
||||
c = 9 9 9 9 . 9 9 9 9 . 9 9 9 9 . 9 9 9 9
|
||||
AllTrue(c == a) = false
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 4
|
||||
FirstTrue(c == a) = 12
|
||||
matches = 12 13 14 15
|
||||
b = 0 0 0 0 . 9 9 9 9 . 9 9 9 9 . 9 9 9 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 12
|
||||
FirstTrue(c == b) = 0
|
||||
matches = 0 1 2 3 4 5 6 7 8 9 10 11
|
||||
---
|
||||
a = 9 9 9 0 . 0 0 0 0 . 0 0 0 0 . 0 0 0 0
|
||||
c = 9 9 9 9 . 9 9 9 9 . 9 9 9 9 . 9 9 9 9
|
||||
AllTrue(c == a) = false
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 3
|
||||
FirstTrue(c == a) = 13
|
||||
matches = 13 14 15
|
||||
b = 0 0 0 9 . 9 9 9 9 . 9 9 9 9 . 9 9 9 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 13
|
||||
FirstTrue(c == b) = 0
|
||||
matches = 0 1 2 3 4 5 6 7 8 9 10 11 12
|
||||
---
|
||||
a = 9 9 0 0 . 0 0 0 0 . 0 0 0 0 . 0 0 0 0
|
||||
c = 9 9 9 9 . 9 9 9 9 . 9 9 9 9 . 9 9 9 9
|
||||
AllTrue(c == a) = false
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 2
|
||||
FirstTrue(c == a) = 14
|
||||
matches = 14 15
|
||||
b = 0 0 9 9 . 9 9 9 9 . 9 9 9 9 . 9 9 9 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 14
|
||||
FirstTrue(c == b) = 0
|
||||
matches = 0 1 2 3 4 5 6 7 8 9 10 11 12 13
|
||||
---
|
||||
a = 9 0 0 0 . 0 0 0 0 . 0 0 0 0 . 0 0 0 0
|
||||
c = 9 9 9 9 . 9 9 9 9 . 9 9 9 9 . 9 9 9 9
|
||||
AllTrue(c == a) = false
|
||||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 1
|
||||
FirstTrue(c == a) = 15
|
||||
matches = 15
|
||||
b = 0 9 9 9 . 9 9 9 9 . 9 9 9 9 . 9 9 9 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 15
|
||||
FirstTrue(c == b) = 0
|
||||
matches = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
||||
---
|
||||
a = 1 2 3 4 . 5 6 7 8 . 1 2 3 4 . 5 6 7 8
|
||||
b = 1 4 2 4 . 5 7 7 0 . 1 4 2 4 . 5 7 7 9
|
||||
c = 9 9 9 9 . 9 9 9 9 . 9 9 9 9 . 9 9 9 9
|
||||
AllTrue(a == b) = false
|
||||
AllTrue(a == a) = true
|
||||
AnyTrue(a == b) = true
|
||||
AnyTrue(a == c) = false
|
||||
CountTrue(a == b) = 8
|
||||
FirstTrue(a == b) = 1
|
||||
124
autotest/SIMD_CMP/SIMD_CMP.cpp
Normal file
124
autotest/SIMD_CMP/SIMD_CMP.cpp
Normal file
|
|
@ -0,0 +1,124 @@
|
|||
#include <Core/Core.h>
|
||||
|
||||
using namespace Upp;
|
||||
|
||||
template <class T, class W, int n>
|
||||
T Test()
|
||||
{
|
||||
T c;
|
||||
for(int i = 0; i < n; i++) {
|
||||
W h[n], g[n], e[n];
|
||||
for(int j = 0; j < n; j++) {
|
||||
h[j] = j < i ? 0 : 9;
|
||||
g[j] = j < i ? 9 : 0;
|
||||
e[j] = 9;
|
||||
}
|
||||
c.Load(e);
|
||||
T a(h);
|
||||
T b(g);
|
||||
DDUMP(a);
|
||||
DDUMP(c);
|
||||
DDUMP(AllTrue(c == a));
|
||||
DDUMP(AnyTrue(c == a));
|
||||
DDUMP(CountTrue(c == a));
|
||||
if(AnyTrue(c == a))
|
||||
DDUMP(FirstTrue(c == a));
|
||||
String matches;
|
||||
for(int j = 0; j < n; j++)
|
||||
if(IsTrue(c == a, j))
|
||||
matches << j << ' ';
|
||||
DDUMP(matches);
|
||||
DDUMP(b);
|
||||
DDUMP(AllTrue(c == b));
|
||||
DDUMP(AnyTrue(c == b));
|
||||
DDUMP(CountTrue(c == b));
|
||||
if(AnyTrue(c == b))
|
||||
DDUMP(FirstTrue(c == b));
|
||||
matches.Clear();
|
||||
for(int j = 0; j < n; j++)
|
||||
if(IsTrue(c == b, j))
|
||||
matches << j << ' ';
|
||||
DDUMP(matches);
|
||||
DLOG("---");
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
CONSOLE_APP_MAIN
|
||||
{
|
||||
StdLogSetup(LOG_COUT|LOG_FILE);
|
||||
|
||||
// CheckCode();
|
||||
|
||||
// DoTest2(); return;
|
||||
|
||||
DLOG("=============== f32x4");
|
||||
{
|
||||
f32x4 c = Test<f32x4, float, 4>();
|
||||
|
||||
f32x4 a(1, 2, 3, 4);
|
||||
f32x4 b(1, 2, 3, 9);
|
||||
|
||||
DDUMP(a);
|
||||
DDUMP(b);
|
||||
DDUMP(c);
|
||||
DDUMP(AllTrue(a == b));
|
||||
DDUMP(AllTrue(a == a));
|
||||
DDUMP(AnyTrue(a == b));
|
||||
DDUMP(AnyTrue(a == c));
|
||||
DDUMP(CountTrue(a == b));
|
||||
DDUMP(FirstTrue(a == b));
|
||||
}
|
||||
DLOG("=============== i16x8");
|
||||
{
|
||||
i16x8 c = Test<i16x8, word, 8>();
|
||||
|
||||
i16x8 a(1, 2, 3, 4, 5, 6, 7, 8);
|
||||
i16x8 b(1, 4, 2, 4, 5, 7, 7, 9);
|
||||
|
||||
DDUMP(a);
|
||||
DDUMP(b);
|
||||
DDUMP(c);
|
||||
DDUMP(AllTrue(a == b));
|
||||
DDUMP(AllTrue(a == a));
|
||||
DDUMP(AnyTrue(a == b));
|
||||
DDUMP(AnyTrue(a == c));
|
||||
DDUMP(CountTrue(a == b));
|
||||
DDUMP(FirstTrue(a == b));
|
||||
}
|
||||
DLOG("=============== i32x4");
|
||||
{
|
||||
i32x4 c = Test<i32x4, dword, 4>();
|
||||
|
||||
i32x4 a(1, 2, 3, 4);
|
||||
i32x4 b(1, 2, 3, 9);
|
||||
|
||||
DDUMP(a);
|
||||
DDUMP(b);
|
||||
DDUMP(c);
|
||||
DDUMP(AllTrue(a == b));
|
||||
DDUMP(AllTrue(a == a));
|
||||
DDUMP(AnyTrue(a == b));
|
||||
DDUMP(AnyTrue(a == c));
|
||||
DDUMP(CountTrue(a == b));
|
||||
DDUMP(FirstTrue(a == b));
|
||||
}
|
||||
DLOG("=============== i8x16");
|
||||
{
|
||||
i8x16 c = Test<i8x16, byte, 16>();
|
||||
|
||||
i8x16 a(1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8);
|
||||
i8x16 b(1, 4, 2, 4, 5, 7, 7, 0, 1, 4, 2, 4, 5, 7, 7, 9);
|
||||
|
||||
DDUMP(a);
|
||||
DDUMP(b);
|
||||
DDUMP(c);
|
||||
DDUMP(AllTrue(a == b));
|
||||
DDUMP(AllTrue(a == a));
|
||||
DDUMP(AnyTrue(a == b));
|
||||
DDUMP(AnyTrue(a == c));
|
||||
DDUMP(CountTrue(a == b));
|
||||
DDUMP(FirstTrue(a == b));
|
||||
}
|
||||
CheckLogEtalon();
|
||||
}
|
||||
10
autotest/SIMD_CMP/SIMD_CMP.upp
Normal file
10
autotest/SIMD_CMP/SIMD_CMP.upp
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
uses
|
||||
Core;
|
||||
|
||||
file
|
||||
Etalon.log,
|
||||
SIMD_CMP.cpp;
|
||||
|
||||
mainconfig
|
||||
"" = "";
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue