mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-15 14:16:07 -06:00
Core: SIMD FirstFalse
This commit is contained in:
parent
29238aedbc
commit
860777e329
4 changed files with 97 additions and 18 deletions
|
|
@ -1,4 +1,4 @@
|
|||
* /Users/cxl/out/CLANG.Debug.Debug_Full.Shared/SIMD_CMP 02.04.2025 12:04:20, user: cxl
|
||||
* C:\upp\out\autotest\CLANGx64.Debug.Debug_Full\SIMD_CMP.exe 10.04.2025 07:43:11, user: mirek
|
||||
|
||||
=============== f32x4
|
||||
a = 9 9 9 9
|
||||
|
|
@ -12,6 +12,7 @@ b = 0 0 0 0
|
|||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = false
|
||||
CountTrue(c == b) = 0
|
||||
FirstFalse(c == b) = 0
|
||||
matches =
|
||||
---
|
||||
a = 9 9 9 0
|
||||
|
|
@ -20,12 +21,14 @@ AllTrue(c == a) = false
|
|||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 3
|
||||
FirstTrue(c == a) = 1
|
||||
FirstFalse(c == a) = 0
|
||||
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
|
||||
FirstFalse(c == b) = 1
|
||||
matches = 0
|
||||
---
|
||||
a = 9 9 0 0
|
||||
|
|
@ -34,12 +37,14 @@ AllTrue(c == a) = false
|
|||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 2
|
||||
FirstTrue(c == a) = 2
|
||||
FirstFalse(c == a) = 0
|
||||
matches = 2 3
|
||||
b = 0 0 9 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 2
|
||||
FirstTrue(c == b) = 0
|
||||
FirstFalse(c == b) = 2
|
||||
matches = 0 1
|
||||
---
|
||||
a = 9 0 0 0
|
||||
|
|
@ -48,12 +53,14 @@ AllTrue(c == a) = false
|
|||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 1
|
||||
FirstTrue(c == a) = 3
|
||||
FirstFalse(c == a) = 0
|
||||
matches = 3
|
||||
b = 0 9 9 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 3
|
||||
FirstTrue(c == b) = 0
|
||||
FirstFalse(c == b) = 3
|
||||
matches = 0 1 2
|
||||
---
|
||||
a = 1 2 3 4
|
||||
|
|
@ -65,6 +72,7 @@ AnyTrue(a == b) = true
|
|||
AnyTrue(a == c) = false
|
||||
CountTrue(a == b) = 3
|
||||
FirstTrue(a == b) = 1
|
||||
FirstFalse(a == b) = 0
|
||||
=============== i16x8
|
||||
a = 9 9 9 9 9 9 9 9
|
||||
c = 9 9 9 9 9 9 9 9
|
||||
|
|
@ -77,6 +85,7 @@ b = 0 0 0 0 0 0 0 0
|
|||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = false
|
||||
CountTrue(c == b) = 0
|
||||
FirstFalse(c == b) = 0
|
||||
matches =
|
||||
---
|
||||
a = 9 9 9 9 9 9 9 0
|
||||
|
|
@ -85,12 +94,14 @@ AllTrue(c == a) = false
|
|||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 7
|
||||
FirstTrue(c == a) = 1
|
||||
FirstFalse(c == a) = 0
|
||||
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
|
||||
FirstFalse(c == b) = 1
|
||||
matches = 0
|
||||
---
|
||||
a = 9 9 9 9 9 9 0 0
|
||||
|
|
@ -99,12 +110,14 @@ AllTrue(c == a) = false
|
|||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 6
|
||||
FirstTrue(c == a) = 2
|
||||
FirstFalse(c == a) = 0
|
||||
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
|
||||
FirstFalse(c == b) = 2
|
||||
matches = 0 1
|
||||
---
|
||||
a = 9 9 9 9 9 0 0 0
|
||||
|
|
@ -113,12 +126,14 @@ AllTrue(c == a) = false
|
|||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 5
|
||||
FirstTrue(c == a) = 3
|
||||
FirstFalse(c == a) = 0
|
||||
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
|
||||
FirstFalse(c == b) = 3
|
||||
matches = 0 1 2
|
||||
---
|
||||
a = 9 9 9 9 0 0 0 0
|
||||
|
|
@ -127,12 +142,14 @@ AllTrue(c == a) = false
|
|||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 4
|
||||
FirstTrue(c == a) = 4
|
||||
FirstFalse(c == a) = 0
|
||||
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
|
||||
FirstFalse(c == b) = 4
|
||||
matches = 0 1 2 3
|
||||
---
|
||||
a = 9 9 9 0 0 0 0 0
|
||||
|
|
@ -141,12 +158,14 @@ AllTrue(c == a) = false
|
|||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 3
|
||||
FirstTrue(c == a) = 5
|
||||
FirstFalse(c == a) = 0
|
||||
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
|
||||
FirstFalse(c == b) = 5
|
||||
matches = 0 1 2 3 4
|
||||
---
|
||||
a = 9 9 0 0 0 0 0 0
|
||||
|
|
@ -155,12 +174,14 @@ AllTrue(c == a) = false
|
|||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 2
|
||||
FirstTrue(c == a) = 6
|
||||
FirstFalse(c == a) = 0
|
||||
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
|
||||
FirstFalse(c == b) = 6
|
||||
matches = 0 1 2 3 4 5
|
||||
---
|
||||
a = 9 0 0 0 0 0 0 0
|
||||
|
|
@ -169,12 +190,14 @@ AllTrue(c == a) = false
|
|||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 1
|
||||
FirstTrue(c == a) = 7
|
||||
FirstFalse(c == a) = 0
|
||||
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
|
||||
FirstFalse(c == b) = 7
|
||||
matches = 0 1 2 3 4 5 6
|
||||
---
|
||||
a = 1 2 3 4 5 6 7 8
|
||||
|
|
@ -186,6 +209,7 @@ AnyTrue(a == b) = true
|
|||
AnyTrue(a == c) = false
|
||||
CountTrue(a == b) = 4
|
||||
FirstTrue(a == b) = 1
|
||||
FirstFalse(a == b) = 0
|
||||
=============== i32x4
|
||||
a = 9 9 9 9
|
||||
c = 9 9 9 9
|
||||
|
|
@ -198,6 +222,7 @@ b = 0 0 0 0
|
|||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = false
|
||||
CountTrue(c == b) = 0
|
||||
FirstFalse(c == b) = 0
|
||||
matches =
|
||||
---
|
||||
a = 9 9 9 0
|
||||
|
|
@ -206,12 +231,14 @@ AllTrue(c == a) = false
|
|||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 3
|
||||
FirstTrue(c == a) = 1
|
||||
FirstFalse(c == a) = 0
|
||||
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
|
||||
FirstFalse(c == b) = 1
|
||||
matches = 0
|
||||
---
|
||||
a = 9 9 0 0
|
||||
|
|
@ -220,12 +247,14 @@ AllTrue(c == a) = false
|
|||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 2
|
||||
FirstTrue(c == a) = 2
|
||||
FirstFalse(c == a) = 0
|
||||
matches = 2 3
|
||||
b = 0 0 9 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 2
|
||||
FirstTrue(c == b) = 0
|
||||
FirstFalse(c == b) = 2
|
||||
matches = 0 1
|
||||
---
|
||||
a = 9 0 0 0
|
||||
|
|
@ -234,12 +263,14 @@ AllTrue(c == a) = false
|
|||
AnyTrue(c == a) = true
|
||||
CountTrue(c == a) = 1
|
||||
FirstTrue(c == a) = 3
|
||||
FirstFalse(c == a) = 0
|
||||
matches = 3
|
||||
b = 0 9 9 9
|
||||
AllTrue(c == b) = false
|
||||
AnyTrue(c == b) = true
|
||||
CountTrue(c == b) = 3
|
||||
FirstTrue(c == b) = 0
|
||||
FirstFalse(c == b) = 3
|
||||
matches = 0 1 2
|
||||
---
|
||||
a = 1 2 3 4
|
||||
|
|
@ -251,6 +282,7 @@ AnyTrue(a == b) = true
|
|||
AnyTrue(a == c) = false
|
||||
CountTrue(a == b) = 3
|
||||
FirstTrue(a == b) = 1
|
||||
FirstFalse(a == b) = 0
|
||||
=============== 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
|
||||
|
|
@ -263,6 +295,7 @@ 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
|
||||
FirstFalse(c == b) = 0
|
||||
matches =
|
||||
---
|
||||
a = 9 9 9 9 . 9 9 9 9 . 9 9 9 9 . 9 9 9 0
|
||||
|
|
@ -270,13 +303,15 @@ 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
|
||||
FirstTrue(c == a) = 0
|
||||
FirstFalse(c == a) = 0
|
||||
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
|
||||
FirstFalse(c == b) = 1
|
||||
matches = 0
|
||||
---
|
||||
a = 9 9 9 9 . 9 9 9 9 . 9 9 9 9 . 9 9 0 0
|
||||
|
|
@ -284,13 +319,15 @@ 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
|
||||
FirstTrue(c == a) = 1
|
||||
FirstFalse(c == a) = 0
|
||||
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
|
||||
FirstFalse(c == b) = 2
|
||||
matches = 0 1
|
||||
---
|
||||
a = 9 9 9 9 . 9 9 9 9 . 9 9 9 9 . 9 0 0 0
|
||||
|
|
@ -298,13 +335,15 @@ 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
|
||||
FirstTrue(c == a) = 1
|
||||
FirstFalse(c == a) = 0
|
||||
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
|
||||
FirstFalse(c == b) = 3
|
||||
matches = 0 1 2
|
||||
---
|
||||
a = 9 9 9 9 . 9 9 9 9 . 9 9 9 9 . 0 0 0 0
|
||||
|
|
@ -312,13 +351,15 @@ 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
|
||||
FirstTrue(c == a) = 2
|
||||
FirstFalse(c == a) = 0
|
||||
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
|
||||
FirstFalse(c == b) = 4
|
||||
matches = 0 1 2 3
|
||||
---
|
||||
a = 9 9 9 9 . 9 9 9 9 . 9 9 9 0 . 0 0 0 0
|
||||
|
|
@ -326,13 +367,15 @@ 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
|
||||
FirstTrue(c == a) = 2
|
||||
FirstFalse(c == a) = 0
|
||||
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
|
||||
FirstFalse(c == b) = 5
|
||||
matches = 0 1 2 3 4
|
||||
---
|
||||
a = 9 9 9 9 . 9 9 9 9 . 9 9 0 0 . 0 0 0 0
|
||||
|
|
@ -340,13 +383,15 @@ 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
|
||||
FirstTrue(c == a) = 3
|
||||
FirstFalse(c == a) = 0
|
||||
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
|
||||
FirstFalse(c == b) = 6
|
||||
matches = 0 1 2 3 4 5
|
||||
---
|
||||
a = 9 9 9 9 . 9 9 9 9 . 9 0 0 0 . 0 0 0 0
|
||||
|
|
@ -354,13 +399,15 @@ 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
|
||||
FirstTrue(c == a) = 3
|
||||
FirstFalse(c == a) = 0
|
||||
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
|
||||
FirstFalse(c == b) = 7
|
||||
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
|
||||
|
|
@ -368,13 +415,15 @@ 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
|
||||
FirstTrue(c == a) = 4
|
||||
FirstFalse(c == a) = 0
|
||||
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
|
||||
FirstFalse(c == b) = 8
|
||||
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
|
||||
|
|
@ -382,13 +431,15 @@ 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
|
||||
FirstTrue(c == a) = 4
|
||||
FirstFalse(c == a) = 0
|
||||
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
|
||||
FirstFalse(c == b) = 9
|
||||
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
|
||||
|
|
@ -396,13 +447,15 @@ 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
|
||||
FirstTrue(c == a) = 5
|
||||
FirstFalse(c == a) = 0
|
||||
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
|
||||
FirstFalse(c == b) = 10
|
||||
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
|
||||
|
|
@ -410,13 +463,15 @@ 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
|
||||
FirstTrue(c == a) = 5
|
||||
FirstFalse(c == a) = 0
|
||||
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
|
||||
FirstFalse(c == b) = 11
|
||||
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
|
||||
|
|
@ -424,13 +479,15 @@ 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
|
||||
FirstTrue(c == a) = 6
|
||||
FirstFalse(c == a) = 0
|
||||
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
|
||||
FirstFalse(c == b) = 12
|
||||
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
|
||||
|
|
@ -438,13 +495,15 @@ 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
|
||||
FirstTrue(c == a) = 6
|
||||
FirstFalse(c == a) = 0
|
||||
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
|
||||
FirstFalse(c == b) = 13
|
||||
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
|
||||
|
|
@ -452,13 +511,15 @@ 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
|
||||
FirstTrue(c == a) = 7
|
||||
FirstFalse(c == a) = 0
|
||||
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
|
||||
FirstFalse(c == b) = 14
|
||||
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
|
||||
|
|
@ -466,13 +527,15 @@ 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
|
||||
FirstTrue(c == a) = 7
|
||||
FirstFalse(c == a) = 0
|
||||
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
|
||||
FirstFalse(c == b) = 15
|
||||
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
|
||||
|
|
@ -483,4 +546,5 @@ AllTrue(a == a) = true
|
|||
AnyTrue(a == b) = true
|
||||
AnyTrue(a == c) = false
|
||||
CountTrue(a == b) = 8
|
||||
FirstTrue(a == b) = 1
|
||||
FirstTrue(a == b) = 0
|
||||
FirstFalse(a == b) = 0
|
||||
|
|
|
|||
|
|
@ -23,6 +23,8 @@ T Test()
|
|||
DDUMP(CountTrue(c == a));
|
||||
if(AnyTrue(c == a))
|
||||
DDUMP(FirstTrue(c == a));
|
||||
if(!AllTrue(c == a))
|
||||
DDUMP(FirstFalse(c == a));
|
||||
String matches;
|
||||
for(int j = 0; j < n; j++)
|
||||
if(IsTrue(c == a, j))
|
||||
|
|
@ -34,6 +36,8 @@ T Test()
|
|||
DDUMP(CountTrue(c == b));
|
||||
if(AnyTrue(c == b))
|
||||
DDUMP(FirstTrue(c == b));
|
||||
if(!AllTrue(c == b))
|
||||
DDUMP(FirstFalse(c == b));
|
||||
matches.Clear();
|
||||
for(int j = 0; j < n; j++)
|
||||
if(IsTrue(c == b, j))
|
||||
|
|
@ -68,6 +72,7 @@ CONSOLE_APP_MAIN
|
|||
DDUMP(AnyTrue(a == c));
|
||||
DDUMP(CountTrue(a == b));
|
||||
DDUMP(FirstTrue(a == b));
|
||||
DDUMP(FirstFalse(a == b));
|
||||
}
|
||||
DLOG("=============== i16x8");
|
||||
{
|
||||
|
|
@ -85,6 +90,7 @@ CONSOLE_APP_MAIN
|
|||
DDUMP(AnyTrue(a == c));
|
||||
DDUMP(CountTrue(a == b));
|
||||
DDUMP(FirstTrue(a == b));
|
||||
DDUMP(FirstFalse(a == b));
|
||||
}
|
||||
DLOG("=============== i32x4");
|
||||
{
|
||||
|
|
@ -102,6 +108,7 @@ CONSOLE_APP_MAIN
|
|||
DDUMP(AnyTrue(a == c));
|
||||
DDUMP(CountTrue(a == b));
|
||||
DDUMP(FirstTrue(a == b));
|
||||
DDUMP(FirstFalse(a == b));
|
||||
}
|
||||
DLOG("=============== i8x16");
|
||||
{
|
||||
|
|
@ -119,6 +126,7 @@ CONSOLE_APP_MAIN
|
|||
DDUMP(AnyTrue(a == c));
|
||||
DDUMP(CountTrue(a == b));
|
||||
DDUMP(FirstTrue(a == b));
|
||||
DDUMP(FirstFalse(a == b));
|
||||
}
|
||||
CheckLogEtalon();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -67,6 +67,7 @@ force_inline bool AllTrue(f32x4 a) { return cmaskf__(a.data) ==
|
|||
force_inline bool AnyTrue(f32x4 a) { return cmaskf__(a.data); }
|
||||
force_inline int CountTrue(f32x4 a) { return CountBits64(cmaskf__(a.data)) >> 4; }
|
||||
force_inline int FirstTrue(f32x4 a) { return CountTrailingZeroBits64(cmaskf__(a.data)) >> 4; }
|
||||
force_inline int FirstFalse(f32x4 a) { return CountTrailingZeroBits64(~cmaskf__(a.data)) >> 4; }
|
||||
force_inline bool IsTrue(f32x4 a, int i) { return cmaskf__(a.data) & ((uint64)1 << (i << 4)); }
|
||||
|
||||
force_inline f32x4 min(f32x4 a, f32x4 b) { return vminq_f32(a, b); }
|
||||
|
|
@ -133,6 +134,7 @@ force_inline bool AllTrue(i16x8 a) { return cmask16__(a.data) =
|
|||
force_inline bool AnyTrue(i16x8 a) { return cmask16__(a.data); }
|
||||
force_inline int CountTrue(i16x8 a) { return CountBits64(cmask16__(a.data)) >> 3; }
|
||||
force_inline int FirstTrue(i16x8 a) { return CountTrailingZeroBits64(cmask16__(a.data)) >> 3; }
|
||||
force_inline int FirstFalse(i16x8 a) { return CountTrailingZeroBits64(~cmask16__(a.data)) >> 3; }
|
||||
force_inline bool IsTrue(i16x8 a, int i) { return cmask16__(a.data) & ((uint64)1 << (i << 3)); }
|
||||
|
||||
struct i32x4 { // 4xint32
|
||||
|
|
@ -190,6 +192,7 @@ force_inline bool AllTrue(i32x4 a) { return cmask32__(a.data) =
|
|||
force_inline bool AnyTrue(i32x4 a) { return cmask32__(a.data); }
|
||||
force_inline int CountTrue(i32x4 a) { return CountBits64(cmask32__(a.data)) >> 4; }
|
||||
force_inline int FirstTrue(i32x4 a) { return CountTrailingZeroBits64(cmask32__(a.data)) >> 4; }
|
||||
force_inline int FirstFalse(i32x4 a) { return CountTrailingZeroBits64(~cmask32__(a.data)) >> 4; }
|
||||
force_inline bool IsTrue(i32x4 a, int i) { return cmask32__(a.data) & ((uint64)1 << (i << 4)); }
|
||||
|
||||
struct i8x16 { // 16*int8
|
||||
|
|
@ -247,6 +250,7 @@ force_inline bool AllTrue(i8x16 a) { return cmask8__(a.data) ==
|
|||
force_inline bool AnyTrue(i8x16 a) { return cmask8__(a.data); }
|
||||
force_inline int CountTrue(i8x16 a) { return CountBits64(cmask8__(a.data)) >> 2; }
|
||||
force_inline int FirstTrue(i8x16 a) { return CountTrailingZeroBits64(cmask8__(a.data)) >> 2; }
|
||||
force_inline int FirstFalse(i8x16 a) { return CountTrailingZeroBits64(~cmask8__(a.data)) >> 2; }
|
||||
force_inline bool IsTrue(i8x16 a, int i) { return cmask8__(a.data) & ((uint64)1 << (i << 2)); }
|
||||
|
||||
force_inline f32x4 ToFloat(i32x4 a) { return vcvtq_f32_s32(a); }
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ force_inline bool AllTrue(f32x4 a) { return _mm_movemask_ps(a.dat
|
|||
force_inline bool AnyTrue(f32x4 a) { return _mm_movemask_ps(a.data); }
|
||||
force_inline int CountTrue(f32x4 a) { return CountBits(_mm_movemask_ps(a.data)); }
|
||||
force_inline int FirstTrue(f32x4 a) { return CountTrailingZeroBits(_mm_movemask_ps(a.data)); }
|
||||
force_inline int FirstFalse(f32x4 a) { return CountTrailingZeroBits(~_mm_movemask_ps(a.data)); }
|
||||
force_inline bool IsTrue(f32x4 a, int i) { return _mm_movemask_ps(a.data) & (1 << i); }
|
||||
|
||||
force_inline f32x4 min(f32x4 a, f32x4 b) { return _mm_min_ps(a.data, b.data); }
|
||||
|
|
@ -102,6 +103,7 @@ force_inline bool AllTrue(i16x8 a) { return _mm_movemask_epi8(a.
|
|||
force_inline bool AnyTrue(i16x8 a) { return _mm_movemask_epi8(a.data); }
|
||||
force_inline int CountTrue(i16x8 a) { return CountBits(_mm_movemask_epi8(a.data)) >> 1; }
|
||||
force_inline int FirstTrue(i16x8 a) { return CountTrailingZeroBits(_mm_movemask_epi8(a.data)) >> 1; }
|
||||
force_inline int FirstFalse(i16x8 a) { return CountTrailingZeroBits(~_mm_movemask_epi8(a.data)) >> 1; }
|
||||
force_inline int IsTrue(i16x8 a, int i) { return _mm_movemask_epi8(a.data) & (1 << 2 * i); }
|
||||
|
||||
struct i32x4 : i16x8 { // 4xint32
|
||||
|
|
@ -140,6 +142,7 @@ force_inline bool AllTrue(i32x4 a) { return _mm_movemask_epi8(a.
|
|||
force_inline bool AnyTrue(i32x4 a) { return _mm_movemask_ps(_mm_castsi128_ps(a.data)); }
|
||||
force_inline int CountTrue(i32x4 a) { return CountBits(_mm_movemask_ps(_mm_castsi128_ps(a.data))); }
|
||||
force_inline int FirstTrue(i32x4 a) { return CountTrailingZeroBits(_mm_movemask_ps(_mm_castsi128_ps(a.data))); }
|
||||
force_inline int FirstFalse(i32x4 a) { return CountTrailingZeroBits(~_mm_movemask_ps(_mm_castsi128_ps(a.data))); }
|
||||
force_inline bool IsTrue(i32x4 a, int i) { return _mm_movemask_ps(_mm_castsi128_ps(a.data)) & (1 << i); }
|
||||
|
||||
struct i8x16 : i16x8 { // 16xint8
|
||||
|
|
@ -172,7 +175,7 @@ force_inline i8x16 operator>(i8x16 a, i8x16 b) { return _mm_cmpgt_epi8(a.dat
|
|||
force_inline bool AllTrue(i8x16 a) { return _mm_movemask_epi8(a.data) == 0xffff; }
|
||||
force_inline bool AnyTrue(i8x16 a) { return _mm_movemask_epi8(a.data); }
|
||||
force_inline int CountTrue(i8x16 a) { return CountBits(_mm_movemask_epi8(a.data)); }
|
||||
force_inline int FirstTrue(i8x16 a) { return CountTrailingZeroBits(_mm_movemask_epi8(a.data)); }
|
||||
force_inline int FirstFalse(i8x16 a) { return CountTrailingZeroBits(~_mm_movemask_epi8(a.data)); }
|
||||
force_inline bool IsTrue(i8x16 a, int i) { return _mm_movemask_epi8(a.data) & (1 << i); }
|
||||
|
||||
force_inline f32x4 ToFloat(i32x4 a) { return _mm_cvtepi32_ps(a.data); }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue