1//===-- RISCVScheduleXSf.td - Scheduling Definitions XSf ---*- tablegen -*-===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8// 9// This file describes the scheduling information for SiFive extensions. 10// 11//===----------------------------------------------------------------------===// 12 13multiclass LMULSchedWritesVCIX<string id>{ 14defm "" : LMULSchedWrites<"WriteVC_" # id>; 15defm "" : LMULSchedWrites<"WriteVC_V_" # id>; 16} 17 18defm "" : LMULSchedWritesVCIX<"I">; 19defm "" : LMULSchedWritesVCIX<"X">; 20defm "" : LMULSchedWritesVCIX<"IV">; 21defm "" : LMULSchedWritesVCIX<"VV">; 22defm "" : LMULSchedWritesVCIX<"XV">; 23defm "" : LMULSchedWritesVCIX<"IVV">; 24defm "" : LMULSchedWritesVCIX<"IVW">; 25defm "" : LMULSchedWritesVCIX<"VVV">; 26defm "" : LMULSchedWritesVCIX<"VVW">; 27defm "" : LMULSchedWritesVCIX<"XVV">; 28defm "" : LMULSchedWritesVCIX<"XVW">; 29foreach f = ["FPR16", "FPR32", "FPR64"] in { 30 defm "" : LMULSchedWritesVCIX<f # "V">; 31 defm "" : LMULSchedWritesVCIX<f # "VV">; 32 defm "" : LMULSchedWritesVCIX<f # "VW">; 33} 34 35multiclass LMULWriteResVCIX<string id, list<ProcResourceKind> resources>{ 36defm : LMULWriteRes<"WriteVC_" # id, resources>; 37defm : LMULWriteRes<"WriteVC_V_" # id, resources>; 38} 39 40multiclass UnsupportedSchedXsfvcp { 41let Unsupported = true in { 42defm : LMULWriteResVCIX<"I", []>; 43defm : LMULWriteResVCIX<"X", []>; 44defm : LMULWriteResVCIX<"IV", []>; 45defm : LMULWriteResVCIX<"VV", []>; 46defm : LMULWriteResVCIX<"XV", []>; 47defm : LMULWriteResVCIX<"IVV", []>; 48defm : LMULWriteResVCIX<"IVW", []>; 49defm : LMULWriteResVCIX<"VVV", []>; 50defm : LMULWriteResVCIX<"VVW", []>; 51defm : LMULWriteResVCIX<"XVV", []>; 52defm : LMULWriteResVCIX<"XVW", []>; 53foreach f = ["FPR16", "FPR32", "FPR64"] in { 54 defm : LMULWriteResVCIX<f # "V", []>; 55 defm : LMULWriteResVCIX<f # "VV", []>; 56 defm : LMULWriteResVCIX<f # "VW", []>; 57} 58} 59} 60