Lines Matching defs:info

469  * Fill in *info with the operands, default untrapped result, and
479 __fex_get_sse_op(ucontext_t *uap, sseinst_t *inst, fex_info_t *info)
492 info->op1.type = fex_int;
493 info->op1.val.i = inst->op2->i[0];
494 info->op2.type = fex_nodata;
496 info->op1.type = fex_llong;
497 info->op1.val.l = inst->op2->l[0];
498 info->op2.type = fex_nodata;
502 info->op1.type = fex_double;
503 info->op1.val.d = inst->op2->d[0];
504 info->op2.type = fex_nodata;
506 info->op1.type = fex_double;
507 info->op1.val.d = inst->op1->d[0];
508 info->op2.type = fex_double;
509 info->op2.val.d = inst->op2->d[0];
511 info->res.type = fex_double;
514 info->op = fex_cmp;
515 info->res.type = fex_llong;
518 sse_cmpeqsd(&info->op1.val.d, &info->op2.val.d,
519 &info->res.val.l);
523 sse_cmpltsd(&info->op1.val.d, &info->op2.val.d,
524 &info->res.val.l);
528 sse_cmplesd(&info->op1.val.d, &info->op2.val.d,
529 &info->res.val.l);
533 sse_cmpunordsd(&info->op1.val.d,
534 &info->op2.val.d, &info->res.val.l);
537 info->res.val.l ^= 0xffffffffffffffffull;
541 info->op = fex_other;
542 sse_minsd(&info->op1.val.d, &info->op2.val.d,
543 &info->res.val.d);
547 info->op = fex_other;
548 sse_maxsd(&info->op1.val.d, &info->op2.val.d,
549 &info->res.val.d);
553 info->op = fex_add;
554 sse_addsd(&info->op1.val.d, &info->op2.val.d,
555 &info->res.val.d);
556 if (my_fp_class(&info->res.val.d) == fp_subnormal)
561 info->op = fex_sub;
562 sse_subsd(&info->op1.val.d, &info->op2.val.d,
563 &info->res.val.d);
564 if (my_fp_class(&info->res.val.d) == fp_subnormal)
569 info->op = fex_mul;
570 sse_mulsd(&info->op1.val.d, &info->op2.val.d,
571 &info->res.val.d);
572 if (my_fp_class(&info->res.val.d) == fp_subnormal)
577 info->op = fex_div;
578 sse_divsd(&info->op1.val.d, &info->op2.val.d,
579 &info->res.val.d);
580 if (my_fp_class(&info->res.val.d) == fp_subnormal)
585 info->op = fex_sqrt;
586 sse_sqrtsd(&info->op1.val.d, &info->res.val.d);
590 info->op = fex_cnvt;
591 info->res.type = fex_float;
592 sse_cvtsd2ss(&info->op1.val.d, &info->res.val.f);
593 if (my_fp_classf(&info->res.val.f) == fp_subnormal)
598 info->op = fex_cnvt;
599 sse_cvtsi2sd(&info->op1.val.i, &info->res.val.d);
603 info->op = fex_cnvt;
604 info->res.type = fex_int;
605 sse_cvttsd2si(&info->op1.val.d, &info->res.val.i);
609 info->op = fex_cnvt;
610 info->res.type = fex_int;
611 sse_cvtsd2si(&info->op1.val.d, &info->res.val.i);
616 info->op = fex_cnvt;
617 sse_cvtsi2sdq(&info->op1.val.l, &info->res.val.d);
621 info->op = fex_cnvt;
622 info->res.type = fex_llong;
623 sse_cvttsd2siq(&info->op1.val.d, &info->res.val.l);
627 info->op = fex_cnvt;
628 info->res.type = fex_llong;
629 sse_cvtsd2siq(&info->op1.val.d, &info->res.val.l);
634 info->op = fex_cmp;
635 info->res.type = fex_nodata;
636 sse_ucomisd(&info->op1.val.d, &info->op2.val.d);
640 info->op = fex_cmp;
641 info->res.type = fex_nodata;
642 sse_comisd(&info->op1.val.d, &info->op2.val.d);
649 info->op1.type = fex_int;
650 info->op1.val.i = inst->op2->i[0];
651 info->op2.type = fex_nodata;
653 info->op1.type = fex_llong;
654 info->op1.val.l = inst->op2->l[0];
655 info->op2.type = fex_nodata;
659 info->op1.type = fex_float;
660 info->op1.val.f = inst->op2->f[0];
661 info->op2.type = fex_nodata;
663 info->op1.type = fex_float;
664 info->op1.val.f = inst->op1->f[0];
665 info->op2.type = fex_float;
666 info->op2.val.f = inst->op2->f[0];
668 info->res.type = fex_float;
671 info->op = fex_cmp;
672 info->res.type = fex_int;
675 sse_cmpeqss(&info->op1.val.f, &info->op2.val.f,
676 &info->res.val.i);
680 sse_cmpltss(&info->op1.val.f, &info->op2.val.f,
681 &info->res.val.i);
685 sse_cmpless(&info->op1.val.f, &info->op2.val.f,
686 &info->res.val.i);
690 sse_cmpunordss(&info->op1.val.f,
691 &info->op2.val.f, &info->res.val.i);
694 info->res.val.i ^= 0xffffffffu;
698 info->op = fex_other;
699 sse_minss(&info->op1.val.f, &info->op2.val.f,
700 &info->res.val.f);
704 info->op = fex_other;
705 sse_maxss(&info->op1.val.f, &info->op2.val.f,
706 &info->res.val.f);
710 info->op = fex_add;
711 sse_addss(&info->op1.val.f, &info->op2.val.f,
712 &info->res.val.f);
713 if (my_fp_classf(&info->res.val.f) == fp_subnormal)
718 info->op = fex_sub;
719 sse_subss(&info->op1.val.f, &info->op2.val.f,
720 &info->res.val.f);
721 if (my_fp_classf(&info->res.val.f) == fp_subnormal)
726 info->op = fex_mul;
727 sse_mulss(&info->op1.val.f, &info->op2.val.f,
728 &info->res.val.f);
729 if (my_fp_classf(&info->res.val.f) == fp_subnormal)
734 info->op = fex_div;
735 sse_divss(&info->op1.val.f, &info->op2.val.f,
736 &info->res.val.f);
737 if (my_fp_classf(&info->res.val.f) == fp_subnormal)
742 info->op = fex_sqrt;
743 sse_sqrtss(&info->op1.val.f, &info->res.val.f);
747 info->op = fex_cnvt;
748 info->res.type = fex_double;
749 sse_cvtss2sd(&info->op1.val.f, &info->res.val.d);
753 info->op = fex_cnvt;
754 sse_cvtsi2ss(&info->op1.val.i, &info->res.val.f);
758 info->op = fex_cnvt;
759 info->res.type = fex_int;
760 sse_cvttss2si(&info->op1.val.f, &info->res.val.i);
764 info->op = fex_cnvt;
765 info->res.type = fex_int;
766 sse_cvtss2si(&info->op1.val.f, &info->res.val.i);
771 info->op = fex_cnvt;
772 sse_cvtsi2ssq(&info->op1.val.l, &info->res.val.f);
776 info->op = fex_cnvt;
777 info->res.type = fex_llong;
778 sse_cvttss2siq(&info->op1.val.f, &info->res.val.l);
782 info->op = fex_cnvt;
783 info->res.type = fex_llong;
784 sse_cvtss2siq(&info->op1.val.f, &info->res.val.l);
789 info->op = fex_cmp;
790 info->res.type = fex_nodata;
791 sse_ucomiss(&info->op1.val.f, &info->op2.val.f);
795 info->op = fex_cmp;
796 info->res.type = fex_nodata;
797 sse_comiss(&info->op1.val.f, &info->op2.val.f);
804 info->flags = mxcsr & 0x3d;
829 * trapped exception would occur in this part. Also fill in info[i]
838 fex_info_t *info)
853 e[i] = __fex_get_sse_op(uap, &dummy, &info[i]);
862 e[i] = __fex_get_sse_op(uap, &dummy, &info[i]);
871 e[i] = __fex_get_sse_op(uap, &dummy, &info[i]);
880 e[i] = __fex_get_sse_op(uap, &dummy, &info[i]);
889 e[i] = __fex_get_sse_op(uap, &dummy, &info[i]);
898 e[i] = __fex_get_sse_op(uap, &dummy, &info[i]);
907 e[i] = __fex_get_sse_op(uap, &dummy, &info[i]);
916 e[i] = __fex_get_sse_op(uap, &dummy, &info[i]);
925 e[i] = __fex_get_sse_op(uap, &dummy, &info[i]);
934 e[i] = __fex_get_sse_op(uap, &dummy, &info[i]);
943 e[i] = __fex_get_sse_op(uap, &dummy, &info[i]);
952 e[i] = __fex_get_sse_op(uap, &dummy, &info[i]);
961 e[i] = __fex_get_sse_op(uap, &dummy, &info[i]);
970 e[i] = __fex_get_sse_op(uap, &dummy, &info[i]);
980 e[i] = __fex_get_sse_op(uap, &dummy, &info[i]);
989 e[i] = __fex_get_sse_op(uap, &dummy, &info[i]);
998 e[i] = __fex_get_sse_op(uap, &dummy, &info[i]);
1007 e[i] = __fex_get_sse_op(uap, &dummy, &info[i]);
1016 e[i] = __fex_get_sse_op(uap, &dummy, &info[i]);
1025 e[i] = __fex_get_sse_op(uap, &dummy, &info[i]);
1034 e[i] = __fex_get_sse_op(uap, &dummy, &info[i]);
1043 e[i] = __fex_get_sse_op(uap, &dummy, &info[i]);
1053 e[i] = __fex_get_sse_op(uap, &dummy, &info[i]);
1063 e[i] = __fex_get_sse_op(uap, &dummy, &info[i]);
1073 e[i] = __fex_get_sse_op(uap, &dummy, &info[i]);
1082 e[i] = __fex_get_sse_op(uap, &dummy, &info[i]);
1091 e[i] = __fex_get_sse_op(uap, &dummy, &info[i]);
1099 * Store the result value from *info in the destination of the scalar
1108 fex_info_t *info)
1123 /* if info doesn't specify a result value, try to generate
1125 if (info->res.type == fex_nodata) {
1139 (void) __fex_get_sse_op(uap, inst, info);
1140 if (info->res.type == fex_nodata)
1147 info->op1.type = fex_double;
1148 info->op1.val.d = inst->op2->d[0];
1149 info->op2.type = fex_nodata;
1150 info->res.type = fex_float;
1151 info->res.val.f = (float)(fscl * (fscl *
1152 info->op1.val.d));
1154 info->op1.type = fex_double;
1155 info->op1.val.d = inst->op1->d[0];
1156 info->op2.type = fex_double;
1157 info->op2.val.d = inst->op2->d[0];
1158 info->res.type = fex_double;
1161 info->res.val.d = dscl * (dscl *
1162 info->op1.val.d + dscl * info->op2.val.d);
1166 info->res.val.d = dscl * (dscl *
1167 info->op1.val.d - dscl * info->op2.val.d);
1171 info->res.val.d = (dscl * info->op1.val.d) *
1172 (dscl * info->op2.val.d);
1176 info->res.val.d = (dscl * info->op1.val.d) /
1177 (info->op2.val.d / dscl);
1184 info->op1.type = fex_float;
1185 info->op1.val.f = inst->op1->f[0];
1186 info->op2.type = fex_float;
1187 info->op2.val.f = inst->op2->f[0];
1188 info->res.type = fex_float;
1191 info->res.val.f = fscl * (fscl *
1192 info->op1.val.f + fscl * info->op2.val.f);
1196 info->res.val.f = fscl * (fscl *
1197 info->op1.val.f - fscl * info->op2.val.f);
1201 info->res.val.f = (fscl * info->op1.val.f) *
1202 (fscl * info->op2.val.f);
1206 info->res.val.f = (fscl * info->op1.val.f) /
1207 (info->op2.val.f / fscl);
1220 switch (info->res.type) {
1222 i = info->res.val.i;
1226 i = info->res.val.l;
1230 i = info->res.val.f;
1234 i = info->res.val.d;
1238 i = info->res.val.q;
1248 switch (info->res.type) {
1250 l = info->res.val.i;
1254 l = info->res.val.l;
1258 l = info->res.val.f;
1262 l = info->res.val.d;
1266 l = info->res.val.q;
1275 switch (info->res.type) {
1277 d = info->res.val.i;
1281 d = info->res.val.l;
1285 d = info->res.val.f;
1289 d = info->res.val.d;
1293 d = info->res.val.q;
1301 switch (info->res.type) {
1303 f = info->res.val.i;
1307 f = info->res.val.l;
1311 f = info->res.val.f;
1315 f = info->res.val.d;
1319 f = info->res.val.q;
1331 * the result value from info[i] in the i-th part of the destination
1341 fex_info_t *info)
1354 __fex_st_sse_result(uap, &dummy, e[i], &info[i]);
1363 __fex_st_sse_result(uap, &dummy, e[i], &info[i]);
1372 __fex_st_sse_result(uap, &dummy, e[i], &info[i]);
1381 __fex_st_sse_result(uap, &dummy, e[i], &info[i]);
1390 __fex_st_sse_result(uap, &dummy, e[i], &info[i]);
1399 __fex_st_sse_result(uap, &dummy, e[i], &info[i]);
1408 __fex_st_sse_result(uap, &dummy, e[i], &info[i]);
1417 __fex_st_sse_result(uap, &dummy, e[i], &info[i]);
1426 __fex_st_sse_result(uap, &dummy, e[i], &info[i]);
1435 __fex_st_sse_result(uap, &dummy, e[i], &info[i]);
1444 __fex_st_sse_result(uap, &dummy, e[i], &info[i]);
1453 __fex_st_sse_result(uap, &dummy, e[i], &info[i]);
1462 __fex_st_sse_result(uap, &dummy, e[i], &info[i]);
1471 __fex_st_sse_result(uap, &dummy, e[i], &info[i]);
1481 __fex_st_sse_result(uap, &dummy, e[i], &info[i]);
1490 __fex_st_sse_result(uap, &dummy, e[i], &info[i]);
1499 __fex_st_sse_result(uap, &dummy, e[i], &info[i]);
1508 __fex_st_sse_result(uap, &dummy, e[i], &info[i]);
1517 __fex_st_sse_result(uap, &dummy, e[i], &info[i]);
1526 __fex_st_sse_result(uap, &dummy, e[i], &info[i]);
1535 __fex_st_sse_result(uap, &dummy, e[i], &info[i]);
1544 __fex_st_sse_result(uap, &dummy, e[i], &info[i]);
1554 __fex_st_sse_result(uap, &dummy, e[i], &info[i]);
1564 __fex_st_sse_result(uap, &dummy, e[i], &info[i]);
1577 __fex_st_sse_result(uap, &dummy, e[i], &info[i]);
1589 __fex_st_sse_result(uap, &dummy, e[i], &info[i]);
1598 __fex_st_sse_result(uap, &dummy, e[i], &info[i]);