585 lines
14 KiB
Plaintext
585 lines
14 KiB
Plaintext
(module $bitcount.wasm
|
|
(type (;0;) (func (param i32 i32)))
|
|
(type (;1;) (func))
|
|
(type (;2;) (func (result i32)))
|
|
(type (;3;) (func (param i32) (result i32)))
|
|
(import "__pragma" "loopbound" (func $__pragma_loopbound (type 0)))
|
|
(func $__wasm_apply_data_relocs (type 1))
|
|
(func $bitcount_main (type 1)
|
|
(local i32 i32 i32 i32 i32 i32)
|
|
i32.const 8
|
|
i32.const 8
|
|
call $__pragma_loopbound
|
|
i32.const 0
|
|
local.set 0
|
|
loop ;; label = @1
|
|
i32.const 10
|
|
i32.const 10
|
|
call $__pragma_loopbound
|
|
i32.const 0
|
|
i32.const 0
|
|
i32.load offset=1540
|
|
local.tee 1
|
|
i32.const 127773
|
|
i32.div_s
|
|
local.tee 2
|
|
i32.const -2836
|
|
i32.mul
|
|
local.get 1
|
|
local.get 2
|
|
i32.const 127773
|
|
i32.mul
|
|
i32.sub
|
|
i32.const 16807
|
|
i32.mul
|
|
i32.add
|
|
local.tee 1
|
|
i32.const 2147483647
|
|
i32.add
|
|
local.get 1
|
|
local.get 1
|
|
i32.const 1
|
|
i32.lt_s
|
|
select
|
|
local.tee 1
|
|
i32.store offset=1548
|
|
i32.const 0
|
|
local.get 1
|
|
i32.store offset=1540
|
|
block ;; label = @2
|
|
i32.const 0
|
|
i32.load offset=1544
|
|
i32.eqz
|
|
br_if 0 (;@2;)
|
|
i32.const 0
|
|
local.set 3
|
|
loop ;; label = @3
|
|
block ;; label = @4
|
|
block ;; label = @5
|
|
block ;; label = @6
|
|
block ;; label = @7
|
|
block ;; label = @8
|
|
block ;; label = @9
|
|
block ;; label = @10
|
|
block ;; label = @11
|
|
block ;; label = @12
|
|
local.get 0
|
|
br_table 0 (;@12;) 1 (;@11;) 2 (;@10;) 3 (;@9;) 4 (;@8;) 5 (;@7;) 6 (;@6;) 7 (;@5;) 0 (;@12;)
|
|
end
|
|
local.get 1
|
|
call $bitcount_bit_count
|
|
local.set 2
|
|
br 7 (;@4;)
|
|
end
|
|
local.get 1
|
|
call $bitcount_bitcount
|
|
local.set 2
|
|
br 6 (;@4;)
|
|
end
|
|
local.get 1
|
|
call $bitcount_ntbl_bitcnt
|
|
local.set 2
|
|
br 5 (;@4;)
|
|
end
|
|
local.get 1
|
|
call $bitcount_btbl_bitcnt
|
|
local.set 2
|
|
br 4 (;@4;)
|
|
end
|
|
local.get 1
|
|
call $bitcount_ntbl_bitcount
|
|
local.set 2
|
|
br 3 (;@4;)
|
|
end
|
|
local.get 1
|
|
call $bitcount_BW_btbl_bitcount
|
|
local.set 2
|
|
br 2 (;@4;)
|
|
end
|
|
local.get 1
|
|
call $bitcount_AR_btbl_bitcount
|
|
local.set 2
|
|
br 1 (;@4;)
|
|
end
|
|
i32.const 31
|
|
i32.const 31
|
|
call $__pragma_loopbound
|
|
block ;; label = @5
|
|
local.get 1
|
|
br_if 0 (;@5;)
|
|
i32.const 0
|
|
local.set 2
|
|
br 1 (;@4;)
|
|
end
|
|
i32.const 0
|
|
local.set 4
|
|
i32.const 0
|
|
local.set 2
|
|
loop ;; label = @5
|
|
local.get 1
|
|
i32.const 1
|
|
i32.and
|
|
local.get 2
|
|
i32.add
|
|
local.set 2
|
|
local.get 1
|
|
i32.const 2
|
|
i32.lt_u
|
|
br_if 1 (;@4;)
|
|
local.get 1
|
|
i32.const 1
|
|
i32.shr_s
|
|
local.set 1
|
|
local.get 4
|
|
i32.const 31
|
|
i32.lt_u
|
|
local.set 5
|
|
local.get 4
|
|
i32.const 1
|
|
i32.add
|
|
local.set 4
|
|
local.get 5
|
|
br_if 0 (;@5;)
|
|
end
|
|
end
|
|
i32.const 0
|
|
local.get 2
|
|
i32.store offset=1552
|
|
i32.const 0
|
|
i32.const 0
|
|
i32.load offset=1536
|
|
local.get 2
|
|
i32.add
|
|
i32.store offset=1536
|
|
i32.const 0
|
|
i32.const 0
|
|
i32.load offset=1548
|
|
i32.const 13
|
|
i32.add
|
|
local.tee 1
|
|
i32.store offset=1548
|
|
local.get 3
|
|
i32.const 1
|
|
i32.add
|
|
local.tee 3
|
|
i32.const 0
|
|
i32.load offset=1544
|
|
i32.lt_u
|
|
br_if 0 (;@3;)
|
|
end
|
|
end
|
|
local.get 0
|
|
i32.const 1
|
|
i32.add
|
|
local.tee 0
|
|
i32.const 8
|
|
i32.ne
|
|
br_if 0 (;@1;)
|
|
end)
|
|
(func $__original_main (type 2) (result i32)
|
|
i32.const 0
|
|
i32.const 1
|
|
i32.store offset=1540
|
|
i32.const 0
|
|
i32.const 10
|
|
i32.store offset=1544
|
|
i32.const 0
|
|
i32.const 0
|
|
i32.store offset=1536
|
|
call $bitcount_init3
|
|
call $bitcount_init4
|
|
call $bitcount_main
|
|
i32.const 0
|
|
i32.load offset=1536
|
|
i32.const 1095
|
|
i32.ne)
|
|
(func $bitcount_bit_count (type 3) (param i32) (result i32)
|
|
(local i32)
|
|
block ;; label = @1
|
|
local.get 0
|
|
br_if 0 (;@1;)
|
|
i32.const 0
|
|
return
|
|
end
|
|
i32.const 3
|
|
i32.const 8
|
|
call $__pragma_loopbound
|
|
i32.const 0
|
|
local.set 1
|
|
loop ;; label = @1
|
|
local.get 1
|
|
i32.const 1
|
|
i32.add
|
|
local.set 1
|
|
local.get 0
|
|
i32.const -1
|
|
i32.add
|
|
local.get 0
|
|
i32.and
|
|
local.tee 0
|
|
br_if 0 (;@1;)
|
|
end
|
|
local.get 1)
|
|
(func $bitcount_bitcount (type 3) (param i32) (result i32)
|
|
local.get 0
|
|
i32.const 1
|
|
i32.shr_u
|
|
i32.const 1431655765
|
|
i32.and
|
|
local.get 0
|
|
i32.const 1431655765
|
|
i32.and
|
|
i32.add
|
|
local.tee 0
|
|
i32.const 2
|
|
i32.shr_u
|
|
i32.const 858993459
|
|
i32.and
|
|
local.get 0
|
|
i32.const 858993459
|
|
i32.and
|
|
i32.add
|
|
local.tee 0
|
|
i32.const 4
|
|
i32.shr_u
|
|
i32.const 117901063
|
|
i32.and
|
|
local.get 0
|
|
i32.const 117901063
|
|
i32.and
|
|
i32.add
|
|
local.tee 0
|
|
i32.const 8
|
|
i32.shr_u
|
|
i32.const 983055
|
|
i32.and
|
|
local.get 0
|
|
i32.const 983055
|
|
i32.and
|
|
i32.add
|
|
local.tee 0
|
|
i32.const 16
|
|
i32.shr_u
|
|
local.get 0
|
|
i32.const 31
|
|
i32.and
|
|
i32.add)
|
|
(func $bitcount_init3 (type 1)
|
|
(local i32 i32)
|
|
global.get $__stack_pointer
|
|
i32.const 16
|
|
i32.sub
|
|
local.tee 0
|
|
i32.const 0
|
|
i32.store offset=12
|
|
local.get 0
|
|
i32.const 0
|
|
i32.store offset=12
|
|
block ;; label = @1
|
|
local.get 0
|
|
i32.load offset=12
|
|
i32.const 255
|
|
i32.gt_s
|
|
br_if 0 (;@1;)
|
|
loop ;; label = @2
|
|
local.get 0
|
|
i32.load offset=12
|
|
local.set 1
|
|
local.get 0
|
|
i32.load offset=12
|
|
i32.const 1568
|
|
i32.add
|
|
local.get 1
|
|
i32.const 1024
|
|
i32.add
|
|
i32.load8_u
|
|
i32.store8
|
|
local.get 0
|
|
local.get 0
|
|
i32.load offset=12
|
|
i32.const 1
|
|
i32.add
|
|
i32.store offset=12
|
|
local.get 0
|
|
i32.load offset=12
|
|
i32.const 256
|
|
i32.lt_s
|
|
br_if 0 (;@2;)
|
|
end
|
|
end)
|
|
(func $bitcount_ntbl_bitcount (type 3) (param i32) (result i32)
|
|
local.get 0
|
|
i32.const 4
|
|
i32.shr_u
|
|
i32.const 15
|
|
i32.and
|
|
i32.const 1568
|
|
i32.add
|
|
i32.load8_s
|
|
local.get 0
|
|
i32.const 15
|
|
i32.and
|
|
i32.const 1568
|
|
i32.add
|
|
i32.load8_s
|
|
i32.add
|
|
local.get 0
|
|
i32.const 8
|
|
i32.shr_u
|
|
i32.const 15
|
|
i32.and
|
|
i32.const 1568
|
|
i32.add
|
|
i32.load8_s
|
|
i32.add
|
|
local.get 0
|
|
i32.const 12
|
|
i32.shr_u
|
|
i32.const 15
|
|
i32.and
|
|
i32.const 1568
|
|
i32.add
|
|
i32.load8_s
|
|
i32.add
|
|
local.get 0
|
|
i32.const 16
|
|
i32.shr_u
|
|
i32.const 15
|
|
i32.and
|
|
i32.const 1568
|
|
i32.add
|
|
i32.load8_s
|
|
i32.add
|
|
local.get 0
|
|
i32.const 20
|
|
i32.shr_u
|
|
i32.const 15
|
|
i32.and
|
|
i32.const 1568
|
|
i32.add
|
|
i32.load8_s
|
|
i32.add
|
|
local.get 0
|
|
i32.const 24
|
|
i32.shr_u
|
|
i32.const 15
|
|
i32.and
|
|
i32.const 1568
|
|
i32.add
|
|
i32.load8_s
|
|
i32.add
|
|
local.get 0
|
|
i32.const 28
|
|
i32.shr_u
|
|
i32.const 1568
|
|
i32.add
|
|
i32.load8_s
|
|
i32.add)
|
|
(func $bitcount_BW_btbl_bitcount (type 3) (param i32) (result i32)
|
|
local.get 0
|
|
i32.const 8
|
|
i32.shr_u
|
|
i32.const 255
|
|
i32.and
|
|
i32.const 1568
|
|
i32.add
|
|
i32.load8_s
|
|
local.get 0
|
|
i32.const 255
|
|
i32.and
|
|
i32.const 1568
|
|
i32.add
|
|
i32.load8_s
|
|
i32.add
|
|
local.get 0
|
|
i32.const 24
|
|
i32.shr_u
|
|
i32.const 1568
|
|
i32.add
|
|
i32.load8_s
|
|
i32.add
|
|
local.get 0
|
|
i32.const 16
|
|
i32.shr_u
|
|
i32.const 255
|
|
i32.and
|
|
i32.const 1568
|
|
i32.add
|
|
i32.load8_s
|
|
i32.add)
|
|
(func $bitcount_AR_btbl_bitcount (type 3) (param i32) (result i32)
|
|
local.get 0
|
|
i32.const 8
|
|
i32.shr_u
|
|
i32.const 255
|
|
i32.and
|
|
i32.const 1568
|
|
i32.add
|
|
i32.load8_s
|
|
local.get 0
|
|
i32.const 255
|
|
i32.and
|
|
i32.const 1568
|
|
i32.add
|
|
i32.load8_s
|
|
i32.add
|
|
local.get 0
|
|
i32.const 16
|
|
i32.shr_u
|
|
i32.const 255
|
|
i32.and
|
|
i32.const 1568
|
|
i32.add
|
|
i32.load8_s
|
|
i32.add
|
|
local.get 0
|
|
i32.const 24
|
|
i32.shr_u
|
|
i32.const 1568
|
|
i32.add
|
|
i32.load8_s
|
|
i32.add)
|
|
(func $bitcount_init4 (type 1)
|
|
(local i32 i32)
|
|
global.get $__stack_pointer
|
|
i32.const 16
|
|
i32.sub
|
|
local.tee 0
|
|
i32.const 0
|
|
i32.store offset=12
|
|
local.get 0
|
|
i32.const 0
|
|
i32.store offset=12
|
|
block ;; label = @1
|
|
local.get 0
|
|
i32.load offset=12
|
|
i32.const 255
|
|
i32.gt_s
|
|
br_if 0 (;@1;)
|
|
loop ;; label = @2
|
|
local.get 0
|
|
i32.load offset=12
|
|
local.set 1
|
|
local.get 0
|
|
i32.load offset=12
|
|
i32.const 1824
|
|
i32.add
|
|
local.get 1
|
|
i32.const 1280
|
|
i32.add
|
|
i32.load8_u
|
|
i32.store8
|
|
local.get 0
|
|
local.get 0
|
|
i32.load offset=12
|
|
i32.const 1
|
|
i32.add
|
|
i32.store offset=12
|
|
local.get 0
|
|
i32.load offset=12
|
|
i32.const 256
|
|
i32.lt_s
|
|
br_if 0 (;@2;)
|
|
end
|
|
end)
|
|
(func $bitcount_ntbl_bitcnt (type 3) (param i32) (result i32)
|
|
(local i32 i32 i32)
|
|
local.get 0
|
|
i32.const 15
|
|
i32.and
|
|
i32.const 1824
|
|
i32.add
|
|
i32.load8_s
|
|
local.set 1
|
|
i32.const 0
|
|
local.set 2
|
|
block ;; label = @1
|
|
local.get 0
|
|
i32.const 16
|
|
i32.lt_u
|
|
br_if 0 (;@1;)
|
|
i32.const 0
|
|
local.set 2
|
|
loop ;; label = @2
|
|
local.get 1
|
|
local.get 2
|
|
i32.add
|
|
local.set 2
|
|
local.get 0
|
|
i32.const 255
|
|
i32.gt_u
|
|
local.set 3
|
|
local.get 0
|
|
i32.const 4
|
|
i32.shr_u
|
|
local.tee 0
|
|
i32.const 15
|
|
i32.and
|
|
i32.const 1824
|
|
i32.add
|
|
i32.load8_s
|
|
local.set 1
|
|
local.get 3
|
|
br_if 0 (;@2;)
|
|
end
|
|
end
|
|
local.get 1
|
|
local.get 2
|
|
i32.add)
|
|
(func $bitcount_btbl_bitcnt (type 3) (param i32) (result i32)
|
|
(local i32 i32 i32)
|
|
local.get 0
|
|
i32.const 255
|
|
i32.and
|
|
i32.const 1824
|
|
i32.add
|
|
i32.load8_s
|
|
local.set 1
|
|
i32.const 0
|
|
local.set 2
|
|
block ;; label = @1
|
|
local.get 0
|
|
i32.const 256
|
|
i32.lt_u
|
|
br_if 0 (;@1;)
|
|
i32.const 0
|
|
local.set 2
|
|
loop ;; label = @2
|
|
local.get 1
|
|
local.get 2
|
|
i32.add
|
|
local.set 2
|
|
local.get 0
|
|
i32.const 65535
|
|
i32.gt_u
|
|
local.set 3
|
|
local.get 0
|
|
i32.const 8
|
|
i32.shr_u
|
|
local.tee 0
|
|
i32.const 255
|
|
i32.and
|
|
i32.const 1824
|
|
i32.add
|
|
i32.load8_s
|
|
local.set 1
|
|
local.get 3
|
|
br_if 0 (;@2;)
|
|
end
|
|
end
|
|
local.get 1
|
|
local.get 2
|
|
i32.add)
|
|
(table (;0;) 1 1 funcref)
|
|
(memory (;0;) 1)
|
|
(global $__stack_pointer (mut i32) (i32.const 6176))
|
|
(global (;1;) i32 (i32.const 2080))
|
|
(global (;2;) i32 (i32.const 6176))
|
|
(export "memory" (memory 0))
|
|
(export "__wasm_apply_data_relocs" (func $__wasm_apply_data_relocs))
|
|
(export "entrypoint" (func $bitcount_main))
|
|
(export "main" (func $__original_main))
|
|
(export "__data_end" (global 1))
|
|
(export "__heap_base" (global 2))
|
|
(data $.rodata (i32.const 1024) "\00\01\01\02\01\02\02\03\01\02\02\03\02\03\03\04\01\02\02\03\02\03\03\04\02\03\03\04\03\04\04\05\01\02\02\03\02\03\03\04\02\03\03\04\03\04\04\05\02\03\03\04\03\04\04\05\03\04\04\05\04\05\05\06\01\02\02\03\02\03\03\04\02\03\03\04\03\04\04\05\02\03\03\04\03\04\04\05\03\04\04\05\04\05\05\06\02\03\03\04\03\04\04\05\03\04\04\05\04\05\05\06\03\04\04\05\04\05\05\06\04\05\05\06\05\06\06\07\01\02\02\03\02\03\03\04\02\03\03\04\03\04\04\05\02\03\03\04\03\04\04\05\03\04\04\05\04\05\05\06\02\03\03\04\03\04\04\05\03\04\04\05\04\05\05\06\03\04\04\05\04\05\05\06\04\05\05\06\05\06\06\07\02\03\03\04\03\04\04\05\03\04\04\05\04\05\05\06\03\04\04\05\04\05\05\06\04\05\05\06\05\06\06\07\03\04\04\05\04\05\05\06\04\05\05\06\05\06\06\07\04\05\05\06\05\06\06\07\05\06\06\07\06\07\07\08\00\01\01\02\01\02\02\03\01\02\02\03\02\03\03\04\01\02\02\03\02\03\03\04\02\03\03\04\03\04\04\05\01\02\02\03\02\03\03\04\02\03\03\04\03\04\04\05\02\03\03\04\03\04\04\05\03\04\04\05\04\05\05\06\01\02\02\03\02\03\03\04\02\03\03\04\03\04\04\05\02\03\03\04\03\04\04\05\03\04\04\05\04\05\05\06\02\03\03\04\03\04\04\05\03\04\04\05\04\05\05\06\03\04\04\05\04\05\05\06\04\05\05\06\05\06\06\07\01\02\02\03\02\03\03\04\02\03\03\04\03\04\04\05\02\03\03\04\03\04\04\05\03\04\04\05\04\05\05\06\02\03\03\04\03\04\04\05\03\04\04\05\04\05\05\06\03\04\04\05\04\05\05\06\04\05\05\06\05\06\06\07\02\03\03\04\03\04\04\05\03\04\04\05\04\05\05\06\03\04\04\05\04\05\05\06\04\05\05\06\05\06\06\07\03\04\04\05\04\05\05\06\04\05\05\06\05\06\06\07\04\05\05\06\05\06\06\07\05\06\06\07\06\07\07\08"))
|