mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-18 09:40:25 +02:00
Add logand/immediate, ulogand/immediate primcalls
* libguile/jit.c (compile_ulogand_immediate, compile_ulogand_immediate_slow) * libguile/vm-engine.c (ulogand_immediate): New JIT and interpreter support for ulogand/immediate. * module/language/cps/guile-vm/lower-primcalls.scm (string-ref): (vtable-vtable?): (vtable-field-boxed?): Emit ulogand/immediate. * module/language/cps/guile-vm/reify-primitives.scm (reify-primitives): Remove logand/immediate. Only emit ulogand/immediate if the immediate is a u8. Refactor mul/immediate. * module/language/cps/specialize-numbers.scm (specialize-operations): Produce ulogand/immediate if the result is a u64. * module/language/cps/effects-analysis.scm: * module/language/cps/types.scm (logand/immediate): Add effect and type inference for logand/immediate, ulogand/immediate, * module/language/cps/utils.scm (primcall-raw-representations): ulogand/immediate makes a u64. * module/language/tree-il/compile-cps.scm (convert): Generate logand/immediate if possible. * module/language/cps/compile-bytecode.scm (compile-function): * module/system/vm/assembler.scm (system): Add ulogand/immediate emitter. * libguile/loader.h (SCM_OBJCODE_MINOR_VERSION): Bump.
This commit is contained in:
parent
5b0c261b04
commit
4d834bdc12
12 changed files with 101 additions and 34 deletions
|
@ -3489,7 +3489,22 @@ VM_NAME (scm_thread *thread)
|
|||
abort (); /* never reached */
|
||||
}
|
||||
|
||||
VM_DEFINE_OP (168, unused_168, NULL, NOP)
|
||||
/* ulogand/immediate dst:8 src:8 imm:8
|
||||
*
|
||||
* Place the bitwise AND of the u64 value SRC with the immediate IMM
|
||||
* into DST.
|
||||
*/
|
||||
VM_DEFINE_OP (168, ulogand_immediate, "ulogand/immediate", DOP1 (X8_S8_S8_C8))
|
||||
{
|
||||
uint8_t dst, src, imm;
|
||||
uint64_t x;
|
||||
|
||||
UNPACK_8_8_8 (op, dst, src, imm);
|
||||
x = SP_REF_U64 (src);
|
||||
SP_SET_U64 (dst, x & (uint64_t) imm);
|
||||
NEXT (1);
|
||||
}
|
||||
|
||||
VM_DEFINE_OP (169, unused_169, NULL, NOP)
|
||||
VM_DEFINE_OP (170, unused_170, NULL, NOP)
|
||||
VM_DEFINE_OP (171, unused_171, NULL, NOP)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue