diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoXCV.td b/llvm/lib/Target/RISCV/RISCVInstrInfoXCV.td --- a/llvm/lib/Target/RISCV/RISCVInstrInfoXCV.td +++ b/llvm/lib/Target/RISCV/RISCVInstrInfoXCV.td @@ -225,107 +225,142 @@ } // DecoderNamespace = "XCValu" -let Predicates = [HasVendorXCValu], hasSideEffects = 0, mayLoad = 0, mayStore = 0 in { +let Predicates = [HasVendorXCValu], + hasSideEffects = 0, mayLoad = 0, mayStore = 0 in { // General ALU Operations - def CV_ABS : CVInstAlu_r<0b0101000, 0b011, (outs GPR:$rd), (ins GPR:$rs1), + def CV_ABS : CVInstAlu_r<0b0101000, 0b011, (outs GPR:$rd), + (ins GPR:$rs1), "cv.abs", "$rd, $rs1">, Sched<[]>; - def CV_SLET : CVInstAlu_rr<0b0101001, 0b011, (outs GPR:$rd), (ins GPR:$rs1, GPR:$rs2), + def CV_SLET : CVInstAlu_rr<0b0101001, 0b011, (outs GPR:$rd), + (ins GPR:$rs1, GPR:$rs2), "cv.slet", "$rd, $rs1, $rs2">, Sched<[]>; - def CV_SLETU : CVInstAlu_rr<0b0101010, 0b011, (outs GPR:$rd), (ins GPR:$rs1, GPR:$rs2), + def CV_SLETU : CVInstAlu_rr<0b0101010, 0b011, (outs GPR:$rd), + (ins GPR:$rs1, GPR:$rs2), "cv.sletu", "$rd, $rs1, $rs2">, Sched<[]>; - def CV_MIN : CVInstAlu_rr<0b0101011, 0b011, (outs GPR:$rd), (ins GPR:$rs1, GPR:$rs2), + def CV_MIN : CVInstAlu_rr<0b0101011, 0b011, (outs GPR:$rd), + (ins GPR:$rs1, GPR:$rs2), "cv.min", "$rd, $rs1, $rs2">, Sched<[]>; - def CV_MINU : CVInstAlu_rr<0b0101100, 0b011, (outs GPR:$rd), (ins GPR:$rs1, GPR:$rs2), + def CV_MINU : CVInstAlu_rr<0b0101100, 0b011, (outs GPR:$rd), + (ins GPR:$rs1, GPR:$rs2), "cv.minu", "$rd, $rs1, $rs2">, Sched<[]>; - def CV_MAX : CVInstAlu_rr<0b0101101, 0b011, (outs GPR:$rd), (ins GPR:$rs1, GPR:$rs2), + def CV_MAX : CVInstAlu_rr<0b0101101, 0b011, (outs GPR:$rd), + (ins GPR:$rs1, GPR:$rs2), "cv.max", "$rd, $rs1, $rs2">, Sched<[]>; - def CV_MAXU : CVInstAlu_rr<0b0101110, 0b011, (outs GPR:$rd), (ins GPR:$rs1, GPR:$rs2), + def CV_MAXU : CVInstAlu_rr<0b0101110, 0b011, (outs GPR:$rd), + (ins GPR:$rs1, GPR:$rs2), "cv.maxu", "$rd, $rs1, $rs2">, Sched<[]>; - def CV_EXTHS : CVInstAlu_r<0b0110000, 0b011, (outs GPR:$rd), (ins GPR:$rs1), + def CV_EXTHS : CVInstAlu_r<0b0110000, 0b011, (outs GPR:$rd), + (ins GPR:$rs1), "cv.exths", "$rd, $rs1">, Sched<[]>; - def CV_EXTHZ : CVInstAlu_r<0b0110001, 0b011, (outs GPR:$rd), (ins GPR:$rs1), + def CV_EXTHZ : CVInstAlu_r<0b0110001, 0b011, (outs GPR:$rd), + (ins GPR:$rs1), "cv.exthz", "$rd, $rs1">, Sched<[]>; - def CV_EXTBS : CVInstAlu_r<0b0110010, 0b011, (outs GPR:$rd), (ins GPR:$rs1), + def CV_EXTBS : CVInstAlu_r<0b0110010, 0b011, (outs GPR:$rd), + (ins GPR:$rs1), "cv.extbs", "$rd, $rs1">, Sched<[]>; - def CV_EXTBZ : CVInstAlu_r<0b0110011, 0b011, (outs GPR:$rd), (ins GPR:$rs1), + def CV_EXTBZ : CVInstAlu_r<0b0110011, 0b011, (outs GPR:$rd), + (ins GPR:$rs1), "cv.extbz", "$rd, $rs1">, Sched<[]>; - def CV_CLIP : CVInstAlu_ri<0b0111000, 0b011, (outs GPR:$rd), (ins GPR:$rs1, uimm5:$imm5), + def CV_CLIP : CVInstAlu_ri<0b0111000, 0b011, (outs GPR:$rd), + (ins GPR:$rs1, uimm5:$imm5), "cv.clip", "$rd, $rs1, $imm5">, Sched<[]>; - def CV_CLIPU : CVInstAlu_ri<0b0111001, 0b011, (outs GPR:$rd), (ins GPR:$rs1, uimm5:$imm5), + def CV_CLIPU : CVInstAlu_ri<0b0111001, 0b011, (outs GPR:$rd), + (ins GPR:$rs1, uimm5:$imm5), "cv.clipu", "$rd, $rs1, $imm5">, Sched<[]>; - def CV_CLIPR : CVInstAlu_rr<0b0111010, 0b011, (outs GPR:$rd), (ins GPR:$rs1, GPR:$rs2), + def CV_CLIPR : CVInstAlu_rr<0b0111010, 0b011, (outs GPR:$rd), + (ins GPR:$rs1, GPR:$rs2), "cv.clipr", "$rd, $rs1, $rs2">, Sched<[]>; - def CV_CLIPUR : CVInstAlu_rr<0b0111011, 0b011, (outs GPR:$rd), (ins GPR:$rs1, GPR:$rs2), + def CV_CLIPUR : CVInstAlu_rr<0b0111011, 0b011, (outs GPR:$rd), + (ins GPR:$rs1, GPR:$rs2), "cv.clipur", "$rd, $rs1, $rs2">, Sched<[]>; - def CV_ADDN : CVInstAlu_rri<0b00, 0b010, (outs GPR:$rd), (ins GPR:$rs1, GPR:$rs2, uimm5:$imm5), + def CV_ADDN : CVInstAlu_rri<0b00, 0b010, (outs GPR:$rd), + (ins GPR:$rs1, GPR:$rs2, uimm5:$imm5), "cv.addn", "$rd, $rs1, $rs2, $imm5">, Sched<[]>; - def CV_ADDUN : CVInstAlu_rri<0b01, 0b010, (outs GPR:$rd), (ins GPR:$rs1, GPR:$rs2, uimm5:$imm5), + def CV_ADDUN : CVInstAlu_rri<0b01, 0b010, (outs GPR:$rd), + (ins GPR:$rs1, GPR:$rs2, uimm5:$imm5), "cv.addun", "$rd, $rs1, $rs2, $imm5">, Sched<[]>; - def CV_ADDRN : CVInstAlu_rri<0b10, 0b010, (outs GPR:$rd), (ins GPR:$rs1, GPR:$rs2, uimm5:$imm5), + def CV_ADDRN : CVInstAlu_rri<0b10, 0b010, (outs GPR:$rd), + (ins GPR:$rs1, GPR:$rs2, uimm5:$imm5), "cv.addrn", "$rd, $rs1, $rs2, $imm5">, Sched<[]>; - def CV_ADDURN : CVInstAlu_rri<0b11, 0b010, (outs GPR:$rd), (ins GPR:$rs1, GPR:$rs2, uimm5:$imm5), + def CV_ADDURN : CVInstAlu_rri<0b11, 0b010, (outs GPR:$rd), + (ins GPR:$rs1, GPR:$rs2, uimm5:$imm5), "cv.addurn", "$rd, $rs1, $rs2, $imm5">, Sched<[]>; - def CV_SUBN : CVInstAlu_rri<0b00, 0b011, (outs GPR:$rd), (ins GPR:$rs1, GPR:$rs2, uimm5:$imm5), + def CV_SUBN : CVInstAlu_rri<0b00, 0b011, (outs GPR:$rd), + (ins GPR:$rs1, GPR:$rs2, uimm5:$imm5), "cv.subn", "$rd, $rs1, $rs2, $imm5">, Sched<[]>; - def CV_SUBUN : CVInstAlu_rri<0b01, 0b011, (outs GPR:$rd), (ins GPR:$rs1, GPR:$rs2, uimm5:$imm5), + def CV_SUBUN : CVInstAlu_rri<0b01, 0b011, (outs GPR:$rd), + (ins GPR:$rs1, GPR:$rs2, uimm5:$imm5), "cv.subun", "$rd, $rs1, $rs2, $imm5">, Sched<[]>; - def CV_SUBRN : CVInstAlu_rri<0b10, 0b011, (outs GPR:$rd), (ins GPR:$rs1, GPR:$rs2, uimm5:$imm5), + def CV_SUBRN : CVInstAlu_rri<0b10, 0b011, (outs GPR:$rd), + (ins GPR:$rs1, GPR:$rs2, uimm5:$imm5), "cv.subrn", "$rd, $rs1, $rs2, $imm5">, Sched<[]>; - def CV_SUBURN : CVInstAlu_rri<0b11, 0b011, (outs GPR:$rd), (ins GPR:$rs1, GPR:$rs2, uimm5:$imm5), + def CV_SUBURN : CVInstAlu_rri<0b11, 0b011, (outs GPR:$rd), + (ins GPR:$rs1, GPR:$rs2, uimm5:$imm5), "cv.suburn", "$rd, $rs1, $rs2, $imm5">, Sched<[]>; -} // Predicates = [HasVendorXCValu], hasSideEffects = 0, mayLoad = 0, mayStore = 0 +} // Predicates = [HasVendorXCValu], + // hasSideEffects = 0, mayLoad = 0, mayStore = 0 let Predicates = [HasVendorXCValu], - hasSideEffects = 0, mayLoad = 0, mayStore = 0, Opcode = OPC_CUSTOM_1.Value, Constraints = "$rd = $rd_wb" in { - def CV_ADDNR : CVInstAlu_rr<0b1000000, 0b011, (outs GPR:$rd_wb), (ins GPR:$rd, GPR:$rs1, GPR:$rs2), + hasSideEffects = 0, mayLoad = 0, mayStore = 0, + Opcode = OPC_CUSTOM_1.Value, Constraints = "$rd = $rd_wb" in { + def CV_ADDNR : CVInstAlu_rr<0b1000000, 0b011, (outs GPR:$rd_wb), + (ins GPR:$rd, GPR:$rs1, GPR:$rs2), "cv.addnr", "$rd, $rs1, $rs2">, Sched<[]>; - def CV_ADDUNR : CVInstAlu_rr<0b1000001, 0b011, (outs GPR:$rd_wb), (ins GPR:$rd, GPR:$rs1, GPR:$rs2), + def CV_ADDUNR : CVInstAlu_rr<0b1000001, 0b011, (outs GPR:$rd_wb), + (ins GPR:$rd, GPR:$rs1, GPR:$rs2), "cv.addunr", "$rd, $rs1, $rs2">, Sched<[]>; - def CV_ADDRNR : CVInstAlu_rr<0b1000010, 0b011, (outs GPR:$rd_wb), (ins GPR:$rd, GPR:$rs1, GPR:$rs2), + def CV_ADDRNR : CVInstAlu_rr<0b1000010, 0b011, (outs GPR:$rd_wb), + (ins GPR:$rd, GPR:$rs1, GPR:$rs2), "cv.addrnr", "$rd, $rs1, $rs2">, Sched<[]>; - def CV_ADDURNR : CVInstAlu_rr<0b1000011, 0b011, (outs GPR:$rd_wb), (ins GPR:$rd, GPR:$rs1, GPR:$rs2), + def CV_ADDURNR : CVInstAlu_rr<0b1000011, 0b011, (outs GPR:$rd_wb), + (ins GPR:$rd, GPR:$rs1, GPR:$rs2), "cv.addurnr", "$rd, $rs1, $rs2">, Sched<[]>; - def CV_SUBNR : CVInstAlu_rr<0b1000100, 0b011, (outs GPR:$rd_wb), (ins GPR:$rd, GPR:$rs1, GPR:$rs2), + def CV_SUBNR : CVInstAlu_rr<0b1000100, 0b011, (outs GPR:$rd_wb), + (ins GPR:$rd, GPR:$rs1, GPR:$rs2), "cv.subnr", "$rd, $rs1, $rs2">, Sched<[]>; - def CV_SUBUNR : CVInstAlu_rr<0b1000101, 0b011, (outs GPR:$rd_wb), (ins GPR:$rd, GPR:$rs1, GPR:$rs2), + def CV_SUBUNR : CVInstAlu_rr<0b1000101, 0b011, (outs GPR:$rd_wb), + (ins GPR:$rd, GPR:$rs1, GPR:$rs2), "cv.subunr", "$rd, $rs1, $rs2">, Sched<[]>; - def CV_SUBRNR : CVInstAlu_rr<0b1000110, 0b011, (outs GPR:$rd_wb), (ins GPR:$rd, GPR:$rs1, GPR:$rs2), + def CV_SUBRNR : CVInstAlu_rr<0b1000110, 0b011, (outs GPR:$rd_wb), + (ins GPR:$rd, GPR:$rs1, GPR:$rs2), "cv.subrnr", "$rd, $rs1, $rs2">, Sched<[]>; - def CV_SUBURNR : CVInstAlu_rr<0b1000111, 0b011, (outs GPR:$rd_wb), (ins GPR:$rd, GPR:$rs1, GPR:$rs2), + def CV_SUBURNR : CVInstAlu_rr<0b1000111, 0b011, (outs GPR:$rd_wb), + (ins GPR:$rd, GPR:$rs1, GPR:$rs2), "cv.suburnr", "$rd, $rs1, $rs2">, Sched<[]>; } // Predicates = [HasVendorXCValu], - // hasSideEffects = 0, mayLoad = 0, mayStore = 0, Opcode = OPC_CUSTOM_1.Value, Constraints = "$rd = $rd_wb" + // hasSideEffects = 0, mayLoad = 0, mayStore = 0, + // Opcode = OPC_CUSTOM_1.Value, Constraints = "$rd = $rd_wb"