Lines Matching +full:auto +full:- +full:range

1 //===- MILexer.cpp - Machine instructions lexer implementation ------------===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
11 //===----------------------------------------------------------------------===//
44 char peek(int I = 0) const { return End - Ptr <= I ? 0 : Ptr[I]; } in peek()
48 StringRef remaining() const { return StringRef(Ptr, End - Ptr); } in remaining()
52 return StringRef(Ptr, C.Ptr - Ptr); in upto()
62 MIToken &MIToken::reset(TokenKind Kind, StringRef Range) { in reset() argument
63 this->Kind = Kind; in reset()
64 this->Range = Range; in reset()
80 this->IntVal = std::move(IntVal); in setIntegerValue()
117 /// expression: [-a-zA-Z$._0-9]
119 return isalpha(C) || isdigit(C) || C == '_' || C == '-' || C == '.' || in isIdentifierChar()
128 Cursor C = Cursor(Value.substr(1, Value.size() - 2)); in unescapeQuotedString()
170 auto Range = C; in lexName() local
174 StringRef String = Range.upto(R); in lexName()
180 Token.reset(MIToken::Error, Range.remaining()); in lexName()
181 return Range; in lexName()
185 Token.reset(Type, Range.upto(C)) in lexName()
186 .setStringValue(Range.upto(C).drop_front(PrefixLength)); in lexName()
194 .Case("implicit-def", MIToken::kw_implicit_define) in getIdentifierKind()
200 .Case("early-clobber", MIToken::kw_early_clobber) in getIdentifierKind()
201 .Case("debug-use", MIToken::kw_debug_use) in getIdentifierKind()
203 .Case("tied-def", MIToken::kw_tied_def) in getIdentifierKind()
204 .Case("frame-setup", MIToken::kw_frame_setup) in getIdentifierKind()
205 .Case("frame-destroy", MIToken::kw_frame_destroy) in getIdentifierKind()
221 .Case("debug-location", MIToken::kw_debug_location) in getIdentifierKind()
222 .Case("debug-instr-number", MIToken::kw_debug_instr_number) in getIdentifierKind()
223 .Case("dbg-instr-ref", MIToken::kw_dbg_instr_ref) in getIdentifierKind()
243 .Case("target-index", MIToken::kw_target_index) in getIdentifierKind()
251 .Case("target-flags", MIToken::kw_target_flags) in getIdentifierKind()
253 .Case("non-temporal", MIToken::kw_non_temporal) in getIdentifierKind()
261 .Case("jump-table", MIToken::kw_jump_table) in getIdentifierKind()
262 .Case("constant-pool", MIToken::kw_constant_pool) in getIdentifierKind()
263 .Case("call-entry", MIToken::kw_call_entry) in getIdentifierKind()
266 .Case("landing-pad", MIToken::kw_landing_pad) in getIdentifierKind()
267 .Case("inlineasm-br-indirect-target", in getIdentifierKind()
269 .Case("ehfunclet-entry", MIToken::kw_ehfunclet_entry) in getIdentifierKind()
275 .Case("pre-instr-symbol", MIToken::kw_pre_instr_symbol) in getIdentifierKind()
276 .Case("post-instr-symbol", MIToken::kw_post_instr_symbol) in getIdentifierKind()
277 .Case("heap-alloc-marker", MIToken::kw_heap_alloc_marker) in getIdentifierKind()
279 .Case("cfi-type", MIToken::kw_cfi_type) in getIdentifierKind()
282 .Case("unknown-size", MIToken::kw_unknown_size) in getIdentifierKind()
283 .Case("unknown-address", MIToken::kw_unknown_address) in getIdentifierKind()
285 .Case("ir-block-address-taken", MIToken::kw_ir_block_address_taken) in getIdentifierKind()
286 .Case("machine-block-address-taken", in getIdentifierKind()
288 .Case("call-frame-size", MIToken::kw_call_frame_size) in getIdentifierKind()
296 auto Range = C; in maybeLexIdentifier() local
299 auto Identifier = Range.upto(C); in maybeLexIdentifier()
310 auto Range = C; in maybeLexMachineBasicBlock() local
318 auto NumberRange = C; in maybeLexMachineBasicBlock()
334 Range.upto(C)) in maybeLexMachineBasicBlock()
336 .setStringValue(Range.upto(C).drop_front(StringOffset)); in maybeLexMachineBasicBlock()
344 auto Range = C; in maybeLexIndex() local
346 auto NumberRange = C; in maybeLexIndex()
349 Token.reset(Kind, Range.upto(C)).setIntegerValue(APSInt(NumberRange.upto(C))); in maybeLexIndex()
357 auto Range = C; in maybeLexIndexAndName() local
359 auto NumberRange = C; in maybeLexIndexAndName()
370 Token.reset(Kind, Range.upto(C)) in maybeLexIndexAndName()
372 .setStringValue(Range.upto(C).drop_front(StringOffset)); in maybeLexIndexAndName()
377 return maybeLexIndex(C, Token, "%jump-table.", MIToken::JumpTableIndex); in maybeLexJumpTableIndex()
385 return maybeLexIndex(C, Token, "%fixed-stack.", MIToken::FixedStackObject); in maybeLexFixedStackObject()
403 const StringRef Rule = "%ir-block."; in maybeLexIRBlock()
430 auto Range = C; in lexVirtualRegister() local
432 auto NumberRange = C; in lexVirtualRegister()
435 Token.reset(MIToken::VirtualRegister, Range.upto(C)) in lexVirtualRegister()
446 Cursor Range = C; in lexNamedVirtualRegister() local
450 Token.reset(MIToken::NamedVirtualRegister, Range.upto(C)) in lexNamedVirtualRegister()
451 .setStringValue(Range.upto(C).drop_front(1)); // Drop the '%' in lexNamedVirtualRegister()
471 auto Range = C; in maybeLexRegister() local
475 Token.reset(MIToken::NamedRegister, Range.upto(C)) in maybeLexRegister()
476 .setStringValue(Range.upto(C).drop_front(1)); // Drop the '$' in maybeLexRegister()
487 auto Range = C; in maybeLexGlobalValue() local
489 auto NumberRange = C; in maybeLexGlobalValue()
492 Token.reset(MIToken::GlobalValue, Range.upto(C)) in maybeLexGlobalValue()
510 auto Start = C; in maybeLexMCSymbol()
556 static Cursor lexFloatingPointLiteral(Cursor Range, Cursor C, MIToken &Token) { in lexFloatingPointLiteral() argument
558 // Skip over [0-9]*([eE][-+]?[0-9]+)? in lexFloatingPointLiteral()
563 ((C.peek(1) == '-' || C.peek(1) == '+') && isdigit(C.peek(2))))) { in lexFloatingPointLiteral()
568 Token.reset(MIToken::FloatingPointLiteral, Range.upto(C)); in lexFloatingPointLiteral()
575 Cursor Range = C; in maybeLexHexadecimalLiteral() local
584 StringRef StrVal = Range.upto(C); in maybeLexHexadecimalLiteral()
588 Token.reset(MIToken::HexLiteral, Range.upto(C)); in maybeLexHexadecimalLiteral()
589 else // It must be 3, which means that there was a floating-point prefix. in maybeLexHexadecimalLiteral()
590 Token.reset(MIToken::FloatingPointLiteral, Range.upto(C)); in maybeLexHexadecimalLiteral()
595 if (!isdigit(C.peek()) && (C.peek() != '-' || !isdigit(C.peek(1)))) in maybeLexNumericalLiteral()
597 auto Range = C; in maybeLexNumericalLiteral() local
602 return lexFloatingPointLiteral(Range, C, Token); in maybeLexNumericalLiteral()
603 StringRef StrVal = Range.upto(C); in maybeLexNumericalLiteral()
613 .Case("!range", MIToken::md_range) in getMetadataKeywordKind()
623 auto Range = C; in maybeLexExclaim() local
626 Token.reset(MIToken::exclaim, Range.upto(C)); in maybeLexExclaim()
631 StringRef StrVal = Range.upto(C); in maybeLexExclaim()
659 case '-': in symbolToken()
680 auto Range = C; in maybeLexSymbol() local
682 Token.reset(Kind, Range.upto(C)); in maybeLexSymbol()
689 auto Range = C; in maybeLexNewline() local
691 Token.reset(MIToken::Newline, Range.upto(C)); in maybeLexNewline()
699 auto Range = C; in maybeLexEscapedIRValue() local
701 auto StrRange = C; in maybeLexEscapedIRValue()
707 Token.reset(MIToken::Error, Range.remaining()); in maybeLexEscapedIRValue()
714 Token.reset(MIToken::QuotedIRValue, Range.upto(C)).setStringValue(Value); in maybeLexEscapedIRValue()
720 auto C = skipComment(skipWhitespace(Cursor(Source))); in lexMIToken()