================
@@ -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

Reply via email to