aboutsummaryrefslogtreecommitdiffstats
path: root/src/comp.c
diff options
context:
space:
mode:
authorAndrea Corallo2019-06-13 21:18:25 +0200
committerAndrea Corallo2020-01-01 11:33:41 +0100
commit79dc3a717e23cf66d04cf3ec3392bd7635839bd0 (patch)
tree1ab013dc8133df4741c8909855ddf655461aa717 /src/comp.c
parent187c1eed6f5e21088c5b9b129c65b3e2fe512d1b (diff)
downloademacs-79dc3a717e23cf66d04cf3ec3392bd7635839bd0.tar.gz
emacs-79dc3a717e23cf66d04cf3ec3392bd7635839bd0.zip
XLP XLI l and r values
Diffstat (limited to 'src/comp.c')
-rw-r--r--src/comp.c44
1 files changed, 30 insertions, 14 deletions
diff --git a/src/comp.c b/src/comp.c
index 3f938e2c5d6..5ae4e1b0532 100644
--- a/src/comp.c
+++ b/src/comp.c
@@ -274,13 +274,37 @@ comp_cast (gcc_jit_type *new_type, gcc_jit_rvalue *obj)
274} 274}
275 275
276INLINE static gcc_jit_rvalue * 276INLINE static gcc_jit_rvalue *
277comp_XLI (gcc_jit_rvalue *obj) 277comp_rval_XLI (gcc_jit_rvalue *obj)
278{ 278{
279 return gcc_jit_rvalue_access_field (obj, 279 return gcc_jit_rvalue_access_field (obj,
280 NULL, 280 NULL,
281 comp.lisp_obj_as_num); 281 comp.lisp_obj_as_num);
282} 282}
283 283
284INLINE static gcc_jit_lvalue *
285comp_lval_XLI (gcc_jit_lvalue *obj)
286{
287 return gcc_jit_lvalue_access_field (obj,
288 NULL,
289 comp.lisp_obj_as_num);
290}
291
292INLINE static gcc_jit_rvalue *
293comp_rval_XLP (gcc_jit_rvalue *obj)
294{
295 return gcc_jit_rvalue_access_field (obj,
296 NULL,
297 comp.lisp_obj_as_ptr);
298}
299
300INLINE static gcc_jit_lvalue *
301comp_lval_XLP (gcc_jit_lvalue *obj)
302{
303 return gcc_jit_lvalue_access_field (obj,
304 NULL,
305 comp.lisp_obj_as_ptr);
306}
307
284static gcc_jit_rvalue * 308static gcc_jit_rvalue *
285comp_TAGGEDP (gcc_jit_rvalue *obj, unsigned tag) 309comp_TAGGEDP (gcc_jit_rvalue *obj, unsigned tag)
286{ 310{
@@ -294,7 +318,7 @@ comp_TAGGEDP (gcc_jit_rvalue *obj, unsigned tag)
294 NULL, 318 NULL,
295 GCC_JIT_BINARY_OP_RSHIFT, 319 GCC_JIT_BINARY_OP_RSHIFT,
296 comp.long_long_type, 320 comp.long_long_type,
297 comp_XLI (obj), 321 comp_rval_XLI (obj),
298 gcc_jit_context_new_rvalue_from_int (comp.ctxt, 322 gcc_jit_context_new_rvalue_from_int (comp.ctxt,
299 comp.long_long_type, 323 comp.long_long_type,
300 (USE_LSB_TAG ? 0 : VALBITS))); 324 (USE_LSB_TAG ? 0 : VALBITS)));
@@ -354,7 +378,7 @@ comp_FIXNUMP (gcc_jit_rvalue *obj)
354 NULL, 378 NULL,
355 GCC_JIT_BINARY_OP_RSHIFT, 379 GCC_JIT_BINARY_OP_RSHIFT,
356 comp.long_long_type, 380 comp.long_long_type,
357 comp_XLI (obj), 381 comp_rval_XLI (obj),
358 gcc_jit_context_new_rvalue_from_int (comp.ctxt, 382 gcc_jit_context_new_rvalue_from_int (comp.ctxt,
359 comp.long_long_type, 383 comp.long_long_type,
360 (USE_LSB_TAG ? 0 : FIXNUM_BITS))); 384 (USE_LSB_TAG ? 0 : FIXNUM_BITS)));
@@ -396,7 +420,7 @@ comp_XFIXNUM (gcc_jit_rvalue *obj)
396 NULL, 420 NULL,
397 GCC_JIT_BINARY_OP_RSHIFT, 421 GCC_JIT_BINARY_OP_RSHIFT,
398 comp.long_long_type, 422 comp.long_long_type,
399 comp_XLI (obj), 423 comp_rval_XLI (obj),
400 comp.inttypebits); 424 comp.inttypebits);
401} 425}
402 426
@@ -425,10 +449,7 @@ comp_make_fixnum (gcc_jit_block *block, gcc_jit_rvalue *obj)
425 449
426 gcc_jit_block_add_assignment (block, 450 gcc_jit_block_add_assignment (block,
427 NULL, 451 NULL,
428 gcc_jit_lvalue_access_field ( 452 comp_lval_XLI (res),
429 res,
430 NULL,
431 comp.lisp_obj_as_num),
432 tmp); 453 tmp);
433 454
434 return gcc_jit_lvalue_as_rvalue (res); 455 return gcc_jit_lvalue_as_rvalue (res);
@@ -451,11 +472,6 @@ comp_lisp_obj_from_ptr (basic_block_t *bblock, void *p)
451 NULL, 472 NULL,
452 comp.lisp_obj_type, 473 comp.lisp_obj_type,
453 ptr_var_name); 474 ptr_var_name);
454 gcc_jit_lvalue *lisp_obj_as_ptr =
455 gcc_jit_lvalue_access_field (lisp_obj,
456 NULL,
457 comp.lisp_obj_as_ptr);
458
459 gcc_jit_rvalue *void_ptr = 475 gcc_jit_rvalue *void_ptr =
460 gcc_jit_context_new_rvalue_from_ptr(comp.ctxt, 476 gcc_jit_context_new_rvalue_from_ptr(comp.ctxt,
461 comp.void_ptr_type, 477 comp.void_ptr_type,
@@ -463,7 +479,7 @@ comp_lisp_obj_from_ptr (basic_block_t *bblock, void *p)
463 479
464 gcc_jit_block_add_assignment (bblock->gcc_bb, 480 gcc_jit_block_add_assignment (bblock->gcc_bb,
465 NULL, 481 NULL,
466 lisp_obj_as_ptr, 482 comp_lval_XLP (lisp_obj),
467 void_ptr); 483 void_ptr);
468 return gcc_jit_lvalue_as_rvalue (lisp_obj); 484 return gcc_jit_lvalue_as_rvalue (lisp_obj);
469} 485}