Home | History | Annotate | Download | only in gallivm

Lines Matching refs:bld

75    struct lp_build_tgsi_aos_context *bld = lp_aos_context(bld_base);
82 swizzles[bld->inv_swizzles[0]] = bld->swizzles[swizzle_x];
83 swizzles[bld->inv_swizzles[1]] = bld->swizzles[swizzle_y];
84 swizzles[bld->inv_swizzles[2]] = bld->swizzles[swizzle_z];
85 swizzles[bld->inv_swizzles[3]] = bld->swizzles[swizzle_w];
87 return lp_build_swizzle_aos(&bld->bld_base.base, a, swizzles);
92 swizzle_scalar_aos(struct lp_build_tgsi_aos_context *bld,
96 chan = bld->swizzles[chan];
97 return lp_build_swizzle_scalar_aos(&bld->bld_base.base, a, chan);
108 struct lp_build_tgsi_aos_context * bld = lp_aos_context(bld_base);
120 res = bld->bld_base.base.undef;
127 index = lp_build_const_int32(bld->bld_base.base.gallivm,
130 scalar_ptr = LLVMBuildGEP(builder, bld->consts_ptr, &index, 1, "");
140 swizzle = lp_build_const_int32(bld->bld_base.base.gallivm,
141 bld->swizzles[chan]);
157 shuffles[chan] = lp_build_const_int32(bld->bld_base.base.gallivm, chan);
165 res, bld->bld_base.base.undef,
179 struct lp_build_tgsi_aos_context * bld = lp_aos_context(bld_base);
180 LLVMValueRef res = bld->immediates[reg->Register.Index];
192 struct lp_build_tgsi_aos_context * bld = lp_aos_context(bld_base);
193 LLVMValueRef res = bld->inputs[reg->Register.Index];
206 struct lp_build_tgsi_aos_context * bld = lp_aos_context(bld_base);
208 LLVMValueRef temp_ptr = bld->temps[reg->Register.Index];
212 return bld->bld_base.base.undef;
222 struct lp_build_tgsi_aos_context *bld,
227 LLVMBuilderRef builder = bld->bld_base.base.gallivm->builder;
241 value = lp_build_max(&bld->bld_base.base, value, bld->bld_base.base.zero);
242 value = lp_build_min(&bld->bld_base.base, value, bld->bld_base.base.one);
246 value = lp_build_max(&bld->bld_base.base, value, lp_build_const_vec(bld->bld_base.base.gallivm, bld->bld_base.base.type, -1.0));
247 value = lp_build_min(&bld->bld_base.base, value, bld->bld_base.base.one);
262 ptr = bld->outputs[reg->Register.Index];
266 ptr = bld->temps[reg->Register.Index];
270 ptr = bld->addr[reg->Indirect.Index];
274 ptr = bld->preds[reg->Register.Index];
294 bld->preds[inst->Predicate.Index], "");
299 pred = lp_build_compare(bld->bld_base.base.gallivm,
300 bld->bld_base.base.type,
303 bld->bld_base.base.zero);
309 pred = bld->bld_base.emit_swizzle(&bld->bld_base, pred,
329 writemask = lp_build_const_mask_aos_swizzled(bld->bld_base.base.gallivm,
330 bld->bld_base.base.type,
332 bld->swizzles);
345 value = lp_build_select(&bld->bld_base.base,
358 emit_tex(struct lp_build_tgsi_aos_context *bld,
369 if (!bld->sampler) {
371 return bld->bld_base.base.undef;
376 coords = lp_build_emit_fetch( &bld->bld_base, inst, 0 , LP_CHAN_ALL);
379 ddx = lp_build_emit_fetch( &bld->bld_base, inst, 1 , LP_CHAN_ALL);
380 ddy = lp_build_emit_fetch( &bld->bld_base, inst, 2 , LP_CHAN_ALL);
384 ddx = lp_build_ddx( &bld->bld_base.base, coords );
385 ddy = lp_build_ddy( &bld->bld_base.base, coords );
388 derivs.ddx_ddy[0] = bld->bld_base.base.one;
389 derivs.ddx_ddy[1] = bld->bld_base.base.one;
394 return bld->sampler->emit_fetch_texel(bld->sampler,
395 &bld->bld_base.base,
404 struct lp_build_tgsi_aos_context *bld,
407 struct gallivm_state *gallivm = bld->bld_base.base.gallivm;
408 LLVMTypeRef vec_type = lp_build_vec_type(bld->bld_base.base.gallivm, bld->bld_base.base.type);
418 if (bld->indirect_files & (1 << TGSI_FILE_TEMPORARY)) {
420 bld->temps_array = lp_build_array_alloca(bld->bld_base.base.gallivm,
423 bld->temps[idx] = lp_build_alloca(gallivm, vec_type, "");
428 bld->outputs[idx] = lp_build_alloca(gallivm, vec_type, "");
433 bld->addr[idx] = lp_build_alloca(gallivm, vec_type, "");
438 bld->preds[idx] = lp_build_alloca(gallivm, vec_type, "");
455 struct lp_build_tgsi_aos_context *bld,
479 dst0 = bld->bld_base.base.undef;
484 src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
485 dst0 = lp_build_floor(&bld->bld_base.base, src0);
489 dst0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
497 src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
498 dst0 = lp_build_rcp(&bld->bld_base.base, src0);
503 src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
504 tmp0 = lp_build_emit_llvm_unary(&bld->bld_base, TGSI_OPCODE_ABS, src0);
505 dst0 = lp_build_rsqrt(&bld->bld_base.base, tmp0);
515 src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
516 src1 = lp_build_emit_fetch(&bld->bld_base, inst, 1, LP_CHAN_ALL);
517 dst0 = lp_build_mul(&bld->bld_base.base, src0, src1);
521 src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
522 src1 = lp_build_emit_fetch(&bld->bld_base, inst, 1, LP_CHAN_ALL);
523 dst0 = lp_build_add(&bld->bld_base.base, src0, src1);
538 src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
539 src1 = lp_build_emit_fetch(&bld->bld_base, inst, 1, LP_CHAN_ALL);
540 dst0 = lp_build_max(&bld->bld_base.base, src0, src1);
544 src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
545 src1 = lp_build_emit_fetch(&bld->bld_base, inst, 1, LP_CHAN_ALL);
546 dst0 = lp_build_max(&bld->bld_base.base, src0, src1);
551 src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
552 src1 = lp_build_emit_fetch(&bld->bld_base, inst, 1, LP_CHAN_ALL);
553 tmp0 = lp_build_cmp(&bld->bld_base.base, PIPE_FUNC_LESS, src0, src1);
554 dst0 = lp_build_select(&bld->bld_base.base, tmp0, bld->bld_base.base.one, bld->bld_base.base.zero);
559 src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
560 src1 = lp_build_emit_fetch(&bld->bld_base, inst, 1, LP_CHAN_ALL);
561 tmp0 = lp_build_cmp(&bld->bld_base.base, PIPE_FUNC_GEQUAL, src0, src1);
562 dst0 = lp_build_select(&bld->bld_base.base, tmp0, bld->bld_base.base.one, bld->bld_base.base.zero);
567 src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
568 src1 = lp_build_emit_fetch(&bld->bld_base, inst, 1, LP_CHAN_ALL);
569 src2 = lp_build_emit_fetch(&bld->bld_base, inst, 2, LP_CHAN_ALL);
570 tmp0 = lp_build_mul(&bld->bld_base.base, src0, src1);
571 dst0 = lp_build_add(&bld->bld_base.base, tmp0, src2);
575 src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
576 src1 = lp_build_emit_fetch(&bld->bld_base, inst, 1, LP_CHAN_ALL);
577 dst0 = lp_build_sub(&bld->bld_base.base, src0, src1);
581 src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
582 src1 = lp_build_emit_fetch(&bld->bld_base, inst, 1, LP_CHAN_ALL);
583 src2 = lp_build_emit_fetch(&bld->bld_base, inst, 2, LP_CHAN_ALL);
584 tmp0 = lp_build_sub(&bld->bld_base.base, src1, src2);
585 tmp0 = lp_build_mul(&bld->bld_base.base, src0, tmp0);
586 dst0 = lp_build_add(&bld->bld_base.base, tmp0, src2);
590 src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
591 src1 = lp_build_emit_fetch(&bld->bld_base, inst, 1, LP_CHAN_ALL);
592 src2 = lp_build_emit_fetch(&bld->bld_base, inst, 2, LP_CHAN_ALL);
593 tmp1 = lp_build_const_vec(bld->bld_base.base.gallivm, bld->bld_base.base.type, 0.5);
594 tmp0 = lp_build_cmp(&bld->bld_base.base, PIPE_FUNC_GREATER, src2, tmp1);
595 dst0 = lp_build_select(&bld->bld_base.base, tmp0, src0, src1);
602 src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
603 tmp0 = lp_build_floor(&bld->bld_base.base, src0);
604 dst0 = lp_build_sub(&bld->bld_base.base, src0, tmp0);
608 src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
609 src1 = lp_build_emit_fetch(&bld->bld_base, inst, 1, LP_CHAN_ALL);
610 src2 = lp_build_emit_fetch(&bld->bld_base, inst, 2, LP_CHAN_ALL);
611 tmp0 = lp_build_max(&bld->bld_base.base, src0, src1);
612 dst0 = lp_build_min(&bld->bld_base.base, tmp0, src2);
616 src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
617 dst0 = lp_build_floor(&bld->bld_base.base, src0);
621 src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
622 dst0 = lp_build_round(&bld->bld_base.base, src0);
626 src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
627 tmp0 = lp_build_swizzle_scalar_aos(&bld->bld_base.base, src0, TGSI_SWIZZLE_X);
628 dst0 = lp_build_exp2(&bld->bld_base.base, tmp0);
632 src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
633 tmp0 = swizzle_scalar_aos(bld, src0, TGSI_SWIZZLE_X);
634 dst0 = lp_build_log2(&bld->bld_base.base, tmp0);
638 src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
639 src0 = swizzle_scalar_aos(bld, src0, TGSI_SWIZZLE_X);
640 src1 = lp_build_emit_fetch(&bld->bld_base, inst, 1, LP_CHAN_ALL);
641 src1 = swizzle_scalar_aos(bld, src1, TGSI_SWIZZLE_X);
642 dst0 = lp_build_pow(&bld->bld_base.base, src0, src1);
657 src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
658 tmp0 = swizzle_scalar_aos(bld, src0, TGSI_SWIZZLE_X);
659 dst0 = lp_build_cos(&bld->bld_base.base, tmp0);
695 src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
696 src1 = lp_build_emit_fetch(&bld->bld_base, inst, 1, LP_CHAN_ALL);
697 tmp0 = lp_build_cmp(&bld->bld_base.base, PIPE_FUNC_EQUAL, src0, src1);
698 dst0 = lp_build_select(&bld->bld_base.base, tmp0, bld->bld_base.base.one, bld->bld_base.base.zero);
702 dst0 = bld->bld_base.base.zero;
706 src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
707 src1 = lp_build_emit_fetch(&bld->bld_base, inst, 1, LP_CHAN_ALL);
708 tmp0 = lp_build_cmp(&bld->bld_base.base, PIPE_FUNC_GREATER, src0, src1);
709 dst0 = lp_build_select(&bld->bld_base.base, tmp0, bld->bld_base.base.one, bld->bld_base.base.zero);
713 src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
714 tmp0 = swizzle_scalar_aos(bld, src0, TGSI_SWIZZLE_X);
715 dst0 = lp_build_sin(&bld->bld_base.base, tmp0);
719 src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
720 src1 = lp_build_emit_fetch(&bld->bld_base, inst, 1, LP_CHAN_ALL);
721 tmp0 = lp_build_cmp(&bld->bld_base.base, PIPE_FUNC_LEQUAL, src0, src1);
722 dst0 = lp_build_select(&bld->bld_base.base, tmp0, bld->bld_base.base.one, bld->bld_base.base.zero);
726 src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
727 src1 = lp_build_emit_fetch(&bld->bld_base, inst, 1, LP_CHAN_ALL);
728 tmp0 = lp_build_cmp(&bld->bld_base.base, PIPE_FUNC_NOTEQUAL, src0, src1);
729 dst0 = lp_build_select(&bld->bld_base.base, tmp0, bld->bld_base.base.one, bld->bld_base.base.zero);
733 dst0 = bld->bld_base.base.one;
737 dst0 = emit_tex(bld, inst, LP_BLD_TEX_MODIFIER_NONE);
741 dst0 = emit_tex(bld, inst, LP_BLD_TEX_MODIFIER_EXPLICIT_DERIV);
781 src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
782 dst0 = lp_build_round(&bld->bld_base.base, src0);
803 tmp0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
804 dst0 = lp_build_sgn(&bld->bld_base.base, tmp0);
808 src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
809 src1 = lp_build_emit_fetch(&bld->bld_base, inst, 1, LP_CHAN_ALL);
810 src2 = lp_build_emit_fetch(&bld->bld_base, inst, 2, LP_CHAN_ALL);
811 tmp0 = lp_build_cmp(&bld->bld_base.base, PIPE_FUNC_LESS, src0, bld->bld_base.base.zero);
812 dst0 = lp_build_select(&bld->bld_base.base, tmp0, src1, src2);
819 dst0 = emit_tex(bld, inst, LP_BLD_TEX_MODIFIER_LOD_BIAS);
837 dst0 = emit_tex(bld, inst, LP_BLD_TEX_MODIFIER_EXPLICIT_LOD);
841 dst0 = emit_tex(bld, inst, LP_BLD_TEX_MODIFIER_PROJECTED);
881 src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
882 dst0 = lp_build_ceil(&bld->bld_base.base, src0);
898 src0 = lp_build_emit_fetch(&bld->bld_base, inst, 0, LP_CHAN_ALL);
899 dst0 = lp_build_trunc(&bld->bld_base.base, src0);
975 lp_emit_store_aos(bld, inst, 0, dst0);
993 struct lp_build_tgsi_aos_context bld;
1000 memset(&bld, 0, sizeof bld);
1001 lp_build_context_init(&bld.bld_base.base, gallivm, type);
1002 lp_build_context_init(&bld.bld_base.uint_bld, gallivm, lp_uint_type(type));
1003 lp_build_context_init(&bld.bld_base.int_bld, gallivm, lp_int_type(type));
1004 lp_build_context_init(&bld.int_bld, gallivm, lp_int_type(type));
1007 bld.swizzles[chan] = swizzles[chan];
1008 bld.inv_swizzles[swizzles[chan]] = chan;
1011 bld.inputs = inputs;
1012 bld.outputs = outputs;
1013 bld.consts_ptr = consts_ptr;
1014 bld.sampler = sampler;
1015 bld.indirect_files = info->indirect_files;
1016 bld.bld_base.emit_swizzle = swizzle_aos;
1017 bld.bld_base.info = info;
1019 bld.bld_base.emit_fetch_funcs[TGSI_FILE_CONSTANT] = emit_fetch_constant;
1020 bld.bld_base.emit_fetch_funcs[TGSI_FILE_IMMEDIATE] = emit_fetch_immediate;
1021 bld.bld_base.emit_fetch_funcs[TGSI_FILE_INPUT] = emit_fetch_input;
1022 bld.bld_base.emit_fetch_funcs[TGSI_FILE_TEMPORARY] = emit_fetch_temporary;
1025 lp_set_default_actions_cpu(&bld.bld_base);
1027 if (!lp_bld_tgsi_list_init(&bld.bld_base)) {
1039 lp_emit_declaration_aos(&bld, &parse.FullToken.FullDeclaration);
1044 lp_bld_tgsi_add_instruction(&bld.bld_base,
1059 unsigned swizzle = bld.swizzles[chan];
1062 bld.immediates[num_immediates] =
1079 struct tgsi_full_instruction *instr = bld.bld_base.instructions + pc;
1082 if (!lp_emit_instruction_aos(&bld, instr, opcode_info, &pc))
1096 FREE(bld.bld_base.instructions);