Lines Matching refs:inst

64 __fex_parse_sse(ucontext_t *uap, sseinst_t *inst)  in __fex_parse_sse()  argument
100 inst->op = (int)cvtsi2ss + simd + dbl; in __fex_parse_sse()
102 inst->op = (int)inst->op + (rex & 8); in __fex_parse_sse()
106 inst->op = (int)cvttss2si + simd + dbl; in __fex_parse_sse()
108 inst->op = (int)inst->op + (rex & 8); in __fex_parse_sse()
112 inst->op = (int)cvtss2si + simd + dbl; in __fex_parse_sse()
114 inst->op = (int)inst->op + (rex & 8); in __fex_parse_sse()
121 inst->op = (int)ucomiss + dbl; in __fex_parse_sse()
128 inst->op = (int)comiss + dbl; in __fex_parse_sse()
132 inst->op = (int)sqrtss + simd + dbl; in __fex_parse_sse()
136 inst->op = (int)addss + simd + dbl; in __fex_parse_sse()
140 inst->op = (int)mulss + simd + dbl; in __fex_parse_sse()
144 inst->op = (int)cvtss2sd + simd + dbl; in __fex_parse_sse()
150 inst->op = cvtps2dq; in __fex_parse_sse()
154 inst->op = (simd)? cvtdq2ps : cvttps2dq; in __fex_parse_sse()
159 inst->op = (int)subss + simd + dbl; in __fex_parse_sse()
163 inst->op = (int)minss + simd + dbl; in __fex_parse_sse()
167 inst->op = (int)divss + simd + dbl; in __fex_parse_sse()
171 inst->op = (int)maxss + simd + dbl; in __fex_parse_sse()
175 inst->op = (int)cmpss + simd + dbl; in __fex_parse_sse()
181 inst->op = cvttpd2dq; in __fex_parse_sse()
185 inst->op = (dbl)? cvtpd2dq : cvtdq2pd; in __fex_parse_sse()
196 if (inst->op == cvtss2si || inst->op == cvttss2si || in __fex_parse_sse()
197 inst->op == cvtsd2si || inst->op == cvttsd2si || in __fex_parse_sse()
198 inst->op == cvtss2siq || inst->op == cvttss2siq || in __fex_parse_sse()
199 inst->op == cvtsd2siq || inst->op == cvttsd2siq) { in __fex_parse_sse()
202 inst->op1 = (sseoperand_t *)&uap->uc_mcontext.gregs[regno(r)]; in __fex_parse_sse()
203 } else if (inst->op == cvtps2pi || inst->op == cvttps2pi || in __fex_parse_sse()
204 inst->op == cvtpd2pi || inst->op == cvttpd2pi) { in __fex_parse_sse()
207 inst->op1 = (sseoperand_t *)&uap->uc_mcontext.fpregs.fp_reg_set. in __fex_parse_sse()
210 inst->op1 = (sseoperand_t *)(10 * ((modrm >> 3) & 7) + in __fex_parse_sse()
217 inst->op1 = (sseoperand_t *)&uap->uc_mcontext.fpregs. in __fex_parse_sse()
222 if (inst->op == cvtsi2ss || inst->op == cvtsi2sd || in __fex_parse_sse()
223 inst->op == cvtsi2ssq || inst->op == cvtsi2sdq) { in __fex_parse_sse()
226 inst->op2 = (sseoperand_t *)&uap->uc_mcontext. in __fex_parse_sse()
228 } else if (inst->op == cvtpi2ps || inst->op == cvtpi2pd) { in __fex_parse_sse()
231 inst->op2 = (sseoperand_t *)&uap->uc_mcontext.fpregs. in __fex_parse_sse()
234 inst->op2 = (sseoperand_t *)(10 * (modrm & 7) + in __fex_parse_sse()
241 inst->op2 = (sseoperand_t *)&uap->uc_mcontext.fpregs. in __fex_parse_sse()
248 if (inst->op == cmpss || inst->op == cmpps || in __fex_parse_sse()
249 inst->op == cmpsd || inst->op == cmppd) in __fex_parse_sse()
251 inst->op2 = (sseoperand_t *)(ip + r + *(int *)(ip + i)); in __fex_parse_sse()
254 inst->op2 = (sseoperand_t *)(*(int *)(ip + i)); in __fex_parse_sse()
289 inst->op2 = (sseoperand_t *)addr; in __fex_parse_sse()
292 if (inst->op == cmpss || inst->op == cmpps || inst->op == cmpsd || in __fex_parse_sse()
293 inst->op == cmppd) { in __fex_parse_sse()
295 inst->imm = ip[i++]; in __fex_parse_sse()
342 __fex_get_sse_invalid_type(sseinst_t *inst) in __fex_get_sse_invalid_type() argument
347 t2 = ((int)inst->op & DOUBLE)? my_fp_class(&inst->op2->d[0]) : in __fex_get_sse_invalid_type()
348 my_fp_classf(&inst->op2->f[0]); in __fex_get_sse_invalid_type()
353 switch (inst->op) { in __fex_get_sse_invalid_type()
377 t1 = ((int)inst->op & DOUBLE)? my_fp_class(&inst->op1->d[0]) : in __fex_get_sse_invalid_type()
378 my_fp_classf(&inst->op1->f[0]); in __fex_get_sse_invalid_type()
383 switch (inst->op) { in __fex_get_sse_invalid_type()
479 __fex_get_sse_op(ucontext_t *uap, sseinst_t *inst, fex_info_t *info) in __fex_get_sse_op() argument
490 if ((int)inst->op & DOUBLE) { in __fex_get_sse_op()
491 if (inst->op == cvtsi2sd) { in __fex_get_sse_op()
493 info->op1.val.i = inst->op2->i[0]; in __fex_get_sse_op()
495 } else if (inst->op == cvtsi2sdq) { in __fex_get_sse_op()
497 info->op1.val.l = inst->op2->l[0]; in __fex_get_sse_op()
499 } else if (inst->op == sqrtsd || inst->op == cvtsd2ss || in __fex_get_sse_op()
500 inst->op == cvttsd2si || inst->op == cvtsd2si || in __fex_get_sse_op()
501 inst->op == cvttsd2siq || inst->op == cvtsd2siq) { in __fex_get_sse_op()
503 info->op1.val.d = inst->op2->d[0]; in __fex_get_sse_op()
507 info->op1.val.d = inst->op1->d[0]; in __fex_get_sse_op()
509 info->op2.val.d = inst->op2->d[0]; in __fex_get_sse_op()
512 switch (inst->op) { in __fex_get_sse_op()
516 switch (inst->imm & 3) { in __fex_get_sse_op()
536 if (inst->imm & 4) in __fex_get_sse_op()
648 if (inst->op == cvtsi2ss) { in __fex_get_sse_op()
650 info->op1.val.i = inst->op2->i[0]; in __fex_get_sse_op()
652 } else if (inst->op == cvtsi2ssq) { in __fex_get_sse_op()
654 info->op1.val.l = inst->op2->l[0]; in __fex_get_sse_op()
656 } else if (inst->op == sqrtss || inst->op == cvtss2sd || in __fex_get_sse_op()
657 inst->op == cvttss2si || inst->op == cvtss2si || in __fex_get_sse_op()
658 inst->op == cvttss2siq || inst->op == cvtss2siq) { in __fex_get_sse_op()
660 info->op1.val.f = inst->op2->f[0]; in __fex_get_sse_op()
664 info->op1.val.f = inst->op1->f[0]; in __fex_get_sse_op()
666 info->op2.val.f = inst->op2->f[0]; in __fex_get_sse_op()
669 switch (inst->op) { in __fex_get_sse_op()
673 switch (inst->imm & 3) { in __fex_get_sse_op()
693 if (inst->imm & 4) in __fex_get_sse_op()
812 return __fex_get_sse_invalid_type(inst); in __fex_get_sse_op()
837 __fex_get_simd_op(ucontext_t *uap, sseinst_t *inst, enum fex_exception *e, in __fex_get_simd_op() argument
846 switch (inst->op) { in __fex_get_simd_op()
849 dummy.imm = inst->imm; in __fex_get_simd_op()
851 dummy.op1 = (sseoperand_t *)&inst->op1->f[i]; in __fex_get_simd_op()
852 dummy.op2 = (sseoperand_t *)&inst->op2->f[i]; in __fex_get_simd_op()
860 dummy.op1 = (sseoperand_t *)&inst->op1->f[i]; in __fex_get_simd_op()
861 dummy.op2 = (sseoperand_t *)&inst->op2->f[i]; in __fex_get_simd_op()
869 dummy.op1 = (sseoperand_t *)&inst->op1->f[i]; in __fex_get_simd_op()
870 dummy.op2 = (sseoperand_t *)&inst->op2->f[i]; in __fex_get_simd_op()
878 dummy.op1 = (sseoperand_t *)&inst->op1->f[i]; in __fex_get_simd_op()
879 dummy.op2 = (sseoperand_t *)&inst->op2->f[i]; in __fex_get_simd_op()
887 dummy.op1 = (sseoperand_t *)&inst->op1->f[i]; in __fex_get_simd_op()
888 dummy.op2 = (sseoperand_t *)&inst->op2->f[i]; in __fex_get_simd_op()
896 dummy.op1 = (sseoperand_t *)&inst->op1->f[i]; in __fex_get_simd_op()
897 dummy.op2 = (sseoperand_t *)&inst->op2->f[i]; in __fex_get_simd_op()
905 dummy.op1 = (sseoperand_t *)&inst->op1->f[i]; in __fex_get_simd_op()
906 dummy.op2 = (sseoperand_t *)&inst->op2->f[i]; in __fex_get_simd_op()
914 dummy.op1 = (sseoperand_t *)&inst->op1->f[i]; in __fex_get_simd_op()
915 dummy.op2 = (sseoperand_t *)&inst->op2->f[i]; in __fex_get_simd_op()
923 dummy.op1 = (sseoperand_t *)&inst->op1->f[i]; in __fex_get_simd_op()
924 dummy.op2 = (sseoperand_t *)&inst->op2->i[i]; in __fex_get_simd_op()
932 dummy.op1 = (sseoperand_t *)&inst->op1->i[i]; in __fex_get_simd_op()
933 dummy.op2 = (sseoperand_t *)&inst->op2->f[i]; in __fex_get_simd_op()
941 dummy.op1 = (sseoperand_t *)&inst->op1->i[i]; in __fex_get_simd_op()
942 dummy.op2 = (sseoperand_t *)&inst->op2->f[i]; in __fex_get_simd_op()
950 dummy.op1 = (sseoperand_t *)&inst->op1->f[i]; in __fex_get_simd_op()
951 dummy.op2 = (sseoperand_t *)&inst->op2->i[i]; in __fex_get_simd_op()
959 dummy.op1 = (sseoperand_t *)&inst->op1->i[i]; in __fex_get_simd_op()
960 dummy.op2 = (sseoperand_t *)&inst->op2->f[i]; in __fex_get_simd_op()
968 dummy.op1 = (sseoperand_t *)&inst->op1->i[i]; in __fex_get_simd_op()
969 dummy.op2 = (sseoperand_t *)&inst->op2->f[i]; in __fex_get_simd_op()
976 dummy.imm = inst->imm; in __fex_get_simd_op()
978 dummy.op1 = (sseoperand_t *)&inst->op1->d[i]; in __fex_get_simd_op()
979 dummy.op2 = (sseoperand_t *)&inst->op2->d[i]; in __fex_get_simd_op()
987 dummy.op1 = (sseoperand_t *)&inst->op1->d[i]; in __fex_get_simd_op()
988 dummy.op2 = (sseoperand_t *)&inst->op2->d[i]; in __fex_get_simd_op()
996 dummy.op1 = (sseoperand_t *)&inst->op1->d[i]; in __fex_get_simd_op()
997 dummy.op2 = (sseoperand_t *)&inst->op2->d[i]; in __fex_get_simd_op()
1005 dummy.op1 = (sseoperand_t *)&inst->op1->d[i]; in __fex_get_simd_op()
1006 dummy.op2 = (sseoperand_t *)&inst->op2->d[i]; in __fex_get_simd_op()
1014 dummy.op1 = (sseoperand_t *)&inst->op1->d[i]; in __fex_get_simd_op()
1015 dummy.op2 = (sseoperand_t *)&inst->op2->d[i]; in __fex_get_simd_op()
1023 dummy.op1 = (sseoperand_t *)&inst->op1->d[i]; in __fex_get_simd_op()
1024 dummy.op2 = (sseoperand_t *)&inst->op2->d[i]; in __fex_get_simd_op()
1032 dummy.op1 = (sseoperand_t *)&inst->op1->d[i]; in __fex_get_simd_op()
1033 dummy.op2 = (sseoperand_t *)&inst->op2->d[i]; in __fex_get_simd_op()
1041 dummy.op1 = (sseoperand_t *)&inst->op1->d[i]; in __fex_get_simd_op()
1042 dummy.op2 = (sseoperand_t *)&inst->op2->d[i]; in __fex_get_simd_op()
1051 dummy.op1 = (sseoperand_t *)&inst->op1->d[i]; in __fex_get_simd_op()
1052 dummy.op2 = (sseoperand_t *)&inst->op2->i[i]; in __fex_get_simd_op()
1061 dummy.op1 = (sseoperand_t *)&inst->op1->i[i]; in __fex_get_simd_op()
1062 dummy.op2 = (sseoperand_t *)&inst->op2->d[i]; in __fex_get_simd_op()
1071 dummy.op1 = (sseoperand_t *)&inst->op1->i[i]; in __fex_get_simd_op()
1072 dummy.op2 = (sseoperand_t *)&inst->op2->d[i]; in __fex_get_simd_op()
1080 dummy.op1 = (sseoperand_t *)&inst->op1->d[i]; in __fex_get_simd_op()
1081 dummy.op2 = (sseoperand_t *)&inst->op2->f[i]; in __fex_get_simd_op()
1089 dummy.op1 = (sseoperand_t *)&inst->op1->f[i]; in __fex_get_simd_op()
1090 dummy.op2 = (sseoperand_t *)&inst->op2->d[i]; in __fex_get_simd_op()
1107 __fex_st_sse_result(ucontext_t *uap, sseinst_t *inst, enum fex_exception e, in __fex_st_sse_result() argument
1117 if (inst->op == ucomiss || inst->op == comiss || in __fex_st_sse_result()
1118 inst->op == ucomisd || inst->op == comisd) { in __fex_st_sse_result()
1139 (void) __fex_get_sse_op(uap, inst, info); in __fex_st_sse_result()
1146 if (inst->op == cvtsd2ss) { in __fex_st_sse_result()
1148 info->op1.val.d = inst->op2->d[0]; in __fex_st_sse_result()
1153 } else if ((int)inst->op & DOUBLE) { in __fex_st_sse_result()
1155 info->op1.val.d = inst->op1->d[0]; in __fex_st_sse_result()
1157 info->op2.val.d = inst->op2->d[0]; in __fex_st_sse_result()
1159 switch (inst->op) { in __fex_st_sse_result()
1185 info->op1.val.f = inst->op1->f[0]; in __fex_st_sse_result()
1187 info->op2.val.f = inst->op2->f[0]; in __fex_st_sse_result()
1189 switch (inst->op) { in __fex_st_sse_result()
1218 if (inst->op == cmpss || inst->op == cvttss2si || inst->op == cvtss2si in __fex_st_sse_result()
1219 || inst->op == cvttsd2si || inst->op == cvtsd2si) { in __fex_st_sse_result()
1244 inst->op1->i[0] = i; in __fex_st_sse_result()
1245 } else if (inst->op == cmpsd || inst->op == cvttss2siq || in __fex_st_sse_result()
1246 inst->op == cvtss2siq || inst->op == cvttsd2siq || in __fex_st_sse_result()
1247 inst->op == cvtsd2siq) { in __fex_st_sse_result()
1272 inst->op1->l[0] = l; in __fex_st_sse_result()
1273 } else if ((((int)inst->op & DOUBLE) && inst->op != cvtsd2ss) || in __fex_st_sse_result()
1274 inst->op == cvtss2sd) { in __fex_st_sse_result()
1299 inst->op1->d[0] = d; in __fex_st_sse_result()
1325 inst->op1->f[0] = f; in __fex_st_sse_result()
1340 __fex_st_simd_result(ucontext_t *uap, sseinst_t *inst, enum fex_exception *e, in __fex_st_simd_result() argument
1347 switch (inst->op) { in __fex_st_simd_result()
1350 dummy.imm = inst->imm; in __fex_st_simd_result()
1352 dummy.op1 = (sseoperand_t *)&inst->op1->f[i]; in __fex_st_simd_result()
1353 dummy.op2 = (sseoperand_t *)&inst->op2->f[i]; in __fex_st_simd_result()
1361 dummy.op1 = (sseoperand_t *)&inst->op1->f[i]; in __fex_st_simd_result()
1362 dummy.op2 = (sseoperand_t *)&inst->op2->f[i]; in __fex_st_simd_result()
1370 dummy.op1 = (sseoperand_t *)&inst->op1->f[i]; in __fex_st_simd_result()
1371 dummy.op2 = (sseoperand_t *)&inst->op2->f[i]; in __fex_st_simd_result()
1379 dummy.op1 = (sseoperand_t *)&inst->op1->f[i]; in __fex_st_simd_result()
1380 dummy.op2 = (sseoperand_t *)&inst->op2->f[i]; in __fex_st_simd_result()
1388 dummy.op1 = (sseoperand_t *)&inst->op1->f[i]; in __fex_st_simd_result()
1389 dummy.op2 = (sseoperand_t *)&inst->op2->f[i]; in __fex_st_simd_result()
1397 dummy.op1 = (sseoperand_t *)&inst->op1->f[i]; in __fex_st_simd_result()
1398 dummy.op2 = (sseoperand_t *)&inst->op2->f[i]; in __fex_st_simd_result()
1406 dummy.op1 = (sseoperand_t *)&inst->op1->f[i]; in __fex_st_simd_result()
1407 dummy.op2 = (sseoperand_t *)&inst->op2->f[i]; in __fex_st_simd_result()
1415 dummy.op1 = (sseoperand_t *)&inst->op1->f[i]; in __fex_st_simd_result()
1416 dummy.op2 = (sseoperand_t *)&inst->op2->f[i]; in __fex_st_simd_result()
1424 dummy.op1 = (sseoperand_t *)&inst->op1->f[i]; in __fex_st_simd_result()
1425 dummy.op2 = (sseoperand_t *)&inst->op2->i[i]; in __fex_st_simd_result()
1433 dummy.op1 = (sseoperand_t *)&inst->op1->i[i]; in __fex_st_simd_result()
1434 dummy.op2 = (sseoperand_t *)&inst->op2->f[i]; in __fex_st_simd_result()
1442 dummy.op1 = (sseoperand_t *)&inst->op1->i[i]; in __fex_st_simd_result()
1443 dummy.op2 = (sseoperand_t *)&inst->op2->f[i]; in __fex_st_simd_result()
1451 dummy.op1 = (sseoperand_t *)&inst->op1->f[i]; in __fex_st_simd_result()
1452 dummy.op2 = (sseoperand_t *)&inst->op2->i[i]; in __fex_st_simd_result()
1460 dummy.op1 = (sseoperand_t *)&inst->op1->i[i]; in __fex_st_simd_result()
1461 dummy.op2 = (sseoperand_t *)&inst->op2->f[i]; in __fex_st_simd_result()
1469 dummy.op1 = (sseoperand_t *)&inst->op1->i[i]; in __fex_st_simd_result()
1470 dummy.op2 = (sseoperand_t *)&inst->op2->f[i]; in __fex_st_simd_result()
1477 dummy.imm = inst->imm; in __fex_st_simd_result()
1479 dummy.op1 = (sseoperand_t *)&inst->op1->d[i]; in __fex_st_simd_result()
1480 dummy.op2 = (sseoperand_t *)&inst->op2->d[i]; in __fex_st_simd_result()
1488 dummy.op1 = (sseoperand_t *)&inst->op1->d[i]; in __fex_st_simd_result()
1489 dummy.op2 = (sseoperand_t *)&inst->op2->d[i]; in __fex_st_simd_result()
1497 dummy.op1 = (sseoperand_t *)&inst->op1->d[i]; in __fex_st_simd_result()
1498 dummy.op2 = (sseoperand_t *)&inst->op2->d[i]; in __fex_st_simd_result()
1506 dummy.op1 = (sseoperand_t *)&inst->op1->d[i]; in __fex_st_simd_result()
1507 dummy.op2 = (sseoperand_t *)&inst->op2->d[i]; in __fex_st_simd_result()
1515 dummy.op1 = (sseoperand_t *)&inst->op1->d[i]; in __fex_st_simd_result()
1516 dummy.op2 = (sseoperand_t *)&inst->op2->d[i]; in __fex_st_simd_result()
1524 dummy.op1 = (sseoperand_t *)&inst->op1->d[i]; in __fex_st_simd_result()
1525 dummy.op2 = (sseoperand_t *)&inst->op2->d[i]; in __fex_st_simd_result()
1533 dummy.op1 = (sseoperand_t *)&inst->op1->d[i]; in __fex_st_simd_result()
1534 dummy.op2 = (sseoperand_t *)&inst->op2->d[i]; in __fex_st_simd_result()
1542 dummy.op1 = (sseoperand_t *)&inst->op1->d[i]; in __fex_st_simd_result()
1543 dummy.op2 = (sseoperand_t *)&inst->op2->d[i]; in __fex_st_simd_result()
1552 dummy.op1 = (sseoperand_t *)&inst->op1->d[i]; in __fex_st_simd_result()
1553 dummy.op2 = (sseoperand_t *)&inst->op2->i[i]; in __fex_st_simd_result()
1562 dummy.op1 = (sseoperand_t *)&inst->op1->i[i]; in __fex_st_simd_result()
1563 dummy.op2 = (sseoperand_t *)&inst->op2->d[i]; in __fex_st_simd_result()
1567 if (inst->op == cvttpd2dq) in __fex_st_simd_result()
1568 inst->op1->l[1] = 0ll; in __fex_st_simd_result()
1575 dummy.op1 = (sseoperand_t *)&inst->op1->i[i]; in __fex_st_simd_result()
1576 dummy.op2 = (sseoperand_t *)&inst->op2->d[i]; in __fex_st_simd_result()
1580 if (inst->op == cvtpd2dq) in __fex_st_simd_result()
1581 inst->op1->l[1] = 0ll; in __fex_st_simd_result()
1587 dummy.op1 = (sseoperand_t *)&inst->op1->d[i]; in __fex_st_simd_result()
1588 dummy.op2 = (sseoperand_t *)&inst->op2->f[i]; in __fex_st_simd_result()
1596 dummy.op1 = (sseoperand_t *)&inst->op1->f[i]; in __fex_st_simd_result()
1597 dummy.op2 = (sseoperand_t *)&inst->op2->d[i]; in __fex_st_simd_result()
1601 inst->op1->l[1] = 0ll; in __fex_st_simd_result()