Lines Matching refs:WasmGraphBuilder
519 WasmGraphBuilder::WasmGraphBuilder(
541 WasmGraphBuilder::~WasmGraphBuilder() = default;
543 void WasmGraphBuilder::Start(unsigned params) {
571 Node* WasmGraphBuilder::Param(int index, const char* debug_name) {
584 Node* WasmGraphBuilder::Loop(Node* entry) {
588 void WasmGraphBuilder::TerminateLoop(Node* effect, Node* control) {
594 Node* WasmGraphBuilder::LoopExit(Node* loop_node) {
604 Node* WasmGraphBuilder::LoopExitValue(Node* value,
611 void WasmGraphBuilder::TerminateThrow(Node* effect, Node* control) {
617 bool WasmGraphBuilder::IsPhiWithMerge(Node* phi, Node* merge) {
622 bool WasmGraphBuilder::ThrowsException(Node* node, Node** if_success,
635 void WasmGraphBuilder::AppendToMerge(Node* merge, Node* from) {
643 void WasmGraphBuilder::AppendToPhi(Node* phi, Node* from) {
652 Node* WasmGraphBuilder::Merge(Node* fst, Nodes*... args) {
657 Node* WasmGraphBuilder::Merge(unsigned count, Node** controls) {
661 Node* WasmGraphBuilder::Phi(wasm::ValueType type, unsigned count,
670 Node* WasmGraphBuilder::EffectPhi(unsigned count, Node** effects_and_control) {
676 Node* WasmGraphBuilder::RefNull() { return LOAD_ROOT(NullValue, null_value); }
678 Node* WasmGraphBuilder::RefFunc(uint32_t function_index) {
684 Node* WasmGraphBuilder::RefAsNonNull(Node* arg,
692 Node* WasmGraphBuilder::NoContextConstant() {
696 Node* WasmGraphBuilder::GetInstance() { return instance_node_.get(); }
698 Node* WasmGraphBuilder::BuildLoadIsolateRoot() {
716 Node* WasmGraphBuilder::Int32Constant(int32_t value) {
720 Node* WasmGraphBuilder::Int64Constant(int64_t value) {
724 Node* WasmGraphBuilder::UndefinedValue() {
728 void WasmGraphBuilder::StackCheck(
804 void WasmGraphBuilder::PatchInStackCheckIfNeeded() {
841 Node* WasmGraphBuilder::Binop(wasm::WasmOpcode opcode, Node* left, Node* right,
1126 Node* WasmGraphBuilder::Unop(wasm::WasmOpcode opcode, Node* input,
1413 Node* WasmGraphBuilder::Float32Constant(float value) {
1417 Node* WasmGraphBuilder::Float64Constant(double value) {
1421 Node* WasmGraphBuilder::Simd128Constant(const uint8_t value[16]) {
1426 Node* WasmGraphBuilder::BranchNoHint(Node* cond, Node** true_node,
1431 Node* WasmGraphBuilder::BranchExpectFalse(Node* cond, Node** true_node,
1436 Node* WasmGraphBuilder::BranchExpectTrue(Node* cond, Node** true_node,
1441 Node* WasmGraphBuilder::Select(Node *cond, Node* true_node,
1471 TrapId WasmGraphBuilder::GetTrapIdForTrap(wasm::TrapReason reason) {
1495 void WasmGraphBuilder::TrapIfTrue(wasm::TrapReason reason, Node* cond,
1503 void WasmGraphBuilder::TrapIfFalse(wasm::TrapReason reason, Node* cond,
1512 void WasmGraphBuilder::TrapIfEq32(wasm::TrapReason reason, Node* node,
1525 void WasmGraphBuilder::ZeroCheck32(wasm::TrapReason reason, Node* node,
1531 void WasmGraphBuilder::TrapIfEq64(wasm::TrapReason reason, Node* node,
1540 void WasmGraphBuilder::ZeroCheck64(wasm::TrapReason reason, Node* node,
1545 Node* WasmGraphBuilder::Switch(unsigned count, Node* key) {
1553 Node* WasmGraphBuilder::IfValue(int32_t value, Node* sw) {
1558 Node* WasmGraphBuilder::IfDefault(Node* sw) {
1563 Node* WasmGraphBuilder::Return(base::Vector<Node*> vals) {
1580 void WasmGraphBuilder::Trap(wasm::TrapReason reason,
1587 Node* WasmGraphBuilder::MaskShiftCount32(Node* node) {
1602 Node* WasmGraphBuilder::MaskShiftCount64(Node* node) {
1634 Node* WasmGraphBuilder::BuildChangeEndiannessStore(
1751 Node* WasmGraphBuilder::BuildChangeEndiannessLoad(Node* node,
1882 Node* WasmGraphBuilder::BuildF32CopySign(Node* left, Node* right) {
1894 Node* WasmGraphBuilder::BuildF64CopySign(Node* left, Node* right) {
1969 const Operator* ConvertOp(WasmGraphBuilder* builder, wasm::WasmOpcode opcode) {
2050 Node* Zero(WasmGraphBuilder* builder, const MachineType& ty) {
2065 Node* Min(WasmGraphBuilder* builder, const MachineType& ty) {
2080 Node* Max(WasmGraphBuilder* builder, const MachineType& ty) {
2128 Node* ConvertTrapTest(WasmGraphBuilder* builder, wasm::WasmOpcode opcode,
2139 Node* ConvertSaturateTest(WasmGraphBuilder* builder, wasm::WasmOpcode opcode,
2153 Node* WasmGraphBuilder::BuildIntConvertFloat(Node* input,
2201 Node* WasmGraphBuilder::BuildI32AsmjsSConvertF32(Node* input) {
2206 Node* WasmGraphBuilder::BuildI32AsmjsSConvertF64(Node* input) {
2211 Node* WasmGraphBuilder::BuildI32AsmjsUConvertF32(Node* input) {
2216 Node* WasmGraphBuilder::BuildI32AsmjsUConvertF64(Node* input) {
2221 Node* WasmGraphBuilder::BuildBitCountingCall(Node* input, ExternalReference ref,
2233 Node* WasmGraphBuilder::BuildI32Ctz(Node* input) {
2238 Node* WasmGraphBuilder::BuildI64Ctz(Node* input) {
2244 Node* WasmGraphBuilder::BuildI32Popcnt(Node* input) {
2249 Node* WasmGraphBuilder::BuildI64Popcnt(Node* input) {
2256 Node* WasmGraphBuilder::BuildF32Trunc(Node* input) {
2263 Node* WasmGraphBuilder::BuildF32Floor(Node* input) {
2269 Node* WasmGraphBuilder::BuildF32Ceil(Node* input) {
2275 Node* WasmGraphBuilder::BuildF32NearestInt(Node* input) {
2281 Node* WasmGraphBuilder::BuildF64Trunc(Node* input) {
2287 Node* WasmGraphBuilder::BuildF64Floor(Node* input) {
2293 Node* WasmGraphBuilder::BuildF64Ceil(Node* input) {
2299 Node* WasmGraphBuilder::BuildF64NearestInt(Node* input) {
2305 Node* WasmGraphBuilder::BuildF64Acos(Node* input) {
2311 Node* WasmGraphBuilder::BuildF64Asin(Node* input) {
2317 Node* WasmGraphBuilder::BuildF64Pow(Node* left, Node* right) {
2323 Node* WasmGraphBuilder::BuildF64Mod(Node* left, Node* right) {
2329 Node* WasmGraphBuilder::BuildCFuncInstruction(ExternalReference ref,
2354 Node* WasmGraphBuilder::BuildF32SConvertI64(Node* input) {
2360 Node* WasmGraphBuilder::BuildF32UConvertI64(Node* input) {
2366 Node* WasmGraphBuilder::BuildF64SConvertI64(Node* input) {
2371 Node* WasmGraphBuilder::BuildF64UConvertI64(Node* input) {
2377 Node* WasmGraphBuilder::BuildIntToFloatConversionInstruction(
2419 Node* WasmGraphBuilder::BuildCcallConvertFloat(Node* input,
2457 Node* WasmGraphBuilder::MemoryGrow(Node* input) {
2485 Node* WasmGraphBuilder::Throw(uint32_t tag_index, const wasm::WasmTag* tag,
2557 void WasmGraphBuilder::BuildEncodeException32BitValue(Node* values_array,
2570 Node* WasmGraphBuilder::BuildDecodeException32BitValue(Node* values_array,
2583 Node* WasmGraphBuilder::BuildDecodeException64BitValue(Node* values_array,
2594 Node* WasmGraphBuilder::Rethrow(Node* except_obj) {
2602 Node* WasmGraphBuilder::ExceptionTagEqual(Node* caught_tag,
2607 Node* WasmGraphBuilder::LoadTagFromTable(uint32_t tag_index) {
2614 Node* WasmGraphBuilder::GetExceptionTag(Node* except_obj) {
2621 Node* WasmGraphBuilder::GetExceptionValues(Node* except_obj,
2682 Node* WasmGraphBuilder::BuildI32DivS(Node* left, Node* right,
2700 Node* WasmGraphBuilder::BuildI32RemS(Node* left, Node* right,
2714 Node* WasmGraphBuilder::BuildI32DivU(Node* left, Node* right,
2720 Node* WasmGraphBuilder::BuildI32RemU(Node* left, Node* right,
2726 Node* WasmGraphBuilder::BuildI32AsmjsDivS(Node* left, Node* right) {
2764 Node* WasmGraphBuilder::BuildI32AsmjsRemS(Node* left, Node* right) {
2862 Node* WasmGraphBuilder::BuildI32AsmjsDivU(Node* left, Node* right) {
2880 Node* WasmGraphBuilder::BuildI32AsmjsRemU(Node* left, Node* right) {
2892 Node* WasmGraphBuilder::BuildI64DivS(Node* left, Node* right,
2915 Node* WasmGraphBuilder::BuildI64RemS(Node* left, Node* right,
2933 Node* WasmGraphBuilder::BuildI64DivU(Node* left, Node* right,
2942 Node* WasmGraphBuilder::BuildI64RemU(Node* left, Node* right,
2952 Node* WasmGraphBuilder::BuildDiv64Call(Node* left, Node* right,
2972 Node* WasmGraphBuilder::IsNull(Node* object) {
2977 Node* WasmGraphBuilder::BuildCCall(MachineSignature* sig, Node* function,
2989 Node* WasmGraphBuilder::BuildCallNode(const wasm::FunctionSig* sig,
3026 Node* WasmGraphBuilder::BuildWasmCall(const wasm::FunctionSig* sig,
3057 Node* WasmGraphBuilder::BuildWasmReturnCall(const wasm::FunctionSig* sig,
3073 Node* WasmGraphBuilder::BuildImportCall(const wasm::FunctionSig* sig,
3083 Node* WasmGraphBuilder::BuildImportCall(const wasm::FunctionSig* sig,
3116 Node* WasmGraphBuilder::CallDirect(uint32_t index, wasm::FunctionSig* real_sig,
3136 Node* WasmGraphBuilder::CallIndirect(uint32_t table_index, uint32_t sig_index,
3145 void WasmGraphBuilder::LoadIndirectFunctionTable(uint32_t table_index,
3194 Node* WasmGraphBuilder::BuildIndirectCall(
3259 Node* WasmGraphBuilder::BuildLoadExternalPointerFromObject(
3281 Node* WasmGraphBuilder::BuildLoadCallTargetFromExportedFunctionData(
3291 Node* WasmGraphBuilder::BuildCallRef(const wasm::FunctionSig* real_sig,
3344 void WasmGraphBuilder::CompareToInternalFunctionAtIndex(
3360 Node* WasmGraphBuilder::CallRef(const wasm::FunctionSig* real_sig,
3363 WasmGraphBuilder::CheckForNull null_check,
3369 Node* WasmGraphBuilder::ReturnCallRef(const wasm::FunctionSig* real_sig,
3371 WasmGraphBuilder::CheckForNull null_check,
3377 Node* WasmGraphBuilder::ReturnCall(uint32_t index,
3397 Node* WasmGraphBuilder::ReturnCallIndirect(uint32_t table_index,
3406 void WasmGraphBuilder::BrOnNull(Node* ref_object, Node** null_node,
3411 Node* WasmGraphBuilder::BuildI32Rol(Node* left, Node* right) {
3424 Node* WasmGraphBuilder::BuildI64Rol(Node* left, Node* right) {
3434 Node* WasmGraphBuilder::Invert(Node* node) {
3438 Node* WasmGraphBuilder::BuildTruncateIntPtrToInt32(Node* value) {
3443 Node* WasmGraphBuilder::BuildChangeInt32ToIntPtr(Node* value) {
3448 Node* WasmGraphBuilder::BuildChangeIntPtrToInt64(Node* value) {
3453 Node* WasmGraphBuilder::BuildChangeUint32ToUintPtr(Node* node) {
3464 Node* WasmGraphBuilder::BuildSmiShiftBitsConstant() {
3468 Node* WasmGraphBuilder::BuildSmiShiftBitsConstant32() {
3472 Node* WasmGraphBuilder::BuildChangeInt32ToSmi(Node* value) {
3480 Node* WasmGraphBuilder::BuildChangeUint31ToSmi(Node* value) {
3487 Node* WasmGraphBuilder::BuildChangeSmiToInt32(Node* value) {
3494 Node* WasmGraphBuilder::BuildChangeSmiToIntPtr(Node* value) {
3501 Node* WasmGraphBuilder::BuildConvertUint32ToSmiWithSaturation(Node* value,
3513 void WasmGraphBuilder::InitInstanceCache(
3534 void WasmGraphBuilder::PrepareInstanceCacheForLoop(
3545 void WasmGraphBuilder::NewInstanceCacheMerge(WasmInstanceCacheNodes* to,
3559 void WasmGraphBuilder::MergeInstanceCacheInto(WasmInstanceCacheNodes* to,
3568 Node* WasmGraphBuilder::CreateOrMergeIntoPhi(MachineRepresentation rep,
3588 Node* WasmGraphBuilder::CreateOrMergeIntoEffectPhi(Node* merge, Node* tnode,
3609 Node* WasmGraphBuilder::effect() { return gasm_->effect(); }
3611 Node* WasmGraphBuilder::control() { return gasm_->control(); }
3613 Node* WasmGraphBuilder::SetEffect(Node* node) {
3618 Node* WasmGraphBuilder::SetControl(Node* node) {
3623 void WasmGraphBuilder::SetEffectControl(Node* effect, Node* control) {
3627 Node* WasmGraphBuilder::MemBuffer(uintptr_t offset) {
3635 Node* WasmGraphBuilder::CurrentMemoryPages() {
3650 Node* WasmGraphBuilder::BuildCallToRuntimeWithContext(Runtime::FunctionId f,
3688 Node* WasmGraphBuilder::BuildCallToRuntime(Runtime::FunctionId f,
3695 void WasmGraphBuilder::GetGlobalBaseAndOffset(const wasm::WasmGlobal& global,
3730 Node* WasmGraphBuilder::GlobalGet(uint32_t index) {
3741 void WasmGraphBuilder::GlobalSet(uint32_t index, Node* val) {
3753 Node* WasmGraphBuilder::TableGet(uint32_t table_index, Node* index,
3760 void WasmGraphBuilder::TableSet(uint32_t table_index, Node* index, Node* val,
3766 Node* WasmGraphBuilder::CheckBoundsAndAlignment(
3806 std::pair<Node*, WasmGraphBuilder::BoundsCheckResult>
3807 WasmGraphBuilder::BoundsCheckMem(uint8_t access_size, Node* index,
3885 const Operator* WasmGraphBuilder::GetSafeLoadOperator(int offset,
3901 const Operator* WasmGraphBuilder::GetSafeStoreOperator(int offset,
3918 void WasmGraphBuilder::TraceFunctionEntry(wasm::WasmCodePosition position) {
3923 void WasmGraphBuilder::TraceFunctionExit(base::Vector<Node*> vals,
3941 void WasmGraphBuilder::TraceMemoryOperation(bool is_store,
4014 WasmGraphBuilder::BoundsCheckResult bounds_check_result) {
4015 if (bounds_check_result == WasmGraphBuilder::kTrapHandler) {
4031 Node* WasmGraphBuilder::LoadLane(wasm::ValueType type, MachineType memtype,
4062 Node* WasmGraphBuilder::LoadTransform(wasm::ValueType type, MachineType memtype,
4103 Node* WasmGraphBuilder::LoadMem(wasm::ValueType type, MachineType memtype,
4156 void WasmGraphBuilder::StoreLane(MachineRepresentation mem_rep, Node* index,
4184 void WasmGraphBuilder::StoreMem(MachineRepresentation mem_rep, Node* index,
4225 Node* WasmGraphBuilder::BuildAsmjsLoadMem(MachineType type, Node* index) {
4270 Node* WasmGraphBuilder::BuildAsmjsStoreMem(MachineType type, Node* index,
4296 Node* WasmGraphBuilder::BuildF64x2Ceil(Node* input) {
4302 Node* WasmGraphBuilder::BuildF64x2Floor(Node* input) {
4308 Node* WasmGraphBuilder::BuildF64x2Trunc(Node* input) {
4314 Node* WasmGraphBuilder::BuildF64x2NearestInt(Node* input) {
4320 Node* WasmGraphBuilder::BuildF32x4Ceil(Node* input) {
4326 Node* WasmGraphBuilder::BuildF32x4Floor(Node* input) {
4332 Node* WasmGraphBuilder::BuildF32x4Trunc(Node* input) {
4338 Node* WasmGraphBuilder::BuildF32x4NearestInt(Node* input) {
4344 void WasmGraphBuilder::PrintDebugName(Node* node) {
4348 Graph* WasmGraphBuilder::graph() { return mcgraph()->graph(); }
4350 Zone* WasmGraphBuilder::graph_zone() { return graph()->zone(); }
4355 WasmGraphBuilder::CallOrigin origin) {
4359 if (origin == WasmGraphBuilder::kCalledFromJS) {
4367 if (origin == WasmGraphBuilder::kCalledFromJS) {
4381 void WasmGraphBuilder::AddInt64LoweringReplacement(
4389 CallDescriptor* WasmGraphBuilder::GetI32AtomicWaitCallDescriptor() {
4403 CallDescriptor* WasmGraphBuilder::GetI64AtomicWaitCallDescriptor() {
4417 void WasmGraphBuilder::LowerInt64(Signature<MachineRepresentation>* sig) {
4425 void WasmGraphBuilder::LowerInt64(CallOrigin origin) {
4429 void WasmGraphBuilder::SetSourcePosition(Node* node,
4437 Node* WasmGraphBuilder::S128Zero() {
4442 Node* WasmGraphBuilder::SimdOp(wasm::WasmOpcode opcode, Node* const* inputs) {
5093 Node* WasmGraphBuilder::SimdLaneOp(wasm::WasmOpcode opcode, uint8_t lane,
5144 Node* WasmGraphBuilder::Simd8x16ShuffleOp(const uint8_t shuffle[16],
5151 Node* WasmGraphBuilder::AtomicOp(wasm::WasmOpcode opcode, Node* const* inputs,
5408 void WasmGraphBuilder::AtomicFence() {
5413 void WasmGraphBuilder::MemoryInit(uint32_t data_segment_index, Node* dst,
5440 void WasmGraphBuilder::DataDrop(uint32_t data_segment_index,
5452 Node* WasmGraphBuilder::StoreArgsInStackSlot(
5472 void WasmGraphBuilder::MemTypeToUintPtrOrOOBTrap(
5493 void WasmGraphBuilder::MemoryCopy(Node* dst, Node* src, Node* size,
5512 void WasmGraphBuilder::MemoryFill(Node* dst, Node* value, Node* size,
5531 void WasmGraphBuilder::TableInit(uint32_t table_index,
5540 void WasmGraphBuilder::ElemDrop(uint32_t elem_segment_index,
5554 void WasmGraphBuilder::TableCopy(uint32_t table_dst_index,
5562 Node* WasmGraphBuilder::TableGrow(uint32_t table_index, Node* value,
5570 Node* WasmGraphBuilder::TableSize(uint32_t table_index) {
5583 void WasmGraphBuilder::TableFill(uint32_t table_index, Node* start, Node* value,
5591 Node* WasmGraphBuilder::StructNewWithRtt(uint32_t struct_index,
5625 Node* WasmGraphBuilder::ArrayNewWithRtt(uint32_t array_index,
5670 Node* WasmGraphBuilder::ArrayInit(const wasm::ArrayType* type, Node* rtt,
5693 Node* WasmGraphBuilder::ArrayInitFromData(const wasm::ArrayType* type,
5714 Node* WasmGraphBuilder::RttCanon(uint32_t type_index) {
5722 WasmGraphBuilder::Callbacks WasmGraphBuilder::TestCallbacks(
5738 WasmGraphBuilder::Callbacks WasmGraphBuilder::CastCallbacks(
5754 WasmGraphBuilder::Callbacks WasmGraphBuilder::BranchCallbacks(
5787 void WasmGraphBuilder::TypeCheck(
5788 Node* object, Node* rtt, WasmGraphBuilder::ObjectReferenceKnowledge config,
5821 void WasmGraphBuilder::DataCheck(Node* object, bool object_can_be_null,
5831 void WasmGraphBuilder::ManagedObjectInstanceCheck(Node* object,
5843 void WasmGraphBuilder::BrOnCastAbs(
5871 Node* WasmGraphBuilder::RefTest(Node* object, Node* rtt,
5880 Node* WasmGraphBuilder::RefCast(Node* object, Node* rtt,
5892 void WasmGraphBuilder::BrOnCast(Node* object, Node* rtt,
5903 Node* WasmGraphBuilder::RefIsData(Node* object, bool object_can_be_null) {
5911 Node* WasmGraphBuilder::RefAsData(Node* object, bool object_can_be_null,
5920 void WasmGraphBuilder::BrOnData(Node* object, Node* /*rtt*/,
5931 Node* WasmGraphBuilder::RefIsFunc(Node* object, bool object_can_be_null) {
5940 Node* WasmGraphBuilder::RefAsFunc(Node* object, bool object_can_be_null,
5951 void WasmGraphBuilder::BrOnFunc(Node* object, Node* /*rtt*/,
5964 Node* WasmGraphBuilder::RefIsArray(Node* object, bool object_can_be_null) {
5973 Node* WasmGraphBuilder::RefAsArray(Node* object, bool object_can_be_null,
5983 void WasmGraphBuilder::BrOnArray(Node* object, Node* /*rtt*/,
5996 Node* WasmGraphBuilder::RefIsI31(Node* object) { return gasm_->IsI31(object); }
5998 Node* WasmGraphBuilder::RefAsI31(Node* object,
6004 void WasmGraphBuilder::BrOnI31(Node* object, Node* /* rtt */,
6017 Node* WasmGraphBuilder::StructGet(Node* struct_object,
6036 void WasmGraphBuilder::StructSet(Node* struct_object,
6047 void WasmGraphBuilder::BoundsCheckArray(Node* array, Node* index,
6055 void WasmGraphBuilder::BoundsCheckArrayCopy(Node* array, Node* index,
6067 Node* WasmGraphBuilder::ArrayGet(Node* array_object,
6084 void WasmGraphBuilder::ArraySet(Node* array_object, const wasm::ArrayType* type,
6097 Node* WasmGraphBuilder::ArrayLen(Node* array_object, CheckForNull null_check,
6107 void WasmGraphBuilder::ArrayCopy(Node* dst_array, Node* dst_index,
6142 Node* WasmGraphBuilder::I31New(Node* input) {
6151 Node* WasmGraphBuilder::I31GetS(Node* input) {
6161 Node* WasmGraphBuilder::I31GetU(Node* input) {
6187 void WasmGraphBuilder::AddBytecodePositionDecorator(
6194 void WasmGraphBuilder::RemoveBytecodePositionDecorator() {
6204 class WasmWrapperGraphBuilder : public WasmGraphBuilder {
6212 : WasmGraphBuilder(nullptr, zone, mcgraph, sig, spt, parameter_mode,
7652 WasmGraphBuilder::kNoSpecialParameterMode,
7676 WasmGraphBuilder::kNoSpecialParameterMode, isolate, nullptr,
8004 WasmGraphBuilder builder(&env, mcgraph->zone(), mcgraph, sig,
8082 WasmGraphBuilder::kWasmApiFunctionRefMode, nullptr, source_position_table,
8133 WasmGraphBuilder::kWasmApiFunctionRefMode, nullptr, source_positions,
8182 WasmGraphBuilder::kWasmApiFunctionRefMode, nullptr, source_positions,
8233 WasmGraphBuilder::kWasmApiFunctionRefMode,
8282 WasmGraphBuilder::kNoSpecialParameterMode,
8330 WasmGraphBuilder::kWasmApiFunctionRefMode,
8380 WasmGraphBuilder builder(env, mcgraph->zone(), mcgraph, func_body.sig,
8396 WasmGraphBuilder::kCalledFromWasm);
8763 const wasm::FunctionSig* WasmGraphBuilder::Int64LoweredSig(