diff options
| author | Richard-Qin-X <richard.qin.001@gmail.com> | 2026-08-27 17:13:36 +0800 |
|---|---|---|
| committer | Richard-Qin-X <richard.qin.001@gmail.com> | 2026-08-27 17:13:36 +0800 |
| commit | 3b14bd4d5324b5a280c1ee5567b5526b59e60c5b (patch) | |
| tree | 1881fc10785a8c195c9b1cdb2ddde6c310f63ab7 /backend/utils/TableGen/GlobalISelEmitter.cpp | |
| parent | dd477bc887546b00144ea6c0a3e03ad366661636 (diff) | |
| download | rcc-project-3b14bd4d5324b5a280c1ee5567b5526b59e60c5b.tar.gz rcc-project-3b14bd4d5324b5a280c1ee5567b5526b59e60c5b.tar.xz | |
[GlobalISel] Generate floating memory selection
Diffstat (limited to 'backend/utils/TableGen/GlobalISelEmitter.cpp')
| -rw-r--r-- | backend/utils/TableGen/GlobalISelEmitter.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/backend/utils/TableGen/GlobalISelEmitter.cpp b/backend/utils/TableGen/GlobalISelEmitter.cpp index 092969d..3ce9411 100644 --- a/backend/utils/TableGen/GlobalISelEmitter.cpp +++ b/backend/utils/TableGen/GlobalISelEmitter.cpp @@ -162,8 +162,16 @@ std::string emitGlobalISel(const NormalizedTargetModel &Model, std::string_view emitInstruction(Output, "CaptureDefOperand", DefUse.RootOperandIndex, Capture.ID, std::to_string(Capture.OperandIndex)); } - for (const NormalizedSelectionTemporary &Temporary : Rule.Temporaries) - emitInstruction(Output, "CreateTemporary", Temporary.TypeFromOperand, Temporary.ID); + for (const NormalizedSelectionTemporary &Temporary : Rule.Temporaries) { + if (Temporary.TypeFromOperand) { + emitInstruction(Output, "CreateTemporary", *Temporary.TypeFromOperand, Temporary.ID); + continue; + } + emitInstruction(Output, "CreateTemporaryType", 0, Temporary.ID, + "static_cast<std::uint32_t>(GIMatchTypeKind::" + + std::string(typeKindName(Temporary.Type->Kind)) + ")", + Temporary.Type->Bits); + } for (const NormalizedSelectionAction &Action : Rule.Actions) { emitInstruction(Output, Action.ReplacesRoot ? "MutateOpcode" : "BuildInstruction", 0, Action.ResultOpcode); |
