Home | History | Annotate | Download | only in SPIRV

Lines Matching refs:SPIR

1 //===- SPIRVUtil.cpp - SPIR-V Utilities -------------------------*- C++ -*-===//
36 /// This file defines utility classes and functions shared by SPIR-V
67 cl::desc("Use text format for SPIR-V for debugging purpose"),
74 cl::desc("Enable SPIR-V debug output"),
278 /// \param Postfix contains postfixes extracted from the SPIR-V image
491 assert(Postfix.empty() && "Invalid SPIR-V builtin name");
910 assert(NamedMD->getNumOperands() > 0 && "Invalid SPIR");
954 SPIR::TypePrimitiveEnum
956 return StringSwitch<SPIR::TypePrimitiveEnum>(TyName)
957 .Case("opencl.image1d_t", SPIR::PRIMITIVE_IMAGE_1D_T)
958 .Case("opencl.image1d_array_t", SPIR::PRIMITIVE_IMAGE_1D_ARRAY_T)
959 .Case("opencl.image1d_buffer_t", SPIR::PRIMITIVE_IMAGE_1D_BUFFER_T)
960 .Case("opencl.image2d_t", SPIR::PRIMITIVE_IMAGE_2D_T)
961 .Case("opencl.image2d_array_t", SPIR::PRIMITIVE_IMAGE_2D_ARRAY_T)
962 .Case("opencl.image3d_t", SPIR::PRIMITIVE_IMAGE_3D_T)
963 .Case("opencl.image2d_msaa_t", SPIR::PRIMITIVE_IMAGE_2D_MSAA_T)
964 .Case("opencl.image2d_array_msaa_t", SPIR::PRIMITIVE_IMAGE_2D_ARRAY_MSAA_T)
965 .Case("opencl.image2d_msaa_depth_t", SPIR::PRIMITIVE_IMAGE_2D_MSAA_DEPTH_T)
966 .Case("opencl.image2d_array_msaa_depth_t", SPIR::PRIMITIVE_IMAGE_2D_ARRAY_MSAA_DEPTH_T)
967 .Case("opencl.image2d_depth_t", SPIR::PRIMITIVE_IMAGE_2D_DEPTH_T)
968 .Case("opencl.image2d_array_depth_t", SPIR::PRIMITIVE_IMAGE_2D_ARRAY_DEPTH_T)
969 .Case("opencl.event_t", SPIR::PRIMITIVE_EVENT_T)
970 .Case("opencl.pipe_t", SPIR::PRIMITIVE_PIPE_T)
971 .Case("opencl.reserve_id_t", SPIR::PRIMITIVE_RESERVE_ID_T)
972 .Case("opencl.queue_t", SPIR::PRIMITIVE_QUEUE_T)
973 .Case("opencl.clk_event_t", SPIR::PRIMITIVE_CLK_EVENT_T)
974 .Case("opencl.sampler_t", SPIR::PRIMITIVE_SAMPLER_T)
975 .Case("struct.ndrange_t", SPIR::PRIMITIVE_NDRANGE_T)
976 .Default( SPIR::PRIMITIVE_NONE);
981 static SPIR::RefParamType
987 return SPIR::RefParamType(new SPIR::PrimitiveType(Info.Enum));
989 return SPIR::RefParamType(new SPIR::PrimitiveType(
990 SPIR::PRIMITIVE_SAMPLER_T));
994 return SPIR::RefParamType(new SPIR::AtomicType(
1000 return SPIR::RefParamType(new SPIR::PrimitiveType(SPIR::PRIMITIVE_BOOL));
1002 return SPIR::RefParamType(new SPIR::PrimitiveType(Signed?
1003 SPIR::PRIMITIVE_CHAR:SPIR::PRIMITIVE_UCHAR));
1005 return SPIR::RefParamType(new SPIR::PrimitiveType(Signed?
1006 SPIR::PRIMITIVE_SHORT:SPIR::PRIMITIVE_USHORT));
1008 return SPIR::RefParamType(new SPIR::PrimitiveType(Signed?
1009 SPIR::PRIMITIVE_INT:SPIR::PRIMITIVE_UINT));
1011 return SPIR::RefParamType(new SPIR::PrimitiveType(Signed?
1012 SPIR::PRIMITIVE_LONG:SPIR::PRIMITIVE_ULONG));
1018 return SPIR::RefParamType(new SPIR::PrimitiveType(SPIR::PRIMITIVE_VOID));
1020 return SPIR::RefParamType(new SPIR::PrimitiveType(SPIR::PRIMITIVE_HALF));
1022 return SPIR::RefParamType(new SPIR::PrimitiveType(SPIR::PRIMITIVE_FLOAT));
1024 return SPIR::RefParamType(new SPIR::PrimitiveType(SPIR::PRIMITIVE_DOUBLE));
1026 return SPIR::RefParamType(new SPIR::VectorType(
1055 return SPIR::RefParamType(new SPIR::UserDefinedType(Name));
1060 SPIR::ParamType *EPT = nullptr;
1064 EPT = new SPIR::BlockType;
1080 auto BlockTy = new SPIR::BlockType;
1083 SPIR::RefParamType VoidTyRef(new SPIR::PrimitiveType(SPIR::PRIMITIVE_VOID));
1084 auto VoidPtrTy = new SPIR::PointerType(VoidTyRef);
1085 VoidPtrTy->setAddressSpace(SPIR::ATTR_LOCAL);
1087 BlockTy->setParam(0, SPIR::RefParamType(VoidPtrTy));
1089 BlockTy->setParam(1, SPIR::RefParamType(
1090 new SPIR::PrimitiveType(SPIR::PRIMITIVE_VAR_ARG)));
1093 } else if (Prim != SPIR::PRIMITIVE_NONE) {
1094 if (Prim == SPIR::PRIMITIVE_PIPE_T) {
1095 SPIR::RefParamType OpaqueTyRef(new SPIR::PrimitiveType(Prim));
1096 auto OpaquePtrTy = new SPIR::PointerType(OpaqueTyRef);
1101 EPT = new SPIR::PrimitiveType(Prim);
1104 } else if (Prim == SPIR::PRIMITIVE_NDRANGE_T)
1106 EPT = new SPIR::PrimitiveType(SPIR::PRIMITIVE_NDRANGE_T);
1109 return SPIR::RefParamType(EPT);
1113 auto PT = new SPIR::PointerType(transTypeDesc(ET, Info));
1114 PT->setAddressSpace(static_cast<SPIR::TypeAttributeEnum>(
1115 Ty->getPointerAddressSpace() + (unsigned)SPIR::ATTR_ADDR_SPACE_FIRST));
1116 for (unsigned I = SPIR::ATTR_QUALIFIER_FIRST,
1117 E = SPIR::ATTR_QUALIFIER_LAST; I <= E; ++I)
1118 PT->setQualifier(static_cast<SPIR::TypeAttributeEnum>(I), I & Attr);
1119 return SPIR::RefParamType(PT);
1123 return SPIR::RefParamType(new SPIR::PrimitiveType(SPIR::PRIMITIVE_INT));
1202 assert(!BaseName.empty() && "Invalid SPIR-V type name");
1225 DEBUG(dbgs() << " Invalid SPIR-V type " << *T << '\n');
1389 SPIR::NameMangler Mangler(SPIR::SPIR20);
1390 SPIR::FunctionDescriptor FD;
1398 FD.parameters.emplace_back(SPIR::RefParamType(new SPIR::PrimitiveType(
1399 SPIR::PRIMITIVE_VOID)));
1413 FD.parameters.emplace_back(SPIR::RefParamType(new SPIR::PrimitiveType(
1414 SPIR::PRIMITIVE_VAR_ARG)));
1441 /// Translates OpenCL image type names to SPIR-V.