Lines Matching refs:bld
98 llvm::IRBuilder<> bld;
107 (llvm::BasicBlock*)0)), bb(0), bld(ctx), gglCtx(GGLCtx), shaderSuffix(suffix),
111 llvm::PointerType * const floatVecPtrType = llvm::PointerType::get(llvm::VectorType::get(bld.getFloatTy(),4), 0);
196 v = bld.CreateConstGEP1_32(inputs, var->location);
197 v = bld.CreateBitCast(v, llvm::PointerType::get(llvm_type(var->type), 0), var->name);
202 v = bld.CreateConstGEP1_32(outputs, var->location);
203 v = bld.CreateBitCast(v, llvm::PointerType::get(llvm_type(var->type), 0), var->name);
208 v = bld.CreateConstGEP1_32(constants, var->location);
209 v = bld.CreateBitCast(v, llvm::PointerType::get(llvm_type(var->type), 0), var->name);
214 v = bld.CreateAlloca(type, 0, var->name);
292 llvm::PointerType * vecPtrTy = llvm::PointerType::get(llvm::VectorType::get(bld.getFloatTy(), 4), 0);
335 return bld.CreateInBoundsGEP(llvm_pointer(deref->array), gep, gep + 2);
342 return bld.CreateConstInBoundsGEP2_32(llvm_pointer(deref->record), 0, idx);
354 // return bld.CreateCall(llvm::Intrinsic::getDeclaration(mod, id, types, 1), a);
361 // return bld.CreateCall2(llvm::Intrinsic::getDeclaration(mod, id, types, 1), a, b);
391 return bld.CreateCall(function, op0);
419 return bld.CreateCall2(function, op0, op1);
443 static llvm::Value* create_shuffle3(llvm::IRBuilder<>& bld, llvm::Value* v, unsigned a, unsigned b, unsigned c, const llvm::Twine& name = "")
447 return bld.CreateShuffleVector(v, llvm::UndefValue::get(v->getType()), llvm::ConstantVector::get(pack(vals)), name);
453 return bld.CreateSelect(cond, tru, fal, name);
458 llvm::Value * c = bld.CreateExtractElement(cond, llvm_int(i));
459 llvm::Value * t = bld.CreateExtractElement(tru, llvm_int(i));
460 llvm::Value * f = bld.CreateExtractElement(fal, llvm_int(i));
461 llvm::Value * v = bld.CreateSelect(c, t, f, name);
462 vector = bld.CreateInsertElement(vector, v, llvm_int(i), "vslct");
473 prod = bld.CreateMul(ops0, ops1, "dot.mul");
476 prod = bld.CreateFMul(ops0, ops1, "dot.mul");
487 llvm::Value* elem = bld.CreateExtractElement(prod, llvm_int(i), "dot.elem");
490 sum = bld.CreateFAdd(sum, elem, "dot.add");
492 sum = bld.CreateAdd(sum, elem, "dot.add");
528 vec = bld.CreateInsertElement(vec, ops[scaidx], llvm_int(i), "sca2vec");
535 return bld.CreateNot(ops[0]);
541 return bld.CreateNeg(ops[0]);
543 return bld.CreateFNeg(ops[0]);
554 bld.CreateICmpSGE(ops[0], llvm_imm(ops[0]->getType(), 0), "sabs.ge"),
555 ops[0], bld.CreateNeg(ops[0], "sabs.neg"), "sabs.select");
558 bld.CreateFCmpUGE(ops[0], llvm_imm(ops[0]->getType(), 0), "fabs.ge"),
559 ops[0], bld.CreateFNeg(ops[0], "fabs.neg"), "fabs.select");
568 return bld.CreateZExt(bld.CreateICmpNE(ops[0], llvm_imm(ops[0]->getType(), 0), "usign.ne"), ops[0]->getType(), "usign.zext");
570 return bld.CreateSelect(bld.CreateICmpNE(ops[0], llvm_imm(ops[0]->getType(), 0), "ssign.ne"),
571 bld.CreateSelect(bld.CreateICmpSGE(ops[0], llvm_imm(ops[0]->getType(), 0), "ssign.ge"), llvm_imm(ops[0]->getType(), 1), llvm_imm(ops[0]->getType(), -1), "sabs.selects"),
574 return bld.CreateSelect(bld.CreateFCmpONE(ops[0], llvm_imm(ops[0]->getType(), 0), "fsign.ne"),
575 bld.CreateSelect(bld.CreateFCmpUGE(ops[0], llvm_imm(ops[0]->getType(), 0), "fsign.ge"), llvm_imm(ops[0]->getType(), 1), llvm_imm(ops[0]->getType(), -1), "fabs.selects"),
582 return bld.CreateFDiv(llvm_imm(ops[0]->getType(), 1), ops[0]);
604 return bld.CreateAdd(ops[0], ops[1]);
606 return bld.CreateFAdd(ops[0], ops[1]);
616 return bld.CreateSub(ops[0], ops[1]);
618 return bld.CreateFSub(ops[0], ops[1]);
630 llvm::Value * value = bld.CreateExtractValue(ops[1], i, "vec*mat_col");
632 vector = bld.CreateInsertElement(vector, value, llvm_int(i), "vec*mat_res");
641 return bld.CreateAnd(ops[0], ops[1]);
644 return bld.CreateMul(ops[0], ops[1]);
646 return bld.CreateFMul(ops[0], ops[1]);
655 return bld.CreateUDiv(ops[0], ops[1]);
657 return bld.CreateSDiv(ops[0], ops[1]);
659 return bld.CreateFDiv(ops[0], ops[1]);
668 return bld.CreateURem(ops[0], ops[1]);
670 return bld.CreateSRem(ops[0], ops[1]);
672 return bld.CreateFRem(ops[0], ops[1]);
681 return bld.CreateICmpULT(ops[0], ops[1]);
683 return bld.CreateICmpSLT(ops[0], ops[1]);
685 return bld.CreateFCmpOLT(ops[0], ops[1]);
694 return bld.CreateICmpUGT(ops[0], ops[1]);
696 return bld.CreateICmpSGT(ops[0], ops[1]);
698 return bld.CreateFCmpOGT(ops[0], ops[1]);
707 return bld.CreateICmpULE(ops[0], ops[1]);
709 return bld.CreateICmpSLE(ops[0], ops[1]);
711 return bld.CreateFCmpOLE(ops[0], ops[1]);
720 return bld.CreateICmpUGE(ops[0], ops[1]);
722 return bld.CreateICmpSGE(ops[0], ops[1]);
724 return bld.CreateFCmpOGE(ops[0], ops[1]);
734 return bld.CreateICmpEQ(ops[0], ops[1]);
736 return bld.CreateFCmpOEQ(ops[0], ops[1]);
746 return bld.CreateICmpNE(ops[0], ops[1]);
748 return bld.CreateFCmpONE(ops[0], ops[1]);
754 return bld.CreateICmpNE(ops[0], ops[1]);
757 return bld.CreateOr(ops[0], ops[1]);
760 return bld.CreateAnd(ops[0], ops[1]);
769 // return bld.CreateSub(
770 // bld.CreateMul(create_shuffle3(bld, ops[0], 1, 2, 0, "cross.a120"), create_shuffle3(bld, ops[1], 2, 0, 1, "cross.a201"), "cross.ab"),
771 // bld.CreateMul(create_shuffle3(bld, ops[1], 1, 2, 0, "cross.b120"), create_shuffle3(bld, ops[0], 2, 0, 1, "cross.b201"), "cross.ba"),
774 // return bld.CreateFSub(
775 // bld.CreateFMul(create_shuffle3(bld, ops[0], 1, 2, 0, "cross.a120"), create_shuffle3(bld, ops[1], 2, 0, 1, "cross.a201"), "cross.ab"),
776 // bld.CreateFMul(create_shuffle3(bld, ops[1], 1, 2, 0, "cross.b120"), create_shuffle3(bld, ops[0], 2, 0, 1, "cross.b201"), "cross.ba"),
786 return bld.CreateFDiv(llvm_imm(ops[0]->getType(), 1), llvm_intrinsic_unop(ir_unop_sqrt, ops[0]), "rsqrt.rcp");
788 return bld.CreateSIToFP(ops[0], llvm_type(ir->type));
791 return bld.CreateUIToFP(ops[0], llvm_type(ir->type));
793 return bld.CreateZExt(ops[0], llvm_type(ir->type));
795 return bld.CreateFPToSI(ops[0], llvm_type(ir->type));
797 return bld.CreateFCmpONE(ops[0], llvm_imm(ops[0]->getType(), 0));
799 return bld.CreateICmpNE(ops[0], llvm_imm(ops[0]->getType(), 0));
806 return bld.CreateSIToFP(bld.CreateFPToSI(ops[0], llvm_type(&int_type), "trunc.fptosi"),ops[0]->getType(), "trunc.sitofp");
813 return bld.CreateFSub(ops[0], bld.CreateFRem(ops[0], one));
820 return bld.CreateFAdd(bld.CreateFSub(ops[0], bld.CreateFRem(ops[0], one)), one);
827 return bld.CreateFRem(ops[0], one);
834 return bld.CreateAnd(ops[0], ops[1], "bmin");
836 return bld.CreateSelect(bld.CreateICmpULE(ops[0], ops[1], "umin.le"), ops[0], ops[1], "umin.select");
838 return bld.CreateSelect(bld.CreateICmpSLE(ops[0], ops[1], "smin.le"), ops[0], ops[1], "smin.select");
840 return bld.CreateSelect(bld.CreateFCmpULE(ops[0], ops[1], "fmin.le"), ops[0], ops[1], "fmin.select");
848 return bld.CreateOr(ops[0], ops[1], "bmax");
850 return bld.CreateSelect(bld.CreateICmpUGE(ops[0], ops[1], "umax.ge"), ops[0], ops[1], "umax.select");
852 return bld.CreateSelect(bld.CreateICmpSGE(ops[0], ops[1], "smax.ge"), ops[0], ops[1], "smax.select");
854 return bld.CreateSelect(bld.CreateFCmpUGE(ops[0], ops[1], "fmax.ge"), ops[0], ops[1], "fmax.select");
863 return bld.CreateNot(ops[0]);
865 return bld.CreateAnd(ops[0], ops[1]);
867 return bld.CreateXor(ops[0], ops[1]);
869 return bld.CreateOr(ops[0], ops[1]);
876 return bld.CreateLShr(ops[0], ops[1]);
885 return bld.CreateLShr(ops[0], ops[1]);
887 return bld.CreateAShr(ops[0], ops[1]);
906 result = bld.CreateLoad(llvm_pointer(ir));
911 result = bld.CreateLoad(llvm_pointer(ir));
916 result = bld.CreateLoad(llvm_pointer(ir), ir->variable_referenced()->name);
928 div = bld.CreateInsertElement(div, proj, bld.getInt32(i), "texProjDup");
929 coordinate = bld.CreateFDiv(coordinate, div, "texProj");
963 result = texCube(bld, coordinate, sampler->location, gglCtx);
965 result = tex2D(bld, coordinate, sampler->location, gglCtx);
977 bld.CreateCondBr(llvm_value(ir->condition), discard, after);
982 bld.CreateBr(discard);
985 bld.SetInsertPoint(discard);
986 bld.CreateUnwind();
989 bld.SetInsertPoint(bb);
1001 bld.CreateBr(target);
1004 bld.SetInsertPoint(bb);
1018 bld.CreateStore(llvm_value(ir->from), ctr);
1023 bld.CreateBr(header);
1027 bld.SetInsertPoint(header);
1029 llvm::Value* load = bld.CreateLoad(ctr);
1035 cond = bld.CreateICmpULT(load, to);
1038 cond = bld.CreateICmpSLT(load, to);
1041 cond = bld.CreateFCmpOLT(load, to);
1044 bld.CreateCondBr(cond, body, after);
1047 bld.SetInsertPoint(body);
1061 bld.CreateStore(bld.CreateAdd(bld.CreateLoad(ctr), llvm_value(ir->increment)), ctr);
1064 bld.CreateStore(bld.CreateFAdd(bld.CreateLoad(ctr), llvm_value(ir->increment)), ctr);
1068 bld.CreateBr(header);
1071 bld.SetInsertPoint(bb);
1079 bld.CreateCondBr(llvm_value(ir->condition), bbt, bbf);
1081 bld.SetInsertPoint(bbt);
1083 bld.CreateBr(bbe);
1085 bld.SetInsertPoint(bbf);
1087 bld.CreateBr(bbe);
1090 bld.SetInsertPoint(bb);
1096 bld.CreateRetVoid();
1098 bld.CreateRet(llvm_value(ir->value));
1101 bld.SetInsertPoint(bb);
1114 result = bld.CreateCall(llvm_function(ir->get_callee()), llvm::ArrayRef<llvm::Value*>(args));
1231 return bld.CreateShuffleVector(val, llvm::UndefValue::get(val->getType()), llvm::ConstantVector::get(pack(shuffle_mask_values, res_width)), name);
1234 return bld.CreateExtractElement(val, llvm_int(shuffle_mask[0]), name);
1244 tmp = bld.CreateInsertElement(tmp, val, llvm_int(i), name);
1273 bld.CreateStore(rhs, lhs, "mat_str");
1300 rhs = bld.CreateShuffleVector(bld.CreateLoad(lhs), rhs, llvm::ConstantVector::get(pack(blend_mask, width)), "assign.writemask");
1304 rhs = bld.CreateSelect(llvm_value(ir->condition), rhs, bld.CreateLoad(lhs), "assign.conditional");
1306 bld.CreateStore(rhs, lhs);
1323 bld.SetInsertPoint(bb);
1329 bld.CreateStore(ai, inputsPtr);
1332 bld.CreateStore(ai, outputsPtr);
1335 bld.CreateStore(ai, constantsPtr);
1344 bld.CreateStore(ai, llvm_variable(arg));
1347 bld.CreateLoad(inputsPtr);
1348 outputs = bld.CreateLoad(outputsPtr);
1349 constants = bld.CreateLoad(constantsPtr);
1364 bld.CreateRetVoid();
1366 bld.CreateRet(llvm::UndefValue::get(fun->getReturnType()));