wasmtime 37.0.2 → 38.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Cargo.lock +82 -107
- data/ext/Cargo.toml +5 -5
- data/ext/cargo-vendor/cap-primitives-3.4.5/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/cap-primitives-3.4.5/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/cap-primitives-3.4.5/Cargo.lock +340 -0
- data/ext/cargo-vendor/cap-primitives-3.4.5/Cargo.toml +96 -0
- data/ext/cargo-vendor/cap-primitives-3.4.5/Cargo.toml.orig +47 -0
- data/ext/cargo-vendor/cap-primitives-3.4.5/src/fs/via_parent/open_parent.rs +126 -0
- data/ext/cargo-vendor/cap-primitives-3.4.5/src/rustix/linux/fs/stat_impl.rs +56 -0
- data/ext/cargo-vendor/cap-std-3.4.5/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/cap-std-3.4.5/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/cap-std-3.4.5/Cargo.lock +313 -0
- data/ext/cargo-vendor/cap-std-3.4.5/Cargo.toml +77 -0
- data/ext/cargo-vendor/cap-std-3.4.5/Cargo.toml.orig +32 -0
- data/ext/cargo-vendor/cap-std-3.4.5/src/net/tcp_listener.rs +248 -0
- data/ext/cargo-vendor/cap-std-3.4.5/src/os/unix/net/unix_listener.rs +156 -0
- data/ext/cargo-vendor/cranelift-assembler-x64-0.125.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/cranelift-assembler-x64-0.125.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/cranelift-assembler-x64-0.125.4/Cargo.lock +133 -0
- data/ext/cargo-vendor/cranelift-assembler-x64-0.125.4/Cargo.toml +98 -0
- data/ext/cargo-vendor/cranelift-assembler-x64-0.125.4/Cargo.toml.orig +25 -0
- data/ext/cargo-vendor/cranelift-assembler-x64-0.125.4/src/rex.rs +236 -0
- data/ext/cargo-vendor/cranelift-assembler-x64-meta-0.125.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/cranelift-assembler-x64-meta-0.125.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/cranelift-assembler-x64-meta-0.125.4/Cargo.lock +16 -0
- data/ext/cargo-vendor/cranelift-assembler-x64-meta-0.125.4/Cargo.toml +73 -0
- data/ext/cargo-vendor/cranelift-assembler-x64-meta-0.125.4/Cargo.toml.orig +13 -0
- data/ext/cargo-vendor/cranelift-assembler-x64-meta-0.125.4/src/generate/inst.rs +322 -0
- data/ext/cargo-vendor/cranelift-assembler-x64-meta-0.125.4/src/generate.rs +110 -0
- data/ext/cargo-vendor/cranelift-bforest-0.125.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/cranelift-bforest-0.125.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/cranelift-bforest-0.125.4/Cargo.lock +25 -0
- data/ext/cargo-vendor/cranelift-bforest-0.125.4/Cargo.toml +79 -0
- data/ext/cargo-vendor/cranelift-bforest-0.125.4/Cargo.toml.orig +19 -0
- data/ext/cargo-vendor/cranelift-bitset-0.125.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/cranelift-bitset-0.125.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/cranelift-bitset-0.125.4/Cargo.lock +73 -0
- data/ext/cargo-vendor/cranelift-bitset-0.125.4/Cargo.toml +94 -0
- data/ext/cargo-vendor/cranelift-bitset-0.125.4/Cargo.toml.orig +22 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/Cargo.lock +1352 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/Cargo.toml +252 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/Cargo.toml.orig +130 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/inline.rs +1546 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/ir/instructions.rs +1540 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/isa/aarch64/abi.rs +1619 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/isa/aarch64/inst/args.rs +726 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/isa/aarch64/inst/emit.rs +3678 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/isa/aarch64/inst/mod.rs +3106 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/isa/aarch64/inst.isle +5205 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/isa/aarch64/lower.isle +3273 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/isa/call_conv.rs +145 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/isa/pulley_shared/inst/emit.rs +699 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/isa/pulley_shared/inst/mod.rs +936 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/isa/pulley_shared/inst.isle +794 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/isa/pulley_shared/lower.isle +1838 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/isa/riscv64/inst/emit.rs +2877 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/isa/riscv64/inst/mod.rs +1933 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/isa/riscv64/inst.isle +3264 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/isa/riscv64/lower.isle +3140 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/isa/riscv64/mod.rs +300 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/isa/s390x/abi.rs +1526 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/isa/s390x/inst/emit.rs +3551 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/isa/s390x/inst/mod.rs +3542 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/isa/s390x/inst.isle +4946 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/isa/s390x/lower.isle +4075 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/isa/x64/abi.rs +1336 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/isa/x64/inst/args.rs +1063 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/isa/x64/inst/emit.rs +2188 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/isa/x64/inst/mod.rs +1662 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/isa/x64/inst.isle +4099 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/isa/x64/lower/isle.rs +1250 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/isa/x64/lower.isle +5061 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/isa/x64/mod.rs +272 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/isa/x64/pcc.rs +324 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/lib.rs +123 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/machinst/abi.rs +2572 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/machinst/blockorder.rs +485 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/machinst/isle.rs +839 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/machinst/lower.rs +1777 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/opts/arithmetic.isle +343 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/opts/bitops.isle +231 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/opts/icmp.isle +304 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/opts/selects.isle +104 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/opts/shifts.isle +314 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/prelude_lower.isle +1204 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/settings.rs +568 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/verifier/mod.rs +2258 -0
- data/ext/cargo-vendor/cranelift-codegen-0.125.4/src/write.rs +724 -0
- data/ext/cargo-vendor/cranelift-codegen-meta-0.125.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/cranelift-codegen-meta-0.125.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/cranelift-codegen-meta-0.125.4/Cargo.lock +110 -0
- data/ext/cargo-vendor/cranelift-codegen-meta-0.125.4/Cargo.toml +90 -0
- data/ext/cargo-vendor/cranelift-codegen-meta-0.125.4/Cargo.toml.orig +26 -0
- data/ext/cargo-vendor/cranelift-codegen-meta-0.125.4/src/cdsl/formats.rs +158 -0
- data/ext/cargo-vendor/cranelift-codegen-meta-0.125.4/src/cdsl/instructions.rs +504 -0
- data/ext/cargo-vendor/cranelift-codegen-meta-0.125.4/src/cdsl/mod.rs +61 -0
- data/ext/cargo-vendor/cranelift-codegen-meta-0.125.4/src/cdsl/operands.rs +173 -0
- data/ext/cargo-vendor/cranelift-codegen-meta-0.125.4/src/cdsl/settings.rs +336 -0
- data/ext/cargo-vendor/cranelift-codegen-meta-0.125.4/src/gen_asm.rs +740 -0
- data/ext/cargo-vendor/cranelift-codegen-meta-0.125.4/src/gen_inst.rs +1387 -0
- data/ext/cargo-vendor/cranelift-codegen-meta-0.125.4/src/gen_isle.rs +1226 -0
- data/ext/cargo-vendor/cranelift-codegen-meta-0.125.4/src/gen_settings.rs +423 -0
- data/ext/cargo-vendor/cranelift-codegen-meta-0.125.4/src/isa/riscv64.rs +190 -0
- data/ext/cargo-vendor/cranelift-codegen-meta-0.125.4/src/isa/x86.rs +428 -0
- data/ext/cargo-vendor/cranelift-codegen-meta-0.125.4/src/shared/entities.rs +142 -0
- data/ext/cargo-vendor/cranelift-codegen-meta-0.125.4/src/shared/formats.rs +230 -0
- data/ext/cargo-vendor/cranelift-codegen-meta-0.125.4/src/shared/instructions.rs +3905 -0
- data/ext/cargo-vendor/cranelift-codegen-meta-0.125.4/src/shared/settings.rs +376 -0
- data/ext/cargo-vendor/cranelift-codegen-shared-0.125.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/cranelift-codegen-shared-0.125.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/cranelift-codegen-shared-0.125.4/Cargo.lock +7 -0
- data/ext/cargo-vendor/cranelift-codegen-shared-0.125.4/Cargo.toml +34 -0
- data/ext/cargo-vendor/cranelift-codegen-shared-0.125.4/Cargo.toml.orig +14 -0
- data/ext/cargo-vendor/cranelift-control-0.125.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/cranelift-control-0.125.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/cranelift-control-0.125.4/Cargo.lock +16 -0
- data/ext/cargo-vendor/cranelift-control-0.125.4/Cargo.toml +45 -0
- data/ext/cargo-vendor/cranelift-control-0.125.4/Cargo.toml.orig +25 -0
- data/ext/cargo-vendor/cranelift-entity-0.125.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/cranelift-entity-0.125.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/cranelift-entity-0.125.4/Cargo.lock +77 -0
- data/ext/cargo-vendor/cranelift-entity-0.125.4/Cargo.toml +95 -0
- data/ext/cargo-vendor/cranelift-entity-0.125.4/Cargo.toml.orig +24 -0
- data/ext/cargo-vendor/cranelift-entity-0.125.4/src/primary.rs +570 -0
- data/ext/cargo-vendor/cranelift-frontend-0.125.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/cranelift-frontend-0.125.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/cranelift-frontend-0.125.4/Cargo.lock +531 -0
- data/ext/cargo-vendor/cranelift-frontend-0.125.4/Cargo.toml +117 -0
- data/ext/cargo-vendor/cranelift-frontend-0.125.4/Cargo.toml.orig +32 -0
- data/ext/cargo-vendor/cranelift-frontend-0.125.4/src/frontend.rs +2030 -0
- data/ext/cargo-vendor/cranelift-isle-0.125.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/cranelift-isle-0.125.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/cranelift-isle-0.125.4/Cargo.lock +322 -0
- data/ext/cargo-vendor/cranelift-isle-0.125.4/Cargo.toml +89 -0
- data/ext/cargo-vendor/cranelift-isle-0.125.4/Cargo.toml.orig +26 -0
- data/ext/cargo-vendor/cranelift-native-0.125.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/cranelift-native-0.125.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/cranelift-native-0.125.4/Cargo.lock +305 -0
- data/ext/cargo-vendor/cranelift-native-0.125.4/Cargo.toml +54 -0
- data/ext/cargo-vendor/cranelift-native-0.125.4/Cargo.toml.orig +24 -0
- data/ext/cargo-vendor/cranelift-srcgen-0.125.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/cranelift-srcgen-0.125.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/cranelift-srcgen-0.125.4/Cargo.lock +7 -0
- data/ext/cargo-vendor/cranelift-srcgen-0.125.4/Cargo.toml +70 -0
- data/ext/cargo-vendor/cranelift-srcgen-0.125.4/Cargo.toml.orig +14 -0
- data/ext/cargo-vendor/deterministic-wasi-ctx-3.0.3/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/deterministic-wasi-ctx-3.0.3/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/deterministic-wasi-ctx-3.0.3/Cargo.lock +2181 -0
- data/ext/cargo-vendor/deterministic-wasi-ctx-3.0.3/Cargo.toml +79 -0
- data/ext/cargo-vendor/deterministic-wasi-ctx-3.0.3/Cargo.toml.orig +27 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/Cargo.lock +138 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/Cargo.toml +56 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/Cargo.toml.orig +21 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/README.md +31 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/src/category.rs +86 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/src/category_color.rs +41 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/src/counters.rs +156 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/src/cpu_delta.rs +60 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/src/fast_hash_map.rs +3 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/src/frame.rs +75 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/src/frame_table.rs +146 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/src/func_table.rs +110 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/src/global_lib_table.rs +119 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/src/lib.rs +81 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/src/lib_mappings.rs +161 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/src/library_info.rs +121 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/src/marker_table.rs +251 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/src/markers.rs +831 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/src/native_symbols.rs +71 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/src/process.rs +121 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/src/profile.rs +1169 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/src/reference_timestamp.rs +44 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/src/resource_table.rs +62 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/src/sample_table.rs +335 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/src/serialization_helpers.rs +41 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/src/stack_table.rs +79 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/src/string_table.rs +66 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/src/thread.rs +263 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/src/thread_string_table.rs +50 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/src/timestamp.rs +68 -0
- data/ext/cargo-vendor/fxprof-processed-profile-0.8.1/tests/integration_tests/main.rs +1540 -0
- data/ext/cargo-vendor/pulley-interpreter-38.0.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/pulley-interpreter-38.0.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/pulley-interpreter-38.0.4/Cargo.lock +426 -0
- data/ext/cargo-vendor/pulley-interpreter-38.0.4/Cargo.toml +144 -0
- data/ext/cargo-vendor/pulley-interpreter-38.0.4/src/lib.rs +1423 -0
- data/ext/cargo-vendor/pulley-macros-38.0.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/pulley-macros-38.0.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/pulley-macros-38.0.4/Cargo.lock +47 -0
- data/ext/cargo-vendor/pulley-macros-38.0.4/Cargo.toml +42 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/Cargo.lock +2231 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/Cargo.toml +552 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/Cargo.toml.orig +410 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/build.rs +100 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/compile.rs +1052 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/config.rs +3776 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/engine/serialization.rs +801 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/engine.rs +963 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/lib.rs +440 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/component/component.rs +913 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/component/concurrent/futures_and_streams.rs +4326 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/component/concurrent.rs +4687 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/component/func/host.rs +957 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/component/func/typed.rs +2888 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/component/func.rs +977 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/component/instance.rs +1030 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/component/mod.rs +758 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/coredump.rs +356 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/func.rs +2666 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/instantiate.rs +285 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/memory.rs +1118 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/module.rs +1231 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/profiling.rs +350 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/store.rs +2785 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/trampoline/memory.rs +275 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/trampoline/table.rs +51 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/trampoline/tag.rs +55 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/trap.rs +634 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/vm/component/libcalls.rs +1363 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/vm/component.rs +1042 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/vm/helpers.c +50 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/vm/instance.rs +1864 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/vm/interpreter.rs +506 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/vm/interpreter_disabled.rs +63 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/vm/stack_switching/stack/unix/x86_64.rs +86 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/vm/stack_switching/stack/unix.rs +350 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/vm/stack_switching.rs +691 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/vm/sys/custom/capi.rs +185 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/vm/sys/custom/traphandlers.rs +46 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/vm/sys/miri/traphandlers.rs +6 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/vm/sys/unix/machports.rs +513 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/vm/sys/unix/signals.rs +558 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/vm/sys/unix/traphandlers.rs +59 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/vm/sys/windows/traphandlers.rs +11 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/vm/sys/windows/vectored_exceptions.rs +289 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/vm/throw.rs +128 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/vm/traphandlers.rs +1369 -0
- data/ext/cargo-vendor/wasmtime-38.0.4/src/runtime/vm/vmcontext.rs +1727 -0
- data/ext/cargo-vendor/wasmtime-environ-38.0.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/wasmtime-environ-38.0.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/wasmtime-environ-38.0.4/Cargo.lock +681 -0
- data/ext/cargo-vendor/wasmtime-environ-38.0.4/Cargo.toml +241 -0
- data/ext/cargo-vendor/wasmtime-environ-38.0.4/Cargo.toml.orig +82 -0
- data/ext/cargo-vendor/wasmtime-environ-38.0.4/src/address_map.rs +138 -0
- data/ext/cargo-vendor/wasmtime-environ-38.0.4/src/builtin.rs +458 -0
- data/ext/cargo-vendor/wasmtime-environ-38.0.4/src/compile/mod.rs +487 -0
- data/ext/cargo-vendor/wasmtime-environ-38.0.4/src/compile/module_artifacts.rs +310 -0
- data/ext/cargo-vendor/wasmtime-environ-38.0.4/src/compile/module_environ.rs +1313 -0
- data/ext/cargo-vendor/wasmtime-environ-38.0.4/src/component/artifacts.rs +30 -0
- data/ext/cargo-vendor/wasmtime-environ-38.0.4/src/component/compiler.rs +22 -0
- data/ext/cargo-vendor/wasmtime-environ-38.0.4/src/component/dfg.rs +1235 -0
- data/ext/cargo-vendor/wasmtime-environ-38.0.4/src/component/info.rs +1186 -0
- data/ext/cargo-vendor/wasmtime-environ-38.0.4/src/component/translate/inline.rs +1867 -0
- data/ext/cargo-vendor/wasmtime-environ-38.0.4/src/component.rs +213 -0
- data/ext/cargo-vendor/wasmtime-environ-38.0.4/src/hostcall.rs +83 -0
- data/ext/cargo-vendor/wasmtime-environ-38.0.4/src/key.rs +452 -0
- data/ext/cargo-vendor/wasmtime-environ-38.0.4/src/lib.rs +82 -0
- data/ext/cargo-vendor/wasmtime-environ-38.0.4/src/module.rs +796 -0
- data/ext/cargo-vendor/wasmtime-environ-38.0.4/src/module_artifacts.rs +812 -0
- data/ext/cargo-vendor/wasmtime-environ-38.0.4/src/trap_encoding.rs +251 -0
- data/ext/cargo-vendor/wasmtime-environ-38.0.4/src/vmoffsets.rs +1177 -0
- data/ext/cargo-vendor/wasmtime-internal-cache-38.0.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/wasmtime-internal-cache-38.0.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/wasmtime-internal-cache-38.0.4/Cargo.lock +840 -0
- data/ext/cargo-vendor/wasmtime-internal-cache-38.0.4/Cargo.toml +128 -0
- data/ext/cargo-vendor/wasmtime-internal-component-macro-38.0.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/wasmtime-internal-component-macro-38.0.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/wasmtime-internal-component-macro-38.0.4/Cargo.lock +285 -0
- data/ext/cargo-vendor/wasmtime-internal-component-macro-38.0.4/Cargo.toml +146 -0
- data/ext/cargo-vendor/wasmtime-internal-component-macro-38.0.4/tests/codegen.rs +787 -0
- data/ext/cargo-vendor/wasmtime-internal-component-macro-38.0.4/tests/expanded/path1_async.rs +206 -0
- data/ext/cargo-vendor/wasmtime-internal-component-macro-38.0.4/tests/expanded/path1_concurrent.rs +206 -0
- data/ext/cargo-vendor/wasmtime-internal-component-macro-38.0.4/tests/expanded/path1_tracing_async.rs +206 -0
- data/ext/cargo-vendor/wasmtime-internal-component-macro-38.0.4/tests/expanded/path2_async.rs +206 -0
- data/ext/cargo-vendor/wasmtime-internal-component-macro-38.0.4/tests/expanded/path2_concurrent.rs +206 -0
- data/ext/cargo-vendor/wasmtime-internal-component-macro-38.0.4/tests/expanded/path2_tracing_async.rs +206 -0
- data/ext/cargo-vendor/wasmtime-internal-component-macro-38.0.4/tests/expanded/worlds-with-types_async.rs +272 -0
- data/ext/cargo-vendor/wasmtime-internal-component-macro-38.0.4/tests/expanded/worlds-with-types_concurrent.rs +272 -0
- data/ext/cargo-vendor/wasmtime-internal-component-macro-38.0.4/tests/expanded/worlds-with-types_tracing_async.rs +280 -0
- data/ext/cargo-vendor/wasmtime-internal-component-util-38.0.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/wasmtime-internal-component-util-38.0.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/wasmtime-internal-component-util-38.0.4/Cargo.lock +7 -0
- data/ext/cargo-vendor/wasmtime-internal-component-util-38.0.4/Cargo.toml +38 -0
- data/ext/cargo-vendor/wasmtime-internal-cranelift-38.0.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/wasmtime-internal-cranelift-38.0.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/wasmtime-internal-cranelift-38.0.4/Cargo.lock +711 -0
- data/ext/cargo-vendor/wasmtime-internal-cranelift-38.0.4/Cargo.toml +187 -0
- data/ext/cargo-vendor/wasmtime-internal-cranelift-38.0.4/src/compiler/component.rs +1721 -0
- data/ext/cargo-vendor/wasmtime-internal-cranelift-38.0.4/src/compiler.rs +1541 -0
- data/ext/cargo-vendor/wasmtime-internal-cranelift-38.0.4/src/func_environ/stack_switching/instructions.rs +1917 -0
- data/ext/cargo-vendor/wasmtime-internal-cranelift-38.0.4/src/func_environ.rs +4313 -0
- data/ext/cargo-vendor/wasmtime-internal-cranelift-38.0.4/src/lib.rs +449 -0
- data/ext/cargo-vendor/wasmtime-internal-fiber-38.0.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/wasmtime-internal-fiber-38.0.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/wasmtime-internal-fiber-38.0.4/Cargo.lock +343 -0
- data/ext/cargo-vendor/wasmtime-internal-fiber-38.0.4/Cargo.toml +107 -0
- data/ext/cargo-vendor/wasmtime-internal-fiber-38.0.4/Cargo.toml.orig +41 -0
- data/ext/cargo-vendor/wasmtime-internal-fiber-38.0.4/build.rs +35 -0
- data/ext/cargo-vendor/wasmtime-internal-fiber-38.0.4/src/lib.rs +431 -0
- data/ext/cargo-vendor/wasmtime-internal-fiber-38.0.4/src/stackswitch/aarch64.rs +189 -0
- data/ext/cargo-vendor/wasmtime-internal-fiber-38.0.4/src/stackswitch/arm.rs +95 -0
- data/ext/cargo-vendor/wasmtime-internal-fiber-38.0.4/src/stackswitch/riscv64.rs +166 -0
- data/ext/cargo-vendor/wasmtime-internal-fiber-38.0.4/src/stackswitch/s390x.rs +117 -0
- data/ext/cargo-vendor/wasmtime-internal-fiber-38.0.4/src/stackswitch/x86.rs +118 -0
- data/ext/cargo-vendor/wasmtime-internal-fiber-38.0.4/src/stackswitch/x86_64.rs +168 -0
- data/ext/cargo-vendor/wasmtime-internal-fiber-38.0.4/src/stackswitch.rs +73 -0
- data/ext/cargo-vendor/wasmtime-internal-jit-debug-38.0.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/wasmtime-internal-jit-debug-38.0.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/wasmtime-internal-jit-debug-38.0.4/Cargo.lock +203 -0
- data/ext/cargo-vendor/wasmtime-internal-jit-debug-38.0.4/Cargo.toml +110 -0
- data/ext/cargo-vendor/wasmtime-internal-jit-icache-coherence-38.0.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/wasmtime-internal-jit-icache-coherence-38.0.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/wasmtime-internal-jit-icache-coherence-38.0.4/Cargo.lock +104 -0
- data/ext/cargo-vendor/wasmtime-internal-jit-icache-coherence-38.0.4/Cargo.toml +91 -0
- data/ext/cargo-vendor/wasmtime-internal-math-38.0.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/wasmtime-internal-math-38.0.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/wasmtime-internal-math-38.0.4/Cargo.lock +16 -0
- data/ext/cargo-vendor/wasmtime-internal-math-38.0.4/Cargo.toml +78 -0
- data/ext/cargo-vendor/wasmtime-internal-slab-38.0.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/wasmtime-internal-slab-38.0.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/wasmtime-internal-slab-38.0.4/Cargo.lock +7 -0
- data/ext/cargo-vendor/wasmtime-internal-slab-38.0.4/Cargo.toml +70 -0
- data/ext/cargo-vendor/wasmtime-internal-unwinder-38.0.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/wasmtime-internal-unwinder-38.0.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/wasmtime-internal-unwinder-38.0.4/Cargo.lock +328 -0
- data/ext/cargo-vendor/wasmtime-internal-unwinder-38.0.4/Cargo.toml +106 -0
- data/ext/cargo-vendor/wasmtime-internal-unwinder-38.0.4/src/stackwalk.rs +261 -0
- data/ext/cargo-vendor/wasmtime-internal-versioned-export-macros-38.0.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/wasmtime-internal-versioned-export-macros-38.0.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/wasmtime-internal-versioned-export-macros-38.0.4/Cargo.lock +47 -0
- data/ext/cargo-vendor/wasmtime-internal-versioned-export-macros-38.0.4/Cargo.toml +43 -0
- data/ext/cargo-vendor/wasmtime-internal-winch-38.0.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/wasmtime-internal-winch-38.0.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/wasmtime-internal-winch-38.0.4/Cargo.lock +649 -0
- data/ext/cargo-vendor/wasmtime-internal-winch-38.0.4/Cargo.toml +132 -0
- data/ext/cargo-vendor/wasmtime-internal-winch-38.0.4/src/compiler.rs +401 -0
- data/ext/cargo-vendor/wasmtime-internal-wit-bindgen-38.0.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/wasmtime-internal-wit-bindgen-38.0.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/wasmtime-internal-wit-bindgen-38.0.4/Cargo.lock +193 -0
- data/ext/cargo-vendor/wasmtime-internal-wit-bindgen-38.0.4/Cargo.toml +90 -0
- data/ext/cargo-vendor/wasmtime-internal-wit-bindgen-38.0.4/src/config.rs +164 -0
- data/ext/cargo-vendor/wasmtime-internal-wit-bindgen-38.0.4/src/lib.rs +3530 -0
- data/ext/cargo-vendor/wasmtime-wasi-38.0.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/wasmtime-wasi-38.0.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/wasmtime-wasi-38.0.4/Cargo.lock +2501 -0
- data/ext/cargo-vendor/wasmtime-wasi-38.0.4/Cargo.toml +262 -0
- data/ext/cargo-vendor/wasmtime-wasi-38.0.4/src/lib.rs +48 -0
- data/ext/cargo-vendor/wasmtime-wasi-38.0.4/src/sockets/tcp.rs +819 -0
- data/ext/cargo-vendor/wasmtime-wasi-38.0.4/src/view.rs +95 -0
- data/ext/cargo-vendor/wasmtime-wasi-38.0.4/tests/all/p3/mod.rs +154 -0
- data/ext/cargo-vendor/wasmtime-wasi-38.0.4/tests/all/store.rs +86 -0
- data/ext/cargo-vendor/wasmtime-wasi-io-38.0.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/wasmtime-wasi-io-38.0.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/wasmtime-wasi-io-38.0.4/Cargo.lock +1200 -0
- data/ext/cargo-vendor/wasmtime-wasi-io-38.0.4/Cargo.toml +105 -0
- data/ext/cargo-vendor/wiggle-38.0.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/wiggle-38.0.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/wiggle-38.0.4/Cargo.lock +1157 -0
- data/ext/cargo-vendor/wiggle-38.0.4/Cargo.toml +139 -0
- data/ext/cargo-vendor/wiggle-generate-38.0.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/wiggle-generate-38.0.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/wiggle-generate-38.0.4/Cargo.lock +115 -0
- data/ext/cargo-vendor/wiggle-generate-38.0.4/Cargo.toml +102 -0
- data/ext/cargo-vendor/wiggle-macro-38.0.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/wiggle-macro-38.0.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/wiggle-macro-38.0.4/Cargo.lock +127 -0
- data/ext/cargo-vendor/wiggle-macro-38.0.4/Cargo.toml +98 -0
- data/ext/cargo-vendor/winch-codegen-38.0.4/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/winch-codegen-38.0.4/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/winch-codegen-38.0.4/Cargo.lock +620 -0
- data/ext/cargo-vendor/winch-codegen-38.0.4/Cargo.toml +133 -0
- data/ext/cargo-vendor/winch-codegen-38.0.4/src/codegen/env.rs +415 -0
- data/lib/wasmtime/version.rb +1 -1
- metadata +1627 -1652
- data/ext/cargo-vendor/byteorder-1.5.0/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/byteorder-1.5.0/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/byteorder-1.5.0/.github/workflows/ci.yml +0 -183
- data/ext/cargo-vendor/byteorder-1.5.0/CHANGELOG.md +0 -143
- data/ext/cargo-vendor/byteorder-1.5.0/COPYING +0 -3
- data/ext/cargo-vendor/byteorder-1.5.0/Cargo.toml +0 -54
- data/ext/cargo-vendor/byteorder-1.5.0/Cargo.toml.orig +0 -34
- data/ext/cargo-vendor/byteorder-1.5.0/LICENSE-MIT +0 -21
- data/ext/cargo-vendor/byteorder-1.5.0/README.md +0 -77
- data/ext/cargo-vendor/byteorder-1.5.0/UNLICENSE +0 -24
- data/ext/cargo-vendor/byteorder-1.5.0/benches/bench.rs +0 -326
- data/ext/cargo-vendor/byteorder-1.5.0/rustfmt.toml +0 -2
- data/ext/cargo-vendor/byteorder-1.5.0/src/io.rs +0 -1592
- data/ext/cargo-vendor/byteorder-1.5.0/src/lib.rs +0 -3975
- data/ext/cargo-vendor/cap-primitives-3.4.4/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/cap-primitives-3.4.4/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/cap-primitives-3.4.4/Cargo.lock +0 -260
- data/ext/cargo-vendor/cap-primitives-3.4.4/Cargo.toml +0 -96
- data/ext/cargo-vendor/cap-primitives-3.4.4/Cargo.toml.orig +0 -47
- data/ext/cargo-vendor/cap-primitives-3.4.4/src/fs/via_parent/open_parent.rs +0 -126
- data/ext/cargo-vendor/cap-primitives-3.4.4/src/rustix/linux/fs/stat_impl.rs +0 -55
- data/ext/cargo-vendor/cap-std-3.4.4/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/cap-std-3.4.4/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/cap-std-3.4.4/Cargo.lock +0 -233
- data/ext/cargo-vendor/cap-std-3.4.4/Cargo.toml +0 -77
- data/ext/cargo-vendor/cap-std-3.4.4/Cargo.toml.orig +0 -32
- data/ext/cargo-vendor/cap-std-3.4.4/src/net/tcp_listener.rs +0 -248
- data/ext/cargo-vendor/cap-std-3.4.4/src/os/unix/net/unix_listener.rs +0 -156
- data/ext/cargo-vendor/cranelift-assembler-x64-0.124.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/cranelift-assembler-x64-0.124.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/cranelift-assembler-x64-0.124.2/Cargo.lock +0 -133
- data/ext/cargo-vendor/cranelift-assembler-x64-0.124.2/Cargo.toml +0 -98
- data/ext/cargo-vendor/cranelift-assembler-x64-0.124.2/Cargo.toml.orig +0 -25
- data/ext/cargo-vendor/cranelift-assembler-x64-0.124.2/src/rex.rs +0 -236
- data/ext/cargo-vendor/cranelift-assembler-x64-meta-0.124.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/cranelift-assembler-x64-meta-0.124.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/cranelift-assembler-x64-meta-0.124.2/Cargo.lock +0 -16
- data/ext/cargo-vendor/cranelift-assembler-x64-meta-0.124.2/Cargo.toml +0 -73
- data/ext/cargo-vendor/cranelift-assembler-x64-meta-0.124.2/Cargo.toml.orig +0 -13
- data/ext/cargo-vendor/cranelift-assembler-x64-meta-0.124.2/src/generate/inst.rs +0 -307
- data/ext/cargo-vendor/cranelift-assembler-x64-meta-0.124.2/src/generate.rs +0 -150
- data/ext/cargo-vendor/cranelift-bforest-0.124.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/cranelift-bforest-0.124.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/cranelift-bforest-0.124.2/Cargo.lock +0 -25
- data/ext/cargo-vendor/cranelift-bforest-0.124.2/Cargo.toml +0 -79
- data/ext/cargo-vendor/cranelift-bforest-0.124.2/Cargo.toml.orig +0 -19
- data/ext/cargo-vendor/cranelift-bitset-0.124.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/cranelift-bitset-0.124.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/cranelift-bitset-0.124.2/Cargo.lock +0 -73
- data/ext/cargo-vendor/cranelift-bitset-0.124.2/Cargo.toml +0 -94
- data/ext/cargo-vendor/cranelift-bitset-0.124.2/Cargo.toml.orig +0 -22
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/Cargo.lock +0 -1352
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/Cargo.toml +0 -252
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/Cargo.toml.orig +0 -130
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/inline.rs +0 -1542
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/ir/instructions.rs +0 -1515
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/isa/aarch64/abi.rs +0 -1616
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/isa/aarch64/inst/args.rs +0 -711
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/isa/aarch64/inst/emit.rs +0 -3666
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/isa/aarch64/inst/mod.rs +0 -3098
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/isa/aarch64/inst.isle +0 -5184
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/isa/aarch64/lower.isle +0 -3240
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/isa/call_conv.rs +0 -145
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/isa/pulley_shared/inst/emit.rs +0 -693
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/isa/pulley_shared/inst/mod.rs +0 -927
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/isa/pulley_shared/inst.isle +0 -783
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/isa/pulley_shared/lower.isle +0 -1831
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/isa/riscv64/inst/emit.rs +0 -2856
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/isa/riscv64/inst/mod.rs +0 -1925
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/isa/riscv64/inst.isle +0 -3252
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/isa/riscv64/lower.isle +0 -3133
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/isa/riscv64/mod.rs +0 -294
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/isa/s390x/abi.rs +0 -1526
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/isa/s390x/inst/emit.rs +0 -3543
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/isa/s390x/inst/mod.rs +0 -3533
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/isa/s390x/inst.isle +0 -4934
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/isa/s390x/lower.isle +0 -4069
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/isa/x64/abi.rs +0 -1334
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/isa/x64/inst/args.rs +0 -1048
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/isa/x64/inst/emit.rs +0 -2183
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/isa/x64/inst/mod.rs +0 -1652
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/isa/x64/inst.isle +0 -4074
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/isa/x64/lower/isle.rs +0 -1245
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/isa/x64/lower.isle +0 -5055
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/isa/x64/mod.rs +0 -262
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/isa/x64/pcc.rs +0 -322
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/lib.rs +0 -123
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/machinst/abi.rs +0 -2567
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/machinst/blockorder.rs +0 -471
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/machinst/isle.rs +0 -815
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/machinst/lower.rs +0 -1763
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/opts/arithmetic.isle +0 -333
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/opts/bitops.isle +0 -204
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/opts/icmp.isle +0 -300
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/opts/selects.isle +0 -100
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/opts/shifts.isle +0 -307
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/prelude_lower.isle +0 -1196
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/settings.rs +0 -572
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/verifier/mod.rs +0 -2205
- data/ext/cargo-vendor/cranelift-codegen-0.124.2/src/write.rs +0 -723
- data/ext/cargo-vendor/cranelift-codegen-meta-0.124.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/cranelift-codegen-meta-0.124.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/cranelift-codegen-meta-0.124.2/Cargo.lock +0 -110
- data/ext/cargo-vendor/cranelift-codegen-meta-0.124.2/Cargo.toml +0 -90
- data/ext/cargo-vendor/cranelift-codegen-meta-0.124.2/Cargo.toml.orig +0 -26
- data/ext/cargo-vendor/cranelift-codegen-meta-0.124.2/src/cdsl/formats.rs +0 -144
- data/ext/cargo-vendor/cranelift-codegen-meta-0.124.2/src/cdsl/instructions.rs +0 -494
- data/ext/cargo-vendor/cranelift-codegen-meta-0.124.2/src/cdsl/mod.rs +0 -72
- data/ext/cargo-vendor/cranelift-codegen-meta-0.124.2/src/cdsl/operands.rs +0 -169
- data/ext/cargo-vendor/cranelift-codegen-meta-0.124.2/src/cdsl/settings.rs +0 -429
- data/ext/cargo-vendor/cranelift-codegen-meta-0.124.2/src/gen_asm.rs +0 -740
- data/ext/cargo-vendor/cranelift-codegen-meta-0.124.2/src/gen_inst.rs +0 -1311
- data/ext/cargo-vendor/cranelift-codegen-meta-0.124.2/src/gen_isle.rs +0 -1199
- data/ext/cargo-vendor/cranelift-codegen-meta-0.124.2/src/gen_settings.rs +0 -452
- data/ext/cargo-vendor/cranelift-codegen-meta-0.124.2/src/isa/riscv64.rs +0 -195
- data/ext/cargo-vendor/cranelift-codegen-meta-0.124.2/src/isa/x86.rs +0 -448
- data/ext/cargo-vendor/cranelift-codegen-meta-0.124.2/src/shared/entities.rs +0 -131
- data/ext/cargo-vendor/cranelift-codegen-meta-0.124.2/src/shared/formats.rs +0 -224
- data/ext/cargo-vendor/cranelift-codegen-meta-0.124.2/src/shared/instructions.rs +0 -3873
- data/ext/cargo-vendor/cranelift-codegen-meta-0.124.2/src/shared/settings.rs +0 -411
- data/ext/cargo-vendor/cranelift-codegen-shared-0.124.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/cranelift-codegen-shared-0.124.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/cranelift-codegen-shared-0.124.2/Cargo.lock +0 -7
- data/ext/cargo-vendor/cranelift-codegen-shared-0.124.2/Cargo.toml +0 -34
- data/ext/cargo-vendor/cranelift-codegen-shared-0.124.2/Cargo.toml.orig +0 -14
- data/ext/cargo-vendor/cranelift-control-0.124.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/cranelift-control-0.124.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/cranelift-control-0.124.2/Cargo.lock +0 -16
- data/ext/cargo-vendor/cranelift-control-0.124.2/Cargo.toml +0 -45
- data/ext/cargo-vendor/cranelift-control-0.124.2/Cargo.toml.orig +0 -25
- data/ext/cargo-vendor/cranelift-entity-0.124.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/cranelift-entity-0.124.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/cranelift-entity-0.124.2/Cargo.lock +0 -77
- data/ext/cargo-vendor/cranelift-entity-0.124.2/Cargo.toml +0 -95
- data/ext/cargo-vendor/cranelift-entity-0.124.2/Cargo.toml.orig +0 -24
- data/ext/cargo-vendor/cranelift-entity-0.124.2/src/primary.rs +0 -548
- data/ext/cargo-vendor/cranelift-frontend-0.124.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/cranelift-frontend-0.124.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/cranelift-frontend-0.124.2/Cargo.lock +0 -531
- data/ext/cargo-vendor/cranelift-frontend-0.124.2/Cargo.toml +0 -117
- data/ext/cargo-vendor/cranelift-frontend-0.124.2/Cargo.toml.orig +0 -32
- data/ext/cargo-vendor/cranelift-frontend-0.124.2/src/frontend.rs +0 -2028
- data/ext/cargo-vendor/cranelift-isle-0.124.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/cranelift-isle-0.124.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/cranelift-isle-0.124.2/Cargo.lock +0 -322
- data/ext/cargo-vendor/cranelift-isle-0.124.2/Cargo.toml +0 -89
- data/ext/cargo-vendor/cranelift-isle-0.124.2/Cargo.toml.orig +0 -26
- data/ext/cargo-vendor/cranelift-native-0.124.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/cranelift-native-0.124.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/cranelift-native-0.124.2/Cargo.lock +0 -305
- data/ext/cargo-vendor/cranelift-native-0.124.2/Cargo.toml +0 -54
- data/ext/cargo-vendor/cranelift-native-0.124.2/Cargo.toml.orig +0 -24
- data/ext/cargo-vendor/cranelift-srcgen-0.124.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/cranelift-srcgen-0.124.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/cranelift-srcgen-0.124.2/Cargo.lock +0 -7
- data/ext/cargo-vendor/cranelift-srcgen-0.124.2/Cargo.toml +0 -70
- data/ext/cargo-vendor/cranelift-srcgen-0.124.2/Cargo.toml.orig +0 -14
- data/ext/cargo-vendor/deterministic-wasi-ctx-3.0.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/deterministic-wasi-ctx-3.0.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/deterministic-wasi-ctx-3.0.2/Cargo.lock +0 -2192
- data/ext/cargo-vendor/deterministic-wasi-ctx-3.0.2/Cargo.toml +0 -79
- data/ext/cargo-vendor/deterministic-wasi-ctx-3.0.2/Cargo.toml.orig +0 -27
- data/ext/cargo-vendor/fxhash-0.2.1/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/fxhash-0.2.1/Cargo.toml +0 -38
- data/ext/cargo-vendor/fxhash-0.2.1/Cargo.toml.orig +0 -26
- data/ext/cargo-vendor/fxhash-0.2.1/README.md +0 -62
- data/ext/cargo-vendor/fxhash-0.2.1/bench.rs +0 -78
- data/ext/cargo-vendor/fxhash-0.2.1/lib.rs +0 -324
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/Cargo.toml +0 -41
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/Cargo.toml.orig +0 -20
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/README.md +0 -27
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/src/category.rs +0 -98
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/src/category_color.rs +0 -41
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/src/counters.rs +0 -130
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/src/cpu_delta.rs +0 -59
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/src/fast_hash_map.rs +0 -5
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/src/frame.rs +0 -54
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/src/frame_table.rs +0 -166
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/src/func_table.rs +0 -110
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/src/global_lib_table.rs +0 -76
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/src/lib.rs +0 -74
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/src/lib_mappings.rs +0 -140
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/src/library_info.rs +0 -120
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/src/marker_table.rs +0 -78
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/src/markers.rs +0 -224
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/src/native_symbols.rs +0 -73
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/src/process.rs +0 -117
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/src/profile.rs +0 -718
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/src/reference_timestamp.rs +0 -43
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/src/resource_table.rs +0 -63
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/src/sample_table.rs +0 -50
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/src/serialization_helpers.rs +0 -30
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/src/stack_table.rs +0 -80
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/src/string_table.rs +0 -66
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/src/thread.rs +0 -225
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/src/thread_string_table.rs +0 -50
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/src/timestamp.rs +0 -29
- data/ext/cargo-vendor/fxprof-processed-profile-0.6.0/tests/integration_tests/main.rs +0 -1270
- data/ext/cargo-vendor/pulley-interpreter-37.0.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/pulley-interpreter-37.0.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/pulley-interpreter-37.0.2/Cargo.lock +0 -426
- data/ext/cargo-vendor/pulley-interpreter-37.0.2/Cargo.toml +0 -144
- data/ext/cargo-vendor/pulley-interpreter-37.0.2/src/lib.rs +0 -1423
- data/ext/cargo-vendor/pulley-macros-37.0.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/pulley-macros-37.0.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/pulley-macros-37.0.2/Cargo.lock +0 -47
- data/ext/cargo-vendor/pulley-macros-37.0.2/Cargo.toml +0 -42
- data/ext/cargo-vendor/wasmtime-37.0.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/wasmtime-37.0.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/wasmtime-37.0.2/Cargo.lock +0 -2250
- data/ext/cargo-vendor/wasmtime-37.0.2/Cargo.toml +0 -558
- data/ext/cargo-vendor/wasmtime-37.0.2/Cargo.toml.orig +0 -412
- data/ext/cargo-vendor/wasmtime-37.0.2/build.rs +0 -99
- data/ext/cargo-vendor/wasmtime-37.0.2/src/compile.rs +0 -1271
- data/ext/cargo-vendor/wasmtime-37.0.2/src/config.rs +0 -3792
- data/ext/cargo-vendor/wasmtime-37.0.2/src/engine/serialization.rs +0 -801
- data/ext/cargo-vendor/wasmtime-37.0.2/src/engine.rs +0 -976
- data/ext/cargo-vendor/wasmtime-37.0.2/src/lib.rs +0 -440
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/component/component.rs +0 -898
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/component/concurrent/futures_and_streams.rs +0 -4239
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/component/concurrent.rs +0 -4585
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/component/func/host.rs +0 -957
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/component/func/typed.rs +0 -2888
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/component/func.rs +0 -972
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/component/instance.rs +0 -1024
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/component/mod.rs +0 -758
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/coredump.rs +0 -350
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/func.rs +0 -2680
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/instantiate.rs +0 -300
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/memory.rs +0 -1115
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/module.rs +0 -1224
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/profiling.rs +0 -338
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/store.rs +0 -2782
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/trampoline/memory.rs +0 -277
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/trampoline/table.rs +0 -50
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/trampoline/tag.rs +0 -54
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/trap.rs +0 -634
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/vm/component/libcalls.rs +0 -1257
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/vm/component.rs +0 -1022
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/vm/helpers.c +0 -121
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/vm/instance.rs +0 -1862
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/vm/interpreter.rs +0 -619
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/vm/interpreter_disabled.rs +0 -70
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/vm/stack_switching/stack/unix/x86_64.rs +0 -83
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/vm/stack_switching/stack/unix.rs +0 -353
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/vm/stack_switching.rs +0 -691
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/vm/sys/custom/capi.rs +0 -219
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/vm/sys/custom/traphandlers.rs +0 -69
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/vm/sys/miri/traphandlers.rs +0 -34
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/vm/sys/unix/machports.rs +0 -515
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/vm/sys/unix/signals.rs +0 -566
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/vm/sys/unix/traphandlers.rs +0 -79
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/vm/sys/windows/traphandlers.rs +0 -31
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/vm/sys/windows/vectored_exceptions.rs +0 -125
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/vm/throw.rs +0 -123
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/vm/traphandlers.rs +0 -1438
- data/ext/cargo-vendor/wasmtime-37.0.2/src/runtime/vm/vmcontext.rs +0 -1705
- data/ext/cargo-vendor/wasmtime-environ-37.0.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/wasmtime-environ-37.0.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/wasmtime-environ-37.0.2/Cargo.lock +0 -650
- data/ext/cargo-vendor/wasmtime-environ-37.0.2/Cargo.toml +0 -234
- data/ext/cargo-vendor/wasmtime-environ-37.0.2/Cargo.toml.orig +0 -80
- data/ext/cargo-vendor/wasmtime-environ-37.0.2/src/address_map.rs +0 -126
- data/ext/cargo-vendor/wasmtime-environ-37.0.2/src/builtin.rs +0 -451
- data/ext/cargo-vendor/wasmtime-environ-37.0.2/src/compile/key.rs +0 -221
- data/ext/cargo-vendor/wasmtime-environ-37.0.2/src/compile/mod.rs +0 -490
- data/ext/cargo-vendor/wasmtime-environ-37.0.2/src/compile/module_artifacts.rs +0 -318
- data/ext/cargo-vendor/wasmtime-environ-37.0.2/src/compile/module_environ.rs +0 -1312
- data/ext/cargo-vendor/wasmtime-environ-37.0.2/src/component/artifacts.rs +0 -68
- data/ext/cargo-vendor/wasmtime-environ-37.0.2/src/component/compiler.rs +0 -21
- data/ext/cargo-vendor/wasmtime-environ-37.0.2/src/component/dfg.rs +0 -1100
- data/ext/cargo-vendor/wasmtime-environ-37.0.2/src/component/info.rs +0 -1124
- data/ext/cargo-vendor/wasmtime-environ-37.0.2/src/component/translate/inline.rs +0 -1792
- data/ext/cargo-vendor/wasmtime-environ-37.0.2/src/component.rs +0 -213
- data/ext/cargo-vendor/wasmtime-environ-37.0.2/src/hostcall.rs +0 -82
- data/ext/cargo-vendor/wasmtime-environ-37.0.2/src/lib.rs +0 -80
- data/ext/cargo-vendor/wasmtime-environ-37.0.2/src/module.rs +0 -760
- data/ext/cargo-vendor/wasmtime-environ-37.0.2/src/module_artifacts.rs +0 -119
- data/ext/cargo-vendor/wasmtime-environ-37.0.2/src/trap_encoding.rs +0 -244
- data/ext/cargo-vendor/wasmtime-environ-37.0.2/src/vmoffsets.rs +0 -1167
- data/ext/cargo-vendor/wasmtime-internal-asm-macros-37.0.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/wasmtime-internal-asm-macros-37.0.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/wasmtime-internal-asm-macros-37.0.2/Cargo.lock +0 -16
- data/ext/cargo-vendor/wasmtime-internal-asm-macros-37.0.2/Cargo.toml +0 -35
- data/ext/cargo-vendor/wasmtime-internal-asm-macros-37.0.2/Cargo.toml.orig +0 -14
- data/ext/cargo-vendor/wasmtime-internal-asm-macros-37.0.2/src/lib.rs +0 -90
- data/ext/cargo-vendor/wasmtime-internal-cache-37.0.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/wasmtime-internal-cache-37.0.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/wasmtime-internal-cache-37.0.2/Cargo.lock +0 -840
- data/ext/cargo-vendor/wasmtime-internal-cache-37.0.2/Cargo.toml +0 -128
- data/ext/cargo-vendor/wasmtime-internal-component-macro-37.0.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/wasmtime-internal-component-macro-37.0.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/wasmtime-internal-component-macro-37.0.2/Cargo.lock +0 -285
- data/ext/cargo-vendor/wasmtime-internal-component-macro-37.0.2/Cargo.toml +0 -146
- data/ext/cargo-vendor/wasmtime-internal-component-macro-37.0.2/tests/codegen.rs +0 -731
- data/ext/cargo-vendor/wasmtime-internal-component-macro-37.0.2/tests/expanded/path1_async.rs +0 -206
- data/ext/cargo-vendor/wasmtime-internal-component-macro-37.0.2/tests/expanded/path1_concurrent.rs +0 -206
- data/ext/cargo-vendor/wasmtime-internal-component-macro-37.0.2/tests/expanded/path1_tracing_async.rs +0 -206
- data/ext/cargo-vendor/wasmtime-internal-component-macro-37.0.2/tests/expanded/path2_async.rs +0 -206
- data/ext/cargo-vendor/wasmtime-internal-component-macro-37.0.2/tests/expanded/path2_concurrent.rs +0 -206
- data/ext/cargo-vendor/wasmtime-internal-component-macro-37.0.2/tests/expanded/path2_tracing_async.rs +0 -206
- data/ext/cargo-vendor/wasmtime-internal-component-macro-37.0.2/tests/expanded/worlds-with-types_async.rs +0 -272
- data/ext/cargo-vendor/wasmtime-internal-component-macro-37.0.2/tests/expanded/worlds-with-types_concurrent.rs +0 -272
- data/ext/cargo-vendor/wasmtime-internal-component-macro-37.0.2/tests/expanded/worlds-with-types_tracing_async.rs +0 -280
- data/ext/cargo-vendor/wasmtime-internal-component-util-37.0.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/wasmtime-internal-component-util-37.0.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/wasmtime-internal-component-util-37.0.2/Cargo.lock +0 -7
- data/ext/cargo-vendor/wasmtime-internal-component-util-37.0.2/Cargo.toml +0 -38
- data/ext/cargo-vendor/wasmtime-internal-cranelift-37.0.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/wasmtime-internal-cranelift-37.0.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/wasmtime-internal-cranelift-37.0.2/Cargo.lock +0 -711
- data/ext/cargo-vendor/wasmtime-internal-cranelift-37.0.2/Cargo.toml +0 -187
- data/ext/cargo-vendor/wasmtime-internal-cranelift-37.0.2/src/compiler/component.rs +0 -1623
- data/ext/cargo-vendor/wasmtime-internal-cranelift-37.0.2/src/compiler.rs +0 -1476
- data/ext/cargo-vendor/wasmtime-internal-cranelift-37.0.2/src/func_environ/stack_switching/instructions.rs +0 -1917
- data/ext/cargo-vendor/wasmtime-internal-cranelift-37.0.2/src/func_environ.rs +0 -4313
- data/ext/cargo-vendor/wasmtime-internal-cranelift-37.0.2/src/lib.rs +0 -449
- data/ext/cargo-vendor/wasmtime-internal-fiber-37.0.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/wasmtime-internal-fiber-37.0.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/wasmtime-internal-fiber-37.0.2/Cargo.lock +0 -353
- data/ext/cargo-vendor/wasmtime-internal-fiber-37.0.2/Cargo.toml +0 -111
- data/ext/cargo-vendor/wasmtime-internal-fiber-37.0.2/Cargo.toml.orig +0 -42
- data/ext/cargo-vendor/wasmtime-internal-fiber-37.0.2/build.rs +0 -39
- data/ext/cargo-vendor/wasmtime-internal-fiber-37.0.2/src/lib.rs +0 -434
- data/ext/cargo-vendor/wasmtime-internal-fiber-37.0.2/src/stackswitch/aarch64.rs +0 -184
- data/ext/cargo-vendor/wasmtime-internal-fiber-37.0.2/src/stackswitch/arm.rs +0 -86
- data/ext/cargo-vendor/wasmtime-internal-fiber-37.0.2/src/stackswitch/riscv64.rs +0 -158
- data/ext/cargo-vendor/wasmtime-internal-fiber-37.0.2/src/stackswitch/s390x.S +0 -123
- data/ext/cargo-vendor/wasmtime-internal-fiber-37.0.2/src/stackswitch/x86.rs +0 -109
- data/ext/cargo-vendor/wasmtime-internal-fiber-37.0.2/src/stackswitch/x86_64.rs +0 -160
- data/ext/cargo-vendor/wasmtime-internal-fiber-37.0.2/src/stackswitch.rs +0 -80
- data/ext/cargo-vendor/wasmtime-internal-jit-debug-37.0.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/wasmtime-internal-jit-debug-37.0.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/wasmtime-internal-jit-debug-37.0.2/Cargo.lock +0 -203
- data/ext/cargo-vendor/wasmtime-internal-jit-debug-37.0.2/Cargo.toml +0 -110
- data/ext/cargo-vendor/wasmtime-internal-jit-icache-coherence-37.0.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/wasmtime-internal-jit-icache-coherence-37.0.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/wasmtime-internal-jit-icache-coherence-37.0.2/Cargo.lock +0 -104
- data/ext/cargo-vendor/wasmtime-internal-jit-icache-coherence-37.0.2/Cargo.toml +0 -91
- data/ext/cargo-vendor/wasmtime-internal-math-37.0.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/wasmtime-internal-math-37.0.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/wasmtime-internal-math-37.0.2/Cargo.lock +0 -16
- data/ext/cargo-vendor/wasmtime-internal-math-37.0.2/Cargo.toml +0 -78
- data/ext/cargo-vendor/wasmtime-internal-slab-37.0.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/wasmtime-internal-slab-37.0.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/wasmtime-internal-slab-37.0.2/Cargo.lock +0 -7
- data/ext/cargo-vendor/wasmtime-internal-slab-37.0.2/Cargo.toml +0 -70
- data/ext/cargo-vendor/wasmtime-internal-unwinder-37.0.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/wasmtime-internal-unwinder-37.0.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/wasmtime-internal-unwinder-37.0.2/Cargo.lock +0 -328
- data/ext/cargo-vendor/wasmtime-internal-unwinder-37.0.2/Cargo.toml +0 -106
- data/ext/cargo-vendor/wasmtime-internal-unwinder-37.0.2/src/stackwalk.rs +0 -219
- data/ext/cargo-vendor/wasmtime-internal-versioned-export-macros-37.0.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/wasmtime-internal-versioned-export-macros-37.0.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/wasmtime-internal-versioned-export-macros-37.0.2/Cargo.lock +0 -47
- data/ext/cargo-vendor/wasmtime-internal-versioned-export-macros-37.0.2/Cargo.toml +0 -43
- data/ext/cargo-vendor/wasmtime-internal-winch-37.0.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/wasmtime-internal-winch-37.0.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/wasmtime-internal-winch-37.0.2/Cargo.lock +0 -649
- data/ext/cargo-vendor/wasmtime-internal-winch-37.0.2/Cargo.toml +0 -132
- data/ext/cargo-vendor/wasmtime-internal-winch-37.0.2/src/compiler.rs +0 -402
- data/ext/cargo-vendor/wasmtime-internal-wit-bindgen-37.0.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/wasmtime-internal-wit-bindgen-37.0.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/wasmtime-internal-wit-bindgen-37.0.2/Cargo.lock +0 -193
- data/ext/cargo-vendor/wasmtime-internal-wit-bindgen-37.0.2/Cargo.toml +0 -90
- data/ext/cargo-vendor/wasmtime-internal-wit-bindgen-37.0.2/src/config.rs +0 -164
- data/ext/cargo-vendor/wasmtime-internal-wit-bindgen-37.0.2/src/lib.rs +0 -3527
- data/ext/cargo-vendor/wasmtime-wasi-37.0.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/wasmtime-wasi-37.0.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/wasmtime-wasi-37.0.2/Cargo.lock +0 -2512
- data/ext/cargo-vendor/wasmtime-wasi-37.0.2/Cargo.toml +0 -262
- data/ext/cargo-vendor/wasmtime-wasi-37.0.2/src/lib.rs +0 -48
- data/ext/cargo-vendor/wasmtime-wasi-37.0.2/src/sockets/tcp.rs +0 -819
- data/ext/cargo-vendor/wasmtime-wasi-37.0.2/src/view.rs +0 -95
- data/ext/cargo-vendor/wasmtime-wasi-37.0.2/tests/all/p3/mod.rs +0 -144
- data/ext/cargo-vendor/wasmtime-wasi-37.0.2/tests/all/store.rs +0 -81
- data/ext/cargo-vendor/wasmtime-wasi-io-37.0.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/wasmtime-wasi-io-37.0.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/wasmtime-wasi-io-37.0.2/Cargo.lock +0 -1211
- data/ext/cargo-vendor/wasmtime-wasi-io-37.0.2/Cargo.toml +0 -105
- data/ext/cargo-vendor/wiggle-37.0.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/wiggle-37.0.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/wiggle-37.0.2/Cargo.lock +0 -1168
- data/ext/cargo-vendor/wiggle-37.0.2/Cargo.toml +0 -139
- data/ext/cargo-vendor/wiggle-generate-37.0.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/wiggle-generate-37.0.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/wiggle-generate-37.0.2/Cargo.lock +0 -115
- data/ext/cargo-vendor/wiggle-generate-37.0.2/Cargo.toml +0 -102
- data/ext/cargo-vendor/wiggle-macro-37.0.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/wiggle-macro-37.0.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/wiggle-macro-37.0.2/Cargo.lock +0 -127
- data/ext/cargo-vendor/wiggle-macro-37.0.2/Cargo.toml +0 -98
- data/ext/cargo-vendor/winch-codegen-37.0.2/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/winch-codegen-37.0.2/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/winch-codegen-37.0.2/Cargo.lock +0 -620
- data/ext/cargo-vendor/winch-codegen-37.0.2/Cargo.toml +0 -133
- data/ext/cargo-vendor/winch-codegen-37.0.2/src/codegen/env.rs +0 -415
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/COPYRIGHT +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/LICENSE-APACHE +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/LICENSE-Apache-2.0_WITH_LLVM-exception +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/LICENSE-MIT +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/README.md +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/build.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/access.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/assert_same_file.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/canonicalize.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/copy.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/create_dir.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/dir_builder.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/dir_entry.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/dir_options.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/errors.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/file.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/file_path_by_searching.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/file_type.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/follow_symlinks.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/hard_link.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/is_file_read_write.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/manually/canonical_path.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/manually/canonicalize.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/manually/cow_component.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/manually/mod.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/manually/open.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/manually/open_entry.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/manually/read_link_one.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/maybe_owned_file.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/metadata.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/mod.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/open.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/open_ambient.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/open_dir.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/open_options.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/open_unchecked_error.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/permissions.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/read_dir.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/read_link.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/remove_dir.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/remove_dir_all.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/remove_file.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/remove_open_dir.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/rename.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/reopen.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/set_permissions.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/set_times.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/stat.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/symlink.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/system_time_spec.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/via_parent/access.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/via_parent/create_dir.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/via_parent/hard_link.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/via_parent/mod.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/via_parent/read_link.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/via_parent/remove_dir.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/via_parent/remove_file.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/via_parent/rename.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/via_parent/set_permissions.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/via_parent/set_symlink_permissions.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/via_parent/set_times_nofollow.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/fs/via_parent/symlink.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/net/mod.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/net/pool.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/darwin/fs/file_path.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/darwin/fs/mod.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/darwin/mod.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/freebsd/fs/check.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/freebsd/fs/mod.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/freebsd/fs/open_entry_impl.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/freebsd/fs/open_impl.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/freebsd/fs/remove_dir_impl.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/freebsd/fs/remove_file_impl.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/freebsd/fs/set_permissions_impl.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/freebsd/fs/set_times_impl.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/freebsd/fs/stat_impl.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/freebsd/mod.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/access_unchecked.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/copy_impl.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/create_dir_unchecked.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/cvt.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/dir_entry_inner.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/dir_options_ext.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/dir_utils.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/errors.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/file_path.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/file_type_ext.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/hard_link_unchecked.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/is_file_read_write_impl.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/is_root_dir.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/is_same_file.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/metadata_ext.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/mod.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/oflags.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/open_options_ext.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/open_unchecked.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/permissions_ext.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/read_dir_inner.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/read_link_unchecked.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/remove_dir_all_impl.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/remove_dir_unchecked.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/remove_file_unchecked.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/remove_open_dir_by_searching.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/rename_unchecked.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/reopen_impl.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/set_permissions_impl.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/set_symlink_permissions_unchecked.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/set_times_impl.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/stat_unchecked.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/symlink_unchecked.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/fs/times.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/linux/fs/canonicalize_impl.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/linux/fs/file_metadata.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/linux/fs/file_path.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/linux/fs/mod.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/linux/fs/open_entry_impl.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/linux/fs/open_impl.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/linux/fs/procfs.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/linux/fs/set_permissions_impl.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/linux/fs/set_times_impl.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/linux/mod.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/rustix/mod.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/time/instant.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/time/mod.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/time/monotonic_clock.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/time/system_clock.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/time/system_time.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/access_unchecked.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/copy.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/create_dir_unchecked.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/create_file_at_w.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/dir_entry_inner.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/dir_options_ext.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/dir_utils.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/errors.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/file_type_ext.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/get_path.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/hard_link_unchecked.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/is_file_read_write_impl.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/is_same_file.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/metadata_ext.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/mod.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/oflags.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/open_impl.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/open_options_ext.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/open_unchecked.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/read_dir_inner.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/read_link_impl.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/read_link_unchecked.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/remove_dir_all_impl.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/remove_dir_unchecked.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/remove_file_unchecked.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/remove_open_dir_impl.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/rename_unchecked.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/reopen_impl.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/set_permissions_unchecked.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/set_symlink_permissions_unchecked.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/set_times_impl.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/stat_unchecked.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/fs/symlink_unchecked.rs +0 -0
- /data/ext/cargo-vendor/{cap-primitives-3.4.4 → cap-primitives-3.4.5}/src/windows/mod.rs +0 -0
- /data/ext/cargo-vendor/{cap-std-3.4.4 → cap-std-3.4.5}/COPYRIGHT +0 -0
- /data/ext/cargo-vendor/{cap-std-3.4.4 → cap-std-3.4.5}/LICENSE-APACHE +0 -0
- /data/ext/cargo-vendor/{cap-std-3.4.4 → cap-std-3.4.5}/LICENSE-Apache-2.0_WITH_LLVM-exception +0 -0
- /data/ext/cargo-vendor/{cap-std-3.4.4 → cap-std-3.4.5}/LICENSE-MIT +0 -0
- /data/ext/cargo-vendor/{cap-std-3.4.4 → cap-std-3.4.5}/README.md +0 -0
- /data/ext/cargo-vendor/{cap-std-3.4.4 → cap-std-3.4.5}/build.rs +0 -0
- /data/ext/cargo-vendor/{cap-std-3.4.4 → cap-std-3.4.5}/src/fs/dir.rs +0 -0
- /data/ext/cargo-vendor/{cap-std-3.4.4 → cap-std-3.4.5}/src/fs/dir_entry.rs +0 -0
- /data/ext/cargo-vendor/{cap-std-3.4.4 → cap-std-3.4.5}/src/fs/file.rs +0 -0
- /data/ext/cargo-vendor/{cap-std-3.4.4 → cap-std-3.4.5}/src/fs/mod.rs +0 -0
- /data/ext/cargo-vendor/{cap-std-3.4.4 → cap-std-3.4.5}/src/fs/read_dir.rs +0 -0
- /data/ext/cargo-vendor/{cap-std-3.4.4 → cap-std-3.4.5}/src/fs_utf8/dir.rs +0 -0
- /data/ext/cargo-vendor/{cap-std-3.4.4 → cap-std-3.4.5}/src/fs_utf8/dir_entry.rs +0 -0
- /data/ext/cargo-vendor/{cap-std-3.4.4 → cap-std-3.4.5}/src/fs_utf8/file.rs +0 -0
- /data/ext/cargo-vendor/{cap-std-3.4.4 → cap-std-3.4.5}/src/fs_utf8/mod.rs +0 -0
- /data/ext/cargo-vendor/{cap-std-3.4.4 → cap-std-3.4.5}/src/fs_utf8/read_dir.rs +0 -0
- /data/ext/cargo-vendor/{cap-std-3.4.4 → cap-std-3.4.5}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{cap-std-3.4.4 → cap-std-3.4.5}/src/net/incoming.rs +0 -0
- /data/ext/cargo-vendor/{cap-std-3.4.4 → cap-std-3.4.5}/src/net/mod.rs +0 -0
- /data/ext/cargo-vendor/{cap-std-3.4.4 → cap-std-3.4.5}/src/net/pool.rs +0 -0
- /data/ext/cargo-vendor/{cap-std-3.4.4 → cap-std-3.4.5}/src/net/tcp_stream.rs +0 -0
- /data/ext/cargo-vendor/{cap-std-3.4.4 → cap-std-3.4.5}/src/net/udp_socket.rs +0 -0
- /data/ext/cargo-vendor/{cap-std-3.4.4 → cap-std-3.4.5}/src/os/mod.rs +0 -0
- /data/ext/cargo-vendor/{cap-std-3.4.4 → cap-std-3.4.5}/src/os/unix/mod.rs +0 -0
- /data/ext/cargo-vendor/{cap-std-3.4.4 → cap-std-3.4.5}/src/os/unix/net/incoming.rs +0 -0
- /data/ext/cargo-vendor/{cap-std-3.4.4 → cap-std-3.4.5}/src/os/unix/net/mod.rs +0 -0
- /data/ext/cargo-vendor/{cap-std-3.4.4 → cap-std-3.4.5}/src/os/unix/net/unix_datagram.rs +0 -0
- /data/ext/cargo-vendor/{cap-std-3.4.4 → cap-std-3.4.5}/src/os/unix/net/unix_stream.rs +0 -0
- /data/ext/cargo-vendor/{cap-std-3.4.4 → cap-std-3.4.5}/src/time/mod.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-0.124.2 → cranelift-assembler-x64-0.125.4}/README.md +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-0.124.2 → cranelift-assembler-x64-0.125.4}/build.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-0.124.2 → cranelift-assembler-x64-0.125.4}/src/api.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-0.124.2 → cranelift-assembler-x64-0.125.4}/src/custom.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-0.124.2 → cranelift-assembler-x64-0.125.4}/src/evex.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-0.124.2 → cranelift-assembler-x64-0.125.4}/src/features.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-0.124.2 → cranelift-assembler-x64-0.125.4}/src/fixed.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-0.124.2 → cranelift-assembler-x64-0.125.4}/src/fuzz.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-0.124.2 → cranelift-assembler-x64-0.125.4}/src/gpr.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-0.124.2 → cranelift-assembler-x64-0.125.4}/src/imm.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-0.124.2 → cranelift-assembler-x64-0.125.4}/src/inst.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-0.124.2 → cranelift-assembler-x64-0.125.4}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-0.124.2 → cranelift-assembler-x64-0.125.4}/src/main.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-0.124.2 → cranelift-assembler-x64-0.125.4}/src/mem.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-0.124.2 → cranelift-assembler-x64-0.125.4}/src/vex.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-0.124.2 → cranelift-assembler-x64-0.125.4}/src/xmm.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/README.md +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/dsl/custom.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/dsl/encoding.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/dsl/features.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/dsl/format.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/dsl.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/generate/features.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/generate/format.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/generate/operand.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/abs.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/add.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/align.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/and.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/atomic.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/avg.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/bitmanip.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/cmov.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/cmp.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/cvt.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/div.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/fma.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/jmp.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/lanes.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/max.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/min.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/misc.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/mov.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/mul.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/neg.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/nop.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/or.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/pack.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/pma.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/recip.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/round.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/setcc.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/shift.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/sqrt.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/stack.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/sub.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/unpack.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions/xor.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/instructions.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-assembler-x64-meta-0.124.2 → cranelift-assembler-x64-meta-0.125.4}/src/main.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-bforest-0.124.2 → cranelift-bforest-0.125.4}/LICENSE +0 -0
- /data/ext/cargo-vendor/{cranelift-bforest-0.124.2 → cranelift-bforest-0.125.4}/README.md +0 -0
- /data/ext/cargo-vendor/{cranelift-bforest-0.124.2 → cranelift-bforest-0.125.4}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-bforest-0.124.2 → cranelift-bforest-0.125.4}/src/map.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-bforest-0.124.2 → cranelift-bforest-0.125.4}/src/node.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-bforest-0.124.2 → cranelift-bforest-0.125.4}/src/path.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-bforest-0.124.2 → cranelift-bforest-0.125.4}/src/pool.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-bforest-0.124.2 → cranelift-bforest-0.125.4}/src/set.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-bitset-0.124.2 → cranelift-bitset-0.125.4}/src/compound.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-bitset-0.124.2 → cranelift-bitset-0.125.4}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-bitset-0.124.2 → cranelift-bitset-0.125.4}/src/scalar.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-bitset-0.124.2 → cranelift-bitset-0.125.4}/tests/bitset.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/LICENSE +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/README.md +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/build.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/alias_analysis.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/binemit/mod.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/cfg_printer.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/constant_hash.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/context.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/ctxhash.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/cursor.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/data_value.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/dbg.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/dominator_tree/simple.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/dominator_tree.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/egraph/cost.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/egraph/elaborate.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/egraph.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/flowgraph.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/incremental_cache.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/inst_predicates.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/inst_specs.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/ir/atomic_rmw_op.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/ir/builder.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/ir/condcodes.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/ir/constant.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/ir/dfg.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/ir/dynamic_type.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/ir/entities.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/ir/exception_table.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/ir/extfunc.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/ir/extname.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/ir/function.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/ir/globalvalue.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/ir/immediates.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/ir/jumptable.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/ir/known_symbol.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/ir/layout.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/ir/libcall.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/ir/memflags.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/ir/memtype.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/ir/mod.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/ir/pcc.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/ir/progpoint.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/ir/sourceloc.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/ir/stackslot.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/ir/trapcode.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/ir/types.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/ir/user_stack_maps.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/aarch64/inst/emit_tests.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/aarch64/inst/imms.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/aarch64/inst/regs.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/aarch64/inst/unwind/systemv.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/aarch64/inst/unwind.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/aarch64/inst_neon.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/aarch64/lower/isle/generated_code.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/aarch64/lower/isle.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/aarch64/lower.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/aarch64/lower_dynamic_neon.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/aarch64/mod.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/aarch64/pcc.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/aarch64/settings.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/mod.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/pulley32.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/pulley64.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/pulley_shared/abi.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/pulley_shared/inst/args.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/pulley_shared/inst/regs.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/pulley_shared/lower/isle/generated_code.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/pulley_shared/lower/isle.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/pulley_shared/lower.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/pulley_shared/mod.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/pulley_shared/settings.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/riscv64/abi.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/riscv64/inst/args.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/riscv64/inst/emit_tests.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/riscv64/inst/encode.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/riscv64/inst/imms.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/riscv64/inst/regs.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/riscv64/inst/unwind/systemv.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/riscv64/inst/unwind.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/riscv64/inst/vector.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/riscv64/inst_vector.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/riscv64/lower/isle/generated_code.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/riscv64/lower/isle.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/riscv64/lower.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/riscv64/settings.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/s390x/inst/args.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/s390x/inst/emit_tests.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/s390x/inst/imms.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/s390x/inst/regs.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/s390x/inst/unwind/systemv.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/s390x/inst/unwind.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/s390x/lower/isle/generated_code.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/s390x/lower/isle.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/s390x/lower.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/s390x/mod.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/s390x/settings.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/unwind/systemv.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/unwind/winarm64.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/unwind/winx64.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/unwind.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/winch.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/x64/inst/emit_state.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/x64/inst/emit_tests.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/x64/inst/external.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/x64/inst/regs.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/x64/inst/stack_switch.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/x64/inst/unwind/systemv.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/x64/inst/unwind/winx64.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/x64/inst/unwind.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/x64/lower/isle/generated_code.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/x64/lower.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isa/x64/settings.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/isle_prelude.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/legalizer/branch_to_trap.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/legalizer/globalvalue.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/legalizer/mod.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/loop_analysis.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/machinst/buffer.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/machinst/compile.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/machinst/helpers.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/machinst/inst_common.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/machinst/mod.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/machinst/pcc.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/machinst/reg.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/machinst/valueregs.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/machinst/vcode.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/nan_canonicalization.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/opts/README.md +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/opts/cprop.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/opts/div_const.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/opts/extends.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/opts/generated_code.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/opts/remat.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/opts/skeleton.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/opts/spaceship.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/opts/spectre.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/opts/vector.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/opts.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/prelude.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/prelude_opt.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/print_errors.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/ranges.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/remove_constant_phis.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/result.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/scoped_hash_map.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/souper_harvest.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/take_and_replace.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/timing.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/traversals.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/unreachable_code.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-0.124.2 → cranelift-codegen-0.125.4}/src/value_label.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-meta-0.124.2 → cranelift-codegen-meta-0.125.4}/LICENSE +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-meta-0.124.2 → cranelift-codegen-meta-0.125.4}/README.md +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-meta-0.124.2 → cranelift-codegen-meta-0.125.4}/src/cdsl/isa.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-meta-0.124.2 → cranelift-codegen-meta-0.125.4}/src/cdsl/types.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-meta-0.124.2 → cranelift-codegen-meta-0.125.4}/src/cdsl/typevar.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-meta-0.124.2 → cranelift-codegen-meta-0.125.4}/src/constant_hash.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-meta-0.124.2 → cranelift-codegen-meta-0.125.4}/src/gen_types.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-meta-0.124.2 → cranelift-codegen-meta-0.125.4}/src/isa/arm64.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-meta-0.124.2 → cranelift-codegen-meta-0.125.4}/src/isa/mod.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-meta-0.124.2 → cranelift-codegen-meta-0.125.4}/src/isa/pulley.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-meta-0.124.2 → cranelift-codegen-meta-0.125.4}/src/isa/s390x.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-meta-0.124.2 → cranelift-codegen-meta-0.125.4}/src/isle.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-meta-0.124.2 → cranelift-codegen-meta-0.125.4}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-meta-0.124.2 → cranelift-codegen-meta-0.125.4}/src/pulley.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-meta-0.124.2 → cranelift-codegen-meta-0.125.4}/src/shared/immediates.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-meta-0.124.2 → cranelift-codegen-meta-0.125.4}/src/shared/mod.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-meta-0.124.2 → cranelift-codegen-meta-0.125.4}/src/shared/types.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-meta-0.124.2 → cranelift-codegen-meta-0.125.4}/src/unique_table.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-shared-0.124.2 → cranelift-codegen-shared-0.125.4}/LICENSE +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-shared-0.124.2 → cranelift-codegen-shared-0.125.4}/README.md +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-shared-0.124.2 → cranelift-codegen-shared-0.125.4}/src/constant_hash.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-shared-0.124.2 → cranelift-codegen-shared-0.125.4}/src/constants.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-codegen-shared-0.124.2 → cranelift-codegen-shared-0.125.4}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-control-0.124.2 → cranelift-control-0.125.4}/LICENSE +0 -0
- /data/ext/cargo-vendor/{cranelift-control-0.124.2 → cranelift-control-0.125.4}/README.md +0 -0
- /data/ext/cargo-vendor/{cranelift-control-0.124.2 → cranelift-control-0.125.4}/src/chaos.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-control-0.124.2 → cranelift-control-0.125.4}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-control-0.124.2 → cranelift-control-0.125.4}/src/zero_sized.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-entity-0.124.2 → cranelift-entity-0.125.4}/LICENSE +0 -0
- /data/ext/cargo-vendor/{cranelift-entity-0.124.2 → cranelift-entity-0.125.4}/README.md +0 -0
- /data/ext/cargo-vendor/{cranelift-entity-0.124.2 → cranelift-entity-0.125.4}/src/boxed_slice.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-entity-0.124.2 → cranelift-entity-0.125.4}/src/iter.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-entity-0.124.2 → cranelift-entity-0.125.4}/src/keys.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-entity-0.124.2 → cranelift-entity-0.125.4}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-entity-0.124.2 → cranelift-entity-0.125.4}/src/list.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-entity-0.124.2 → cranelift-entity-0.125.4}/src/map.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-entity-0.124.2 → cranelift-entity-0.125.4}/src/packed_option.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-entity-0.124.2 → cranelift-entity-0.125.4}/src/set.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-entity-0.124.2 → cranelift-entity-0.125.4}/src/sparse.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-frontend-0.124.2 → cranelift-frontend-0.125.4}/LICENSE +0 -0
- /data/ext/cargo-vendor/{cranelift-frontend-0.124.2 → cranelift-frontend-0.125.4}/README.md +0 -0
- /data/ext/cargo-vendor/{cranelift-frontend-0.124.2 → cranelift-frontend-0.125.4}/src/frontend/safepoints.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-frontend-0.124.2 → cranelift-frontend-0.125.4}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-frontend-0.124.2 → cranelift-frontend-0.125.4}/src/ssa.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-frontend-0.124.2 → cranelift-frontend-0.125.4}/src/switch.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-frontend-0.124.2 → cranelift-frontend-0.125.4}/src/variable.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/README.md +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/build.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/fail/bad_converters.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/fail/bound_var_type_mismatch.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/fail/converter_extractor_constructor.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/fail/error1.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/fail/extra_parens.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/fail/impure_expression.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/fail/impure_rhs.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/fail/multi_internal_etor.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/fail/multi_prio.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/link/borrows.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/link/borrows_main.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/link/iflets.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/link/iflets_main.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/link/multi_constructor.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/link/multi_constructor_main.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/link/multi_extractor.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/link/multi_extractor_main.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/link/test.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/link/test_main.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/pass/bound_var.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/pass/construct_and_extract.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/pass/conversions.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/pass/conversions_extern.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/pass/let.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/pass/nodebug.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/pass/prio_trie_bug.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/pass/test2.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/pass/test3.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/pass/test4.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/pass/tutorial.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/pass/veri_spec.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/run/iconst.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/run/iconst_main.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/run/let_shadowing.isle +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/isle_examples/run/let_shadowing_main.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/src/ast.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/src/codegen.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/src/compile.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/src/disjointsets.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/src/error.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/src/files.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/src/lexer.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/src/log.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/src/overlap.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/src/parser.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/src/printer.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/src/sema.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/src/serialize.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/src/stablemapset.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/src/trie_again.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-isle-0.124.2 → cranelift-isle-0.125.4}/tests/run_tests.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-native-0.124.2 → cranelift-native-0.125.4}/LICENSE +0 -0
- /data/ext/cargo-vendor/{cranelift-native-0.124.2 → cranelift-native-0.125.4}/README.md +0 -0
- /data/ext/cargo-vendor/{cranelift-native-0.124.2 → cranelift-native-0.125.4}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-native-0.124.2 → cranelift-native-0.125.4}/src/riscv.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-srcgen-0.124.2 → cranelift-srcgen-0.125.4}/src/error.rs +0 -0
- /data/ext/cargo-vendor/{cranelift-srcgen-0.124.2 → cranelift-srcgen-0.125.4}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{deterministic-wasi-ctx-3.0.2 → deterministic-wasi-ctx-3.0.3}/README.md +0 -0
- /data/ext/cargo-vendor/{deterministic-wasi-ctx-3.0.2 → deterministic-wasi-ctx-3.0.3}/src/clocks.rs +0 -0
- /data/ext/cargo-vendor/{deterministic-wasi-ctx-3.0.2 → deterministic-wasi-ctx-3.0.3}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{deterministic-wasi-ctx-3.0.2 → deterministic-wasi-ctx-3.0.3}/src/scheduling.rs +0 -0
- /data/ext/cargo-vendor/{deterministic-wasi-ctx-3.0.2 → deterministic-wasi-ctx-3.0.3}/tests/clocks.rs +0 -0
- /data/ext/cargo-vendor/{deterministic-wasi-ctx-3.0.2 → deterministic-wasi-ctx-3.0.3}/tests/common/mod.rs +0 -0
- /data/ext/cargo-vendor/{deterministic-wasi-ctx-3.0.2 → deterministic-wasi-ctx-3.0.3}/tests/random.rs +0 -0
- /data/ext/cargo-vendor/{deterministic-wasi-ctx-3.0.2 → deterministic-wasi-ctx-3.0.3}/tests/scheduler.rs +0 -0
- /data/ext/cargo-vendor/{pulley-interpreter-37.0.2 → pulley-interpreter-38.0.4}/CONTRIBUTING.md +0 -0
- /data/ext/cargo-vendor/{pulley-interpreter-37.0.2 → pulley-interpreter-38.0.4}/Cargo.toml.orig +0 -0
- /data/ext/cargo-vendor/{pulley-interpreter-37.0.2 → pulley-interpreter-38.0.4}/README.md +0 -0
- /data/ext/cargo-vendor/{pulley-interpreter-37.0.2 → pulley-interpreter-38.0.4}/examples/profiler-html.rs +0 -0
- /data/ext/cargo-vendor/{pulley-interpreter-37.0.2 → pulley-interpreter-38.0.4}/src/decode.rs +0 -0
- /data/ext/cargo-vendor/{pulley-interpreter-37.0.2 → pulley-interpreter-38.0.4}/src/disas.rs +0 -0
- /data/ext/cargo-vendor/{pulley-interpreter-37.0.2 → pulley-interpreter-38.0.4}/src/encode.rs +0 -0
- /data/ext/cargo-vendor/{pulley-interpreter-37.0.2 → pulley-interpreter-38.0.4}/src/imms.rs +0 -0
- /data/ext/cargo-vendor/{pulley-interpreter-37.0.2 → pulley-interpreter-38.0.4}/src/interp/debug.rs +0 -0
- /data/ext/cargo-vendor/{pulley-interpreter-37.0.2 → pulley-interpreter-38.0.4}/src/interp/match_loop.rs +0 -0
- /data/ext/cargo-vendor/{pulley-interpreter-37.0.2 → pulley-interpreter-38.0.4}/src/interp/tail_loop.rs +0 -0
- /data/ext/cargo-vendor/{pulley-interpreter-37.0.2 → pulley-interpreter-38.0.4}/src/interp.rs +0 -0
- /data/ext/cargo-vendor/{pulley-interpreter-37.0.2 → pulley-interpreter-38.0.4}/src/op.rs +0 -0
- /data/ext/cargo-vendor/{pulley-interpreter-37.0.2 → pulley-interpreter-38.0.4}/src/opcode.rs +0 -0
- /data/ext/cargo-vendor/{pulley-interpreter-37.0.2 → pulley-interpreter-38.0.4}/src/profile.rs +0 -0
- /data/ext/cargo-vendor/{pulley-interpreter-37.0.2 → pulley-interpreter-38.0.4}/src/profile_disabled.rs +0 -0
- /data/ext/cargo-vendor/{pulley-interpreter-37.0.2 → pulley-interpreter-38.0.4}/src/regs.rs +0 -0
- /data/ext/cargo-vendor/{pulley-interpreter-37.0.2 → pulley-interpreter-38.0.4}/tests/all/disas.rs +0 -0
- /data/ext/cargo-vendor/{pulley-interpreter-37.0.2 → pulley-interpreter-38.0.4}/tests/all/interp.rs +0 -0
- /data/ext/cargo-vendor/{pulley-interpreter-37.0.2 → pulley-interpreter-38.0.4}/tests/all/main.rs +0 -0
- /data/ext/cargo-vendor/{pulley-macros-37.0.2 → pulley-macros-38.0.4}/Cargo.toml.orig +0 -0
- /data/ext/cargo-vendor/{pulley-macros-37.0.2 → pulley-macros-38.0.4}/src/interp_disable_if_cfg.rs +0 -0
- /data/ext/cargo-vendor/{pulley-macros-37.0.2 → pulley-macros-38.0.4}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/LICENSE +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/README.md +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/proptest-regressions/runtime/vm/instance/allocator/pooling/memory_pool.txt +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/compile/call_graph.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/compile/code_builder.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/compile/runtime.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/compile/scc.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/compile/stratify.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/profiling_agent/jitdump.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/profiling_agent/perfmap.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/profiling_agent/pulley.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/profiling_agent/vtune.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/profiling_agent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/code.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/code_memory.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/component/bindgen_examples/_0_hello_world.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/component/bindgen_examples/_1_world_imports.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/component/bindgen_examples/_2_world_exports.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/component/bindgen_examples/_3_interface_imports.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/component/bindgen_examples/_4_imported_resources.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/component/bindgen_examples/_5_all_world_export_kinds.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/component/bindgen_examples/_6_exported_resources.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/component/bindgen_examples/_7_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/component/bindgen_examples/_8_store_in_imports.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/component/bindgen_examples/mod.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/component/concurrent/abort.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/component/concurrent/error_contexts.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/component/concurrent/futures_and_streams/buffers.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/component/concurrent/table.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/component/concurrent/tls.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/component/concurrent_disabled.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/component/func/options.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/component/has_data.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/component/linker.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/component/matching.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/component/resource_table.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/component/resources.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/component/storage.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/component/store.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/component/types.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/component/values.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/debug.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/exception.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/externals/global.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/externals/table.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/externals/tag.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/externals.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/fiber.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/func/typed.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/gc/disabled/anyref.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/gc/disabled/arrayref.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/gc/disabled/eqref.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/gc/disabled/exnref.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/gc/disabled/externref.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/gc/disabled/i31.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/gc/disabled/rooting.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/gc/disabled/structref.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/gc/disabled.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/gc/enabled/anyref.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/gc/enabled/arrayref.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/gc/enabled/eqref.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/gc/enabled/exnref.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/gc/enabled/externref.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/gc/enabled/i31.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/gc/enabled/rooting.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/gc/enabled/structref.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/gc/enabled.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/gc/noextern.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/gc/none_ref.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/gc.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/instance.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/limits.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/linker.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/module/registry.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/resources.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/stack.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/store/async_.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/store/context.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/store/data.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/store/func_refs.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/store/gc.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/store/token.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/trampoline/func.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/trampoline/global.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/trampoline.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/type_registry.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/types/matching.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/types.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/uninhabited.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/unix.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/v128.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/values.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/always_mut.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/async_yield.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/byte_count.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/component/handle_table.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/component/resources.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/const_expr.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/cow.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/cow_disabled.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/debug_builtins.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/export.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/gc/disabled.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/gc/enabled/arrayref.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/gc/enabled/data.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/gc/enabled/drc.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/gc/enabled/exnref.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/gc/enabled/externref.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/gc/enabled/free_list.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/gc/enabled/null.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/gc/enabled/structref.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/gc/enabled.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/gc/func_ref.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/gc/gc_ref.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/gc/gc_runtime.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/gc/host_data.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/gc/i31.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/gc.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/imports.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/instance/allocator/on_demand.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/instance/allocator/pooling/decommit_queue.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/instance/allocator/pooling/gc_heap_pool.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/instance/allocator/pooling/generic_stack_pool.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/instance/allocator/pooling/index_allocator.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/instance/allocator/pooling/memory_pool.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/instance/allocator/pooling/metrics.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/instance/allocator/pooling/table_pool.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/instance/allocator/pooling/unix_stack_pool.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/instance/allocator/pooling.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/instance/allocator.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/libcalls.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/memory/malloc.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/memory/mmap.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/memory/shared_memory.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/memory/shared_memory_disabled.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/memory/static_.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/memory.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/mmap.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/mmap_vec.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/module_id.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/mpk/disabled.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/mpk/enabled.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/mpk/mod.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/mpk/pkru.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/mpk/sys.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/pagemap_disabled.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/parking_spot.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/provenance.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/send_sync_ptr.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/send_sync_unsafe_cell.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/stack_switching/stack/dummy.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/stack_switching/stack.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/store_box.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/sys/custom/mmap.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/sys/custom/mod.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/sys/custom/unwind.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/sys/custom/vm.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/sys/miri/mmap.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/sys/miri/mod.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/sys/miri/unwind.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/sys/miri/vm.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/sys/mod.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/sys/unix/mmap.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/sys/unix/mod.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/sys/unix/pagemap.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/sys/unix/unwind.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/sys/unix/vm.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/sys/windows/mmap.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/sys/windows/mod.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/sys/windows/unwind64.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/sys/windows/vm.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/table.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/traphandlers/backtrace.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/traphandlers/coredump_disabled.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/traphandlers/coredump_enabled.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/traphandlers/signals.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm/vmcontext/vm_host_func_context.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/vm.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/wave/component.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/wave/core.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/wave.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime/windows.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/runtime.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/sync_nostd.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/src/sync_std.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/tests/custom_signal_handler.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/tests/engine_across_forks.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/tests/host_segfault.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/tests/pooling_alloc_near_oom.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-37.0.2 → wasmtime-38.0.4}/tests/unload-engine.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/LICENSE +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/examples/factc.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/compile/address_map.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/compile/module_types.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/compile/stack_maps.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/compile/trap_encoding.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/component/names.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/component/translate/adapt.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/component/translate.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/component/types.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/component/types_builder/resources.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/component/types_builder.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/component/vmcomponent_offsets.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/demangling.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/error.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/ext.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/fact/core_types.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/fact/signature.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/fact/trampoline.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/fact/transcode.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/fact/traps.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/fact.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/gc/drc.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/gc/null.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/gc.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/module_types.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/obj.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/prelude.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/ref_bits.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/scopevec.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/stack_map.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/stack_switching.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/tunables.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-environ-37.0.2 → wasmtime-environ-38.0.4}/src/types.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cache-37.0.2 → wasmtime-internal-cache-38.0.4}/Cargo.toml.orig +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cache-37.0.2 → wasmtime-internal-cache-38.0.4}/LICENSE +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cache-37.0.2 → wasmtime-internal-cache-38.0.4}/build.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cache-37.0.2 → wasmtime-internal-cache-38.0.4}/src/config/tests.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cache-37.0.2 → wasmtime-internal-cache-38.0.4}/src/config.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cache-37.0.2 → wasmtime-internal-cache-38.0.4}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cache-37.0.2 → wasmtime-internal-cache-38.0.4}/src/tests.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cache-37.0.2 → wasmtime-internal-cache-38.0.4}/src/worker/tests/system_time_stub.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cache-37.0.2 → wasmtime-internal-cache-38.0.4}/src/worker/tests.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cache-37.0.2 → wasmtime-internal-cache-38.0.4}/src/worker.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cache-37.0.2 → wasmtime-internal-cache-38.0.4}/tests/cache_write_default_config.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/Cargo.toml.orig +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/build.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/src/bindgen.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/src/component.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/char.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/conventions.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/dead-code.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/direct-import.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/empty.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/flags.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/floats.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/function-new.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/host-world.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/integers.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/lists.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/many-arguments.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/multiversion/deps/v1/root.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/multiversion/deps/v2/root.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/multiversion/root.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/path1/world.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/path2/world.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/records.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/rename.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/resources-export.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/resources-import.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/share-types.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/simple-functions.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/simple-lists.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/simple-wasi.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/small-anonymous.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/smoke-default.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/smoke-export.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/smoke.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/strings.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/unstable-features.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/unversioned-foo.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/use-paths.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/variants.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/wat.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen/worlds-with-types.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/codegen_no_std.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/char.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/char_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/char_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/char_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/conventions.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/conventions_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/conventions_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/conventions_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/dead-code.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/dead-code_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/dead-code_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/dead-code_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/direct-import.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/direct-import_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/direct-import_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/direct-import_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/empty.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/empty_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/empty_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/empty_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/flags.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/flags_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/flags_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/flags_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/floats.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/floats_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/floats_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/floats_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/function-new.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/function-new_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/function-new_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/function-new_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/host-world.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/host-world_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/host-world_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/host-world_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/integers.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/integers_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/integers_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/integers_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/lists.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/lists_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/lists_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/lists_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/many-arguments.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/many-arguments_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/many-arguments_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/many-arguments_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/multi-return.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/multiversion.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/multiversion_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/multiversion_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/multiversion_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/path1.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/path2.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/records.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/records_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/records_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/records_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/rename.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/rename_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/rename_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/rename_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/resources-export.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/resources-export_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/resources-export_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/resources-export_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/resources-import.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/resources-import_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/resources-import_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/resources-import_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/share-types.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/share-types_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/share-types_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/share-types_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/simple-functions.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/simple-functions_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/simple-functions_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/simple-functions_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/simple-lists.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/simple-lists_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/simple-lists_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/simple-lists_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/simple-wasi.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/simple-wasi_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/simple-wasi_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/simple-wasi_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/small-anonymous.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/small-anonymous_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/small-anonymous_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/small-anonymous_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/smoke-default.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/smoke-default_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/smoke-default_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/smoke-default_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/smoke-export.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/smoke-export_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/smoke-export_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/smoke-export_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/smoke.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/smoke_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/smoke_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/smoke_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/strings.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/strings_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/strings_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/strings_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/unstable-features.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/unstable-features_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/unstable-features_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/unstable-features_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/unversioned-foo.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/unversioned-foo_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/unversioned-foo_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/unversioned-foo_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/use-paths.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/use-paths_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/use-paths_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/use-paths_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/variants.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/variants_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/variants_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/variants_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/wat.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/wat_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/wat_concurrent.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/wat_tracing_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded/worlds-with-types.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-macro-37.0.2 → wasmtime-internal-component-macro-38.0.4}/tests/expanded.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-util-37.0.2 → wasmtime-internal-component-util-38.0.4}/Cargo.toml.orig +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-component-util-37.0.2 → wasmtime-internal-component-util-38.0.4}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/Cargo.toml.orig +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/LICENSE +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/SECURITY.md +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/bounds_checks.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/builder.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/compiled_function.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/debug/gc.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/debug/transform/address_transform.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/debug/transform/attr.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/debug/transform/debug_transform_logging.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/debug/transform/expression.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/debug/transform/line_program.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/debug/transform/mod.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/debug/transform/range_info_builder.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/debug/transform/refs.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/debug/transform/simulate.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/debug/transform/synthetic.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/debug/transform/unit.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/debug/transform/utils.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/debug/write_debuginfo.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/debug.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/func_environ/gc/disabled.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/func_environ/gc/enabled/drc.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/func_environ/gc/enabled/null.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/func_environ/gc/enabled.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/func_environ/gc.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/func_environ/stack_switching/control_effect.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/func_environ/stack_switching/fatpointer.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/func_environ/stack_switching/mod.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/isa_builder.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/obj.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/translate/code_translator.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/translate/environ/mod.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/translate/environ/spec.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/translate/func_translator.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/translate/heap.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/translate/mod.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/translate/stack.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/translate/table.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-cranelift-37.0.2 → wasmtime-internal-cranelift-38.0.4}/src/translate/translation_utils.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-fiber-37.0.2 → wasmtime-internal-fiber-38.0.4}/LICENSE +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-fiber-37.0.2 → wasmtime-internal-fiber-38.0.4}/src/miri.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-fiber-37.0.2 → wasmtime-internal-fiber-38.0.4}/src/nostd.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-fiber-37.0.2 → wasmtime-internal-fiber-38.0.4}/src/unix.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-fiber-37.0.2 → wasmtime-internal-fiber-38.0.4}/src/windows.c +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-fiber-37.0.2 → wasmtime-internal-fiber-38.0.4}/src/windows.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-jit-debug-37.0.2 → wasmtime-internal-jit-debug-38.0.4}/Cargo.toml.orig +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-jit-debug-37.0.2 → wasmtime-internal-jit-debug-38.0.4}/README.md +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-jit-debug-37.0.2 → wasmtime-internal-jit-debug-38.0.4}/build.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-jit-debug-37.0.2 → wasmtime-internal-jit-debug-38.0.4}/gdbjit.c +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-jit-debug-37.0.2 → wasmtime-internal-jit-debug-38.0.4}/src/gdb_jit_int.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-jit-debug-37.0.2 → wasmtime-internal-jit-debug-38.0.4}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-jit-debug-37.0.2 → wasmtime-internal-jit-debug-38.0.4}/src/perf_jitdump.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-jit-icache-coherence-37.0.2 → wasmtime-internal-jit-icache-coherence-38.0.4}/Cargo.toml.orig +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-jit-icache-coherence-37.0.2 → wasmtime-internal-jit-icache-coherence-38.0.4}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-jit-icache-coherence-37.0.2 → wasmtime-internal-jit-icache-coherence-38.0.4}/src/libc.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-jit-icache-coherence-37.0.2 → wasmtime-internal-jit-icache-coherence-38.0.4}/src/miri.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-jit-icache-coherence-37.0.2 → wasmtime-internal-jit-icache-coherence-38.0.4}/src/win.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-math-37.0.2 → wasmtime-internal-math-38.0.4}/Cargo.toml.orig +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-math-37.0.2 → wasmtime-internal-math-38.0.4}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-slab-37.0.2 → wasmtime-internal-slab-38.0.4}/Cargo.toml.orig +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-slab-37.0.2 → wasmtime-internal-slab-38.0.4}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-unwinder-37.0.2 → wasmtime-internal-unwinder-38.0.4}/Cargo.toml.orig +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-unwinder-37.0.2 → wasmtime-internal-unwinder-38.0.4}/LICENSE +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-unwinder-37.0.2 → wasmtime-internal-unwinder-38.0.4}/README.md +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-unwinder-37.0.2 → wasmtime-internal-unwinder-38.0.4}/build.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-unwinder-37.0.2 → wasmtime-internal-unwinder-38.0.4}/src/arch/aarch64.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-unwinder-37.0.2 → wasmtime-internal-unwinder-38.0.4}/src/arch/mod.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-unwinder-37.0.2 → wasmtime-internal-unwinder-38.0.4}/src/arch/riscv64.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-unwinder-37.0.2 → wasmtime-internal-unwinder-38.0.4}/src/arch/s390x.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-unwinder-37.0.2 → wasmtime-internal-unwinder-38.0.4}/src/arch/x86.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-unwinder-37.0.2 → wasmtime-internal-unwinder-38.0.4}/src/exception_table.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-unwinder-37.0.2 → wasmtime-internal-unwinder-38.0.4}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-unwinder-37.0.2 → wasmtime-internal-unwinder-38.0.4}/src/throw.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-versioned-export-macros-37.0.2 → wasmtime-internal-versioned-export-macros-38.0.4}/Cargo.toml.orig +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-versioned-export-macros-37.0.2 → wasmtime-internal-versioned-export-macros-38.0.4}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-winch-37.0.2 → wasmtime-internal-winch-38.0.4}/Cargo.toml.orig +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-winch-37.0.2 → wasmtime-internal-winch-38.0.4}/LICENSE +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-winch-37.0.2 → wasmtime-internal-winch-38.0.4}/src/builder.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-winch-37.0.2 → wasmtime-internal-winch-38.0.4}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-wit-bindgen-37.0.2 → wasmtime-internal-wit-bindgen-38.0.4}/Cargo.toml.orig +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-wit-bindgen-37.0.2 → wasmtime-internal-wit-bindgen-38.0.4}/src/rust.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-wit-bindgen-37.0.2 → wasmtime-internal-wit-bindgen-38.0.4}/src/source.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-internal-wit-bindgen-37.0.2 → wasmtime-internal-wit-bindgen-38.0.4}/src/types.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/Cargo.toml.orig +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/LICENSE +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/README.md +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/cli/empty.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/cli/file.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/cli/locked_async.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/cli/mem.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/cli/stdout.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/cli/worker_thread_stdin.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/cli.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/clocks.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/ctx.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/error.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/filesystem.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p0.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p1.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/bindings.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/filesystem.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/host/clocks.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/host/env.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/host/exit.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/host/filesystem/sync.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/host/filesystem.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/host/instance_network.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/host/io.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/host/mod.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/host/network.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/host/random.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/host/tcp.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/host/tcp_create_socket.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/host/udp.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/host/udp_create_socket.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/ip_name_lookup.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/mod.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/network.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/pipe.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/poll.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/stdio.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/tcp.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/udp.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/deps/cli/command.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/deps/cli/environment.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/deps/cli/exit.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/deps/cli/imports.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/deps/cli/run.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/deps/cli/stdio.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/deps/cli/terminal.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/deps/clocks/monotonic-clock.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/deps/clocks/timezone.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/deps/clocks/wall-clock.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/deps/clocks/world.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/deps/filesystem/preopens.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/deps/filesystem/types.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/deps/filesystem/world.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/deps/io/error.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/deps/io/poll.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/deps/io/streams.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/deps/io/world.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/deps/random/insecure-seed.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/deps/random/insecure.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/deps/random/random.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/deps/random/world.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/deps/sockets/instance-network.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/deps/sockets/ip-name-lookup.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/deps/sockets/network.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/deps/sockets/tcp-create-socket.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/deps/sockets/tcp.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/deps/sockets/udp-create-socket.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/deps/sockets/udp.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/deps/sockets/world.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/test.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/wit/world.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p2/write_stream.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/bindings.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/cli/host.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/cli/mod.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/clocks/host.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/clocks/mod.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/filesystem/host.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/filesystem/mod.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/mod.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/random/host.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/random/mod.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/sockets/conv.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/sockets/host/ip_name_lookup.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/sockets/host/mod.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/sockets/host/types/mod.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/sockets/host/types/tcp.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/sockets/host/types/udp.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/sockets/mod.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/wit/deps/cli/command.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/wit/deps/cli/environment.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/wit/deps/cli/exit.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/wit/deps/cli/imports.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/wit/deps/cli/run.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/wit/deps/cli/stdio.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/wit/deps/cli/terminal.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/wit/deps/clocks/monotonic-clock.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/wit/deps/clocks/timezone.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/wit/deps/clocks/types.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/wit/deps/clocks/wall-clock.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/wit/deps/clocks/world.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/wit/deps/filesystem/preopens.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/wit/deps/filesystem/types.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/wit/deps/filesystem/world.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/wit/deps/random/insecure-seed.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/wit/deps/random/insecure.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/wit/deps/random/random.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/wit/deps/random/world.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/wit/deps/sockets/ip-name-lookup.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/wit/deps/sockets/types.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/wit/deps/sockets/world.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/p3/wit/package.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/random.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/runtime.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/sockets/mod.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/sockets/udp.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/src/sockets/util.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/tests/all/main.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/tests/all/p1.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/tests/all/p2/api.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/tests/all/p2/async_.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/tests/all/p2/mod.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/tests/all/p2/sync.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/tests/process_stdin.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/witx/p0/typenames.witx +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/witx/p0/wasi_unstable.witx +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/witx/p1/typenames.witx +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-37.0.2 → wasmtime-wasi-38.0.4}/witx/p1/wasi_snapshot_preview1.witx +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-io-37.0.2 → wasmtime-wasi-io-38.0.4}/Cargo.toml.orig +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-io-37.0.2 → wasmtime-wasi-io-38.0.4}/src/bindings.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-io-37.0.2 → wasmtime-wasi-io-38.0.4}/src/impls.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-io-37.0.2 → wasmtime-wasi-io-38.0.4}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-io-37.0.2 → wasmtime-wasi-io-38.0.4}/src/poll.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-io-37.0.2 → wasmtime-wasi-io-38.0.4}/src/streams.rs +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-io-37.0.2 → wasmtime-wasi-io-38.0.4}/wit/deps/io/error.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-io-37.0.2 → wasmtime-wasi-io-38.0.4}/wit/deps/io/poll.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-io-37.0.2 → wasmtime-wasi-io-38.0.4}/wit/deps/io/streams.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-io-37.0.2 → wasmtime-wasi-io-38.0.4}/wit/deps/io/world.wit +0 -0
- /data/ext/cargo-vendor/{wasmtime-wasi-io-37.0.2 → wasmtime-wasi-io-38.0.4}/wit/world.wit +0 -0
- /data/ext/cargo-vendor/{wiggle-37.0.2 → wiggle-38.0.4}/Cargo.toml.orig +0 -0
- /data/ext/cargo-vendor/{wiggle-37.0.2 → wiggle-38.0.4}/LICENSE +0 -0
- /data/ext/cargo-vendor/{wiggle-37.0.2 → wiggle-38.0.4}/README.md +0 -0
- /data/ext/cargo-vendor/{wiggle-37.0.2 → wiggle-38.0.4}/src/error.rs +0 -0
- /data/ext/cargo-vendor/{wiggle-37.0.2 → wiggle-38.0.4}/src/guest_type.rs +0 -0
- /data/ext/cargo-vendor/{wiggle-37.0.2 → wiggle-38.0.4}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{wiggle-37.0.2 → wiggle-38.0.4}/src/region.rs +0 -0
- /data/ext/cargo-vendor/{wiggle-generate-37.0.2 → wiggle-generate-38.0.4}/Cargo.toml.orig +0 -0
- /data/ext/cargo-vendor/{wiggle-generate-37.0.2 → wiggle-generate-38.0.4}/LICENSE +0 -0
- /data/ext/cargo-vendor/{wiggle-generate-37.0.2 → wiggle-generate-38.0.4}/README.md +0 -0
- /data/ext/cargo-vendor/{wiggle-generate-37.0.2 → wiggle-generate-38.0.4}/src/codegen_settings.rs +0 -0
- /data/ext/cargo-vendor/{wiggle-generate-37.0.2 → wiggle-generate-38.0.4}/src/config.rs +0 -0
- /data/ext/cargo-vendor/{wiggle-generate-37.0.2 → wiggle-generate-38.0.4}/src/funcs.rs +0 -0
- /data/ext/cargo-vendor/{wiggle-generate-37.0.2 → wiggle-generate-38.0.4}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{wiggle-generate-37.0.2 → wiggle-generate-38.0.4}/src/lifetimes.rs +0 -0
- /data/ext/cargo-vendor/{wiggle-generate-37.0.2 → wiggle-generate-38.0.4}/src/module_trait.rs +0 -0
- /data/ext/cargo-vendor/{wiggle-generate-37.0.2 → wiggle-generate-38.0.4}/src/names.rs +0 -0
- /data/ext/cargo-vendor/{wiggle-generate-37.0.2 → wiggle-generate-38.0.4}/src/types/error.rs +0 -0
- /data/ext/cargo-vendor/{wiggle-generate-37.0.2 → wiggle-generate-38.0.4}/src/types/flags.rs +0 -0
- /data/ext/cargo-vendor/{wiggle-generate-37.0.2 → wiggle-generate-38.0.4}/src/types/handle.rs +0 -0
- /data/ext/cargo-vendor/{wiggle-generate-37.0.2 → wiggle-generate-38.0.4}/src/types/mod.rs +0 -0
- /data/ext/cargo-vendor/{wiggle-generate-37.0.2 → wiggle-generate-38.0.4}/src/types/record.rs +0 -0
- /data/ext/cargo-vendor/{wiggle-generate-37.0.2 → wiggle-generate-38.0.4}/src/types/variant.rs +0 -0
- /data/ext/cargo-vendor/{wiggle-generate-37.0.2 → wiggle-generate-38.0.4}/src/wasmtime.rs +0 -0
- /data/ext/cargo-vendor/{wiggle-macro-37.0.2 → wiggle-macro-38.0.4}/Cargo.toml.orig +0 -0
- /data/ext/cargo-vendor/{wiggle-macro-37.0.2 → wiggle-macro-38.0.4}/LICENSE +0 -0
- /data/ext/cargo-vendor/{wiggle-macro-37.0.2 → wiggle-macro-38.0.4}/build.rs +0 -0
- /data/ext/cargo-vendor/{wiggle-macro-37.0.2 → wiggle-macro-38.0.4}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/Cargo.toml.orig +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/LICENSE +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/build.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/abi/local.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/abi/mod.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/codegen/bounds.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/codegen/builtin.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/codegen/call.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/codegen/context.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/codegen/control.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/codegen/error.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/codegen/mod.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/codegen/phase.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/constant_pool.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/frame/mod.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/isa/aarch64/abi.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/isa/aarch64/address.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/isa/aarch64/asm.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/isa/aarch64/masm.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/isa/aarch64/mod.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/isa/aarch64/regs.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/isa/mod.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/isa/reg.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/isa/x64/abi.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/isa/x64/address.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/isa/x64/asm.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/isa/x64/masm.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/isa/x64/mod.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/isa/x64/regs.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/lib.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/masm.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/regalloc.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/regset.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/stack.rs +0 -0
- /data/ext/cargo-vendor/{winch-codegen-37.0.2 → winch-codegen-38.0.4}/src/visitor.rs +0 -0
|
@@ -0,0 +1,4075 @@
|
|
|
1
|
+
;; s390x instruction selection and CLIF-to-MachInst lowering.
|
|
2
|
+
|
|
3
|
+
;; The main lowering constructor term: takes a clif `Inst` and returns the
|
|
4
|
+
;; register(s) within which the lowered instruction's result values live.
|
|
5
|
+
(decl partial lower (Inst) InstOutput)
|
|
6
|
+
|
|
7
|
+
;; A variant of the main lowering constructor term, used for branches.
|
|
8
|
+
;; The only difference is that it gets an extra argument holding a vector
|
|
9
|
+
;; of branch targets to be used.
|
|
10
|
+
(decl partial lower_branch (Inst MachLabelSlice) Unit)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
;;;; Rules for `iconst` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
14
|
+
|
|
15
|
+
(rule (lower (has_type ty (iconst (u64_from_imm64 n))))
|
|
16
|
+
(imm ty n))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
;;;; Rules for `f16const` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
20
|
+
|
|
21
|
+
(rule (lower (f16const (u16_from_ieee16 x)))
|
|
22
|
+
(imm $F16 x))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
;;;; Rules for `f32const` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
26
|
+
|
|
27
|
+
(rule (lower (f32const (u32_from_ieee32 x)))
|
|
28
|
+
(imm $F32 x))
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
;;;; Rules for `f64const` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
32
|
+
|
|
33
|
+
(rule (lower (f64const (u64_from_ieee64 x)))
|
|
34
|
+
(imm $F64 x))
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
;;;; Rules for `f128const` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
38
|
+
|
|
39
|
+
(rule (lower (f128const (u128_from_constant x)))
|
|
40
|
+
(vec_imm $F128 (be_vec_const $F128 x)))
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
;;;; Rules for `vconst` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
44
|
+
|
|
45
|
+
(rule (lower (has_type ty (vconst (u128_from_constant x))))
|
|
46
|
+
(vec_imm ty (be_vec_const ty x)))
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
;;;; Rules for `nop` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
50
|
+
|
|
51
|
+
(rule (lower (nop))
|
|
52
|
+
(invalid_reg))
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
;;;; Rules for `iconcat` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
56
|
+
|
|
57
|
+
(rule (lower (has_type (vr128_ty ty) (iconcat x y)))
|
|
58
|
+
(mov_to_vec128 ty y x))
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
;;;; Rules for `isplit` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
62
|
+
|
|
63
|
+
(rule (lower (isplit x @ (value_type $I128)))
|
|
64
|
+
(let ((x_reg Reg x)
|
|
65
|
+
(x_hi Reg (vec_extract_lane $I64X2 x_reg 0 (zero_reg)))
|
|
66
|
+
(x_lo Reg (vec_extract_lane $I64X2 x_reg 1 (zero_reg))))
|
|
67
|
+
(output_pair x_lo x_hi)))
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
;;;; Rules for `iadd` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
71
|
+
|
|
72
|
+
;; Add two registers.
|
|
73
|
+
(rule 0 (lower (has_type (fits_in_64 ty) (iadd x y)))
|
|
74
|
+
(add_reg ty x y))
|
|
75
|
+
|
|
76
|
+
;; Add a register and a sign-extended register.
|
|
77
|
+
(rule 8 (lower (has_type (fits_in_64 ty) (iadd x (sext32_value y))))
|
|
78
|
+
(add_reg_sext32 ty x y))
|
|
79
|
+
(rule 15 (lower (has_type (fits_in_64 ty) (iadd (sext32_value x) y)))
|
|
80
|
+
(add_reg_sext32 ty y x))
|
|
81
|
+
|
|
82
|
+
;; Add a register and an immediate.
|
|
83
|
+
(rule 7 (lower (has_type (fits_in_64 ty) (iadd x (i16_from_value y))))
|
|
84
|
+
(add_simm16 ty x y))
|
|
85
|
+
(rule 14 (lower (has_type (fits_in_64 ty) (iadd (i16_from_value x) y)))
|
|
86
|
+
(add_simm16 ty y x))
|
|
87
|
+
(rule 6 (lower (has_type (fits_in_64 ty) (iadd x (i32_from_value y))))
|
|
88
|
+
(add_simm32 ty x y))
|
|
89
|
+
(rule 13 (lower (has_type (fits_in_64 ty) (iadd (i32_from_value x) y)))
|
|
90
|
+
(add_simm32 ty y x))
|
|
91
|
+
|
|
92
|
+
;; Add a register and memory (32/64-bit types).
|
|
93
|
+
(rule 5 (lower (has_type (fits_in_64 ty) (iadd x (sinkable_load_32_64 y))))
|
|
94
|
+
(add_mem ty x (sink_load y)))
|
|
95
|
+
(rule 12 (lower (has_type (fits_in_64 ty) (iadd (sinkable_load_32_64 x) y)))
|
|
96
|
+
(add_mem ty y (sink_load x)))
|
|
97
|
+
|
|
98
|
+
;; Add a register and memory (16-bit types).
|
|
99
|
+
(rule 4 (lower (has_type (fits_in_64 ty) (iadd x (sinkable_load_16 y))))
|
|
100
|
+
(add_mem_sext16 ty x (sink_load y)))
|
|
101
|
+
(rule 11 (lower (has_type (fits_in_64 ty) (iadd (sinkable_load_16 x) y)))
|
|
102
|
+
(add_mem_sext16 ty y (sink_load x)))
|
|
103
|
+
|
|
104
|
+
;; Add a register and sign-extended memory.
|
|
105
|
+
(rule 3 (lower (has_type (fits_in_64 ty) (iadd x (sinkable_sload16 y))))
|
|
106
|
+
(add_mem_sext16 ty x (sink_sload16 y)))
|
|
107
|
+
(rule 10 (lower (has_type (fits_in_64 ty) (iadd (sinkable_sload16 x) y)))
|
|
108
|
+
(add_mem_sext16 ty y (sink_sload16 x)))
|
|
109
|
+
(rule 2 (lower (has_type (fits_in_64 ty) (iadd x (sinkable_sload32 y))))
|
|
110
|
+
(add_mem_sext32 ty x (sink_sload32 y)))
|
|
111
|
+
(rule 9 (lower (has_type (fits_in_64 ty) (iadd (sinkable_sload32 x) y)))
|
|
112
|
+
(add_mem_sext32 ty y (sink_sload32 x)))
|
|
113
|
+
|
|
114
|
+
;; Add two vector registers.
|
|
115
|
+
(rule 1 (lower (has_type (vr128_ty ty) (iadd x y)))
|
|
116
|
+
(vec_add ty x y))
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
;;;; Rules for `uadd_sat` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
120
|
+
|
|
121
|
+
;; Add (saturate unsigned) two vector registers.
|
|
122
|
+
(rule (lower (has_type (ty_vec128 ty) (uadd_sat x y)))
|
|
123
|
+
(let ((sum Reg (vec_add ty x y)))
|
|
124
|
+
(vec_or ty sum (vec_cmphl ty x sum))))
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
;;;; Rules for `sadd_sat` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
128
|
+
|
|
129
|
+
;; Add (saturate signed) two vector registers. $I64X2 not supported.
|
|
130
|
+
(rule (lower (has_type (ty_vec128 ty) (sadd_sat x y)))
|
|
131
|
+
(vec_pack_ssat (vec_widen_type ty)
|
|
132
|
+
(vec_add (vec_widen_type ty) (vec_unpacks_high ty x)
|
|
133
|
+
(vec_unpacks_high ty y))
|
|
134
|
+
(vec_add (vec_widen_type ty) (vec_unpacks_low ty x)
|
|
135
|
+
(vec_unpacks_low ty y))))
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
;;;; Rules for `iadd_pairwise` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
139
|
+
|
|
140
|
+
;; Lane-wise integer pairwise addition for 8-/16/32-bit vector registers.
|
|
141
|
+
(rule (lower (has_type ty @ (multi_lane bits _) (iadd_pairwise x y)))
|
|
142
|
+
(let ((size Reg (vec_imm_splat $I8X16 bits)))
|
|
143
|
+
(vec_pack_lane_order (vec_widen_type ty)
|
|
144
|
+
(vec_add ty x (vec_lshr_by_byte x size))
|
|
145
|
+
(vec_add ty y (vec_lshr_by_byte y size)))))
|
|
146
|
+
|
|
147
|
+
;; special case for the `i32x4.dot_i16x8_s` wasm instruction
|
|
148
|
+
(rule 1 (lower
|
|
149
|
+
(has_type dst_ty (iadd_pairwise
|
|
150
|
+
(imul (swiden_low x @ (value_type src_ty)) (swiden_low y))
|
|
151
|
+
(imul (swiden_high x) (swiden_high y)))))
|
|
152
|
+
(vec_add dst_ty (vec_smul_even src_ty x y)
|
|
153
|
+
(vec_smul_odd src_ty x y)))
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
;;;; Rules for `isub` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
157
|
+
|
|
158
|
+
;; Sub two registers.
|
|
159
|
+
(rule 0 (lower (has_type (fits_in_64 ty) (isub x y)))
|
|
160
|
+
(sub_reg ty x y))
|
|
161
|
+
|
|
162
|
+
;; Sub a register and a sign-extended register.
|
|
163
|
+
(rule 8 (lower (has_type (fits_in_64 ty) (isub x (sext32_value y))))
|
|
164
|
+
(sub_reg_sext32 ty x y))
|
|
165
|
+
|
|
166
|
+
;; Sub a register and an immediate (using add of the negated value).
|
|
167
|
+
(rule 7 (lower (has_type (fits_in_64 ty) (isub x (i16_from_negated_value y))))
|
|
168
|
+
(add_simm16 ty x y))
|
|
169
|
+
(rule 6 (lower (has_type (fits_in_64 ty) (isub x (i32_from_negated_value y))))
|
|
170
|
+
(add_simm32 ty x y))
|
|
171
|
+
|
|
172
|
+
;; Sub a register and memory (32/64-bit types).
|
|
173
|
+
(rule 5 (lower (has_type (fits_in_64 ty) (isub x (sinkable_load_32_64 y))))
|
|
174
|
+
(sub_mem ty x (sink_load y)))
|
|
175
|
+
|
|
176
|
+
;; Sub a register and memory (16-bit types).
|
|
177
|
+
(rule 4 (lower (has_type (fits_in_64 ty) (isub x (sinkable_load_16 y))))
|
|
178
|
+
(sub_mem_sext16 ty x (sink_load y)))
|
|
179
|
+
|
|
180
|
+
;; Sub a register and sign-extended memory.
|
|
181
|
+
(rule 3 (lower (has_type (fits_in_64 ty) (isub x (sinkable_sload16 y))))
|
|
182
|
+
(sub_mem_sext16 ty x (sink_sload16 y)))
|
|
183
|
+
(rule 2 (lower (has_type (fits_in_64 ty) (isub x (sinkable_sload32 y))))
|
|
184
|
+
(sub_mem_sext32 ty x (sink_sload32 y)))
|
|
185
|
+
|
|
186
|
+
;; Sub two vector registers.
|
|
187
|
+
(rule 1 (lower (has_type (vr128_ty ty) (isub x y)))
|
|
188
|
+
(vec_sub ty x y))
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
;;;; Rules for `usub_sat` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
192
|
+
|
|
193
|
+
;; Add (saturate unsigned) two vector registers.
|
|
194
|
+
(rule (lower (has_type (ty_vec128 ty) (usub_sat x y)))
|
|
195
|
+
(vec_and ty (vec_sub ty x y) (vec_cmphl ty x y)))
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
;;;; Rules for `ssub_sat` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
199
|
+
|
|
200
|
+
;; Add (saturate signed) two vector registers. $I64X2 not supported.
|
|
201
|
+
(rule (lower (has_type (ty_vec128 ty) (ssub_sat x y)))
|
|
202
|
+
(vec_pack_ssat (vec_widen_type ty)
|
|
203
|
+
(vec_sub (vec_widen_type ty) (vec_unpacks_high ty x)
|
|
204
|
+
(vec_unpacks_high ty y))
|
|
205
|
+
(vec_sub (vec_widen_type ty) (vec_unpacks_low ty x)
|
|
206
|
+
(vec_unpacks_low ty y))))
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
;;;; Rules for `iabs` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
210
|
+
|
|
211
|
+
;; Absolute value of a register.
|
|
212
|
+
;; For types smaller than 32-bit, the input value must be sign-extended.
|
|
213
|
+
(rule 2 (lower (has_type (fits_in_64 ty) (iabs x)))
|
|
214
|
+
(abs_reg (ty_ext32 ty) (put_in_reg_sext32 x)))
|
|
215
|
+
|
|
216
|
+
;; Absolute value of a sign-extended register.
|
|
217
|
+
(rule 3 (lower (has_type (fits_in_64 ty) (iabs (sext32_value x))))
|
|
218
|
+
(abs_reg_sext32 ty x))
|
|
219
|
+
|
|
220
|
+
;; Absolute value of a vector register.
|
|
221
|
+
(rule 1 (lower (has_type (ty_vec128 ty) (iabs x)))
|
|
222
|
+
(vec_abs ty x))
|
|
223
|
+
|
|
224
|
+
;; Absolute value of a 128-bit integer.
|
|
225
|
+
(rule 0 (lower (has_type $I128 (iabs x)))
|
|
226
|
+
(let ((zero Reg (vec_imm $I128 0))
|
|
227
|
+
(pos Reg x)
|
|
228
|
+
(neg Reg (vec_sub $I128 zero pos))
|
|
229
|
+
(rep Reg (vec_replicate_lane $I64X2 pos 0))
|
|
230
|
+
(mask Reg (vec_cmph $I64X2 zero rep)))
|
|
231
|
+
(vec_select $I128 neg pos mask)))
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
;;;; Rules for `ineg` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
235
|
+
|
|
236
|
+
;; Negate a register.
|
|
237
|
+
(rule 2 (lower (has_type (fits_in_64 ty) (ineg x)))
|
|
238
|
+
(neg_reg ty x))
|
|
239
|
+
|
|
240
|
+
;; Negate a sign-extended register.
|
|
241
|
+
(rule 3 (lower (has_type (fits_in_64 ty) (ineg (sext32_value x))))
|
|
242
|
+
(neg_reg_sext32 ty x))
|
|
243
|
+
|
|
244
|
+
;; Negate a vector register.
|
|
245
|
+
(rule 1 (lower (has_type (ty_vec128 ty) (ineg x)))
|
|
246
|
+
(vec_neg ty x))
|
|
247
|
+
|
|
248
|
+
;; Negate a 128-bit integer.
|
|
249
|
+
(rule 0 (lower (has_type $I128 (ineg x)))
|
|
250
|
+
(vec_sub $I128 (vec_imm $I128 0) x))
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
;;;; Rules for `umax` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
254
|
+
|
|
255
|
+
;; Unsigned maximum of two scalar integers - expand to icmp + select.
|
|
256
|
+
(rule 2 (lower (has_type (fits_in_64 ty) (umax x y)))
|
|
257
|
+
(let ((x_ext Reg (put_in_reg_zext32 x))
|
|
258
|
+
(y_ext Reg (put_in_reg_zext32 y))
|
|
259
|
+
(cond ProducesBool (bool (icmpu_reg (ty_ext32 ty) x_ext y_ext)
|
|
260
|
+
(intcc_as_cond (IntCC.UnsignedLessThan)))))
|
|
261
|
+
(select_bool_reg ty cond y_ext x_ext)))
|
|
262
|
+
|
|
263
|
+
;; Unsigned maximum of two 128-bit integers - expand to icmp + select.
|
|
264
|
+
(rule 1 (lower (has_type $I128 (umax x y)))
|
|
265
|
+
(let ((x_reg Reg (put_in_reg x))
|
|
266
|
+
(y_reg Reg (put_in_reg y))
|
|
267
|
+
(cond ProducesBool (vec_int128_ucmphi y_reg x_reg)))
|
|
268
|
+
(select_bool_reg $I128 cond y_reg x_reg)))
|
|
269
|
+
|
|
270
|
+
;; Unsigned maximum of two vector registers.
|
|
271
|
+
(rule 0 (lower (has_type (ty_vec128 ty) (umax x y)))
|
|
272
|
+
(vec_umax ty x y))
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
;;;; Rules for `umin` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
276
|
+
|
|
277
|
+
;; Unsigned minimum of two scalar integers - expand to icmp + select.
|
|
278
|
+
(rule 2 (lower (has_type (fits_in_64 ty) (umin x y)))
|
|
279
|
+
(let ((x_ext Reg (put_in_reg_zext32 x))
|
|
280
|
+
(y_ext Reg (put_in_reg_zext32 y))
|
|
281
|
+
(cond ProducesBool (bool (icmpu_reg (ty_ext32 ty) x_ext y_ext)
|
|
282
|
+
(intcc_as_cond (IntCC.UnsignedGreaterThan)))))
|
|
283
|
+
(select_bool_reg ty cond y_ext x_ext)))
|
|
284
|
+
|
|
285
|
+
;; Unsigned maximum of two 128-bit integers - expand to icmp + select.
|
|
286
|
+
(rule 1 (lower (has_type $I128 (umin x y)))
|
|
287
|
+
(let ((x_reg Reg (put_in_reg x))
|
|
288
|
+
(y_reg Reg (put_in_reg y))
|
|
289
|
+
(cond ProducesBool (vec_int128_ucmphi x_reg y_reg)))
|
|
290
|
+
(select_bool_reg $I128 cond y_reg x_reg)))
|
|
291
|
+
|
|
292
|
+
;; Unsigned minimum of two vector registers.
|
|
293
|
+
(rule 0 (lower (has_type (ty_vec128 ty) (umin x y)))
|
|
294
|
+
(vec_umin ty x y))
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
;;;; Rules for `smax` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
298
|
+
|
|
299
|
+
;; Signed maximum of two scalar integers - expand to icmp + select.
|
|
300
|
+
(rule 2 (lower (has_type (fits_in_64 ty) (smax x y)))
|
|
301
|
+
(let ((x_ext Reg (put_in_reg_sext32 x))
|
|
302
|
+
(y_ext Reg (put_in_reg_sext32 y))
|
|
303
|
+
(cond ProducesBool (bool (icmps_reg (ty_ext32 ty) x_ext y_ext)
|
|
304
|
+
(intcc_as_cond (IntCC.SignedLessThan)))))
|
|
305
|
+
(select_bool_reg ty cond y_ext x_ext)))
|
|
306
|
+
|
|
307
|
+
;; Signed maximum of two 128-bit integers - expand to icmp + select.
|
|
308
|
+
(rule 1 (lower (has_type $I128 (smax x y)))
|
|
309
|
+
(let ((x_reg Reg (put_in_reg x))
|
|
310
|
+
(y_reg Reg (put_in_reg y))
|
|
311
|
+
(cond ProducesBool (vec_int128_scmphi y_reg x_reg)))
|
|
312
|
+
(select_bool_reg $I128 cond y_reg x_reg)))
|
|
313
|
+
|
|
314
|
+
;; Signed maximum of two vector registers.
|
|
315
|
+
(rule (lower (has_type (ty_vec128 ty) (smax x y)))
|
|
316
|
+
(vec_smax ty x y))
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
;;;; Rules for `smin` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
320
|
+
|
|
321
|
+
;; Signed minimum of two scalar integers - expand to icmp + select.
|
|
322
|
+
(rule 2 (lower (has_type (fits_in_64 ty) (smin x y)))
|
|
323
|
+
(let ((x_ext Reg (put_in_reg_sext32 x))
|
|
324
|
+
(y_ext Reg (put_in_reg_sext32 y))
|
|
325
|
+
(cond ProducesBool (bool (icmps_reg (ty_ext32 ty) x_ext y_ext)
|
|
326
|
+
(intcc_as_cond (IntCC.SignedGreaterThan)))))
|
|
327
|
+
(select_bool_reg ty cond y_ext x_ext)))
|
|
328
|
+
|
|
329
|
+
;; Signed maximum of two 128-bit integers - expand to icmp + select.
|
|
330
|
+
(rule 1 (lower (has_type $I128 (smin x y)))
|
|
331
|
+
(let ((x_reg Reg (put_in_reg x))
|
|
332
|
+
(y_reg Reg (put_in_reg y))
|
|
333
|
+
(cond ProducesBool (vec_int128_scmphi x_reg y_reg)))
|
|
334
|
+
(select_bool_reg $I128 cond y_reg x_reg)))
|
|
335
|
+
|
|
336
|
+
;; Signed minimum of two vector registers.
|
|
337
|
+
(rule (lower (has_type (ty_vec128 ty) (smin x y)))
|
|
338
|
+
(vec_smin ty x y))
|
|
339
|
+
|
|
340
|
+
|
|
341
|
+
;;;; Rules for `avg_round` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
342
|
+
|
|
343
|
+
;; Unsigned average of two vector registers.
|
|
344
|
+
(rule (lower (has_type (ty_vec128 ty) (avg_round x y)))
|
|
345
|
+
(vec_uavg ty x y))
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
;;;; Rules for `imul` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
349
|
+
|
|
350
|
+
;; Multiply two registers.
|
|
351
|
+
(rule 0 (lower (has_type (fits_in_64 ty) (imul x y)))
|
|
352
|
+
(mul_reg ty x y))
|
|
353
|
+
|
|
354
|
+
;; Multiply a register and a sign-extended register.
|
|
355
|
+
(rule 8 (lower (has_type (fits_in_64 ty) (imul x (sext32_value y))))
|
|
356
|
+
(mul_reg_sext32 ty x y))
|
|
357
|
+
(rule 15 (lower (has_type (fits_in_64 ty) (imul (sext32_value x) y)))
|
|
358
|
+
(mul_reg_sext32 ty y x))
|
|
359
|
+
|
|
360
|
+
;; Multiply a register and an immediate.
|
|
361
|
+
(rule 7 (lower (has_type (fits_in_64 ty) (imul x (i16_from_value y))))
|
|
362
|
+
(mul_simm16 ty x y))
|
|
363
|
+
(rule 14 (lower (has_type (fits_in_64 ty) (imul (i16_from_value x) y)))
|
|
364
|
+
(mul_simm16 ty y x))
|
|
365
|
+
(rule 6 (lower (has_type (fits_in_64 ty) (imul x (i32_from_value y))))
|
|
366
|
+
(mul_simm32 ty x y))
|
|
367
|
+
(rule 13 (lower (has_type (fits_in_64 ty) (imul (i32_from_value x) y)))
|
|
368
|
+
(mul_simm32 ty y x))
|
|
369
|
+
|
|
370
|
+
;; Multiply a register and memory (32/64-bit types).
|
|
371
|
+
(rule 5 (lower (has_type (fits_in_64 ty) (imul x (sinkable_load_32_64 y))))
|
|
372
|
+
(mul_mem ty x (sink_load y)))
|
|
373
|
+
(rule 12 (lower (has_type (fits_in_64 ty) (imul (sinkable_load_32_64 x) y)))
|
|
374
|
+
(mul_mem ty y (sink_load x)))
|
|
375
|
+
|
|
376
|
+
;; Multiply a register and memory (16-bit types).
|
|
377
|
+
(rule 4 (lower (has_type (fits_in_64 ty) (imul x (sinkable_load_16 y))))
|
|
378
|
+
(mul_mem_sext16 ty x (sink_load y)))
|
|
379
|
+
(rule 11 (lower (has_type (fits_in_64 ty) (imul (sinkable_load_16 x) y)))
|
|
380
|
+
(mul_mem_sext16 ty y (sink_load x)))
|
|
381
|
+
|
|
382
|
+
;; Multiply a register and sign-extended memory.
|
|
383
|
+
(rule 3 (lower (has_type (fits_in_64 ty) (imul x (sinkable_sload16 y))))
|
|
384
|
+
(mul_mem_sext16 ty x (sink_sload16 y)))
|
|
385
|
+
(rule 10 (lower (has_type (fits_in_64 ty) (imul (sinkable_sload16 x) y)))
|
|
386
|
+
(mul_mem_sext16 ty y (sink_sload16 x)))
|
|
387
|
+
(rule 2 (lower (has_type (fits_in_64 ty) (imul x (sinkable_sload32 y))))
|
|
388
|
+
(mul_mem_sext32 ty x (sink_sload32 y)))
|
|
389
|
+
(rule 9 (lower (has_type (fits_in_64 ty) (imul (sinkable_sload32 x) y)))
|
|
390
|
+
(mul_mem_sext32 ty y (sink_sload32 x)))
|
|
391
|
+
|
|
392
|
+
;; Multiply two vector registers, using a helper.
|
|
393
|
+
(decl vec_mul_impl (Type Reg Reg) Reg)
|
|
394
|
+
(rule 1 (lower (has_type (vr128_ty ty) (imul x y)))
|
|
395
|
+
(vec_mul_impl ty x y))
|
|
396
|
+
|
|
397
|
+
;; Multiply two vector registers - byte, halfword, and word.
|
|
398
|
+
(rule (vec_mul_impl $I8X16 x y) (vec_mul $I8X16 x y))
|
|
399
|
+
(rule (vec_mul_impl $I16X8 x y) (vec_mul $I16X8 x y))
|
|
400
|
+
(rule (vec_mul_impl $I32X4 x y) (vec_mul $I32X4 x y))
|
|
401
|
+
|
|
402
|
+
;; Multiply two vector registers - doubleword. Has to be scalarized.
|
|
403
|
+
(rule (vec_mul_impl $I64X2 x y)
|
|
404
|
+
(mov_to_vec128 $I64X2
|
|
405
|
+
(mul_reg $I64 (vec_extract_lane $I64X2 x 0 (zero_reg))
|
|
406
|
+
(vec_extract_lane $I64X2 y 0 (zero_reg)))
|
|
407
|
+
(mul_reg $I64 (vec_extract_lane $I64X2 x 1 (zero_reg))
|
|
408
|
+
(vec_extract_lane $I64X2 y 1 (zero_reg)))))
|
|
409
|
+
|
|
410
|
+
;; Multiply two vector registers - quadword.
|
|
411
|
+
(rule (vec_mul_impl $I128 x y)
|
|
412
|
+
(let ((x_hi Reg (vec_extract_lane $I64X2 x 0 (zero_reg)))
|
|
413
|
+
(x_lo Reg (vec_extract_lane $I64X2 x 1 (zero_reg)))
|
|
414
|
+
(y_hi Reg (vec_extract_lane $I64X2 y 0 (zero_reg)))
|
|
415
|
+
(y_lo Reg (vec_extract_lane $I64X2 y 1 (zero_reg)))
|
|
416
|
+
(lo_pair RegPair (umul_wide x_lo y_lo))
|
|
417
|
+
(res_lo Reg (regpair_lo lo_pair))
|
|
418
|
+
(res_hi_1 Reg (regpair_hi lo_pair))
|
|
419
|
+
(res_hi_2 Reg (mul_reg $I64 x_lo y_hi))
|
|
420
|
+
(res_hi_3 Reg (mul_reg $I64 x_hi y_lo))
|
|
421
|
+
(res_hi Reg (add_reg $I64 res_hi_3 (add_reg $I64 res_hi_2 res_hi_1))))
|
|
422
|
+
(mov_to_vec128 $I64X2 res_hi res_lo)))
|
|
423
|
+
|
|
424
|
+
;; Special-case the lowering of a 128-bit multiply where the operands are sign
|
|
425
|
+
;; or zero extended. This maps directly to `umul_wide` and `smul_wide`.
|
|
426
|
+
(rule 16 (lower (has_type $I128 (imul (uextend x) (uextend y))))
|
|
427
|
+
(let ((pair RegPair (umul_wide (put_in_reg_zext64 x) (put_in_reg_zext64 y))))
|
|
428
|
+
(mov_to_vec128 $I64X2 (regpair_hi pair) (regpair_lo pair))))
|
|
429
|
+
|
|
430
|
+
(rule 16 (lower (has_type $I128 (imul (sextend x) (sextend y))))
|
|
431
|
+
(let ((pair RegPair (smul_wide (put_in_reg_sext64 x) (put_in_reg_sext64 y))))
|
|
432
|
+
(mov_to_vec128 $I64X2 (regpair_hi pair) (regpair_lo pair))))
|
|
433
|
+
|
|
434
|
+
;;;; Rules for `umulhi` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
435
|
+
|
|
436
|
+
;; Multiply high part unsigned, 8-bit or 16-bit types. (Uses 32-bit multiply.)
|
|
437
|
+
(rule -1 (lower (has_type (ty_8_or_16 ty) (umulhi x y)))
|
|
438
|
+
(let ((ext_reg_x Reg (put_in_reg_zext32 x))
|
|
439
|
+
(ext_reg_y Reg (put_in_reg_zext32 y))
|
|
440
|
+
(ext_mul Reg (mul_reg $I32 ext_reg_x ext_reg_y)))
|
|
441
|
+
(lshr_imm $I32 ext_mul (ty_bits ty))))
|
|
442
|
+
|
|
443
|
+
;; Multiply high part unsigned, 32-bit types. (Uses 64-bit multiply.)
|
|
444
|
+
(rule (lower (has_type $I32 (umulhi x y)))
|
|
445
|
+
(let ((ext_reg_x Reg (put_in_reg_zext64 x))
|
|
446
|
+
(ext_reg_y Reg (put_in_reg_zext64 y))
|
|
447
|
+
(ext_mul Reg (mul_reg $I64 ext_reg_x ext_reg_y)))
|
|
448
|
+
(lshr_imm $I64 ext_mul 32)))
|
|
449
|
+
|
|
450
|
+
;; Multiply high part unsigned, 64-bit types. (Uses umul_wide.)
|
|
451
|
+
(rule (lower (has_type $I64 (umulhi x y)))
|
|
452
|
+
(let ((pair RegPair (umul_wide x y)))
|
|
453
|
+
(regpair_hi pair)))
|
|
454
|
+
|
|
455
|
+
;; Multiply high part unsigned, vector types with 8-, 16-, or 32-bit elements.
|
|
456
|
+
(rule (lower (has_type $I8X16 (umulhi x y))) (vec_umulhi $I8X16 x y))
|
|
457
|
+
(rule (lower (has_type $I16X8 (umulhi x y))) (vec_umulhi $I16X8 x y))
|
|
458
|
+
(rule (lower (has_type $I32X4 (umulhi x y))) (vec_umulhi $I32X4 x y))
|
|
459
|
+
|
|
460
|
+
;; Multiply high part unsigned, vector types with 64-bit elements.
|
|
461
|
+
;; Has to be scalarized.
|
|
462
|
+
(rule (lower (has_type $I64X2 (umulhi x y)))
|
|
463
|
+
(let ((pair_0 RegPair (umul_wide (vec_extract_lane $I64X2 x 0 (zero_reg))
|
|
464
|
+
(vec_extract_lane $I64X2 y 0 (zero_reg))))
|
|
465
|
+
(res_0 Reg (regpair_hi pair_0))
|
|
466
|
+
(pair_1 RegPair (umul_wide (vec_extract_lane $I64X2 x 1 (zero_reg))
|
|
467
|
+
(vec_extract_lane $I64X2 y 1 (zero_reg))))
|
|
468
|
+
(res_1 Reg (regpair_hi pair_1)))
|
|
469
|
+
(mov_to_vec128 $I64X2 res_0 res_1)))
|
|
470
|
+
|
|
471
|
+
|
|
472
|
+
;;;; Rules for `smulhi` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
473
|
+
|
|
474
|
+
;; Multiply high part signed, 8-bit or 16-bit types. (Uses 32-bit multiply.)
|
|
475
|
+
(rule -1 (lower (has_type (ty_8_or_16 ty) (smulhi x y)))
|
|
476
|
+
(let ((ext_reg_x Reg (put_in_reg_sext32 x))
|
|
477
|
+
(ext_reg_y Reg (put_in_reg_sext32 y))
|
|
478
|
+
(ext_mul Reg (mul_reg $I32 ext_reg_x ext_reg_y)))
|
|
479
|
+
(ashr_imm $I32 ext_mul (ty_bits ty))))
|
|
480
|
+
|
|
481
|
+
;; Multiply high part signed, 32-bit types. (Uses 64-bit multiply.)
|
|
482
|
+
(rule (lower (has_type $I32 (smulhi x y)))
|
|
483
|
+
(let ((ext_reg_x Reg (put_in_reg_sext64 x))
|
|
484
|
+
(ext_reg_y Reg (put_in_reg_sext64 y))
|
|
485
|
+
(ext_mul Reg (mul_reg $I64 ext_reg_x ext_reg_y)))
|
|
486
|
+
(ashr_imm $I64 ext_mul 32)))
|
|
487
|
+
|
|
488
|
+
;; Multiply high part signed, 64-bit types. (Uses smul_wide.)
|
|
489
|
+
(rule (lower (has_type $I64 (smulhi x y)))
|
|
490
|
+
(let ((pair RegPair (smul_wide x y)))
|
|
491
|
+
(regpair_hi pair)))
|
|
492
|
+
|
|
493
|
+
;; Multiply high part signed, vector types with 8-, 16-, or 32-bit elements.
|
|
494
|
+
(rule (lower (has_type $I8X16 (smulhi x y))) (vec_smulhi $I8X16 x y))
|
|
495
|
+
(rule (lower (has_type $I16X8 (smulhi x y))) (vec_smulhi $I16X8 x y))
|
|
496
|
+
(rule (lower (has_type $I32X4 (smulhi x y))) (vec_smulhi $I32X4 x y))
|
|
497
|
+
|
|
498
|
+
;; Multiply high part unsigned, vector types with 64-bit elements.
|
|
499
|
+
;; Has to be scalarized.
|
|
500
|
+
(rule (lower (has_type $I64X2 (smulhi x y)))
|
|
501
|
+
(let ((pair_0 RegPair (smul_wide (vec_extract_lane $I64X2 x 0 (zero_reg))
|
|
502
|
+
(vec_extract_lane $I64X2 y 0 (zero_reg))))
|
|
503
|
+
(res_0 Reg (copy_reg $I64 (regpair_hi pair_0)))
|
|
504
|
+
(pair_1 RegPair (smul_wide (vec_extract_lane $I64X2 x 1 (zero_reg))
|
|
505
|
+
(vec_extract_lane $I64X2 y 1 (zero_reg))))
|
|
506
|
+
(res_1 Reg (regpair_hi pair_1)))
|
|
507
|
+
(mov_to_vec128 $I64X2 res_0 res_1)))
|
|
508
|
+
|
|
509
|
+
|
|
510
|
+
;;;; Rules for `sqmul_round_sat` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
511
|
+
|
|
512
|
+
;; Fixed-point multiplication of two vector registers.
|
|
513
|
+
(rule (lower (has_type (ty_vec128 ty) (sqmul_round_sat x y)))
|
|
514
|
+
(vec_pack_ssat (vec_widen_type ty)
|
|
515
|
+
(sqmul_impl (vec_widen_type ty)
|
|
516
|
+
(vec_unpacks_high ty x)
|
|
517
|
+
(vec_unpacks_high ty y))
|
|
518
|
+
(sqmul_impl (vec_widen_type ty)
|
|
519
|
+
(vec_unpacks_low ty x)
|
|
520
|
+
(vec_unpacks_low ty y))))
|
|
521
|
+
|
|
522
|
+
;; Helper to perform the rounded multiply in the wider type.
|
|
523
|
+
(decl sqmul_impl (Type Reg Reg) Reg)
|
|
524
|
+
(rule (sqmul_impl $I32X4 x y)
|
|
525
|
+
(vec_ashr_imm $I32X4 (vec_add $I32X4 (vec_mul_impl $I32X4 x y)
|
|
526
|
+
(vec_imm_bit_mask $I32X4 17 17))
|
|
527
|
+
15))
|
|
528
|
+
(rule (sqmul_impl $I64X2 x y)
|
|
529
|
+
(vec_ashr_imm $I64X2 (vec_add $I64X2 (vec_mul_impl $I64X2 x y)
|
|
530
|
+
(vec_imm_bit_mask $I64X2 33 33))
|
|
531
|
+
31))
|
|
532
|
+
|
|
533
|
+
|
|
534
|
+
;;;; Rules for `udiv` and `urem` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
535
|
+
|
|
536
|
+
;; Divide two registers. The architecture provides combined udiv / urem
|
|
537
|
+
;; instructions with the following combination of data types:
|
|
538
|
+
;;
|
|
539
|
+
;; - 64-bit dividend (split across a 2x32-bit register pair),
|
|
540
|
+
;; 32-bit divisor (in a single input register)
|
|
541
|
+
;; 32-bit quotient & remainder (in a 2x32-bit register pair)
|
|
542
|
+
;;
|
|
543
|
+
;; - 128-bit dividend (split across a 2x64-bit register pair),
|
|
544
|
+
;; 64-bit divisor (in a single input register)
|
|
545
|
+
;; 64-bit quotient & remainder (in a 2x64-bit register pair)
|
|
546
|
+
;;
|
|
547
|
+
;; We use the first variant for 32-bit and smaller input types,
|
|
548
|
+
;; and the second variant for 64-bit input types.
|
|
549
|
+
|
|
550
|
+
;; Implement `udiv`.
|
|
551
|
+
(rule (lower (has_type (fits_in_64 ty) (udiv x y)))
|
|
552
|
+
(let (
|
|
553
|
+
;; Look at the divisor to determine whether we need to generate
|
|
554
|
+
;; an explicit division-by zero check.
|
|
555
|
+
;; Load up the dividend, by loading the input (possibly zero-
|
|
556
|
+
;; extended) input into the low half of the register pair,
|
|
557
|
+
;; and setting the high half to zero.
|
|
558
|
+
(ext_x RegPair (regpair (imm (ty_ext32 ty) 0)
|
|
559
|
+
(put_in_reg_zext32 x)))
|
|
560
|
+
;; Load up the divisor, zero-extended if necessary.
|
|
561
|
+
(ext_y Reg (put_in_reg_zext32 y))
|
|
562
|
+
(ext_ty Type (ty_ext32 ty))
|
|
563
|
+
;; Emit the actual divide instruction.
|
|
564
|
+
(pair RegPair (udivmod ext_ty ext_x ext_y)))
|
|
565
|
+
;; The quotient can be found in the low half of the result.
|
|
566
|
+
(regpair_lo pair)))
|
|
567
|
+
|
|
568
|
+
;; Implement `urem`. Same as `udiv`, but finds the remainder in
|
|
569
|
+
;; the high half of the result register pair instead.
|
|
570
|
+
(rule (lower (has_type (fits_in_64 ty) (urem x y)))
|
|
571
|
+
(let ((ext_x RegPair (regpair (imm (ty_ext32 ty) 0)
|
|
572
|
+
(put_in_reg_zext32 x)))
|
|
573
|
+
(ext_y Reg (put_in_reg_zext32 y))
|
|
574
|
+
(ext_ty Type (ty_ext32 ty))
|
|
575
|
+
(pair RegPair (udivmod ext_ty ext_x ext_y)))
|
|
576
|
+
(regpair_hi pair)))
|
|
577
|
+
|
|
578
|
+
|
|
579
|
+
;;;; Rules for `sdiv` and `srem` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
580
|
+
|
|
581
|
+
;; Divide two registers. The architecture provides combined sdiv / srem
|
|
582
|
+
;; instructions with the following combination of data types:
|
|
583
|
+
;;
|
|
584
|
+
;; - 64-bit dividend (in the low half of a 2x64-bit register pair),
|
|
585
|
+
;; 32-bit divisor (in a single input register)
|
|
586
|
+
;; 64-bit quotient & remainder (in a 2x64-bit register pair)
|
|
587
|
+
;;
|
|
588
|
+
;; - 64-bit dividend (in the low half of a 2x64-bit register pair),
|
|
589
|
+
;; 64-bit divisor (in a single input register)
|
|
590
|
+
;; 64-bit quotient & remainder (in a 2x64-bit register pair)
|
|
591
|
+
;;
|
|
592
|
+
;; We use the first variant for 32-bit and smaller input types,
|
|
593
|
+
;; and the second variant for 64-bit input types.
|
|
594
|
+
|
|
595
|
+
;; Implement `sdiv`.
|
|
596
|
+
(rule (lower (has_type (fits_in_64 ty) (sdiv x y)))
|
|
597
|
+
(let (
|
|
598
|
+
;; Look at the divisor to determine whether we need to generate
|
|
599
|
+
;; explicit division-by-zero and/or integer-overflow checks.
|
|
600
|
+
(OFcheck bool (div_overflow_check_needed y))
|
|
601
|
+
;; Load up the dividend (sign-extended to 64-bit)
|
|
602
|
+
(ext_x Reg (put_in_reg_sext64 x))
|
|
603
|
+
;; Load up the divisor (sign-extended if necessary).
|
|
604
|
+
(ext_y Reg (put_in_reg_sext32 y))
|
|
605
|
+
(ext_ty Type (ty_ext32 ty))
|
|
606
|
+
;; Perform integer-overflow check if necessary.
|
|
607
|
+
(_ Reg (maybe_trap_if_sdiv_overflow OFcheck ext_ty ty ext_x ext_y))
|
|
608
|
+
;; Emit the actual divide instruction.
|
|
609
|
+
(pair RegPair (sdivmod ext_ty ext_x ext_y)))
|
|
610
|
+
;; The quotient can be found in the low half of the result.
|
|
611
|
+
(regpair_lo pair)))
|
|
612
|
+
|
|
613
|
+
;; Implement `srem`. Same as `sdiv`, but finds the remainder in
|
|
614
|
+
;; the high half of the result register pair instead. Also, handle
|
|
615
|
+
;; the integer overflow case differently, see below.
|
|
616
|
+
(rule (lower (has_type (fits_in_64 ty) (srem x y)))
|
|
617
|
+
(let ((OFcheck bool (div_overflow_check_needed y))
|
|
618
|
+
(ext_x Reg (put_in_reg_sext64 x))
|
|
619
|
+
(ext_y Reg (put_in_reg_sext32 y))
|
|
620
|
+
(ext_ty Type (ty_ext32 ty))
|
|
621
|
+
(checked_x Reg (maybe_avoid_srem_overflow OFcheck ext_ty ext_x ext_y))
|
|
622
|
+
(pair RegPair (sdivmod ext_ty checked_x ext_y)))
|
|
623
|
+
(regpair_hi pair)))
|
|
624
|
+
|
|
625
|
+
;; Determine whether we need to perform an integer-overflow check.
|
|
626
|
+
;;
|
|
627
|
+
;; We never rely on the divide instruction itself to trap; while that trap
|
|
628
|
+
;; would indeed happen, we have no way of signalling two different trap
|
|
629
|
+
;; conditions from the same instruction. By explicitly checking for the
|
|
630
|
+
;; integer-overflow case ahead of time, any hardware trap in the divide
|
|
631
|
+
;; instruction is guaranteed to indicate division-by-zero.
|
|
632
|
+
;;
|
|
633
|
+
;; In addition, for types smaller than 64 bits we would have to perform
|
|
634
|
+
;; the check explicitly anyway, since the instruction provides a 64-bit
|
|
635
|
+
;; quotient and only traps if *that* overflows.
|
|
636
|
+
;;
|
|
637
|
+
;; However, the only case where integer overflow can occur is if the
|
|
638
|
+
;; minimum (signed) integer value is divided by -1, so if the divisor
|
|
639
|
+
;; is any immediate different from -1, the check can be omitted.
|
|
640
|
+
(decl div_overflow_check_needed (Value) bool)
|
|
641
|
+
(rule 1 (div_overflow_check_needed (i64_from_value x))
|
|
642
|
+
(if (i64_not_neg1 x))
|
|
643
|
+
false)
|
|
644
|
+
(rule (div_overflow_check_needed _) true)
|
|
645
|
+
|
|
646
|
+
;; Perform the integer-overflow check if necessary. This implements:
|
|
647
|
+
;;
|
|
648
|
+
;; if divisor == INT_MIN && dividend == -1 { trap }
|
|
649
|
+
;;
|
|
650
|
+
;; but to avoid introducing control flow, it is actually done as:
|
|
651
|
+
;;
|
|
652
|
+
;; if ((divisor ^ INT_MAX) & dividend) == -1 { trap }
|
|
653
|
+
;;
|
|
654
|
+
;; instead, using a single conditional trap instruction.
|
|
655
|
+
(decl maybe_trap_if_sdiv_overflow (bool Type Type Reg Reg) Reg)
|
|
656
|
+
(rule (maybe_trap_if_sdiv_overflow false ext_ty _ _ _) (invalid_reg))
|
|
657
|
+
(rule (maybe_trap_if_sdiv_overflow true ext_ty ty x y)
|
|
658
|
+
(let ((int_max Reg (imm ext_ty (int_max ty)))
|
|
659
|
+
(reg Reg (and_reg ext_ty (xor_reg ext_ty int_max x) y)))
|
|
660
|
+
(icmps_simm16_and_trap ext_ty reg -1
|
|
661
|
+
(intcc_as_cond (IntCC.Equal))
|
|
662
|
+
(trap_code_integer_overflow))))
|
|
663
|
+
(decl int_max (Type) u64)
|
|
664
|
+
(rule (int_max $I8) 0x7f)
|
|
665
|
+
(rule (int_max $I16) 0x7fff)
|
|
666
|
+
(rule (int_max $I32) 0x7fffffff)
|
|
667
|
+
(rule (int_max $I64) 0x7fffffffffffffff)
|
|
668
|
+
|
|
669
|
+
;; When performing `srem`, we do not want to trap in the
|
|
670
|
+
;; integer-overflow scenario, because it is only the quotient
|
|
671
|
+
;; that overflows, not the remainder.
|
|
672
|
+
;;
|
|
673
|
+
;; For types smaller than 64 bits, we can simply let the
|
|
674
|
+
;; instruction execute, since (as above) it will never trap.
|
|
675
|
+
;;
|
|
676
|
+
;; For 64-bit inputs, we check whether the divisor is -1, and
|
|
677
|
+
;; if so simply replace the dividend by zero, which will give
|
|
678
|
+
;; the correct result, since any value modulo -1 is zero.
|
|
679
|
+
;;
|
|
680
|
+
;; (We could in fact avoid executing the divide instruction
|
|
681
|
+
;; at all in this case, but that would require introducing
|
|
682
|
+
;; control flow.)
|
|
683
|
+
(decl maybe_avoid_srem_overflow (bool Type Reg Reg) Reg)
|
|
684
|
+
(rule (maybe_avoid_srem_overflow false _ x _) x)
|
|
685
|
+
(rule (maybe_avoid_srem_overflow true $I32 x _) x)
|
|
686
|
+
(rule (maybe_avoid_srem_overflow true $I64 x y)
|
|
687
|
+
(with_flags_reg (icmps_simm16 $I64 y -1)
|
|
688
|
+
(cmov_imm $I64 (intcc_as_cond (IntCC.Equal)) 0 x)))
|
|
689
|
+
|
|
690
|
+
|
|
691
|
+
;;;; Rules for `ishl` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
692
|
+
|
|
693
|
+
;; Shift left, shift amount in register.
|
|
694
|
+
(rule 0 (lower (has_type (fits_in_64 ty) (ishl x y)))
|
|
695
|
+
(let ((masked_amt Reg (mask_amt_reg ty (amt_reg y))))
|
|
696
|
+
(lshl_reg ty x masked_amt)))
|
|
697
|
+
|
|
698
|
+
;; Shift left, immediate shift amount.
|
|
699
|
+
(rule 1 (lower (has_type (fits_in_64 ty) (ishl x (i64_from_value y))))
|
|
700
|
+
(let ((masked_amt u8 (mask_amt_imm ty y)))
|
|
701
|
+
(lshl_imm ty x masked_amt)))
|
|
702
|
+
|
|
703
|
+
;; Vector shift left, shift amount in register.
|
|
704
|
+
(rule 2 (lower (has_type (ty_vec128 ty) (ishl x y)))
|
|
705
|
+
(vec_lshl_reg ty x (amt_reg y)))
|
|
706
|
+
|
|
707
|
+
;; Vector shift left, immediate shift amount.
|
|
708
|
+
(rule 3 (lower (has_type (ty_vec128 ty) (ishl x (i64_from_value y))))
|
|
709
|
+
(let ((masked_amt u8 (mask_amt_imm ty y)))
|
|
710
|
+
(vec_lshl_imm ty x masked_amt)))
|
|
711
|
+
|
|
712
|
+
;; 128-bit vector shift left.
|
|
713
|
+
(rule 4 (lower (has_type $I128 (ishl x y)))
|
|
714
|
+
(let ((amt Reg (amt_vr y)))
|
|
715
|
+
(vec_lshl_by_bit (vec_lshl_by_byte x amt) amt)))
|
|
716
|
+
|
|
717
|
+
|
|
718
|
+
;;;; Rules for `ushr` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
719
|
+
|
|
720
|
+
;; Shift right logical, shift amount in register.
|
|
721
|
+
;; For types smaller than 32-bit, the input value must be zero-extended.
|
|
722
|
+
(rule 0 (lower (has_type (fits_in_64 ty) (ushr x y)))
|
|
723
|
+
(let ((ext_reg Reg (put_in_reg_zext32 x))
|
|
724
|
+
(masked_amt Reg (mask_amt_reg ty (amt_reg y))))
|
|
725
|
+
(lshr_reg (ty_ext32 ty) ext_reg masked_amt)))
|
|
726
|
+
|
|
727
|
+
;; Shift right logical, immediate shift amount.
|
|
728
|
+
;; For types smaller than 32-bit, the input value must be zero-extended.
|
|
729
|
+
(rule 1 (lower (has_type (fits_in_64 ty) (ushr x (i64_from_value y))))
|
|
730
|
+
(let ((ext_reg Reg (put_in_reg_zext32 x))
|
|
731
|
+
(masked_amt u8 (mask_amt_imm ty y)))
|
|
732
|
+
(lshr_imm (ty_ext32 ty) ext_reg masked_amt)))
|
|
733
|
+
|
|
734
|
+
;; Vector shift right logical, shift amount in register.
|
|
735
|
+
(rule 2 (lower (has_type (ty_vec128 ty) (ushr x y)))
|
|
736
|
+
(vec_lshr_reg ty x (amt_reg y)))
|
|
737
|
+
|
|
738
|
+
;; Vector shift right logical, immediate shift amount.
|
|
739
|
+
(rule 3 (lower (has_type (ty_vec128 ty) (ushr x (i64_from_value y))))
|
|
740
|
+
(let ((masked_amt u8 (mask_amt_imm ty y)))
|
|
741
|
+
(vec_lshr_imm ty x masked_amt)))
|
|
742
|
+
|
|
743
|
+
;; 128-bit vector shift right logical.
|
|
744
|
+
(rule 4 (lower (has_type $I128 (ushr x y)))
|
|
745
|
+
(let ((amt Reg (amt_vr y)))
|
|
746
|
+
(vec_lshr_by_bit (vec_lshr_by_byte x amt) amt)))
|
|
747
|
+
|
|
748
|
+
|
|
749
|
+
;;;; Rules for `sshr` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
750
|
+
|
|
751
|
+
;; Shift right arithmetic, shift amount in register.
|
|
752
|
+
;; For types smaller than 32-bit, the input value must be sign-extended.
|
|
753
|
+
(rule 0 (lower (has_type (fits_in_64 ty) (sshr x y)))
|
|
754
|
+
(let ((ext_reg Reg (put_in_reg_sext32 x))
|
|
755
|
+
(masked_amt Reg (mask_amt_reg ty (amt_reg y))))
|
|
756
|
+
(ashr_reg (ty_ext32 ty) ext_reg masked_amt)))
|
|
757
|
+
|
|
758
|
+
;; Shift right arithmetic, immediate shift amount.
|
|
759
|
+
;; For types smaller than 32-bit, the input value must be sign-extended.
|
|
760
|
+
(rule 1 (lower (has_type (fits_in_64 ty) (sshr x (i64_from_value y))))
|
|
761
|
+
(let ((ext_reg Reg (put_in_reg_sext32 x))
|
|
762
|
+
(masked_amt u8 (mask_amt_imm ty y)))
|
|
763
|
+
(ashr_imm (ty_ext32 ty) ext_reg masked_amt)))
|
|
764
|
+
|
|
765
|
+
;; Vector shift right arithmetic, shift amount in register.
|
|
766
|
+
(rule 2 (lower (has_type (ty_vec128 ty) (sshr x y)))
|
|
767
|
+
(vec_ashr_reg ty x (amt_reg y)))
|
|
768
|
+
|
|
769
|
+
;; Vector shift right arithmetic, immediate shift amount.
|
|
770
|
+
(rule 3 (lower (has_type (ty_vec128 ty) (sshr x (i64_from_value y))))
|
|
771
|
+
(let ((masked_amt u8 (mask_amt_imm ty y)))
|
|
772
|
+
(vec_ashr_imm ty x masked_amt)))
|
|
773
|
+
|
|
774
|
+
;; 128-bit vector shift right arithmetic.
|
|
775
|
+
(rule 4 (lower (has_type $I128 (sshr x y)))
|
|
776
|
+
(let ((amt Reg (amt_vr y)))
|
|
777
|
+
(vec_ashr_by_bit (vec_ashr_by_byte x amt) amt)))
|
|
778
|
+
|
|
779
|
+
|
|
780
|
+
;;;; Rules for `rotl` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
781
|
+
|
|
782
|
+
;; Rotate left, shift amount in register. 32-bit or 64-bit types.
|
|
783
|
+
(rule 0 (lower (has_type (ty_32_or_64 ty) (rotl x y)))
|
|
784
|
+
(rot_reg ty x (amt_reg y)))
|
|
785
|
+
|
|
786
|
+
;; Rotate left arithmetic, immediate shift amount. 32-bit or 64-bit types.
|
|
787
|
+
(rule 1 (lower (has_type (ty_32_or_64 ty) (rotl x (i64_from_value y))))
|
|
788
|
+
(let ((masked_amt u8 (mask_amt_imm ty y)))
|
|
789
|
+
(rot_imm ty x masked_amt)))
|
|
790
|
+
|
|
791
|
+
;; Rotate left, shift amount in register. 8-bit or 16-bit types.
|
|
792
|
+
;; Implemented via a pair of 32-bit shifts on the zero-extended input.
|
|
793
|
+
(rule 2 (lower (has_type (ty_8_or_16 ty) (rotl x y)))
|
|
794
|
+
(let ((ext_reg Reg (put_in_reg_zext32 x))
|
|
795
|
+
(ext_ty Type (ty_ext32 ty))
|
|
796
|
+
(pos_amt Reg (amt_reg y))
|
|
797
|
+
(neg_amt Reg (neg_reg $I32 pos_amt))
|
|
798
|
+
(masked_pos_amt Reg (mask_amt_reg ty pos_amt))
|
|
799
|
+
(masked_neg_amt Reg (mask_amt_reg ty neg_amt)))
|
|
800
|
+
(or_reg ty (lshl_reg ext_ty ext_reg masked_pos_amt)
|
|
801
|
+
(lshr_reg ext_ty ext_reg masked_neg_amt))))
|
|
802
|
+
|
|
803
|
+
;; Rotate left, immediate shift amount. 8-bit or 16-bit types.
|
|
804
|
+
;; Implemented via a pair of 32-bit shifts on the zero-extended input.
|
|
805
|
+
(rule 3 (lower (has_type (ty_8_or_16 ty) (rotl x (and (i64_from_value pos_amt)
|
|
806
|
+
(i64_from_negated_value neg_amt)))))
|
|
807
|
+
(let ((ext_reg Reg (put_in_reg_zext32 x))
|
|
808
|
+
(ext_ty Type (ty_ext32 ty))
|
|
809
|
+
(masked_pos_amt u8 (mask_amt_imm ty pos_amt))
|
|
810
|
+
(masked_neg_amt u8 (mask_amt_imm ty neg_amt)))
|
|
811
|
+
(or_reg ty (lshl_imm ext_ty ext_reg masked_pos_amt)
|
|
812
|
+
(lshr_imm ext_ty ext_reg masked_neg_amt))))
|
|
813
|
+
|
|
814
|
+
;; Vector rotate left, shift amount in register.
|
|
815
|
+
(rule 4 (lower (has_type (ty_vec128 ty) (rotl x y)))
|
|
816
|
+
(vec_rot_reg ty x (amt_reg y)))
|
|
817
|
+
|
|
818
|
+
;; Vector rotate left, immediate shift amount.
|
|
819
|
+
(rule 5 (lower (has_type (ty_vec128 ty) (rotl x (i64_from_value y))))
|
|
820
|
+
(let ((masked_amt u8 (mask_amt_imm ty y)))
|
|
821
|
+
(vec_rot_imm ty x masked_amt)))
|
|
822
|
+
|
|
823
|
+
;; 128-bit full vector rotate left.
|
|
824
|
+
;; Implemented via a pair of 128-bit full vector shifts.
|
|
825
|
+
(rule 6 (lower (has_type $I128 (rotl x y)))
|
|
826
|
+
(let ((x_reg Reg x)
|
|
827
|
+
(pos_amt Reg (amt_vr y))
|
|
828
|
+
(neg_amt Reg (vec_neg $I8X16 pos_amt)))
|
|
829
|
+
(vec_or $I128
|
|
830
|
+
(vec_lshl_by_bit (vec_lshl_by_byte x_reg pos_amt) pos_amt)
|
|
831
|
+
(vec_lshr_by_bit (vec_lshr_by_byte x_reg neg_amt) neg_amt))))
|
|
832
|
+
|
|
833
|
+
|
|
834
|
+
;;;; Rules for `rotr` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
835
|
+
|
|
836
|
+
;; Rotate right, shift amount in register. 32-bit or 64-bit types.
|
|
837
|
+
;; Implemented as rotate left with negated rotate amount.
|
|
838
|
+
(rule 0 (lower (has_type (ty_32_or_64 ty) (rotr x y)))
|
|
839
|
+
(let ((negated_amt Reg (neg_reg $I32 (amt_reg y))))
|
|
840
|
+
(rot_reg ty x negated_amt)))
|
|
841
|
+
|
|
842
|
+
;; Rotate right arithmetic, immediate shift amount. 32-bit or 64-bit types.
|
|
843
|
+
;; Implemented as rotate left with negated rotate amount.
|
|
844
|
+
(rule 1 (lower (has_type (ty_32_or_64 ty) (rotr x (i64_from_negated_value y))))
|
|
845
|
+
(let ((negated_amt u8 (mask_amt_imm ty y)))
|
|
846
|
+
(rot_imm ty x negated_amt)))
|
|
847
|
+
|
|
848
|
+
;; Rotate right, shift amount in register. 8-bit or 16-bit types.
|
|
849
|
+
;; Implemented as rotate left with negated rotate amount.
|
|
850
|
+
(rule 2 (lower (has_type (ty_8_or_16 ty) (rotr x y)))
|
|
851
|
+
(let ((ext_reg Reg (put_in_reg_zext32 x))
|
|
852
|
+
(ext_ty Type (ty_ext32 ty))
|
|
853
|
+
(pos_amt Reg (amt_reg y))
|
|
854
|
+
(neg_amt Reg (neg_reg $I32 pos_amt))
|
|
855
|
+
(masked_pos_amt Reg (mask_amt_reg ty pos_amt))
|
|
856
|
+
(masked_neg_amt Reg (mask_amt_reg ty neg_amt)))
|
|
857
|
+
(or_reg ty (lshl_reg ext_ty ext_reg masked_neg_amt)
|
|
858
|
+
(lshr_reg ext_ty ext_reg masked_pos_amt))))
|
|
859
|
+
|
|
860
|
+
;; Rotate right, immediate shift amount. 8-bit or 16-bit types.
|
|
861
|
+
;; Implemented as rotate left with negated rotate amount.
|
|
862
|
+
(rule 3 (lower (has_type (ty_8_or_16 ty) (rotr x (and (i64_from_value pos_amt)
|
|
863
|
+
(i64_from_negated_value neg_amt)))))
|
|
864
|
+
(let ((ext_reg Reg (put_in_reg_zext32 x))
|
|
865
|
+
(ext_ty Type (ty_ext32 ty))
|
|
866
|
+
(masked_pos_amt u8 (mask_amt_imm ty pos_amt))
|
|
867
|
+
(masked_neg_amt u8 (mask_amt_imm ty neg_amt)))
|
|
868
|
+
(or_reg ty (lshl_imm ext_ty ext_reg masked_neg_amt)
|
|
869
|
+
(lshr_imm ext_ty ext_reg masked_pos_amt))))
|
|
870
|
+
|
|
871
|
+
;; Vector rotate right, shift amount in register.
|
|
872
|
+
;; Implemented as rotate left with negated rotate amount.
|
|
873
|
+
(rule 4 (lower (has_type (ty_vec128 ty) (rotr x y)))
|
|
874
|
+
(let ((negated_amt Reg (neg_reg $I32 (amt_reg y))))
|
|
875
|
+
(vec_rot_reg ty x negated_amt)))
|
|
876
|
+
|
|
877
|
+
;; Vector rotate right, immediate shift amount.
|
|
878
|
+
;; Implemented as rotate left with negated rotate amount.
|
|
879
|
+
(rule 5 (lower (has_type (ty_vec128 ty) (rotr x (i64_from_negated_value y))))
|
|
880
|
+
(let ((negated_amt u8 (mask_amt_imm ty y)))
|
|
881
|
+
(vec_rot_imm ty x negated_amt)))
|
|
882
|
+
|
|
883
|
+
;; 128-bit full vector rotate right.
|
|
884
|
+
;; Implemented via a pair of 128-bit full vector shifts.
|
|
885
|
+
(rule 6 (lower (has_type $I128 (rotr x y)))
|
|
886
|
+
(let ((x_reg Reg x)
|
|
887
|
+
(pos_amt Reg (amt_vr y))
|
|
888
|
+
(neg_amt Reg (vec_neg $I8X16 pos_amt)))
|
|
889
|
+
(vec_or $I128
|
|
890
|
+
(vec_lshl_by_bit (vec_lshl_by_byte x_reg neg_amt) neg_amt)
|
|
891
|
+
(vec_lshr_by_bit (vec_lshr_by_byte x_reg pos_amt) pos_amt))))
|
|
892
|
+
|
|
893
|
+
|
|
894
|
+
;;;; Rules for `ireduce` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
895
|
+
|
|
896
|
+
;; Up to 64-bit source type: Always a no-op.
|
|
897
|
+
(rule 1 (lower (ireduce x @ (value_type (fits_in_64 _ty))))
|
|
898
|
+
x)
|
|
899
|
+
|
|
900
|
+
;; 128-bit source type: Extract the low half.
|
|
901
|
+
(rule (lower (ireduce x @ (value_type (vr128_ty _ty))))
|
|
902
|
+
(vec_extract_lane $I64X2 x 1 (zero_reg)))
|
|
903
|
+
|
|
904
|
+
|
|
905
|
+
;;;; Rules for `uextend` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
906
|
+
|
|
907
|
+
;; 16- or 32-bit target types.
|
|
908
|
+
(rule 1 (lower (has_type (gpr32_ty _ty) (uextend x)))
|
|
909
|
+
(put_in_reg_zext32 x))
|
|
910
|
+
|
|
911
|
+
;; 64-bit target types.
|
|
912
|
+
(rule 2 (lower (has_type (gpr64_ty _ty) (uextend x)))
|
|
913
|
+
(put_in_reg_zext64 x))
|
|
914
|
+
|
|
915
|
+
;; 128-bit target types.
|
|
916
|
+
(rule (lower (has_type $I128 (uextend x @ (value_type $I8))))
|
|
917
|
+
(vec_insert_lane $I8X16 (vec_imm $I128 0) x 15 (zero_reg)))
|
|
918
|
+
(rule (lower (has_type $I128 (uextend x @ (value_type $I16))))
|
|
919
|
+
(vec_insert_lane $I16X8 (vec_imm $I128 0) x 7 (zero_reg)))
|
|
920
|
+
(rule (lower (has_type $I128 (uextend x @ (value_type $I32))))
|
|
921
|
+
(vec_insert_lane $I32X4 (vec_imm $I128 0) x 3 (zero_reg)))
|
|
922
|
+
(rule (lower (has_type $I128 (uextend x @ (value_type $I64))))
|
|
923
|
+
(vec_insert_lane $I64X2 (vec_imm $I128 0) x 1 (zero_reg)))
|
|
924
|
+
|
|
925
|
+
|
|
926
|
+
;;;; Rules for `sextend` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
927
|
+
|
|
928
|
+
;; 16- or 32-bit target types.
|
|
929
|
+
(rule 1 (lower (has_type (gpr32_ty _ty) (sextend x)))
|
|
930
|
+
(put_in_reg_sext32 x))
|
|
931
|
+
|
|
932
|
+
;; 64-bit target types.
|
|
933
|
+
(rule 2 (lower (has_type (gpr64_ty _ty) (sextend x)))
|
|
934
|
+
(put_in_reg_sext64 x))
|
|
935
|
+
|
|
936
|
+
;; 128-bit target types.
|
|
937
|
+
(rule (lower (has_type $I128 (sextend x)))
|
|
938
|
+
(let ((x_ext Reg (put_in_reg_sext64 x)))
|
|
939
|
+
(mov_to_vec128 $I128 (ashr_imm $I64 x_ext 63) x_ext)))
|
|
940
|
+
|
|
941
|
+
|
|
942
|
+
;;;; Rules for `snarrow` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
943
|
+
|
|
944
|
+
(rule (lower (snarrow x @ (value_type (ty_vec128 ty)) y))
|
|
945
|
+
(vec_pack_ssat_lane_order ty x y))
|
|
946
|
+
|
|
947
|
+
|
|
948
|
+
;;;; Rules for `uunarrow` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
949
|
+
|
|
950
|
+
(rule (lower (uunarrow x @ (value_type (ty_vec128 ty)) y))
|
|
951
|
+
(vec_pack_usat_lane_order ty x y))
|
|
952
|
+
|
|
953
|
+
|
|
954
|
+
;;;; Rules for `unarrow` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
955
|
+
|
|
956
|
+
(rule (lower (unarrow x @ (value_type (ty_vec128 ty)) y))
|
|
957
|
+
(let ((zero Reg (vec_imm ty 0)))
|
|
958
|
+
(vec_pack_usat_lane_order ty (vec_smax ty x zero) (vec_smax ty y zero))))
|
|
959
|
+
|
|
960
|
+
|
|
961
|
+
;;;; Rules for `swiden_low` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
962
|
+
|
|
963
|
+
(rule (lower (swiden_low x @ (value_type (ty_vec128 ty))))
|
|
964
|
+
(vec_unpacks_low_lane_order ty x))
|
|
965
|
+
|
|
966
|
+
|
|
967
|
+
;;;; Rules for `swiden_high` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
968
|
+
|
|
969
|
+
(rule (lower (swiden_high x @ (value_type (ty_vec128 ty))))
|
|
970
|
+
(vec_unpacks_high_lane_order ty x))
|
|
971
|
+
|
|
972
|
+
|
|
973
|
+
;;;; Rules for `uwiden_low` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
974
|
+
|
|
975
|
+
(rule (lower (uwiden_low x @ (value_type (ty_vec128 ty))))
|
|
976
|
+
(vec_unpacku_low_lane_order ty x))
|
|
977
|
+
|
|
978
|
+
|
|
979
|
+
;;;; Rules for `uwiden_high` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
980
|
+
|
|
981
|
+
(rule (lower (uwiden_high x @ (value_type (ty_vec128 ty))))
|
|
982
|
+
(vec_unpacku_high_lane_order ty x))
|
|
983
|
+
|
|
984
|
+
|
|
985
|
+
;;;; Rules for `bnot` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
986
|
+
|
|
987
|
+
;; z15 version using a single instruction (NOR).
|
|
988
|
+
(rule 2 (lower (has_type (and (mie3_enabled) (fits_in_64 ty)) (bnot x)))
|
|
989
|
+
(let ((rx Reg x))
|
|
990
|
+
(not_or_reg ty rx rx)))
|
|
991
|
+
|
|
992
|
+
;; z14 version using XOR with -1.
|
|
993
|
+
(rule 1 (lower (has_type (and (mie3_disabled) (fits_in_64 ty)) (bnot x)))
|
|
994
|
+
(not_reg ty x))
|
|
995
|
+
|
|
996
|
+
;; Vector version using vector NOR.
|
|
997
|
+
(rule (lower (has_type (vr128_ty ty) (bnot x)))
|
|
998
|
+
(vec_not ty x))
|
|
999
|
+
|
|
1000
|
+
;; With z15 (bnot (bxor ...)) can be a single instruction, similar to the
|
|
1001
|
+
;; (bxor _ (bnot _)) lowering.
|
|
1002
|
+
(rule 3 (lower (has_type (and (mie3_enabled) (fits_in_64 ty)) (bnot (bxor x y))))
|
|
1003
|
+
(not_xor_reg ty x y))
|
|
1004
|
+
|
|
1005
|
+
;; Combine a not/xor operation of vector types into one.
|
|
1006
|
+
(rule 4 (lower (has_type (vr128_ty ty) (bnot (bxor x y))))
|
|
1007
|
+
(vec_not_xor ty x y))
|
|
1008
|
+
|
|
1009
|
+
|
|
1010
|
+
;;;; Rules for `band` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1011
|
+
|
|
1012
|
+
;; And two registers.
|
|
1013
|
+
(rule -1 (lower (has_type (fits_in_64 ty) (band x y)))
|
|
1014
|
+
(and_reg ty x y))
|
|
1015
|
+
|
|
1016
|
+
;; And a register and an immediate.
|
|
1017
|
+
(rule 5 (lower (has_type (fits_in_64 ty) (band x (uimm16shifted_from_inverted_value y))))
|
|
1018
|
+
(and_uimm16shifted ty x y))
|
|
1019
|
+
(rule 6 (lower (has_type (fits_in_64 ty) (band (uimm16shifted_from_inverted_value x) y)))
|
|
1020
|
+
(and_uimm16shifted ty y x))
|
|
1021
|
+
(rule 3 (lower (has_type (fits_in_64 ty) (band x (uimm32shifted_from_inverted_value y))))
|
|
1022
|
+
(and_uimm32shifted ty x y))
|
|
1023
|
+
(rule 4 (lower (has_type (fits_in_64 ty) (band (uimm32shifted_from_inverted_value x) y)))
|
|
1024
|
+
(and_uimm32shifted ty y x))
|
|
1025
|
+
|
|
1026
|
+
;; And a register and memory (32/64-bit types).
|
|
1027
|
+
(rule 1 (lower (has_type (fits_in_64 ty) (band x (sinkable_load_32_64 y))))
|
|
1028
|
+
(and_mem ty x (sink_load y)))
|
|
1029
|
+
(rule 2 (lower (has_type (fits_in_64 ty) (band (sinkable_load_32_64 x) y)))
|
|
1030
|
+
(and_mem ty y (sink_load x)))
|
|
1031
|
+
|
|
1032
|
+
;; And two vector registers.
|
|
1033
|
+
(rule 0 (lower (has_type (vr128_ty ty) (band x y)))
|
|
1034
|
+
(vec_and ty x y))
|
|
1035
|
+
|
|
1036
|
+
;; Specialized lowerings for `(band x (bnot y))` which is additionally produced
|
|
1037
|
+
;; by Cranelift's `band_not` instruction that is legalized into the simpler
|
|
1038
|
+
;; forms early on.
|
|
1039
|
+
|
|
1040
|
+
;; z15 version using a single instruction.
|
|
1041
|
+
(rule 7 (lower (has_type (and (mie3_enabled) (fits_in_64 ty)) (band x (bnot y))))
|
|
1042
|
+
(and_not_reg ty x y))
|
|
1043
|
+
(rule 8 (lower (has_type (and (mie3_enabled) (fits_in_64 ty)) (band (bnot y) x)))
|
|
1044
|
+
(and_not_reg ty x y))
|
|
1045
|
+
|
|
1046
|
+
;; And-not two vector registers.
|
|
1047
|
+
(rule 9 (lower (has_type (vr128_ty ty) (band x (bnot y))))
|
|
1048
|
+
(vec_and_not ty x y))
|
|
1049
|
+
(rule 10 (lower (has_type (vr128_ty ty) (band (bnot y) x)))
|
|
1050
|
+
(vec_and_not ty x y))
|
|
1051
|
+
|
|
1052
|
+
;;;; Rules for `bor` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1053
|
+
|
|
1054
|
+
;; Or two registers.
|
|
1055
|
+
(rule -1 (lower (has_type (fits_in_64 ty) (bor x y)))
|
|
1056
|
+
(or_reg ty x y))
|
|
1057
|
+
|
|
1058
|
+
;; Or a register and an immediate.
|
|
1059
|
+
(rule 5 (lower (has_type (fits_in_64 ty) (bor x (uimm16shifted_from_value y))))
|
|
1060
|
+
(or_uimm16shifted ty x y))
|
|
1061
|
+
(rule 6 (lower (has_type (fits_in_64 ty) (bor (uimm16shifted_from_value x) y)))
|
|
1062
|
+
(or_uimm16shifted ty y x))
|
|
1063
|
+
(rule 3 (lower (has_type (fits_in_64 ty) (bor x (uimm32shifted_from_value y))))
|
|
1064
|
+
(or_uimm32shifted ty x y))
|
|
1065
|
+
(rule 4 (lower (has_type (fits_in_64 ty) (bor (uimm32shifted_from_value x) y)))
|
|
1066
|
+
(or_uimm32shifted ty y x))
|
|
1067
|
+
|
|
1068
|
+
;; Or a register and memory (32/64-bit types).
|
|
1069
|
+
(rule 1 (lower (has_type (fits_in_64 ty) (bor x (sinkable_load_32_64 y))))
|
|
1070
|
+
(or_mem ty x (sink_load y)))
|
|
1071
|
+
(rule 2 (lower (has_type (fits_in_64 ty) (bor (sinkable_load_32_64 x) y)))
|
|
1072
|
+
(or_mem ty y (sink_load x)))
|
|
1073
|
+
|
|
1074
|
+
;; Or two vector registers.
|
|
1075
|
+
(rule 0 (lower (has_type (vr128_ty ty) (bor x y)))
|
|
1076
|
+
(vec_or ty x y))
|
|
1077
|
+
|
|
1078
|
+
;; Specialized lowerings for `(bor x (bnot y))` which is additionally produced
|
|
1079
|
+
;; by Cranelift's `bor_not` instruction that is legalized into the simpler
|
|
1080
|
+
;; forms early on.
|
|
1081
|
+
|
|
1082
|
+
;; z15 version using a single instruction.
|
|
1083
|
+
(rule 7 (lower (has_type (and (mie3_enabled) (fits_in_64 ty)) (bor x (bnot y))))
|
|
1084
|
+
(or_not_reg ty x y))
|
|
1085
|
+
(rule 8 (lower (has_type (and (mie3_enabled) (fits_in_64 ty)) (bor (bnot y) x)))
|
|
1086
|
+
(or_not_reg ty x y))
|
|
1087
|
+
|
|
1088
|
+
;; Or-not two vector registers.
|
|
1089
|
+
(rule 9 (lower (has_type (vr128_ty ty) (bor x (bnot y))))
|
|
1090
|
+
(vec_or_not ty x y))
|
|
1091
|
+
(rule 10 (lower (has_type (vr128_ty ty) (bor (bnot y) x)))
|
|
1092
|
+
(vec_or_not ty x y))
|
|
1093
|
+
|
|
1094
|
+
|
|
1095
|
+
;;;; Rules for `bxor` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1096
|
+
|
|
1097
|
+
;; Xor two registers.
|
|
1098
|
+
(rule -1 (lower (has_type (fits_in_64 ty) (bxor x y)))
|
|
1099
|
+
(xor_reg ty x y))
|
|
1100
|
+
|
|
1101
|
+
;; Xor a register and an immediate.
|
|
1102
|
+
(rule 3 (lower (has_type (fits_in_64 ty) (bxor x (uimm32shifted_from_value y))))
|
|
1103
|
+
(xor_uimm32shifted ty x y))
|
|
1104
|
+
(rule 4 (lower (has_type (fits_in_64 ty) (bxor (uimm32shifted_from_value x) y)))
|
|
1105
|
+
(xor_uimm32shifted ty y x))
|
|
1106
|
+
|
|
1107
|
+
;; Xor a register and memory (32/64-bit types).
|
|
1108
|
+
(rule 1 (lower (has_type (fits_in_64 ty) (bxor x (sinkable_load_32_64 y))))
|
|
1109
|
+
(xor_mem ty x (sink_load y)))
|
|
1110
|
+
(rule 2 (lower (has_type (fits_in_64 ty) (bxor (sinkable_load_32_64 x) y)))
|
|
1111
|
+
(xor_mem ty y (sink_load x)))
|
|
1112
|
+
|
|
1113
|
+
;; Xor two vector registers.
|
|
1114
|
+
(rule 0 (lower (has_type (vr128_ty ty) (bxor x y)))
|
|
1115
|
+
(vec_xor ty x y))
|
|
1116
|
+
|
|
1117
|
+
;; Specialized lowerings for `(bxor x (bnot y))` which is additionally produced
|
|
1118
|
+
;; by Cranelift's `bxor_not` instruction that is legalized into the simpler
|
|
1119
|
+
;; forms early on.
|
|
1120
|
+
|
|
1121
|
+
;; z15 version using a single instruction.
|
|
1122
|
+
(rule 5 (lower (has_type (and (mie3_enabled) (fits_in_64 ty)) (bxor x (bnot y))))
|
|
1123
|
+
(not_xor_reg ty x y))
|
|
1124
|
+
(rule 6 (lower (has_type (and (mie3_enabled) (fits_in_64 ty)) (bxor (bnot y) x)))
|
|
1125
|
+
(not_xor_reg ty x y))
|
|
1126
|
+
|
|
1127
|
+
;; Xor-not two vector registers.
|
|
1128
|
+
(rule 7 (lower (has_type (vr128_ty ty) (bxor x (bnot y))))
|
|
1129
|
+
(vec_not_xor ty x y))
|
|
1130
|
+
(rule 8 (lower (has_type (vr128_ty ty) (bxor (bnot y) x)))
|
|
1131
|
+
(vec_not_xor ty x y))
|
|
1132
|
+
|
|
1133
|
+
|
|
1134
|
+
;;;; Rules for `bitselect` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1135
|
+
|
|
1136
|
+
;; z15 version using a NAND instruction.
|
|
1137
|
+
(rule 2 (lower (has_type (and (mie3_enabled) (fits_in_64 ty)) (bitselect x y z)))
|
|
1138
|
+
(let ((rx Reg x)
|
|
1139
|
+
(if_true Reg (and_reg ty y rx))
|
|
1140
|
+
(if_false Reg (and_not_reg ty z rx)))
|
|
1141
|
+
(or_reg ty if_false if_true)))
|
|
1142
|
+
|
|
1143
|
+
;; z14 version using XOR with -1.
|
|
1144
|
+
(rule 1 (lower (has_type (and (mie3_disabled) (fits_in_64 ty)) (bitselect x y z)))
|
|
1145
|
+
(let ((rx Reg x)
|
|
1146
|
+
(if_true Reg (and_reg ty y rx))
|
|
1147
|
+
(if_false Reg (and_reg ty z (not_reg ty rx))))
|
|
1148
|
+
(or_reg ty if_false if_true)))
|
|
1149
|
+
|
|
1150
|
+
;; Bitselect vector registers.
|
|
1151
|
+
(rule (lower (has_type (vr128_ty ty) (bitselect x y z)))
|
|
1152
|
+
(vec_select ty y z x))
|
|
1153
|
+
|
|
1154
|
+
;; Special-case some float-selection instructions for min/max
|
|
1155
|
+
(rule 3 (lower (has_type (ty_vec128 ty) (bitselect (bitcast _ (fcmp (FloatCC.LessThan) x y)) x y)))
|
|
1156
|
+
(fmin_pseudo_reg ty y x))
|
|
1157
|
+
(rule 4 (lower (has_type (ty_vec128 ty) (bitselect (bitcast _ (fcmp (FloatCC.LessThan) y x)) x y)))
|
|
1158
|
+
(fmax_pseudo_reg ty y x))
|
|
1159
|
+
|
|
1160
|
+
|
|
1161
|
+
|
|
1162
|
+
;;;; Rules for `bmask` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1163
|
+
|
|
1164
|
+
(rule (lower (has_type ty (bmask x)))
|
|
1165
|
+
(lower_bool_to_mask ty (value_nonzero x)))
|
|
1166
|
+
|
|
1167
|
+
|
|
1168
|
+
;;;; Rules for `bitrev` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1169
|
+
|
|
1170
|
+
(rule (lower (has_type ty (bitrev x)))
|
|
1171
|
+
(bitrev_bytes ty
|
|
1172
|
+
(bitrev_bits 4 0xf0f0_f0f0_f0f0_f0f0 ty
|
|
1173
|
+
(bitrev_bits 2 0xcccc_cccc_cccc_cccc ty
|
|
1174
|
+
(bitrev_bits 1 0xaaaa_aaaa_aaaa_aaaa ty x)))))
|
|
1175
|
+
|
|
1176
|
+
(decl bitrev_bits (u8 u64 Type Reg) Reg)
|
|
1177
|
+
(rule 1 (bitrev_bits size bitmask (fits_in_64 ty) x)
|
|
1178
|
+
(let ((mask Reg (imm ty bitmask))
|
|
1179
|
+
(xh Reg (lshl_imm (ty_ext32 ty) x size))
|
|
1180
|
+
(xl Reg (lshr_imm (ty_ext32 ty) x size))
|
|
1181
|
+
(xh_masked Reg (and_reg ty xh mask))
|
|
1182
|
+
(xl_masked Reg (and_reg ty xl (not_reg ty mask))))
|
|
1183
|
+
(or_reg ty xh_masked xl_masked)))
|
|
1184
|
+
|
|
1185
|
+
(rule (bitrev_bits size bitmask (vr128_ty ty) x)
|
|
1186
|
+
(let ((mask Reg (vec_imm_splat $I64X2 bitmask))
|
|
1187
|
+
(size_reg Reg (vec_imm_splat $I8X16 size))
|
|
1188
|
+
(xh Reg (vec_lshl_by_bit x size_reg))
|
|
1189
|
+
(xl Reg (vec_lshr_by_bit x size_reg)))
|
|
1190
|
+
(vec_select ty xh xl mask)))
|
|
1191
|
+
|
|
1192
|
+
(decl bitrev_bytes (Type Reg) Reg)
|
|
1193
|
+
(rule (bitrev_bytes $I8 x) x)
|
|
1194
|
+
(rule (bitrev_bytes $I16 x) (lshr_imm $I32 (bswap_reg $I32 x) 16))
|
|
1195
|
+
(rule (bitrev_bytes $I32 x) (bswap_reg $I32 x))
|
|
1196
|
+
(rule (bitrev_bytes $I64 x) (bswap_reg $I64 x))
|
|
1197
|
+
(rule (bitrev_bytes $I128 x)
|
|
1198
|
+
(vec_permute $I128 x x
|
|
1199
|
+
(vec_imm $I8X16 (imm8x16 15 14 13 12 11 10 9 8
|
|
1200
|
+
7 6 5 4 3 2 1 0))))
|
|
1201
|
+
|
|
1202
|
+
|
|
1203
|
+
;;;; Rules for `bswap` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1204
|
+
|
|
1205
|
+
(rule (lower (has_type ty (bswap x)))
|
|
1206
|
+
(bitrev_bytes ty x))
|
|
1207
|
+
|
|
1208
|
+
;;;; Rules for `clz` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1209
|
+
|
|
1210
|
+
;; The FLOGR hardware instruction always operates on the full 64-bit register.
|
|
1211
|
+
;; We can zero-extend smaller types, but then we have to compensate for the
|
|
1212
|
+
;; additional leading zero bits the instruction will actually see.
|
|
1213
|
+
(decl clz_offset (Type Reg) Reg)
|
|
1214
|
+
(rule (clz_offset $I8 x) (add_simm16 $I8 x -56))
|
|
1215
|
+
(rule (clz_offset $I16 x) (add_simm16 $I16 x -48))
|
|
1216
|
+
(rule (clz_offset $I32 x) (add_simm16 $I32 x -32))
|
|
1217
|
+
(rule (clz_offset $I64 x) x)
|
|
1218
|
+
|
|
1219
|
+
;; Count leading zeros, via FLOGR on an input zero-extended to 64 bits,
|
|
1220
|
+
;; with the result compensated for the extra bits.
|
|
1221
|
+
(rule 1 (lower (has_type (fits_in_64 ty) (clz x)))
|
|
1222
|
+
(let ((ext_reg Reg (put_in_reg_zext64 x))
|
|
1223
|
+
;; Ask for a value of 64 in the all-zero 64-bit input case.
|
|
1224
|
+
;; After compensation this will match the expected semantics.
|
|
1225
|
+
(clz Reg (clz_reg 64 ext_reg)))
|
|
1226
|
+
(clz_offset ty clz)))
|
|
1227
|
+
|
|
1228
|
+
;; Count leading zeros, 128-bit full vector.
|
|
1229
|
+
(rule (lower (has_type $I128 (clz x)))
|
|
1230
|
+
(let ((clz_vec Reg (vec_clz $I64X2 x))
|
|
1231
|
+
(zero Reg (vec_imm $I64X2 0))
|
|
1232
|
+
(clz_hi Reg (vec_permute_dw_imm $I64X2 zero 0 clz_vec 0))
|
|
1233
|
+
(clz_lo Reg (vec_permute_dw_imm $I64X2 zero 0 clz_vec 1))
|
|
1234
|
+
(clz_sum Reg (vec_add $I64X2 clz_hi clz_lo))
|
|
1235
|
+
(mask Reg (vec_cmpeq $I64X2 clz_hi (vec_imm_splat $I64X2 64))))
|
|
1236
|
+
(vec_select $I128 clz_sum clz_hi mask)))
|
|
1237
|
+
|
|
1238
|
+
|
|
1239
|
+
;;;; Rules for `cls` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1240
|
+
|
|
1241
|
+
;; The result of cls is not supposed to count the sign bit itself, just
|
|
1242
|
+
;; additional copies of it. Therefore, when computing cls in terms of clz,
|
|
1243
|
+
;; we need to subtract one. Fold this into the offset computation.
|
|
1244
|
+
(decl cls_offset (Type Reg) Reg)
|
|
1245
|
+
(rule (cls_offset $I8 x) (add_simm16 $I8 x -57))
|
|
1246
|
+
(rule (cls_offset $I16 x) (add_simm16 $I16 x -49))
|
|
1247
|
+
(rule (cls_offset $I32 x) (add_simm16 $I32 x -33))
|
|
1248
|
+
(rule (cls_offset $I64 x) (add_simm16 $I64 x -1))
|
|
1249
|
+
|
|
1250
|
+
;; Count leading sign-bit copies. We don't have any instruction for that,
|
|
1251
|
+
;; so we instead count the leading zeros after inverting the input if negative,
|
|
1252
|
+
;; i.e. computing
|
|
1253
|
+
;; cls(x) == clz(x ^ (x >> 63)) - 1
|
|
1254
|
+
;; where x is the sign-extended input.
|
|
1255
|
+
(rule 1 (lower (has_type (fits_in_64 ty) (cls x)))
|
|
1256
|
+
(let ((ext_reg Reg (put_in_reg_sext64 x))
|
|
1257
|
+
(signbit_copies Reg (ashr_imm $I64 ext_reg 63))
|
|
1258
|
+
(inv_reg Reg (xor_reg $I64 ext_reg signbit_copies))
|
|
1259
|
+
(clz Reg (clz_reg 64 inv_reg)))
|
|
1260
|
+
(cls_offset ty clz)))
|
|
1261
|
+
|
|
1262
|
+
;; Count leading sign-bit copies, 128-bit full vector.
|
|
1263
|
+
(rule (lower (has_type $I128 (cls x)))
|
|
1264
|
+
(let ((x_reg Reg x)
|
|
1265
|
+
(ones Reg (vec_imm_splat $I8X16 255))
|
|
1266
|
+
(signbit_copies Reg (vec_ashr_by_bit (vec_ashr_by_byte x_reg ones) ones))
|
|
1267
|
+
(inv_reg Reg (vec_xor $I128 x_reg signbit_copies))
|
|
1268
|
+
(clz_vec Reg (vec_clz $I64X2 inv_reg))
|
|
1269
|
+
(zero Reg (vec_imm $I64X2 0))
|
|
1270
|
+
(clz_hi Reg (vec_permute_dw_imm $I64X2 zero 0 clz_vec 0))
|
|
1271
|
+
(clz_lo Reg (vec_permute_dw_imm $I64X2 zero 0 clz_vec 1))
|
|
1272
|
+
(clz_sum Reg (vec_add $I64X2 clz_hi clz_lo))
|
|
1273
|
+
(mask Reg (vec_cmpeq $I64X2 clz_hi (vec_imm_splat $I64X2 64))))
|
|
1274
|
+
(vec_add $I128 (vec_select $I128 clz_sum clz_hi mask) ones)))
|
|
1275
|
+
|
|
1276
|
+
|
|
1277
|
+
;;;; Rules for `ctz` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1278
|
+
|
|
1279
|
+
;; To count trailing zeros, we find the last bit set in the input via (x & -x),
|
|
1280
|
+
;; count the leading zeros of that value, and subtract from 63:
|
|
1281
|
+
;;
|
|
1282
|
+
;; ctz(x) == 63 - clz(x & -x)
|
|
1283
|
+
;;
|
|
1284
|
+
;; This works for all cases except a zero input, where the above formula would
|
|
1285
|
+
;; return -1, but we are expected to return the type size. The compensation
|
|
1286
|
+
;; for this case is handled differently for 64-bit types vs. smaller types.
|
|
1287
|
+
|
|
1288
|
+
;; For smaller types, we simply ensure that the extended 64-bit input is
|
|
1289
|
+
;; never zero by setting a "guard bit" in the position corresponding to
|
|
1290
|
+
;; the input type size. This way the 64-bit algorithm above will handle
|
|
1291
|
+
;; that case correctly automatically.
|
|
1292
|
+
(rule 2 (lower (has_type (gpr32_ty ty) (ctz x)))
|
|
1293
|
+
(let ((rx Reg (or_uimm16shifted $I64 x (ctz_guardbit ty)))
|
|
1294
|
+
(lastbit Reg (and_reg $I64 rx (neg_reg $I64 rx)))
|
|
1295
|
+
(clz Reg (clz_reg 64 lastbit)))
|
|
1296
|
+
(sub_reg ty (imm ty 63) clz)))
|
|
1297
|
+
|
|
1298
|
+
(decl ctz_guardbit (Type) UImm16Shifted)
|
|
1299
|
+
(rule (ctz_guardbit $I8) (uimm16shifted 256 0))
|
|
1300
|
+
(rule (ctz_guardbit $I16) (uimm16shifted 1 16))
|
|
1301
|
+
(rule (ctz_guardbit $I32) (uimm16shifted 1 32))
|
|
1302
|
+
|
|
1303
|
+
;; For 64-bit types, the FLOGR instruction will indicate the zero input case
|
|
1304
|
+
;; via its condition code. We check for that and replace the instruction
|
|
1305
|
+
;; result with the value -1 via a conditional move, which will then lead to
|
|
1306
|
+
;; the correct result after the final subtraction from 63.
|
|
1307
|
+
(rule 1 (lower (has_type (gpr64_ty _ty) (ctz x)))
|
|
1308
|
+
(let ((rx Reg x)
|
|
1309
|
+
(lastbit Reg (and_reg $I64 rx (neg_reg $I64 rx)))
|
|
1310
|
+
(clz Reg (clz_reg -1 lastbit)))
|
|
1311
|
+
(sub_reg $I64 (imm $I64 63) clz)))
|
|
1312
|
+
|
|
1313
|
+
;; Count trailing zeros, 128-bit full vector.
|
|
1314
|
+
(rule 0 (lower (has_type $I128 (ctz x)))
|
|
1315
|
+
(let ((ctz_vec Reg (vec_ctz $I64X2 x))
|
|
1316
|
+
(zero Reg (vec_imm $I64X2 0))
|
|
1317
|
+
(ctz_hi Reg (vec_permute_dw_imm $I64X2 zero 0 ctz_vec 0))
|
|
1318
|
+
(ctz_lo Reg (vec_permute_dw_imm $I64X2 zero 0 ctz_vec 1))
|
|
1319
|
+
(ctz_sum Reg (vec_add $I64X2 ctz_hi ctz_lo))
|
|
1320
|
+
(mask Reg (vec_cmpeq $I64X2 ctz_lo (vec_imm_splat $I64X2 64))))
|
|
1321
|
+
(vec_select $I128 ctz_sum ctz_lo mask)))
|
|
1322
|
+
|
|
1323
|
+
|
|
1324
|
+
;;;; Rules for `popcnt` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1325
|
+
|
|
1326
|
+
;; Population count for 8-bit types is supported by the POPCNT instruction.
|
|
1327
|
+
(rule (lower (has_type $I8 (popcnt x)))
|
|
1328
|
+
(popcnt_byte x))
|
|
1329
|
+
|
|
1330
|
+
;; On z15, the POPCNT instruction has a variant to compute a full 64-bit
|
|
1331
|
+
;; population count, which we also use for 16- and 32-bit types.
|
|
1332
|
+
(rule -1 (lower (has_type (and (mie3_enabled) (fits_in_64 ty)) (popcnt x)))
|
|
1333
|
+
(popcnt_reg (put_in_reg_zext64 x)))
|
|
1334
|
+
|
|
1335
|
+
;; On z14, we use the regular POPCNT, which computes the population count
|
|
1336
|
+
;; of each input byte separately, so we need to accumulate those partial
|
|
1337
|
+
;; results via a series of log2(type size in bytes) - 1 additions. We
|
|
1338
|
+
;; accumulate in the high byte, so that a final right shift will zero out
|
|
1339
|
+
;; any unrelated bits to give a clean result. (This does not work with
|
|
1340
|
+
;; $I16, where we instead accumulate in the low byte and clear high bits
|
|
1341
|
+
;; via an explicit and operation.)
|
|
1342
|
+
|
|
1343
|
+
(rule (lower (has_type (and (mie3_disabled) $I16) (popcnt x)))
|
|
1344
|
+
(let ((cnt2 Reg (popcnt_byte x))
|
|
1345
|
+
(cnt1 Reg (add_reg $I32 cnt2 (lshr_imm $I32 cnt2 8))))
|
|
1346
|
+
(and_uimm16shifted $I32 cnt1 (uimm16shifted 255 0))))
|
|
1347
|
+
|
|
1348
|
+
(rule (lower (has_type (and (mie3_disabled) $I32) (popcnt x)))
|
|
1349
|
+
(let ((cnt4 Reg (popcnt_byte x))
|
|
1350
|
+
(cnt2 Reg (add_reg $I32 cnt4 (lshl_imm $I32 cnt4 16)))
|
|
1351
|
+
(cnt1 Reg (add_reg $I32 cnt2 (lshl_imm $I32 cnt2 8))))
|
|
1352
|
+
(lshr_imm $I32 cnt1 24)))
|
|
1353
|
+
|
|
1354
|
+
(rule (lower (has_type (and (mie3_disabled) $I64) (popcnt x)))
|
|
1355
|
+
(let ((cnt8 Reg (popcnt_byte x))
|
|
1356
|
+
(cnt4 Reg (add_reg $I64 cnt8 (lshl_imm $I64 cnt8 32)))
|
|
1357
|
+
(cnt2 Reg (add_reg $I64 cnt4 (lshl_imm $I64 cnt4 16)))
|
|
1358
|
+
(cnt1 Reg (add_reg $I64 cnt2 (lshl_imm $I64 cnt2 8))))
|
|
1359
|
+
(lshr_imm $I64 cnt1 56)))
|
|
1360
|
+
|
|
1361
|
+
;; Population count for vector types.
|
|
1362
|
+
(rule 1 (lower (has_type (ty_vec128 ty) (popcnt x)))
|
|
1363
|
+
(vec_popcnt ty x))
|
|
1364
|
+
|
|
1365
|
+
;; Population count, 128-bit full vector.
|
|
1366
|
+
(rule (lower (has_type $I128 (popcnt x)))
|
|
1367
|
+
(let ((popcnt_vec Reg (vec_popcnt $I64X2 x))
|
|
1368
|
+
(zero Reg (vec_imm $I64X2 0))
|
|
1369
|
+
(popcnt_hi Reg (vec_permute_dw_imm $I64X2 zero 0 popcnt_vec 0))
|
|
1370
|
+
(popcnt_lo Reg (vec_permute_dw_imm $I64X2 zero 0 popcnt_vec 1)))
|
|
1371
|
+
(vec_add $I64X2 popcnt_hi popcnt_lo)))
|
|
1372
|
+
|
|
1373
|
+
|
|
1374
|
+
;;;; Rules for `fadd` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1375
|
+
|
|
1376
|
+
;; Add two registers.
|
|
1377
|
+
(rule (lower (has_type ty (fadd x y)))
|
|
1378
|
+
(fadd_reg ty x y))
|
|
1379
|
+
|
|
1380
|
+
|
|
1381
|
+
;;;; Rules for `fsub` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1382
|
+
|
|
1383
|
+
;; Subtract two registers.
|
|
1384
|
+
(rule (lower (has_type ty (fsub x y)))
|
|
1385
|
+
(fsub_reg ty x y))
|
|
1386
|
+
|
|
1387
|
+
|
|
1388
|
+
;;;; Rules for `fmul` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1389
|
+
|
|
1390
|
+
;; Multiply two registers.
|
|
1391
|
+
(rule (lower (has_type ty (fmul x y)))
|
|
1392
|
+
(fmul_reg ty x y))
|
|
1393
|
+
|
|
1394
|
+
|
|
1395
|
+
;;;; Rules for `fdiv` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1396
|
+
|
|
1397
|
+
;; Divide two registers.
|
|
1398
|
+
(rule (lower (has_type ty (fdiv x y)))
|
|
1399
|
+
(fdiv_reg ty x y))
|
|
1400
|
+
|
|
1401
|
+
|
|
1402
|
+
;;;; Rules for `fmin` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1403
|
+
|
|
1404
|
+
;; Minimum of two registers.
|
|
1405
|
+
(rule (lower (has_type ty (fmin x y)))
|
|
1406
|
+
(fmin_reg ty x y))
|
|
1407
|
+
|
|
1408
|
+
|
|
1409
|
+
;;;; Rules for `fmax` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1410
|
+
|
|
1411
|
+
;; Maximum of two registers.
|
|
1412
|
+
(rule (lower (has_type ty (fmax x y)))
|
|
1413
|
+
(fmax_reg ty x y))
|
|
1414
|
+
|
|
1415
|
+
|
|
1416
|
+
;;;; Rules for `fcopysign` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1417
|
+
|
|
1418
|
+
;; Copysign of two registers.
|
|
1419
|
+
(rule (lower (has_type $F32 (fcopysign x y)))
|
|
1420
|
+
(vec_select $F32 x y (imm $F32 2147483647)))
|
|
1421
|
+
(rule (lower (has_type $F64 (fcopysign x y)))
|
|
1422
|
+
(vec_select $F64 x y (imm $F64 9223372036854775807)))
|
|
1423
|
+
(rule (lower (has_type $F128 (fcopysign x y)))
|
|
1424
|
+
(vec_select $F128 x y (vec_imm $F128 (imm8x16 127 255 255 255 255 255 255 255
|
|
1425
|
+
255 255 255 255 255 255 255 255))))
|
|
1426
|
+
(rule (lower (has_type $F32X4 (fcopysign x y)))
|
|
1427
|
+
(vec_select $F32X4 x y (vec_imm_bit_mask $F32X4 1 31)))
|
|
1428
|
+
(rule (lower (has_type $F64X2 (fcopysign x y)))
|
|
1429
|
+
(vec_select $F64X2 x y (vec_imm_bit_mask $F64X2 1 63)))
|
|
1430
|
+
|
|
1431
|
+
|
|
1432
|
+
;;;; Rules for `fma` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1433
|
+
|
|
1434
|
+
;; Multiply-and-add of three registers.
|
|
1435
|
+
(rule (lower (has_type ty (fma x y z)))
|
|
1436
|
+
(fma_reg ty x y z))
|
|
1437
|
+
|
|
1438
|
+
|
|
1439
|
+
;;;; Rules for `sqrt` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1440
|
+
|
|
1441
|
+
;; Square root of a register.
|
|
1442
|
+
(rule (lower (has_type ty (sqrt x)))
|
|
1443
|
+
(sqrt_reg ty x))
|
|
1444
|
+
|
|
1445
|
+
|
|
1446
|
+
;;;; Rules for `fneg` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1447
|
+
|
|
1448
|
+
;; Negated value of a register.
|
|
1449
|
+
(rule (lower (has_type ty (fneg x)))
|
|
1450
|
+
(fneg_reg ty x))
|
|
1451
|
+
|
|
1452
|
+
|
|
1453
|
+
;;;; Rules for `fabs` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1454
|
+
|
|
1455
|
+
;; Absolute value of a register.
|
|
1456
|
+
(rule (lower (has_type ty (fabs x)))
|
|
1457
|
+
(fabs_reg ty x))
|
|
1458
|
+
|
|
1459
|
+
|
|
1460
|
+
;;;; Rules for `ceil` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1461
|
+
|
|
1462
|
+
;; Round value in a register towards positive infinity.
|
|
1463
|
+
(rule (lower (has_type ty (ceil x)))
|
|
1464
|
+
(ceil_reg ty x))
|
|
1465
|
+
|
|
1466
|
+
|
|
1467
|
+
;;;; Rules for `floor` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1468
|
+
|
|
1469
|
+
;; Round value in a register towards negative infinity.
|
|
1470
|
+
(rule (lower (has_type ty (floor x)))
|
|
1471
|
+
(floor_reg ty x))
|
|
1472
|
+
|
|
1473
|
+
|
|
1474
|
+
;;;; Rules for `trunc` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1475
|
+
|
|
1476
|
+
;; Round value in a register towards zero.
|
|
1477
|
+
(rule (lower (has_type ty (trunc x)))
|
|
1478
|
+
(trunc_reg ty x))
|
|
1479
|
+
|
|
1480
|
+
|
|
1481
|
+
;;;; Rules for `nearest` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1482
|
+
|
|
1483
|
+
;; Round value in a register towards nearest.
|
|
1484
|
+
(rule (lower (has_type ty (nearest x)))
|
|
1485
|
+
(nearest_reg ty x))
|
|
1486
|
+
|
|
1487
|
+
|
|
1488
|
+
;;;; Rules for `fpromote` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1489
|
+
|
|
1490
|
+
;; Promote a register.
|
|
1491
|
+
(rule (lower (has_type dst_ty (fpromote x @ (value_type src_ty))))
|
|
1492
|
+
(fpromote_reg dst_ty src_ty x))
|
|
1493
|
+
|
|
1494
|
+
(rule 1 (lower (has_type $F128 (fpromote x @ (value_type $F32))))
|
|
1495
|
+
(fpromote_reg $F128 $F64 (fpromote_reg $F64 $F32 x)))
|
|
1496
|
+
|
|
1497
|
+
|
|
1498
|
+
;;;; Rules for `fvpromote_low` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1499
|
+
|
|
1500
|
+
;; Promote a register.
|
|
1501
|
+
(rule (lower (has_type $F64X2 (fvpromote_low x @ (value_type $F32X4))))
|
|
1502
|
+
(fpromote_reg $F64X2 $F32X4 (vec_merge_low_lane_order $I32X4 x x)))
|
|
1503
|
+
|
|
1504
|
+
|
|
1505
|
+
;;;; Rules for `fdemote` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1506
|
+
|
|
1507
|
+
;; Demote a register.
|
|
1508
|
+
(rule (lower (has_type dst_ty (fdemote x @ (value_type src_ty))))
|
|
1509
|
+
(fdemote_reg dst_ty src_ty (FpuRoundMode.Current) x))
|
|
1510
|
+
|
|
1511
|
+
(rule 1 (lower (has_type $F32 (fdemote x @ (value_type $F128))))
|
|
1512
|
+
(fdemote_reg $F32 $F64 (FpuRoundMode.Current)
|
|
1513
|
+
(fdemote_reg $F64 $F128 (FpuRoundMode.ShorterPrecision) x)))
|
|
1514
|
+
|
|
1515
|
+
|
|
1516
|
+
;;;; Rules for `fvdemote` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1517
|
+
|
|
1518
|
+
;; Demote a register.
|
|
1519
|
+
(rule (lower (has_type $F32X4 (fvdemote x @ (value_type $F64X2))))
|
|
1520
|
+
(let ((dst Reg (fdemote_reg $F32X4 $F64X2 (FpuRoundMode.Current) x)))
|
|
1521
|
+
(vec_pack_lane_order $I64X2 (vec_lshr_imm $I64X2 dst 32)
|
|
1522
|
+
(vec_imm $I64X2 0))))
|
|
1523
|
+
|
|
1524
|
+
|
|
1525
|
+
;;;; Rules for `fcvt_from_uint` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1526
|
+
|
|
1527
|
+
;; Convert a 32-bit or smaller unsigned integer to $F32 (z15 instruction).
|
|
1528
|
+
(rule 1 (lower (has_type $F32
|
|
1529
|
+
(fcvt_from_uint x @ (value_type (and (vxrs_ext2_enabled) (fits_in_32 ty))))))
|
|
1530
|
+
(fcvt_from_uint_reg $F32 $I32 (FpuRoundMode.ToNearestTiesToEven)
|
|
1531
|
+
(put_in_reg_zext32 x)))
|
|
1532
|
+
|
|
1533
|
+
;; Convert a 64-bit or smaller unsigned integer to $F32, via an intermediate $F64.
|
|
1534
|
+
(rule (lower (has_type $F32 (fcvt_from_uint x @ (value_type (fits_in_64 ty)))))
|
|
1535
|
+
(fdemote_reg $F32 $F64 (FpuRoundMode.ToNearestTiesToEven)
|
|
1536
|
+
(fcvt_from_uint_reg $F64 $I64 (FpuRoundMode.ShorterPrecision)
|
|
1537
|
+
(put_in_reg_zext64 x))))
|
|
1538
|
+
|
|
1539
|
+
;; Convert a 64-bit or smaller unsigned integer to $F64.
|
|
1540
|
+
(rule (lower (has_type $F64 (fcvt_from_uint x @ (value_type (fits_in_64 ty)))))
|
|
1541
|
+
(fcvt_from_uint_reg $F64 $I64 (FpuRoundMode.ToNearestTiesToEven)
|
|
1542
|
+
(put_in_reg_zext64 x)))
|
|
1543
|
+
|
|
1544
|
+
;; Convert a 32-bit or smaller unsigned integer to $F128.
|
|
1545
|
+
(rule 1 (lower (has_type $F128 (fcvt_from_uint x @ (value_type (fits_in_32 ty)))))
|
|
1546
|
+
(fcvt_from_uint_reg $F128 $I32 (FpuRoundMode.ToNearestTiesToEven)
|
|
1547
|
+
(put_in_reg_zext32 x)))
|
|
1548
|
+
|
|
1549
|
+
;; Convert a 64-bit or smaller unsigned integer to $F128.
|
|
1550
|
+
(rule (lower (has_type $F128 (fcvt_from_uint x @ (value_type (fits_in_64 ty)))))
|
|
1551
|
+
(fcvt_from_uint_reg $F128 $I64 (FpuRoundMode.ToNearestTiesToEven)
|
|
1552
|
+
(put_in_reg_zext64 x)))
|
|
1553
|
+
|
|
1554
|
+
;; Convert $I32X4 to $F32X4 (z15 instruction).
|
|
1555
|
+
(rule 1 (lower (has_type (and (vxrs_ext2_enabled) $F32X4)
|
|
1556
|
+
(fcvt_from_uint x @ (value_type $I32X4))))
|
|
1557
|
+
(fcvt_from_uint_reg $F32X4 $I32X4 (FpuRoundMode.ToNearestTiesToEven) x))
|
|
1558
|
+
|
|
1559
|
+
;; Convert $I32X4 to $F32X4 (via two $F64X2 on z14).
|
|
1560
|
+
(rule (lower (has_type (and (vxrs_ext2_disabled) $F32X4)
|
|
1561
|
+
(fcvt_from_uint x @ (value_type $I32X4))))
|
|
1562
|
+
(vec_permute $F32X4
|
|
1563
|
+
(fdemote_reg $F32X4 $F64X2 (FpuRoundMode.ToNearestTiesToEven)
|
|
1564
|
+
(fcvt_from_uint_reg $F64X2 $I64X2 (FpuRoundMode.ShorterPrecision)
|
|
1565
|
+
(vec_unpacku_high $I32X4 x)))
|
|
1566
|
+
(fdemote_reg $F32X4 $F64X2 (FpuRoundMode.ToNearestTiesToEven)
|
|
1567
|
+
(fcvt_from_uint_reg $F64X2 $I64X2 (FpuRoundMode.ShorterPrecision)
|
|
1568
|
+
(vec_unpacku_low $I32X4 x)))
|
|
1569
|
+
(vec_imm $I8X16 (imm8x16 0 1 2 3 8 9 10 11 16 17 18 19 24 25 26 27))))
|
|
1570
|
+
|
|
1571
|
+
;; Convert $I64X2 to $F64X2.
|
|
1572
|
+
(rule (lower (has_type $F64X2 (fcvt_from_uint x @ (value_type $I64X2))))
|
|
1573
|
+
(fcvt_from_uint_reg $F64X2 $I64X2 (FpuRoundMode.ToNearestTiesToEven) x))
|
|
1574
|
+
|
|
1575
|
+
|
|
1576
|
+
;;;; Rules for `fcvt_from_sint` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1577
|
+
|
|
1578
|
+
;; Convert a 32-bit or smaller signed integer to $F32 (z15 instruction).
|
|
1579
|
+
(rule 1 (lower (has_type $F32
|
|
1580
|
+
(fcvt_from_sint x @ (value_type (and (vxrs_ext2_enabled) (fits_in_32 ty))))))
|
|
1581
|
+
(fcvt_from_sint_reg $F32 $I32 (FpuRoundMode.ToNearestTiesToEven)
|
|
1582
|
+
(put_in_reg_sext32 x)))
|
|
1583
|
+
|
|
1584
|
+
;; Convert a 64-bit or smaller signed integer to $F32, via an intermediate $F64.
|
|
1585
|
+
(rule (lower (has_type $F32 (fcvt_from_sint x @ (value_type (fits_in_64 ty)))))
|
|
1586
|
+
(fdemote_reg $F32 $F64 (FpuRoundMode.ToNearestTiesToEven)
|
|
1587
|
+
(fcvt_from_sint_reg $F64 $I64 (FpuRoundMode.ShorterPrecision)
|
|
1588
|
+
(put_in_reg_sext64 x))))
|
|
1589
|
+
|
|
1590
|
+
;; Convert a 64-bit or smaller signed integer to $F64.
|
|
1591
|
+
(rule (lower (has_type $F64 (fcvt_from_sint x @ (value_type (fits_in_64 ty)))))
|
|
1592
|
+
(fcvt_from_sint_reg $F64 $I64 (FpuRoundMode.ToNearestTiesToEven)
|
|
1593
|
+
(put_in_reg_sext64 x)))
|
|
1594
|
+
|
|
1595
|
+
;; Convert a 32-bit or smaller signed integer to $F128.
|
|
1596
|
+
(rule 1 (lower (has_type $F128 (fcvt_from_sint x @ (value_type (fits_in_32 ty)))))
|
|
1597
|
+
(fcvt_from_sint_reg $F128 $I32 (FpuRoundMode.ToNearestTiesToEven)
|
|
1598
|
+
(put_in_reg_sext32 x)))
|
|
1599
|
+
|
|
1600
|
+
;; Convert a 64-bit or smaller signed integer to $F128.
|
|
1601
|
+
(rule (lower (has_type $F128 (fcvt_from_sint x @ (value_type (fits_in_64 ty)))))
|
|
1602
|
+
(fcvt_from_sint_reg $F128 $I64 (FpuRoundMode.ToNearestTiesToEven)
|
|
1603
|
+
(put_in_reg_sext64 x)))
|
|
1604
|
+
|
|
1605
|
+
;; Convert $I32X4 to $F32X4 (z15 instruction).
|
|
1606
|
+
(rule 1 (lower (has_type (and (vxrs_ext2_enabled) $F32X4)
|
|
1607
|
+
(fcvt_from_sint x @ (value_type $I32X4))))
|
|
1608
|
+
(fcvt_from_sint_reg $F32X4 $I32X4 (FpuRoundMode.ToNearestTiesToEven) x))
|
|
1609
|
+
|
|
1610
|
+
;; Convert $I32X4 to $F32X4 (via two $F64X2 on z14).
|
|
1611
|
+
(rule (lower (has_type (and (vxrs_ext2_disabled) $F32X4)
|
|
1612
|
+
(fcvt_from_sint x @ (value_type $I32X4))))
|
|
1613
|
+
(vec_permute $F32X4
|
|
1614
|
+
(fdemote_reg $F32X4 $F64X2 (FpuRoundMode.ToNearestTiesToEven)
|
|
1615
|
+
(fcvt_from_sint_reg $F64X2 $I64X2 (FpuRoundMode.ShorterPrecision)
|
|
1616
|
+
(vec_unpacks_high $I32X4 x)))
|
|
1617
|
+
(fdemote_reg $F32X4 $F64X2 (FpuRoundMode.ToNearestTiesToEven)
|
|
1618
|
+
(fcvt_from_sint_reg $F64X2 $I64X2 (FpuRoundMode.ShorterPrecision)
|
|
1619
|
+
(vec_unpacks_low $I32X4 x)))
|
|
1620
|
+
(vec_imm $I8X16 (imm8x16 0 1 2 3 8 9 10 11 16 17 18 19 24 25 26 27))))
|
|
1621
|
+
|
|
1622
|
+
;; Convert $I64X2 to $F64X2.
|
|
1623
|
+
(rule (lower (has_type $F64X2 (fcvt_from_sint x @ (value_type $I64X2))))
|
|
1624
|
+
(fcvt_from_sint_reg $F64X2 $I64X2 (FpuRoundMode.ToNearestTiesToEven) x))
|
|
1625
|
+
|
|
1626
|
+
|
|
1627
|
+
;;;; Rules for `fcvt_to_uint` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1628
|
+
|
|
1629
|
+
;; Convert a scalar floating-point value in a register to an unsigned integer.
|
|
1630
|
+
;; Traps if the input cannot be represented in the output type.
|
|
1631
|
+
(rule (lower (has_type (fits_in_64 dst_ty)
|
|
1632
|
+
(fcvt_to_uint x @ (value_type src_ty))))
|
|
1633
|
+
(let ((src Reg (put_in_reg x))
|
|
1634
|
+
;; First, check whether the input is a NaN, and trap if so.
|
|
1635
|
+
(_ Reg (trap_if (fcmp_reg src_ty src src)
|
|
1636
|
+
(floatcc_as_cond (FloatCC.Unordered))
|
|
1637
|
+
(trap_code_bad_conversion_to_integer)))
|
|
1638
|
+
;; Now check whether the input is out of range for the target type.
|
|
1639
|
+
(_ Reg (trap_if (fcmp_reg src_ty src (fcvt_to_uint_ub src_ty dst_ty))
|
|
1640
|
+
(floatcc_as_cond (FloatCC.GreaterThanOrEqual))
|
|
1641
|
+
(trap_code_integer_overflow)))
|
|
1642
|
+
(_ Reg (trap_if (fcmp_reg src_ty src (fcvt_to_uint_lb src_ty))
|
|
1643
|
+
(floatcc_as_cond (FloatCC.LessThanOrEqual))
|
|
1644
|
+
(trap_code_integer_overflow)))
|
|
1645
|
+
;; Perform the conversion using the larger type size.
|
|
1646
|
+
(flt_ty Type (fcvt_flt_ty dst_ty src_ty))
|
|
1647
|
+
(int_ty Type (fcvt_int_ty dst_ty src_ty))
|
|
1648
|
+
(src_ext Reg (fpromote_reg flt_ty src_ty src)))
|
|
1649
|
+
(fcvt_to_uint_reg int_ty flt_ty (FpuRoundMode.ToZero) src_ext)))
|
|
1650
|
+
|
|
1651
|
+
|
|
1652
|
+
;;;; Rules for `fcvt_to_sint` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1653
|
+
|
|
1654
|
+
;; Convert a scalar floating-point value in a register to a signed integer.
|
|
1655
|
+
;; Traps if the input cannot be represented in the output type.
|
|
1656
|
+
(rule (lower (has_type (fits_in_64 dst_ty)
|
|
1657
|
+
(fcvt_to_sint x @ (value_type src_ty))))
|
|
1658
|
+
(let ((src Reg (put_in_reg x))
|
|
1659
|
+
;; First, check whether the input is a NaN, and trap if so.
|
|
1660
|
+
(_ Reg (trap_if (fcmp_reg src_ty src src)
|
|
1661
|
+
(floatcc_as_cond (FloatCC.Unordered))
|
|
1662
|
+
(trap_code_bad_conversion_to_integer)))
|
|
1663
|
+
;; Now check whether the input is out of range for the target type.
|
|
1664
|
+
(_ Reg (trap_if (fcmp_reg src_ty src (fcvt_to_sint_ub src_ty dst_ty))
|
|
1665
|
+
(floatcc_as_cond (FloatCC.GreaterThanOrEqual))
|
|
1666
|
+
(trap_code_integer_overflow)))
|
|
1667
|
+
(_ Reg (trap_if (fcmp_reg src_ty src (fcvt_to_sint_lb src_ty dst_ty))
|
|
1668
|
+
(floatcc_as_cond (FloatCC.LessThanOrEqual))
|
|
1669
|
+
(trap_code_integer_overflow)))
|
|
1670
|
+
;; Perform the conversion using the larger type size.
|
|
1671
|
+
(flt_ty Type (fcvt_flt_ty dst_ty src_ty))
|
|
1672
|
+
(int_ty Type (fcvt_int_ty dst_ty src_ty))
|
|
1673
|
+
(src_ext Reg (fpromote_reg flt_ty src_ty src)))
|
|
1674
|
+
;; Perform the conversion.
|
|
1675
|
+
(fcvt_to_sint_reg int_ty flt_ty (FpuRoundMode.ToZero) src_ext)))
|
|
1676
|
+
|
|
1677
|
+
|
|
1678
|
+
;;;; Rules for `fcvt_to_uint_sat` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1679
|
+
|
|
1680
|
+
;; Convert a scalar floating-point value in a register to an unsigned integer.
|
|
1681
|
+
(rule -1 (lower (has_type (fits_in_64 dst_ty)
|
|
1682
|
+
(fcvt_to_uint_sat x @ (value_type src_ty))))
|
|
1683
|
+
(let ((src Reg (put_in_reg x))
|
|
1684
|
+
;; Perform the conversion using the larger type size.
|
|
1685
|
+
(flt_ty Type (fcvt_flt_ty dst_ty src_ty))
|
|
1686
|
+
(int_ty Type (fcvt_int_ty dst_ty src_ty))
|
|
1687
|
+
(src_ext Reg (fpromote_reg flt_ty src_ty src))
|
|
1688
|
+
(dst Reg (fcvt_to_uint_reg int_ty flt_ty (FpuRoundMode.ToZero) src_ext)))
|
|
1689
|
+
;; Clamp the output to the destination type bounds.
|
|
1690
|
+
(uint_sat_reg dst_ty int_ty dst)))
|
|
1691
|
+
|
|
1692
|
+
;; Convert $F32X4 to $I32X4 (z15 instruction).
|
|
1693
|
+
(rule 1 (lower (has_type (and (vxrs_ext2_enabled) $I32X4)
|
|
1694
|
+
(fcvt_to_uint_sat x @ (value_type $F32X4))))
|
|
1695
|
+
(fcvt_to_uint_reg $I32X4 $F32X4 (FpuRoundMode.ToZero) x))
|
|
1696
|
+
|
|
1697
|
+
;; Convert $F32X4 to $I32X4 (via two $F64X2 on z14).
|
|
1698
|
+
(rule (lower (has_type (and (vxrs_ext2_disabled) $I32X4)
|
|
1699
|
+
(fcvt_to_uint_sat x @ (value_type $F32X4))))
|
|
1700
|
+
(vec_pack_usat $I64X2
|
|
1701
|
+
(fcvt_to_uint_reg $I64X2 $F64X2 (FpuRoundMode.ToZero)
|
|
1702
|
+
(fpromote_reg $F64X2 $F32X4 (vec_merge_high $I32X4 x x)))
|
|
1703
|
+
(fcvt_to_uint_reg $I64X2 $F64X2 (FpuRoundMode.ToZero)
|
|
1704
|
+
(fpromote_reg $F64X2 $F32X4 (vec_merge_low $I32X4 x x)))))
|
|
1705
|
+
|
|
1706
|
+
;; Convert $F64X2 to $I64X2.
|
|
1707
|
+
(rule (lower (has_type $I64X2 (fcvt_to_uint_sat x @ (value_type $F64X2))))
|
|
1708
|
+
(fcvt_to_uint_reg $I64X2 $F64X2 (FpuRoundMode.ToZero) x))
|
|
1709
|
+
|
|
1710
|
+
|
|
1711
|
+
;;;; Rules for `fcvt_to_sint_sat` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1712
|
+
|
|
1713
|
+
;; Convert a scalar floating-point value in a register to a signed integer.
|
|
1714
|
+
(rule -1 (lower (has_type (fits_in_64 dst_ty)
|
|
1715
|
+
(fcvt_to_sint_sat x @ (value_type src_ty))))
|
|
1716
|
+
(let ((src Reg (put_in_reg x))
|
|
1717
|
+
;; Perform the conversion using the larger type size.
|
|
1718
|
+
(flt_ty Type (fcvt_flt_ty dst_ty src_ty))
|
|
1719
|
+
(int_ty Type (fcvt_int_ty dst_ty src_ty))
|
|
1720
|
+
(src_ext Reg (fpromote_reg flt_ty src_ty src))
|
|
1721
|
+
(dst Reg (fcvt_to_sint_reg int_ty flt_ty (FpuRoundMode.ToZero) src_ext))
|
|
1722
|
+
;; In most special cases, the Z instruction already yields the
|
|
1723
|
+
;; result expected by Cranelift semantics. The only exception
|
|
1724
|
+
;; it the case where the input was a NaN. We explicitly check
|
|
1725
|
+
;; for that and force the output to 0 in that case.
|
|
1726
|
+
(sat Reg (with_flags_reg (fcmp_reg src_ty src src)
|
|
1727
|
+
(cmov_imm int_ty
|
|
1728
|
+
(floatcc_as_cond (FloatCC.Unordered)) 0 dst))))
|
|
1729
|
+
;; Clamp the output to the destination type bounds.
|
|
1730
|
+
(sint_sat_reg dst_ty int_ty sat)))
|
|
1731
|
+
|
|
1732
|
+
;; Convert $F32X4 to $I32X4 (z15 instruction).
|
|
1733
|
+
(rule 1 (lower (has_type (and (vxrs_ext2_enabled) $I32X4)
|
|
1734
|
+
(fcvt_to_sint_sat src @ (value_type $F32X4))))
|
|
1735
|
+
;; See above for why we need to handle NaNs specially.
|
|
1736
|
+
(vec_select $I32X4
|
|
1737
|
+
(fcvt_to_sint_reg $I32X4 $F32X4 (FpuRoundMode.ToZero) src)
|
|
1738
|
+
(vec_imm $I32X4 0) (vec_fcmpeq $F32X4 src src)))
|
|
1739
|
+
|
|
1740
|
+
;; Convert $F32X4 to $I32X4 (via two $F64X2 on z14).
|
|
1741
|
+
(rule (lower (has_type (and (vxrs_ext2_disabled) $I32X4)
|
|
1742
|
+
(fcvt_to_sint_sat src @ (value_type $F32X4))))
|
|
1743
|
+
;; See above for why we need to handle NaNs specially.
|
|
1744
|
+
(vec_select $I32X4
|
|
1745
|
+
(vec_pack_ssat $I64X2
|
|
1746
|
+
(fcvt_to_sint_reg $I64X2 $F64X2 (FpuRoundMode.ToZero)
|
|
1747
|
+
(fpromote_reg $F64X2 $F32X4 (vec_merge_high $I32X4 src src)))
|
|
1748
|
+
(fcvt_to_sint_reg $I64X2 $F64X2 (FpuRoundMode.ToZero)
|
|
1749
|
+
(fpromote_reg $F64X2 $F32X4 (vec_merge_low $I32X4 src src))))
|
|
1750
|
+
(vec_imm $I32X4 0) (vec_fcmpeq $F32X4 src src)))
|
|
1751
|
+
|
|
1752
|
+
;; Convert $F64X2 to $I64X2.
|
|
1753
|
+
(rule (lower (has_type $I64X2 (fcvt_to_sint_sat src @ (value_type $F64X2))))
|
|
1754
|
+
;; See above for why we need to handle NaNs specially.
|
|
1755
|
+
(vec_select $I64X2
|
|
1756
|
+
(fcvt_to_sint_reg $I64X2 $F64X2 (FpuRoundMode.ToZero) src)
|
|
1757
|
+
(vec_imm $I64X2 0) (vec_fcmpeq $F64X2 src src)))
|
|
1758
|
+
|
|
1759
|
+
|
|
1760
|
+
;;;; Rules for `bitcast` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1761
|
+
|
|
1762
|
+
;; Reinterpret a 64-bit integer value as floating-point.
|
|
1763
|
+
(rule (lower (has_type $F64 (bitcast _ x @ (value_type $I64))))
|
|
1764
|
+
(vec_insert_lane_undef $F64X2 x 0 (zero_reg)))
|
|
1765
|
+
|
|
1766
|
+
;; Reinterpret a 64-bit floating-point value as integer.
|
|
1767
|
+
(rule (lower (has_type $I64 (bitcast _ x @ (value_type $F64))))
|
|
1768
|
+
(vec_extract_lane $F64X2 x 0 (zero_reg)))
|
|
1769
|
+
|
|
1770
|
+
;; Reinterpret a 32-bit integer value as floating-point.
|
|
1771
|
+
(rule (lower (has_type $F32 (bitcast _ x @ (value_type $I32))))
|
|
1772
|
+
(vec_insert_lane_undef $F32X4 x 0 (zero_reg)))
|
|
1773
|
+
|
|
1774
|
+
;; Reinterpret a 32-bit floating-point value as integer.
|
|
1775
|
+
(rule (lower (has_type $I32 (bitcast _ x @ (value_type $F32))))
|
|
1776
|
+
(vec_extract_lane $F32X4 x 0 (zero_reg)))
|
|
1777
|
+
|
|
1778
|
+
;; Reinterpret a 16-bit integer value as floating-point.
|
|
1779
|
+
(rule (lower (has_type $F16 (bitcast _ x @ (value_type $I16))))
|
|
1780
|
+
(vec_insert_lane_undef $F16X8 x 0 (zero_reg)))
|
|
1781
|
+
|
|
1782
|
+
;; Reinterpret a 16-bit floating-point value as integer.
|
|
1783
|
+
(rule (lower (has_type $I16 (bitcast _ x @ (value_type $F16))))
|
|
1784
|
+
(vec_extract_lane $F16X8 x 0 (zero_reg)))
|
|
1785
|
+
|
|
1786
|
+
;; Bitcast between types residing in GPRs is a no-op.
|
|
1787
|
+
(rule 1 (lower (has_type (gpr32_ty _)
|
|
1788
|
+
(bitcast _ x @ (value_type (gpr32_ty _)))))
|
|
1789
|
+
x)
|
|
1790
|
+
(rule 2 (lower (has_type (gpr64_ty _)
|
|
1791
|
+
(bitcast _ x @ (value_type (gpr64_ty _)))))
|
|
1792
|
+
x)
|
|
1793
|
+
|
|
1794
|
+
;; Bitcast between types residing in FPRs is a no-op.
|
|
1795
|
+
(rule 3 (lower (has_type (ty_scalar_float _)
|
|
1796
|
+
(bitcast _ x @ (value_type (ty_scalar_float _)))))
|
|
1797
|
+
x)
|
|
1798
|
+
|
|
1799
|
+
;; Bitcast between types residing in VRs is a no-op if lane count is unchanged.
|
|
1800
|
+
(rule 5 (lower (has_type (multi_lane bits count)
|
|
1801
|
+
(bitcast _ x @ (value_type (multi_lane bits count)))))
|
|
1802
|
+
x)
|
|
1803
|
+
|
|
1804
|
+
;; Bitcast between types residing in VRs with different lane counts is a
|
|
1805
|
+
;; no-op if the operation's MemFlags indicate a byte order compatible with
|
|
1806
|
+
;; the current lane order. Otherwise, lane elements need to be swapped,
|
|
1807
|
+
;; first in the input type, and then again in the output type. This could
|
|
1808
|
+
;; be optimized further, but we don't bother at the moment since due to our
|
|
1809
|
+
;; choice of lane order depending on the current function ABI, this case will
|
|
1810
|
+
;; currently never arise in practice.
|
|
1811
|
+
(rule 4 (lower (has_type (vr128_ty out_ty)
|
|
1812
|
+
(bitcast flags x @ (value_type (vr128_ty in_ty)))))
|
|
1813
|
+
(abi_vec_elt_rev (lane_order_from_memflags flags) out_ty
|
|
1814
|
+
(abi_vec_elt_rev (lane_order_from_memflags flags) in_ty x)))
|
|
1815
|
+
|
|
1816
|
+
(decl abi_vec_elt_rev (LaneOrder Type Reg) Reg)
|
|
1817
|
+
(rule 1 (abi_vec_elt_rev callee_lane_order (ty_vec128 ty) reg)
|
|
1818
|
+
(if-let false (lane_order_equal callee_lane_order (lane_order)))
|
|
1819
|
+
(vec_elt_rev ty reg))
|
|
1820
|
+
(rule 0 (abi_vec_elt_rev _ _ reg) reg)
|
|
1821
|
+
|
|
1822
|
+
|
|
1823
|
+
;;;; Rules for `insertlane` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1824
|
+
|
|
1825
|
+
;; Insert vector lane from general-purpose register.
|
|
1826
|
+
(rule 1 (lower (insertlane x @ (value_type ty)
|
|
1827
|
+
y @ (value_type in_ty)
|
|
1828
|
+
(u8_from_uimm8 idx)))
|
|
1829
|
+
(if (ty_int_ref_scalar_64 in_ty))
|
|
1830
|
+
(vec_insert_lane ty x y (be_lane_idx ty idx) (zero_reg)))
|
|
1831
|
+
|
|
1832
|
+
;; Insert vector lane from floating-point register.
|
|
1833
|
+
(rule 0 (lower (insertlane x @ (value_type ty)
|
|
1834
|
+
y @ (value_type (ty_scalar_float _))
|
|
1835
|
+
(u8_from_uimm8 idx)))
|
|
1836
|
+
(vec_move_lane_and_insert ty x (be_lane_idx ty idx) y 0))
|
|
1837
|
+
|
|
1838
|
+
;; Insert vector lane from another vector lane.
|
|
1839
|
+
(rule 2 (lower (insertlane x @ (value_type ty)
|
|
1840
|
+
(extractlane y (u8_from_uimm8 src_idx))
|
|
1841
|
+
(u8_from_uimm8 dst_idx)))
|
|
1842
|
+
(vec_move_lane_and_insert ty x (be_lane_idx ty dst_idx)
|
|
1843
|
+
y (be_lane_idx ty src_idx)))
|
|
1844
|
+
|
|
1845
|
+
;; Insert vector lane from signed 16-bit immediate.
|
|
1846
|
+
(rule 3 (lower (insertlane x @ (value_type ty) (i16_from_value y)
|
|
1847
|
+
(u8_from_uimm8 idx)))
|
|
1848
|
+
(vec_insert_lane_imm ty x y (be_lane_idx ty idx)))
|
|
1849
|
+
|
|
1850
|
+
;; Insert vector lane from big-endian memory.
|
|
1851
|
+
(rule 4 (lower (insertlane x @ (value_type ty) (sinkable_load y)
|
|
1852
|
+
(u8_from_uimm8 idx)))
|
|
1853
|
+
(vec_load_lane ty x (sink_load y) (be_lane_idx ty idx)))
|
|
1854
|
+
|
|
1855
|
+
;; Insert vector lane from little-endian memory.
|
|
1856
|
+
(rule 5 (lower (insertlane x @ (value_type ty) (sinkable_load_little y)
|
|
1857
|
+
(u8_from_uimm8 idx)))
|
|
1858
|
+
(vec_load_lane_little ty x (sink_load y) (be_lane_idx ty idx)))
|
|
1859
|
+
|
|
1860
|
+
|
|
1861
|
+
;; Helper to extract one lane from a vector and insert it into another.
|
|
1862
|
+
(decl vec_move_lane_and_insert (Type Reg u8 Reg u8) Reg)
|
|
1863
|
+
|
|
1864
|
+
;; For 64-bit elements we always use VPDI.
|
|
1865
|
+
(rule (vec_move_lane_and_insert ty @ (multi_lane 64 _) dst 0 src src_idx)
|
|
1866
|
+
(vec_permute_dw_imm ty src src_idx dst 1))
|
|
1867
|
+
(rule (vec_move_lane_and_insert ty @ (multi_lane 64 _) dst 1 src src_idx)
|
|
1868
|
+
(vec_permute_dw_imm ty dst 0 src src_idx))
|
|
1869
|
+
|
|
1870
|
+
;; If source and destination index are the same, use vec_select.
|
|
1871
|
+
(rule -1 (vec_move_lane_and_insert ty dst idx src idx)
|
|
1872
|
+
(vec_select ty src
|
|
1873
|
+
dst (vec_imm_byte_mask ty (lane_byte_mask ty idx))))
|
|
1874
|
+
|
|
1875
|
+
;; Otherwise replicate source first and then use vec_select.
|
|
1876
|
+
(rule -2 (vec_move_lane_and_insert ty dst dst_idx src src_idx)
|
|
1877
|
+
(vec_select ty (vec_replicate_lane ty src src_idx)
|
|
1878
|
+
dst (vec_imm_byte_mask ty (lane_byte_mask ty dst_idx))))
|
|
1879
|
+
|
|
1880
|
+
|
|
1881
|
+
;; Helper to implement a generic little-endian variant of vec_load_lane.
|
|
1882
|
+
(decl vec_load_lane_little (Type Reg MemArg u8) Reg)
|
|
1883
|
+
|
|
1884
|
+
;; 8-byte little-endian loads can be performed via a normal load.
|
|
1885
|
+
(rule (vec_load_lane_little ty @ (multi_lane 8 _) dst addr lane_imm)
|
|
1886
|
+
(vec_load_lane ty dst addr lane_imm))
|
|
1887
|
+
|
|
1888
|
+
;; On z15, we have instructions to perform little-endian loads.
|
|
1889
|
+
(rule 1 (vec_load_lane_little (and (vxrs_ext2_enabled)
|
|
1890
|
+
ty @ (multi_lane 16 _)) dst addr lane_imm)
|
|
1891
|
+
(vec_load_lane_rev ty dst addr lane_imm))
|
|
1892
|
+
(rule 1 (vec_load_lane_little (and (vxrs_ext2_enabled)
|
|
1893
|
+
ty @ (multi_lane 32 _)) dst addr lane_imm)
|
|
1894
|
+
(vec_load_lane_rev ty dst addr lane_imm))
|
|
1895
|
+
(rule 1 (vec_load_lane_little (and (vxrs_ext2_enabled)
|
|
1896
|
+
ty @ (multi_lane 64 _)) dst addr lane_imm)
|
|
1897
|
+
(vec_load_lane_rev ty dst addr lane_imm))
|
|
1898
|
+
|
|
1899
|
+
;; On z14, use a little-endian load to GPR followed by vec_insert_lane.
|
|
1900
|
+
(rule (vec_load_lane_little (and (vxrs_ext2_disabled)
|
|
1901
|
+
ty @ (multi_lane 16 _)) dst addr lane_imm)
|
|
1902
|
+
(vec_insert_lane ty dst (loadrev16 addr) lane_imm (zero_reg)))
|
|
1903
|
+
(rule (vec_load_lane_little (and (vxrs_ext2_disabled)
|
|
1904
|
+
ty @ (multi_lane 32 _)) dst addr lane_imm)
|
|
1905
|
+
(vec_insert_lane ty dst (loadrev32 addr) lane_imm (zero_reg)))
|
|
1906
|
+
(rule (vec_load_lane_little (and (vxrs_ext2_disabled)
|
|
1907
|
+
ty @ (multi_lane 64 _)) dst addr lane_imm)
|
|
1908
|
+
(vec_insert_lane ty dst (loadrev64 addr) lane_imm (zero_reg)))
|
|
1909
|
+
|
|
1910
|
+
;; Helper to implement a generic little-endian variant of vec_load_lane_undef.
|
|
1911
|
+
(decl vec_load_lane_little_undef (Type MemArg u8) Reg)
|
|
1912
|
+
|
|
1913
|
+
;; 8-byte little-endian loads can be performed via a normal load.
|
|
1914
|
+
(rule (vec_load_lane_little_undef ty @ (multi_lane 8 _) addr lane_imm)
|
|
1915
|
+
(vec_load_lane_undef ty addr lane_imm))
|
|
1916
|
+
|
|
1917
|
+
;; On z15, we have instructions to perform little-endian loads.
|
|
1918
|
+
(rule 1 (vec_load_lane_little_undef (and (vxrs_ext2_enabled)
|
|
1919
|
+
ty @ (multi_lane 16 _)) addr lane_imm)
|
|
1920
|
+
(vec_load_lane_rev_undef ty addr lane_imm))
|
|
1921
|
+
(rule 1 (vec_load_lane_little_undef (and (vxrs_ext2_enabled)
|
|
1922
|
+
ty @ (multi_lane 32 _)) addr lane_imm)
|
|
1923
|
+
(vec_load_lane_rev_undef ty addr lane_imm))
|
|
1924
|
+
(rule 1 (vec_load_lane_little_undef (and (vxrs_ext2_enabled)
|
|
1925
|
+
ty @ (multi_lane 64 _)) addr lane_imm)
|
|
1926
|
+
(vec_load_lane_rev_undef ty addr lane_imm))
|
|
1927
|
+
|
|
1928
|
+
;; On z14, use a little-endian load to GPR followed by vec_insert_lane_undef.
|
|
1929
|
+
(rule (vec_load_lane_little_undef (and (vxrs_ext2_disabled)
|
|
1930
|
+
ty @ (multi_lane 16 _)) addr lane_imm)
|
|
1931
|
+
(vec_insert_lane_undef ty (loadrev16 addr) lane_imm (zero_reg)))
|
|
1932
|
+
(rule (vec_load_lane_little_undef (and (vxrs_ext2_disabled)
|
|
1933
|
+
ty @ (multi_lane 32 _)) addr lane_imm)
|
|
1934
|
+
(vec_insert_lane_undef ty (loadrev32 addr) lane_imm (zero_reg)))
|
|
1935
|
+
(rule (vec_load_lane_little_undef (and (vxrs_ext2_disabled)
|
|
1936
|
+
ty @ (multi_lane 64 _)) addr lane_imm)
|
|
1937
|
+
(vec_insert_lane_undef ty (loadrev64 addr) lane_imm (zero_reg)))
|
|
1938
|
+
|
|
1939
|
+
|
|
1940
|
+
;;;; Rules for `extractlane` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1941
|
+
|
|
1942
|
+
;; Extract vector lane to general-purpose register.
|
|
1943
|
+
(rule 1 (lower (has_type out_ty
|
|
1944
|
+
(extractlane x @ (value_type ty) (u8_from_uimm8 idx))))
|
|
1945
|
+
(if (ty_int_ref_scalar_64 out_ty))
|
|
1946
|
+
(vec_extract_lane ty x (be_lane_idx ty idx) (zero_reg)))
|
|
1947
|
+
|
|
1948
|
+
;; Extract vector lane to floating-point register.
|
|
1949
|
+
(rule 0 (lower (has_type (ty_scalar_float _)
|
|
1950
|
+
(extractlane x @ (value_type ty) (u8_from_uimm8 idx))))
|
|
1951
|
+
(vec_replicate_lane ty x (be_lane_idx ty idx)))
|
|
1952
|
+
|
|
1953
|
+
;; Extract vector lane and store to big-endian memory.
|
|
1954
|
+
(rule 6 (lower (store flags @ (bigendian)
|
|
1955
|
+
(extractlane x @ (value_type ty) (u8_from_uimm8 idx))
|
|
1956
|
+
addr offset))
|
|
1957
|
+
(side_effect (vec_store_lane ty x
|
|
1958
|
+
(lower_address flags addr offset) (be_lane_idx ty idx))))
|
|
1959
|
+
|
|
1960
|
+
;; Extract vector lane and store to little-endian memory.
|
|
1961
|
+
(rule 5 (lower (store flags @ (littleendian)
|
|
1962
|
+
(extractlane x @ (value_type ty) (u8_from_uimm8 idx))
|
|
1963
|
+
addr offset))
|
|
1964
|
+
(side_effect (vec_store_lane_little ty x
|
|
1965
|
+
(lower_address flags addr offset) (be_lane_idx ty idx))))
|
|
1966
|
+
|
|
1967
|
+
|
|
1968
|
+
;; Helper to implement a generic little-endian variant of vec_store_lane.
|
|
1969
|
+
(decl vec_store_lane_little (Type Reg MemArg u8) SideEffectNoResult)
|
|
1970
|
+
|
|
1971
|
+
;; 8-byte little-endian stores can be performed via a normal store.
|
|
1972
|
+
(rule (vec_store_lane_little ty @ (multi_lane 8 _) src addr lane_imm)
|
|
1973
|
+
(vec_store_lane ty src addr lane_imm))
|
|
1974
|
+
|
|
1975
|
+
;; On z15, we have instructions to perform little-endian stores.
|
|
1976
|
+
(rule 1 (vec_store_lane_little (and (vxrs_ext2_enabled)
|
|
1977
|
+
ty @ (multi_lane 16 _)) src addr lane_imm)
|
|
1978
|
+
(vec_store_lane_rev ty src addr lane_imm))
|
|
1979
|
+
(rule 1 (vec_store_lane_little (and (vxrs_ext2_enabled)
|
|
1980
|
+
ty @ (multi_lane 32 _)) src addr lane_imm)
|
|
1981
|
+
(vec_store_lane_rev ty src addr lane_imm))
|
|
1982
|
+
(rule 1 (vec_store_lane_little (and (vxrs_ext2_enabled)
|
|
1983
|
+
ty @ (multi_lane 64 _)) src addr lane_imm)
|
|
1984
|
+
(vec_store_lane_rev ty src addr lane_imm))
|
|
1985
|
+
|
|
1986
|
+
;; On z14, use vec_extract_lane followed by a little-endian store from GPR.
|
|
1987
|
+
(rule (vec_store_lane_little (and (vxrs_ext2_disabled)
|
|
1988
|
+
ty @ (multi_lane 16 _)) src addr lane_imm)
|
|
1989
|
+
(storerev16 (vec_extract_lane ty src lane_imm (zero_reg)) addr))
|
|
1990
|
+
(rule (vec_store_lane_little (and (vxrs_ext2_disabled)
|
|
1991
|
+
ty @ (multi_lane 32 _)) src addr lane_imm)
|
|
1992
|
+
(storerev32 (vec_extract_lane ty src lane_imm (zero_reg)) addr))
|
|
1993
|
+
(rule (vec_store_lane_little (and (vxrs_ext2_disabled)
|
|
1994
|
+
ty @ (multi_lane 64 _)) src addr lane_imm)
|
|
1995
|
+
(storerev64 (vec_extract_lane ty src lane_imm (zero_reg)) addr))
|
|
1996
|
+
|
|
1997
|
+
|
|
1998
|
+
;;;; Rules for `splat` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1999
|
+
|
|
2000
|
+
;; Load replicated value from general-purpose register.
|
|
2001
|
+
(rule 1 (lower (has_type ty (splat x @ (value_type in_ty))))
|
|
2002
|
+
(if (ty_int_ref_scalar_64 in_ty))
|
|
2003
|
+
(vec_replicate_lane ty (vec_insert_lane_undef ty x 0 (zero_reg)) 0))
|
|
2004
|
+
|
|
2005
|
+
;; Load replicated value from floating-point register.
|
|
2006
|
+
(rule 0 (lower (has_type ty (splat
|
|
2007
|
+
x @ (value_type (ty_scalar_float _)))))
|
|
2008
|
+
(vec_replicate_lane ty x 0))
|
|
2009
|
+
|
|
2010
|
+
;; Load replicated value from vector lane.
|
|
2011
|
+
(rule 2 (lower (has_type ty (splat (extractlane x (u8_from_uimm8 idx)))))
|
|
2012
|
+
(vec_replicate_lane ty x (be_lane_idx ty idx)))
|
|
2013
|
+
|
|
2014
|
+
;; Load replicated 16-bit immediate value.
|
|
2015
|
+
(rule 3 (lower (has_type ty (splat (i16_from_value x))))
|
|
2016
|
+
(vec_imm_replicate ty x))
|
|
2017
|
+
|
|
2018
|
+
;; Load replicated value from big-endian memory.
|
|
2019
|
+
(rule 4 (lower (has_type ty (splat (sinkable_load x))))
|
|
2020
|
+
(vec_load_replicate ty (sink_load x)))
|
|
2021
|
+
|
|
2022
|
+
;; Load replicated value from little-endian memory.
|
|
2023
|
+
(rule 5 (lower (has_type ty (splat (sinkable_load_little x))))
|
|
2024
|
+
(vec_load_replicate_little ty (sink_load x)))
|
|
2025
|
+
|
|
2026
|
+
|
|
2027
|
+
;; Helper to implement a generic little-endian variant of vec_load_replicate
|
|
2028
|
+
(decl vec_load_replicate_little (Type MemArg) Reg)
|
|
2029
|
+
|
|
2030
|
+
;; 8-byte little-endian loads can be performed via a normal load.
|
|
2031
|
+
(rule (vec_load_replicate_little ty @ (multi_lane 8 _) addr)
|
|
2032
|
+
(vec_load_replicate ty addr))
|
|
2033
|
+
|
|
2034
|
+
;; On z15, we have instructions to perform little-endian loads.
|
|
2035
|
+
(rule 1 (vec_load_replicate_little (and (vxrs_ext2_enabled)
|
|
2036
|
+
ty @ (multi_lane 16 _)) addr)
|
|
2037
|
+
(vec_load_replicate_rev ty addr))
|
|
2038
|
+
(rule 1 (vec_load_replicate_little (and (vxrs_ext2_enabled)
|
|
2039
|
+
ty @ (multi_lane 32 _)) addr)
|
|
2040
|
+
(vec_load_replicate_rev ty addr))
|
|
2041
|
+
(rule 1 (vec_load_replicate_little (and (vxrs_ext2_enabled)
|
|
2042
|
+
ty @ (multi_lane 64 _)) addr)
|
|
2043
|
+
(vec_load_replicate_rev ty addr))
|
|
2044
|
+
|
|
2045
|
+
;; On z14, use a little-endian load (via GPR) and replicate.
|
|
2046
|
+
(rule (vec_load_replicate_little (and (vxrs_ext2_disabled)
|
|
2047
|
+
ty @ (multi_lane 16 _)) addr)
|
|
2048
|
+
(vec_replicate_lane ty (vec_load_lane_little_undef ty addr 0) 0))
|
|
2049
|
+
(rule (vec_load_replicate_little (and (vxrs_ext2_disabled)
|
|
2050
|
+
ty @ (multi_lane 32 _)) addr)
|
|
2051
|
+
(vec_replicate_lane ty (vec_load_lane_little_undef ty addr 0) 0))
|
|
2052
|
+
(rule (vec_load_replicate_little (and (vxrs_ext2_disabled)
|
|
2053
|
+
ty @ (multi_lane 64 _)) addr)
|
|
2054
|
+
(vec_replicate_lane ty (vec_load_lane_little_undef ty addr 0) 0))
|
|
2055
|
+
|
|
2056
|
+
|
|
2057
|
+
;;;; Rules for `scalar_to_vector` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
2058
|
+
|
|
2059
|
+
;; Load scalar value from general-purpose register.
|
|
2060
|
+
(rule 1 (lower (has_type ty (scalar_to_vector
|
|
2061
|
+
x @ (value_type in_ty))))
|
|
2062
|
+
(if (ty_int_ref_scalar_64 in_ty))
|
|
2063
|
+
(vec_insert_lane ty (vec_imm ty 0) x (be_lane_idx ty 0) (zero_reg)))
|
|
2064
|
+
|
|
2065
|
+
;; Load scalar value from floating-point register.
|
|
2066
|
+
(rule 0 (lower (has_type ty (scalar_to_vector
|
|
2067
|
+
x @ (value_type (ty_scalar_float _)))))
|
|
2068
|
+
(vec_move_lane_and_zero ty (be_lane_idx ty 0) x 0))
|
|
2069
|
+
|
|
2070
|
+
;; Load scalar value from vector lane.
|
|
2071
|
+
(rule 2 (lower (has_type ty (scalar_to_vector
|
|
2072
|
+
(extractlane x (u8_from_uimm8 idx)))))
|
|
2073
|
+
(vec_move_lane_and_zero ty (be_lane_idx ty 0) x (be_lane_idx ty idx)))
|
|
2074
|
+
|
|
2075
|
+
;; Load scalar 16-bit immediate value.
|
|
2076
|
+
(rule 3 (lower (has_type ty (scalar_to_vector (i16_from_value x))))
|
|
2077
|
+
(vec_insert_lane_imm ty (vec_imm ty 0) x (be_lane_idx ty 0)))
|
|
2078
|
+
|
|
2079
|
+
;; Load scalar value from big-endian memory.
|
|
2080
|
+
(rule 4 (lower (has_type ty (scalar_to_vector (sinkable_load x))))
|
|
2081
|
+
(vec_load_lane ty (vec_imm ty 0) (sink_load x) (be_lane_idx ty 0)))
|
|
2082
|
+
|
|
2083
|
+
;; Load scalar value lane from little-endian memory.
|
|
2084
|
+
(rule 5 (lower (has_type ty (scalar_to_vector (sinkable_load_little x))))
|
|
2085
|
+
(vec_load_lane_little ty (vec_imm ty 0) (sink_load x) (be_lane_idx ty 0)))
|
|
2086
|
+
|
|
2087
|
+
|
|
2088
|
+
;; Helper to extract one lane from a vector and insert it into a zero vector.
|
|
2089
|
+
(decl vec_move_lane_and_zero (Type u8 Reg u8) Reg)
|
|
2090
|
+
|
|
2091
|
+
;; For 64-bit elements we always use VPDI.
|
|
2092
|
+
(rule (vec_move_lane_and_zero ty @ (multi_lane 64 _) 0 src src_idx)
|
|
2093
|
+
(vec_permute_dw_imm ty src src_idx (vec_imm ty 0) 0))
|
|
2094
|
+
(rule (vec_move_lane_and_zero ty @ (multi_lane 64 _) 1 src src_idx)
|
|
2095
|
+
(vec_permute_dw_imm ty (vec_imm ty 0) 0 src src_idx))
|
|
2096
|
+
|
|
2097
|
+
;; If source and destination index are the same, simply mask to this lane.
|
|
2098
|
+
(rule -1 (vec_move_lane_and_zero ty idx src idx)
|
|
2099
|
+
(vec_and ty src
|
|
2100
|
+
(vec_imm_byte_mask ty (lane_byte_mask ty idx))))
|
|
2101
|
+
|
|
2102
|
+
;; Otherwise replicate source first and then mask to the lane.
|
|
2103
|
+
(rule -2 (vec_move_lane_and_zero ty dst_idx src src_idx)
|
|
2104
|
+
(vec_and ty (vec_replicate_lane ty src src_idx)
|
|
2105
|
+
(vec_imm_byte_mask ty (lane_byte_mask ty dst_idx))))
|
|
2106
|
+
|
|
2107
|
+
|
|
2108
|
+
;;;; Rules for `shuffle` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
2109
|
+
|
|
2110
|
+
;; General case: use vec_permute and then mask off zero lanes.
|
|
2111
|
+
(rule -2 (lower (shuffle x y (shuffle_mask permute_mask and_mask)))
|
|
2112
|
+
(vec_and $I8X16 (vec_imm_byte_mask $I8X16 and_mask)
|
|
2113
|
+
(vec_permute $I8X16 x y (vec_imm $I8X16 permute_mask))))
|
|
2114
|
+
|
|
2115
|
+
;; If the pattern has no zero lanes, just a vec_permute suffices.
|
|
2116
|
+
(rule -1 (lower (shuffle x y (shuffle_mask permute_mask 65535)))
|
|
2117
|
+
(vec_permute $I8X16 x y (vec_imm $I8X16 permute_mask)))
|
|
2118
|
+
|
|
2119
|
+
;; Special patterns that can be implemented via MERGE HIGH.
|
|
2120
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) 65535)))
|
|
2121
|
+
(vec_merge_high $I64X2 x y))
|
|
2122
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 0 1 2 3 16 17 18 19 4 5 6 7 20 21 22 23) 65535)))
|
|
2123
|
+
(vec_merge_high $I32X4 x y))
|
|
2124
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 0 1 16 17 2 3 18 19 4 5 20 21 6 7 22 23) 65535)))
|
|
2125
|
+
(vec_merge_high $I16X8 x y))
|
|
2126
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 0 16 1 17 2 18 3 19 4 20 5 21 6 22 7 23) 65535)))
|
|
2127
|
+
(vec_merge_high $I8X16 x y))
|
|
2128
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 16 17 18 19 20 21 22 23 0 1 2 3 4 5 6 7) 65535)))
|
|
2129
|
+
(vec_merge_high $I64X2 y x))
|
|
2130
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 16 17 18 19 0 1 2 3 20 21 22 23 4 5 6 7) 65535)))
|
|
2131
|
+
(vec_merge_high $I32X4 y x))
|
|
2132
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 16 17 0 1 18 19 2 3 20 21 4 5 22 23 6 7) 65535)))
|
|
2133
|
+
(vec_merge_high $I16X8 y x))
|
|
2134
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 16 0 17 1 18 2 19 3 20 4 21 5 22 6 23 7) 65535)))
|
|
2135
|
+
(vec_merge_high $I8X16 y x))
|
|
2136
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7) 65535)))
|
|
2137
|
+
(vec_merge_high $I64X2 x x))
|
|
2138
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 0 1 2 3 0 1 2 3 4 5 6 7 4 5 6 7) 65535)))
|
|
2139
|
+
(vec_merge_high $I32X4 x x))
|
|
2140
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 0 1 0 1 2 3 2 3 4 5 4 5 6 7 6 7) 65535)))
|
|
2141
|
+
(vec_merge_high $I16X8 x x))
|
|
2142
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7) 65535)))
|
|
2143
|
+
(vec_merge_high $I8X16 x x))
|
|
2144
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 16 17 18 19 20 21 22 23 16 17 18 19 20 21 22 23) 65535)))
|
|
2145
|
+
(vec_merge_high $I64X2 y y))
|
|
2146
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 16 17 18 19 16 17 18 19 20 21 22 23 20 21 22 23) 65535)))
|
|
2147
|
+
(vec_merge_high $I32X4 y y))
|
|
2148
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 16 17 16 17 18 19 18 19 20 21 20 21 22 23 22 23) 65535)))
|
|
2149
|
+
(vec_merge_high $I16X8 y y))
|
|
2150
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23) 65535)))
|
|
2151
|
+
(vec_merge_high $I8X16 y y))
|
|
2152
|
+
|
|
2153
|
+
;; Special patterns that can be implemented via MERGE LOW.
|
|
2154
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) 65535)))
|
|
2155
|
+
(vec_merge_low $I64X2 x y))
|
|
2156
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 8 9 10 11 24 25 26 27 12 13 14 15 28 29 30 31) 65535)))
|
|
2157
|
+
(vec_merge_low $I32X4 x y))
|
|
2158
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 8 9 24 25 10 11 26 27 12 13 28 29 14 15 30 31) 65535)))
|
|
2159
|
+
(vec_merge_low $I16X8 x y))
|
|
2160
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 8 24 9 25 10 26 11 27 12 28 13 29 14 30 15 31) 65535)))
|
|
2161
|
+
(vec_merge_low $I8X16 x y))
|
|
2162
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 24 25 26 27 28 29 30 31 8 9 10 11 12 13 14 15) 65535)))
|
|
2163
|
+
(vec_merge_low $I64X2 y x))
|
|
2164
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 24 25 26 27 8 9 10 11 28 29 30 31 12 13 14 15) 65535)))
|
|
2165
|
+
(vec_merge_low $I32X4 y x))
|
|
2166
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 24 25 8 9 26 27 10 11 28 29 12 13 30 31 14 15) 65535)))
|
|
2167
|
+
(vec_merge_low $I16X8 y x))
|
|
2168
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 24 8 25 9 26 10 27 11 28 12 29 13 30 14 31 15) 65535)))
|
|
2169
|
+
(vec_merge_low $I8X16 y x))
|
|
2170
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 8 9 10 11 12 13 14 15 8 9 10 11 12 13 14 15) 65535)))
|
|
2171
|
+
(vec_merge_low $I64X2 x x))
|
|
2172
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 8 9 10 11 8 9 10 11 12 13 14 15 12 13 14 15) 65535)))
|
|
2173
|
+
(vec_merge_low $I32X4 x x))
|
|
2174
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 8 9 8 9 10 11 10 11 12 13 12 13 14 15 14 15) 65535)))
|
|
2175
|
+
(vec_merge_low $I16X8 x x))
|
|
2176
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15) 65535)))
|
|
2177
|
+
(vec_merge_low $I8X16 x x))
|
|
2178
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 24 25 26 27 28 29 30 31 24 25 26 27 28 29 30 31) 65535)))
|
|
2179
|
+
(vec_merge_low $I64X2 y y))
|
|
2180
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 24 25 26 27 24 25 26 27 28 29 30 31 28 29 30 31) 65535)))
|
|
2181
|
+
(vec_merge_low $I32X4 y y))
|
|
2182
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 24 25 24 25 26 27 26 27 28 29 28 29 30 31 30 31) 65535)))
|
|
2183
|
+
(vec_merge_low $I16X8 y y))
|
|
2184
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31) 65535)))
|
|
2185
|
+
(vec_merge_low $I8X16 y y))
|
|
2186
|
+
|
|
2187
|
+
;; Special patterns that can be implemented via PACK.
|
|
2188
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 4 5 6 7 12 13 14 15 20 21 22 23 28 29 30 31) 65535)))
|
|
2189
|
+
(vec_pack $I64X2 x y))
|
|
2190
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 2 3 6 7 10 11 14 15 18 19 22 23 26 27 30 31) 65535)))
|
|
2191
|
+
(vec_pack $I32X4 x y))
|
|
2192
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31) 65535)))
|
|
2193
|
+
(vec_pack $I16X8 x y))
|
|
2194
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 20 21 22 23 28 29 30 31 4 5 6 7 12 13 14 15) 65535)))
|
|
2195
|
+
(vec_pack $I64X2 y x))
|
|
2196
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 18 19 22 23 26 27 30 31 2 3 6 7 10 11 14 15) 65535)))
|
|
2197
|
+
(vec_pack $I32X4 y x))
|
|
2198
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 17 19 21 23 25 27 29 31 1 3 5 7 9 11 13 15) 65535)))
|
|
2199
|
+
(vec_pack $I16X8 y x))
|
|
2200
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 4 5 6 7 12 13 14 15 4 5 6 7 12 13 14 15) 65535)))
|
|
2201
|
+
(vec_pack $I64X2 x x))
|
|
2202
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 2 3 6 7 10 11 14 15 2 3 6 7 10 11 14 15) 65535)))
|
|
2203
|
+
(vec_pack $I32X4 x x))
|
|
2204
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 1 3 5 7 9 11 13 15 1 3 5 7 9 11 13 15) 65535)))
|
|
2205
|
+
(vec_pack $I16X8 x x))
|
|
2206
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 20 21 22 23 28 29 30 31 20 21 22 23 28 29 30 31) 65535)))
|
|
2207
|
+
(vec_pack $I64X2 y y))
|
|
2208
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 18 19 22 23 26 27 30 31 18 19 22 23 26 27 30 31) 65535)))
|
|
2209
|
+
(vec_pack $I32X4 y y))
|
|
2210
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 17 19 21 23 25 27 29 31 17 19 21 23 25 27 29 31) 65535)))
|
|
2211
|
+
(vec_pack $I16X8 y y))
|
|
2212
|
+
|
|
2213
|
+
;; Special patterns that can be implemented via UNPACK HIGH.
|
|
2214
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 _ _ _ _ 0 1 2 3 _ _ _ _ 4 5 6 7) 3855)))
|
|
2215
|
+
(vec_unpacku_high $I32X4 x))
|
|
2216
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 _ _ 0 1 _ _ 2 3 _ _ 4 5 _ _ 6 7) 13107)))
|
|
2217
|
+
(vec_unpacku_high $I16X8 x))
|
|
2218
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 _ 0 _ 1 _ 2 _ 3 _ 4 _ 5 _ 6 _ 7) 21845)))
|
|
2219
|
+
(vec_unpacku_high $I8X16 x))
|
|
2220
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 _ _ _ _ 16 17 18 19 _ _ _ _ 20 21 22 23) 3855)))
|
|
2221
|
+
(vec_unpacku_high $I32X4 y))
|
|
2222
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 _ _ 16 17 _ _ 18 19 _ _ 20 21 _ _ 22 23) 13107)))
|
|
2223
|
+
(vec_unpacku_high $I16X8 y))
|
|
2224
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 _ 16 _ 17 _ 18 _ 19 _ 20 _ 21 _ 22 _ 23) 21845)))
|
|
2225
|
+
(vec_unpacku_high $I8X16 y))
|
|
2226
|
+
|
|
2227
|
+
;; Special patterns that can be implemented via UNPACK LOW.
|
|
2228
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 _ _ _ _ 8 9 10 11 _ _ _ _ 12 13 14 15) 3855)))
|
|
2229
|
+
(vec_unpacku_low $I32X4 x))
|
|
2230
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 _ _ 8 9 _ _ 10 11 _ _ 12 13 _ _ 14 15) 13107)))
|
|
2231
|
+
(vec_unpacku_low $I16X8 x))
|
|
2232
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 _ 8 _ 9 _ 10 _ 11 _ 12 _ 13 _ 14 _ 15) 21845)))
|
|
2233
|
+
(vec_unpacku_low $I8X16 x))
|
|
2234
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 _ _ _ _ 24 25 26 27 _ _ _ _ 28 29 30 31) 3855)))
|
|
2235
|
+
(vec_unpacku_low $I32X4 y))
|
|
2236
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 _ _ 24 25 _ _ 26 27 _ _ 28 29 _ _ 30 31) 13107)))
|
|
2237
|
+
(vec_unpacku_low $I16X8 y))
|
|
2238
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 _ 24 _ 25 _ 26 _ 27 _ 28 _ 29 _ 30 _ 31) 21845)))
|
|
2239
|
+
(vec_unpacku_low $I8X16 y))
|
|
2240
|
+
|
|
2241
|
+
;; Special patterns that can be implemented via PERMUTE DOUBLEWORD IMMEDIATE.
|
|
2242
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31) 65535)))
|
|
2243
|
+
(vec_permute_dw_imm $I8X16 x 0 y 1))
|
|
2244
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23) 65535)))
|
|
2245
|
+
(vec_permute_dw_imm $I8X16 x 1 y 0))
|
|
2246
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 16 17 18 19 20 21 22 23 8 9 10 11 12 13 14 15) 65535)))
|
|
2247
|
+
(vec_permute_dw_imm $I8X16 y 0 x 1))
|
|
2248
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) 65535)))
|
|
2249
|
+
(vec_permute_dw_imm $I8X16 y 1 x 0))
|
|
2250
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) 65535)))
|
|
2251
|
+
(vec_permute_dw_imm $I8X16 x 0 x 1))
|
|
2252
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7) 65535)))
|
|
2253
|
+
(vec_permute_dw_imm $I8X16 x 1 x 0))
|
|
2254
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31) 65535)))
|
|
2255
|
+
(vec_permute_dw_imm $I8X16 y 0 y 1))
|
|
2256
|
+
(rule (lower (shuffle x y (shuffle_mask (imm8x16 24 25 26 27 28 29 30 31 16 17 18 19 20 21 22 23) 65535)))
|
|
2257
|
+
(vec_permute_dw_imm $I8X16 y 1 y 0))
|
|
2258
|
+
|
|
2259
|
+
|
|
2260
|
+
;;;; Rules for `swizzle` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
2261
|
+
|
|
2262
|
+
;; When using big-endian lane order, the lane mask is mostly correct, but we
|
|
2263
|
+
;; need to handle mask elements outside the range 0..15 by zeroing the lane.
|
|
2264
|
+
;;
|
|
2265
|
+
;; To do so efficiently, we compute:
|
|
2266
|
+
;; permute-lane-element := umin (16, swizzle-lane-element)
|
|
2267
|
+
;; and pass a zero vector as second operand to the permute instruction.
|
|
2268
|
+
|
|
2269
|
+
(rule 1 (lower (has_type (ty_vec128 ty) (swizzle x y)))
|
|
2270
|
+
(if-let (LaneOrder.BigEndian) (lane_order))
|
|
2271
|
+
(vec_permute ty x (vec_imm ty 0)
|
|
2272
|
+
(vec_umin $I8X16 (vec_imm_splat $I8X16 16) y)))
|
|
2273
|
+
|
|
2274
|
+
;; When using little-endian lane order, in addition to zeroing (as above),
|
|
2275
|
+
;; we need to convert from little-endian to big-endian lane numbering.
|
|
2276
|
+
;;
|
|
2277
|
+
;; To do so efficiently, we compute:
|
|
2278
|
+
;; permute-lane-element := umax (239, ~ swizzle-lane-element)
|
|
2279
|
+
;; which has the following effect:
|
|
2280
|
+
;; elements 0 .. 15 --> 255 .. 240 (i.e. 31 .. 16 mod 32)
|
|
2281
|
+
;; everything else --> 239 (i.e. 15 mod 32)
|
|
2282
|
+
;;
|
|
2283
|
+
;; Then, we can use a single permute instruction with
|
|
2284
|
+
;; a zero vector as first operand (covering lane 15)
|
|
2285
|
+
;; the input vector as second operand (covering lanes 16 .. 31)
|
|
2286
|
+
;; to implement the required swizzle semantics.
|
|
2287
|
+
|
|
2288
|
+
(rule (lower (has_type (ty_vec128 ty) (swizzle x y)))
|
|
2289
|
+
(if-let (LaneOrder.LittleEndian) (lane_order))
|
|
2290
|
+
(vec_permute ty (vec_imm ty 0) x
|
|
2291
|
+
(vec_umax $I8X16 (vec_imm_splat $I8X16 239)
|
|
2292
|
+
(vec_not $I8X16 y))))
|
|
2293
|
+
|
|
2294
|
+
|
|
2295
|
+
;;;; Rules for `stack_addr` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
2296
|
+
|
|
2297
|
+
;; Load the address of a stack slot.
|
|
2298
|
+
(rule (lower (has_type ty (stack_addr stack_slot offset)))
|
|
2299
|
+
(stack_addr_impl ty stack_slot offset))
|
|
2300
|
+
|
|
2301
|
+
|
|
2302
|
+
;;;; Rules for `func_addr` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
2303
|
+
|
|
2304
|
+
;; Load the address of a function, target reachable via PC-relative instruction.
|
|
2305
|
+
(rule 1 (lower (func_addr (func_ref_data _ name (RelocDistance.Near))))
|
|
2306
|
+
(load_addr (memarg_symbol name 0 (memflags_trusted))))
|
|
2307
|
+
|
|
2308
|
+
;; Load the address of a function, general case.
|
|
2309
|
+
(rule (lower (func_addr (func_ref_data _ name _)))
|
|
2310
|
+
(load_symbol_reloc (SymbolReloc.Absolute name 0)))
|
|
2311
|
+
|
|
2312
|
+
|
|
2313
|
+
;;;; Rules for `symbol_value` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
2314
|
+
|
|
2315
|
+
;; Load the address of a symbol, target reachable via PC-relative instruction.
|
|
2316
|
+
(rule 1 (lower (symbol_value (symbol_value_data name (RelocDistance.Near)
|
|
2317
|
+
off)))
|
|
2318
|
+
(if-let offset (memarg_symbol_offset off))
|
|
2319
|
+
(load_addr (memarg_symbol name offset (memflags_trusted))))
|
|
2320
|
+
|
|
2321
|
+
;; Load the address of a symbol, general case.
|
|
2322
|
+
(rule (lower (symbol_value (symbol_value_data name _ offset)))
|
|
2323
|
+
(load_symbol_reloc (SymbolReloc.Absolute name offset)))
|
|
2324
|
+
|
|
2325
|
+
|
|
2326
|
+
;;;; Rules for `tls_value` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
2327
|
+
|
|
2328
|
+
;; Load the address of a TLS symbol (ELF general-dynamic model).
|
|
2329
|
+
(rule (lower (tls_value (symbol_value_data name _ 0)))
|
|
2330
|
+
(if (tls_model_is_elf_gd))
|
|
2331
|
+
(let ((symbol SymbolReloc (SymbolReloc.TlsGd name))
|
|
2332
|
+
(got Reg (load_addr (memarg_got)))
|
|
2333
|
+
(got_offset Reg (load_symbol_reloc symbol))
|
|
2334
|
+
(tls_offset Reg (lib_call_tls_get_offset got got_offset symbol)))
|
|
2335
|
+
(add_reg $I64 tls_offset (thread_pointer))))
|
|
2336
|
+
|
|
2337
|
+
;; Helper to perform a call to the __tls_get_offset library routine.
|
|
2338
|
+
(decl lib_call_tls_get_offset (Reg Reg SymbolReloc) Reg)
|
|
2339
|
+
(rule (lib_call_tls_get_offset got got_offset symbol)
|
|
2340
|
+
(let ((tls_offset WritableReg (temp_writable_reg $I64))
|
|
2341
|
+
(_ Unit (abi_for_elf_tls_get_offset))
|
|
2342
|
+
(_ Unit (emit (MInst.ElfTlsGetOffset tls_offset got got_offset symbol))))
|
|
2343
|
+
tls_offset))
|
|
2344
|
+
|
|
2345
|
+
(decl abi_for_elf_tls_get_offset () Unit)
|
|
2346
|
+
(extern constructor abi_for_elf_tls_get_offset abi_for_elf_tls_get_offset)
|
|
2347
|
+
|
|
2348
|
+
;; Helper to extract the current thread pointer from %a0/%a1.
|
|
2349
|
+
(decl thread_pointer () Reg)
|
|
2350
|
+
(rule (thread_pointer)
|
|
2351
|
+
(insert_ar (lshl_imm $I64 (load_ar 0) 32) 1))
|
|
2352
|
+
|
|
2353
|
+
|
|
2354
|
+
;;;; Rules for `load` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
2355
|
+
|
|
2356
|
+
;; Load 8-bit integers.
|
|
2357
|
+
(rule (lower (has_type $I8 (load flags addr offset)))
|
|
2358
|
+
(zext32_mem $I8 (lower_address flags addr offset)))
|
|
2359
|
+
|
|
2360
|
+
;; Load 16-bit big-endian integers.
|
|
2361
|
+
(rule (lower (has_type $I16 (load flags @ (bigendian) addr offset)))
|
|
2362
|
+
(zext32_mem $I16 (lower_address flags addr offset)))
|
|
2363
|
+
|
|
2364
|
+
;; Load 16-bit little-endian integers.
|
|
2365
|
+
(rule -1 (lower (has_type $I16 (load flags @ (littleendian) addr offset)))
|
|
2366
|
+
(loadrev16 (lower_address flags addr offset)))
|
|
2367
|
+
|
|
2368
|
+
;; Load 32-bit big-endian integers.
|
|
2369
|
+
(rule (lower (has_type $I32 (load flags @ (bigendian) addr offset)))
|
|
2370
|
+
(load32 (lower_address flags addr offset)))
|
|
2371
|
+
|
|
2372
|
+
;; Load 32-bit little-endian integers.
|
|
2373
|
+
(rule -1 (lower (has_type $I32 (load flags @ (littleendian) addr offset)))
|
|
2374
|
+
(loadrev32 (lower_address flags addr offset)))
|
|
2375
|
+
|
|
2376
|
+
;; Load 64-bit big-endian integers.
|
|
2377
|
+
(rule (lower (has_type $I64 (load flags @ (bigendian) addr offset)))
|
|
2378
|
+
(load64 (lower_address flags addr offset)))
|
|
2379
|
+
|
|
2380
|
+
;; Load 64-bit little-endian integers.
|
|
2381
|
+
(rule -1 (lower (has_type $I64 (load flags @ (littleendian) addr offset)))
|
|
2382
|
+
(loadrev64 (lower_address flags addr offset)))
|
|
2383
|
+
|
|
2384
|
+
;; Load 16-bit big-endian floating-point values (as vector lane).
|
|
2385
|
+
(rule (lower (has_type $F16 (load flags @ (bigendian) addr offset)))
|
|
2386
|
+
(vec_load_lane_undef $F16X8 (lower_address flags addr offset) 0))
|
|
2387
|
+
|
|
2388
|
+
;; Load 16-bit little-endian floating-point values (as vector lane).
|
|
2389
|
+
(rule -1 (lower (has_type $F16 (load flags @ (littleendian) addr offset)))
|
|
2390
|
+
(vec_load_lane_little_undef $F16X8 (lower_address flags addr offset) 0))
|
|
2391
|
+
|
|
2392
|
+
;; Load 32-bit big-endian floating-point values (as vector lane).
|
|
2393
|
+
(rule (lower (has_type $F32 (load flags @ (bigendian) addr offset)))
|
|
2394
|
+
(vec_load_lane_undef $F32X4 (lower_address flags addr offset) 0))
|
|
2395
|
+
|
|
2396
|
+
;; Load 32-bit little-endian floating-point values (as vector lane).
|
|
2397
|
+
(rule -1 (lower (has_type $F32 (load flags @ (littleendian) addr offset)))
|
|
2398
|
+
(vec_load_lane_little_undef $F32X4 (lower_address flags addr offset) 0))
|
|
2399
|
+
|
|
2400
|
+
;; Load 64-bit big-endian floating-point values (as vector lane).
|
|
2401
|
+
(rule (lower (has_type $F64 (load flags @ (bigendian) addr offset)))
|
|
2402
|
+
(vec_load_lane_undef $F64X2 (lower_address flags addr offset) 0))
|
|
2403
|
+
|
|
2404
|
+
;; Load 64-bit little-endian floating-point values (as vector lane).
|
|
2405
|
+
(rule -1 (lower (has_type $F64 (load flags @ (littleendian) addr offset)))
|
|
2406
|
+
(vec_load_lane_little_undef $F64X2 (lower_address flags addr offset) 0))
|
|
2407
|
+
|
|
2408
|
+
;; Load 128-bit big-endian vector values, BE lane order - direct load.
|
|
2409
|
+
(rule 4 (lower (has_type (vr128_ty ty) (load flags @ (bigendian) addr offset)))
|
|
2410
|
+
(if-let (LaneOrder.BigEndian) (lane_order))
|
|
2411
|
+
(vec_load ty (lower_address flags addr offset)))
|
|
2412
|
+
|
|
2413
|
+
;; Load 128-bit little-endian vector values, BE lane order - byte-reversed load.
|
|
2414
|
+
(rule 3 (lower (has_type (vr128_ty ty) (load flags @ (littleendian) addr offset)))
|
|
2415
|
+
(if-let (LaneOrder.BigEndian) (lane_order))
|
|
2416
|
+
(vec_load_byte_rev ty flags addr offset))
|
|
2417
|
+
|
|
2418
|
+
;; Load 128-bit big-endian vector values, LE lane order - element-reversed load.
|
|
2419
|
+
(rule 2 (lower (has_type (vr128_ty ty) (load flags @ (bigendian) addr offset)))
|
|
2420
|
+
(if-let (LaneOrder.LittleEndian) (lane_order))
|
|
2421
|
+
(vec_load_elt_rev ty flags addr offset))
|
|
2422
|
+
|
|
2423
|
+
;; Load 128-bit little-endian vector values, LE lane order - fully-reversed load.
|
|
2424
|
+
(rule 1 (lower (has_type (vr128_ty ty) (load flags @ (littleendian) addr offset)))
|
|
2425
|
+
(if-let (LaneOrder.LittleEndian) (lane_order))
|
|
2426
|
+
(vec_load_full_rev ty flags addr offset))
|
|
2427
|
+
|
|
2428
|
+
|
|
2429
|
+
;; Helper to perform a 128-bit full-vector byte-reversed load.
|
|
2430
|
+
(decl vec_load_full_rev (Type MemFlags Value Offset32) Reg)
|
|
2431
|
+
|
|
2432
|
+
;; Full-vector byte-reversed load via single instruction on z15.
|
|
2433
|
+
(rule 1 (vec_load_full_rev (and (vxrs_ext2_enabled) (vr128_ty ty)) flags addr offset)
|
|
2434
|
+
(vec_loadrev ty (lower_address flags addr offset)))
|
|
2435
|
+
|
|
2436
|
+
;; Full-vector byte-reversed load via GPRs on z14.
|
|
2437
|
+
(rule (vec_load_full_rev (and (vxrs_ext2_disabled) (vr128_ty ty)) flags addr offset)
|
|
2438
|
+
(let ((lo_addr MemArg (lower_address_bias flags addr offset 0))
|
|
2439
|
+
(hi_addr MemArg (lower_address_bias flags addr offset 8))
|
|
2440
|
+
(lo_val Reg (loadrev64 lo_addr))
|
|
2441
|
+
(hi_val Reg (loadrev64 hi_addr)))
|
|
2442
|
+
(mov_to_vec128 ty hi_val lo_val)))
|
|
2443
|
+
|
|
2444
|
+
|
|
2445
|
+
;; Helper to perform an element-wise byte-reversed load.
|
|
2446
|
+
(decl vec_load_byte_rev (Type MemFlags Value Offset32) Reg)
|
|
2447
|
+
|
|
2448
|
+
;; Element-wise byte-reversed 1x128-bit load is a full byte-reversed load.
|
|
2449
|
+
(rule -1 (vec_load_byte_rev $I128 flags addr offset)
|
|
2450
|
+
(vec_load_full_rev $I128 flags addr offset))
|
|
2451
|
+
|
|
2452
|
+
;; Same for `f128`.
|
|
2453
|
+
(rule -1 (vec_load_byte_rev $F128 flags addr offset)
|
|
2454
|
+
(vec_load_full_rev $F128 flags addr offset))
|
|
2455
|
+
|
|
2456
|
+
;; Element-wise byte-reversed 16x8-bit load is a direct load.
|
|
2457
|
+
(rule (vec_load_byte_rev ty @ (multi_lane 8 16) flags addr offset)
|
|
2458
|
+
(vec_load ty (lower_address flags addr offset)))
|
|
2459
|
+
|
|
2460
|
+
;; Element-wise byte-reversed load via single instruction on z15.
|
|
2461
|
+
(rule 1 (vec_load_byte_rev (and (vxrs_ext2_enabled) ty @ (multi_lane 64 2))
|
|
2462
|
+
flags addr offset)
|
|
2463
|
+
(vec_load_byte64rev ty (lower_address flags addr offset)))
|
|
2464
|
+
(rule 1 (vec_load_byte_rev (and (vxrs_ext2_enabled) ty @ (multi_lane 32 4))
|
|
2465
|
+
flags addr offset)
|
|
2466
|
+
(vec_load_byte32rev ty (lower_address flags addr offset)))
|
|
2467
|
+
(rule 1 (vec_load_byte_rev (and (vxrs_ext2_enabled) ty @ (multi_lane 16 8))
|
|
2468
|
+
flags addr offset)
|
|
2469
|
+
(vec_load_byte16rev ty (lower_address flags addr offset)))
|
|
2470
|
+
|
|
2471
|
+
;; Element-wise byte-reversed load as element-swapped byte-reversed load on z14.
|
|
2472
|
+
(rule (vec_load_byte_rev (and (vxrs_ext2_disabled) ty @ (multi_lane 64 2))
|
|
2473
|
+
flags addr offset)
|
|
2474
|
+
(vec_elt_rev ty (vec_load_full_rev ty flags addr offset)))
|
|
2475
|
+
(rule (vec_load_byte_rev (and (vxrs_ext2_disabled) ty @ (multi_lane 32 4))
|
|
2476
|
+
flags addr offset)
|
|
2477
|
+
(vec_elt_rev ty (vec_load_full_rev ty flags addr offset)))
|
|
2478
|
+
(rule (vec_load_byte_rev (and (vxrs_ext2_disabled) ty @ (multi_lane 16 8))
|
|
2479
|
+
flags addr offset)
|
|
2480
|
+
(vec_elt_rev ty (vec_load_full_rev ty flags addr offset)))
|
|
2481
|
+
|
|
2482
|
+
|
|
2483
|
+
;; Helper to perform an element-reversed load.
|
|
2484
|
+
(decl vec_load_elt_rev (Type MemFlags Value Offset32) Reg)
|
|
2485
|
+
|
|
2486
|
+
;; Element-reversed 1x128-bit load is a direct load.
|
|
2487
|
+
;; For 1x128-bit types, this is a direct load.
|
|
2488
|
+
(rule -1 (vec_load_elt_rev $I128 flags addr offset)
|
|
2489
|
+
(vec_load $I128 (lower_address flags addr offset)))
|
|
2490
|
+
|
|
2491
|
+
;; Same for `f128`.
|
|
2492
|
+
(rule -1 (vec_load_elt_rev $F128 flags addr offset)
|
|
2493
|
+
(vec_load $F128 (lower_address flags addr offset)))
|
|
2494
|
+
|
|
2495
|
+
;; Element-reversed 16x8-bit load is a full byte-reversed load.
|
|
2496
|
+
(rule (vec_load_elt_rev ty @ (multi_lane 8 16) flags addr offset)
|
|
2497
|
+
(vec_load_full_rev ty flags addr offset))
|
|
2498
|
+
|
|
2499
|
+
;; Element-reversed load via single instruction on z15.
|
|
2500
|
+
(rule 1 (vec_load_elt_rev (and (vxrs_ext2_enabled) ty @ (multi_lane 64 2))
|
|
2501
|
+
flags addr offset)
|
|
2502
|
+
(vec_load_elt64rev ty (lower_address flags addr offset)))
|
|
2503
|
+
(rule 1 (vec_load_elt_rev (and (vxrs_ext2_enabled) ty @ (multi_lane 32 4))
|
|
2504
|
+
flags addr offset)
|
|
2505
|
+
(vec_load_elt32rev ty (lower_address flags addr offset)))
|
|
2506
|
+
(rule 1 (vec_load_elt_rev (and (vxrs_ext2_enabled) ty @ (multi_lane 16 8))
|
|
2507
|
+
flags addr offset)
|
|
2508
|
+
(vec_load_elt16rev ty (lower_address flags addr offset)))
|
|
2509
|
+
|
|
2510
|
+
;; Element-reversed load as element-swapped direct load on z14.
|
|
2511
|
+
(rule (vec_load_elt_rev (and (vxrs_ext2_disabled) ty @ (multi_lane 64 2))
|
|
2512
|
+
flags addr offset)
|
|
2513
|
+
(vec_elt_rev ty (vec_load ty (lower_address flags addr offset))))
|
|
2514
|
+
(rule (vec_load_elt_rev (and (vxrs_ext2_disabled) ty @ (multi_lane 32 4))
|
|
2515
|
+
flags addr offset)
|
|
2516
|
+
(vec_elt_rev ty (vec_load ty (lower_address flags addr offset))))
|
|
2517
|
+
(rule (vec_load_elt_rev (and (vxrs_ext2_disabled) ty @ (multi_lane 16 8))
|
|
2518
|
+
flags addr offset)
|
|
2519
|
+
(vec_elt_rev ty (vec_load ty (lower_address flags addr offset))))
|
|
2520
|
+
|
|
2521
|
+
|
|
2522
|
+
;;;; Rules for `uload8` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
2523
|
+
|
|
2524
|
+
;; 16- or 32-bit target types.
|
|
2525
|
+
(rule (lower (has_type (gpr32_ty _ty) (uload8 flags addr offset)))
|
|
2526
|
+
(zext32_mem $I8 (lower_address flags addr offset)))
|
|
2527
|
+
|
|
2528
|
+
;; 64-bit target types.
|
|
2529
|
+
(rule 1 (lower (has_type (gpr64_ty _ty) (uload8 flags addr offset)))
|
|
2530
|
+
(zext64_mem $I8 (lower_address flags addr offset)))
|
|
2531
|
+
|
|
2532
|
+
|
|
2533
|
+
;;;; Rules for `sload8` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
2534
|
+
|
|
2535
|
+
;; 16- or 32-bit target types.
|
|
2536
|
+
(rule (lower (has_type (gpr32_ty _ty) (sload8 flags addr offset)))
|
|
2537
|
+
(sext32_mem $I8 (lower_address flags addr offset)))
|
|
2538
|
+
|
|
2539
|
+
;; 64-bit target types.
|
|
2540
|
+
(rule 1 (lower (has_type (gpr64_ty _ty) (sload8 flags addr offset)))
|
|
2541
|
+
(sext64_mem $I8 (lower_address flags addr offset)))
|
|
2542
|
+
|
|
2543
|
+
|
|
2544
|
+
;;;; Rules for `uload16` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
2545
|
+
|
|
2546
|
+
;; 32-bit target type, big-endian source value.
|
|
2547
|
+
(rule 3 (lower (has_type (gpr32_ty _ty)
|
|
2548
|
+
(uload16 flags @ (bigendian) addr offset)))
|
|
2549
|
+
(zext32_mem $I16 (lower_address flags addr offset)))
|
|
2550
|
+
|
|
2551
|
+
;; 32-bit target type, little-endian source value (via explicit extension).
|
|
2552
|
+
(rule 1 (lower (has_type (gpr32_ty _ty)
|
|
2553
|
+
(uload16 flags @ (littleendian) addr offset)))
|
|
2554
|
+
(let ((reg16 Reg (loadrev16 (lower_address flags addr offset))))
|
|
2555
|
+
(zext32_reg $I16 reg16)))
|
|
2556
|
+
|
|
2557
|
+
;; 64-bit target type, big-endian source value.
|
|
2558
|
+
(rule 4 (lower (has_type (gpr64_ty _ty)
|
|
2559
|
+
(uload16 flags @ (bigendian) addr offset)))
|
|
2560
|
+
(zext64_mem $I16 (lower_address flags addr offset)))
|
|
2561
|
+
|
|
2562
|
+
;; 64-bit target type, little-endian source value (via explicit extension).
|
|
2563
|
+
(rule 2 (lower (has_type (gpr64_ty _ty)
|
|
2564
|
+
(uload16 flags @ (littleendian) addr offset)))
|
|
2565
|
+
(let ((reg16 Reg (loadrev16 (lower_address flags addr offset))))
|
|
2566
|
+
(zext64_reg $I16 reg16)))
|
|
2567
|
+
|
|
2568
|
+
|
|
2569
|
+
;;;; Rules for `sload16` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
2570
|
+
|
|
2571
|
+
;; 32-bit target type, big-endian source value.
|
|
2572
|
+
(rule 2 (lower (has_type (gpr32_ty _ty)
|
|
2573
|
+
(sload16 flags @ (bigendian) addr offset)))
|
|
2574
|
+
(sext32_mem $I16 (lower_address flags addr offset)))
|
|
2575
|
+
|
|
2576
|
+
;; 32-bit target type, little-endian source value (via explicit extension).
|
|
2577
|
+
(rule 0 (lower (has_type (gpr32_ty _ty)
|
|
2578
|
+
(sload16 flags @ (littleendian) addr offset)))
|
|
2579
|
+
(let ((reg16 Reg (loadrev16 (lower_address flags addr offset))))
|
|
2580
|
+
(sext32_reg $I16 reg16)))
|
|
2581
|
+
|
|
2582
|
+
;; 64-bit target type, big-endian source value.
|
|
2583
|
+
(rule 3 (lower (has_type (gpr64_ty _ty)
|
|
2584
|
+
(sload16 flags @ (bigendian) addr offset)))
|
|
2585
|
+
(sext64_mem $I16 (lower_address flags addr offset)))
|
|
2586
|
+
|
|
2587
|
+
;; 64-bit target type, little-endian source value (via explicit extension).
|
|
2588
|
+
(rule 1 (lower (has_type (gpr64_ty _ty)
|
|
2589
|
+
(sload16 flags @ (littleendian) addr offset)))
|
|
2590
|
+
(let ((reg16 Reg (loadrev16 (lower_address flags addr offset))))
|
|
2591
|
+
(sext64_reg $I16 reg16)))
|
|
2592
|
+
|
|
2593
|
+
|
|
2594
|
+
;;;; Rules for `uload32` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
2595
|
+
|
|
2596
|
+
;; 64-bit target type, big-endian source value.
|
|
2597
|
+
(rule 1 (lower (has_type (gpr64_ty _ty)
|
|
2598
|
+
(uload32 flags @ (bigendian) addr offset)))
|
|
2599
|
+
(zext64_mem $I32 (lower_address flags addr offset)))
|
|
2600
|
+
|
|
2601
|
+
;; 64-bit target type, little-endian source value (via explicit extension).
|
|
2602
|
+
(rule (lower (has_type (gpr64_ty _ty)
|
|
2603
|
+
(uload32 flags @ (littleendian) addr offset)))
|
|
2604
|
+
(let ((reg32 Reg (loadrev32 (lower_address flags addr offset))))
|
|
2605
|
+
(zext64_reg $I32 reg32)))
|
|
2606
|
+
|
|
2607
|
+
|
|
2608
|
+
;;;; Rules for `sload32` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
2609
|
+
|
|
2610
|
+
;; 64-bit target type, big-endian source value.
|
|
2611
|
+
(rule 1 (lower (has_type (gpr64_ty _ty)
|
|
2612
|
+
(sload32 flags @ (bigendian) addr offset)))
|
|
2613
|
+
(sext64_mem $I32 (lower_address flags addr offset)))
|
|
2614
|
+
|
|
2615
|
+
;; 64-bit target type, little-endian source value (via explicit extension).
|
|
2616
|
+
(rule (lower (has_type (gpr64_ty _ty)
|
|
2617
|
+
(sload32 flags @ (littleendian) addr offset)))
|
|
2618
|
+
(let ((reg32 Reg (loadrev32 (lower_address flags addr offset))))
|
|
2619
|
+
(sext64_reg $I32 reg32)))
|
|
2620
|
+
|
|
2621
|
+
|
|
2622
|
+
;;;; Rules for `uloadNxM` and `sloadNxM` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
2623
|
+
|
|
2624
|
+
;; Unsigned 8->16 bit extension.
|
|
2625
|
+
(rule (lower (has_type $I16X8 (uload8x8 flags addr offset)))
|
|
2626
|
+
(vec_unpacku_high $I8X16 (load_v64 $I8X16 flags addr offset)))
|
|
2627
|
+
|
|
2628
|
+
;; Signed 8->16 bit extension.
|
|
2629
|
+
(rule (lower (has_type $I16X8 (sload8x8 flags addr offset)))
|
|
2630
|
+
(vec_unpacks_high $I8X16 (load_v64 $I8X16 flags addr offset)))
|
|
2631
|
+
|
|
2632
|
+
;; Unsigned 16->32 bit extension.
|
|
2633
|
+
(rule (lower (has_type $I32X4 (uload16x4 flags addr offset)))
|
|
2634
|
+
(vec_unpacku_high $I16X8 (load_v64 $I16X8 flags addr offset)))
|
|
2635
|
+
|
|
2636
|
+
;; Signed 16->32 bit extension.
|
|
2637
|
+
(rule (lower (has_type $I32X4 (sload16x4 flags addr offset)))
|
|
2638
|
+
(vec_unpacks_high $I16X8 (load_v64 $I16X8 flags addr offset)))
|
|
2639
|
+
|
|
2640
|
+
;; Unsigned 32->64 bit extension.
|
|
2641
|
+
(rule (lower (has_type $I64X2 (uload32x2 flags addr offset)))
|
|
2642
|
+
(vec_unpacku_high $I32X4 (load_v64 $I32X4 flags addr offset)))
|
|
2643
|
+
|
|
2644
|
+
;; Signed 32->64 bit extension.
|
|
2645
|
+
(rule (lower (has_type $I64X2 (sload32x2 flags addr offset)))
|
|
2646
|
+
(vec_unpacks_high $I32X4 (load_v64 $I32X4 flags addr offset)))
|
|
2647
|
+
|
|
2648
|
+
|
|
2649
|
+
;; Helper to load a 64-bit half-size vector from memory.
|
|
2650
|
+
(decl load_v64 (Type MemFlags Value Offset32) Reg)
|
|
2651
|
+
|
|
2652
|
+
;; Any big-endian source value, BE lane order.
|
|
2653
|
+
(rule -1 (load_v64 _ flags @ (bigendian) addr offset)
|
|
2654
|
+
(if-let (LaneOrder.BigEndian) (lane_order))
|
|
2655
|
+
(vec_load_lane_undef $I64X2 (lower_address flags addr offset) 0))
|
|
2656
|
+
|
|
2657
|
+
;; Any little-endian source value, LE lane order.
|
|
2658
|
+
(rule -2 (load_v64 _ flags @ (littleendian) addr offset)
|
|
2659
|
+
(if-let (LaneOrder.LittleEndian) (lane_order))
|
|
2660
|
+
(vec_load_lane_little_undef $I64X2 (lower_address flags addr offset) 0))
|
|
2661
|
+
|
|
2662
|
+
;; Big-endian or little-endian 8x8-bit source value, BE lane order.
|
|
2663
|
+
(rule (load_v64 (multi_lane 8 16) flags addr offset)
|
|
2664
|
+
(if-let (LaneOrder.BigEndian) (lane_order))
|
|
2665
|
+
(vec_load_lane_undef $I64X2 (lower_address flags addr offset) 0))
|
|
2666
|
+
|
|
2667
|
+
;; Big-endian or little-endian 8x8-bit source value, LE lane order.
|
|
2668
|
+
(rule 1 (load_v64 (multi_lane 8 16) flags addr offset)
|
|
2669
|
+
(if-let (LaneOrder.LittleEndian) (lane_order))
|
|
2670
|
+
(vec_load_lane_little_undef $I64X2 (lower_address flags addr offset) 0))
|
|
2671
|
+
|
|
2672
|
+
;; Little-endian 4x16-bit source value, BE lane order.
|
|
2673
|
+
(rule (load_v64 (multi_lane 16 8) flags @ (littleendian) addr offset)
|
|
2674
|
+
(if-let (LaneOrder.BigEndian) (lane_order))
|
|
2675
|
+
(vec_rot_imm $I16X8
|
|
2676
|
+
(vec_load_lane_undef $I64X2 (lower_address flags addr offset) 0) 8))
|
|
2677
|
+
|
|
2678
|
+
;; Big-endian 4x16-bit source value, LE lane order.
|
|
2679
|
+
(rule 1 (load_v64 (multi_lane 16 8) flags @ (bigendian) addr offset)
|
|
2680
|
+
(if-let (LaneOrder.LittleEndian) (lane_order))
|
|
2681
|
+
(vec_rot_imm $I16X8
|
|
2682
|
+
(vec_load_lane_little_undef $I64X2 (lower_address flags addr offset) 0) 8))
|
|
2683
|
+
|
|
2684
|
+
;; Little-endian 2x32-bit source value, BE lane order.
|
|
2685
|
+
(rule (load_v64 (multi_lane 32 4) flags @ (littleendian) addr offset)
|
|
2686
|
+
(if-let (LaneOrder.BigEndian) (lane_order))
|
|
2687
|
+
(vec_rot_imm $I64X2
|
|
2688
|
+
(vec_load_lane_little_undef $I64X2 (lower_address flags addr offset) 0) 32))
|
|
2689
|
+
|
|
2690
|
+
;; Big-endian 2x32-bit source value, LE lane order.
|
|
2691
|
+
(rule 1 (load_v64 (multi_lane 32 4) flags @ (bigendian) addr offset)
|
|
2692
|
+
(if-let (LaneOrder.LittleEndian) (lane_order))
|
|
2693
|
+
(vec_rot_imm $I64X2
|
|
2694
|
+
(vec_load_lane_undef $I64X2 (lower_address flags addr offset) 0) 32))
|
|
2695
|
+
|
|
2696
|
+
|
|
2697
|
+
;;;; Rules for `store` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
2698
|
+
|
|
2699
|
+
;; The actual store logic for integer types is identical for the `store`,
|
|
2700
|
+
;; `istoreNN`, and `atomic_store` instructions, so we share common helpers.
|
|
2701
|
+
|
|
2702
|
+
;; Store 8-bit integer type, main lowering entry point.
|
|
2703
|
+
(rule (lower (store flags val @ (value_type $I8) addr offset))
|
|
2704
|
+
(side_effect (istore8_impl flags val addr offset)))
|
|
2705
|
+
|
|
2706
|
+
;; Store 16-bit integer type, main lowering entry point.
|
|
2707
|
+
(rule (lower (store flags val @ (value_type $I16) addr offset))
|
|
2708
|
+
(side_effect (istore16_impl flags val addr offset)))
|
|
2709
|
+
|
|
2710
|
+
;; Store 32-bit integer type, main lowering entry point.
|
|
2711
|
+
(rule (lower (store flags val @ (value_type $I32) addr offset))
|
|
2712
|
+
(side_effect (istore32_impl flags val addr offset)))
|
|
2713
|
+
|
|
2714
|
+
;; Store 64-bit integer type, main lowering entry point.
|
|
2715
|
+
(rule (lower (store flags val @ (value_type $I64) addr offset))
|
|
2716
|
+
(side_effect (istore64_impl flags val addr offset)))
|
|
2717
|
+
|
|
2718
|
+
;; Store 16-bit big-endian floating-point type (as vector lane).
|
|
2719
|
+
(rule -1 (lower (store flags @ (bigendian)
|
|
2720
|
+
val @ (value_type $F16) addr offset))
|
|
2721
|
+
(side_effect (vec_store_lane $F16X8 val
|
|
2722
|
+
(lower_address flags addr offset) 0)))
|
|
2723
|
+
|
|
2724
|
+
;; Store 16-bit little-endian floating-point type (as vector lane).
|
|
2725
|
+
(rule (lower (store flags @ (littleendian)
|
|
2726
|
+
val @ (value_type $F16) addr offset))
|
|
2727
|
+
(side_effect (vec_store_lane_little $F16X8 val
|
|
2728
|
+
(lower_address flags addr offset) 0)))
|
|
2729
|
+
|
|
2730
|
+
;; Store 32-bit big-endian floating-point type (as vector lane).
|
|
2731
|
+
(rule -1 (lower (store flags @ (bigendian)
|
|
2732
|
+
val @ (value_type $F32) addr offset))
|
|
2733
|
+
(side_effect (vec_store_lane $F32X4 val
|
|
2734
|
+
(lower_address flags addr offset) 0)))
|
|
2735
|
+
|
|
2736
|
+
;; Store 32-bit little-endian floating-point type (as vector lane).
|
|
2737
|
+
(rule (lower (store flags @ (littleendian)
|
|
2738
|
+
val @ (value_type $F32) addr offset))
|
|
2739
|
+
(side_effect (vec_store_lane_little $F32X4 val
|
|
2740
|
+
(lower_address flags addr offset) 0)))
|
|
2741
|
+
|
|
2742
|
+
;; Store 64-bit big-endian floating-point type (as vector lane).
|
|
2743
|
+
(rule -1 (lower (store flags @ (bigendian)
|
|
2744
|
+
val @ (value_type $F64) addr offset))
|
|
2745
|
+
(side_effect (vec_store_lane $F64X2 val
|
|
2746
|
+
(lower_address flags addr offset) 0)))
|
|
2747
|
+
|
|
2748
|
+
;; Store 64-bit little-endian floating-point type (as vector lane).
|
|
2749
|
+
(rule (lower (store flags @ (littleendian)
|
|
2750
|
+
val @ (value_type $F64) addr offset))
|
|
2751
|
+
(side_effect (vec_store_lane_little $F64X2 val
|
|
2752
|
+
(lower_address flags addr offset) 0)))
|
|
2753
|
+
|
|
2754
|
+
;; Store 128-bit big-endian vector type, BE lane order - direct store.
|
|
2755
|
+
(rule 4 (lower (store flags @ (bigendian)
|
|
2756
|
+
val @ (value_type (vr128_ty ty)) addr offset))
|
|
2757
|
+
(if-let (LaneOrder.BigEndian) (lane_order))
|
|
2758
|
+
(side_effect (vec_store val (lower_address flags addr offset))))
|
|
2759
|
+
|
|
2760
|
+
;; Store 128-bit little-endian vector type, BE lane order - byte-reversed store.
|
|
2761
|
+
(rule 3 (lower (store flags @ (littleendian)
|
|
2762
|
+
val @ (value_type (vr128_ty ty)) addr offset))
|
|
2763
|
+
(if-let (LaneOrder.BigEndian) (lane_order))
|
|
2764
|
+
(side_effect (vec_store_byte_rev ty val flags addr offset)))
|
|
2765
|
+
|
|
2766
|
+
;; Store 128-bit big-endian vector type, LE lane order - element-reversed store.
|
|
2767
|
+
(rule 2 (lower (store flags @ (bigendian)
|
|
2768
|
+
val @ (value_type (vr128_ty ty)) addr offset))
|
|
2769
|
+
(if-let (LaneOrder.LittleEndian) (lane_order))
|
|
2770
|
+
(side_effect (vec_store_elt_rev ty val flags addr offset)))
|
|
2771
|
+
|
|
2772
|
+
;; Store 128-bit little-endian vector type, LE lane order - fully-reversed store.
|
|
2773
|
+
(rule 1 (lower (store flags @ (littleendian)
|
|
2774
|
+
val @ (value_type (vr128_ty ty)) addr offset))
|
|
2775
|
+
(if-let (LaneOrder.LittleEndian) (lane_order))
|
|
2776
|
+
(side_effect (vec_store_full_rev ty val flags addr offset)))
|
|
2777
|
+
|
|
2778
|
+
|
|
2779
|
+
;; Helper to perform a 128-bit full-vector byte-reversed store.
|
|
2780
|
+
(decl vec_store_full_rev (Type Reg MemFlags Value Offset32) SideEffectNoResult)
|
|
2781
|
+
|
|
2782
|
+
;; Full-vector byte-reversed store via single instruction on z15.
|
|
2783
|
+
(rule 1 (vec_store_full_rev (vxrs_ext2_enabled) val flags addr offset)
|
|
2784
|
+
(vec_storerev val (lower_address flags addr offset)))
|
|
2785
|
+
|
|
2786
|
+
;; Full-vector byte-reversed store via GPRs on z14.
|
|
2787
|
+
(rule (vec_store_full_rev (vxrs_ext2_disabled) val flags addr offset)
|
|
2788
|
+
(let ((lo_addr MemArg (lower_address_bias flags addr offset 0))
|
|
2789
|
+
(hi_addr MemArg (lower_address_bias flags addr offset 8))
|
|
2790
|
+
(lo_val Reg (vec_extract_lane $I64X2 val 1 (zero_reg)))
|
|
2791
|
+
(hi_val Reg (vec_extract_lane $I64X2 val 0 (zero_reg))))
|
|
2792
|
+
(side_effect_concat (storerev64 lo_val lo_addr)
|
|
2793
|
+
(storerev64 hi_val hi_addr))))
|
|
2794
|
+
|
|
2795
|
+
|
|
2796
|
+
;; Helper to perform an element-wise byte-reversed store.
|
|
2797
|
+
(decl vec_store_byte_rev (Type Reg MemFlags Value Offset32) SideEffectNoResult)
|
|
2798
|
+
|
|
2799
|
+
;; Element-wise byte-reversed 1x128-bit store is a full byte-reversed store.
|
|
2800
|
+
(rule -1 (vec_store_byte_rev $I128 val flags addr offset)
|
|
2801
|
+
(vec_store_full_rev $I128 val flags addr offset))
|
|
2802
|
+
|
|
2803
|
+
;; Same for `f128`.
|
|
2804
|
+
(rule -1 (vec_store_byte_rev $F128 val flags addr offset)
|
|
2805
|
+
(vec_store_full_rev $F128 val flags addr offset))
|
|
2806
|
+
|
|
2807
|
+
;; Element-wise byte-reversed 16x8-bit store is a direct store.
|
|
2808
|
+
(rule (vec_store_byte_rev (multi_lane 8 16) val flags addr offset)
|
|
2809
|
+
(vec_store val (lower_address flags addr offset)))
|
|
2810
|
+
|
|
2811
|
+
;; Element-wise byte-reversed store via single instruction on z15.
|
|
2812
|
+
(rule 1 (vec_store_byte_rev (and (vxrs_ext2_enabled) ty @ (multi_lane 64 2))
|
|
2813
|
+
val flags addr offset)
|
|
2814
|
+
(vec_store_byte64rev val (lower_address flags addr offset)))
|
|
2815
|
+
(rule 1 (vec_store_byte_rev (and (vxrs_ext2_enabled) ty @ (multi_lane 32 4))
|
|
2816
|
+
val flags addr offset)
|
|
2817
|
+
(vec_store_byte32rev val (lower_address flags addr offset)))
|
|
2818
|
+
(rule 1 (vec_store_byte_rev (and (vxrs_ext2_enabled) ty @ (multi_lane 16 8))
|
|
2819
|
+
val flags addr offset)
|
|
2820
|
+
(vec_store_byte16rev val (lower_address flags addr offset)))
|
|
2821
|
+
|
|
2822
|
+
;; Element-wise byte-reversed load as element-swapped byte-reversed store on z14.
|
|
2823
|
+
(rule (vec_store_byte_rev (and (vxrs_ext2_disabled) ty @ (multi_lane 64 2))
|
|
2824
|
+
val flags addr offset)
|
|
2825
|
+
(vec_store_full_rev ty (vec_elt_rev ty val) flags addr offset))
|
|
2826
|
+
(rule (vec_store_byte_rev (and (vxrs_ext2_disabled) ty @ (multi_lane 32 4))
|
|
2827
|
+
val flags addr offset)
|
|
2828
|
+
(vec_store_full_rev ty (vec_elt_rev ty val) flags addr offset))
|
|
2829
|
+
(rule (vec_store_byte_rev (and (vxrs_ext2_disabled) ty @ (multi_lane 16 8))
|
|
2830
|
+
val flags addr offset)
|
|
2831
|
+
(vec_store_full_rev ty (vec_elt_rev ty val) flags addr offset))
|
|
2832
|
+
|
|
2833
|
+
|
|
2834
|
+
;; Helper to perform an element-reversed store.
|
|
2835
|
+
(decl vec_store_elt_rev (Type Reg MemFlags Value Offset32) SideEffectNoResult)
|
|
2836
|
+
|
|
2837
|
+
;; Element-reversed 1x128-bit store is a direct store.
|
|
2838
|
+
(rule -1 (vec_store_elt_rev $I128 val flags addr offset)
|
|
2839
|
+
(vec_store val (lower_address flags addr offset)))
|
|
2840
|
+
|
|
2841
|
+
;; Same for `f128`.
|
|
2842
|
+
(rule -1 (vec_store_elt_rev $F128 val flags addr offset)
|
|
2843
|
+
(vec_store val (lower_address flags addr offset)))
|
|
2844
|
+
|
|
2845
|
+
;; Element-reversed 16x8-bit store is a full byte-reversed store.
|
|
2846
|
+
(rule (vec_store_elt_rev ty @ (multi_lane 8 16) val flags addr offset)
|
|
2847
|
+
(vec_store_full_rev ty val flags addr offset))
|
|
2848
|
+
|
|
2849
|
+
;; Element-reversed store via single instruction on z15.
|
|
2850
|
+
(rule 1 (vec_store_elt_rev (and (vxrs_ext2_enabled) ty @ (multi_lane 64 2))
|
|
2851
|
+
val flags addr offset)
|
|
2852
|
+
(vec_store_elt64rev val (lower_address flags addr offset)))
|
|
2853
|
+
(rule 1 (vec_store_elt_rev (and (vxrs_ext2_enabled) ty @ (multi_lane 32 4))
|
|
2854
|
+
val flags addr offset)
|
|
2855
|
+
(vec_store_elt32rev val (lower_address flags addr offset)))
|
|
2856
|
+
(rule 1 (vec_store_elt_rev (and (vxrs_ext2_enabled) ty @ (multi_lane 16 8))
|
|
2857
|
+
val flags addr offset)
|
|
2858
|
+
(vec_store_elt16rev val (lower_address flags addr offset)))
|
|
2859
|
+
|
|
2860
|
+
;; Element-reversed store as element-swapped direct store on z14.
|
|
2861
|
+
(rule (vec_store_elt_rev (and (vxrs_ext2_disabled) ty @ (multi_lane 64 2))
|
|
2862
|
+
val flags addr offset)
|
|
2863
|
+
(vec_store (vec_elt_rev ty val) (lower_address flags addr offset)))
|
|
2864
|
+
(rule (vec_store_elt_rev (and (vxrs_ext2_disabled) ty @ (multi_lane 32 4))
|
|
2865
|
+
val flags addr offset)
|
|
2866
|
+
(vec_store (vec_elt_rev ty val) (lower_address flags addr offset)))
|
|
2867
|
+
(rule (vec_store_elt_rev (and (vxrs_ext2_disabled) ty @ (multi_lane 16 8))
|
|
2868
|
+
val flags addr offset)
|
|
2869
|
+
(vec_store (vec_elt_rev ty val) (lower_address flags addr offset)))
|
|
2870
|
+
|
|
2871
|
+
|
|
2872
|
+
;;;; Rules for 8-bit integer stores ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
2873
|
+
|
|
2874
|
+
;; Main `istore8` lowering entry point, dispatching to the helper.
|
|
2875
|
+
(rule (lower (istore8 flags val addr offset))
|
|
2876
|
+
(side_effect (istore8_impl flags val addr offset)))
|
|
2877
|
+
|
|
2878
|
+
;; Helper to store 8-bit integer types.
|
|
2879
|
+
(decl istore8_impl (MemFlags Value Value Offset32) SideEffectNoResult)
|
|
2880
|
+
|
|
2881
|
+
;; Store 8-bit integer types, register input.
|
|
2882
|
+
(rule (istore8_impl flags val addr offset)
|
|
2883
|
+
(store8 (put_in_reg val) (lower_address flags addr offset)))
|
|
2884
|
+
|
|
2885
|
+
;; Store 8-bit integer types, immediate input.
|
|
2886
|
+
(rule 1 (istore8_impl flags (u8_from_value imm) addr offset)
|
|
2887
|
+
(store8_imm imm (lower_address flags addr offset)))
|
|
2888
|
+
|
|
2889
|
+
|
|
2890
|
+
;;;; Rules for 16-bit integer stores ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
2891
|
+
|
|
2892
|
+
;; Main `istore16` lowering entry point, dispatching to the helper.
|
|
2893
|
+
(rule (lower (istore16 flags val addr offset))
|
|
2894
|
+
(side_effect (istore16_impl flags val addr offset)))
|
|
2895
|
+
|
|
2896
|
+
;; Helper to store 16-bit integer types.
|
|
2897
|
+
(decl istore16_impl (MemFlags Value Value Offset32) SideEffectNoResult)
|
|
2898
|
+
|
|
2899
|
+
;; Store 16-bit big-endian integer types, register input.
|
|
2900
|
+
(rule 2 (istore16_impl flags @ (bigendian) val addr offset)
|
|
2901
|
+
(store16 (put_in_reg val) (lower_address flags addr offset)))
|
|
2902
|
+
|
|
2903
|
+
;; Store 16-bit little-endian integer types, register input.
|
|
2904
|
+
(rule 0 (istore16_impl flags @ (littleendian) val addr offset)
|
|
2905
|
+
(storerev16 (put_in_reg val) (lower_address flags addr offset)))
|
|
2906
|
+
|
|
2907
|
+
;; Store 16-bit big-endian integer types, immediate input.
|
|
2908
|
+
(rule 3 (istore16_impl flags @ (bigendian) (i16_from_value imm) addr offset)
|
|
2909
|
+
(store16_imm imm (lower_address flags addr offset)))
|
|
2910
|
+
|
|
2911
|
+
;; Store 16-bit little-endian integer types, immediate input.
|
|
2912
|
+
(rule 1 (istore16_impl flags @ (littleendian) (i16_from_swapped_value imm) addr offset)
|
|
2913
|
+
(store16_imm imm (lower_address flags addr offset)))
|
|
2914
|
+
|
|
2915
|
+
|
|
2916
|
+
;;;; Rules for 32-bit integer stores ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
2917
|
+
|
|
2918
|
+
;; Main `istore32` lowering entry point, dispatching to the helper.
|
|
2919
|
+
(rule (lower (istore32 flags val addr offset))
|
|
2920
|
+
(side_effect (istore32_impl flags val addr offset)))
|
|
2921
|
+
|
|
2922
|
+
;; Helper to store 32-bit integer types.
|
|
2923
|
+
(decl istore32_impl (MemFlags Value Value Offset32) SideEffectNoResult)
|
|
2924
|
+
|
|
2925
|
+
;; Store 32-bit big-endian integer types, register input.
|
|
2926
|
+
(rule 1 (istore32_impl flags @ (bigendian) val addr offset)
|
|
2927
|
+
(store32 (put_in_reg val) (lower_address flags addr offset)))
|
|
2928
|
+
|
|
2929
|
+
;; Store 32-bit big-endian integer types, immediate input.
|
|
2930
|
+
(rule 2 (istore32_impl flags @ (bigendian) (i16_from_value imm) addr offset)
|
|
2931
|
+
(store32_simm16 imm (lower_address flags addr offset)))
|
|
2932
|
+
|
|
2933
|
+
;; Store 32-bit little-endian integer types.
|
|
2934
|
+
(rule 0 (istore32_impl flags @ (littleendian) val addr offset)
|
|
2935
|
+
(storerev32 (put_in_reg val) (lower_address flags addr offset)))
|
|
2936
|
+
|
|
2937
|
+
|
|
2938
|
+
;;;; Rules for 64-bit integer stores ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
2939
|
+
|
|
2940
|
+
;; Helper to store 64-bit integer types.
|
|
2941
|
+
(decl istore64_impl (MemFlags Value Value Offset32) SideEffectNoResult)
|
|
2942
|
+
|
|
2943
|
+
;; Store 64-bit big-endian integer types, register input.
|
|
2944
|
+
(rule 1 (istore64_impl flags @ (bigendian) val addr offset)
|
|
2945
|
+
(store64 (put_in_reg val) (lower_address flags addr offset)))
|
|
2946
|
+
|
|
2947
|
+
;; Store 64-bit big-endian integer types, immediate input.
|
|
2948
|
+
(rule 2 (istore64_impl flags @ (bigendian) (i16_from_value imm) addr offset)
|
|
2949
|
+
(store64_simm16 imm (lower_address flags addr offset)))
|
|
2950
|
+
|
|
2951
|
+
;; Store 64-bit little-endian integer types.
|
|
2952
|
+
(rule 0 (istore64_impl flags @ (littleendian) val addr offset)
|
|
2953
|
+
(storerev64 (put_in_reg val) (lower_address flags addr offset)))
|
|
2954
|
+
|
|
2955
|
+
|
|
2956
|
+
;;;; Rules for `atomic_rmw` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
2957
|
+
|
|
2958
|
+
;; Atomic operations that do not require a compare-and-swap loop.
|
|
2959
|
+
|
|
2960
|
+
;; Atomic AND for 32/64-bit big-endian types, using a single instruction.
|
|
2961
|
+
(rule 1 (lower (has_type (ty_32_or_64 ty)
|
|
2962
|
+
(atomic_rmw flags @ (bigendian) (AtomicRmwOp.And) addr src)))
|
|
2963
|
+
(atomic_rmw_and ty (put_in_reg src)
|
|
2964
|
+
(lower_address flags addr (zero_offset))))
|
|
2965
|
+
|
|
2966
|
+
;; Atomic AND for 32/64-bit big-endian types, using byte-swapped input/output.
|
|
2967
|
+
(rule (lower (has_type (ty_32_or_64 ty)
|
|
2968
|
+
(atomic_rmw flags @ (littleendian) (AtomicRmwOp.And) addr src)))
|
|
2969
|
+
(bswap_reg ty (atomic_rmw_and ty (bswap_reg ty (put_in_reg src))
|
|
2970
|
+
(lower_address flags addr (zero_offset)))))
|
|
2971
|
+
|
|
2972
|
+
;; Atomic OR for 32/64-bit big-endian types, using a single instruction.
|
|
2973
|
+
(rule 1 (lower (has_type (ty_32_or_64 ty)
|
|
2974
|
+
(atomic_rmw flags @ (bigendian) (AtomicRmwOp.Or) addr src)))
|
|
2975
|
+
(atomic_rmw_or ty (put_in_reg src)
|
|
2976
|
+
(lower_address flags addr (zero_offset))))
|
|
2977
|
+
|
|
2978
|
+
;; Atomic OR for 32/64-bit little-endian types, using byte-swapped input/output.
|
|
2979
|
+
(rule (lower (has_type (ty_32_or_64 ty)
|
|
2980
|
+
(atomic_rmw flags @ (littleendian) (AtomicRmwOp.Or) addr src)))
|
|
2981
|
+
(bswap_reg ty (atomic_rmw_or ty (bswap_reg ty (put_in_reg src))
|
|
2982
|
+
(lower_address flags addr (zero_offset)))))
|
|
2983
|
+
|
|
2984
|
+
;; Atomic XOR for 32/64-bit big-endian types, using a single instruction.
|
|
2985
|
+
(rule 1 (lower (has_type (ty_32_or_64 ty)
|
|
2986
|
+
(atomic_rmw flags @ (bigendian) (AtomicRmwOp.Xor) addr src)))
|
|
2987
|
+
(atomic_rmw_xor ty (put_in_reg src)
|
|
2988
|
+
(lower_address flags addr (zero_offset))))
|
|
2989
|
+
|
|
2990
|
+
;; Atomic XOR for 32/64-bit little-endian types, using byte-swapped input/output.
|
|
2991
|
+
(rule (lower (has_type (ty_32_or_64 ty)
|
|
2992
|
+
(atomic_rmw flags @ (littleendian) (AtomicRmwOp.Xor) addr src)))
|
|
2993
|
+
(bswap_reg ty (atomic_rmw_xor ty (bswap_reg ty (put_in_reg src))
|
|
2994
|
+
(lower_address flags addr (zero_offset)))))
|
|
2995
|
+
|
|
2996
|
+
;; Atomic ADD for 32/64-bit big-endian types, using a single instruction.
|
|
2997
|
+
(rule (lower (has_type (ty_32_or_64 ty)
|
|
2998
|
+
(atomic_rmw flags @ (bigendian) (AtomicRmwOp.Add) addr src)))
|
|
2999
|
+
(atomic_rmw_add ty (put_in_reg src)
|
|
3000
|
+
(lower_address flags addr (zero_offset))))
|
|
3001
|
+
|
|
3002
|
+
;; Atomic SUB for 32/64-bit big-endian types, using atomic ADD with negated input.
|
|
3003
|
+
(rule (lower (has_type (ty_32_or_64 ty)
|
|
3004
|
+
(atomic_rmw flags @ (bigendian) (AtomicRmwOp.Sub) addr src)))
|
|
3005
|
+
(atomic_rmw_add ty (neg_reg ty (put_in_reg src))
|
|
3006
|
+
(lower_address flags addr (zero_offset))))
|
|
3007
|
+
|
|
3008
|
+
|
|
3009
|
+
;; Atomic operations that require a compare-and-swap loop.
|
|
3010
|
+
|
|
3011
|
+
;; Operations for 32/64-bit types can use a fullword compare-and-swap loop.
|
|
3012
|
+
(rule -1 (lower (has_type (ty_32_or_64 ty) (atomic_rmw flags op addr src)))
|
|
3013
|
+
(let ((src_reg Reg (put_in_reg src))
|
|
3014
|
+
(addr_reg Reg (put_in_reg addr))
|
|
3015
|
+
;; Create body of compare-and-swap loop.
|
|
3016
|
+
(ib VecMInstBuilder (inst_builder_new))
|
|
3017
|
+
(val0 Reg (writable_reg_to_reg (casloop_val_reg)))
|
|
3018
|
+
(val1 Reg (atomic_rmw_body ib ty flags op
|
|
3019
|
+
(casloop_tmp_reg) val0 src_reg)))
|
|
3020
|
+
;; Emit compare-and-swap loop and extract final result.
|
|
3021
|
+
(casloop ib ty flags addr_reg val1)))
|
|
3022
|
+
|
|
3023
|
+
;; Operations for 8/16-bit types must operate on the surrounding aligned word.
|
|
3024
|
+
(rule -2 (lower (has_type (ty_8_or_16 ty) (atomic_rmw flags op addr src)))
|
|
3025
|
+
(let ((src_reg Reg (put_in_reg src))
|
|
3026
|
+
(addr_reg Reg (put_in_reg addr))
|
|
3027
|
+
;; Prepare access to surrounding aligned word.
|
|
3028
|
+
(bitshift Reg (casloop_bitshift addr_reg))
|
|
3029
|
+
(aligned_addr Reg (casloop_aligned_addr addr_reg))
|
|
3030
|
+
;; Create body of compare-and-swap loop.
|
|
3031
|
+
(ib VecMInstBuilder (inst_builder_new))
|
|
3032
|
+
(val0 Reg (writable_reg_to_reg (casloop_val_reg)))
|
|
3033
|
+
(val1 Reg (casloop_rotate_in ib ty flags bitshift val0))
|
|
3034
|
+
(val2 Reg (atomic_rmw_body ib ty flags op
|
|
3035
|
+
(casloop_tmp_reg) val1 src_reg))
|
|
3036
|
+
(val3 Reg (casloop_rotate_out ib ty flags bitshift val2)))
|
|
3037
|
+
;; Emit compare-and-swap loop and extract final result.
|
|
3038
|
+
(casloop_subword ib ty flags aligned_addr bitshift val3)))
|
|
3039
|
+
|
|
3040
|
+
;; Loop bodies for atomic read-modify-write operations.
|
|
3041
|
+
(decl atomic_rmw_body (VecMInstBuilder Type MemFlags AtomicRmwOp
|
|
3042
|
+
WritableReg Reg Reg) Reg)
|
|
3043
|
+
|
|
3044
|
+
;; Loop bodies for 32-/64-bit atomic XCHG operations.
|
|
3045
|
+
;; Simply use the source (possibly byte-swapped) as new target value.
|
|
3046
|
+
(rule 2 (atomic_rmw_body ib (ty_32_or_64 ty) (bigendian)
|
|
3047
|
+
(AtomicRmwOp.Xchg) tmp val src)
|
|
3048
|
+
src)
|
|
3049
|
+
(rule 1 (atomic_rmw_body ib (ty_32_or_64 ty) (littleendian)
|
|
3050
|
+
(AtomicRmwOp.Xchg) tmp val src)
|
|
3051
|
+
(bswap_reg ty src))
|
|
3052
|
+
|
|
3053
|
+
;; Loop bodies for 32-/64-bit atomic NAND operations.
|
|
3054
|
+
;; On z15 this can use the NN(G)RK instruction. On z14, perform an And
|
|
3055
|
+
;; operation and invert the result. In the little-endian case, we can
|
|
3056
|
+
;; simply byte-swap the source operand.
|
|
3057
|
+
(rule 4 (atomic_rmw_body ib (and (mie3_enabled) (ty_32_or_64 ty)) (bigendian)
|
|
3058
|
+
(AtomicRmwOp.Nand) tmp val src)
|
|
3059
|
+
(push_alu_reg ib (aluop_not_and ty) tmp val src))
|
|
3060
|
+
(rule 3 (atomic_rmw_body ib (and (mie3_enabled) (ty_32_or_64 ty)) (littleendian)
|
|
3061
|
+
(AtomicRmwOp.Nand) tmp val src)
|
|
3062
|
+
(push_alu_reg ib (aluop_not_and ty) tmp val (bswap_reg ty src)))
|
|
3063
|
+
(rule 2 (atomic_rmw_body ib (and (mie3_disabled) (ty_32_or_64 ty)) (bigendian)
|
|
3064
|
+
(AtomicRmwOp.Nand) tmp val src)
|
|
3065
|
+
(push_not_reg ib ty tmp
|
|
3066
|
+
(push_alu_reg ib (aluop_and ty) tmp val src)))
|
|
3067
|
+
(rule 1 (atomic_rmw_body ib (and (mie3_disabled) (ty_32_or_64 ty)) (littleendian)
|
|
3068
|
+
(AtomicRmwOp.Nand) tmp val src)
|
|
3069
|
+
(push_not_reg ib ty tmp
|
|
3070
|
+
(push_alu_reg ib (aluop_and ty) tmp val (bswap_reg ty src))))
|
|
3071
|
+
|
|
3072
|
+
;; Loop bodies for 8-/16-bit atomic bit operations.
|
|
3073
|
+
;; These use the "rotate-then-<op>-selected bits" family of instructions.
|
|
3074
|
+
;; For the Nand operation, we again perform And and invert the result.
|
|
3075
|
+
(rule (atomic_rmw_body ib (ty_8_or_16 ty) flags (AtomicRmwOp.Xchg) tmp val src)
|
|
3076
|
+
(atomic_rmw_body_rxsbg ib ty flags (RxSBGOp.Insert) tmp val src))
|
|
3077
|
+
(rule (atomic_rmw_body ib (ty_8_or_16 ty) flags (AtomicRmwOp.And) tmp val src)
|
|
3078
|
+
(atomic_rmw_body_rxsbg ib ty flags (RxSBGOp.And) tmp val src))
|
|
3079
|
+
(rule (atomic_rmw_body ib (ty_8_or_16 ty) flags (AtomicRmwOp.Or) tmp val src)
|
|
3080
|
+
(atomic_rmw_body_rxsbg ib ty flags (RxSBGOp.Or) tmp val src))
|
|
3081
|
+
(rule (atomic_rmw_body ib (ty_8_or_16 ty) flags (AtomicRmwOp.Xor) tmp val src)
|
|
3082
|
+
(atomic_rmw_body_rxsbg ib ty flags (RxSBGOp.Xor) tmp val src))
|
|
3083
|
+
(rule (atomic_rmw_body ib (ty_8_or_16 ty) flags (AtomicRmwOp.Nand) tmp val src)
|
|
3084
|
+
(atomic_rmw_body_invert ib ty flags tmp
|
|
3085
|
+
(atomic_rmw_body_rxsbg ib ty flags (RxSBGOp.And) tmp val src)))
|
|
3086
|
+
|
|
3087
|
+
;; RxSBG subword operation.
|
|
3088
|
+
(decl atomic_rmw_body_rxsbg (VecMInstBuilder Type MemFlags RxSBGOp
|
|
3089
|
+
WritableReg Reg Reg) Reg)
|
|
3090
|
+
;; 8-bit case: use the low byte of "src" and the high byte of "val".
|
|
3091
|
+
(rule (atomic_rmw_body_rxsbg ib $I8 _ op tmp val src)
|
|
3092
|
+
(push_rxsbg ib op tmp val src 32 40 24))
|
|
3093
|
+
;; 16-bit big-endian case: use the low two bytes of "src" and the
|
|
3094
|
+
;; high two bytes of "val".
|
|
3095
|
+
(rule 1 (atomic_rmw_body_rxsbg ib $I16 (bigendian) op tmp val src)
|
|
3096
|
+
(push_rxsbg ib op tmp val src 32 48 16))
|
|
3097
|
+
;; 16-bit little-endian case: use the low two bytes of "src", byte-swapped
|
|
3098
|
+
;; so they end up in the high two bytes, and the low two bytes of "val".
|
|
3099
|
+
(rule (atomic_rmw_body_rxsbg ib $I16 (littleendian) op tmp val src)
|
|
3100
|
+
(push_rxsbg ib op tmp val (bswap_reg $I32 src) 48 64 -16))
|
|
3101
|
+
|
|
3102
|
+
;; Invert a subword.
|
|
3103
|
+
(decl atomic_rmw_body_invert (VecMInstBuilder Type MemFlags WritableReg Reg) Reg)
|
|
3104
|
+
;; 8-bit case: invert the high byte.
|
|
3105
|
+
(rule (atomic_rmw_body_invert ib $I8 _ tmp val)
|
|
3106
|
+
(push_xor_uimm32shifted ib $I32 tmp val (uimm32shifted 0xff000000 0)))
|
|
3107
|
+
;; 16-bit big-endian case: invert the two high bytes.
|
|
3108
|
+
(rule 1 (atomic_rmw_body_invert ib $I16 (bigendian) tmp val)
|
|
3109
|
+
(push_xor_uimm32shifted ib $I32 tmp val (uimm32shifted 0xffff0000 0)))
|
|
3110
|
+
;; 16-bit little-endian case: invert the two low bytes.
|
|
3111
|
+
(rule (atomic_rmw_body_invert ib $I16 (littleendian) tmp val)
|
|
3112
|
+
(push_xor_uimm32shifted ib $I32 tmp val (uimm32shifted 0xffff 0)))
|
|
3113
|
+
|
|
3114
|
+
;; Loop bodies for atomic ADD/SUB operations.
|
|
3115
|
+
(rule (atomic_rmw_body ib ty flags (AtomicRmwOp.Add) tmp val src)
|
|
3116
|
+
(atomic_rmw_body_addsub ib ty flags (aluop_add (ty_ext32 ty)) tmp val src))
|
|
3117
|
+
(rule (atomic_rmw_body ib ty flags (AtomicRmwOp.Sub) tmp val src)
|
|
3118
|
+
(atomic_rmw_body_addsub ib ty flags (aluop_sub (ty_ext32 ty)) tmp val src))
|
|
3119
|
+
|
|
3120
|
+
;; Addition or subtraction operation.
|
|
3121
|
+
(decl atomic_rmw_body_addsub (VecMInstBuilder Type MemFlags ALUOp
|
|
3122
|
+
WritableReg Reg Reg) Reg)
|
|
3123
|
+
;; 32/64-bit big-endian case: just a regular add/sub operation.
|
|
3124
|
+
(rule 2 (atomic_rmw_body_addsub ib (ty_32_or_64 ty) (bigendian) op tmp val src)
|
|
3125
|
+
(push_alu_reg ib op tmp val src))
|
|
3126
|
+
;; 32/64-bit little-endian case: byte-swap the value loaded from memory before
|
|
3127
|
+
;; and after performing the operation in native endianness.
|
|
3128
|
+
(rule 1 (atomic_rmw_body_addsub ib (ty_32_or_64 ty) (littleendian) op tmp val src)
|
|
3129
|
+
(let ((val_swapped Reg (push_bswap_reg ib ty tmp val))
|
|
3130
|
+
(res_swapped Reg (push_alu_reg ib op tmp val_swapped src)))
|
|
3131
|
+
(push_bswap_reg ib ty tmp res_swapped)))
|
|
3132
|
+
;; 8-bit case: perform a 32-bit addition of the source value shifted by 24 bits
|
|
3133
|
+
;; to the memory value, which contains the target in its high byte.
|
|
3134
|
+
(rule (atomic_rmw_body_addsub ib $I8 _ op tmp val src)
|
|
3135
|
+
(let ((src_shifted Reg (lshl_imm $I32 src 24)))
|
|
3136
|
+
(push_alu_reg ib op tmp val src_shifted)))
|
|
3137
|
+
;; 16-bit big-endian case: similar, just shift the source by 16 bits.
|
|
3138
|
+
(rule 3 (atomic_rmw_body_addsub ib $I16 (bigendian) op tmp val src)
|
|
3139
|
+
(let ((src_shifted Reg (lshl_imm $I32 src 16)))
|
|
3140
|
+
(push_alu_reg ib op tmp val src_shifted)))
|
|
3141
|
+
;; 16-bit little-endian case: the same, but in addition we need to byte-swap
|
|
3142
|
+
;; the memory value before and after the operation. Since the value was placed
|
|
3143
|
+
;; in the low two bytes by our standard rotation, we can use a 32-bit byte-swap
|
|
3144
|
+
;; and the native-endian value will end up in the high bytes where we need it
|
|
3145
|
+
;; to perform the operation.
|
|
3146
|
+
(rule (atomic_rmw_body_addsub ib $I16 (littleendian) op tmp val src)
|
|
3147
|
+
(let ((src_shifted Reg (lshl_imm $I32 src 16))
|
|
3148
|
+
(val_swapped Reg (push_bswap_reg ib $I32 tmp val))
|
|
3149
|
+
(res_swapped Reg (push_alu_reg ib op tmp val_swapped src_shifted)))
|
|
3150
|
+
(push_bswap_reg ib $I32 tmp res_swapped)))
|
|
3151
|
+
|
|
3152
|
+
;; Loop bodies for atomic MIN/MAX operations.
|
|
3153
|
+
(rule (atomic_rmw_body ib ty flags (AtomicRmwOp.Smin) tmp val src)
|
|
3154
|
+
(atomic_rmw_body_minmax ib ty flags (cmpop_cmps (ty_ext32 ty))
|
|
3155
|
+
(intcc_as_cond (IntCC.SignedLessThan)) tmp val src))
|
|
3156
|
+
(rule (atomic_rmw_body ib ty flags (AtomicRmwOp.Smax) tmp val src)
|
|
3157
|
+
(atomic_rmw_body_minmax ib ty flags (cmpop_cmps (ty_ext32 ty))
|
|
3158
|
+
(intcc_as_cond (IntCC.SignedGreaterThan)) tmp val src))
|
|
3159
|
+
(rule (atomic_rmw_body ib ty flags (AtomicRmwOp.Umin) tmp val src)
|
|
3160
|
+
(atomic_rmw_body_minmax ib ty flags (cmpop_cmpu (ty_ext32 ty))
|
|
3161
|
+
(intcc_as_cond (IntCC.UnsignedLessThan)) tmp val src))
|
|
3162
|
+
(rule (atomic_rmw_body ib ty flags (AtomicRmwOp.Umax) tmp val src)
|
|
3163
|
+
(atomic_rmw_body_minmax ib ty flags (cmpop_cmpu (ty_ext32 ty))
|
|
3164
|
+
(intcc_as_cond (IntCC.UnsignedGreaterThan)) tmp val src))
|
|
3165
|
+
|
|
3166
|
+
;; Minimum or maximum operation.
|
|
3167
|
+
(decl atomic_rmw_body_minmax (VecMInstBuilder Type MemFlags CmpOp Cond
|
|
3168
|
+
WritableReg Reg Reg) Reg)
|
|
3169
|
+
;; 32/64-bit big-endian case: just a comparison followed by a conditional
|
|
3170
|
+
;; break out of the loop if the memory value does not need to change.
|
|
3171
|
+
;; If it does need to change, the new value is simply the source operand.
|
|
3172
|
+
(rule 2 (atomic_rmw_body_minmax ib (ty_32_or_64 ty) (bigendian)
|
|
3173
|
+
op cond tmp val src)
|
|
3174
|
+
(let ((_ Reg (push_break_if ib (cmp_rr op src val) (invert_cond cond))))
|
|
3175
|
+
src))
|
|
3176
|
+
;; 32/64-bit little-endian case: similar, but we need to byte-swap the
|
|
3177
|
+
;; memory value before the comparison. If we need to store the new value,
|
|
3178
|
+
;; it also needs to be byte-swapped.
|
|
3179
|
+
(rule 1 (atomic_rmw_body_minmax ib (ty_32_or_64 ty) (littleendian)
|
|
3180
|
+
op cond tmp val src)
|
|
3181
|
+
(let ((val_swapped Reg (push_bswap_reg ib ty tmp val))
|
|
3182
|
+
(_ Reg (push_break_if ib (cmp_rr op src val_swapped)
|
|
3183
|
+
(invert_cond cond))))
|
|
3184
|
+
(push_bswap_reg ib ty tmp src)))
|
|
3185
|
+
;; 8-bit case: compare the memory value (which contains the target in the
|
|
3186
|
+
;; high byte) with the source operand shifted by 24 bits. Note that in
|
|
3187
|
+
;; the case where the high bytes are equal, the comparison may succeed
|
|
3188
|
+
;; or fail depending on the unrelated low bits of the memory value, and
|
|
3189
|
+
;; so we either may or may not perform the update. But it would be an
|
|
3190
|
+
;; update with the same value in any case, so this does not matter.
|
|
3191
|
+
(rule (atomic_rmw_body_minmax ib $I8 _ op cond tmp val src)
|
|
3192
|
+
(let ((src_shifted Reg (lshl_imm $I32 src 24))
|
|
3193
|
+
(_ Reg (push_break_if ib (cmp_rr op src_shifted val)
|
|
3194
|
+
(invert_cond cond))))
|
|
3195
|
+
(push_rxsbg ib (RxSBGOp.Insert) tmp val src_shifted 32 40 0)))
|
|
3196
|
+
;; 16-bit big-endian case: similar, just shift the source by 16 bits.
|
|
3197
|
+
(rule 3 (atomic_rmw_body_minmax ib $I16 (bigendian) op cond tmp val src)
|
|
3198
|
+
(let ((src_shifted Reg (lshl_imm $I32 src 16))
|
|
3199
|
+
(_ Reg (push_break_if ib (cmp_rr op src_shifted val)
|
|
3200
|
+
(invert_cond cond))))
|
|
3201
|
+
(push_rxsbg ib (RxSBGOp.Insert) tmp val src_shifted 32 48 0)))
|
|
3202
|
+
;; 16-bit little-endian case: similar, but in addition byte-swap the
|
|
3203
|
+
;; memory value before and after the operation, like for _addsub_.
|
|
3204
|
+
(rule (atomic_rmw_body_minmax ib $I16 (littleendian) op cond tmp val src)
|
|
3205
|
+
(let ((src_shifted Reg (lshl_imm $I32 src 16))
|
|
3206
|
+
(val_swapped Reg (push_bswap_reg ib $I32 tmp val))
|
|
3207
|
+
(_ Reg (push_break_if ib (cmp_rr op src_shifted val_swapped)
|
|
3208
|
+
(invert_cond cond)))
|
|
3209
|
+
(res_swapped Reg (push_rxsbg ib (RxSBGOp.Insert)
|
|
3210
|
+
tmp val_swapped src_shifted 32 48 0)))
|
|
3211
|
+
(push_bswap_reg ib $I32 tmp res_swapped)))
|
|
3212
|
+
|
|
3213
|
+
|
|
3214
|
+
;;;; Rules for `atomic_cas` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
3215
|
+
|
|
3216
|
+
;; 32/64-bit big-endian atomic compare-and-swap instruction.
|
|
3217
|
+
(rule 2 (lower (has_type (ty_32_or_64 ty)
|
|
3218
|
+
(atomic_cas flags @ (bigendian) addr src1 src2)))
|
|
3219
|
+
(atomic_cas_impl ty (put_in_reg src1) (put_in_reg src2)
|
|
3220
|
+
(lower_address flags addr (zero_offset))))
|
|
3221
|
+
|
|
3222
|
+
;; 32/64-bit little-endian atomic compare-and-swap instruction.
|
|
3223
|
+
;; Implemented by byte-swapping old/new inputs and the output.
|
|
3224
|
+
(rule 1 (lower (has_type (ty_32_or_64 ty)
|
|
3225
|
+
(atomic_cas flags @ (littleendian) addr src1 src2)))
|
|
3226
|
+
(bswap_reg ty (atomic_cas_impl ty (bswap_reg ty (put_in_reg src1))
|
|
3227
|
+
(bswap_reg ty (put_in_reg src2))
|
|
3228
|
+
(lower_address flags addr (zero_offset)))))
|
|
3229
|
+
|
|
3230
|
+
;; 8/16-bit atomic compare-and-swap implemented via loop.
|
|
3231
|
+
(rule (lower (has_type (ty_8_or_16 ty) (atomic_cas flags addr src1 src2)))
|
|
3232
|
+
(let ((src1_reg Reg (put_in_reg src1))
|
|
3233
|
+
(src2_reg Reg (put_in_reg src2))
|
|
3234
|
+
(addr_reg Reg (put_in_reg addr))
|
|
3235
|
+
;; Prepare access to the surrounding aligned word.
|
|
3236
|
+
(bitshift Reg (casloop_bitshift addr_reg))
|
|
3237
|
+
(aligned_addr Reg (casloop_aligned_addr addr_reg))
|
|
3238
|
+
;; Create body of compare-and-swap loop.
|
|
3239
|
+
(ib VecMInstBuilder (inst_builder_new))
|
|
3240
|
+
(val0 Reg (writable_reg_to_reg (casloop_val_reg)))
|
|
3241
|
+
(val1 Reg (casloop_rotate_in ib ty flags bitshift val0))
|
|
3242
|
+
(val2 Reg (atomic_cas_body ib ty flags
|
|
3243
|
+
(casloop_tmp_reg) val1 src1_reg src2_reg))
|
|
3244
|
+
(val3 Reg (casloop_rotate_out ib ty flags bitshift val2)))
|
|
3245
|
+
;; Emit compare-and-swap loop and extract final result.
|
|
3246
|
+
(casloop_subword ib ty flags aligned_addr bitshift val3)))
|
|
3247
|
+
|
|
3248
|
+
;; Emit loop body instructions to perform a subword compare-and-swap.
|
|
3249
|
+
(decl atomic_cas_body (VecMInstBuilder Type MemFlags
|
|
3250
|
+
WritableReg Reg Reg Reg) Reg)
|
|
3251
|
+
|
|
3252
|
+
;; 8-bit case: "val" contains the value loaded from memory in the high byte.
|
|
3253
|
+
;; Compare with the comparison value in the low byte of "src1". If unequal,
|
|
3254
|
+
;; break out of the loop, otherwise replace the target byte in "val" with
|
|
3255
|
+
;; the low byte of "src2".
|
|
3256
|
+
(rule (atomic_cas_body ib $I8 _ tmp val src1 src2)
|
|
3257
|
+
(let ((_ Reg (push_break_if ib (rxsbg_test (RxSBGOp.Xor) val src1 32 40 24)
|
|
3258
|
+
(intcc_as_cond (IntCC.NotEqual)))))
|
|
3259
|
+
(push_rxsbg ib (RxSBGOp.Insert) tmp val src2 32 40 24)))
|
|
3260
|
+
|
|
3261
|
+
;; 16-bit big-endian case: Same as above, except with values in the high
|
|
3262
|
+
;; two bytes of "val" and low two bytes of "src1" and "src2".
|
|
3263
|
+
(rule 1 (atomic_cas_body ib $I16 (bigendian) tmp val src1 src2)
|
|
3264
|
+
(let ((_ Reg (push_break_if ib (rxsbg_test (RxSBGOp.Xor) val src1 32 48 16)
|
|
3265
|
+
(intcc_as_cond (IntCC.NotEqual)))))
|
|
3266
|
+
(push_rxsbg ib (RxSBGOp.Insert) tmp val src2 32 48 16)))
|
|
3267
|
+
|
|
3268
|
+
;; 16-bit little-endian case: "val" here contains a little-endian value in the
|
|
3269
|
+
;; *low* two bytes. "src1" and "src2" contain native (i.e. big-endian) values
|
|
3270
|
+
;; in their low two bytes. Perform the operation in little-endian mode by
|
|
3271
|
+
;; byte-swapping "src1" and "src" ahead of the loop. Note that this is a
|
|
3272
|
+
;; 32-bit operation so the little-endian 16-bit values end up in the *high*
|
|
3273
|
+
;; two bytes of the swapped values.
|
|
3274
|
+
(rule (atomic_cas_body ib $I16 (littleendian) tmp val src1 src2)
|
|
3275
|
+
(let ((src1_swapped Reg (bswap_reg $I32 src1))
|
|
3276
|
+
(src2_swapped Reg (bswap_reg $I32 src2))
|
|
3277
|
+
(_ Reg (push_break_if ib
|
|
3278
|
+
(rxsbg_test (RxSBGOp.Xor) val src1_swapped 48 64 -16)
|
|
3279
|
+
(intcc_as_cond (IntCC.NotEqual)))))
|
|
3280
|
+
(push_rxsbg ib (RxSBGOp.Insert) tmp val src2_swapped 48 64 -16)))
|
|
3281
|
+
|
|
3282
|
+
|
|
3283
|
+
;;;; Rules for `atomic_load` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
3284
|
+
|
|
3285
|
+
;; Atomic loads can be implemented via regular loads on this platform.
|
|
3286
|
+
|
|
3287
|
+
;; 8-bit atomic load.
|
|
3288
|
+
(rule (lower (has_type $I8 (atomic_load flags addr)))
|
|
3289
|
+
(zext32_mem $I8 (lower_address flags addr (zero_offset))))
|
|
3290
|
+
|
|
3291
|
+
;; 16-bit big-endian atomic load.
|
|
3292
|
+
(rule 1 (lower (has_type $I16 (atomic_load flags @ (bigendian) addr)))
|
|
3293
|
+
(zext32_mem $I16 (lower_address flags addr (zero_offset))))
|
|
3294
|
+
|
|
3295
|
+
;; 16-bit little-endian atomic load.
|
|
3296
|
+
(rule (lower (has_type $I16 (atomic_load flags @ (littleendian) addr)))
|
|
3297
|
+
(loadrev16 (lower_address flags addr (zero_offset))))
|
|
3298
|
+
|
|
3299
|
+
;; 32-bit big-endian atomic load.
|
|
3300
|
+
(rule 1 (lower (has_type $I32 (atomic_load flags @ (bigendian) addr)))
|
|
3301
|
+
(load32 (lower_address flags addr (zero_offset))))
|
|
3302
|
+
|
|
3303
|
+
;; 32-bit little-endian atomic load.
|
|
3304
|
+
(rule (lower (has_type $I32 (atomic_load flags @ (littleendian) addr)))
|
|
3305
|
+
(loadrev32 (lower_address flags addr (zero_offset))))
|
|
3306
|
+
|
|
3307
|
+
;; 64-bit big-endian atomic load.
|
|
3308
|
+
(rule 1 (lower (has_type $I64 (atomic_load flags @ (bigendian) addr)))
|
|
3309
|
+
(load64 (lower_address flags addr (zero_offset))))
|
|
3310
|
+
|
|
3311
|
+
;; 64-bit little-endian atomic load.
|
|
3312
|
+
(rule (lower (has_type $I64 (atomic_load flags @ (littleendian) addr)))
|
|
3313
|
+
(loadrev64 (lower_address flags addr (zero_offset))))
|
|
3314
|
+
|
|
3315
|
+
|
|
3316
|
+
;;;; Rules for `atomic_store` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
3317
|
+
|
|
3318
|
+
;; Atomic stores can be implemented via regular stores followed by a fence.
|
|
3319
|
+
(decl atomic_store_impl (SideEffectNoResult) InstOutput)
|
|
3320
|
+
(rule (atomic_store_impl store)
|
|
3321
|
+
(let ((_ InstOutput (side_effect store)))
|
|
3322
|
+
(side_effect (fence_impl))))
|
|
3323
|
+
|
|
3324
|
+
;; 8-bit atomic store.
|
|
3325
|
+
(rule (lower (atomic_store flags val @ (value_type $I8) addr))
|
|
3326
|
+
(atomic_store_impl (istore8_impl flags val addr (zero_offset))))
|
|
3327
|
+
|
|
3328
|
+
;; 16-bit atomic store.
|
|
3329
|
+
(rule (lower (atomic_store flags val @ (value_type $I16) addr))
|
|
3330
|
+
(atomic_store_impl (istore16_impl flags val addr (zero_offset))))
|
|
3331
|
+
|
|
3332
|
+
;; 32-bit atomic store.
|
|
3333
|
+
(rule (lower (atomic_store flags val @ (value_type $I32) addr))
|
|
3334
|
+
(atomic_store_impl (istore32_impl flags val addr (zero_offset))))
|
|
3335
|
+
|
|
3336
|
+
;; 64-bit atomic store.
|
|
3337
|
+
(rule (lower (atomic_store flags val @ (value_type $I64) addr))
|
|
3338
|
+
(atomic_store_impl (istore64_impl flags val addr (zero_offset))))
|
|
3339
|
+
|
|
3340
|
+
|
|
3341
|
+
;;;; Rules for `fence` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
3342
|
+
|
|
3343
|
+
;; Fence to ensure sequential consistency.
|
|
3344
|
+
(rule (lower (fence))
|
|
3345
|
+
(side_effect (fence_impl)))
|
|
3346
|
+
|
|
3347
|
+
|
|
3348
|
+
;;;; Rules for `icmp` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
3349
|
+
|
|
3350
|
+
;; We want to optimize the typical use of `icmp` (generating an integer 0/1
|
|
3351
|
+
;; result) followed by some user, like a `select` or a conditional branch.
|
|
3352
|
+
;; Instead of first generating the integer result and later testing it again,
|
|
3353
|
+
;; we want to sink the comparison to be performed at the site of use.
|
|
3354
|
+
;;
|
|
3355
|
+
;; To enable this, we provide generic helpers that return a `ProducesBool`
|
|
3356
|
+
;; encapsulating the comparison in question, which can be used by all the
|
|
3357
|
+
;; above scenarios.
|
|
3358
|
+
;;
|
|
3359
|
+
;; N.B. There are specific considerations when sinking a memory load into a
|
|
3360
|
+
;; comparison. When emitting an `icmp` directly, this can of course be done
|
|
3361
|
+
;; as usual. However, when we use the `ProducesBool` elsewhere, we need to
|
|
3362
|
+
;; consider *three* instructions: the load, the `icmp`, and the final user
|
|
3363
|
+
;; (e.g. a conditional branch). The only way to safely sink the load would
|
|
3364
|
+
;; be to sink it direct into the final user, which is only possible if there
|
|
3365
|
+
;; is no *other* user of the `icmp` result. This is not currently being
|
|
3366
|
+
;; verified by the `SinkableInst` logic, so to be safe we do not perform this
|
|
3367
|
+
;; optimization at all.
|
|
3368
|
+
;;
|
|
3369
|
+
;; The generic `icmp_val` helper therefore has a flag indicating whether
|
|
3370
|
+
;; it is being invoked in a context where it is safe to sink memory loads
|
|
3371
|
+
;; (e.g. when directly emitting an `icmp`), or whether it is not (e.g. when
|
|
3372
|
+
;; sinking the `icmp` result into a conditional branch or select).
|
|
3373
|
+
|
|
3374
|
+
;; Main `icmp` entry point. Generate a `ProducesBool` capturing the
|
|
3375
|
+
;; integer comparison and immediately lower it to a 0/1 integer result.
|
|
3376
|
+
;; In this case, it is safe to sink memory loads.
|
|
3377
|
+
(rule -1 (lower (has_type (fits_in_64 ty) (icmp int_cc x y)))
|
|
3378
|
+
(lower_bool ty (icmp_val true int_cc x y)))
|
|
3379
|
+
|
|
3380
|
+
|
|
3381
|
+
;; Return a `ProducesBool` to implement any integer comparison.
|
|
3382
|
+
;; The first argument is a flag to indicate whether it is safe to sink
|
|
3383
|
+
;; memory loads as discussed above.
|
|
3384
|
+
(decl icmp_val (bool IntCC Value Value) ProducesBool)
|
|
3385
|
+
|
|
3386
|
+
;; Dispatch for signed comparisons.
|
|
3387
|
+
(rule -1 (icmp_val allow_mem int_cc @ (signed) x @ (value_type (fits_in_64 _)) y)
|
|
3388
|
+
(bool (icmps_val allow_mem x y) (intcc_as_cond int_cc)))
|
|
3389
|
+
;; Dispatch for unsigned comparisons.
|
|
3390
|
+
(rule -2 (icmp_val allow_mem int_cc @ (unsigned) x @ (value_type (fits_in_64 _)) y)
|
|
3391
|
+
(bool (icmpu_val allow_mem x y) (intcc_as_cond int_cc)))
|
|
3392
|
+
|
|
3393
|
+
|
|
3394
|
+
;; Return a `ProducesBool` to implement signed integer comparisons.
|
|
3395
|
+
(decl icmps_val (bool Value Value) ProducesFlags)
|
|
3396
|
+
|
|
3397
|
+
;; Compare (signed) two registers.
|
|
3398
|
+
(rule 0 (icmps_val _ x @ (value_type (fits_in_64 ty)) y)
|
|
3399
|
+
(icmps_reg (ty_ext32 ty) (put_in_reg_sext32 x) (put_in_reg_sext32 y)))
|
|
3400
|
+
|
|
3401
|
+
;; Compare (signed) a register and a sign-extended register.
|
|
3402
|
+
(rule 3 (icmps_val _ x @ (value_type (fits_in_64 ty)) (sext32_value y))
|
|
3403
|
+
(icmps_reg_sext32 ty x y))
|
|
3404
|
+
|
|
3405
|
+
;; Compare (signed) a register and an immediate.
|
|
3406
|
+
(rule 2 (icmps_val _ x @ (value_type (fits_in_64 ty)) (i16_from_value y))
|
|
3407
|
+
(icmps_simm16 (ty_ext32 ty) (put_in_reg_sext32 x) y))
|
|
3408
|
+
(rule 1 (icmps_val _ x @ (value_type (fits_in_64 ty)) (i32_from_value y))
|
|
3409
|
+
(icmps_simm32 (ty_ext32 ty) (put_in_reg_sext32 x) y))
|
|
3410
|
+
|
|
3411
|
+
;; Compare (signed) a register and memory (32/64-bit types).
|
|
3412
|
+
(rule 4 (icmps_val true x @ (value_type (fits_in_64 ty)) (sinkable_load_32_64 y))
|
|
3413
|
+
(icmps_mem ty x (sink_load y)))
|
|
3414
|
+
|
|
3415
|
+
;; Compare (signed) a register and memory (16-bit types).
|
|
3416
|
+
(rule 5 (icmps_val true x @ (value_type (fits_in_64 ty)) (sinkable_load_16 y))
|
|
3417
|
+
(icmps_mem_sext16 (ty_ext32 ty) (put_in_reg_sext32 x) (sink_load y)))
|
|
3418
|
+
|
|
3419
|
+
;; Compare (signed) a register and sign-extended memory.
|
|
3420
|
+
(rule 4 (icmps_val true x @ (value_type (fits_in_64 ty)) (sinkable_sload16 y))
|
|
3421
|
+
(icmps_mem_sext16 ty x (sink_sload16 y)))
|
|
3422
|
+
(rule 4 (icmps_val true x @ (value_type (fits_in_64 ty)) (sinkable_sload32 y))
|
|
3423
|
+
(icmps_mem_sext32 ty x (sink_sload32 y)))
|
|
3424
|
+
|
|
3425
|
+
|
|
3426
|
+
;; Return a `ProducesBool` to implement unsigned integer comparisons.
|
|
3427
|
+
(decl icmpu_val (bool Value Value) ProducesFlags)
|
|
3428
|
+
|
|
3429
|
+
;; Compare (unsigned) two registers.
|
|
3430
|
+
(rule (icmpu_val _ x @ (value_type (fits_in_64 ty)) y)
|
|
3431
|
+
(icmpu_reg (ty_ext32 ty) (put_in_reg_zext32 x) (put_in_reg_zext32 y)))
|
|
3432
|
+
|
|
3433
|
+
;; Compare (unsigned) a register and a sign-extended register.
|
|
3434
|
+
(rule 1 (icmpu_val _ x @ (value_type (fits_in_64 ty)) (zext32_value y))
|
|
3435
|
+
(icmpu_reg_zext32 ty x y))
|
|
3436
|
+
|
|
3437
|
+
;; Compare (unsigned) a register and an immediate.
|
|
3438
|
+
(rule 2 (icmpu_val _ x @ (value_type (fits_in_64 ty)) (u32_from_value y))
|
|
3439
|
+
(icmpu_uimm32 (ty_ext32 ty) (put_in_reg_zext32 x) y))
|
|
3440
|
+
|
|
3441
|
+
;; Compare (unsigned) a register and memory (32/64-bit types).
|
|
3442
|
+
(rule 4 (icmpu_val true x @ (value_type (fits_in_64 ty)) (sinkable_load_32_64 y))
|
|
3443
|
+
(icmpu_mem ty x (sink_load y)))
|
|
3444
|
+
|
|
3445
|
+
;; Compare (unsigned) a register and memory (16-bit types).
|
|
3446
|
+
;; Note that the ISA only provides instructions with a PC-relative memory
|
|
3447
|
+
;; address here, so we need to check whether the sinkable load matches this.
|
|
3448
|
+
(rule 3 (icmpu_val true x @ (value_type (fits_in_64 ty))
|
|
3449
|
+
(sinkable_load_16 ld))
|
|
3450
|
+
(if-let y (load_sym ld))
|
|
3451
|
+
(icmpu_mem_zext16 (ty_ext32 ty) (put_in_reg_zext32 x) (sink_load y)))
|
|
3452
|
+
|
|
3453
|
+
;; Compare (unsigned) a register and zero-extended memory.
|
|
3454
|
+
;; Note that the ISA only provides instructions with a PC-relative memory
|
|
3455
|
+
;; address here, so we need to check whether the sinkable load matches this.
|
|
3456
|
+
(rule 3 (icmpu_val true x @ (value_type (fits_in_64 ty))
|
|
3457
|
+
(sinkable_uload16 ld))
|
|
3458
|
+
(if-let y (uload16_sym ld))
|
|
3459
|
+
(icmpu_mem_zext16 ty x (sink_uload16 y)))
|
|
3460
|
+
(rule 3 (icmpu_val true x @ (value_type (fits_in_64 ty)) (sinkable_uload32 y))
|
|
3461
|
+
(icmpu_mem_zext32 ty x (sink_uload32 y)))
|
|
3462
|
+
|
|
3463
|
+
|
|
3464
|
+
;; Compare 128-bit integers for equality.
|
|
3465
|
+
;; Implemented via element-wise comparison using the all-element true CC flag.
|
|
3466
|
+
(rule (icmp_val _ (IntCC.Equal) x @ (value_type (vr128_ty _)) y)
|
|
3467
|
+
(bool (vec_cmpeqs $I64X2 x y)
|
|
3468
|
+
(floatcc_as_cond (FloatCC.Equal))))
|
|
3469
|
+
(rule (icmp_val _ (IntCC.NotEqual) x @ (value_type (vr128_ty _)) y)
|
|
3470
|
+
(bool (vec_cmpeqs $I64X2 x y)
|
|
3471
|
+
(floatcc_as_cond (FloatCC.NotEqual))))
|
|
3472
|
+
|
|
3473
|
+
;; Compare (signed) 128-bit integers for relational inequality.
|
|
3474
|
+
;; Implemented via synthetic instruction using VECG and VCHLGS.
|
|
3475
|
+
(rule (icmp_val _ (IntCC.SignedGreaterThan) x @ (value_type (vr128_ty ty)) y)
|
|
3476
|
+
(vec_int128_scmphi x y))
|
|
3477
|
+
(rule (icmp_val _ (IntCC.SignedLessThan) x @ (value_type (vr128_ty ty)) y)
|
|
3478
|
+
(vec_int128_scmphi y x))
|
|
3479
|
+
(rule (icmp_val _ (IntCC.SignedGreaterThanOrEqual) x @ (value_type (vr128_ty ty)) y)
|
|
3480
|
+
(invert_bool (vec_int128_scmphi y x)))
|
|
3481
|
+
(rule (icmp_val _ (IntCC.SignedLessThanOrEqual) x @ (value_type (vr128_ty ty)) y)
|
|
3482
|
+
(invert_bool (vec_int128_scmphi x y)))
|
|
3483
|
+
|
|
3484
|
+
;; Compare (unsigned) 128-bit integers for relational inequality.
|
|
3485
|
+
;; Implemented via synthetic instruction using VECLG and VCHLGS.
|
|
3486
|
+
(rule (icmp_val _ (IntCC.UnsignedGreaterThan) x @ (value_type (vr128_ty ty)) y)
|
|
3487
|
+
(vec_int128_ucmphi x y))
|
|
3488
|
+
(rule (icmp_val _ (IntCC.UnsignedLessThan) x @ (value_type (vr128_ty ty)) y)
|
|
3489
|
+
(vec_int128_ucmphi y x))
|
|
3490
|
+
(rule (icmp_val _ (IntCC.UnsignedGreaterThanOrEqual) x @ (value_type (vr128_ty ty)) y)
|
|
3491
|
+
(invert_bool (vec_int128_ucmphi y x)))
|
|
3492
|
+
(rule (icmp_val _ (IntCC.UnsignedLessThanOrEqual) x @ (value_type (vr128_ty ty)) y)
|
|
3493
|
+
(invert_bool (vec_int128_ucmphi x y)))
|
|
3494
|
+
|
|
3495
|
+
|
|
3496
|
+
;; Vector `icmp` produces a boolean vector.
|
|
3497
|
+
;; We need to handle the various IntCC flags separately here.
|
|
3498
|
+
|
|
3499
|
+
(rule (lower (has_type (ty_vec128 ty) (icmp (IntCC.Equal) x y)))
|
|
3500
|
+
(vec_cmpeq ty x y))
|
|
3501
|
+
(rule (lower (has_type (ty_vec128 ty) (icmp (IntCC.NotEqual) x y)))
|
|
3502
|
+
(vec_not ty (vec_cmpeq ty x y)))
|
|
3503
|
+
(rule (lower (has_type (ty_vec128 ty) (icmp (IntCC.SignedGreaterThan) x y)))
|
|
3504
|
+
(vec_cmph ty x y))
|
|
3505
|
+
(rule (lower (has_type (ty_vec128 ty) (icmp (IntCC.SignedLessThanOrEqual) x y)))
|
|
3506
|
+
(vec_not ty (vec_cmph ty x y)))
|
|
3507
|
+
(rule (lower (has_type (ty_vec128 ty) (icmp (IntCC.SignedLessThan) x y)))
|
|
3508
|
+
(vec_cmph ty y x))
|
|
3509
|
+
(rule (lower (has_type (ty_vec128 ty) (icmp (IntCC.SignedGreaterThanOrEqual) x y)))
|
|
3510
|
+
(vec_not ty (vec_cmph ty y x)))
|
|
3511
|
+
(rule (lower (has_type (ty_vec128 ty) (icmp (IntCC.UnsignedGreaterThan) x y)))
|
|
3512
|
+
(vec_cmphl ty x y))
|
|
3513
|
+
(rule (lower (has_type (ty_vec128 ty) (icmp (IntCC.UnsignedLessThanOrEqual) x y)))
|
|
3514
|
+
(vec_not ty (vec_cmphl ty x y)))
|
|
3515
|
+
(rule (lower (has_type (ty_vec128 ty) (icmp (IntCC.UnsignedLessThan) x y)))
|
|
3516
|
+
(vec_cmphl ty y x))
|
|
3517
|
+
(rule (lower (has_type (ty_vec128 ty) (icmp (IntCC.UnsignedGreaterThanOrEqual) x y)))
|
|
3518
|
+
(vec_not ty (vec_cmphl ty y x)))
|
|
3519
|
+
|
|
3520
|
+
|
|
3521
|
+
;;;; Rules for `fcmp` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
3522
|
+
|
|
3523
|
+
;; Main `fcmp` entry point. Generate a `ProducesBool` capturing the
|
|
3524
|
+
;; integer comparison and immediately lower it to a 0/1 integer result.
|
|
3525
|
+
(rule -1 (lower (has_type (fits_in_64 ty) (fcmp float_cc x y)))
|
|
3526
|
+
(lower_bool ty (fcmp_val float_cc x y)))
|
|
3527
|
+
|
|
3528
|
+
;; Return a `ProducesBool` to implement any floating-point comparison.
|
|
3529
|
+
(decl fcmp_val (FloatCC Value Value) ProducesBool)
|
|
3530
|
+
(rule (fcmp_val float_cc x @ (value_type ty) y)
|
|
3531
|
+
(bool (fcmp_reg ty x y)
|
|
3532
|
+
(floatcc_as_cond float_cc)))
|
|
3533
|
+
|
|
3534
|
+
;; Vector `fcmp` produces a boolean vector.
|
|
3535
|
+
;; We need to handle the various FloatCC flags separately here.
|
|
3536
|
+
|
|
3537
|
+
(rule (lower (has_type (ty_vec128 ty) (fcmp (FloatCC.Equal) x y)))
|
|
3538
|
+
(vec_fcmpeq ty x y))
|
|
3539
|
+
(rule (lower (has_type (ty_vec128 ty) (fcmp (FloatCC.NotEqual) x y)))
|
|
3540
|
+
(vec_not ty (vec_fcmpeq ty x y)))
|
|
3541
|
+
(rule (lower (has_type (ty_vec128 ty) (fcmp (FloatCC.GreaterThan) x y)))
|
|
3542
|
+
(vec_fcmph ty x y))
|
|
3543
|
+
(rule (lower (has_type (ty_vec128 ty) (fcmp (FloatCC.UnorderedOrLessThanOrEqual) x y)))
|
|
3544
|
+
(vec_not ty (vec_fcmph ty x y)))
|
|
3545
|
+
(rule (lower (has_type (ty_vec128 ty) (fcmp (FloatCC.GreaterThanOrEqual) x y)))
|
|
3546
|
+
(vec_fcmphe ty x y))
|
|
3547
|
+
(rule (lower (has_type (ty_vec128 ty) (fcmp (FloatCC.UnorderedOrLessThan) x y)))
|
|
3548
|
+
(vec_not ty (vec_fcmphe ty x y)))
|
|
3549
|
+
(rule (lower (has_type (ty_vec128 ty) (fcmp (FloatCC.LessThan) x y)))
|
|
3550
|
+
(vec_fcmph ty y x))
|
|
3551
|
+
(rule (lower (has_type (ty_vec128 ty) (fcmp (FloatCC.UnorderedOrGreaterThanOrEqual) x y)))
|
|
3552
|
+
(vec_not ty (vec_fcmph ty y x)))
|
|
3553
|
+
(rule (lower (has_type (ty_vec128 ty) (fcmp (FloatCC.LessThanOrEqual) x y)))
|
|
3554
|
+
(vec_fcmphe ty y x))
|
|
3555
|
+
(rule (lower (has_type (ty_vec128 ty) (fcmp (FloatCC.UnorderedOrGreaterThan) x y)))
|
|
3556
|
+
(vec_not ty (vec_fcmphe ty y x)))
|
|
3557
|
+
(rule (lower (has_type (ty_vec128 ty) (fcmp (FloatCC.Ordered) x y)))
|
|
3558
|
+
(vec_or ty (vec_fcmphe ty x y) (vec_fcmphe ty y x)))
|
|
3559
|
+
(rule (lower (has_type (ty_vec128 ty) (fcmp (FloatCC.Unordered) x y)))
|
|
3560
|
+
(vec_not_or ty (vec_fcmphe ty x y) (vec_fcmphe ty y x)))
|
|
3561
|
+
(rule (lower (has_type (ty_vec128 ty) (fcmp (FloatCC.OrderedNotEqual) x y)))
|
|
3562
|
+
(vec_or ty (vec_fcmph ty x y) (vec_fcmph ty y x)))
|
|
3563
|
+
(rule (lower (has_type (ty_vec128 ty) (fcmp (FloatCC.UnorderedOrEqual) x y)))
|
|
3564
|
+
(vec_not_or ty (vec_fcmph ty x y) (vec_fcmph ty y x)))
|
|
3565
|
+
|
|
3566
|
+
|
|
3567
|
+
;;;; Rules for `vall_true` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
3568
|
+
|
|
3569
|
+
;; Main `vall_true` entry point. Generate a `ProducesBool` capturing the
|
|
3570
|
+
;; comparison and immediately lower it to a 0/1 integer result.
|
|
3571
|
+
(rule (lower (has_type (fits_in_64 ty) (vall_true x)))
|
|
3572
|
+
(lower_bool ty (vall_true_val x)))
|
|
3573
|
+
|
|
3574
|
+
;; Return a `ProducesBool` to implement `vall_true`.
|
|
3575
|
+
(decl vall_true_val (Value) ProducesBool)
|
|
3576
|
+
(rule -1 (vall_true_val x @ (value_type ty))
|
|
3577
|
+
(bool (vec_cmpeqs ty x (vec_imm ty 0))
|
|
3578
|
+
(floatcc_as_cond (FloatCC.Unordered))))
|
|
3579
|
+
|
|
3580
|
+
;; Short-circuit `vall_true` on the result of a `icmp`.
|
|
3581
|
+
(rule (vall_true_val (has_type ty (icmp (IntCC.Equal) x y)))
|
|
3582
|
+
(bool (vec_cmpeqs ty x y)
|
|
3583
|
+
(floatcc_as_cond (FloatCC.Equal))))
|
|
3584
|
+
(rule (vall_true_val (has_type ty (icmp (IntCC.NotEqual) x y)))
|
|
3585
|
+
(bool (vec_cmpeqs ty x y)
|
|
3586
|
+
(floatcc_as_cond (FloatCC.Unordered))))
|
|
3587
|
+
(rule (vall_true_val (has_type ty (icmp (IntCC.SignedGreaterThan) x y)))
|
|
3588
|
+
(bool (vec_cmphs ty x y)
|
|
3589
|
+
(floatcc_as_cond (FloatCC.Equal))))
|
|
3590
|
+
(rule (vall_true_val (has_type ty (icmp (IntCC.SignedLessThanOrEqual) x y)))
|
|
3591
|
+
(bool (vec_cmphs ty x y)
|
|
3592
|
+
(floatcc_as_cond (FloatCC.Unordered))))
|
|
3593
|
+
(rule (vall_true_val (has_type ty (icmp (IntCC.SignedLessThan) x y)))
|
|
3594
|
+
(bool (vec_cmphs ty y x)
|
|
3595
|
+
(floatcc_as_cond (FloatCC.Equal))))
|
|
3596
|
+
(rule (vall_true_val (has_type ty (icmp (IntCC.SignedGreaterThanOrEqual) x y)))
|
|
3597
|
+
(bool (vec_cmphs ty y x)
|
|
3598
|
+
(floatcc_as_cond (FloatCC.Unordered))))
|
|
3599
|
+
(rule (vall_true_val (has_type ty (icmp (IntCC.UnsignedGreaterThan) x y)))
|
|
3600
|
+
(bool (vec_cmphls ty x y)
|
|
3601
|
+
(floatcc_as_cond (FloatCC.Equal))))
|
|
3602
|
+
(rule (vall_true_val (has_type ty (icmp (IntCC.UnsignedLessThanOrEqual) x y)))
|
|
3603
|
+
(bool (vec_cmphls ty x y)
|
|
3604
|
+
(floatcc_as_cond (FloatCC.Unordered))))
|
|
3605
|
+
(rule (vall_true_val (has_type ty (icmp (IntCC.UnsignedLessThan) x y)))
|
|
3606
|
+
(bool (vec_cmphls ty y x)
|
|
3607
|
+
(floatcc_as_cond (FloatCC.Equal))))
|
|
3608
|
+
(rule (vall_true_val (has_type ty (icmp (IntCC.UnsignedGreaterThanOrEqual) x y)))
|
|
3609
|
+
(bool (vec_cmphls ty y x)
|
|
3610
|
+
(floatcc_as_cond (FloatCC.Unordered))))
|
|
3611
|
+
|
|
3612
|
+
;; Short-circuit `vall_true` on the result of a `fcmp` where possible.
|
|
3613
|
+
(rule (vall_true_val (has_type ty (fcmp (FloatCC.Equal) x y)))
|
|
3614
|
+
(bool (vec_fcmpeqs ty x y)
|
|
3615
|
+
(floatcc_as_cond (FloatCC.Equal))))
|
|
3616
|
+
(rule (vall_true_val (has_type ty (fcmp (FloatCC.NotEqual) x y)))
|
|
3617
|
+
(bool (vec_fcmpeqs ty x y)
|
|
3618
|
+
(floatcc_as_cond (FloatCC.Unordered))))
|
|
3619
|
+
(rule (vall_true_val (has_type ty (fcmp (FloatCC.GreaterThan) x y)))
|
|
3620
|
+
(bool (vec_fcmphs ty x y)
|
|
3621
|
+
(floatcc_as_cond (FloatCC.Equal))))
|
|
3622
|
+
(rule (vall_true_val (has_type ty (fcmp (FloatCC.UnorderedOrLessThanOrEqual) x y)))
|
|
3623
|
+
(bool (vec_fcmphs ty x y)
|
|
3624
|
+
(floatcc_as_cond (FloatCC.Unordered))))
|
|
3625
|
+
(rule (vall_true_val (has_type ty (fcmp (FloatCC.GreaterThanOrEqual) x y)))
|
|
3626
|
+
(bool (vec_fcmphes ty x y)
|
|
3627
|
+
(floatcc_as_cond (FloatCC.Equal))))
|
|
3628
|
+
(rule (vall_true_val (has_type ty (fcmp (FloatCC.UnorderedOrLessThan) x y)))
|
|
3629
|
+
(bool (vec_fcmphes ty x y)
|
|
3630
|
+
(floatcc_as_cond (FloatCC.Unordered))))
|
|
3631
|
+
(rule (vall_true_val (has_type ty (fcmp (FloatCC.LessThan) x y)))
|
|
3632
|
+
(bool (vec_fcmphs ty y x)
|
|
3633
|
+
(floatcc_as_cond (FloatCC.Equal))))
|
|
3634
|
+
(rule (vall_true_val (has_type ty (fcmp (FloatCC.UnorderedOrGreaterThanOrEqual) x y)))
|
|
3635
|
+
(bool (vec_fcmphs ty y x)
|
|
3636
|
+
(floatcc_as_cond (FloatCC.Unordered))))
|
|
3637
|
+
(rule (vall_true_val (has_type ty (fcmp (FloatCC.LessThanOrEqual) x y)))
|
|
3638
|
+
(bool (vec_fcmphes ty y x)
|
|
3639
|
+
(floatcc_as_cond (FloatCC.Equal))))
|
|
3640
|
+
(rule (vall_true_val (has_type ty (fcmp (FloatCC.UnorderedOrGreaterThan) x y)))
|
|
3641
|
+
(bool (vec_fcmphes ty y x)
|
|
3642
|
+
(floatcc_as_cond (FloatCC.Unordered))))
|
|
3643
|
+
|
|
3644
|
+
|
|
3645
|
+
;;;; Rules for `vany_true` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
3646
|
+
|
|
3647
|
+
;; Main `vany_true` entry point. Generate a `ProducesBool` capturing the
|
|
3648
|
+
;; comparison and immediately lower it to a 0/1 integer result.
|
|
3649
|
+
(rule (lower (has_type (fits_in_64 ty) (vany_true x)))
|
|
3650
|
+
(lower_bool ty (vany_true_val x)))
|
|
3651
|
+
|
|
3652
|
+
;; Return a `ProducesBool` to implement `vany_true`.
|
|
3653
|
+
(decl vany_true_val (Value) ProducesBool)
|
|
3654
|
+
(rule -1 (vany_true_val x @ (value_type ty))
|
|
3655
|
+
(bool (vec_cmpeqs ty x (vec_imm ty 0))
|
|
3656
|
+
(floatcc_as_cond (FloatCC.NotEqual))))
|
|
3657
|
+
|
|
3658
|
+
;; Short-circuit `vany_true` on the result of a `icmp`.
|
|
3659
|
+
(rule (vany_true_val (has_type ty (icmp (IntCC.Equal) x y)))
|
|
3660
|
+
(bool (vec_cmpeqs ty x y)
|
|
3661
|
+
(floatcc_as_cond (FloatCC.Ordered))))
|
|
3662
|
+
(rule (vany_true_val (has_type ty (icmp (IntCC.NotEqual) x y)))
|
|
3663
|
+
(bool (vec_cmpeqs ty x y)
|
|
3664
|
+
(floatcc_as_cond (FloatCC.NotEqual))))
|
|
3665
|
+
(rule (vany_true_val (has_type ty (icmp (IntCC.SignedGreaterThan) x y)))
|
|
3666
|
+
(bool (vec_cmphs ty x y)
|
|
3667
|
+
(floatcc_as_cond (FloatCC.Ordered))))
|
|
3668
|
+
(rule (vany_true_val (has_type ty (icmp (IntCC.SignedLessThanOrEqual) x y)))
|
|
3669
|
+
(bool (vec_cmphs ty x y)
|
|
3670
|
+
(floatcc_as_cond (FloatCC.NotEqual))))
|
|
3671
|
+
(rule (vany_true_val (has_type ty (icmp (IntCC.SignedLessThan) x y)))
|
|
3672
|
+
(bool (vec_cmphs ty y x)
|
|
3673
|
+
(floatcc_as_cond (FloatCC.Ordered))))
|
|
3674
|
+
(rule (vany_true_val (has_type ty (icmp (IntCC.SignedGreaterThanOrEqual) x y)))
|
|
3675
|
+
(bool (vec_cmphs ty y x)
|
|
3676
|
+
(floatcc_as_cond (FloatCC.NotEqual))))
|
|
3677
|
+
(rule (vany_true_val (has_type ty (icmp (IntCC.UnsignedGreaterThan) x y)))
|
|
3678
|
+
(bool (vec_cmphls ty x y)
|
|
3679
|
+
(floatcc_as_cond (FloatCC.Ordered))))
|
|
3680
|
+
(rule (vany_true_val (has_type ty (icmp (IntCC.UnsignedLessThanOrEqual) x y)))
|
|
3681
|
+
(bool (vec_cmphls ty x y)
|
|
3682
|
+
(floatcc_as_cond (FloatCC.NotEqual))))
|
|
3683
|
+
(rule (vany_true_val (has_type ty (icmp (IntCC.UnsignedLessThan) x y)))
|
|
3684
|
+
(bool (vec_cmphls ty y x)
|
|
3685
|
+
(floatcc_as_cond (FloatCC.Ordered))))
|
|
3686
|
+
(rule (vany_true_val (has_type ty (icmp (IntCC.UnsignedGreaterThanOrEqual) x y)))
|
|
3687
|
+
(bool (vec_cmphls ty y x)
|
|
3688
|
+
(floatcc_as_cond (FloatCC.NotEqual))))
|
|
3689
|
+
|
|
3690
|
+
;; Short-circuit `vany_true` on the result of a `fcmp` where possible.
|
|
3691
|
+
(rule (vany_true_val (has_type ty (fcmp (FloatCC.Equal) x y)))
|
|
3692
|
+
(bool (vec_fcmpeqs ty x y)
|
|
3693
|
+
(floatcc_as_cond (FloatCC.Ordered))))
|
|
3694
|
+
(rule (vany_true_val (has_type ty (fcmp (FloatCC.NotEqual) x y)))
|
|
3695
|
+
(bool (vec_fcmpeqs ty x y)
|
|
3696
|
+
(floatcc_as_cond (FloatCC.NotEqual))))
|
|
3697
|
+
(rule (vany_true_val (has_type ty (fcmp (FloatCC.GreaterThan) x y)))
|
|
3698
|
+
(bool (vec_fcmphs ty x y)
|
|
3699
|
+
(floatcc_as_cond (FloatCC.Ordered))))
|
|
3700
|
+
(rule (vany_true_val (has_type ty (fcmp (FloatCC.UnorderedOrLessThanOrEqual) x y)))
|
|
3701
|
+
(bool (vec_fcmphs ty x y)
|
|
3702
|
+
(floatcc_as_cond (FloatCC.NotEqual))))
|
|
3703
|
+
(rule (vany_true_val (has_type ty (fcmp (FloatCC.GreaterThanOrEqual) x y)))
|
|
3704
|
+
(bool (vec_fcmphes ty x y)
|
|
3705
|
+
(floatcc_as_cond (FloatCC.Ordered))))
|
|
3706
|
+
(rule (vany_true_val (has_type ty (fcmp (FloatCC.UnorderedOrLessThan) x y)))
|
|
3707
|
+
(bool (vec_fcmphes ty x y)
|
|
3708
|
+
(floatcc_as_cond (FloatCC.NotEqual))))
|
|
3709
|
+
(rule (vany_true_val (has_type ty (fcmp (FloatCC.LessThan) x y)))
|
|
3710
|
+
(bool (vec_fcmphs ty y x)
|
|
3711
|
+
(floatcc_as_cond (FloatCC.Ordered))))
|
|
3712
|
+
(rule (vany_true_val (has_type ty (fcmp (FloatCC.UnorderedOrGreaterThanOrEqual) x y)))
|
|
3713
|
+
(bool (vec_fcmphs ty y x)
|
|
3714
|
+
(floatcc_as_cond (FloatCC.NotEqual))))
|
|
3715
|
+
(rule (vany_true_val (has_type ty (fcmp (FloatCC.LessThanOrEqual) x y)))
|
|
3716
|
+
(bool (vec_fcmphes ty y x)
|
|
3717
|
+
(floatcc_as_cond (FloatCC.Ordered))))
|
|
3718
|
+
(rule (vany_true_val (has_type ty (fcmp (FloatCC.UnorderedOrGreaterThan) x y)))
|
|
3719
|
+
(bool (vec_fcmphes ty y x)
|
|
3720
|
+
(floatcc_as_cond (FloatCC.NotEqual))))
|
|
3721
|
+
|
|
3722
|
+
|
|
3723
|
+
;;;; Rules for `vhigh_bits` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
3724
|
+
|
|
3725
|
+
(rule (lower (vhigh_bits x @ (value_type (multi_lane 8 16))))
|
|
3726
|
+
(if-let (LaneOrder.LittleEndian) (lane_order))
|
|
3727
|
+
(let ((mask Reg (vec_imm $I8X16 (imm8x16 0 8 16 24 32 40 48 56
|
|
3728
|
+
64 72 80 88 96 104 112 120))))
|
|
3729
|
+
(vec_extract_lane $I64X2 (vec_bitpermute x mask) 0 (zero_reg))))
|
|
3730
|
+
(rule 1 (lower (vhigh_bits x @ (value_type (multi_lane 8 16))))
|
|
3731
|
+
(if-let (LaneOrder.BigEndian) (lane_order))
|
|
3732
|
+
(let ((mask Reg (vec_imm $I8X16 (imm8x16 120 112 104 96 88 80 72 64
|
|
3733
|
+
56 48 40 32 24 16 8 0))))
|
|
3734
|
+
(vec_extract_lane $I64X2 (vec_bitpermute x mask) 0 (zero_reg))))
|
|
3735
|
+
|
|
3736
|
+
(rule (lower (vhigh_bits x @ (value_type (multi_lane 16 8))))
|
|
3737
|
+
(if-let (LaneOrder.LittleEndian) (lane_order))
|
|
3738
|
+
(let ((mask Reg (vec_imm $I8X16 (imm8x16 128 128 128 128 128 128 128 128
|
|
3739
|
+
0 16 32 48 64 80 96 112))))
|
|
3740
|
+
(vec_extract_lane $I64X2 (vec_bitpermute x mask) 0 (zero_reg))))
|
|
3741
|
+
(rule 1 (lower (vhigh_bits x @ (value_type (multi_lane 16 8))))
|
|
3742
|
+
(if-let (LaneOrder.BigEndian) (lane_order))
|
|
3743
|
+
(let ((mask Reg (vec_imm $I8X16 (imm8x16 128 128 128 128 128 128 128 128
|
|
3744
|
+
112 96 80 64 48 32 16 0))))
|
|
3745
|
+
(vec_extract_lane $I64X2 (vec_bitpermute x mask) 0 (zero_reg))))
|
|
3746
|
+
|
|
3747
|
+
(rule (lower (vhigh_bits x @ (value_type (multi_lane 32 4))))
|
|
3748
|
+
(if-let (LaneOrder.LittleEndian) (lane_order))
|
|
3749
|
+
(let ((mask Reg (vec_imm $I8X16 (imm8x16 128 128 128 128 128 128 128 128
|
|
3750
|
+
128 128 128 128 0 32 64 96))))
|
|
3751
|
+
(vec_extract_lane $I64X2 (vec_bitpermute x mask) 0 (zero_reg))))
|
|
3752
|
+
(rule 1 (lower (vhigh_bits x @ (value_type (multi_lane 32 4))))
|
|
3753
|
+
(if-let (LaneOrder.BigEndian) (lane_order))
|
|
3754
|
+
(let ((mask Reg (vec_imm $I8X16 (imm8x16 128 128 128 128 128 128 128 128
|
|
3755
|
+
128 128 128 128 96 64 32 0))))
|
|
3756
|
+
(vec_extract_lane $I64X2 (vec_bitpermute x mask) 0 (zero_reg))))
|
|
3757
|
+
|
|
3758
|
+
(rule (lower (vhigh_bits x @ (value_type (multi_lane 64 2))))
|
|
3759
|
+
(if-let (LaneOrder.LittleEndian) (lane_order))
|
|
3760
|
+
(let ((mask Reg (vec_imm $I8X16 (imm8x16 128 128 128 128 128 128 128 128
|
|
3761
|
+
128 128 128 128 128 128 0 64))))
|
|
3762
|
+
(vec_extract_lane $I64X2 (vec_bitpermute x mask) 0 (zero_reg))))
|
|
3763
|
+
(rule 1 (lower (vhigh_bits x @ (value_type (multi_lane 64 2))))
|
|
3764
|
+
(if-let (LaneOrder.BigEndian) (lane_order))
|
|
3765
|
+
(let ((mask Reg (vec_imm $I8X16 (imm8x16 128 128 128 128 128 128 128 128
|
|
3766
|
+
128 128 128 128 128 128 64 0))))
|
|
3767
|
+
(vec_extract_lane $I64X2 (vec_bitpermute x mask) 0 (zero_reg))))
|
|
3768
|
+
|
|
3769
|
+
|
|
3770
|
+
;;;; Rules for `select` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
3771
|
+
|
|
3772
|
+
;; Return a `ProducesBool` to capture the fact that the input value is nonzero.
|
|
3773
|
+
;; In the common case where that input is the result of an `icmp` or `fcmp`
|
|
3774
|
+
;; instruction, directly use that compare. Note that it is not safe to sink
|
|
3775
|
+
;; memory loads here, see the `icmp` comment.
|
|
3776
|
+
(decl value_nonzero (Value) ProducesBool)
|
|
3777
|
+
(rule (value_nonzero (icmp int_cc x y)) (icmp_val false int_cc x y))
|
|
3778
|
+
(rule (value_nonzero (fcmp float_cc x y)) (fcmp_val float_cc x y))
|
|
3779
|
+
(rule -1 (value_nonzero val @ (value_type (gpr32_ty ty)))
|
|
3780
|
+
(bool (icmps_simm16 $I32 (put_in_reg_sext32 val) 0)
|
|
3781
|
+
(intcc_as_cond (IntCC.NotEqual))))
|
|
3782
|
+
(rule -2 (value_nonzero val @ (value_type (gpr64_ty ty)))
|
|
3783
|
+
(bool (icmps_simm16 $I64 (put_in_reg val) 0)
|
|
3784
|
+
(intcc_as_cond (IntCC.NotEqual))))
|
|
3785
|
+
(rule -3 (value_nonzero val @ (value_type (vr128_ty ty)))
|
|
3786
|
+
(bool (vec_cmpeqs $I64X2 val (vec_imm $I64X2 0))
|
|
3787
|
+
(floatcc_as_cond (FloatCC.NotEqual))))
|
|
3788
|
+
|
|
3789
|
+
;; Main `select` entry point. Lower the `value_nonzero` result.
|
|
3790
|
+
(rule (lower (has_type ty (select val_cond val_true val_false)))
|
|
3791
|
+
(select_bool_reg ty (value_nonzero val_cond)
|
|
3792
|
+
(put_in_reg val_true) (put_in_reg val_false)))
|
|
3793
|
+
|
|
3794
|
+
;; Special-case some float-selection instructions for min/max
|
|
3795
|
+
(rule 1 (lower (has_type (ty_scalar_float ty) (select (maybe_uextend (fcmp (FloatCC.LessThan) x y)) x y)))
|
|
3796
|
+
(fmin_pseudo_reg ty y x))
|
|
3797
|
+
(rule 2 (lower (has_type (ty_scalar_float ty) (select (maybe_uextend (fcmp (FloatCC.LessThan) y x)) x y)))
|
|
3798
|
+
(fmax_pseudo_reg ty y x))
|
|
3799
|
+
|
|
3800
|
+
|
|
3801
|
+
;;;; Rules for `select_spectre_guard` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
3802
|
+
|
|
3803
|
+
;; We need to guarantee a conditional move instruction. But on this platform
|
|
3804
|
+
;; this is already the best way to implement select in general, so the
|
|
3805
|
+
;; implementation of `select_spectre_guard` is identical to `select`.
|
|
3806
|
+
(rule (lower (has_type ty (select_spectre_guard
|
|
3807
|
+
val_cond val_true val_false)))
|
|
3808
|
+
(select_bool_reg ty (value_nonzero val_cond)
|
|
3809
|
+
(put_in_reg val_true) (put_in_reg val_false)))
|
|
3810
|
+
|
|
3811
|
+
|
|
3812
|
+
;;;; Rules for `jump` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
3813
|
+
|
|
3814
|
+
;; Unconditional branch. The target is found as first (and only) element in
|
|
3815
|
+
;; the list of the current block's branch targets passed as `targets`.
|
|
3816
|
+
(rule (lower_branch (jump _) (single_target label))
|
|
3817
|
+
(emit_side_effect (jump_impl label)))
|
|
3818
|
+
|
|
3819
|
+
|
|
3820
|
+
;;;; Rules for `br_table` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
3821
|
+
|
|
3822
|
+
;; Jump table. `targets` contains the default target followed by the
|
|
3823
|
+
;; list of branch targets per index value.
|
|
3824
|
+
(rule (lower_branch (br_table val_idx _) (jump_table_targets default targets))
|
|
3825
|
+
(let ((idx Reg (put_in_reg_zext64 val_idx))
|
|
3826
|
+
;; Bounds-check the index and create a ProducesBool that
|
|
3827
|
+
;; denotes the "default target" condition.
|
|
3828
|
+
(cond ProducesBool
|
|
3829
|
+
(bool (icmpu_uimm32 $I64 idx (jump_table_size targets))
|
|
3830
|
+
(intcc_as_cond (IntCC.UnsignedGreaterThanOrEqual)))))
|
|
3831
|
+
;; Scale the index by the element size, and then emit the
|
|
3832
|
+
;; compound instruction that does:
|
|
3833
|
+
;;
|
|
3834
|
+
;; [cond branch to default]
|
|
3835
|
+
;; larl %r1, <jt-base>
|
|
3836
|
+
;; agf %r1, 0(%r1, %rScaledIndex)
|
|
3837
|
+
;; br %r1
|
|
3838
|
+
;; [jt entries]
|
|
3839
|
+
;;
|
|
3840
|
+
;; This must be *one* instruction in the vcode because
|
|
3841
|
+
;; we cannot allow regalloc to insert any spills/fills
|
|
3842
|
+
;; in the middle of the sequence; otherwise, the LARL's
|
|
3843
|
+
;; PC-rel offset to the jumptable would be incorrect.
|
|
3844
|
+
;; (The alternative is to introduce a relocation pass
|
|
3845
|
+
;; for inlined jumptables, which is much worse, IMHO.)
|
|
3846
|
+
(let ((shifted_idx Reg (lshl_imm $I64 idx 2)))
|
|
3847
|
+
(emit_side_effect (jt_sequence_default_bool shifted_idx default cond targets)))))
|
|
3848
|
+
|
|
3849
|
+
|
|
3850
|
+
;;;; Rules for `brif` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
3851
|
+
|
|
3852
|
+
;; Two-way conditional branch on nonzero. `targets` contains:
|
|
3853
|
+
;; - element 0: target if the condition is true (i.e. value is nonzero)
|
|
3854
|
+
;; - element 1: target if the condition is false (i.e. value is zero)
|
|
3855
|
+
(rule (lower_branch (brif val_cond _ _) (two_targets then else))
|
|
3856
|
+
(emit_side_effect (cond_br_bool (value_nonzero val_cond) then else)))
|
|
3857
|
+
|
|
3858
|
+
|
|
3859
|
+
;;;; Rules for `trap` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
3860
|
+
|
|
3861
|
+
(rule (lower (trap trap_code))
|
|
3862
|
+
(side_effect (trap_impl trap_code)))
|
|
3863
|
+
|
|
3864
|
+
|
|
3865
|
+
;;;; Rules for `trapz` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
3866
|
+
|
|
3867
|
+
(rule (lower (trapz val trap_code))
|
|
3868
|
+
(side_effect (trap_if_bool (invert_bool (value_nonzero val)) trap_code)))
|
|
3869
|
+
|
|
3870
|
+
|
|
3871
|
+
;;;; Rules for `trapnz` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
3872
|
+
|
|
3873
|
+
(rule (lower (trapnz val trap_code))
|
|
3874
|
+
(side_effect (trap_if_bool (value_nonzero val) trap_code)))
|
|
3875
|
+
|
|
3876
|
+
|
|
3877
|
+
;;;; Rules for `debugtrap` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
3878
|
+
|
|
3879
|
+
(rule (lower (debugtrap))
|
|
3880
|
+
(side_effect (debugtrap_impl)))
|
|
3881
|
+
|
|
3882
|
+
;;;; Rules for `uadd_overflow_trap` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
3883
|
+
|
|
3884
|
+
;; UaddOverflowTrap is implemented via a ADD LOGICAL instruction, which sets the
|
|
3885
|
+
;; the condition code as follows:
|
|
3886
|
+
;; 0 Result zero; no carry
|
|
3887
|
+
;; 1 Result not zero; no carry
|
|
3888
|
+
;; 2 Result zero; carry
|
|
3889
|
+
;; 3 Result not zero; carry
|
|
3890
|
+
;; This means "carry" corresponds to condition code 2 or 3, i.e.
|
|
3891
|
+
;; a condition mask of 2 | 1.
|
|
3892
|
+
;;
|
|
3893
|
+
;; As this does not match any of the encodings used with a normal integer
|
|
3894
|
+
;; comparison, this cannot be represented by any IntCC value. We need to
|
|
3895
|
+
;; remap the IntCC::UnsignedGreaterThan value that we have here as result
|
|
3896
|
+
;; of the unsigned_add_overflow_condition call to the correct mask.
|
|
3897
|
+
|
|
3898
|
+
(rule 0 (lower (has_type (fits_in_64 ty) (uadd_overflow_trap x y tc)))
|
|
3899
|
+
(with_flags
|
|
3900
|
+
(add_logical_reg_with_flags_paired ty x y)
|
|
3901
|
+
(trap_if_impl (mask_as_cond 3) tc)))
|
|
3902
|
+
|
|
3903
|
+
;; Add a register an a zero-extended register.
|
|
3904
|
+
(rule 4 (lower (has_type (fits_in_64 ty)
|
|
3905
|
+
(uadd_overflow_trap x (zext32_value y) tc)))
|
|
3906
|
+
(with_flags
|
|
3907
|
+
(add_logical_reg_zext32_with_flags_paired ty x y)
|
|
3908
|
+
(trap_if_impl (mask_as_cond 3) tc)))
|
|
3909
|
+
(rule 8 (lower (has_type (fits_in_64 ty)
|
|
3910
|
+
(uadd_overflow_trap (zext32_value x) y tc)))
|
|
3911
|
+
(with_flags
|
|
3912
|
+
(add_logical_reg_zext32_with_flags_paired ty y x)
|
|
3913
|
+
(trap_if_impl (mask_as_cond 3) tc)))
|
|
3914
|
+
|
|
3915
|
+
;; Add a register and an immediate
|
|
3916
|
+
(rule 3 (lower (has_type (fits_in_64 ty)
|
|
3917
|
+
(uadd_overflow_trap x (u32_from_value y) tc)))
|
|
3918
|
+
(with_flags
|
|
3919
|
+
(add_logical_zimm32_with_flags_paired ty x y)
|
|
3920
|
+
(trap_if_impl (mask_as_cond 3) tc)))
|
|
3921
|
+
(rule 7 (lower (has_type (fits_in_64 ty)
|
|
3922
|
+
(uadd_overflow_trap (u32_from_value x) y tc)))
|
|
3923
|
+
(with_flags
|
|
3924
|
+
(add_logical_zimm32_with_flags_paired ty y x)
|
|
3925
|
+
(trap_if_impl (mask_as_cond 3) tc)))
|
|
3926
|
+
|
|
3927
|
+
;; Add a register and memory (32/64-bit types).
|
|
3928
|
+
(rule 2 (lower (has_type (fits_in_64 ty)
|
|
3929
|
+
(uadd_overflow_trap x (sinkable_load_32_64 y) tc)))
|
|
3930
|
+
(with_flags
|
|
3931
|
+
(add_logical_mem_with_flags_paired ty x (sink_load y))
|
|
3932
|
+
(trap_if_impl (mask_as_cond 3) tc)))
|
|
3933
|
+
(rule 6 (lower (has_type (fits_in_64 ty)
|
|
3934
|
+
(uadd_overflow_trap (sinkable_load_32_64 x) y tc)))
|
|
3935
|
+
(with_flags
|
|
3936
|
+
(add_logical_mem_with_flags_paired ty y (sink_load x))
|
|
3937
|
+
(trap_if_impl (mask_as_cond 3) tc)))
|
|
3938
|
+
|
|
3939
|
+
;; Add a register and zero-extended memory.
|
|
3940
|
+
(rule 1 (lower (has_type (fits_in_64 ty)
|
|
3941
|
+
(uadd_overflow_trap x (sinkable_uload32 y) tc)))
|
|
3942
|
+
(with_flags
|
|
3943
|
+
(add_logical_mem_zext32_with_flags_paired ty x (sink_uload32 y))
|
|
3944
|
+
(trap_if_impl (mask_as_cond 3) tc)))
|
|
3945
|
+
(rule 5 (lower (has_type (fits_in_64 ty)
|
|
3946
|
+
(uadd_overflow_trap (sinkable_uload32 x) y tc)))
|
|
3947
|
+
(with_flags
|
|
3948
|
+
(add_logical_mem_zext32_with_flags_paired ty y (sink_uload32 x))
|
|
3949
|
+
(trap_if_impl (mask_as_cond 3) tc)))
|
|
3950
|
+
|
|
3951
|
+
;;;; Rules for `return` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
3952
|
+
|
|
3953
|
+
(rule (lower (return args))
|
|
3954
|
+
(lower_return args))
|
|
3955
|
+
|
|
3956
|
+
|
|
3957
|
+
;;;; Rules for `call` and `call_indirect` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
3958
|
+
|
|
3959
|
+
;; Direct call to an in-range function.
|
|
3960
|
+
(rule 1 (lower (call (func_ref_data sig_ref name (RelocDistance.Near)) args))
|
|
3961
|
+
(let ((output ValueRegsVec (gen_call_output sig_ref))
|
|
3962
|
+
(abi Sig (abi_sig sig_ref))
|
|
3963
|
+
(_ Unit (abi_emit_call_adjust_stack abi))
|
|
3964
|
+
(uses CallArgList (gen_call_args abi (abi_prepare_args abi args)))
|
|
3965
|
+
(defs CallRetList (gen_call_rets abi output))
|
|
3966
|
+
(info BoxCallInfo (gen_call_info abi name uses defs (try_call_none)))
|
|
3967
|
+
(_ Unit (emit_side_effect (call_impl (writable_link_reg) info))))
|
|
3968
|
+
output))
|
|
3969
|
+
|
|
3970
|
+
;; Direct call to an out-of-range function (implicitly via pointer).
|
|
3971
|
+
(rule (lower (call (func_ref_data sig_ref name _) args))
|
|
3972
|
+
(let ((output ValueRegsVec (gen_call_output sig_ref))
|
|
3973
|
+
(abi Sig (abi_sig sig_ref))
|
|
3974
|
+
(_ Unit (abi_emit_call_adjust_stack abi))
|
|
3975
|
+
(uses CallArgList (gen_call_args abi (abi_prepare_args abi args)))
|
|
3976
|
+
(defs CallRetList (gen_call_rets abi output))
|
|
3977
|
+
(target Reg (load_symbol_reloc (SymbolReloc.Absolute name 0)))
|
|
3978
|
+
(info BoxCallInfo (gen_call_info abi target uses defs (try_call_none)))
|
|
3979
|
+
(_ Unit (emit_side_effect (call_impl (writable_link_reg) info))))
|
|
3980
|
+
output))
|
|
3981
|
+
|
|
3982
|
+
;; Indirect call.
|
|
3983
|
+
(rule (lower (call_indirect sig_ref ptr args))
|
|
3984
|
+
(let ((output ValueRegsVec (gen_call_output sig_ref))
|
|
3985
|
+
(abi Sig (abi_sig sig_ref))
|
|
3986
|
+
(target Reg (put_in_reg ptr))
|
|
3987
|
+
(_ Unit (abi_emit_call_adjust_stack abi))
|
|
3988
|
+
(uses CallArgList (gen_call_args abi (abi_prepare_args abi args)))
|
|
3989
|
+
(defs CallRetList (gen_call_rets abi output))
|
|
3990
|
+
(info BoxCallInfo (gen_call_info abi target uses defs (try_call_none)))
|
|
3991
|
+
(_ Unit (emit_side_effect (call_impl (writable_link_reg) info))))
|
|
3992
|
+
output))
|
|
3993
|
+
|
|
3994
|
+
|
|
3995
|
+
;;;; Rules for `return_call` and `return_call_indirect` ;;;;;;;;;;;;;;;;;;;;;;;;
|
|
3996
|
+
|
|
3997
|
+
;; Direct tail call to an in-range function.
|
|
3998
|
+
(rule 1 (lower (return_call (func_ref_data sig_ref name (RelocDistance.Near)) args))
|
|
3999
|
+
(let ((abi Sig (abi_sig sig_ref))
|
|
4000
|
+
(_ Unit (abi_emit_return_call_adjust_stack abi))
|
|
4001
|
+
(uses CallArgList (gen_return_call_args abi (abi_prepare_args abi args)))
|
|
4002
|
+
(info BoxReturnCallInfo (gen_return_call_info abi name uses)))
|
|
4003
|
+
(side_effect (return_call_impl info))))
|
|
4004
|
+
|
|
4005
|
+
;; Direct tail call to an out-of-range function (implicitly via pointer).
|
|
4006
|
+
(rule (lower (return_call (func_ref_data sig_ref name _) args))
|
|
4007
|
+
(let ((abi Sig (abi_sig sig_ref))
|
|
4008
|
+
(_ Unit (abi_emit_return_call_adjust_stack abi))
|
|
4009
|
+
(uses CallArgList (gen_return_call_args abi (abi_prepare_args abi args)))
|
|
4010
|
+
(target Reg (load_symbol_reloc (SymbolReloc.Absolute name 0)))
|
|
4011
|
+
(info BoxReturnCallInfo (gen_return_call_info abi target uses)))
|
|
4012
|
+
(side_effect (return_call_impl info))))
|
|
4013
|
+
|
|
4014
|
+
;; Indirect tail call.
|
|
4015
|
+
(rule (lower (return_call_indirect sig_ref ptr args))
|
|
4016
|
+
(let ((abi Sig (abi_sig sig_ref))
|
|
4017
|
+
(target Reg (put_in_reg ptr))
|
|
4018
|
+
(_ Unit (abi_emit_return_call_adjust_stack abi))
|
|
4019
|
+
(uses CallArgList (gen_return_call_args abi (abi_prepare_args abi args)))
|
|
4020
|
+
(info BoxReturnCallInfo (gen_return_call_info abi target uses)))
|
|
4021
|
+
(side_effect (return_call_impl info))))
|
|
4022
|
+
|
|
4023
|
+
|
|
4024
|
+
;;;; Rules for `try_call` and `try_call_indirect` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
4025
|
+
|
|
4026
|
+
;; Direct call to an in-range function.
|
|
4027
|
+
(rule 1 (lower_branch (try_call (func_ref_data sig_ref name (RelocDistance.Near)) args et) targets)
|
|
4028
|
+
(let ((abi Sig (abi_sig sig_ref))
|
|
4029
|
+
(trycall OptionTryCallInfo (try_call_info et targets))
|
|
4030
|
+
(_ Unit (abi_emit_call_adjust_stack abi))
|
|
4031
|
+
(uses CallArgList (gen_call_args abi (abi_prepare_args abi args)))
|
|
4032
|
+
(defs CallRetList (gen_try_call_rets abi))
|
|
4033
|
+
(info BoxCallInfo (gen_call_info abi name uses defs trycall)))
|
|
4034
|
+
(emit_side_effect (call_impl (writable_link_reg) info))))
|
|
4035
|
+
|
|
4036
|
+
;; Direct call to an out-of-range function (implicitly via pointer).
|
|
4037
|
+
(rule (lower_branch (try_call (func_ref_data sig_ref name _) args et) targets)
|
|
4038
|
+
(let ((abi Sig (abi_sig sig_ref))
|
|
4039
|
+
(trycall OptionTryCallInfo (try_call_info et targets))
|
|
4040
|
+
(_ Unit (abi_emit_call_adjust_stack abi))
|
|
4041
|
+
(uses CallArgList (gen_call_args abi (abi_prepare_args abi args)))
|
|
4042
|
+
(defs CallRetList (gen_try_call_rets abi))
|
|
4043
|
+
(target Reg (load_symbol_reloc (SymbolReloc.Absolute name 0)))
|
|
4044
|
+
(info BoxCallInfo (gen_call_info abi target uses defs trycall)))
|
|
4045
|
+
(emit_side_effect (call_impl (writable_link_reg) info))))
|
|
4046
|
+
|
|
4047
|
+
;; Indirect call.
|
|
4048
|
+
(rule (lower_branch (try_call_indirect ptr args et) targets)
|
|
4049
|
+
(if-let (exception_sig sig_ref) et)
|
|
4050
|
+
(let ((abi Sig (abi_sig sig_ref))
|
|
4051
|
+
(trycall OptionTryCallInfo (try_call_info et targets))
|
|
4052
|
+
(target Reg (put_in_reg ptr))
|
|
4053
|
+
(_ Unit (abi_emit_call_adjust_stack abi))
|
|
4054
|
+
(uses CallArgList (gen_call_args abi (abi_prepare_args abi args)))
|
|
4055
|
+
(defs CallRetList (gen_try_call_rets abi))
|
|
4056
|
+
(info BoxCallInfo (gen_call_info abi target uses defs trycall)))
|
|
4057
|
+
(emit_side_effect (call_impl (writable_link_reg) info))))
|
|
4058
|
+
|
|
4059
|
+
|
|
4060
|
+
;;;; Rules for `get_{frame,stack}_pointer` and `get_return_address` ;;;;;;;;;;;;
|
|
4061
|
+
|
|
4062
|
+
(rule (lower (get_stack_pointer))
|
|
4063
|
+
(sp))
|
|
4064
|
+
|
|
4065
|
+
(rule (lower (get_frame_pointer))
|
|
4066
|
+
(load64 (memarg_frame_pointer_offset)))
|
|
4067
|
+
|
|
4068
|
+
(rule (lower (get_return_address))
|
|
4069
|
+
(load64 (memarg_return_address_offset)))
|
|
4070
|
+
|
|
4071
|
+
;; Rules for `get_exception_handler_address` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
4072
|
+
|
|
4073
|
+
(rule (lower (get_exception_handler_address (u64_from_imm64 idx) block))
|
|
4074
|
+
(let ((succ_label MachLabel (block_exn_successor_label block idx)))
|
|
4075
|
+
(s390x_label_address succ_label)))
|