1
+ //-------------------------------------------------------------------------------------------------------
2
+ // Copyright (C) Microsoft. All rights reserved.
3
+ // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
4
+ //-------------------------------------------------------------------------------------------------------
5
+
1
6
function InitBuffer1 ( buffer ) {
2
7
HEAP32 = new Int32Array ( buffer ) ;
3
8
HEAP32 [ 0 ] = 13654
@@ -21,39 +26,39 @@ function InitBuffer2(buffer) {
21
26
22
27
function asmModule ( stdlib , imports , buffer ) {
23
28
"use asm" ;
24
-
29
+
25
30
var log = stdlib . Math . log ;
26
-
31
+
27
32
var i4 = stdlib . SIMD . Int32x4 ;
28
33
var i4equal = i4 . equal ;
29
34
var i4splat = i4 . splat ;
30
35
var i4swizzle = i4 . swizzle ;
31
-
36
+
32
37
var HEAP32 = new stdlib . Int32Array ( buffer ) ;
33
38
var BLOCK_SIZE = 4 ;
34
39
var i = 0 ;
35
-
40
+
36
41
function linearSearch ( value , length ) {
37
42
value = value | 0 ;
38
43
length = length | 0 ;
39
44
var i4Value = i4 ( 0 , 0 , 0 , 0 ) ;
40
45
var i4Heap = i4 ( 0 , 0 , 0 , 0 ) ;
41
46
var i4Result = i4 ( 0 , 0 , 0 , 0 ) ;
42
47
var i4Flipped = i4 ( 0 , 0 , 0 , 0 ) ;
43
-
48
+
44
49
i4Value = i4splat ( value | 0 ) ;
45
50
for ( i = 0 ; ( i | 0 ) < ( length | 0 ) ; i = ( i + BLOCK_SIZE ) | 0 ) {
46
51
i4Heap = i4 ( ( HEAP32 [ ( i << 2 ) >> 2 ] | 0 ) , ( HEAP32 [ ( ( i + 1 ) << 2 ) >> 2 ] | 0 ) , ( HEAP32 [ ( ( i + 2 ) << 2 ) >> 2 ] | 0 ) , ( HEAP32 [ ( ( i + 3 ) << 2 ) >> 2 ] | 0 ) ) ;
47
52
i4Result = i4equal ( i4Heap , i4Value ) ;
48
-
53
+
49
54
if ( i4Result . signMask != 0 ) {
50
55
i4Flipped = i4swizzle ( i4Result , 3 , 2 , 1 , 0 ) ;
51
56
return ( i + BLOCK_SIZE - ~ ~ ( log ( + ( i4Flipped . signMask | 0 ) ) / log ( 2.0 ) ) - 1 ) | 0
52
57
}
53
58
}
54
59
return - 1 ;
55
60
}
56
-
61
+
57
62
return { linearSearch :linearSearch } ;
58
63
}
59
64
@@ -73,4 +78,4 @@ WScript.Echo("List 2");
73
78
WScript . Echo ( m . linearSearch ( 13654 , 999999 ) ) ;
74
79
WScript . Echo ( m . linearSearch ( 23 , 999999 ) ) ;
75
80
WScript . Echo ( m . linearSearch ( 145764 , 999999 ) ) ;
76
- WScript . Echo ( m . linearSearch ( - 53 , 999999 ) ) ;
81
+ WScript . Echo ( m . linearSearch ( - 53 , 999999 ) ) ;
0 commit comments