================ @@ -741,6 +750,28 @@ def QC_C_MILEAVERET : QCIRVInst16CI_NONE<0b10100, "qc.c.mileaveret">; } // Predicates = [HasVendorXqciint, IsRV32], hasSideEffects = 1 +let Predicates = [HasVendorXqciio, IsRV32] in { +let hasSideEffects = 1, mayLoad = 0, mayStore = 0 in { + def QC_OUTW : RVInstI<0b100, OPC_CUSTOM_0, (outs), + (ins GPR:$rs3, GPR:$rs1, uimm14lsb00:$imm14), + "qc.outw", "$rs3, ${imm14}(${rs1})"> { + bits<5> rs3; + bits<14> imm14; + + let rd = rs3; + let imm12 = imm14{13-2}; + } + + def QC_INW : RVInstI<0b101, OPC_CUSTOM_0, (outs GPRNoX0:$rd), + (ins GPR:$rs1, uimm14lsb00:$imm14), + "qc.inw", "$rd, ${imm14}(${rs1})"> { ---------------- lenary wrote:
Both this and `qc.outw` need aliases where `$imm14` is omitted from the assembly - in which case the immediate value should be 0. https://github.com/llvm/llvm-project/pull/132721 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits