Lines Matching refs:Ice
64 Ice::Cfg *createFunction(Ice::GlobalContext *context, Ice::Type returnType, const std::vector<Ice::… in createFunction()
67 auto *function = Ice::Cfg::create(context, sequenceNumber).release(); in createFunction()
71 Ice::CfgLocalAllocatorScope allocScope{ function }; in createFunction()
75 Ice::Variable *arg = function->makeVariable(type); in createFunction()
79 Ice::CfgNode *node = function->makeNode(); in createFunction()
85 Ice::Type getPointerType(Ice::Type elementType) in getPointerType()
89 return Ice::IceType_i64; in getPointerType()
93 return Ice::IceType_i32; in getPointerType()
97 Ice::Variable *allocateStackVariable(Ice::Cfg *function, Ice::Type type, int arraySize = 0) in allocateStackVariable()
99 int typeSize = Ice::typeWidthInBytes(type); in allocateStackVariable()
102 auto bytes = Ice::ConstantInteger32::create(function->getContext(), Ice::IceType_i32, totalSize); in allocateStackVariable()
104 …auto alloca = Ice::InstAlloca::create(function, address, bytes, typeSize); // SRoA depends on the… in allocateStackVariable()
110 Ice::Constant *getConstantPointer(Ice::GlobalContext *context, void const *ptr) in getConstantPointer()
123 Ice::Variable *createTruncate(Ice::Cfg *function, Ice::CfgNode *basicBlock, Ice::Operand *from, Ice…
126 Ice::Variable *Call(Ice::Cfg *function, Ice::CfgNode *basicBlock, Ice::Type retTy, Ice::Operand *ca… in Call()
128 Ice::Variable *ret = nullptr; in Call()
133 const bool returningBool = (retTy == Ice::IceType_i1); in Call()
136 ret = function->makeVariable(Ice::IceType_i32); in Call()
138 else if(retTy != Ice::IceType_void) in Call()
143 …auto call = Ice::InstCall::create(function, iceArgs.size(), ret, callTarget, false, false, isVaria… in Call()
154 ret = createTruncate(function, basicBlock, ret, Ice::IceType_i1); in Call()
160 Ice::Variable *Call(Ice::Cfg *function, Ice::CfgNode *basicBlock, Ice::Type retTy, void const *fptr… in Call()
162 Ice::Operand *callTarget = getConstantPointer(function->getContext(), fptr); in Call()
168 Ice::Variable *Call(Ice::Cfg *function, Ice::CfgNode *basicBlock, Return(fptr)(CArgs...), RArgs &&.… in Call()
172 Ice::Type retTy = T(rr::CToReactorT<Return>::type()); in Call()
173 std::vector<Ice::Operand *> iceArgs{ std::forward<RArgs>(args)... }; in Call()
177 Ice::Variable *createTruncate(Ice::Cfg *function, Ice::CfgNode *basicBlock, Ice::Operand *from, Ice… in createTruncate()
179 Ice::Variable *to = function->makeVariable(toType); in createTruncate()
180 Ice::InstCast *cast = Ice::InstCast::create(function, Ice::InstCast::Trunc, to, from); in createTruncate()
185 Ice::Variable *createLoad(Ice::Cfg *function, Ice::CfgNode *basicBlock, Ice::Operand *ptr, Ice::Typ… in createLoad()
187 Ice::Variable *result = function->makeVariable(type); in createLoad()
188 auto load = Ice::InstLoad::create(function, result, ptr, align); in createLoad()
218 Ice::GlobalContext *context = nullptr;
219 Ice::Cfg *function = nullptr;
220 Ice::CfgNode *entryBlock = nullptr;
221 Ice::CfgNode *basicBlockTop = nullptr;
222 Ice::CfgNode *basicBlock = nullptr;
223 Ice::CfgLocalAllocatorScope *allocator = nullptr;
228 Ice::ELFFileStreamer *elfFile = nullptr;
229 Ice::Fdstream *out = nullptr;
259 Ice::OptLevel toIce(rr::Optimization::Level level) in toIce()
264 case rr::Optimization::Level::None: return Ice::Opt_m1; in toIce()
265 case rr::Optimization::Level::Less: return Ice::Opt_m1; in toIce()
266 case rr::Optimization::Level::Default: return Ice::Opt_2; in toIce()
267 case rr::Optimization::Level::Aggressive: return Ice::Opt_2; in toIce()
270 return Ice::Opt_2; in toIce()
273 Ice::Intrinsics::MemoryOrder stdToIceMemoryOrder(std::memory_order memoryOrder) in stdToIceMemoryOrder()
277 case std::memory_order_relaxed: return Ice::Intrinsics::MemoryOrderRelaxed; in stdToIceMemoryOrder()
278 case std::memory_order_consume: return Ice::Intrinsics::MemoryOrderConsume; in stdToIceMemoryOrder()
279 case std::memory_order_acquire: return Ice::Intrinsics::MemoryOrderAcquire; in stdToIceMemoryOrder()
280 case std::memory_order_release: return Ice::Intrinsics::MemoryOrderRelease; in stdToIceMemoryOrder()
281 case std::memory_order_acq_rel: return Ice::Intrinsics::MemoryOrderAcquireRelease; in stdToIceMemoryOrder()
282 case std::memory_order_seq_cst: return Ice::Intrinsics::MemoryOrderSequentiallyConsistent; in stdToIceMemoryOrder()
284 return Ice::Intrinsics::MemoryOrderInvalid; in stdToIceMemoryOrder()
371 Type_v2i32 = Ice::IceType_v4i32 | EmulatedV2,
372 Type_v4i16 = Ice::IceType_v8i16 | EmulatedV4,
373 Type_v2i16 = Ice::IceType_v8i16 | EmulatedV2,
374 Type_v8i8 = Ice::IceType_v16i8 | EmulatedV8,
375 Type_v4i8 = Ice::IceType_v16i8 | EmulatedV4,
376 Type_v2f32 = Ice::IceType_v4f32 | EmulatedV2,
379 class Value : public Ice::Operand
381 class SwitchCases : public Ice::InstSwitch
383 class BasicBlock : public Ice::CfgNode
386 Ice::Type T(Type *t) in T()
388 …static_assert(static_cast<unsigned int>(Ice::IceType_NUM) < static_cast<unsigned int>(EmulatedBits… in T()
389 return (Ice::Type)(reinterpret_cast<std::intptr_t>(t) & ~EmulatedBits); in T()
392 Type *T(Ice::Type t) in T()
402 std::vector<Ice::Type> T(const std::vector<Type *> &types) in T()
404 std::vector<Ice::Type> result; in T()
413 Value *V(Ice::Operand *v) in V()
418 Ice::Operand *V(Value *v) in V()
420 return reinterpret_cast<Ice::Operand *>(v); in V()
423 std::vector<Ice::Operand *> V(const std::vector<Value *> &values) in V()
425 std::vector<Ice::Operand *> result; in V()
434 BasicBlock *B(Ice::CfgNode *b) in B()
455 return Ice::typeWidthInBytes(T(type)); in typeSize()
461 if(::basicBlock->getInsts().empty() || ::basicBlock->getInsts().back().getKind() != Ice::Inst::Ret) in finalizeFunction()
467 auto br = Ice::InstBr::create(::function, ::basicBlockTop); in finalizeFunction()
742 class ELFMemoryStreamer : public Ice::ELFStreamer, public Routine
876 …sz::Call(::function, ::basicBlock, Ice::IceType_i32, reinterpret_cast<const void *>(rr::DebugPrint… in VPrintf()
884 Ice::ClFlags &Flags = Ice::ClFlags::Flags; in Nucleus()
885 Ice::ClFlags::getParsedClFlags(Flags); in Nucleus()
888 Flags.setTargetArch(Ice::Target_ARM32); in Nucleus()
889 Flags.setTargetInstructionSet(Ice::ARM32InstructionSet_HWDivArm); in Nucleus()
891 Flags.setTargetArch(Ice::Target_MIPS32); in Nucleus()
892 Flags.setTargetInstructionSet(Ice::BaseInstructionSet); in Nucleus()
894 Flags.setTargetArch(sizeof(void *) == 8 ? Ice::Target_X8664 : Ice::Target_X8632); in Nucleus()
895 …Flags.setTargetInstructionSet(CPUID::SSE4_1 ? Ice::X86InstructionSet_SSE4_1 : Ice::X86InstructionS… in Nucleus()
897 Flags.setOutFileType(Ice::FT_Elf); in Nucleus()
899 Flags.setApplicationBinaryInterface(Ice::ABI_Platform); in Nucleus()
900 Flags.setVerbose(subzeroDumpEnabled ? Ice::IceV_Most : Ice::IceV_None); in Nucleus()
918 ::out = new Ice::Fdstream("out.o", errorCode, llvm::sys::fs::F_None); in Nucleus()
919 ::elfFile = new Ice::ELFFileStreamer(*out); in Nucleus()
920 ::context = new Ice::GlobalContext(&cout, &cout, &cerr, elfFile); in Nucleus()
925 ::context = new Ice::GlobalContext(&cout, &cout, &cerr, elfMemory); in Nucleus()
990 static std::shared_ptr<Routine> acquireRoutine(Ice::Cfg *const (&functions)[Count], const char *con… in acquireRoutine()
1007 Ice::Cfg *currFunc = functions[i]; in acquireRoutine()
1010 Ice::CfgLocalAllocatorScope allocScope(currFunc); in acquireRoutine()
1012 currFunc->setFunctionName(Ice::GlobalString::createWithString(::context, names[i])); in acquireRoutine()
1055 Ice::Cfg *currFunc = functions[i]; in acquireRoutine()
1101 Ice::Type type = T(t); in allocateStackVariable()
1102 int typeSize = Ice::typeWidthInBytes(type); in allocateStackVariable()
1105 auto bytes = Ice::ConstantInteger32::create(::context, Ice::IceType_i32, totalSize); in allocateStackVariable()
1107 …auto alloca = Ice::InstAlloca::create(::function, address, bytes, typeSize); // SRoA depends on t… in allocateStackVariable()
1144 ::allocator = new Ice::CfgLocalAllocatorScope(::function); in createFunction()
1165 Ice::InstRet *ret = Ice::InstRet::create(::function); in createRetVoid()
1178 Ice::InstRet *ret = Ice::InstRet::create(::function, v); in createRet()
1187 auto br = Ice::InstBr::create(::function, dest); in createBr()
1196 auto br = Ice::InstBr::create(::function, cond, ifTrue, ifFalse); in createCondBr()
1200 static bool isCommutative(Ice::InstArithmetic::OpKind op) in isCommutative()
1204 case Ice::InstArithmetic::Add: in isCommutative()
1205 case Ice::InstArithmetic::Fadd: in isCommutative()
1206 case Ice::InstArithmetic::Mul: in isCommutative()
1207 case Ice::InstArithmetic::Fmul: in isCommutative()
1208 case Ice::InstArithmetic::And: in isCommutative()
1209 case Ice::InstArithmetic::Or: in isCommutative()
1210 case Ice::InstArithmetic::Xor: in isCommutative()
1217 static Value *createArithmetic(Ice::InstArithmetic::OpKind op, Value *lhs, Value *rhs) in createArithmetic()
1219 ASSERT(lhs->getType() == rhs->getType() || llvm::isa<Ice::Constant>(rhs)); in createArithmetic()
1221 bool swapOperands = llvm::isa<Ice::Constant>(lhs) && isCommutative(op); in createArithmetic()
1223 Ice::Variable *result = ::function->makeVariable(lhs->getType()); in createArithmetic()
1224 …Ice::InstArithmetic *arithmetic = Ice::InstArithmetic::create(::function, op, result, swapOperands… in createArithmetic()
1233 return createArithmetic(Ice::InstArithmetic::Add, lhs, rhs); in createAdd()
1239 return createArithmetic(Ice::InstArithmetic::Sub, lhs, rhs); in createSub()
1245 return createArithmetic(Ice::InstArithmetic::Mul, lhs, rhs); in createMul()
1251 return createArithmetic(Ice::InstArithmetic::Udiv, lhs, rhs); in createUDiv()
1257 return createArithmetic(Ice::InstArithmetic::Sdiv, lhs, rhs); in createSDiv()
1263 return createArithmetic(Ice::InstArithmetic::Fadd, lhs, rhs); in createFAdd()
1269 return createArithmetic(Ice::InstArithmetic::Fsub, lhs, rhs); in createFSub()
1275 return createArithmetic(Ice::InstArithmetic::Fmul, lhs, rhs); in createFMul()
1281 return createArithmetic(Ice::InstArithmetic::Fdiv, lhs, rhs); in createFDiv()
1287 return createArithmetic(Ice::InstArithmetic::Urem, lhs, rhs); in createURem()
1293 return createArithmetic(Ice::InstArithmetic::Srem, lhs, rhs); in createSRem()
1313 return createArithmetic(Ice::InstArithmetic::Shl, lhs, rhs); in createShl()
1319 return createArithmetic(Ice::InstArithmetic::Lshr, lhs, rhs); in createLShr()
1325 return createArithmetic(Ice::InstArithmetic::Ashr, lhs, rhs); in createAShr()
1331 return createArithmetic(Ice::InstArithmetic::And, lhs, rhs); in createAnd()
1337 return createArithmetic(Ice::InstArithmetic::Or, lhs, rhs); in createOr()
1343 return createArithmetic(Ice::InstArithmetic::Xor, lhs, rhs); in createXor()
1356 …Value *negativeZero = Ice::isVectorType(v->getType()) ? createConstantVector(c, T(v->getType())) :… in createFNeg()
1364 if(Ice::isScalarIntegerType(v->getType())) in createNot()
1402 Ice::Variable *result = nullptr; in createLoad()
1417 …auto bitcast = Ice::InstCast::create(::function, Ice::InstCast::Bitcast, result, vector.loadValue(… in createLoad()
1432 …auto bitcast = Ice::InstCast::create(::function, Ice::InstCast::Bitcast, result, vector.loadValue(… in createLoad()
1440 …nst Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::LoadSubVector, Ice::Intrinsics::… in createLoad()
1442 auto load = Ice::InstIntrinsic::create(::function, 2, result, intrinsic); in createLoad()
1466 …auto call = Ice::InstCall::create(::function, 2, nullptr, ::context->getConstantInt64(reinterpret_… in createStore()
1481 Ice::Variable *vector = ::function->makeVariable(Ice::IceType_v4i32); in createStore()
1482 auto bitcast = Ice::InstCast::create(::function, Ice::InstCast::Bitcast, vector, value); in createStore()
1494 Ice::Variable *vector = ::function->makeVariable(Ice::IceType_v4i32); in createStore()
1495 auto bitcast = Ice::InstCast::create(::function, Ice::InstCast::Bitcast, vector, value); in createStore()
1511 …st Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::StoreSubVector, Ice::Intrinsics::… in createStore()
1512 auto store = Ice::InstIntrinsic::create(::function, 3, nullptr, intrinsic); in createStore()
1523 auto store = Ice::InstStore::create(::function, V(value), V(ptr), align); in createStore()
1533 ASSERT(index->getType() == Ice::IceType_i32); in createGEP()
1535 if(auto *constant = llvm::dyn_cast<Ice::ConstantInteger32>(index)) in createGEP()
1547 if(!Ice::isByteSizedType(T(type))) in createGEP()
1556 index = createZExt(index, T(Ice::IceType_i64)); in createGEP()
1560 index = createSExt(index, T(Ice::IceType_i64)); in createGEP()
1567 static Value *createAtomicRMW(Ice::Intrinsics::AtomicRMWOperation rmwOp, Value *ptr, Value *value, … in createAtomicRMW()
1569 Ice::Variable *result = ::function->makeVariable(value->getType()); in createAtomicRMW()
1571 …const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::AtomicRMW, Ice::Intrinsics::Si… in createAtomicRMW()
1572 auto inst = Ice::InstIntrinsic::create(::function, 0, result, intrinsic); in createAtomicRMW()
1587 return createAtomicRMW(Ice::Intrinsics::AtomicAdd, ptr, value, memoryOrder); in createAtomicAdd()
1593 return createAtomicRMW(Ice::Intrinsics::AtomicSub, ptr, value, memoryOrder); in createAtomicSub()
1599 return createAtomicRMW(Ice::Intrinsics::AtomicAnd, ptr, value, memoryOrder); in createAtomicAnd()
1605 return createAtomicRMW(Ice::Intrinsics::AtomicOr, ptr, value, memoryOrder); in createAtomicOr()
1611 return createAtomicRMW(Ice::Intrinsics::AtomicXor, ptr, value, memoryOrder); in createAtomicXor()
1617 return createAtomicRMW(Ice::Intrinsics::AtomicExchange, ptr, value, memoryOrder); in createAtomicExchange()
1623 Ice::Variable *result = ::function->makeVariable(value->getType()); in createAtomicCompareExchange()
1625 …nst Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::AtomicCmpxchg, Ice::Intrinsics::… in createAtomicCompareExchange()
1626 auto inst = Ice::InstIntrinsic::create(::function, 0, result, intrinsic); in createAtomicCompareExchange()
1639 static Value *createCast(Ice::InstCast::OpKind op, Value *v, Type *destType) in createCast()
1646 Ice::Variable *result = ::function->makeVariable(T(destType)); in createCast()
1647 Ice::InstCast *cast = Ice::InstCast::create(::function, op, result, v); in createCast()
1656 return createCast(Ice::InstCast::Trunc, v, destType); in createTrunc()
1662 return createCast(Ice::InstCast::Zext, v, destType); in createZExt()
1668 return createCast(Ice::InstCast::Sext, v, destType); in createSExt()
1674 return createCast(Ice::InstCast::Fptoui, v, destType); in createFPToUI()
1680 return createCast(Ice::InstCast::Fptosi, v, destType); in createFPToSI()
1686 return createCast(Ice::InstCast::Sitofp, v, destType); in createSIToFP()
1692 return createCast(Ice::InstCast::Fptrunc, v, destType); in createFPTrunc()
1698 return createCast(Ice::InstCast::Fpext, v, destType); in createFPExt()
1709 if(!Ice::isVectorType(v->getType()) && Ice::isVectorType(T(destType))) in createBitCast()
1715 else if(Ice::isVectorType(v->getType()) && !Ice::isVectorType(T(destType))) in createBitCast()
1723 return createCast(Ice::InstCast::Bitcast, v, destType); in createBitCast()
1726 static Value *createIntCompare(Ice::InstIcmp::ICond condition, Value *lhs, Value *rhs) in createIntCompare()
1730 …auto result = ::function->makeVariable(Ice::isScalarIntegerType(lhs->getType()) ? Ice::IceType_i1 … in createIntCompare()
1731 auto cmp = Ice::InstIcmp::create(::function, condition, result, lhs, rhs); in createIntCompare()
1740 return createIntCompare(Ice::InstIcmp::Eq, lhs, rhs); in createICmpEQ()
1746 return createIntCompare(Ice::InstIcmp::Ne, lhs, rhs); in createICmpNE()
1752 return createIntCompare(Ice::InstIcmp::Ugt, lhs, rhs); in createICmpUGT()
1758 return createIntCompare(Ice::InstIcmp::Uge, lhs, rhs); in createICmpUGE()
1764 return createIntCompare(Ice::InstIcmp::Ult, lhs, rhs); in createICmpULT()
1770 return createIntCompare(Ice::InstIcmp::Ule, lhs, rhs); in createICmpULE()
1776 return createIntCompare(Ice::InstIcmp::Sgt, lhs, rhs); in createICmpSGT()
1782 return createIntCompare(Ice::InstIcmp::Sge, lhs, rhs); in createICmpSGE()
1788 return createIntCompare(Ice::InstIcmp::Slt, lhs, rhs); in createICmpSLT()
1794 return createIntCompare(Ice::InstIcmp::Sle, lhs, rhs); in createICmpSLE()
1797 static Value *createFloatCompare(Ice::InstFcmp::FCond condition, Value *lhs, Value *rhs) in createFloatCompare()
1800 ASSERT(Ice::isScalarFloatingType(lhs->getType()) || lhs->getType() == Ice::IceType_v4f32); in createFloatCompare()
1802 …auto result = ::function->makeVariable(Ice::isScalarFloatingType(lhs->getType()) ? Ice::IceType_i1… in createFloatCompare()
1803 auto cmp = Ice::InstFcmp::create(::function, condition, result, lhs, rhs); in createFloatCompare()
1812 return createFloatCompare(Ice::InstFcmp::Oeq, lhs, rhs); in createFCmpOEQ()
1818 return createFloatCompare(Ice::InstFcmp::Ogt, lhs, rhs); in createFCmpOGT()
1824 return createFloatCompare(Ice::InstFcmp::Oge, lhs, rhs); in createFCmpOGE()
1830 return createFloatCompare(Ice::InstFcmp::Olt, lhs, rhs); in createFCmpOLT()
1836 return createFloatCompare(Ice::InstFcmp::Ole, lhs, rhs); in createFCmpOLE()
1842 return createFloatCompare(Ice::InstFcmp::One, lhs, rhs); in createFCmpONE()
1848 return createFloatCompare(Ice::InstFcmp::Ord, lhs, rhs); in createFCmpORD()
1854 return createFloatCompare(Ice::InstFcmp::Uno, lhs, rhs); in createFCmpUNO()
1860 return createFloatCompare(Ice::InstFcmp::Ueq, lhs, rhs); in createFCmpUEQ()
1866 return createFloatCompare(Ice::InstFcmp::Ugt, lhs, rhs); in createFCmpUGT()
1872 return createFloatCompare(Ice::InstFcmp::Uge, lhs, rhs); in createFCmpUGE()
1878 return createFloatCompare(Ice::InstFcmp::Ult, lhs, rhs); in createFCmpULT()
1884 return createFloatCompare(Ice::InstFcmp::Ule, lhs, rhs); in createFCmpULE()
1890 return createFloatCompare(Ice::InstFcmp::Une, lhs, rhs); in createFCmpUNE()
1897 …auto extract = Ice::InstExtractElement::create(::function, result, V(vector), ::context->getConsta… in createExtractElement()
1907 …auto insert = Ice::InstInsertElement::create(::function, result, vector, element, ::context->getCo… in createInsertElement()
1918 int size = Ice::typeNumElements(V1->getType()); in createShuffleVector()
1920 auto shuffle = Ice::InstShuffleVector::create(::function, result, V1, V2); in createShuffleVector()
1924 shuffle->addIndex(llvm::cast<Ice::ConstantInteger32>(::context->getConstantInt32(select[i]))); in createShuffleVector()
1938 auto *select = Ice::InstSelect::create(::function, result, C, ifTrue, ifFalse); in createSelect()
1947 auto switchInst = Ice::InstSwitch::create(::function, numCases, control, defaultBranch); in createSwitch()
1962 Ice::InstUnreachable *unreachable = Ice::InstUnreachable::create(::function); in createUnreachable()
1973 Ice::Type vecTy = T(vectorType); in getContainedType()
1976 case Ice::IceType_v4i1: return T(Ice::IceType_i1); in getContainedType()
1977 case Ice::IceType_v8i1: return T(Ice::IceType_i1); in getContainedType()
1978 case Ice::IceType_v16i1: return T(Ice::IceType_i1); in getContainedType()
1979 case Ice::IceType_v16i8: return T(Ice::IceType_i8); in getContainedType()
1980 case Ice::IceType_v8i16: return T(Ice::IceType_i16); in getContainedType()
1981 case Ice::IceType_v4i32: return T(Ice::IceType_i32); in getContainedType()
1982 case Ice::IceType_v4f32: return T(Ice::IceType_f32); in getContainedType()
1994 static constexpr Ice::Type getNaturalIntType() in getNaturalIntType()
1998 return intSize == 4 ? Ice::IceType_i32 : Ice::IceType_i64; in getNaturalIntType()
2003 Ice::Type valueTy = T(valueType); in getPrintfStorageType()
2006 case Ice::IceType_i32: in getPrintfStorageType()
2009 case Ice::IceType_f32: in getPrintfStorageType()
2010 return T(Ice::IceType_f64); in getPrintfStorageType()
2021 if(Ice::isVectorType(T(Ty))) in createNullValue()
2023 ASSERT(Ice::typeNumElements(T(Ty)) <= 16); in createNullValue()
2090 return createNullValue(T(sizeof(void *) == 8 ? Ice::IceType_i64 : Ice::IceType_i32)); in createNullPointer()
2093 static Ice::Constant *IceConstantData(void const *data, size_t size, size_t alignment = 1) in IceConstantData()
2102 ASSERT(Ice::typeWidthInBytes(T(type)) == vectorSize); in createConstantVector()
2109 Ice::Constant *ptr = nullptr; in createConstantVector()
2113 case Ice::IceType_v4i32: in createConstantVector()
2114 case Ice::IceType_v4i1: in createConstantVector()
2121 case Ice::IceType_v4f32: in createConstantVector()
2128 case Ice::IceType_v8i16: in createConstantVector()
2129 case Ice::IceType_v8i1: in createConstantVector()
2136 case Ice::IceType_v16i8: in createConstantVector()
2137 case Ice::IceType_v16i1: in createConstantVector()
2185 Ice::Variable *result = sz::createLoad(::function, ::basicBlock, ptr, T(type), alignment); in createConstantVector()
2207 return T(Ice::IceType_void); in type()
2212 return T(Ice::IceType_i1); in type()
2217 return T(Ice::IceType_i8); in type()
2222 return T(Ice::IceType_i8); in type()
2227 return T(Ice::IceType_i16); in type()
2232 return T(Ice::IceType_i16); in type()
2281 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v16i8); in AddSat()
2282 … Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::AddSaturateUnsigned, Ice::Intrinsic… in AddSat()
2283 auto paddusb = Ice::InstIntrinsic::create(::function, 2, result, intrinsic); in AddSat()
2311 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v16i8); in SubSat()
2312 …Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::SubtractSaturateUnsigned, Ice::Intri… in SubSat()
2313 auto psubusw = Ice::InstIntrinsic::create(::function, 2, result, intrinsic); in SubSat()
2375 Ice::Variable *result = ::function->makeVariable(Ice::IceType_i32); in SignMask()
2376 …const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::SignMask, Ice::Intrinsics::Sid… in SignMask()
2377 auto movmsk = Ice::InstIntrinsic::create(::function, 1, result, intrinsic); in SignMask()
2436 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v16i8); in AddSat()
2437 …t Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::AddSaturateSigned, Ice::Intrinsics… in AddSat()
2438 auto paddsb = Ice::InstIntrinsic::create(::function, 2, result, intrinsic); in AddSat()
2466 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v16i8); in SubSat()
2467 …Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::SubtractSaturateSigned, Ice::Intrins… in SubSat()
2468 auto psubsb = Ice::InstIntrinsic::create(::function, 2, result, intrinsic); in SubSat()
2487 Ice::Variable *result = ::function->makeVariable(Ice::IceType_i32); in SignMask()
2488 …const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::SignMask, Ice::Intrinsics::Sid… in SignMask()
2489 auto movmsk = Ice::InstIntrinsic::create(::function, 1, result, intrinsic); in SignMask()
2500 return RValue<Byte8>(createIntCompare(Ice::InstIcmp::Sgt, x.value(), y.value())); in CmpGT()
2516 return T(Ice::IceType_v16i8); in type()
2521 return T(Ice::IceType_v16i8); in type()
2599 Ice::Variable *condition = ::function->makeVariable(Ice::IceType_v8i1); in Max()
2600 auto cmp = Ice::InstIcmp::create(::function, Ice::InstIcmp::Sle, condition, x.value(), y.value()); in Max()
2603 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v8i16); in Max()
2604 auto select = Ice::InstSelect::create(::function, result, condition, y.value(), x.value()); in Max()
2613 Ice::Variable *condition = ::function->makeVariable(Ice::IceType_v8i1); in Min()
2614 auto cmp = Ice::InstIcmp::create(::function, Ice::InstIcmp::Sgt, condition, x.value(), y.value()); in Min()
2617 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v8i16); in Min()
2618 auto select = Ice::InstSelect::create(::function, result, condition, y.value(), x.value()); in Min()
2645 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v8i16); in AddSat()
2646 …t Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::AddSaturateSigned, Ice::Intrinsics… in AddSat()
2647 auto paddsw = Ice::InstIntrinsic::create(::function, 2, result, intrinsic); in AddSat()
2671 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v8i16); in SubSat()
2672 …Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::SubtractSaturateSigned, Ice::Intrins… in SubSat()
2673 auto psubsw = Ice::InstIntrinsic::create(::function, 2, result, intrinsic); in SubSat()
2697 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v8i16); in MulHigh()
2698 … Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::MultiplyHighSigned, Ice::Intrinsics… in MulHigh()
2699 auto pmulhw = Ice::InstIntrinsic::create(::function, 2, result, intrinsic); in MulHigh()
2721 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v8i16); in MulAdd()
2722 …t Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::MultiplyAddPairs, Ice::Intrinsics:… in MulAdd()
2723 auto pmaddwd = Ice::InstIntrinsic::create(::function, 2, result, intrinsic); in MulAdd()
2751 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v16i8); in PackSigned()
2752 …t Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::VectorPackSigned, Ice::Intrinsics:… in PackSigned()
2753 auto pack = Ice::InstIntrinsic::create(::function, 2, result, intrinsic); in PackSigned()
2781 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v16i8); in PackUnsigned()
2782 … Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::VectorPackUnsigned, Ice::Intrinsics… in PackUnsigned()
2783 auto pack = Ice::InstIntrinsic::create(::function, 2, result, intrinsic); in PackUnsigned()
2795 return RValue<Short4>(createIntCompare(Ice::InstIcmp::Sgt, x.value(), y.value())); in CmpGT()
2889 Ice::Variable *condition = ::function->makeVariable(Ice::IceType_v8i1); in Max()
2890 auto cmp = Ice::InstIcmp::create(::function, Ice::InstIcmp::Ule, condition, x.value(), y.value()); in Max()
2893 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v8i16); in Max()
2894 auto select = Ice::InstSelect::create(::function, result, condition, y.value(), x.value()); in Max()
2902 Ice::Variable *condition = ::function->makeVariable(Ice::IceType_v8i1); in Min()
2903 auto cmp = Ice::InstIcmp::create(::function, Ice::InstIcmp::Ugt, condition, x.value(), y.value()); in Min()
2906 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v8i16); in Min()
2907 auto select = Ice::InstSelect::create(::function, result, condition, y.value(), x.value()); in Min()
2934 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v8i16); in AddSat()
2935 … Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::AddSaturateUnsigned, Ice::Intrinsic… in AddSat()
2936 auto paddusw = Ice::InstIntrinsic::create(::function, 2, result, intrinsic); in AddSat()
2960 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v8i16); in SubSat()
2961 …Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::SubtractSaturateUnsigned, Ice::Intri… in SubSat()
2962 auto psubusw = Ice::InstIntrinsic::create(::function, 2, result, intrinsic); in SubSat()
2986 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v8i16); in MulHigh()
2987 …Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::MultiplyHighUnsigned, Ice::Intrinsic… in MulHigh()
2988 auto pmulhuw = Ice::InstIntrinsic::create(::function, 2, result, intrinsic); in MulHigh()
3131 return T(Ice::IceType_v8i16); in type()
3201 return T(Ice::IceType_v8i16); in type()
3244 Ice::Variable *result = ::function->makeVariable(Ice::IceType_i32); in RoundInt()
3245 …const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::Nearbyint, Ice::Intrinsics::Si… in RoundInt()
3246 auto nearbyint = Ice::InstIntrinsic::create(::function, 1, result, intrinsic); in RoundInt()
3256 return T(Ice::IceType_i32); in type()
3261 return T(Ice::IceType_i64); in type()
3319 return T(Ice::IceType_i32); in type()
3561 Ice::Variable *condition = ::function->makeVariable(Ice::IceType_v4i1); in Max()
3562 auto cmp = Ice::InstIcmp::create(::function, Ice::InstIcmp::Sle, condition, x.value(), y.value()); in Max()
3565 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v4i32); in Max()
3566 auto select = Ice::InstSelect::create(::function, result, condition, y.value(), x.value()); in Max()
3575 Ice::Variable *condition = ::function->makeVariable(Ice::IceType_v4i1); in Min()
3576 auto cmp = Ice::InstIcmp::create(::function, Ice::InstIcmp::Sgt, condition, x.value(), y.value()); in Min()
3579 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v4i32); in Min()
3580 auto select = Ice::InstSelect::create(::function, result, condition, y.value(), x.value()); in Min()
3596 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v4i32); in RoundInt()
3597 …const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::Nearbyint, Ice::Intrinsics::Si… in RoundInt()
3598 auto nearbyint = Ice::InstIntrinsic::create(::function, 1, result, intrinsic); in RoundInt()
3622 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v4i32); in RoundIntClamped()
3623 …const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::Nearbyint, Ice::Intrinsics::Si… in RoundIntClamped()
3624 auto nearbyint = Ice::InstIntrinsic::create(::function, 1, result, intrinsic); in RoundIntClamped()
3651 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v8i16); in PackSigned()
3652 …t Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::VectorPackSigned, Ice::Intrinsics:… in PackSigned()
3653 auto pack = Ice::InstIntrinsic::create(::function, 2, result, intrinsic); in PackSigned()
3677 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v8i16); in PackUnsigned()
3678 … Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::VectorPackUnsigned, Ice::Intrinsics… in PackUnsigned()
3679 auto pack = Ice::InstIntrinsic::create(::function, 2, result, intrinsic); in PackUnsigned()
3698 Ice::Variable *result = ::function->makeVariable(Ice::IceType_i32); in SignMask()
3699 …const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::SignMask, Ice::Intrinsics::Sid… in SignMask()
3700 auto movmsk = Ice::InstIntrinsic::create(::function, 1, result, intrinsic); in SignMask()
3710 return T(Ice::IceType_v4i32); in type()
3820 Ice::Variable *condition = ::function->makeVariable(Ice::IceType_v4i1); in Max()
3821 auto cmp = Ice::InstIcmp::create(::function, Ice::InstIcmp::Ule, condition, x.value(), y.value()); in Max()
3824 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v4i32); in Max()
3825 auto select = Ice::InstSelect::create(::function, result, condition, y.value(), x.value()); in Max()
3834 Ice::Variable *condition = ::function->makeVariable(Ice::IceType_v4i1); in Min()
3835 auto cmp = Ice::InstIcmp::create(::function, Ice::InstIcmp::Ugt, condition, x.value(), y.value()); in Min()
3838 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v4i32); in Min()
3839 auto select = Ice::InstSelect::create(::function, result, condition, y.value(), x.value()); in Min()
3847 return T(Ice::IceType_v4i32); in type()
3852 return T(Ice::IceType_i16); in type()
3870 Ice::Variable *result = ::function->makeVariable(Ice::IceType_f32); in Sqrt()
3871 …const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::Sqrt, Ice::Intrinsics::SideEff… in Sqrt()
3872 auto sqrt = Ice::InstIntrinsic::create(::function, 1, result, intrinsic); in Sqrt()
3911 return T(Ice::IceType_f32); in type()
3934 Ice::Variable *condition = ::function->makeVariable(Ice::IceType_v4i1); in Max()
3935 auto cmp = Ice::InstFcmp::create(::function, Ice::InstFcmp::Ogt, condition, x.value(), y.value()); in Max()
3938 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v4f32); in Max()
3939 auto select = Ice::InstSelect::create(::function, result, condition, x.value(), y.value()); in Max()
3948 Ice::Variable *condition = ::function->makeVariable(Ice::IceType_v4i1); in Min()
3949 auto cmp = Ice::InstFcmp::create(::function, Ice::InstFcmp::Olt, condition, x.value(), y.value()); in Min()
3952 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v4f32); in Min()
3953 auto select = Ice::InstSelect::create(::function, result, condition, x.value(), y.value()); in Min()
4025 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v4f32); in Sqrt()
4026 …const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::Sqrt, Ice::Intrinsics::SideEff… in Sqrt()
4027 auto sqrt = Ice::InstIntrinsic::create(::function, 1, result, intrinsic); in Sqrt()
4045 Ice::Variable *result = ::function->makeVariable(Ice::IceType_i32); in SignMask()
4046 …const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::SignMask, Ice::Intrinsics::Sid… in SignMask()
4047 auto movmsk = Ice::InstIntrinsic::create(::function, 1, result, intrinsic); in SignMask()
4137 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v4f32); in Round()
4138 …const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::Round, Ice::Intrinsics::SideEf… in Round()
4139 auto round = Ice::InstIntrinsic::create(::function, 2, result, intrinsic); in Round()
4157 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v4f32); in Trunc()
4158 …const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::Round, Ice::Intrinsics::SideEf… in Trunc()
4159 auto round = Ice::InstIntrinsic::create(::function, 2, result, intrinsic); in Trunc()
4198 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v4f32); in Floor()
4199 …const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::Round, Ice::Intrinsics::SideEf… in Floor()
4200 auto round = Ice::InstIntrinsic::create(::function, 2, result, intrinsic); in Floor()
4218 Ice::Variable *result = ::function->makeVariable(Ice::IceType_v4f32); in Ceil()
4219 …const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::Round, Ice::Intrinsics::SideEf… in Ceil()
4220 auto round = Ice::InstIntrinsic::create(::function, 2, result, intrinsic); in Ceil()
4235 return T(Ice::IceType_v4f32); in type()
4266 …const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::Trap, Ice::Intrinsics::SideEff… in Breakpoint()
4267 auto trap = Ice::InstIntrinsic::create(::function, 0, nullptr, intrinsic); in Breakpoint()
4274 …onst Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::AtomicFence, Ice::Intrinsics::S… in createFence()
4275 auto inst = Ice::InstIntrinsic::create(::function, 0, nullptr, intrinsic); in createFence()
4453 Ice::Variable *result = ::function->makeVariable(Ice::IceType_i32); in Ctlz()
4454 …const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::Ctlz, Ice::Intrinsics::SideEff… in Ctlz()
4455 auto ctlz = Ice::InstIntrinsic::create(::function, 1, result, intrinsic); in Ctlz()
4493 Ice::Variable *result = ::function->makeVariable(Ice::IceType_i32); in Cttz()
4494 …const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::Cttz, Ice::Intrinsics::SideEff… in Cttz()
4495 auto ctlz = Ice::InstIntrinsic::create(::function, 1, result, intrinsic); in Cttz()
4743 using FunctionUniquePtr = std::unique_ptr<Ice::Cfg>;
4765 const Ice::Type ReturnType = Ice::IceType_i32; in generateAwaitFunction()
4766 const Ice::Type YieldPtrType = sz::getPointerType(T(::coroYieldType)); in generateAwaitFunction()
4767 const Ice::Type HandleType = sz::getPointerType(Ice::IceType_void); in generateAwaitFunction()
4769 …Ice::Cfg *awaitFunc = sz::createFunction(::context, ReturnType, std::vector<Ice::Type>{ HandleType… in generateAwaitFunction()
4770 Ice::CfgLocalAllocatorScope scopedAlloc{ awaitFunc }; in generateAwaitFunction()
4772 Ice::Variable *handle = awaitFunc->getArgs()[0]; in generateAwaitFunction()
4773 Ice::Variable *outPtr = awaitFunc->getArgs()[1]; in generateAwaitFunction()
4778 Ice::InstRet *ret = Ice::InstRet::create(awaitFunc, ::context->getConstantInt32(0)); in generateAwaitFunction()
4785 Ice::Variable *promise = sz::Call(awaitFunc, resumeBlock, coro::getPromisePtr, handle); in generateAwaitFunction()
4789 Ice::Variable *promiseVal = awaitFunc->makeVariable(T(::coroYieldType)); in generateAwaitFunction()
4790 auto load = Ice::InstLoad::create(awaitFunc, promiseVal, promise); in generateAwaitFunction()
4793 auto store = Ice::InstStore::create(awaitFunc, promiseVal, outPtr); in generateAwaitFunction()
4800 Ice::InstRet *ret = Ice::InstRet::create(awaitFunc, ::context->getConstantInt32(1)); in generateAwaitFunction()
4812 Ice::CfgNode *bb = awaitFunc->getEntryNode(); in generateAwaitFunction()
4813 Ice::Variable *done = sz::Call(awaitFunc, bb, coro::isDone, handle); in generateAwaitFunction()
4814 auto br = Ice::InstBr::create(awaitFunc, done, doneBlock, resumeBlock); in generateAwaitFunction()
4830 const Ice::Type ReturnType = Ice::IceType_void; in generateDestroyFunction()
4831 const Ice::Type HandleType = sz::getPointerType(Ice::IceType_void); in generateDestroyFunction()
4833 …Ice::Cfg *destroyFunc = sz::createFunction(::context, ReturnType, std::vector<Ice::Type>{ HandleTy… in generateDestroyFunction()
4834 Ice::CfgLocalAllocatorScope scopedAlloc{ destroyFunc }; in generateDestroyFunction()
4836 Ice::Variable *handle = destroyFunc->getArgs()[0]; in generateDestroyFunction()
4844 Ice::InstRet *ret = Ice::InstRet::create(destroyFunc); in generateDestroyFunction()
4851 Ice::Variable *handle{};
4852 Ice::Variable *promise{};
4939 Ice::CfgLocalAllocatorScope scopedAlloc{ ::function }; in acquireCoroutine()
4959 Ice::CfgLocalAllocatorScope scopedAlloc{ ::function }; in acquireCoroutine()