14 d0 = XREG(PREG->y_u.xxx.x1);
16 deref_head(d0, plus_vv_unk);
18 d1 = XREG(PREG->y_u.xxx.x2);
20 deref_head(d1, plus_vv_nvar_unk);
23 if (IsIntTerm(d0) && IsIntTerm(d1)) {
24 d0 = MkIntegerTerm(IntOfTerm(d0) + IntOfTerm(d1));
27 d0 = p_plus(Yap_Eval(d0), Yap_Eval(d1) PASS_REGS);
30 XREG(PREG->y_u.xxx.x) = d0;
31 PREG = NEXTOP(PREG, xxx);
35 deref_body(d0, pt0, plus_vv_unk, plus_vv_nvar);
36 Yap_AsmError(INSTANTIATION_ERROR, d0);
41 deref_body(d1, pt0, plus_vv_nvar_unk, plus_vv_nvar_nvar);
42 Yap_AsmError(INSTANTIATION_ERROR, d1);
51 d0 = XREG(PREG->y_u.xxn.xi);
53 deref_head(d0, plus_vc_unk);
55 Int d1 = PREG->y_u.xxn.c;
57 d0 = MkIntegerTerm(IntOfTerm(d0) + d1);
60 d0 = p_plus(Yap_Eval(d0), MkIntegerTerm(d1) PASS_REGS);
64 XREG(PREG->y_u.xxn.x) = d0;
65 PREG = NEXTOP(PREG, xxn);
69 deref_body(d0, pt0, plus_vc_unk, plus_vc_nvar);
70 Yap_AsmError(INSTANTIATION_ERROR, d0);
79 d0 = XREG(PREG->y_u.yxx.x1);
81 deref_head(d0, plus_y_vv_unk);
83 d1 = XREG(PREG->y_u.xxx.x2);
85 deref_head(d1, plus_y_vv_nvar_unk);
88 if (IsIntTerm(d0) && IsIntTerm(d1)) {
89 d0 = MkIntegerTerm(IntOfTerm(d0) + IntOfTerm(d1));
92 d0 = p_plus(Yap_Eval(d0), Yap_Eval(d1) PASS_REGS);
96 pt0 = YREG + PREG->y_u.yxx.y;
97 PREG = NEXTOP(PREG, yxx);
98 INITIALIZE_PERMVAR(pt0, d0);
103 deref_body(d0, pt0, plus_y_vv_unk, plus_y_vv_nvar);
104 Yap_AsmError(INSTANTIATION_ERROR, d0);
109 deref_body(d1, pt0, plus_y_vv_nvar_unk, plus_y_vv_nvar_nvar);
110 Yap_AsmError(INSTANTIATION_ERROR, d1);
117 Op(p_plus_y_vc, yxn);
119 d0 = XREG(PREG->y_u.yxn.xi);
121 deref_head(d0, plus_y_vc_unk);
123 Int d1 = PREG->y_u.yxn.c;
125 d0 = MkIntegerTerm(IntOfTerm(d0) + d1);
128 d0 = p_plus(Yap_Eval(d0), MkIntegerTerm(d1) PASS_REGS);
133 pt0 = YREG + PREG->y_u.yxn.y;
134 PREG = NEXTOP(PREG, yxn);
135 INITIALIZE_PERMVAR(pt0, d0);
140 deref_body(d0, pt0, plus_y_vc_unk, plus_y_vc_nvar);
141 Yap_AsmError(INSTANTIATION_ERROR, d0);
150 d0 = XREG(PREG->y_u.xxx.x1);
152 deref_head(d0, minus_vv_unk);
154 d1 = XREG(PREG->y_u.xxx.x2);
156 deref_head(d1, minus_vv_nvar_unk);
159 if (IsIntTerm(d0) && IsIntTerm(d1)) {
160 d0 = MkIntegerTerm(IntOfTerm(d0) - IntOfTerm(d1));
163 d0 = p_minus(Yap_Eval(d0), Yap_Eval(d1) PASS_REGS);
166 XREG(PREG->y_u.xxx.x) = d0;
167 PREG = NEXTOP(PREG, xxx);
171 deref_body(d0, pt0, minus_vv_unk, minus_vv_nvar);
172 Yap_AsmError(INSTANTIATION_ERROR,d0);
177 deref_body(d1, pt0, minus_vv_nvar_unk, minus_vv_nvar_nvar);
178 Yap_AsmError(INSTANTIATION_ERROR, d0);
187 d0 = XREG(PREG->y_u.xxn.xi);
189 deref_head(d0, minus_cv_unk);
191 Int d1 = PREG->y_u.xxn.c;
193 d0 = MkIntegerTerm(d1 - IntOfTerm(d0));
196 d0 = p_minus(MkIntegerTerm(d1), Yap_Eval(d0) PASS_REGS);
200 XREG(PREG->y_u.xxn.x) = d0;
201 PREG = NEXTOP(PREG, xxn);
205 deref_body(d0, pt0, minus_cv_unk, minus_cv_nvar);
206 Yap_AsmError(INSTANTIATION_ERROR, d0);
212 Op(p_minus_y_vv, yxx);
215 d0 = XREG(PREG->y_u.yxx.x1);
217 deref_head(d0, minus_y_vv_unk);
219 d1 = XREG(PREG->y_u.xxx.x2);
221 deref_head(d1, minus_y_vv_nvar_unk);
222 minus_y_vv_nvar_nvar:
224 if (IsIntTerm(d0) && IsIntTerm(d1)) {
225 d0 = MkIntegerTerm(IntOfTerm(d0) - IntOfTerm(d1));
228 d0 = p_minus(Yap_Eval(d0), Yap_Eval(d1) PASS_REGS);
232 pt0 = YREG + PREG->y_u.yxx.y;
233 PREG = NEXTOP(PREG, yxx);
234 INITIALIZE_PERMVAR(pt0, d0);
239 deref_body(d0, pt0, minus_y_vv_unk, minus_y_vv_nvar);
240 Yap_AsmError(INSTANTIATION_ERROR, d0);
245 deref_body(d1, pt0, minus_y_vv_nvar_unk, minus_y_vv_nvar_nvar);
246 Yap_AsmError(INSTANTIATION_ERROR, d1);
253 Op(p_minus_y_cv, yxn);
255 d0 = XREG(PREG->y_u.yxn.xi);
257 deref_head(d0, minus_y_cv_unk);
259 Int d1 = PREG->y_u.yxn.c;
261 d0 = MkIntegerTerm(d1 - IntOfTerm(d0));
264 d0 = p_minus(MkIntegerTerm(d1), Yap_Eval(d0) PASS_REGS);
269 pt0 = YREG + PREG->y_u.yxn.y;
270 PREG = NEXTOP(PREG, yxn);
271 INITIALIZE_PERMVAR(pt0, d0);
276 deref_body(d0, pt0, minus_y_cv_unk, minus_y_cv_nvar);
277 Yap_AsmError(INSTANTIATION_ERROR,d0);
286 d0 = XREG(PREG->y_u.xxx.x1);
288 deref_head(d0, times_vv_unk);
290 d1 = XREG(PREG->y_u.xxx.x2);
292 deref_head(d1, times_vv_nvar_unk);
295 if (IsIntTerm(d0) && IsIntTerm(d1)) {
296 d0 = times_int(IntOfTerm(d0), IntOfTerm(d1) PASS_REGS);
299 d0 = p_times(Yap_Eval(d0), Yap_Eval(d1) PASS_REGS);
301 XREG(PREG->y_u.xxx.x) = d0;
302 PREG = NEXTOP(PREG, xxx);
306 deref_body(d0, pt0, times_vv_unk, times_vv_nvar);
307 Yap_AsmError(INSTANTIATION_ERROR,d0);
312 deref_body(d1, pt0, times_vv_nvar_unk, times_vv_nvar_nvar);
313 Yap_AsmError(INSTANTIATION_ERROR,d1);
322 d0 = XREG(PREG->y_u.xxn.xi);
324 deref_head(d0, times_vc_unk);
326 Int d1 = PREG->y_u.xxn.c;
328 d0 = times_int(IntOfTerm(d0), d1 PASS_REGS);
331 d0 = p_times(Yap_Eval(d0), MkIntegerTerm(d1) PASS_REGS);
335 XREG(PREG->y_u.xxn.x) = d0;
336 PREG = NEXTOP(PREG, xxn);
340 deref_body(d0, pt0, times_vc_unk, times_vc_nvar);
341 Yap_AsmError(INSTANTIATION_ERROR,d0);
347 Op(p_times_y_vv, yxx);
350 d0 = XREG(PREG->y_u.yxx.x1);
352 deref_head(d0, times_y_vv_unk);
354 d1 = XREG(PREG->y_u.xxx.x2);
356 deref_head(d1, times_y_vv_nvar_unk);
357 times_y_vv_nvar_nvar:
359 if (IsIntTerm(d0) && IsIntTerm(d1)) {
360 d0 = times_int(IntOfTerm(d0), IntOfTerm(d1) PASS_REGS);
363 d0 = p_times(Yap_Eval(d0), Yap_Eval(d1) PASS_REGS);
367 pt0 = YREG + PREG->y_u.yxx.y;
368 PREG = NEXTOP(PREG, yxx);
369 INITIALIZE_PERMVAR(pt0, d0);
374 deref_body(d0, pt0, times_y_vv_unk, times_y_vv_nvar);
375 Yap_AsmError(INSTANTIATION_ERROR,d0);
380 deref_body(d1, pt0, times_y_vv_nvar_unk, times_y_vv_nvar_nvar);
381 Yap_AsmError(INSTANTIATION_ERROR,d1);
388 Op(p_times_y_vc, yxn);
390 d0 = XREG(PREG->y_u.yxn.xi);
392 deref_head(d0, times_y_vc_unk);
394 Int d1 = PREG->y_u.yxn.c;
396 d0 = times_int(IntOfTerm(d0), d1 PASS_REGS);
399 d0 = p_times(Yap_Eval(d0), MkIntegerTerm(d1) PASS_REGS);
404 pt0 = YREG + PREG->y_u.yxn.y;
405 PREG = NEXTOP(PREG, yxn);
406 INITIALIZE_PERMVAR(pt0, d0);
411 deref_body(d0, pt0, times_y_vc_unk, times_y_vc_nvar);
412 Yap_AsmError(INSTANTIATION_ERROR,d0);
421 d0 = XREG(PREG->y_u.xxx.x1);
423 deref_head(d0, div_vv_unk);
425 d1 = XREG(PREG->y_u.xxx.x2);
427 deref_head(d1, div_vv_nvar_unk);
430 if (IsIntTerm(d0) && IsIntTerm(d1)) {
431 Int div = IntOfTerm(d1);
433 Yap_AsmError(EVALUATION_ERROR_ZERO_DIVISOR,d1);
435 d0 = MkIntTerm(IntOfTerm(d0) / div);
438 d0 = p_div(Yap_Eval(d0), Yap_Eval(d1) PASS_REGS);
441 XREG(PREG->y_u.xxx.x) = d0;
442 PREG = NEXTOP(PREG, xxx);
446 deref_body(d0, pt0, div_vv_unk, div_vv_nvar);
447 Yap_AsmError(INSTANTIATION_ERROR,d0);
452 deref_body(d1, pt0, div_vv_nvar_unk, div_vv_nvar_nvar);
453 Yap_AsmError(INSTANTIATION_ERROR,d1);
462 d0 = XREG(PREG->y_u.xxn.xi);
464 deref_head(d0, div_vc_unk);
466 Int d1 = PREG->y_u.xxn.c;
468 d0 = MkIntTerm(IntOfTerm(d0) / d1);
471 d0 = p_div(Yap_Eval(d0), MkIntegerTerm(d1) PASS_REGS);
475 XREG(PREG->y_u.xxn.x) = d0;
476 PREG = NEXTOP(PREG, xxn);
480 deref_body(d0, pt0, div_vc_unk, div_vc_nvar);
481 Yap_AsmError(INSTANTIATION_ERROR,d0);
489 d0 = XREG(PREG->y_u.xxn.xi);
491 deref_head(d0, div_cv_unk);
493 Int d1 = PREG->y_u.xxn.c;
495 Int div = IntOfTerm(d0);
497 Yap_AsmError(EVALUATION_ERROR_ZERO_DIVISOR,d0);
500 d0 = MkIntegerTerm(d1 / div);
503 d0 = p_div(MkIntegerTerm(d1), Yap_Eval(d0) PASS_REGS);
506 XREG(PREG->y_u.xxn.x) = d0;
507 PREG = NEXTOP(PREG, xxn);
511 deref_body(d0, pt0, div_cv_unk, div_cv_nvar);
512 Yap_AsmError(INSTANTIATION_ERROR,d0);
521 d0 = XREG(PREG->y_u.yxx.x1);
523 deref_head(d0, div_y_vv_unk);
525 d1 = XREG(PREG->y_u.xxx.x2);
527 deref_head(d1, div_y_vv_nvar_unk);
530 if (IsIntTerm(d0) && IsIntTerm(d1)) {
531 Int div = IntOfTerm(d1);
533 Yap_AsmError(EVALUATION_ERROR_ZERO_DIVISOR, d0);
536 d0 = MkIntTerm(IntOfTerm(d0) / div);
539 d0 = p_div(Yap_Eval(d0), Yap_Eval(d1) PASS_REGS);
543 pt0 = YREG + PREG->y_u.yxx.y;
544 PREG = NEXTOP(PREG, yxx);
545 INITIALIZE_PERMVAR(pt0, d0);
550 deref_body(d0, pt0, div_y_vv_unk, div_y_vv_nvar);
551 Yap_AsmError(INSTANTIATION_ERROR,d0);
556 deref_body(d1, pt0, div_y_vv_nvar_unk, div_y_vv_nvar_nvar);
557 Yap_AsmError(INSTANTIATION_ERROR,d1);
566 d0 = XREG(PREG->y_u.yxn.xi);
568 deref_head(d0, div_y_vc_unk);
570 Int d1 = PREG->y_u.yxn.c;
572 d0 = MkIntTerm(IntOfTerm(d0) / d1);
575 d0 = p_div(Yap_Eval(d0), MkIntegerTerm(d1) PASS_REGS);
580 pt0 = YREG + PREG->y_u.yxn.y;
581 PREG = NEXTOP(PREG, yxn);
582 INITIALIZE_PERMVAR(pt0, d0);
587 deref_body(d0, pt0, div_y_vc_unk, div_y_vc_nvar);
588 Yap_AsmError(INSTANTIATION_ERROR,d0);
596 d0 = XREG(PREG->y_u.yxn.xi);
598 deref_head(d0, div_y_cv_unk);
600 Int d1 = PREG->y_u.yxn.c;
602 Int div = IntOfTerm(d0);
604 Yap_AsmError(EVALUATION_ERROR_ZERO_DIVISOR,d0);
607 d0 = MkIntegerTerm(d1 / div);
610 d0 = p_div(MkIntegerTerm(d1), Yap_Eval(d0) PASS_REGS);
615 pt0 = YREG + PREG->y_u.yxn.y;
616 PREG = NEXTOP(PREG, yxn);
617 INITIALIZE_PERMVAR(pt0, d0);
622 deref_body(d0, pt0, div_y_cv_unk, div_y_cv_nvar);
623 Yap_AbsmiError(INSTANTIATION_ERROR);
632 d0 = XREG(PREG->y_u.xxx.x1);
634 deref_head(d0, and_vv_unk);
636 d1 = XREG(PREG->y_u.xxx.x2);
638 deref_head(d1, and_vv_nvar_unk);
641 if (IsIntTerm(d0) && IsIntTerm(d1)) {
642 d0 = MkIntegerTerm(IntOfTerm(d0) & IntOfTerm(d1));
645 d0 = p_and(Yap_Eval(d0), Yap_Eval(d1) PASS_REGS);
648 XREG(PREG->y_u.xxx.x) = d0;
649 PREG = NEXTOP(PREG, xxx);
653 deref_body(d0, pt0, and_vv_unk, and_vv_nvar);
654 Yap_AsmError(INSTANTIATION_ERROR,d0);
659 deref_body(d1, pt0, and_vv_nvar_unk, and_vv_nvar_nvar);
660 Yap_AsmError(INSTANTIATION_ERROR,d1);
669 d0 = XREG(PREG->y_u.xxn.xi);
671 deref_head(d0, and_vc_unk);
673 Int d1 = PREG->y_u.xxn.c;
675 d0 = MkIntegerTerm(IntOfTerm(d0) & d1);
678 d0 = p_and(Yap_Eval(d0), MkIntegerTerm(d1) PASS_REGS);
682 XREG(PREG->y_u.xxn.x) = d0;
683 PREG = NEXTOP(PREG, xxn);
687 deref_body(d0, pt0, and_vc_unk, and_vc_nvar);
688 Yap_AbsmiError(INSTANTIATION_ERROR);
697 d0 = XREG(PREG->y_u.yxx.x1);
699 deref_head(d0, and_y_vv_unk);
701 d1 = XREG(PREG->y_u.xxx.x2);
703 deref_head(d1, and_y_vv_nvar_unk);
706 if (IsIntTerm(d0) && IsIntTerm(d1)) {
707 d0 = MkIntegerTerm(IntOfTerm(d0) & IntOfTerm(d1));
710 d0 = p_and(Yap_Eval(d0), Yap_Eval(d1) PASS_REGS);
714 pt0 = YREG + PREG->y_u.yxx.y;
715 PREG = NEXTOP(PREG, yxx);
716 INITIALIZE_PERMVAR(pt0, d0);
721 deref_body(d0, pt0, and_y_vv_unk, and_y_vv_nvar);
722 Yap_AsmError(INSTANTIATION_ERROR,d0);
727 deref_body(d1, pt0, and_y_vv_nvar_unk, and_y_vv_nvar_nvar);
728 Yap_AsmError(INSTANTIATION_ERROR,d1);
737 d0 = XREG(PREG->y_u.yxn.xi);
739 deref_head(d0, and_y_vc_unk);
741 Int d1 = PREG->y_u.yxn.c;
743 d0 = MkIntegerTerm(IntOfTerm(d0) & d1);
746 d0 = p_and(Yap_Eval(d0), MkIntegerTerm(d1) PASS_REGS);
751 pt0 = YREG + PREG->y_u.yxn.y;
752 PREG = NEXTOP(PREG, yxn);
753 INITIALIZE_PERMVAR(pt0, d0);
758 deref_body(d0, pt0, and_y_vc_unk, and_y_vc_nvar);
759 Yap_AbsmiError(INSTANTIATION_ERROR);
768 d0 = XREG(PREG->y_u.xxx.x1);
770 deref_head(d0, or_vv_unk);
772 d1 = XREG(PREG->y_u.xxx.x2);
774 deref_head(d1, or_vv_nvar_unk);
777 if (IsIntTerm(d0) && IsIntTerm(d1)) {
778 d0 = MkIntegerTerm(IntOfTerm(d0) | IntOfTerm(d1));
781 d0 = p_or(Yap_Eval(d0), Yap_Eval(d1) PASS_REGS);
784 XREG(PREG->y_u.xxx.x) = d0;
785 PREG = NEXTOP(PREG, xxx);
789 deref_body(d0, pt0, or_vv_unk, or_vv_nvar);
790 Yap_AsmError(INSTANTIATION_ERROR,d0);
795 deref_body(d1, pt0, or_vv_nvar_unk, or_vv_nvar_nvar);
796 Yap_AsmError(INSTANTIATION_ERROR,d1);
805 d0 = XREG(PREG->y_u.xxn.xi);
807 deref_head(d0, or_vc_unk);
809 Int d1 = PREG->y_u.xxn.c;
811 d0 = MkIntegerTerm(IntOfTerm(d0) | d1);
814 d0 = p_or(Yap_Eval(d0), MkIntegerTerm(d1) PASS_REGS);
817 XREG(PREG->y_u.xxn.x) = d0;
818 PREG = NEXTOP(PREG, xxn);
822 deref_body(d0, pt0, or_vc_unk, or_vc_nvar);
823 Yap_AbsmiError(INSTANTIATION_ERROR);
832 d0 = XREG(PREG->y_u.yxx.x1);
834 deref_head(d0, or_y_vv_unk);
836 d1 = XREG(PREG->y_u.xxx.x2);
838 deref_head(d1, or_y_vv_nvar_unk);
841 if (IsIntTerm(d0) && IsIntTerm(d1)) {
842 d0 = MkIntegerTerm(IntOfTerm(d0) | IntOfTerm(d1));
845 d0 = p_or(Yap_Eval(d0), Yap_Eval(d1) PASS_REGS);
849 pt0 = YREG + PREG->y_u.yxx.y;
850 PREG = NEXTOP(PREG, yxx);
851 INITIALIZE_PERMVAR(pt0, d0);
856 deref_body(d0, pt0, or_y_vv_unk, or_y_vv_nvar);
857 Yap_AsmError(INSTANTIATION_ERROR,d0);
862 deref_body(d1, pt0, or_y_vv_nvar_unk, or_y_vv_nvar_nvar);
863 Yap_AsmError(INSTANTIATION_ERROR,d1);
872 d0 = XREG(PREG->y_u.yxn.xi);
874 deref_head(d0, or_y_vc_unk);
876 Int d1 = PREG->y_u.yxn.c;
878 d0 = MkIntegerTerm(IntOfTerm(d0) | d1);
881 d0 = p_or(Yap_Eval(d0), MkIntegerTerm(d1) PASS_REGS);
886 pt0 = YREG + PREG->y_u.yxn.y;
887 PREG = NEXTOP(PREG, yxn);
888 INITIALIZE_PERMVAR(pt0, d0);
893 deref_body(d0, pt0, or_y_vc_unk, or_y_vc_nvar);
894 Yap_AbsmiError(INSTANTIATION_ERROR);
903 d0 = XREG(PREG->y_u.xxx.x1);
905 deref_head(d0, sll_vv_unk);
907 d1 = XREG(PREG->y_u.xxx.x2);
909 deref_head(d1, sll_vv_nvar_unk);
912 if (IsIntTerm(d0) && IsIntTerm(d1)) {
913 Int i2 = IntOfTerm(d1);
915 d0 = MkIntegerTerm(SLR(IntOfTerm(d0), -i2));
917 d0 = do_sll(IntOfTerm(d0), i2 PASS_REGS);
920 d0 = p_sll(Yap_Eval(d0), Yap_Eval(d1) PASS_REGS);
923 XREG(PREG->y_u.xxx.x) = d0;
924 PREG = NEXTOP(PREG, xxx);
928 deref_body(d0, pt0, sll_vv_unk, sll_vv_nvar);
929 Yap_AsmError(INSTANTIATION_ERROR,d0);
934 deref_body(d1, pt0, sll_vv_nvar_unk, sll_vv_nvar_nvar);
935 Yap_AsmError(INSTANTIATION_ERROR,d1);
944 d0 = XREG(PREG->y_u.xxn.xi);
946 deref_head(d0, sll_vc_unk);
948 Int d1 = PREG->y_u.xxn.c;
950 d0 = do_sll(IntOfTerm(d0), (Int)d1 PASS_REGS);
953 d0 = p_sll(Yap_Eval(d0), MkIntegerTerm(d1) PASS_REGS);
957 XREG(PREG->y_u.xxn.x) = d0;
958 PREG = NEXTOP(PREG, xxn);
962 deref_body(d0, pt0, sll_vc_unk, sll_vc_nvar);
963 Yap_AsmError(INSTANTIATION_ERROR,d0);
971 d0 = XREG(PREG->y_u.xxn.xi);
973 deref_head(d0, sll_cv_unk);
975 Int d1 = PREG->y_u.xxn.c;
977 Int i2 = IntOfTerm(d0);
979 d0 = MkIntegerTerm(SLR(d1, -i2));
981 d0 = do_sll(d1, i2 PASS_REGS);
984 d0 = p_sll(MkIntegerTerm(d1), Yap_Eval(d0) PASS_REGS);
988 XREG(PREG->y_u.xxn.x) = d0;
989 PREG = NEXTOP(PREG, xxn);
993 deref_body(d0, pt0, sll_cv_unk, sll_cv_nvar);
994 Yap_AsmError(INSTANTIATION_ERROR,d0);
1000 Op(p_sll_y_vv, yxx);
1003 d0 = XREG(PREG->y_u.yxx.x1);
1005 deref_head(d0, sll_y_vv_unk);
1007 d1 = XREG(PREG->y_u.xxx.x2);
1009 deref_head(d1, sll_y_vv_nvar_unk);
1012 if (IsIntTerm(d0) && IsIntTerm(d1)) {
1013 Int i2 = IntOfTerm(d1);
1015 d0 = MkIntegerTerm(SLR(IntOfTerm(d0), -i2));
1017 d0 = do_sll(IntOfTerm(d0), i2 PASS_REGS);
1020 d0 = p_sll(Yap_Eval(d0), Yap_Eval(d1) PASS_REGS);
1024 pt0 = YREG + PREG->y_u.yxx.y;
1025 PREG = NEXTOP(PREG, yxx);
1026 INITIALIZE_PERMVAR(pt0, d0);
1031 deref_body(d0, pt0, sll_y_vv_unk, sll_y_vv_nvar);
1032 Yap_AsmError(INSTANTIATION_ERROR,d0);
1037 deref_body(d1, pt0, sll_y_vv_nvar_unk, sll_y_vv_nvar_nvar);
1038 Yap_AsmError(INSTANTIATION_ERROR,d1);
1045 Op(p_sll_y_vc, yxn);
1047 d0 = XREG(PREG->y_u.yxn.xi);
1049 deref_head(d0, sll_y_vc_unk);
1051 Int d1 = PREG->y_u.yxn.c;
1052 if (IsIntTerm(d0)) {
1053 d0 = do_sll(IntOfTerm(d0), Yap_Eval(d1) PASS_REGS);
1056 d0 = p_sll(Yap_Eval(d0), MkIntegerTerm(d1) PASS_REGS);
1061 pt0 = YREG + PREG->y_u.yxn.y;
1062 PREG = NEXTOP(PREG, yxn);
1063 INITIALIZE_PERMVAR(pt0, d0);
1068 deref_body(d0, pt0, sll_y_vc_unk, sll_y_vc_nvar);
1069 Yap_AsmError(INSTANTIATION_ERROR,d0);
1075 Op(p_sll_y_cv, yxn);
1077 d0 = XREG(PREG->y_u.yxn.xi);
1079 deref_head(d0, sll_y_cv_unk);
1081 Int d1 = PREG->y_u.yxn.c;
1082 if (IsIntTerm(d0)) {
1083 Int i2 = IntOfTerm(d0);
1085 d0 = MkIntegerTerm(SLR(d1, -i2));
1087 d0 = do_sll(d1, i2 PASS_REGS);
1090 d0 = p_sll(MkIntegerTerm(d1), Yap_Eval(0) PASS_REGS);
1095 pt0 = YREG + PREG->y_u.yxn.y;
1096 PREG = NEXTOP(PREG, yxn);
1097 INITIALIZE_PERMVAR(pt0, d0);
1102 deref_body(d0, pt0, sll_y_cv_unk, sll_y_cv_nvar);
1103 Yap_AsmError(INSTANTIATION_ERROR,d0);
1112 d0 = XREG(PREG->y_u.xxx.x1);
1114 deref_head(d0, slr_vv_unk);
1116 d1 = XREG(PREG->y_u.xxx.x2);
1118 deref_head(d1, slr_vv_nvar_unk);
1121 if (IsIntTerm(d0) && IsIntTerm(d1)) {
1122 Int i2 = IntOfTerm(d1);
1124 d0 = do_sll(IntOfTerm(d0), -i2 PASS_REGS);
1126 d0 = MkIntTerm(SLR(IntOfTerm(d0), i2));
1129 d0 = p_slr(Yap_Eval(d0), Yap_Eval(d1) PASS_REGS);
1132 XREG(PREG->y_u.xxx.x) = d0;
1133 PREG = NEXTOP(PREG, xxx);
1137 deref_body(d0, pt0, slr_vv_unk, slr_vv_nvar);
1138 Yap_AsmError(INSTANTIATION_ERROR,d0);
1143 deref_body(d1, pt0, slr_vv_nvar_unk, slr_vv_nvar_nvar);
1144 Yap_AsmError(INSTANTIATION_ERROR,d1);
1153 d0 = XREG(PREG->y_u.xxn.xi);
1155 deref_head(d0, slr_vc_unk);
1157 Int d1 = PREG->y_u.xxn.c;
1158 if (IsIntTerm(d0)) {
1159 d0 = MkIntTerm(SLR(IntOfTerm(d0), d1));
1162 d0 = p_slr(Yap_Eval(d0), MkIntegerTerm(d1) PASS_REGS);
1166 XREG(PREG->y_u.xxn.x) = d0;
1167 PREG = NEXTOP(PREG, xxn);
1171 deref_body(d0, pt0, slr_vc_unk, slr_vc_nvar);
1172 Yap_AsmError(INSTANTIATION_ERROR,d0);
1180 d0 = XREG(PREG->y_u.xxn.xi);
1182 deref_head(d0, slr_cv_unk);
1184 Int d1 = PREG->y_u.xxn.c;
1185 if (IsIntTerm(d0)) {
1186 Int i2 = IntOfTerm(d0);
1188 d0 = do_sll(d1, -i2 PASS_REGS);
1190 d0 = MkIntegerTerm(SLR(d1, i2));
1193 d0 = p_slr(MkIntegerTerm(d1), Yap_Eval(d0) PASS_REGS);
1197 XREG(PREG->y_u.xxn.x) = d0;
1198 PREG = NEXTOP(PREG, xxn);
1202 deref_body(d0, pt0, slr_cv_unk, slr_cv_nvar);
1203 Yap_AsmError(INSTANTIATION_ERROR,d0);
1209 Op(p_slr_y_vv, yxx);
1212 d0 = XREG(PREG->y_u.yxx.x1);
1214 deref_head(d0, slr_y_vv_unk);
1216 d1 = XREG(PREG->y_u.xxx.x2);
1218 deref_head(d1, slr_y_vv_nvar_unk);
1221 if (IsIntTerm(d0) && IsIntTerm(d1)) {
1222 Int i2 = IntOfTerm(d1);
1224 d0 = do_sll(IntOfTerm(d0), -i2 PASS_REGS);
1226 d0 = MkIntTerm(SLR(IntOfTerm(d0), i2));
1229 d0 = p_slr(Yap_Eval(d0), Yap_Eval(d1) PASS_REGS);
1233 pt0 = YREG + PREG->y_u.yxx.y;
1234 PREG = NEXTOP(PREG, yxx);
1235 INITIALIZE_PERMVAR(pt0, d0);
1240 deref_body(d0, pt0, slr_y_vv_unk, slr_y_vv_nvar);
1241 Yap_AsmError(INSTANTIATION_ERROR,d0);
1246 deref_body(d1, pt0, slr_y_vv_nvar_unk, slr_y_vv_nvar_nvar);
1247 Yap_AsmError(INSTANTIATION_ERROR,d1);
1254 Op(p_slr_y_vc, yxn);
1256 d0 = XREG(PREG->y_u.yxn.xi);
1258 deref_head(d0, slr_y_vc_unk);
1260 Int d1 = PREG->y_u.yxn.c;
1261 if (IsIntTerm(d0)) {
1262 d0 = MkIntTerm(SLR(IntOfTerm(d0), d1));
1265 d0 = p_slr(Yap_Eval(d0), MkIntegerTerm(d1) PASS_REGS);
1270 pt0 = YREG + PREG->y_u.yxn.y;
1271 PREG = NEXTOP(PREG, yxn);
1272 INITIALIZE_PERMVAR(pt0, d0);
1277 deref_body(d0, pt0, slr_y_vc_unk, slr_y_vc_nvar);
1278 Yap_AsmError(INSTANTIATION_ERROR,d0);
1283 Op(p_slr_y_cv, yxn);
1285 d0 = XREG(PREG->y_u.yxn.xi);
1287 deref_head(d0, slr_y_cv_unk);
1289 Int d1 = PREG->y_u.yxn.c;
1290 if (IsIntTerm(d0)) {
1291 Int i2 = IntOfTerm(d0);
1293 d0 = do_sll(d1, -i2 PASS_REGS);
1295 d0 = MkIntegerTerm(SLR(d1, i2));
1298 d0 = p_slr(MkIntegerTerm(d1), Yap_Eval(d0) PASS_REGS);
1303 Yap_AsmError(LOCAL_Error_TYPE,d0);
1307 pt0 = YREG + PREG->y_u.yxn.y;
1308 PREG = NEXTOP(PREG, yxn);
1309 INITIALIZE_PERMVAR(pt0, d0);
1314 deref_body(d0, pt0, slr_y_cv_unk, slr_y_cv_nvar);
1315 Yap_AsmError(INSTANTIATION_ERROR,d0);
1321 BOp(call_bfunc_xx, plxxs);
1324 d0 = XREG(PREG->y_u.plxxs.x1);
1326 d1 = XREG(PREG->y_u.plxxs.x2);
1327 call_bfunc_xx2_nvar:
1328 deref_head(d0, call_bfunc_xx_unk);
1329 deref_head(d1, call_bfunc_xx2_unk);
1330 if (IsIntTerm(d0) && IsIntTerm(d1)) {
1333 Int v = IntOfTerm(d0) - IntOfTerm(d1);
1334 flags = PREG->y_u.plxxs.flags;
1336 if (flags & GT_OK_IN_CMP) {
1337 yamop *nextp = NEXTOP(PREG, plxxs);
1338 ALWAYS_LOOKAHEAD(nextp->opc);
1341 ALWAYS_END_PREFETCH();
1343 yamop *nextp = PREG->y_u.plxxs.f;
1344 ALWAYS_LOOKAHEAD(nextp->opc);
1347 ALWAYS_END_PREFETCH();
1350 if (flags & LT_OK_IN_CMP) {
1351 yamop *nextp = NEXTOP(PREG, plxxs);
1352 ALWAYS_LOOKAHEAD(nextp->opc);
1355 ALWAYS_END_PREFETCH();
1357 yamop *nextp = PREG->y_u.plxxs.f;
1358 ALWAYS_LOOKAHEAD(nextp->opc);
1361 ALWAYS_END_PREFETCH();
1364 if (flags & EQ_OK_IN_CMP) {
1365 yamop *nextp = NEXTOP(PREG, plxxs);
1366 ALWAYS_LOOKAHEAD(nextp->opc);
1369 ALWAYS_END_PREFETCH();
1371 yamop *nextp = PREG->y_u.plxxs.f;
1372 ALWAYS_LOOKAHEAD(nextp->opc);
1375 ALWAYS_END_PREFETCH();
1380 CmpPredicate f = PREG->y_u.plxxs.p->cs.d_code;
1382 d0 = (CELL)(f)(d0, d1);
1385 if (PREG == FAILCODE) {
1389 PREG = PREG->y_u.plxxs.f;
1392 PREG = NEXTOP(PREG, plxxs);
1396 deref_body(d0, pt0, call_bfunc_xx_unk, call_bfunc_xx_nvar);
1398 goto exec_bin_cmp_xx;
1402 deref_body(d1, pt0, call_bfunc_xx2_unk, call_bfunc_xx2_nvar);
1403 goto exec_bin_cmp_xx;
1410 BOp(call_bfunc_yx, plxys);
1414 pt0 = YREG + PREG->y_u.plxys.y;
1415 d1 = XREG(PREG->y_u.plxys.x);
1418 deref_head(d0, call_bfunc_yx_unk);
1420 deref_head(d1, call_bfunc_yx2_unk);
1421 call_bfunc_yx2_nvar:
1422 if (IsIntTerm(d0) && IsIntTerm(d1)) {
1425 Int v = IntOfTerm(d0) - IntOfTerm(d1);
1426 flags = PREG->y_u.plxys.flags;
1428 if (flags & GT_OK_IN_CMP) {
1429 PREG = NEXTOP(PREG, plxys);
1432 PREG = PREG->y_u.plxys.f;
1436 if (flags & LT_OK_IN_CMP) {
1437 PREG = NEXTOP(PREG, plxys);
1440 PREG = PREG->y_u.plxys.f;
1444 if (flags & EQ_OK_IN_CMP) {
1445 PREG = NEXTOP(PREG, plxys);
1448 PREG = PREG->y_u.plxys.f;
1454 CmpPredicate f = PREG->y_u.plxys.p->cs.d_code;
1456 d0 = (CELL)(f)(d0, d1);
1459 if (!d0 || PREG == FAILCODE) {
1460 if (PREG != FAILCODE)
1461 PREG = PREG->y_u.plxys.f;
1464 PREG = NEXTOP(PREG, plxys);
1468 deref_body(d0, pt0, call_bfunc_yx_unk, call_bfunc_yx_nvar);
1470 goto exec_bin_cmp_yx;
1474 deref_body(d1, pt0, call_bfunc_yx2_unk, call_bfunc_yx2_nvar);
1475 goto exec_bin_cmp_yx;
1482 BOp(call_bfunc_xy, plxys);
1486 pt0 = YREG + PREG->y_u.plxys.y;
1487 d0 = XREG(PREG->y_u.plxys.x);
1490 deref_head(d0, call_bfunc_xy_unk);
1492 deref_head(d1, call_bfunc_xy2_unk);
1493 call_bfunc_xy2_nvar:
1494 if (IsIntTerm(d0) && IsIntTerm(d1)) {
1497 Int v = IntOfTerm(d0) - IntOfTerm(d1);
1498 flags = PREG->y_u.plxys.flags;
1500 if (flags & GT_OK_IN_CMP) {
1501 PREG = NEXTOP(PREG, plxys);
1504 PREG = PREG->y_u.plxys.f;
1508 if (flags & LT_OK_IN_CMP) {
1509 PREG = NEXTOP(PREG, plxys);
1512 PREG = PREG->y_u.plxys.f;
1516 if (flags & EQ_OK_IN_CMP) {
1517 PREG = NEXTOP(PREG, plxys);
1520 PREG = PREG->y_u.plxys.f;
1526 CmpPredicate f = PREG->y_u.plxys.p->cs.d_code;
1528 d0 = (CELL)(f)(d0, d1);
1531 if (!d0 || PREG == FAILCODE) {
1532 if (PREG != FAILCODE)
1533 PREG = PREG->y_u.plxys.f;
1536 PREG = NEXTOP(PREG, plxys);
1540 deref_body(d0, pt0, call_bfunc_xy_unk, call_bfunc_xy_nvar);
1542 goto exec_bin_cmp_xy;
1546 deref_body(d1, pt0, call_bfunc_xy2_unk, call_bfunc_xy2_nvar);
1547 goto exec_bin_cmp_xy;
1554 BOp(call_bfunc_yy, plyys);
1558 pt0 = YREG + PREG->y_u.plyys.y1;
1560 pt1 = YREG + PREG->y_u.plyys.y2;
1565 deref_head(d0, call_bfunc_yy_unk);
1567 deref_head(d1, call_bfunc_yy2_unk);
1568 call_bfunc_yy2_nvar:
1569 if (IsIntTerm(d0) && IsIntTerm(d1)) {
1572 Int v = IntOfTerm(d0) - IntOfTerm(d1);
1573 flags = PREG->y_u.plyys.flags;
1575 if (flags & GT_OK_IN_CMP) {
1576 PREG = NEXTOP(PREG, plyys);
1579 PREG = PREG->y_u.plyys.f;
1583 if (flags & LT_OK_IN_CMP) {
1584 PREG = NEXTOP(PREG, plyys);
1587 PREG = PREG->y_u.plyys.f;
1591 if (flags & EQ_OK_IN_CMP) {
1592 PREG = NEXTOP(PREG, plyys);
1595 PREG = PREG->y_u.plyys.f;
1601 CmpPredicate f = PREG->y_u.plyys.p->cs.d_code;
1603 d0 = (CELL)(f)(d0, d1);
1606 if (!d0 || PREG == FAILCODE) {
1607 if (PREG != FAILCODE)
1608 PREG = PREG->y_u.plyys.f;
1611 PREG = NEXTOP(PREG, plyys);
1615 deref_body(d0, pt0, call_bfunc_yy_unk, call_bfunc_yy_nvar);
1617 goto exec_bin_cmp_yy;
1621 deref_body(d1, pt0, call_bfunc_yy2_unk, call_bfunc_yy2_nvar);
1622 goto exec_bin_cmp_yy;
1631 if (Yap_IUnify(ARG1, ARG2) ==
false) {
1634 PREG = NEXTOP(PREG, e);
1638#if INLINE_BIG_COMPARISONS
1640#ifdef LOW_LEVEL_TRACER
1641 if (Yap_do_low_level_trace)
1642 low_level_trace(enter_pred,
1643 RepPredProp(Yap_GetPredPropByFunc(FunctorDiff, 0)),
1649 deref_head(d0, dif_unk1);
1653 deref_head(d1, dif_nvar1_unk2);
1657 PREG = PREG->y_u.l.l;
1660 if (IsAtomOrIntTerm(d0) || IsAtomOrIntTerm(d1)) {
1661 PREG = NEXTOP(PREG, l);
1673 LOCAL_DoNotSuspend =
true;
1678 register tr_fr_ptr pt0;
1691 opresult = Yap_IUnify(d0, d1);
1693 LOCAL_DoNotSuspend =
false;
1697 SET_BB(PROTECT_FROZEN_B(pt1));
1705 d1 = TrailTerm(--TR);
1706 if (IsVarTerm(d1)) {
1707#if defined(YAPOR_SBA) && defined(YAPOR)
1709 if (Unsigned((Int)(d1) - (Int)(H_FZ)) >
1710 Unsigned((Int)(B_FZ) - (Int)(H_FZ))) {
1711 RESET_VARIABLE(STACK_TO_SBA(d1));
1716#ifdef MULTI_ASSIGNMENT_VARIABLES
1718 CELL *pt = RepAppl(d1);
1723 pt[0] = TrailVal(--TR);
1725 pt[0] = TrailTerm(--TR);
1734 PREG = PREG->y_u.l.l;
1738 PREG = NEXTOP(PREG, l);
1744 deref_body(d0, pt0, dif_unk1, dif_nvar1);
1747 PREG = PREG->y_u.l.l;
1751 deref_body(d1, pt0, dif_nvar1_unk2, dif_nvar1_nvar2);
1754 PREG = PREG->y_u.l.l;
1761#ifdef LOW_LEVEL_TRACER
1762 if (Yap_do_low_level_trace)
1763 low_level_trace(enter_pred,
1764 RepPredProp(Yap_GetPredPropByFunc(FunctorSame, 0)),
1770 deref_head(d0, p_eq_unk1);
1774 deref_head(d1, p_eq_nvar1_unk2);
1778 PREG = NEXTOP(PREG, l);
1781 if (IsPairTerm(d0)) {
1782 if (!IsPairTerm(d1)) {
1783 PREG = PREG->y_u.l.l;
1788 d2 = iequ_complex(RepPair(d0) - 1, RepPair(d0) + 1, RepPair(d1) - 1);
1790 PREG = PREG->y_u.l.l;
1795 PREG = NEXTOP(PREG, l);
1798 if (IsApplTerm(d0)) {
1799 Functor f0 = FunctorOfTerm(d0);
1803 if (!IsApplTerm(d1)) {
1804 PREG = PREG->y_u.l.l;
1807 f1 = FunctorOfTerm(d1);
1811 if (IsExtensionFunctor(f0)) {
1813 case (CELL)FunctorDBRef:
1815 PREG = NEXTOP(PREG, l);
1818 PREG = PREG->y_u.l.l;
1820 case (CELL)FunctorLongInt:
1821 if (f1 != FunctorLongInt) {
1822 PREG = PREG->y_u.l.l;
1825 if (LongIntOfTerm(d0) == LongIntOfTerm(d1)) {
1826 PREG = NEXTOP(PREG, l);
1829 PREG = PREG->y_u.l.l;
1831 case (CELL)FunctorString:
1832 if (f1 != FunctorString) {
1833 PREG = PREG->y_u.l.l;
1836 if (strcmp((
char *)(RepAppl(d0) + 2), (
char *)(RepAppl(d1) + 2)) ==
1838 PREG = NEXTOP(PREG, l);
1841 PREG = PREG->y_u.l.l;
1845 case (CELL)FunctorBigInt:
1846 if (f1 != FunctorBigInt) {
1847 PREG = PREG->y_u.l.l;
1850 if (Yap_gmp_tcmp_big_big(d0, d1) == 0) {
1851 PREG = NEXTOP(PREG, l);
1854 PREG = PREG->y_u.l.l;
1857 case (CELL)FunctorDouble:
1858 if (f1 != FunctorDouble) {
1859 PREG = PREG->y_u.l.l;
1862 Float fl0=FloatOfTerm(d0);
1863 Float fl1=FloatOfTerm(d1);
1865 if (isnan(fl0) || isnan(fl1)) {
1866 PREG = PREG->y_u.l.l;
1873 isinf(fl0)==isinf(fl1) ||
1876 PREG = NEXTOP(PREG, l);
1880 PREG = PREG->y_u.l.l;
1884 PREG = PREG->y_u.l.l;
1889 PREG = PREG->y_u.l.l;
1894 d2 = iequ_complex(RepAppl(d0), RepAppl(d0) + ArityOfFunctor(f0),
1897 PREG = PREG->y_u.l.l;
1902 PREG = NEXTOP(PREG, l);
1905 PREG = PREG->y_u.l.l;
1909 deref_body(d1, pt0, p_eq_nvar1_unk2, p_eq_nvar1_nvar2);
1915 PREG = PREG->y_u.l.l;
1920 deref_body(d0, pt0, p_eq_unk1, p_eq_nvar1);
1923 deref_head(d1, p_eq_var1_unk2);
1927 PREG = PREG->y_u.l.l;
1931 deref_body(d1, pt1, p_eq_var1_unk2, p_eq_var1_nvar2);
1935 PREG = PREG->y_u.l.l;
1938 PREG = NEXTOP(PREG, l);
1948 PROCESS_INT(interrupt_eq, do_eq);
1955#ifdef LOW_LEVEL_TRACER
1956 if (Yap_do_low_level_trace) {
1957 HR[0] = XREG(PREG->y_u.xxx.x1);
1958 HR[1] = XREG(PREG->y_u.xxx.x2);
1959 RESET_VARIABLE(HR + 2);
1960 low_level_trace(enter_pred,
1961 RepPredProp(Yap_GetPredPropByFunc(FunctorArg, 0)), HR);
1965 d0 = XREG(PREG->y_u.xxx.x1);
1966 deref_head(d0, arg_arg1_unk);
1971 else if (IsLongIntTerm(d0)) {
1972 d0 = LongIntOfTerm(d0);
1974 if (IsBigIntTerm(d0))
1976 Yap_AsmError(TYPE_ERROR_INTEGER, d0);
1982 d1 = XREG(PREG->y_u.xxx.x2);
1983 deref_head(d1, arg_arg2_unk);
1987 if (IsApplTerm(d1)) {
1991 if (IsExtensionFunctor((
Functor)d1)) {
1992 Yap_AsmError(TYPE_ERROR_COMPOUND, AbsAppl(pt0));
1995 if ((Int)d0 <= 0 || (Int)d0 > ArityOfFunctor((
Functor)d1)) {
2006 XREG(PREG->y_u.xxx.x) = pt0[d0];
2007 PREG = NEXTOP(PREG, xxx);
2010 }
else if (IsPairTerm(d1)) {
2013 if (d0 != 1 && d0 != 2) {
2015 Yap_AsmError(DOMAIN_ERROR_NOT_LESS_THAN_ZERO, MkIntegerTerm(d0) );
2019 XREG(PREG->y_u.xxx.x) = pt0[d0 - 1];
2020 PREG = NEXTOP(PREG, xxx);
2024 if (!IsAtomTerm(d1))
2025 Yap_AsmError(TYPE_ERROR_COMPOUND, d1);
2030 deref_body(d1, pt0, arg_arg2_unk, arg_arg2_nvar);
2032 Yap_AsmError(INSTANTIATION_ERROR,d1);
2040 deref_body(d0, pt0, arg_arg1_unk, arg_arg1_nvar);
2042 Yap_AsmError(INSTANTIATION_ERROR,d0);
2051#ifdef LOW_LEVEL_TRACER
2052 if (Yap_do_low_level_trace) {
2054 Term t = MkIntegerTerm(PREG->y_u.xxn.c);
2056 HR[1] = XREG(PREG->y_u.xxn.xi);
2057 RESET_VARIABLE(HR + 2);
2058 low_level_trace(enter_pred,
2059 RepPredProp(Yap_GetPredPropByFunc(FunctorArg, 0)), HR);
2064 d0 = PREG->y_u.xxn.c;
2067 d1 = XREG(PREG->y_u.xxn.xi);
2068 deref_head(d1, arg_arg2_vc_unk);
2072 if (IsApplTerm(d1)) {
2076 if (IsExtensionFunctor((
Functor)d1)) {
2077 Yap_AsmError(TYPE_ERROR_COMPOUND,XREG(PREG->y_u.xxn.xi));
2080 if ((Int)d0 <= 0 || (Int)d0 > ArityOfFunctor((
Functor)d1)) {
2091 XREG(PREG->y_u.xxn.x) = pt0[d0];
2092 PREG = NEXTOP(PREG, xxn);
2095 }
else if (IsPairTerm(d1)) {
2098 if (d0 != 1 && d0 != 2) {
2101 Yap_AsmError(DOMAIN_ERROR_NOT_LESS_THAN_ZERO, XREG(PREG->y_u.xxn.xi));
2105 XREG(PREG->y_u.xxn.x) = pt0[d0 - 1];
2106 PREG = NEXTOP(PREG, xxn);
2110 Yap_AsmError(TYPE_ERROR_COMPOUND, XREG(PREG->y_u.xxn.xi));
2115 deref_body(d1, pt0, arg_arg2_vc_unk, arg_arg2_vc_nvar);
2116 Yap_AsmError(INSTANTIATION_ERROR, XREG(PREG->y_u.xxn.xi));
2124 Op(p_arg_y_vv, yxx);
2125#ifdef LOW_LEVEL_TRACER
2126 if (Yap_do_low_level_trace) {
2127 HR[0] = XREG(PREG->y_u.yxx.x1);
2128 HR[1] = XREG(PREG->y_u.yxx.x2);
2129 HR[2] = YREG[PREG->y_u.yxx.y];
2130 RESET_VARIABLE(HR + 2);
2131 low_level_trace(enter_pred,
2132 RepPredProp(Yap_GetPredPropByFunc(FunctorArg, 0)), HR);
2136 d0 = XREG(PREG->y_u.yxx.x1);
2137 deref_head(d0, arg_y_arg1_unk);
2142 else if (IsLongIntTerm(d0)) {
2143 d0 = LongIntOfTerm(d0);
2145 if (IsBigIntTerm(d0))
2147 Yap_AsmError(TYPE_ERROR_INTEGER, XREG(PREG->y_u.yxx.x1));
2153 d1 = XREG(PREG->y_u.yxx.x2);
2154 deref_head(d1, arg_y_arg2_unk);
2158 if (IsApplTerm(d1)) {
2162 if (IsExtensionFunctor((
Functor)d1)) {
2163 Yap_AsmError(TYPE_ERROR_COMPOUND,XREG(PREG->y_u.yxx.x2));
2166 if ((Int)d0 <= 0 || (Int)d0 > ArityOfFunctor((
Functor)d1)) {
2178 pt1 = YREG + PREG->y_u.yxx.y;
2179 PREG = NEXTOP(PREG, yxx);
2180 INITIALIZE_PERMVAR(pt1, pt0[d0]);
2184 }
else if (IsPairTerm(d1)) {
2187 if (d0 != 1 && d0 != 2) {
2190 Yap_AsmError(DOMAIN_ERROR_NOT_LESS_THAN_ZERO, YREG[PREG->y_u.yxx.y]);
2195 pt1 = YREG + PREG->y_u.yxx.y;
2196 PREG = NEXTOP(PREG, yxx);
2197 INITIALIZE_PERMVAR(pt1, pt0[d0 - 1]);
2202 Yap_AsmError(TYPE_ERROR_COMPOUND, d1);
2207 deref_body(d1, pt0, arg_y_arg2_unk, arg_y_arg2_nvar);
2208 Yap_AsmError(INSTANTIATION_ERROR,d1);
2214 deref_body(d0, pt0, arg_y_arg1_unk, arg_y_arg1_nvar);
2215 Yap_AsmError(INSTANTIATION_ERROR,d0);
2221 Op(p_arg_y_cv, yxn);
2222#ifdef LOW_LEVEL_TRACER
2223 if (Yap_do_low_level_trace) {
2225 Term t = MkIntegerTerm(PREG->y_u.yxn.c);
2227 HR[1] = XREG(PREG->y_u.yxn.xi);
2228 HR[2] = YREG[PREG->y_u.yxn.y];
2229 RESET_VARIABLE(HR + 2);
2230 low_level_trace(enter_pred,
2231 RepPredProp(Yap_GetPredPropByFunc(FunctorArg, 0)), HR);
2236 d0 = PREG->y_u.yxn.c;
2239 d1 = XREG(PREG->y_u.yxn.xi);
2240 deref_head(d1, arg_y_arg2_vc_unk);
2244 if (IsApplTerm(d1)) {
2248 if (IsExtensionFunctor((
Functor)d1)) {
2249 Yap_AsmError(TYPE_ERROR_COMPOUND, XREG(PREG->y_u.yxn.xi));
2252 if ((Int)d0 <= 0 || (Int)d0 > ArityOfFunctor((
Functor)d1)) {
2261 pt1 = YREG + PREG->y_u.yxn.y;
2262 PREG = NEXTOP(PREG, yxn);
2263 INITIALIZE_PERMVAR(pt1, pt0[d0]);
2267 }
else if (IsPairTerm(d1)) {
2270 if (d0 != 1 && d0 != 2) {
2273 Yap_AsmError(DOMAIN_ERROR_NOT_LESS_THAN_ZERO, YREG[PREG->y_u.yxn.y]);
2278 pt1 = YREG + PREG->y_u.yxn.y;
2279 PREG = NEXTOP(PREG, yxn);
2280 INITIALIZE_PERMVAR(pt1, pt0[d0 - 1]);
2285 Yap_AsmError(TYPE_ERROR_COMPOUND,YREG[PREG->y_u.yxn.y]);
2290 deref_body(d1, pt0, arg_y_arg2_vc_unk, arg_y_arg2_vc_nvar);
2291 Yap_AsmError(INSTANTIATION_ERROR,d1);
2299 Op(p_func2s_vv, xxx);
2302#ifdef LOW_LEVEL_TRACER
2303 if (Yap_do_low_level_trace) {
2305 HR[1] = XREG(PREG->y_u.xxx.x1);
2306 HR[2] = XREG(PREG->y_u.xxx.x2);
2307 low_level_trace(enter_pred,
2308 RepPredProp(Yap_GetPredPropByFunc(FunctorFunctor, 0)),
2314 d0 = XREG(PREG->y_u.xxx.x1);
2315 deref_head(d0, func2s_unk);
2319 d1 = XREG(PREG->y_u.xxx.x2);
2320 deref_head(d1, func2s_unk2);
2323 if (IsIntegerTerm(d1))
2324 d1 = IntegerOfTerm(d1);
2327 if (IsBigIntTerm(d1)) {
2329 Yap_AsmError(RESOURCE_ERROR_STACK,d1);
2332 Yap_AsmError(TYPE_ERROR_INTEGER,d1);
2336 if (!IsAtomTerm(d0)) {
2337 Yap_AsmError(TYPE_ERROR_ATOM, d0);
2342 if (d0 == TermDot && d1 == 2) {
2344 RESET_VARIABLE(HR + 1);
2349 XREG(PREG->y_u.xxx.x) = d0;
2350 PREG = NEXTOP(NEXTOP(NEXTOP(PREG, xxx), Osbpp), l);
2352 }
else if ((Int)d1 > 0) {
2354 if (!IsAtomTerm(d0)) {
2355 Yap_AsmError(TYPE_ERROR_ATOM, d0);
2359 if (!IsAtomTerm(d0)) {
2362 d0 = (CELL)Yap_MkFunctor(AtomOfTerm(d0), (Int)d1);
2366 if (pt1 + d1 > ENV || pt1 + d1 > (CELL *)B) {
2369 if (!Yap_dogcl(d1 PASS_REGS)) {
2370 Yap_AsmError(RESOURCE_ERROR_STACK, d1);
2375 goto restart_func2s;
2378 RESET_VARIABLE(pt1);
2386 XREG(PREG->y_u.xxx.x) = d0;
2387 PREG = NEXTOP(NEXTOP(NEXTOP(PREG, xxx), Osbpp), l);
2389 }
else if ((Int)d1 == 0) {
2390 XREG(PREG->y_u.xxx.x) = d0;
2391 PREG = NEXTOP(NEXTOP(NEXTOP(PREG, xxx), Osbpp), l);
2394 Yap_AsmError(DOMAIN_ERROR_NOT_LESS_THAN_ZERO, MkIntegerTerm(d1));
2398 deref_body(d1, pt1, func2s_unk2, func2s_nvar2);
2399 Yap_AsmError(INSTANTIATION_ERROR,d1);
2406 deref_body(d0, pt1, func2s_unk, func2s_nvar);
2407 Yap_AsmError(INSTANTIATION_ERROR,d0);
2414 Op(p_func2s_cv, xxc);
2417#ifdef LOW_LEVEL_TRACER
2418 if (Yap_do_low_level_trace) {
2420 HR[1] = PREG->y_u.xxc.c;
2421 HR[2] = XREG(PREG->y_u.xxc.xi);
2422 low_level_trace(enter_pred,
2423 RepPredProp(Yap_GetPredPropByFunc(FunctorFunctor, 0)),
2429 d0 = PREG->y_u.xxc.c;
2432 d1 = XREG(PREG->y_u.xxc.xi);
2433 deref_head(d1, func2s_unk2_cv);
2436 if (IsIntegerTerm(d1)) {
2437 d1 = IntegerOfTerm(d1);
2439 Yap_AsmError(DOMAIN_ERROR_NOT_LESS_THAN_ZERO, MkIntegerTerm(d1));
2443 if (IsBigIntTerm(d1)) {
2445 Yap_AsmError(RESOURCE_ERROR_STACK, d1);
2448 Yap_AsmError(TYPE_ERROR_INTEGER, d1);
2454 if (d0 == TermDot && d1 == 2) {
2456 RESET_VARIABLE(HR + 1);
2461 XREG(PREG->y_u.xxc.x) = d0;
2462 PREG = NEXTOP(NEXTOP(NEXTOP(PREG, xxc), Osbpp), l);
2464 }
else if ((Int)d1 > 0) {
2466 if (!IsAtomTerm(d0)) {
2467 Yap_AsmError(TYPE_ERROR_ATOM, d0);
2471 if (!IsAtomTerm(d0)) {
2474 d0 = (CELL)Yap_MkFunctor(AtomOfTerm(d0), (Int)d1);
2477 if (pt1 + d1 > ENV || pt1 + d1 > (CELL *)B) {
2480 if (!Yap_dogcl(d1 PASS_REGS1)) {
2482 Yap_AsmError(RESOURCE_ERROR_STACK, d1);
2487 goto restart_func2s_cv;
2491 RESET_VARIABLE(pt1);
2499 XREG(PREG->y_u.xxc.x) = d0;
2500 PREG = NEXTOP(NEXTOP(NEXTOP(PREG, xxc), Osbpp), l);
2502 }
else if (d1 == 0) {
2503 XREG(PREG->y_u.xxc.x) = d0;
2504 PREG = NEXTOP(NEXTOP(NEXTOP(PREG, xxc), Osbpp), l);
2507 Yap_AsmError(DOMAIN_ERROR_NOT_LESS_THAN_ZERO,d1);
2511 deref_body(d1, pt1, func2s_unk2_cv, func2s_nvar2_cv);
2512 Yap_AsmError(INSTANTIATION_ERROR,d1);
2520 Op(p_func2s_vc, xxn);
2522 restart_func2s_x_vc:
2523#ifdef LOW_LEVEL_TRACER
2524 if (Yap_do_low_level_trace) {
2528 ti = MkIntegerTerm((Int)(PREG->y_u.xxn.c));
2530 HR[1] = XREG(PREG->y_u.xxn.xi);
2532 low_level_trace(enter_pred,
2533 RepPredProp(Yap_GetPredPropByFunc(FunctorFunctor, 0)),
2540 d0 = XREG(PREG->y_u.xxn.xi);
2541 deref_head(d0, func2s_x_unk_vc);
2544 d1 = PREG->y_u.xxn.c;
2545 if (!IsAtomicTerm(d0)) {
2546 Yap_AsmError(TYPE_ERROR_ATOM,d0);
2551 if (d0 == TermDot && d1 == 2) {
2553 RESET_VARIABLE(HR + 1);
2558 XREG(PREG->y_u.xxn.x) = d0;
2559 PREG = NEXTOP(NEXTOP(NEXTOP(PREG, xxn), Osbpp), l);
2563 XREG(PREG->y_u.xxn.x) = d0;
2564 PREG = NEXTOP(NEXTOP(NEXTOP(PREG, xxn), Osbpp), l);
2567 if (!IsAtomTerm(d0)) {
2568 Yap_AsmError(TYPE_ERROR_ATOM,d0);
2572 if (!IsAtomTerm(d0)) {
2573 Yap_AsmError(TYPE_ERROR_ATOM,d0);
2577 if (!IsAtomTerm(d0)) {
2580 d0 = (CELL)Yap_MkFunctor(AtomOfTerm(d0), (Int)d1);
2584 if (pt1 + d1 > ENV || pt1 + d1 > (CELL *)B) {
2587 if (!Yap_dogcl(d1 PASS_REGS)) {
2589 Yap_AsmError(RESOURCE_ERROR_STACK, d1);
2594 goto restart_func2s_x_vc;
2597 RESET_VARIABLE(pt1);
2604 XREG(PREG->y_u.xxn.x) = d0;
2605 PREG = NEXTOP(NEXTOP(NEXTOP(PREG, xxn), Osbpp), l);
2611 deref_body(d0, pt1, func2s_x_unk_vc, func2s_x_nvar_vc);
2612 Yap_AsmError(INSTANTIATION_ERROR,d0);
2620 Op(p_func2s_y_vv, yxx);
2623#ifdef LOW_LEVEL_TRACER
2624 if (Yap_do_low_level_trace) {
2626 HR[1] = XREG(PREG->y_u.yxx.x1);
2627 HR[2] = XREG(PREG->y_u.yxx.x2);
2628 low_level_trace(enter_pred,
2629 RepPredProp(Yap_GetPredPropByFunc(FunctorFunctor, 0)),
2635 d0 = XREG(PREG->y_u.yxx.x1);
2636 deref_head(d0, func2s_y_unk);
2640 d1 = XREG(PREG->y_u.yxx.x2);
2641 deref_head(d1, func2s_y_unk2);
2644 if (IsIntegerTerm(d1))
2645 d1 = IntegerOfTerm(d1);
2648 if (IsBigIntTerm(d1)) {
2650 Yap_AsmError(RESOURCE_ERROR_STACK, d1);
2653 Yap_AsmError(TYPE_ERROR_INTEGER, d1);
2657 if (!IsAtomicTerm(d0)) {
2658 Yap_AsmError(TYPE_ERROR_ATOM, d0);
2663 if (d0 == TermDot && d1 == 2) {
2665 RESET_VARIABLE(HR + 1);
2669 pt1 = YREG + PREG->y_u.yxx.y;
2670 PREG = NEXTOP(NEXTOP(NEXTOP(PREG, yxx), Osbpp), l);
2671 INITIALIZE_PERMVAR(pt1, d0);
2674 }
else if ((Int)d1 > 0) {
2676 if (!IsAtomTerm(d0)) {
2677 Yap_AsmError(TYPE_ERROR_ATOM, d0);
2681 if (!IsAtomTerm(d0)) {
2684 d0 = (CELL)Yap_MkFunctor(AtomOfTerm(d0), (Int)d1);
2688 if (pt1 + d1 > ENV || pt1 + d1 > (CELL *)B) {
2691 if (!Yap_dogcl(d1 PASS_REGS1)) {
2693 Yap_AsmError(RESOURCE_ERROR_STACK, d1);
2698 goto restart_func2s_y;
2701 RESET_VARIABLE(pt1);
2710 pt1 = YREG + PREG->y_u.yxx.y;
2711 PREG = NEXTOP(NEXTOP(NEXTOP(PREG, yxx), Osbpp), l);
2712 INITIALIZE_PERMVAR(pt1, d0);
2715 }
else if (d1 == 0) {
2717 pt1 = YREG + PREG->y_u.yxx.y;
2718 PREG = NEXTOP(NEXTOP(NEXTOP(PREG, yxx), Osbpp), l);
2719 INITIALIZE_PERMVAR(pt1, d0);
2723 Yap_AsmError(DOMAIN_ERROR_NOT_LESS_THAN_ZERO, MkIntegerTerm(d1));
2727 deref_body(d1, pt1, func2s_y_unk2, func2s_y_nvar2);
2728 Yap_AsmError(INSTANTIATION_ERROR,d1);
2735 deref_body(d0, pt1, func2s_y_unk, func2s_y_nvar);
2736 Yap_AsmError(INSTANTIATION_ERROR,d0);
2743 Op(p_func2s_y_cv, yxc);
2745 restart_func2s_y_cv:
2746#ifdef LOW_LEVEL_TRACER
2747 if (Yap_do_low_level_trace) {
2749 HR[1] = PREG->y_u.yxc.c;
2750 HR[2] = XREG(PREG->y_u.yxc.xi);
2751 low_level_trace(enter_pred,
2752 RepPredProp(Yap_GetPredPropByFunc(FunctorFunctor, 0)),
2758 d0 = PREG->y_u.yxc.c;
2761 d1 = XREG(PREG->y_u.yxc.xi);
2762 deref_head(d1, func2s_y_unk_cv);
2765 if (IsIntegerTerm(d1)) {
2766 d1 = IntegerOfTerm(d1);
2768 if (IsBigIntTerm(d1)) {
2769 Yap_AsmError(RESOURCE_ERROR_STACK, d1);
2771 Yap_AsmError(TYPE_ERROR_INTEGER, d1);
2777 if (d0 == TermDot && d1 == 2) {
2779 RESET_VARIABLE(HR + 1);
2785 pt1 = YREG + PREG->y_u.yxc.y;
2786 PREG = NEXTOP(NEXTOP(NEXTOP(PREG, yxc), Osbpp), l);
2787 INITIALIZE_PERMVAR(pt1, d0);
2790 }
else if ((Int)d1 > 0) {
2792 if (!IsAtomTerm(d0)) {
2793 Yap_AsmError(TYPE_ERROR_ATOM,d0);
2796 if (!IsAtomTerm(d0)) {
2799 d0 = (CELL)Yap_MkFunctor(AtomOfTerm(d0), (Int)d1);
2804 if (pt1 + d1 > ENV || pt1 + d1 > (CELL *)B) {
2807 if (!Yap_dogcl(d1 PASS_REGS1)) {
2809 Yap_AsmError(RESOURCE_ERROR_STACK, d1);
2814 goto restart_func2s_y_cv;
2817 RESET_VARIABLE(pt1);
2826 pt1 = YREG + PREG->y_u.yxc.y;
2827 PREG = NEXTOP(NEXTOP(NEXTOP(PREG, yxc), Osbpp), l);
2828 INITIALIZE_PERMVAR(pt1, d0);
2831 }
else if (d1 == 0) {
2833 pt1 = YREG + PREG->y_u.yxc.y;
2834 PREG = NEXTOP(NEXTOP(NEXTOP(PREG, yxc), Osbpp), l);
2835 INITIALIZE_PERMVAR(pt1, d0);
2839 Yap_AsmError(DOMAIN_ERROR_NOT_LESS_THAN_ZERO, MkIntegerTerm(d1));
2843 deref_body(d1, pt1, func2s_y_unk_cv, func2s_y_nvar_cv);
2844 Yap_AsmError(INSTANTIATION_ERROR,d1);
2852 Op(p_func2s_y_vc, yxn);
2854 restart_func2s_y_vc:
2855#ifdef LOW_LEVEL_TRACER
2856 if (Yap_do_low_level_trace) {
2860 ti = MkIntegerTerm((Int)(PREG->y_u.yxn.c));
2862 HR[1] = XREG(PREG->y_u.yxn.xi);
2864 low_level_trace(enter_pred,
2865 RepPredProp(Yap_GetPredPropByFunc(FunctorFunctor, 0)),
2872 d0 = XREG(PREG->y_u.yxn.xi);
2873 deref_head(d0, func2s_y_unk_vc);
2876 d1 = PREG->y_u.yxn.c;
2877 if (!IsAtomicTerm(d0)) {
2878 Yap_AsmError(TYPE_ERROR_ATOM,d0);
2883 if (d0 == TermDot && d1 == 2) {
2885 RESET_VARIABLE(HR + 1);
2891 pt1 = YREG + PREG->y_u.yxn.y;
2892 PREG = NEXTOP(NEXTOP(NEXTOP(PREG, yxn), Osbpp), l);
2893 INITIALIZE_PERMVAR(pt1, d0);
2899 pt1 = YREG + PREG->y_u.yxn.y;
2900 PREG = NEXTOP(NEXTOP(NEXTOP(PREG, yxn), Osbpp), l);
2901 INITIALIZE_PERMVAR(pt1, d0);
2905 if (!IsAtomTerm(d0)) {
2906 Yap_AsmError(TYPE_ERROR_ATOM,d0);
2910 if (!IsAtomTerm(d0)) {
2911 Yap_AsmError(TYPE_ERROR_ATOM,d0);
2915 if (!IsAtomTerm(d0)) {
2918 d0 = (CELL)Yap_MkFunctor(AtomOfTerm(d0), (Int)d1);
2922 if (pt1 + d1 > ENV || pt1 + d1 > (CELL *)B) {
2925 if (!Yap_dogcl(d1 PASS_REGS)) {
2927 Yap_AsmError(RESOURCE_ERROR_STACK, d1);
2932 goto restart_func2s_y_vc;
2935 RESET_VARIABLE(pt1);
2944 pt1 = YREG + PREG->y_u.yxn.y;
2945 PREG = NEXTOP(NEXTOP(NEXTOP(PREG, yxn), Osbpp), l);
2946 INITIALIZE_PERMVAR(pt1, d0);
2952 deref_body(d0, pt1, func2s_y_unk_vc, func2s_y_nvar_vc);
2953 Yap_AsmError(INSTANTIATION_ERROR,d0);
2960 Op(p_func2f_xx, xxx);
2961#ifdef LOW_LEVEL_TRACER
2962 if (Yap_do_low_level_trace) {
2963 HR[0] = XREG(PREG->y_u.xxx.x);
2964 RESET_VARIABLE(HR + 1);
2965 RESET_VARIABLE(HR + 2);
2966 low_level_trace(enter_pred,
2967 RepPredProp(Yap_GetPredPropByFunc(FunctorFunctor, 0)),
2972 d0 = XREG(PREG->y_u.xxx.x);
2973 deref_head(d0, func2f_xx_unk);
2975 if (IsApplTerm(d0)) {
2976 Functor d1 = FunctorOfTerm(d0);
2977 if (IsExtensionFunctor(d1)) {
2978 XREG(PREG->y_u.xxx.x1) = d0;
2979 XREG(PREG->y_u.xxx.x2) = MkIntTerm(0);
2980 PREG = NEXTOP(PREG, xxx);
2983 XREG(PREG->y_u.xxx.x1) = MkAtomTerm(NameOfFunctor(d1));
2984 XREG(PREG->y_u.xxx.x2) = MkIntegerTerm(ArityOfFunctor(d1));
2985 PREG = NEXTOP(PREG, xxx);
2987 }
else if (IsPairTerm(d0)) {
2988 XREG(PREG->y_u.xxx.x1) = TermDot;
2989 XREG(PREG->y_u.xxx.x2) = MkIntTerm(2);
2990 PREG = NEXTOP(PREG, xxx);
2993 XREG(PREG->y_u.xxx.x1) = d0;
2994 XREG(PREG->y_u.xxx.x2) = MkIntTerm(0);
2995 PREG = NEXTOP(PREG, xxx);
3000 deref_body(d0, pt1, func2f_xx_unk, func2f_xx_nvar);
3001 Yap_AsmError(INSTANTIATION_ERROR,d0);
3008 Op(p_func2f_xy, xxy);
3009#ifdef LOW_LEVEL_TRACER
3010 if (Yap_do_low_level_trace) {
3011 HR[0] = XREG(PREG->y_u.xxy.x);
3012 RESET_VARIABLE(HR + 1);
3013 RESET_VARIABLE(HR + 2);
3014 low_level_trace(enter_pred,
3015 RepPredProp(Yap_GetPredPropByFunc(FunctorFunctor, 0)),
3020 d0 = XREG(PREG->y_u.xxy.x);
3021 deref_head(d0, func2f_xy_unk);
3023 if (IsApplTerm(d0)) {
3024 Functor d1 = FunctorOfTerm(d0);
3025 CELL *pt0 = YREG + PREG->y_u.xxy.y2;
3026 if (IsExtensionFunctor(d1)) {
3027 XREG(PREG->y_u.xxy.x1) = d0;
3028 PREG = NEXTOP(PREG, xxy);
3029 INITIALIZE_PERMVAR(pt0, MkIntTerm(0));
3032 XREG(PREG->y_u.xxy.x1) = MkAtomTerm(NameOfFunctor(d1));
3033 PREG = NEXTOP(PREG, xxy);
3034 INITIALIZE_PERMVAR(pt0, MkIntegerTerm(ArityOfFunctor(d1)));
3036 }
else if (IsPairTerm(d0)) {
3037 CELL *pt0 = YREG + PREG->y_u.xxy.y2;
3038 XREG(PREG->y_u.xxy.x1) = TermDot;
3039 PREG = NEXTOP(PREG, xxy);
3040 INITIALIZE_PERMVAR(pt0, MkIntTerm(2));
3043 CELL *pt0 = YREG + PREG->y_u.xxy.y2;
3044 XREG(PREG->y_u.xxy.x1) = d0;
3045 PREG = NEXTOP(PREG, xxy);
3046 INITIALIZE_PERMVAR(pt0, MkIntTerm(0));
3051 deref_body(d0, pt1, func2f_xy_unk, func2f_xy_nvar);
3052 Yap_AsmError(INSTANTIATION_ERROR,d0);
3059 Op(p_func2f_yx, yxx);
3060#ifdef LOW_LEVEL_TRACER
3061 if (Yap_do_low_level_trace) {
3062 HR[0] = XREG(PREG->y_u.yxx.x2);
3063 RESET_VARIABLE(HR + 1);
3064 RESET_VARIABLE(HR + 2);
3065 low_level_trace(enter_pred,
3066 RepPredProp(Yap_GetPredPropByFunc(FunctorFunctor, 0)),
3071 d0 = XREG(PREG->y_u.yxx.x2);
3072 deref_head(d0, func2f_yx_unk);
3074 if (IsApplTerm(d0)) {
3075 Functor d1 = FunctorOfTerm(d0);
3076 CELL *pt0 = YREG + PREG->y_u.yxx.y;
3077 if (IsExtensionFunctor(d1)) {
3078 XREG(PREG->y_u.yxx.x1) = MkIntTerm(0);
3079 PREG = NEXTOP(PREG, yxx);
3080 INITIALIZE_PERMVAR(pt0, d0);
3083 XREG(PREG->y_u.yxx.x1) = MkIntegerTerm(ArityOfFunctor(d1));
3084 PREG = NEXTOP(PREG, yxx);
3085 INITIALIZE_PERMVAR(pt0, MkAtomTerm(NameOfFunctor(d1)));
3087 }
else if (IsPairTerm(d0)) {
3088 CELL *pt0 = YREG + PREG->y_u.yxx.y;
3089 XREG(PREG->y_u.yxx.x1) = MkIntTerm(2);
3090 PREG = NEXTOP(PREG, yxx);
3091 INITIALIZE_PERMVAR(pt0, TermDot);
3094 CELL *pt0 = YREG + PREG->y_u.yxx.y;
3095 XREG(PREG->y_u.yxx.x1) = MkIntTerm(0);
3096 PREG = NEXTOP(PREG, yxx);
3097 INITIALIZE_PERMVAR(pt0, d0);
3102 deref_body(d0, pt1, func2f_yx_unk, func2f_yx_nvar);
3103 Yap_AsmError(INSTANTIATION_ERROR,d0);
3110 Op(p_func2f_yy, yyx);
3111#ifdef LOW_LEVEL_TRACER
3112 if (Yap_do_low_level_trace) {
3113 HR[0] = XREG(PREG->y_u.yyx.x);
3114 RESET_VARIABLE(HR + 1);
3115 RESET_VARIABLE(HR + 2);
3116 low_level_trace(enter_pred,
3117 RepPredProp(Yap_GetPredPropByFunc(FunctorFunctor, 0)),
3122 d0 = XREG(PREG->y_u.yyx.x);
3123 deref_head(d0, func2f_yy_unk);
3125 if (IsApplTerm(d0)) {
3126 Functor d1 = FunctorOfTerm(d0);
3127 CELL *pt0 = YREG + PREG->y_u.yyx.y1;
3128 CELL *pt1 = YREG + PREG->y_u.yyx.y2;
3129 if (IsExtensionFunctor(d1)) {
3130 PREG = NEXTOP(PREG, yyx);
3131 INITIALIZE_PERMVAR(pt0, d0);
3132 INITIALIZE_PERMVAR(pt1, MkIntTerm(0));
3135 PREG = NEXTOP(PREG, yyx);
3136 INITIALIZE_PERMVAR(pt0, MkAtomTerm(NameOfFunctor(d1)));
3137 INITIALIZE_PERMVAR(pt1, MkIntegerTerm(ArityOfFunctor(d1)));
3139 }
else if (IsPairTerm(d0)) {
3140 CELL *pt0 = YREG + PREG->y_u.yyx.y1;
3141 CELL *pt1 = YREG + PREG->y_u.yyx.y2;
3142 PREG = NEXTOP(PREG, yyx);
3143 INITIALIZE_PERMVAR(pt0, TermDot);
3144 INITIALIZE_PERMVAR(pt1, MkIntTerm(2));
3147 CELL *pt0 = YREG + PREG->y_u.yyx.y1;
3148 CELL *pt1 = YREG + PREG->y_u.yyx.y2;
3149 PREG = NEXTOP(PREG, yyx);
3150 INITIALIZE_PERMVAR(pt0, d0);
3151 INITIALIZE_PERMVAR(pt1, MkIntTerm(0));
3156 deref_body(d0, pt1, func2f_yy_unk, func2f_yy_nvar);
3157 Yap_AsmError(INSTANTIATION_ERROR,d0);
3165#ifdef LOW_LEVEL_TRACER
3166 if (Yap_do_low_level_trace)
3167 low_level_trace(enter_pred,
3168 RepPredProp(Yap_GetPredPropByFunc(FunctorFunctor, 0)),
3174 deref_head(d0, func_unk);
3178 if (IsApplTerm(d0)) {
3180 if (IsExtensionFunctor((
Functor)d1)) {
3181 if (d1 <= (CELL)FunctorDouble && d1 >= (CELL)FunctorLongInt) {
3186 d0 = MkAtomTerm(NameOfFunctor((
Functor)d1));
3187 d1 = MkIntTerm(ArityOfFunctor((
Functor)d1));
3189 }
else if (IsPairTerm(d0)) {
3198 register CELL arity = d1;
3201 deref_head(d1, func_nvar_unk);
3213 deref_body(d1, pt0, func_nvar_unk, func_nvar_nvar);
3223 deref_head(d1, func_nvar3_unk);
3230 PREG = NEXTOP(NEXTOP(NEXTOP(PREG, e), Osbmp), l);
3234 deref_body(d1, pt0, func_nvar3_unk, func_nvar3_nvar);
3236 PREG = NEXTOP(NEXTOP(NEXTOP(PREG, e), Osbmp), l);
3246 deref_body(d0, pt0, func_unk, func_nvar);
3250 deref_head(d0, func_var_2unk);
3255 deref_head(d1, func_var_3unk);
3261 Yap_AsmError(TYPE_ERROR_INTEGER, d1);
3264 if (!IsAtomicTerm(d0)) {
3265 Yap_AsmError(TYPE_ERROR_ATOM,d0);
3269 if (d0 == TermDot && d1 == 2) {
3271 RESET_VARIABLE(HR + 1);
3274 }
else if ((Int)d1 > 0) {
3276 if (!IsAtomTerm(d0)) {
3277 Yap_AsmError(TYPE_ERROR_ATOM,d0);
3281 if (!IsAtomTerm(d0)) {
3284 d0 = (CELL)Yap_MkFunctor(AtomOfTerm(d0), (Int)d1);
3288 if (pt1 + d1 > ENV || pt1 + d1 > (CELL *)B) {
3291 if (!Yap_dogcl(d1 PASS_REGS)) {
3293 Yap_AsmError(INSTANTIATION_ERROR,d1);
3297 goto restart_functor;
3300 RESET_VARIABLE(pt1);
3306 }
else if ((Int)d1 < 0) {
3307 Yap_AsmError(DOMAIN_ERROR_NOT_LESS_THAN_ZERO, MkIntegerTerm(d1));
3312 PREG = NEXTOP(NEXTOP(NEXTOP(PREG, e), Osbpp), l);
3317 deref_body(d1, pt1, func_var_3unk, func_var_3nvar);
3318 Yap_AsmError(INSTANTIATION_ERROR,d1);
3325 deref_body(d0, pt1, func_var_2unk, func_var_2nvar);
3326 Yap_AsmError(INSTANTIATION_ERROR,d0);