Home | History | Annotate | Download | only in shader

Lines Matching refs:tc

105 aos_simple(struct toy_compiler *tc,
129 inst = tc_add(tc);
193 aos_set_on_cond(struct toy_compiler *tc,
253 tc_MOV(tc, dst[0], zero);
254 tc_CMP(tc, tdst_null(), src[0], src[1], cond);
255 inst = tc_MOV(tc, dst[0], one);
260 aos_compare(struct toy_compiler *tc,
280 tc_CMP(tc, tdst_null(), src[0], zero, GEN6_COND_L);
281 inst = tc_SEL(tc, dst[0], src[1], src[2], GEN6_COND_NONE);
286 aos_set_sign(struct toy_compiler *tc,
310 tc_MOV(tc, dst[0], zero);
312 tc_CMP(tc, tdst_null(), src[0], zero, GEN6_COND_G);
313 inst = tc_MOV(tc, dst[0], one);
316 tc_CMP(tc, tdst_null(), src[0], zero, GEN6_COND_L);
317 inst = tc_MOV(tc, dst[0], neg_one);
322 aos_tex(struct toy_compiler *tc,
373 inst = tc_add(tc);
385 tc_fail(tc, "texelFetchOffset unsupported");
389 aos_sample(struct toy_compiler *tc,
443 inst = tc_add(tc);
455 aos_LIT(struct toy_compiler *tc,
462 tc_MOV(tc, tdst_writemask(dst[0], TOY_WRITEMASK_XW), tsrc_imm_f(1.0f));
467 tc_MOV(tc, tdst_writemask(dst[0], TOY_WRITEMASK_YZ), tsrc_imm_f(0.0f));
469 tc_CMP(tc, tdst_null(),
474 inst = tc_MOV(tc,
480 inst = tc_POW(tc,
488 aos_EXP(struct toy_compiler *tc,
497 tdst_d(tdst_writemask(tc_alloc_tmp(tc), TOY_WRITEMASK_X));
499 tc_RNDD(tc, tmp, src0);
502 tc_ADD(tc, tmp, tsrc_from(tmp), tsrc_imm_d(127));
503 tc_SHL(tc
507 tc_FRC(tc, tdst_writemask(dst[0], TOY_WRITEMASK_Y), src0);
508 tc_EXP(tc, tdst_writemask(dst[0], TOY_WRITEMASK_Z), src0);
509 tc_MOV(tc, tdst_writemask(dst[0], TOY_WRITEMASK_W), tsrc_imm_f(1.0f));
513 aos_LOG(struct toy_compiler *tc,
523 tmp = tdst_d(tdst_writemask(tc_alloc_tmp(tc), TOY_WRITEMASK_X));
526 tc_SHR(tc, tmp, tsrc_absolute(tsrc_d(src0)), tsrc_imm_d(23));
527 tc_ADD(tc, tdst_writemask(dst[0], TOY_WRITEMASK_X),
531 tc_AND(tc, tmp, tsrc_d(src0), tsrc_imm_d((1 << 23) - 1));
532 tc_OR(tc, tdst_writemask(tdst_d(dst[0]), TOY_WRITEMASK_Y),
536 tc_LOG(tc, tdst_writemask(dst[0], TOY_WRITEMASK_Z), src0);
537 tc_MOV(tc, tdst_writemask(dst[0], TOY_WRITEMASK_W), tsrc_imm_f(1.0f));
541 aos_DST(struct toy_compiler *tc,
546 tc_MOV(tc, tdst_writemask(dst[0], TOY_WRITEMASK_X), tsrc_imm_f(1.0f));
547 tc_MUL(tc, tdst_writemask(dst[0], TOY_WRITEMASK_Y), src[0], src[1]);
548 tc_MOV(tc, tdst_writemask(dst[0], TOY_WRITEMASK_Z), src[0]);
549 tc_MOV(tc, tdst_writemask(dst[0], TOY_WRITEMASK_W), src[1]);
553 aos_LRP(struct toy_compiler *tc,
558 struct toy_dst tmp = tc_alloc_tmp(tc);
560 tc_ADD(tc, tmp, tsrc_negate(src[0]), tsrc_imm_f(1.0f));
561 tc_MUL(tc, tmp, tsrc_from(tmp), src[2]);
562 tc_MAC(tc, dst[0], src[0], src[1], tsrc_from(tmp));
566 aos_DP2A(struct toy_compiler *tc,
571 struct toy_dst tmp = tc_alloc_tmp(tc);
575 tc_DP2(tc, tmp, src[0], src[1]);
576 tc_ADD(tc, dst[0], tsrc_swizzle1(tsrc_from(tmp), TOY_SWIZZLE_X), src[2]);
580 aos_CLAMP(struct toy_compiler *tc,
587 tc_SEL(tc, dst[0], src[0], src[1], GEN6_COND_GE);
588 tc_SEL(tc, dst[0], src[2], tsrc_from(dst[0]), GEN6_COND_L);
592 aos_XPD(struct toy_compiler *tc,
597 struct toy_dst tmp = tc_alloc_tmp(tc);
599 tc_MUL(tc, tdst_writemask(tmp, TOY_WRITEMASK_XYZ),
605 tc_MAC(tc, tdst_writemask(dst[0], TOY_WRITEMASK_XYZ),
612 tc_MOV(tc, tdst_writemask(dst[0], TOY_WRITEMASK_W),
617 aos_PK2H(struct toy_compiler *tc,
624 struct toy_dst tmp = tdst_ud(tc_alloc_tmp(tc));
628 tc_SHL(tc, tmp, h2, tsrc_imm_ud(16));
629 tc_OR(tc, tdst_ud(dst[0]), h1, tsrc_from(tmp));
633 aos_UP2H(struct toy_compiler *tc,
640 tc_AND(tc, tdst_writemask(tdst_ud(dst[0]), TOY_WRITEMASK_XZ),
642 tc_SHR(tc, tdst_writemask(tdst_ud(dst[0]), TOY_WRITEMASK_YW),
647 aos_SCS(struct toy_compiler *tc,
654 tc_add1(tc, TOY_OPCODE_COS,
657 tc_add1(tc, TOY_OPCODE_SIN,
660 tc_MOV(tc, tdst_writemask(dst[0], TOY_WRITEMASK_Z), tsrc_imm_f(0.0f));
661 tc_MOV(tc, tdst_writemask(dst[0], TOY_WRITEMASK_W), tsrc_imm_f(1.0f));
665 aos_DIV(struct toy_compiler *tc,
670 struct toy_dst tmp = tc_alloc_tmp(tc);
674 tc_INV(tc, tmp, src[1]);
675 tc_MUL(tc, dst[0], src[0], tsrc_from(tmp));
679 aos_BRK(struct toy_compiler *tc,
684 tc_add0(tc, GEN6_OPCODE_BREAK);
688 aos_CEIL(struct toy_compiler *tc,
693 struct toy_dst tmp = tc_alloc_tmp(tc);
695 tc_RNDD(tc, tmp, tsrc_negate(src[0]));
696 tc_MOV(tc, dst[0], tsrc_negate(tsrc_from(tmp)));
700 aos_SAD(struct toy_compiler *tc,
705 struct toy_dst tmp = tc_alloc_tmp(tc);
709 tc_ADD(tc, tmp, src[0], tsrc_negate(src[1]));
710 tc_ADD(tc, dst[0], tsrc_absolute(tsrc_from(tmp)), src[2]);
714 aos_CONT(struct toy_compiler *tc,
719 tc_add0(tc, GEN6_OPCODE_CONT);
723 aos_BGNLOOP(struct toy_compiler *tc,
730 inst = tc_add0(tc, TOY_OPCODE_DO);
736 aos_ENDLOOP(struct toy_compiler *tc,
741 tc_add0(tc, GEN6_OPCODE_WHILE);
745 aos_unsupported(struct toy_compiler *tc,
754 tc_fail(tc, "unsupported TGSI instruction");
917 soa_passthrough(struct toy_compiler *tc,
925 translate(tc, tgsi_inst, dst_, src_);
929 soa_per_channel(struct toy_compiler *tc,
953 aos_translate_table[tgsi_inst->Instruction.Opcode](tc,
959 soa_scalar_replicate(struct toy_compiler *tc,
979 tmp = tc_alloc_tmp(tc);
992 tc_add1(tc, opcode, tmp, srcx[0]);
995 tc_add2(tc, opcode, tmp, srcx[0], srcx[1]);
1004 tc_MOV(tc, dst0[i], tsrc_from(tmp));
1008 soa_dot_product(struct toy_compiler *tc,
1021 tmp = tc_alloc_tmp(tc);
1025 tc_MUL(tc, tmp, src[0][1], src[1][1]);
1026 tc_MAC(tc, tmp, src[0][0], src[1][0], tsrc_from(tmp));
1029 tc_MAC(tc, tmp, src[0][1], src[1][1], src[2][0]);
1030 tc_MAC(tc, tmp, src[0][0], src[1][0], tsrc_from(tmp));
1033 tc_MUL(tc, tmp, src[0][2], src[1][2]);
1034 tc_MAC(tc, tmp, src[0][1], src[1][1], tsrc_from(tmp));
1035 tc_MAC(tc, tmp, src[0][0], src[1][0], tsrc_from(tmp));
1038 tc_MAC(tc, tmp, src[0][2], src[1][2], src[1][3]);
1039 tc_MAC(tc, tmp, src[0][1], src[1][1], tsrc_from(tmp));
1040 tc_MAC(tc, tmp, src[0][0], src[1][0], tsrc_from(tmp));
1043 tc_MUL(tc, tmp, src[0][3], src[1][3]);
1044 tc_MAC(tc, tmp, src[0][2], src[1][2], tsrc_from(tmp));
1045 tc_MAC(tc, tmp, src[0][1], src[1][1], tsrc_from(tmp));
1046 tc_MAC(tc, tmp, src[0][0], src[1][0], tsrc_from(tmp));
1054 tc_MOV(tc, dst0[i], tsrc_from(tmp));
1058 soa_partial_derivative(struct toy_compiler *tc,
1064 tc_add1(tc, TOY_OPCODE_DDX, dst_[0], src_[0]);
1066 tc_add1(tc, TOY_OPCODE_DDY, dst_[0], src_[0]);
1070 soa_if(struct toy_compiler *tc,
1081 tc_IF(tc, tdst_null(), src0[0], tsrc_imm_f(0.0f), GEN6_COND_NZ);
1083 tc_IF(tc, tdst_null(), src0[0], tsrc_imm_d(0), GEN6_COND_NZ);
1087 soa_LIT(struct toy_compiler *tc,
1099 tc_MOV(tc, dst0[0], tsrc_imm_f(1.0f));
1100 tc_MOV(tc, dst0[1], src0[0]);
1101 tc_POW(tc, dst0[2], src0[1], src0[3]);
1102 tc_MOV(tc, dst0[3], tsrc_imm_f(1.0f));
1108 tc_CMP(tc, tdst_null(), src0[0], tsrc_imm_f(0.0f), GEN6_COND_L);
1109 inst = tc_MOV(tc, dst0[1], tsrc_imm_f(0.0f));
1111 inst = tc_MOV(tc, dst0[2], tsrc_imm_f(0.0f));
1116 soa_EXP(struct toy_compiler *tc,
1130 struct toy_dst tmp = tdst_d(tc_alloc_tmp(tc));
1132 tc_RNDD(tc, tmp, src0[0]);
1135 tc_ADD(tc, tmp, tsrc_from(tmp), tsrc_imm_d(127));
1136 tc_SHL(tc, tdst_d(dst0[0]), tsrc_from(tmp), tsrc_imm_d(23));
1139 tc_FRC(tc, dst0[1], src0[0]);
1140 tc_EXP(tc, dst0[2], src0[0]);
1141 tc_MOV(tc, dst0[3], tsrc_imm_f(1.0f));
1145 soa_LOG(struct toy_compiler *tc,
1159 struct toy_dst tmp = tdst_d(tc_alloc_tmp(tc));
1162 tc_SHR(tc, tmp, tsrc_absolute(tsrc_d(src0[0])), tsrc_imm_d(23));
1163 tc_ADD(tc, dst0[0], tsrc_from(tmp), tsrc_imm_d(-127));
1166 tc_AND(tc, tmp, tsrc_d(src0[0]), tsrc_imm_d((1 << 23) - 1));
1167 tc_OR(tc, dst0[1], tsrc_from(tmp), tsrc_imm_d(127 << 23));
1170 tc_LOG(tc, dst0[2], src0[0]);
1171 tc_MOV(tc, dst0[3], tsrc_imm_f(1.0f));
1175 soa_DST(struct toy_compiler *tc,
1187 tc_MOV(tc, dst0[0], tsrc_imm_f(1.0f));
1188 tc_MUL(tc, dst0[1], src[0][1], src[1][1]);
1189 tc_MOV(tc, dst0[2], src[0][2]);
1190 tc_MOV(tc, dst0[3], src[1][3]);
1194 soa_XPD(struct toy_compiler *tc,
1207 tc_MUL(tc, dst0[0], src[0][2], src[1][1]);
1208 tc_MAC(tc, dst0[0], src[0][1], src[1][2], tsrc_negate(tsrc_from(dst0[0])));
1211 tc_MUL(tc, dst0[1], src[0][0], src[1][2]);
1212 tc_MAC(tc, dst0[1], src[0][2], src[1][0], tsrc_negate(tsrc_from(dst0[1])));
1215 tc_MUL(tc, dst0[2], src[0][1], src[1][0]);
1216 tc_MAC(tc, dst0[2], src[0][0], src[1][1], tsrc_negate(tsrc_from(dst0[2])));
1218 tc_MOV(tc, dst0[3], tsrc_imm_f(1.0f));
1222 soa_PK2H(struct toy_compiler *tc,
1227 struct toy_dst tmp = tdst_ud(tc_alloc_tmp(tc));
1237 tc_SHL(tc, tmp, src0[1], tsrc_imm_ud(16));
1238 tc_OR(tc, tmp, src0[0], tsrc_from(tmp));
1241 tc_MOV(tc, dst0[i], tsrc_from(tmp));
1245 soa_UP2H(struct toy_compiler *tc,
1258 tc_AND(tc, tdst_ud(dst0[0]), tsrc_ud(src0[0]), tsrc_imm_ud(0xffff));
1259 tc_SHR(tc, tdst_ud(dst0[1]), tsrc_ud(src0[1]), tsrc_imm_ud(16));
1260 tc_AND(tc, tdst_ud(dst0[2]), tsrc_ud(src0[2]), tsrc_imm_ud(0xffff));
1261 tc_SHR(tc, tdst_ud(dst0[3]), tsrc_ud(src0[3]), tsrc_imm_ud(16));
1266 soa_SCS(struct toy_compiler *tc,
1277 tc_add1(tc, TOY_OPCODE_COS, dst0[0], src0[0]);
1278 tc_add1(tc, TOY_OPCODE_SIN, dst0[1], src0[0]);
1279 tc_MOV(tc, dst0[2], tsrc_imm_f(0.0f));
1280 tc_MOV(tc, dst0[3], tsrc_imm_f(1.0f));
1284 soa_unsupported(struct toy_compiler *tc,
1295 tc_fail(tc, "unsupported TGSI instruction in SoA form");
1607 return tc_alloc_vrf(tgsi->tc, count);
1866 inst = tc_add(tgsi->tc);
1971 tc_MOV(tgsi->tc, dst, tsrc_type(tsrc_imm_d(0), type));
1980 tc_MOV(tgsi->tc, tdst[i],
2016 soa_unsupported(tgsi->tc, tgsi_inst, dst, src);
2018 aos_unsupported(tgsi->tc, tgsi_inst, dst, src);
2020 translate(tgsi->tc, tgsi_inst, dst, src);
2029 tgsi->tc->templ.saturate = tgsi_inst->Instruction.Saturate;
2035 inst = tc_add(tgsi->tc);
2055 tc_MOV(tgsi->tc, real_dst, tsrc_from(dst[i]));
2066 tc_MOV(tgsi->tc, tdst[j], tsrc[j]);
2070 tgsi->tc->templ.saturate = false;
2217 tc_add2(tgsi->tc, opcode, dst, tsrc_imm_d(dim), tsrc_imm_d(idx));
2343 tc_fail(tgsi->tc, "failed to add TGSI imm");
2465 init_tgsi(struct toy_tgsi *tgsi, struct toy_compiler *tc, bool aos)
2469 tgsi->tc = tc;
2484 toy_compiler_translate_tgsi(struct toy_compiler *tc,
2490 if (!init_tgsi(tgsi, tc, aos)) {
2491 tc_fail(tc, "failed to initialize TGSI translator");