* src/pbc_merge.c:
[parrot.git] / src / jit / sun4 / core.jit
bloba22f139bfa0a1f17f72316c5e7e97791a3bf39c2
2 ; sun4/core.jit
4 ; $Id$
7 Parrot_end {
8     emitm_ret(NATIVECODE);
9     emitm_restore_i(NATIVECODE, emitm_g(0), emitm_g(0), emitm_g(0));
12 Parrot_noop {
13     emitm_nop(NATIVECODE);
16 TEMPLATE Parrot_set_x_x {
17     if(MAP[1] && MAP[2]){
18     jit_emit_mov_rr<_N>(NATIVECODE, MAP[1], MAP[2]);
19     }
20     else if(MAP[1]){
21         jit_emit_load<_N>(jit_info, interp, 2, MAP[1]);
22     }
23     else if(MAP[2]){
24         jit_emit_store<_N>(jit_info, interp, 1, MAP[2]);
25     }
26     else {
27         jit_emit_load<_N>(jit_info, interp, 2, ISR1);
28         jit_emit_store<_N>(jit_info, interp, 1, ISR1);
29     }
32 Parrot_set_i_i {
33     Parrot_set_x_x s/<_N>/_i/
36 Parrot_set_p_p {
37     Parrot_set_x_x s/<_N>/_i/
40 Parrot_set_s_s {
41     Parrot_set_x_x s/<_N>/_i/
44 Parrot_set_n_n {
45     Parrot_set_x_x s/<_N>/_n/ s/ISR/FSR/
48 Parrot_set_i_ic {
49     Parrot_set_x_x s/<_N>/_i/
52 Parrot_set_n_ic {
53     if(MAP[1]){
54         jit_emit_load_n(jit_info, interp, 2, MAP[1]);
55         emitm_fitod(NATIVECODE, MAP[1], MAP[1]);
56     }
57     else {
58         jit_emit_load_n(jit_info, interp, 2, FSR1);
59         emitm_fitod(NATIVECODE, FSR1, FSR1);
60         jit_emit_store_n(jit_info, interp, 1, FSR1);
61     }
64 Parrot_set_n_nc {
65     Parrot_set_x_x s/<_N>/_n/ s/ISR/FSR/
68 Parrot_set_n_i {
69     /* There's no way to move a value directly between integer and floating
70      * point registers so the mapped integer register must be written to memory
71      */
72     if(MAP[2]){
73         jit_emit_store_i(jit_info, interp, 2, MAP[2]);
74     }
76     jit_emit_load_n(jit_info, interp, 2, FSR1);
78     /* If result register is mapped convert directly into the register */
79     if(MAP[1]){
80     emitm_fitod(NATIVECODE, FSR1, MAP[1]);
81     }
82     else {
83         emitm_fitod(NATIVECODE, FSR1, FSR2);
84         jit_emit_store_n(jit_info, interp, 1, FSR2);
85     }
88 Parrot_set_i_n {
89     if(MAP[2]){
90         emitm_fdtoi(NATIVECODE, MAP[2], FSR2);
91     }
92     else {
93         jit_emit_load_n(jit_info, interp, 2, FSR1);
94         emitm_fdtoi(NATIVECODE, FSR1, FSR2);
95     }
97     jit_emit_store_n(jit_info, interp, 1, FSR2);
99     /* No float reg to integer reg move instruction available */
100     if(MAP[1]){
101         jit_emit_load_i(jit_info, interp, 1, MAP[1]);
102     }
105 Parrot_set_i_nc {
106     if(MAP[2]){
107         emitm_fdtoi(NATIVECODE, MAP[2], FSR1);
108     }
109     else {
110         jit_emit_load_n(jit_info, interp, 2, FSR2);
111         emitm_fdtoi(NATIVECODE, FSR2, FSR1);
112     }
114     jit_emit_store_n(jit_info, interp, 1, FSR1);
116     if(MAP[1]){
117         jit_emit_load_i(jit_info, interp, 1, MAP[1]);
118     }
121 TEMPLATE Parrot_binop_x_x {
122     int arg1, arg2;
124     if (MAP[1]) {
125         arg1 = MAP[1];
126     }
127     else {
128         arg1 = ISR1;
129         jit_emit_load<_N>(jit_info, interp, 1, ISR1);
130     }
132     if (MAP[2]) {
133         arg2 = MAP[2];
134     }
135     else {
136         arg2 = ISR2;
137         jit_emit_load<_N>(jit_info, interp, 2, arg2);
138     }
140     emitm_<op>(NATIVECODE, arg1, arg2, arg1);
142     if(!MAP[1]){
143         jit_emit_store<_N>(jit_info, interp, 1, arg1);
144     }
147 Parrot_add_i_i {
148     Parrot_binop_x_x s/<op>/add_r/ s/<_N>/_i/
151 Parrot_sub_i_i {
152     Parrot_binop_x_x s/<op>/sub_r/ s/<_N>/_i/
155 Parrot_bor_i_i {
156     Parrot_binop_x_x s/<op>/or_r/ s/<_N>/_i/
159 Parrot_bxor_i_i {
160     Parrot_binop_x_x s/<op>/xor_r/ s/<_N>/_i/
163 Parrot_band_i_i {
164     Parrot_binop_x_x s/<op>/and_r/ s/<_N>/_i/
167 Parrot_add_n_n {
168     Parrot_binop_x_x s/<op>/faddd/ s/<_N>/_n/
171 Parrot_sub_n_n {
172     Parrot_binop_x_x s/<op>/fsubd/ s/<_N>/_n/
175 Parrot_mul_n_n {
176     Parrot_binop_x_x s/<op>/fmuld/ s/<_N>/_n/
179 Parrot_div_n_n {
180     Parrot_binop_x_x s/<op>/fdivd/ s/<_N>/_n/
183 TEMPLATE Parrot_incdec_i {
184     int arg1;
186     if(MAP[1]){
187         arg1 = MAP[1];
188     }
189     else {
190         arg1 = ISR1;
191         jit_emit_load_i(jit_info, interp, 1, arg1);
192     }
194     emitm_<op>_i(NATIVECODE, arg1, 1, arg1);
196     if(!MAP[1]){
197         jit_emit_store_i(jit_info, interp, 1, arg1);
198     }
201 Parrot_inc_i {
202     Parrot_incdec_i s/<op>/add/
205 Parrot_dec_i {
206     Parrot_incdec_i s/<op>/sub/
209 TEMPLATE Parrot_binop_i_xc {
210     int arg1;
212     if(MAP[1]){
213         arg1 = MAP[1];
214     }
215     else {
216         arg1 = ISR1;
217         jit_emit_load_i(jit_info, interp, 1, arg1);
218     }
220     if(emitm_simm13_const(*INT_CONST[2])){
221         emitm_<op>_i(NATIVECODE, arg1, *INT_CONST[2], arg1);
222     }
223     else {
224         jit_emit_load_i(jit_info, interp, 2, ISR1);
225         emitm_<op>_r(NATIVECODE, arg1, ISR1, arg1);
226     }
228     if(!MAP[1]){
229         jit_emit_store_i(jit_info, interp, 1, arg1);
230     }
233 Parrot_add_i_ic {
234     Parrot_binop_i_xc s/<op>/add/
237 Parrot_sub_i_ic {
238     Parrot_binop_i_xc s/<op>/sub/
241 Parrot_bor_i_ic {
242     Parrot_binop_i_xc s/<op>/or/
245 Parrot_band_i_ic {
246     Parrot_binop_i_xc s/<op>/and/
249 Parrot_bxor_i_ic {
250     Parrot_binop_i_xc s/<op>/xor/
253 Parrot_add_n_nc {
254     Parrot_binop_x_x s/<op>/faddd/ s/ISR/FSR/ s/<_N>/_n/
257 Parrot_sub_n_nc {
258     Parrot_binop_x_x s/<op>/fsubd/ s/ISR/FSR/ s/<_N>/_n/
261 Parrot_mul_n_nc {
262     Parrot_binop_x_x s/<op>/fmuld/ s/ISR/FSR/ s/<_N>/_n/
265 Parrot_div_n_nc {
266     Parrot_binop_x_x s/<op>/fdivd/ s/ISR/FSR/ s/<_N>/_n/
269 TEMPLATE Parrot_binop_x_x_x {
270     int arg2, arg3;
272     /* Generate load if needed */
273     if(MAP[2]){
274         arg2 = MAP[2];
275     }
276     else {
277         arg2 = ISR1;
278         jit_emit_load<_N>(jit_info, interp, 2, arg2);
279     }
281     /* Generate load if needed */
282     if (MAP[3]) {
283         arg3 = MAP[3];
284     }
285     else {
286         arg3 = ISR2;
287         jit_emit_load<_N>(jit_info, interp, 3, arg3);
288     }
290     /* Destination is a register */
291     if (MAP[1]) {
292         emitm_<op>(NATIVECODE, arg2, arg3, MAP[1]);
293     }
294     /* Destination is memory */
295     else {
296         emitm_<op>(NATIVECODE, arg2, arg3, ISR1);
297         jit_emit_store<_N>(jit_info, interp, 1, ISR1);
298     }
301 Parrot_add_i_ic_ic {
302     Parrot_binop_x_x_x s/<op>/add_r/ s/<_N>/_i/
305 Parrot_sub_i_ic_ic {
306     Parrot_binop_x_x_x s/<op>/sub_r/ s/<_N>/_i/
309 Parrot_band_i_ic_ic {
310     Parrot_binop_x_x_x s/<op>/and_r/ s/<_N>/_i/
313 Parrot_bor_i_ic_ic {
314     Parrot_binop_x_x_x s/<op>/or_r/ s/<_N>/_i/
317 Parrot_bxor_i_ic_ic {
318     Parrot_binop_x_x_x s/<op>/xor_r/ s/<_N>/_i/
321 Parrot_shl_i_ic_ic {
322     Parrot_binop_x_x_x s/<op>/sll_r/ s/<_N>/_i/
325 Parrot_shr_i_ic_ic {
326     Parrot_binop_x_x_x s/<op>/sra_r/ s/<_N>/_i/
329 Parrot_lsr_i_ic_ic {
330     Parrot_binop_x_x_x s/<op>/srl_r/ s/<_N>/_i/
333 Parrot_add_n_nc_nc {
334     Parrot_binop_x_x_x s/<op>/faddd/ s/<_N>/_n/ s/ISR/FSR/
337 Parrot_sub_n_nc_nc {
338     Parrot_binop_x_x_x s/<op>/fsubd/ s/<_N>/_n/ s/ISR/FSR/
341 Parrot_mul_n_nc_nc {
342     Parrot_binop_x_x_x s/<op>/fmuld/ s/<_N>/_n/ s/ISR/FSR/
345 Parrot_div_n_nc_nc {
346     Parrot_binop_x_x_x s/<op>/fdivd/ s/<_N>/_n/ s/ISR/FSR/
349 Parrot_add_i_i_ic {
350     Parrot_binop_x_x_x s/<op>/add_r/ s/<_N>/_i/
353 Parrot_sub_i_i_ic {
354     Parrot_binop_x_x_x s/<op>/sub_r/ s/<_N>/_i/
357 Parrot_bor_i_i_ic {
358     Parrot_binop_x_x_x s/<op>/or_r/ s/<_N>/_i/
361 Parrot_bxor_i_i_ic {
362     Parrot_binop_x_x_x s/<op>/xor_r/ s/<_N>/_i/
365 Parrot_band_i_i_ic {
366     Parrot_binop_x_x_x s/<op>/and_r/ s/<_N>/_i/
369 Parrot_add_n_n_nc {
370     Parrot_binop_x_x_x s/<op>/faddd/ s/<_N>/_n/
373 Parrot_sub_n_n_nc {
374     Parrot_binop_x_x_x s/<op>/fsubd/ s/<_N>/_n/
377 Parrot_mul_n_n_nc {
378     Parrot_binop_x_x_x s/<op>/fmuld/ s/<_N>/_n/
381 Parrot_div_n_n_nc {
382     Parrot_binop_x_x_x s/<op>/fdivd/ s/<_N>/_n/
385 Parrot_add_i_ic_i {
386     Parrot_binop_x_x_x s/<op>/add_r/ s/<_N>/_i/
389 Parrot_sub_i_ic_i {
390     Parrot_binop_x_x_x s/<op>/sub_r/ s/<_N>/_i/
393 Parrot_bor_i_ic_i {
394     Parrot_binop_x_x_x s/<op>/or_r/ s/<_N>/_i/
397 Parrot_bxor_i_ic_i {
398     Parrot_binop_x_x_x s/<op>/xor_r/ s/<_N>/_i/
401 Parrot_band_i_ic_i {
402     Parrot_binop_x_x_x s/<op>/and_r/ s/<_N>/_i/
405 Parrot_shl_i_ic_i {
406     Parrot_binop_x_x_x s/<op>/sll_r/ s/<_N>/_i/
409 Parrot_shr_i_ic_i {
410     Parrot_binop_x_x_x s/<op>/sra_r/ s/<_N>/_i/
413 Parrot_lsr_i_ic_i {
414     Parrot_binop_x_x_x s/<op>/srl_r/ s/<_N>/_i/
417 Parrot_add_n_nc_n {
418     Parrot_binop_x_x_x s/<op>/faddd/ s/<_N>/_n/
421 Parrot_sub_n_nc_n {
422     Parrot_binop_x_x_x s/<op>/fsubd/ s/<_N>/_n/
425 Parrot_mul_n_nc_n {
426     Parrot_binop_x_x_x s/<op>/fmuld/ s/<_N>/_n/
429 Parrot_div_n_nc_n {
430     Parrot_binop_x_x_x s/<op>/fdivd/ s/<_N>/_n/
433 Parrot_add_i_i_i {
434     Parrot_binop_x_x_x s/<op>/add_r/ s/<_N>/_i/
437 Parrot_sub_i_i_i {
438     Parrot_binop_x_x_x s/<op>/sub_r/ s/<_N>/_i/
441 Parrot_bor_i_i_i {
442     Parrot_binop_x_x_x s/<op>/or_r/ s/<_N>/_i/
445 Parrot_bxor_i_i_i {
446     Parrot_binop_x_x_x s/<op>/xor_r/ s/<_N>/_i/
449 Parrot_band_i_i_i {
450     Parrot_binop_x_x_x s/<op>/and_r/ s/<_N>/_i/
453 Parrot_shl_i_i_i {
454     Parrot_binop_x_x_x s/<op>/sll_r/ s/<_N>/_i/
457 Parrot_shr_i_i_i {
458     Parrot_binop_x_x_x s/<op>/sra_r/ s/<_N>/_i/
461 Parrot_lsr_i_i_i {
462     Parrot_binop_x_x_x s/<op>/srl_r/ s/<_N>/_i/
465 Parrot_sub_n_n_n {
466     Parrot_binop_x_x_x s/<op>/fsubd/ s/<_N>/_n/ s/ISR/FSR/
469 Parrot_add_n_n_n {
470     Parrot_binop_x_x_x s/<op>/faddd/ s/<_N>/_n/ s/ISR/FSR/
473 Parrot_mul_n_n_n {
474     Parrot_binop_x_x_x s/<op>/fmuld/ s/<_N>/_n/ s/ISR/FSR/
477 Parrot_div_n_n_n {
478     Parrot_binop_x_x_x s/<op>/fdivd/ s/<_N>/_n/ s/ISR/FSR/
482 ;Parrot_neg_n {
483 ;    if(MAP[1]){
484 ;        emitm_fnegs(NATIVECODE, MAP[1], MAP[1]);
485 ;    }
486 ;    else {
487 ;        jit_emit_load_n(jit_info, interp, 1, FSR1);
488 ;        emitm_fnegs(NATIVECODE, FSR1, FSR1);
489 ;        jit_emit_store_n(jit_info, interp, 1, FSR1);
490 ;    }
493 TEMPLATE Parrot_unop_x_x {
494     if(MAP[1] && MAP[2]){
495         emitm_<op>(NATIVECODE, MAP[2], MAP[1]);
496     }
497     else if(MAP[1]){
498         jit_emit_load<_N>(jit_info, interp, 2, MAP[1]);
499         emitm_<op>(NATIVECODE, MAP[1], MAP[1]);
500     }
501     else {
502         jit_emit_load<_N>(jit_info, interp, 2, ISR1);
503         emitm_<op>(NATIVECODE, ISR1, ISR1);
504         jit_emit_store<_N>(jit_info, interp, 1, ISR1);
505     }
508 TEMPLATE Parrot_unop_x_nc {
509     if(MAP[1] && MAP[2]){
510         emitm_<op>(NATIVECODE, MAP[2], MAP[1]);
511     }
512     else if(MAP[1]){
513         jit_emit_load<_N>(jit_info, interp, 2, MAP[1]);
514         emitm_<op>(NATIVECODE, MAP[1], MAP[1]);
515     }
516     else {
517         jit_emit_load<_N>(jit_info, interp, 2, ISR1);
518         emitm_<op>(NATIVECODE, ISR1, ISR1);
519         jit_emit_store<_N>(jit_info, interp, 1, ISR1);
520     }
523 ;Parrot_neg_n_nc {
524 ;    Parrot_unop_x_x s/<op>/fnegs/ s/<_N>/_n/ s/ISR/FSR/
527 ;Parrot_neg_n_n {
528 ;    Parrot_unop_x_x s/<op>/fnegs/ s/<_N>/_n/ s/ISR/FSR/
531 TEMPLATE Parrot_abs_nx_nx {
532     if(MAP[1] && MAP[2]){
533         emitm_fabss(NATIVECODE, MAP[2], MAP[1]);
534         emitm_fmovs(NATIVECODE, MAP[2] + 1, MAP[1] + 1);
535     }
536     else if(MAP[1]){
537         jit_emit_load_n(jit_info, interp, 2, MAP[1]);
538         emitm_fabss(NATIVECODE, MAP[1], MAP[1]);
539     }
540     else {
541         jit_emit_load_n(jit_info, interp, 2, FSR1);
542         emitm_fabss(NATIVECODE, FSR1, FSR1);
543         jit_emit_store_n(jit_info, interp, 1, FSR1);
544     }
547 Parrot_abs_n_n {
548     Parrot_abs_nx_nx
551 Parrot_abs_n_nc {
552     Parrot_abs_nx_nx
555 TEMPLATE Parrot_sqrt_nx_nx {
556     if(MAP[1] && MAP[2]){
557         emitm_fsqrtd(NATIVECODE, MAP[2], MAP[1]);
558     }
559     else if(MAP[1]){
560         jit_emit_load_n(jit_info, interp, 2, MAP[1]);
561         emitm_fsqrtd(NATIVECODE, MAP[1], MAP[1]);
562     }
563     else {
564         jit_emit_load_n(jit_info, interp, 2, FSR1);
565         emitm_fsqrtd(NATIVECODE, FSR1, FSR1);
566         jit_emit_store_n(jit_info, interp, 1, FSR1);
567     }
570 Parrot_sqrt_n_n {
571     Parrot_sqrt_nx_nx
574 Parrot_sqrt_n_nc {
575     Parrot_sqrt_nx_nx
579 TEMPLATE Parrot_if_ix_x {
580     if(MAP[1]){
581         emitm_subcc_r(NATIVECODE, MAP[1], emitm_g(0), emitm_g(0));
582     }
583     else {
584         jit_emit_load_i(jit_info, interp, 1, ISR1);
585         emitm_subcc_r(NATIVECODE, ISR1, emitm_g(0), emitm_g(0));
586     }
588     Parrot_jit_bicc(jit_info, emitm_<a>, 0, *INT_CONST[2]);
589     emitm_nop(NATIVECODE);
592 Parrot_if_ic_ic {
593     Parrot_if_ix_x s/<a>/bne/
596 Parrot_if_i_ic {
597     Parrot_if_ix_x s/<a>/bne/
600 Parrot_unless_i_ic {
601     Parrot_if_ix_x  s/<a>/be/
604 Parrot_branch_ic {
605     Parrot_jit_bicc(jit_info, emitm_ba, 0, *INT_CONST[1]);
606     emitm_nop(NATIVECODE);
609 TEMPLATE Parrot_cmp_x_x_ic {
610     if(MAP[1] && MAP[2]){
611         emitm_<op>(NATIVECODE, MAP[1], MAP[2] <nill>);
612     }
613     else if (MAP[1]) {
614         jit_emit_load<_N>(jit_info, interp, 2, ISR2);
615         emitm_<op>(NATIVECODE, MAP[1], ISR2 <nill>);
616     }
617     else if (MAP[2]) {
618         jit_emit_load<_N>(jit_info, interp, 1, ISR1);
619         emitm_<op>(NATIVECODE, ISR1, MAP[2] <nill>);
620     }
621     else {
622         jit_emit_load<_N>(jit_info, interp, 1, ISR1);
623         jit_emit_load<_N>(jit_info, interp, 2, ISR2);
624         emitm_<op>(NATIVECODE, ISR1, ISR2 <nill>);
625     }
627     Parrot_jit_<branch>(jit_info, emitm_<a>, 0, *INT_CONST[3]);
628     emitm_nop(NATIVECODE);
631 Parrot_eq_ic_ic_ic {
632     Parrot_cmp_x_x_ic  s/<a>/be/ s/<op>/subcc_r/ s/<branch>/bicc/ s/<_N>/_i/ s/<nill>/, emitm_g(0)/
635 Parrot_eq_i_ic_ic {
636     Parrot_cmp_x_x_ic  s/<a>/be/ s/<op>/subcc_r/ s/<branch>/bicc/ s/<_N>/_i/ s/<nill>/, emitm_g(0)/
639 Parrot_eq_ic_i_ic {
640     Parrot_cmp_x_x_ic  s/<a>/be/ s/<op>/subcc_r/ s/<branch>/bicc/ s/<_N>/_i/ s/<nill>/, emitm_g(0)/
643 Parrot_eq_i_i_ic {
644     Parrot_cmp_x_x_ic  s/<a>/be/ s/<op>/subcc_r/ s/<branch>/bicc/ s/<_N>/_i/ s/<nill>/, emitm_g(0)/
647 Parrot_ne_ic_ic_ic {
648     Parrot_cmp_x_x_ic  s/<a>/bne/ s/<op>/subcc_r/ s/<branch>/bicc/ s/<_N>/_i/ s/<nill>/, emitm_g(0)/
651 Parrot_ne_i_ic_ic {
652     Parrot_cmp_x_x_ic  s/<a>/bne/ s/<op>/subcc_r/ s/<branch>/bicc/ s/<_N>/_i/ s/<nill>/, emitm_g(0)/
655 Parrot_ne_ic_i_ic {
656     Parrot_cmp_x_x_ic  s/<a>/bne/ s/<op>/subcc_r/ s/<branch>/bicc/ s/<_N>/_i/ s/<nill>/, emitm_g(0)/
659 Parrot_ne_i_i_ic {
660     Parrot_cmp_x_x_ic  s/<a>/bne/ s/<op>/subcc_r/ s/<branch>/bicc/ s/<_N>/_i/ s/<nill>/, emitm_g(0)/
663 Parrot_lt_ic_ic_ic {
664     Parrot_cmp_x_x_ic  s/<a>/bl/ s/<op>/subcc_r/ s/<branch>/bicc/ s/<_N>/_i/ s/<nill>/, emitm_g(0)/
667 Parrot_lt_i_ic_ic {
668     Parrot_cmp_x_x_ic  s/<a>/bl/ s/<op>/subcc_r/ s/<branch>/bicc/ s/<_N>/_i/ s/<nill>/, emitm_g(0)/
671 Parrot_lt_ic_i_ic {
672     Parrot_cmp_x_x_ic  s/<a>/bl/ s/<op>/subcc_r/ s/<branch>/bicc/ s/<_N>/_i/ s/<nill>/, emitm_g(0)/
675 Parrot_lt_i_i_ic {
676     Parrot_cmp_x_x_ic  s/<a>/bl/ s/<op>/subcc_r/ s/<branch>/bicc/ s/<_N>/_i/ s/<nill>/, emitm_g(0)/
679 Parrot_le_ic_ic_ic {
680     Parrot_cmp_x_x_ic  s/<a>/ble/ s/<op>/subcc_r/ s/<branch>/bicc/ s/<_N>/_i/ s/<nill>/, emitm_g(0)/
683 Parrot_le_i_ic_ic {
684     Parrot_cmp_x_x_ic  s/<a>/ble/ s/<op>/subcc_r/ s/<branch>/bicc/ s/<_N>/_i/ s/<nill>/, emitm_g(0)/
687 Parrot_le_ic_i_ic {
688     Parrot_cmp_x_x_ic  s/<a>/ble/ s/<op>/subcc_r/ s/<branch>/bicc/ s/<_N>/_i/ s/<nill>/, emitm_g(0)/
691 Parrot_le_i_i_ic {
692     Parrot_cmp_x_x_ic  s/<a>/ble/ s/<op>/subcc_r/ s/<branch>/bicc/ s/<_N>/_i/ s/<nill>/, emitm_g(0)/
695 Parrot_gt_ic_ic_ic {
696     Parrot_cmp_x_x_ic  s/<a>/bg/ s/<op>/subcc_r/ s/<branch>/bicc/ s/<_N>/_i/ s/<nill>/, emitm_g(0)/
699 Parrot_gt_i_ic_ic {
700     Parrot_cmp_x_x_ic  s/<a>/bg/ s/<op>/subcc_r/ s/<branch>/bicc/ s/<_N>/_i/ s/<nill>/, emitm_g(0)/
703 Parrot_gt_ic_i_ic {
704     Parrot_cmp_x_x_ic  s/<a>/bg/ s/<op>/subcc_r/ s/<branch>/bicc/ s/<_N>/_i/ s/<nill>/, emitm_g(0)/
707 Parrot_gt_i_i_ic {
708     Parrot_cmp_x_x_ic  s/<a>/bg/ s/<op>/subcc_r/ s/<branch>/bicc/ s/<_N>/_i/ s/<nill>/, emitm_g(0)/
711 Parrot_ge_ic_ic_ic {
712     Parrot_cmp_x_x_ic  s/<a>/bge/ s/<op>/subcc_r/ s/<branch>/bicc/ s/<_N>/_i/ s/<nill>/, emitm_g(0)/
715 Parrot_ge_i_ic_ic {
716     Parrot_cmp_x_x_ic  s/<a>/bge/ s/<op>/subcc_r/ s/<branch>/bicc/ s/<_N>/_i/ s/<nill>/, emitm_g(0)/
719 Parrot_ge_ic_i_ic {
720     Parrot_cmp_x_x_ic  s/<a>/bge/ s/<op>/subcc_r/ s/<branch>/bicc/ s/<_N>/_i/ s/<nill>/, emitm_g(0)/
723 Parrot_ge_i_i_ic {
724     Parrot_cmp_x_x_ic  s/<a>/bge/ s/<op>/subcc_r/ s/<branch>/bicc/ s/<_N>/_i/ s/<nill>/, emitm_g(0)/
727 Parrot_eq_n_n_ic {
728     Parrot_cmp_x_x_ic  s/<a>/fbe/ s/<op>/fcmpd/ s/<branch>/fbfcc/ s/<_N>/_n/ s/ISR/FSR/ s/<nill>//
731 Parrot_eq_nc_n_ic {
732     Parrot_cmp_x_x_ic  s/<a>/fbe/ s/<op>/fcmpd/ s/<branch>/fbfcc/ s/<_N>/_n/ s/ISR/FSR/ s/<nill>//
735 Parrot_eq_n_nc_ic {
736     Parrot_cmp_x_x_ic  s/<a>/fbe/ s/<op>/fcmpd/ s/<branch>/fbfcc/ s/<_N>/_n/ s/ISR/FSR/ s/<nill>//
739 Parrot_eq_nc_nc_ic {
740     Parrot_cmp_x_x_ic  s/<a>/fbe/ s/<op>/fcmpd/ s/<branch>/fbfcc/ s/<_N>/_n/ s/ISR/FSR/ s/<nill>//
743 Parrot_ne_n_n_ic {
744     Parrot_cmp_x_x_ic  s/<a>/fbne/ s/<op>/fcmpd/ s/<branch>/fbfcc/ s/<_N>/_n/ s/ISR/FSR/ s/<nill>//
747 Parrot_ne_nc_n_ic {
748     Parrot_cmp_x_x_ic  s/<a>/fbne/ s/<op>/fcmpd/ s/<branch>/fbfcc/ s/<_N>/_n/ s/ISR/FSR/ s/<nill>//
751 Parrot_ne_n_nc_ic {
752     Parrot_cmp_x_x_ic  s/<a>/fbne/ s/<op>/fcmpd/ s/<branch>/fbfcc/ s/<_N>/_n/ s/ISR/FSR/ s/<nill>//
755 Parrot_ne_nc_nc_ic {
756     Parrot_cmp_x_x_ic  s/<a>/fbne/ s/<op>/fcmpd/ s/<branch>/fbfcc/ s/<_N>/_n/ s/ISR/FSR/ s/<nill>//
759 Parrot_lt_n_n_ic {
760     Parrot_cmp_x_x_ic  s/<a>/fbl/ s/<op>/fcmpd/ s/<branch>/fbfcc/ s/<_N>/_n/ s/ISR/FSR/ s/<nill>//
763 Parrot_lt_nc_n_ic {
764     Parrot_cmp_x_x_ic  s/<a>/fbl/ s/<op>/fcmpd/ s/<branch>/fbfcc/ s/<_N>/_n/ s/ISR/FSR/ s/<nill>//
767 Parrot_lt_n_nc_ic {
768     Parrot_cmp_x_x_ic  s/<a>/fbl/ s/<op>/fcmpd/ s/<branch>/fbfcc/ s/<_N>/_n/ s/ISR/FSR/ s/<nill>//
771 Parrot_lt_nc_nc_ic {
772     Parrot_cmp_x_x_ic  s/<a>/fbl/ s/<op>/fcmpd/ s/<branch>/fbfcc/ s/<_N>/_n/ s/ISR/FSR/ s/<nill>//
775 Parrot_le_n_n_ic {
776     Parrot_cmp_x_x_ic  s/<a>/fble/ s/<op>/fcmpd/ s/<branch>/fbfcc/ s/<_N>/_n/ s/ISR/FSR/ s/<nill>//
779 Parrot_le_nc_n_ic {
780     Parrot_cmp_x_x_ic  s/<a>/fble/ s/<op>/fcmpd/ s/<branch>/fbfcc/ s/<_N>/_n/ s/ISR/FSR/ s/<nill>//
783 Parrot_le_n_nc_ic {
784     Parrot_cmp_x_x_ic  s/<a>/fble/ s/<op>/fcmpd/ s/<branch>/fbfcc/ s/<_N>/_n/ s/ISR/FSR/ s/<nill>//
787 Parrot_le_nc_nc_ic {
788     Parrot_cmp_x_x_ic  s/<a>/fble/ s/<op>/fcmpd/ s/<branch>/fbfcc/ s/<_N>/_n/ s/ISR/FSR/ s/<nill>//
791 Parrot_gt_n_n_ic {
792     Parrot_cmp_x_x_ic  s/<a>/fbg/ s/<op>/fcmpd/ s/<branch>/fbfcc/ s/<_N>/_n/ s/ISR/FSR/ s/<nill>//
795 Parrot_gt_nc_n_ic {
796     Parrot_cmp_x_x_ic  s/<a>/fbg/ s/<op>/fcmpd/ s/<branch>/fbfcc/ s/<_N>/_n/ s/ISR/FSR/ s/<nill>//
799 Parrot_gt_n_nc_ic {
800     Parrot_cmp_x_x_ic  s/<a>/fbg/ s/<op>/fcmpd/ s/<branch>/fbfcc/ s/<_N>/_n/ s/ISR/FSR/ s/<nill>//
803 Parrot_gt_nc_nc_ic {
804     Parrot_cmp_x_x_ic  s/<a>/fbg/ s/<op>/fcmpd/ s/<branch>/fbfcc/ s/<_N>/_n/ s/ISR/FSR/ s/<nill>//
807 Parrot_ge_n_n_ic {
808     Parrot_cmp_x_x_ic  s/<a>/fbge/ s/<op>/fcmpd/ s/<branch>/fbfcc/ s/<_N>/_n/ s/ISR/FSR/ s/<nill>//
811 Parrot_ge_nc_n_ic {
812     Parrot_cmp_x_x_ic  s/<a>/fbge/ s/<op>/fcmpd/ s/<branch>/fbfcc/ s/<_N>/_n/ s/ISR/FSR/ s/<nill>//
815 Parrot_ge_n_nc_ic {
816     Parrot_cmp_x_x_ic  s/<a>/fbge/ s/<op>/fcmpd/ s/<branch>/fbfcc/ s/<_N>/_n/ s/ISR/FSR/ s/<nill>//
819 Parrot_ge_nc_nc_ic {
820     Parrot_cmp_x_x_ic  s/<a>/fbge/ s/<op>/fcmpd/ s/<branch>/fbfcc/ s/<_N>/_n/ s/ISR/FSR/ s/<nill>//
823 TEMPLATE Parrot_iscmp_ix_ix_ix {
824     if(MAP[2] && MAP[3]){
825         emitm_subcc_r(NATIVECODE, MAP[2], MAP[3], emitm_g(0));
826     }
827     else if (MAP[2]) {
828         jit_emit_load_i(jit_info, interp, 3, ISR2);
829         emitm_subcc_r(NATIVECODE, MAP[2], ISR2, emitm_g(0));
830     }
831     else if (MAP[3]) {
832         jit_emit_load_i(jit_info, interp, 2, ISR1);
833         emitm_subcc_r(NATIVECODE, ISR1, MAP[3], emitm_g(0));
834     }
835     else {
836         jit_emit_load_i(jit_info, interp, 2, ISR1);
837         jit_emit_load_i(jit_info, interp, 3, ISR2);
838         emitm_subcc_r(NATIVECODE, ISR1, ISR2, emitm_g(0));
839     }
841     emitm_bicc(NATIVECODE, 1, emitm_<a>, 3);
843     if(MAP[1]){
844         emitm_mov_i(NATIVECODE, 1, MAP[1]);
845         emitm_or_r(NATIVECODE, emitm_g(0), emitm_g(0), MAP[1]);
846     } else {
847         jit_emit_store_i(jit_info, interp, 1, 1);
848         jit_emit_store_i(jit_info, interp, 1, 0);
849     }
852 Parrot_isgt_i_i_i {
853     Parrot_iscmp_ix_ix_ix  s/<a>/bg/
856 Parrot_isgt_i_ic_i {
857     Parrot_iscmp_ix_ix_ix  s/<a>/bg/
860 Parrot_isgt_i_i_ic {
861     Parrot_iscmp_ix_ix_ix  s/<a>/bg/
864 Parrot_isgt_i_ic_ic {
865     Parrot_iscmp_ix_ix_ix  s/<a>/bg/
868 Parrot_isge_i_i_i {
869     Parrot_iscmp_ix_ix_ix  s/<a>/bge/
872 Parrot_isge_i_ic_i {
873     Parrot_iscmp_ix_ix_ix  s/<a>/bge/
876 Parrot_isge_i_i_ic {
877     Parrot_iscmp_ix_ix_ix  s/<a>/bge/
880 Parrot_isge_i_ic_ic {
881     Parrot_iscmp_ix_ix_ix  s/<a>/bge/
884 Parrot_isle_i_i_i {
885     Parrot_iscmp_ix_ix_ix  s/<a>/ble/
888 Parrot_isle_i_ic_i {
889     Parrot_iscmp_ix_ix_ix  s/<a>/ble/
892 Parrot_isle_i_i_ic {
893     Parrot_iscmp_ix_ix_ix  s/<a>/ble/
896 Parrot_isle_i_ic_ic {
897     Parrot_iscmp_ix_ix_ix  s/<a>/ble/
900 Parrot_islt_i_i_i {
901     Parrot_iscmp_ix_ix_ix  s/<a>/bl/
904 Parrot_islt_i_ic_i {
905     Parrot_iscmp_ix_ix_ix  s/<a>/bl/
908 Parrot_islt_i_i_ic {
909     Parrot_iscmp_ix_ix_ix  s/<a>/bl/
912 Parrot_islt_i_ic_ic {
913     Parrot_iscmp_ix_ix_ix  s/<a>/bl/
916 Parrot_iseq_i_i_i {
917     Parrot_iscmp_ix_ix_ix  s/<a>/be/
920 Parrot_iseq_i_ic_i {
921     Parrot_iscmp_ix_ix_ix  s/<a>/be/
924 Parrot_iseq_i_i_ic {
925     Parrot_iscmp_ix_ix_ix  s/<a>/be/
928 Parrot_iseq_i_ic_ic {
929     Parrot_iscmp_ix_ix_ix  s/<a>/be/
932 Parrot_isne_i_i_i {
933     Parrot_iscmp_ix_ix_ix  s/<a>/bne/
936 Parrot_isne_i_ic_i {
937     Parrot_iscmp_ix_ix_ix  s/<a>/bne/
940 Parrot_isne_i_i_ic {
941     Parrot_iscmp_ix_ix_ix  s/<a>/bne/
944 Parrot_isne_i_ic_ic {
945     Parrot_iscmp_ix_ix_ix  s/<a>/bne/
949  * Local variables:
950  * c-indentation-style: bsd
951  * c-basic-offset: 4
952  * indent-tabs-mode: nil
953  * End:
955  * vim: expandtab shiftwidth=4:
956  */