brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.7 KiB · 93381f4 Raw
170 lines · plain
1//===- RISCVScheduleB.td - RISC-V Scheduling Definitions B -*- 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-exception6//7//===----------------------------------------------------------------------===//8 9/// Define scheduler resources associated with def operands.10 11// Zba extension12def WriteSHXADD      : SchedWrite; // sh1add/sh2add/sh3add13def WriteSHXADD32    : SchedWrite; // sh1add.uw/sh2add.uw/sh3add.uw14 15// Zbb extension16def WriteRotateImm   : SchedWrite;17def WriteRotateImm32 : SchedWrite;18def WriteRotateReg   : SchedWrite;19def WriteRotateReg32 : SchedWrite;20def WriteCLZ         : SchedWrite;21def WriteCLZ32       : SchedWrite;22def WriteCTZ         : SchedWrite;23def WriteCTZ32       : SchedWrite;24def WriteCPOP        : SchedWrite;25def WriteCPOP32      : SchedWrite;26def WriteREV8        : SchedWrite;27def WriteORCB        : SchedWrite;28def WriteIMinMax     : SchedWrite;29 30// Zbc extension31def WriteCLMUL       : SchedWrite; // CLMUL/CLMULR/CLMULH32 33// Zbs extension34def WriteSingleBit   : SchedWrite; // BCLR/BSET/BINV35def WriteSingleBitImm: SchedWrite; // BCLRI/BSETI/BINVI36def WriteBEXT : SchedWrite; // BEXT37def WriteBEXTI : SchedWrite; // BEXTI38 39// Zbkb extension40def WriteBREV8       : SchedWrite; // brev841def WritePACK        : SchedWrite; // pack/packh42def WritePACK32      : SchedWrite; // packw43def WriteZIP         : SchedWrite; // zip/unzip44 45// Zbkx extension46def WriteXPERM       : SchedWrite; // xperm4/xperm847 48/// Define scheduler resources associated with use operands.49 50// Zba extension51def ReadSHXADD      : SchedRead; // sh1add/sh2add/sh3add52def ReadSHXADD32    : SchedRead; // sh1add.uw/sh2add.uw/sh3add.uw53 54// Zbb extension55def ReadRotateImm   : SchedRead;56def ReadRotateImm32 : SchedRead;57def ReadRotateReg   : SchedRead;58def ReadRotateReg32 : SchedRead;59def ReadCLZ         : SchedRead;60def ReadCLZ32       : SchedRead;61def ReadCTZ         : SchedRead;62def ReadCTZ32       : SchedRead;63def ReadCPOP        : SchedRead;64def ReadCPOP32      : SchedRead;65def ReadREV8        : SchedRead;66def ReadORCB        : SchedRead;67def ReadIMinMax     : SchedRead;68 69// Zbc extension70def ReadCLMUL       : SchedRead; // CLMUL/CLMULR/CLMULH71 72// Zbs extension73def ReadSingleBit   : SchedRead; // BCLR/BSET/BINV/BEXT74def ReadSingleBitImm: SchedRead; // BCLRI/BSETI/BINVI/BEXTI75 76// Zbkb extension77def ReadBREV8       : SchedRead; // brev878def ReadPACK        : SchedRead; // pack/packh79def ReadPACK32      : SchedRead; // packw80def ReadZIP         : SchedRead; // zip/unzip81 82// Zbkx extension83def ReadXPERM       : SchedRead; // xperm4/xperm884 85/// Define default scheduler resources for B.86 87multiclass UnsupportedSchedZba {88let Unsupported = true in {89def : WriteRes<WriteSHXADD, []>;90def : WriteRes<WriteSHXADD32, []>;91 92def : ReadAdvance<ReadSHXADD, 0>;93def : ReadAdvance<ReadSHXADD32, 0>;94}95}96 97multiclass UnsupportedSchedZbb {98let Unsupported = true in {99def : WriteRes<WriteRotateImm, []>;100def : WriteRes<WriteRotateImm32, []>;101def : WriteRes<WriteRotateReg, []>;102def : WriteRes<WriteRotateReg32, []>;103def : WriteRes<WriteCLZ, []>;104def : WriteRes<WriteCLZ32, []>;105def : WriteRes<WriteCTZ, []>;106def : WriteRes<WriteCTZ32, []>;107def : WriteRes<WriteCPOP, []>;108def : WriteRes<WriteCPOP32, []>;109def : WriteRes<WriteREV8, []>;110def : WriteRes<WriteORCB, []>;111def : WriteRes<WriteIMinMax, []>;112 113def : ReadAdvance<ReadRotateImm, 0>;114def : ReadAdvance<ReadRotateImm32, 0>;115def : ReadAdvance<ReadRotateReg, 0>;116def : ReadAdvance<ReadRotateReg32, 0>;117def : ReadAdvance<ReadCLZ, 0>;118def : ReadAdvance<ReadCLZ32, 0>;119def : ReadAdvance<ReadCTZ, 0>;120def : ReadAdvance<ReadCTZ32, 0>;121def : ReadAdvance<ReadCPOP, 0>;122def : ReadAdvance<ReadCPOP32, 0>;123def : ReadAdvance<ReadREV8, 0>;124def : ReadAdvance<ReadORCB, 0>;125def : ReadAdvance<ReadIMinMax, 0>;126}127}128 129multiclass UnsupportedSchedZbc {130let Unsupported = true in {131def : WriteRes<WriteCLMUL, []>;132 133def : ReadAdvance<ReadCLMUL, 0>;134}135}136 137multiclass UnsupportedSchedZbs {138let Unsupported = true in {139def : WriteRes<WriteSingleBit, []>;140def : WriteRes<WriteSingleBitImm, []>;141def : WriteRes<WriteBEXT, []>;142def : WriteRes<WriteBEXTI, []>;143 144def : ReadAdvance<ReadSingleBit, 0>;145def : ReadAdvance<ReadSingleBitImm, 0>;146}147}148 149multiclass UnsupportedSchedZbkb {150let Unsupported = true in {151def : WriteRes<WriteBREV8, []>;152def : WriteRes<WritePACK, []>;153def : WriteRes<WritePACK32, []>;154def : WriteRes<WriteZIP, []>;155 156def : ReadAdvance<ReadBREV8, 0>;157def : ReadAdvance<ReadPACK, 0>;158def : ReadAdvance<ReadPACK32, 0>;159def : ReadAdvance<ReadZIP, 0>;160}161}162 163multiclass UnsupportedSchedZbkx {164let Unsupported = true in {165def : WriteRes<WriteXPERM, []>;166 167def : ReadAdvance<ReadXPERM, 0>;168}169}170