Home | History | Annotate | Download | only in shader

Lines Matching refs:src

67    } src[3];
192 .src = {
353 .src = {
396 .src = {
427 const struct codegen_src *src = &cg->src[idx];
429 return (src->file == GEN6_FILE_ARF &&
430 src->origin == GEN6_ARF_NULL << CG_REG_SHIFT);
434 * Translate a source operand to DW2 or DW3 of the 1-src/2-src format.
439 const struct codegen_src *src = &cg->src[idx];
445 if (cg->src[0].file == GEN6_FILE_IMM) {
446 assert(!cg->src[0].absolute && !cg->src[0].negate);
448 /* only the last src operand can be an immediate unless it is Gen8+ */
452 return cg->src[idx].origin;
456 return cg->src[1].type << 27 |
457 cg->src[1].file << 25;
462 return cg->src[0].origin;
465 else if (idx && cg->src[1].file == GEN6_FILE_IMM) {
466 assert(!cg->src[1].absolute && !cg->src[1].negate);
467 return cg->src[1].origin;
470 assert(src->file != GEN6_FILE_IMM);
472 if (src->indirect) {
473 const int offset = (int) src->origin;
475 assert(src->file == GEN6_FILE_GRF);
479 assert(src->width == GEN6_WIDTH_4);
480 assert(src->horz_stride == GEN6_HORZSTRIDE_1);
483 assert(!(src->origin & 0xf));
485 dw = src->vert_stride << 21 |
486 src->swizzle[3] << 18 |
487 src->swizzle[2] << 16 |
489 src->negate << 14 |
490 src->absolute << 13 |
491 src->swizzle[1] << 2 |
492 src->swizzle[0];
494 dw |= src->indirect_subreg << 9 |
495 (src->origin & 0x1f0);
497 dw |= src->indirect_subreg << 10 |
498 (src->origin & 0x3f0);
502 assert(src->swizzle[0] == TOY_SWIZZLE_X &&
503 src->swizzle[1] == TOY_SWIZZLE_Y &&
504 src->swizzle[2] == TOY_SWIZZLE_Z &&
505 src->swizzle[3] == TOY_SWIZZLE_W);
507 dw = src->vert_stride << 21 |
508 src->width << 18 |
509 src->horz_stride << 16 |
511 src->negate << 14 |
512 src->absolute << 13;
514 dw |= src->indirect_subreg << 9 |
515 (src->origin & 0x1ff);
517 dw |= src->indirect_subreg << 10 |
518 (src->origin & 0x3ff);
523 switch (src->file) {
527 assert(CG_REG_NUM(src->origin) < 128);
532 assert(CG_REG_NUM(src->origin) < 16);
536 assert(!"invalid src file");
541 assert(src->width == GEN6_WIDTH_4);
542 assert(src->horz_stride == GEN6_HORZSTRIDE_1);
545 assert(!(src->origin & 0xf));
547 dw = src->vert_stride << 21 |
548 src->swizzle[3] << 18 |
549 src->swizzle[2] << 16 |
551 src->negate << 14 |
552 src->absolute << 13 |
553 src->origin |
554 src->swizzle[1] << 2 |
555 src->swizzle[0];
558 assert(src->swizzle[0] == TOY_SWIZZLE_X &&
559 src->swizzle[1] == TOY_SWIZZLE_Y &&
560 src->swizzle[2] == TOY_SWIZZLE_Z &&
561 src->swizzle[3] == TOY_SWIZZLE_W);
563 dw = src->vert_stride << 21 |
564 src->width << 18 |
565 src->horz_stride << 16 |
567 src->negate << 14 |
568 src->absolute << 13 |
569 src->origin;
575 (src->origin & 0x200) : 0;
579 cg->src[1].type << 27 |
580 cg->src[1].file << 25;
594 * 1-src/2-src format.
695 * Translate the destination operand to DW1 of the 1-src/2-src format.
703 cg->src[1].type << 12 |
704 cg->src[1].file << 10 |
705 cg->src[0].type << 7 |
706 cg->src[0].file << 5 |
721 cg->src[0].type << 11 |
722 cg->src[0].file << 9 |
731 * Translate the instruction to DW0 of the 1-src/2-src format.
785 * Codegen an instruction in 1-src/2-src format.
806 * Codegen an instruction in 3-src format.
823 * 3-src instruction restrictions
827 * - GRF src
843 cg->src[2].negate << 10 |
844 cg->src[2].negate << 10 |
845 cg->src[2].absolute << 9 |
846 cg->src[1].negate << 8 |
847 cg->src[1].absolute << 7 |
848 cg->src[0].negate << 6 |
849 cg->src[0].absolute << 5 |
856 cg->src[2].negate << 9 |
857 cg->src[2].absolute << 8 |
858 cg->src[1].negate << 7 |
859 cg->src[1].absolute << 6 |
860 cg->src[0].negate << 5 |
861 cg->src[0].absolute << 4 |
867 const struct codegen_src *src = &cg->src[i];
869 assert(!src->indirect);
870 assert(src->file == GEN6_FILE_GRF && CG_REG_NUM(src->origin) < 128);
871 assert(!(src->origin & 0x3));
873 assert((src->vert_stride == GEN6_VERTSTRIDE_4 &&
874 src->horz_stride == GEN6_HORZSTRIDE_1) ||
875 (src->vert_stride == GEN6_VERTSTRIDE_0 &&
876 src->horz_stride == GEN6_HORZSTRIDE_0));
877 assert(src->width == GEN6_WIDTH_4);
879 dw_src[i] = src->origin << 7 |
880 src->swizzle[3] << 7 |
881 src->swizzle[2] << 5 |
882 src->swizzle[1] << 3 |
883 src->swizzle[0] << 1 |
884 (src->vert_stride == GEN6_VERTSTRIDE_0 &&
885 src->horz_stride == GEN6_HORZSTRIDE_0);
946 for (i = 0; i < ARRAY_SIZE(cg->src); i++) {
947 const int width = width_map[cg->src[i].width];
948 const int horz_stride = horz_stride_map[cg->src[i].horz_stride];
949 const int vert_stride = vert_stride_map[cg->src[i].vert_stride];
1080 for (i = 0; i < ARRAY_SIZE(cg->src); i++) {
1081 struct codegen_src *src = &cg->src[i];
1083 src->file = translate_vfile(inst->src[i].file);
1084 src->type = translate_vtype(inst->src[i].type);
1085 src->indirect = inst->src[i].indirect;
1086 src->indirect_subreg = inst->src[i].indirect_subreg;
1087 src->origin = inst->src[i].val32;
1089 /* do the same for src */
1091 switch (inst->src[i].type) {
1094 src->origin &= 0xffff;
1095 src->origin |= src->origin << 16;
1102 src->swizzle[0] = translate_swizzle(inst->src[i].swizzle_x);
1103 src->swizzle[1] = translate_swizzle(inst->src[i].swizzle_y);
1104 src->swizzle[2] = translate_swizzle(inst->src[i].swizzle_z);
1105 src->swizzle[3] = translate_swizzle(inst->src[i].swizzle_w);
1106 src->absolute = inst->src[i].absolute;
1107 src->negate = inst->src[i].negate;
1109 switch (inst->src[i].rect) {
1113 src->vert_stride = GEN6_VERTSTRIDE_1;
1114 src->width = GEN6_WIDTH_1;
1117 src->vert_stride = GEN6_VERTSTRIDE_2;
1118 src->width = GEN6_WIDTH_2;
1121 src->vert_stride = GEN6_VERTSTRIDE_4;
1122 src->width = GEN6_WIDTH_4;
1125 src->vert_stride = GEN6_VERTSTRIDE_8;
1126 src->width = GEN6_WIDTH_8;
1129 src->vert_stride = GEN6_VERTSTRIDE_16;
1130 src->width = GEN6_WIDTH_16;
1134 src->vert_stride = GEN6_VERTSTRIDE_1;
1135 src->width = GEN6_WIDTH_1;
1138 src->horz_stride = GEN6_HORZSTRIDE_1;
1141 src->vert_stride = GEN6_VERTSTRIDE_0;
1142 src->width = GEN6_WIDTH_4;
1143 src->horz_stride = GEN6_HORZSTRIDE_1;
1146 src->vert_stride = GEN6_VERTSTRIDE_0;
1147 src->width = GEN6_WIDTH_1;
1148 src->horz_stride = GEN6_HORZSTRIDE_0;
1151 src->vert_stride = GEN6_VERTSTRIDE_2;
1152 src->width = GEN6_WIDTH_2;
1153 src->horz_stride = GEN6_HORZSTRIDE_0;
1156 src->vert_stride = GEN6_VERTSTRIDE_4;
1157 src->width = GEN6_WIDTH_4;
1158 src->horz_stride = GEN6_HORZSTRIDE_0;
1161 src->vert_stride = GEN6_VERTSTRIDE_2;
1162 src->width = GEN6_WIDTH_4;
1163 src->horz_stride = GEN6_HORZSTRIDE_0;
1166 assert(!"unsupported src region");
1167 src->vert_stride = GEN6_VERTSTRIDE_1;
1168 src->width = GEN6_WIDTH_1;
1169 src->horz_stride = GEN6_HORZSTRIDE_1;