Please use GitHub pull requests for new patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
llvm/lib/Target/RISCV/RISCVInstrInfoV.td
Show First 20 Lines • Show All 803 Lines • ▼ Show 20 Lines | def VSETVLI : RVInstSetVLi<(outs GPR:$rd), (ins GPR:$rs1, VTypeIOp:$vtypei), | ||||
"vsetvli", "$rd, $rs1, $vtypei">; | "vsetvli", "$rd, $rs1, $vtypei">; | ||||
def VSETIVLI : RVInstSetiVLi<(outs GPR:$rd), (ins uimm5:$uimm, VTypeIOp:$vtypei), | def VSETIVLI : RVInstSetiVLi<(outs GPR:$rd), (ins uimm5:$uimm, VTypeIOp:$vtypei), | ||||
"vsetivli", "$rd, $uimm, $vtypei">; | "vsetivli", "$rd, $uimm, $vtypei">; | ||||
def VSETVL : RVInstSetVL<(outs GPR:$rd), (ins GPR:$rs1, GPR:$rs2), | def VSETVL : RVInstSetVL<(outs GPR:$rd), (ins GPR:$rs1, GPR:$rs2), | ||||
"vsetvl", "$rd, $rs1, $rs2">; | "vsetvl", "$rd, $rs1, $rs2">; | ||||
} // hasSideEffects = 1, mayLoad = 0, mayStore = 0 | } // hasSideEffects = 1, mayLoad = 0, mayStore = 0 | ||||
foreach eew = [8, 16, 32, 64] in { | |||||
defvar w = !cast<RISCVWidth>("LSWidth" # eew); | |||||
// Vector Unit-Stride Instructions | // Vector Unit-Stride Instructions | ||||
def VLE8_V : VUnitStrideLoad<LSWidth8, "vle8.v">, | def VLE#eew#_V : VUnitStrideLoad<w, "vle"#eew#".v">, VLESched<eew>; | ||||
VLESched<8>; | def VSE#eew#_V : VUnitStrideStore<w, "vse"#eew#".v">, VSESched<eew>; | ||||
def VLE16_V : VUnitStrideLoad<LSWidth16, "vle16.v">, | |||||
VLESched<16>; | |||||
def VLE32_V : VUnitStrideLoad<LSWidth32, "vle32.v">, | |||||
VLESched<32>; | |||||
def VLE64_V : VUnitStrideLoad<LSWidth64, "vle64.v">, | |||||
VLESched<64>; | |||||
// Vector Unit-Stride Fault-only-First Loads | // Vector Unit-Stride Fault-only-First Loads | ||||
def VLE8FF_V : VUnitStrideLoadFF<LSWidth8, "vle8ff.v">, | def VLE#eew#FF_V : VUnitStrideLoadFF<w, "vle"#eew#"ff.v">, VLFSched<eew>; | ||||
VLFSched<8>; | |||||
def VLE16FF_V : VUnitStrideLoadFF<LSWidth16, "vle16ff.v">, | // Vector Strided Instructions | ||||
VLFSched<16>; | def VLSE#eew#_V : VStridedLoad<w, "vlse"#eew#".v">, VLSSched<eew>; | ||||
def VLE32FF_V : VUnitStrideLoadFF<LSWidth32, "vle32ff.v">, | def VSSE#eew#_V : VStridedStore<w, "vsse"#eew#".v">, VSSSched<eew>; | ||||
VLFSched<32>; | |||||
def VLE64FF_V : VUnitStrideLoadFF<LSWidth64, "vle64ff.v">, | // Vector Indexed Instructions | ||||
VLFSched<64>; | def VLUXEI#eew#_V : | ||||
VIndexedLoad<MOPLDIndexedUnord, w, "vluxei"#eew#".v">, VLXSched<eew, "U">; | |||||
def VLOXEI#eew#_V : | |||||
VIndexedLoad<MOPLDIndexedOrder, w, "vloxei"#eew#".v">, VLXSched<eew, "O">; | |||||
def VSUXEI#eew#_V : | |||||
VIndexedStore<MOPSTIndexedUnord, w, "vsuxei"#eew#".v">, VSXSched<eew, "U">; | |||||
def VSOXEI#eew#_V : | |||||
VIndexedStore<MOPSTIndexedOrder, w, "vsoxei"#eew#".v">, VSXSched<eew, "O">; | |||||
} | |||||
def VLM_V : VUnitStrideLoadMask<"vlm.v">, | def VLM_V : VUnitStrideLoadMask<"vlm.v">, | ||||
Sched<[WriteVLDM, ReadVLDX]>; | Sched<[WriteVLDM, ReadVLDX]>; | ||||
def VSM_V : VUnitStrideStoreMask<"vsm.v">, | def VSM_V : VUnitStrideStoreMask<"vsm.v">, | ||||
Sched<[WriteVSTM, ReadVSTM, ReadVSTX]>; | Sched<[WriteVSTM, ReadVSTM, ReadVSTX]>; | ||||
def : InstAlias<"vle1.v $vd, (${rs1})", | def : InstAlias<"vle1.v $vd, (${rs1})", | ||||
(VLM_V VR:$vd, GPR:$rs1), 0>; | (VLM_V VR:$vd, GPR:$rs1), 0>; | ||||
def : InstAlias<"vse1.v $vs3, (${rs1})", | def : InstAlias<"vse1.v $vs3, (${rs1})", | ||||
(VSM_V VR:$vs3, GPR:$rs1), 0>; | (VSM_V VR:$vs3, GPR:$rs1), 0>; | ||||
def VSE8_V : VUnitStrideStore<LSWidth8, "vse8.v">, | |||||
VSESched<8>; | |||||
def VSE16_V : VUnitStrideStore<LSWidth16, "vse16.v">, | |||||
VSESched<16>; | |||||
def VSE32_V : VUnitStrideStore<LSWidth32, "vse32.v">, | |||||
VSESched<32>; | |||||
def VSE64_V : VUnitStrideStore<LSWidth64, "vse64.v">, | |||||
VSESched<64>; | |||||
// Vector Strided Instructions | |||||
def VLSE8_V : VStridedLoad<LSWidth8, "vlse8.v">, | |||||
VLSSched<8>; | |||||
def VLSE16_V : VStridedLoad<LSWidth16, "vlse16.v">, | |||||
VLSSched<16>; | |||||
def VLSE32_V : VStridedLoad<LSWidth32, "vlse32.v">, | |||||
VLSSched<32>; | |||||
def VLSE64_V : VStridedLoad<LSWidth64, "vlse64.v">, | |||||
VLSSched<32>; | |||||
frasercrmck: This part is changing from `VLSSched<32>` to `VLSSched<64>`. I assume that 32 is a bug? | |||||
Yes, I think so. jacquesguan: Yes, I think so. | |||||
Not Done ReplyInline ActionsDrop the [NFC] from the commit subject then, as it's not true jrtc27: Drop the [NFC] from the commit subject then, as it's not true | |||||
Not Done ReplyInline Actions(and explicitly mention this functional change in the body) jrtc27: (and explicitly mention this functional change in the body) | |||||
Not Done ReplyInline ActionsAh yes good catch. I agree. frasercrmck: Ah yes good catch. I agree. | |||||
def VSSE8_V : VStridedStore<LSWidth8, "vsse8.v">, | |||||
VSSSched<8>; | |||||
def VSSE16_V : VStridedStore<LSWidth16, "vsse16.v">, | |||||
VSSSched<16>; | |||||
def VSSE32_V : VStridedStore<LSWidth32, "vsse32.v">, | |||||
VSSSched<32>; | |||||
def VSSE64_V : VStridedStore<LSWidth64, "vsse64.v">, | |||||
VSSSched<64>; | |||||
// Vector Indexed Instructions | |||||
foreach n = [8, 16, 32, 64] in { | |||||
defvar w = !cast<RISCVWidth>("LSWidth" # n); | |||||
def VLUXEI # n # _V : | |||||
VIndexedLoad<MOPLDIndexedUnord, w, "vluxei" # n # ".v">, | |||||
VLXSched<n, "U">; | |||||
def VLOXEI # n # _V : | |||||
VIndexedLoad<MOPLDIndexedOrder, w, "vloxei" # n # ".v">, | |||||
VLXSched<n, "O">; | |||||
def VSUXEI # n # _V : | |||||
VIndexedStore<MOPSTIndexedUnord, w, "vsuxei" # n # ".v">, | |||||
VSXSched<n, "U">; | |||||
def VSOXEI # n # _V : | |||||
VIndexedStore<MOPSTIndexedOrder, w, "vsoxei" # n # ".v">, | |||||
VSXSched<n, "O">; | |||||
} | |||||
defm VL1R : VWholeLoadN<0, "vl1r", VR>; | defm VL1R : VWholeLoadN<0, "vl1r", VR>; | ||||
defm VL2R : VWholeLoadN<1, "vl2r", VRM2>; | defm VL2R : VWholeLoadN<1, "vl2r", VRM2>; | ||||
defm VL4R : VWholeLoadN<3, "vl4r", VRM4>; | defm VL4R : VWholeLoadN<3, "vl4r", VRM4>; | ||||
defm VL8R : VWholeLoadN<7, "vl8r", VRM8>; | defm VL8R : VWholeLoadN<7, "vl8r", VRM8>; | ||||
def : InstAlias<"vl1r.v $vd, (${rs1})", (VL1RE8_V VR:$vd, GPR:$rs1)>; | def : InstAlias<"vl1r.v $vd, (${rs1})", (VL1RE8_V VR:$vd, GPR:$rs1)>; | ||||
def : InstAlias<"vl2r.v $vd, (${rs1})", (VL2RE8_V VRM2:$vd, GPR:$rs1)>; | def : InstAlias<"vl2r.v $vd, (${rs1})", (VL2RE8_V VRM2:$vd, GPR:$rs1)>; | ||||
def : InstAlias<"vl4r.v $vd, (${rs1})", (VL4RE8_V VRM4:$vd, GPR:$rs1)>; | def : InstAlias<"vl4r.v $vd, (${rs1})", (VL4RE8_V VRM4:$vd, GPR:$rs1)>; | ||||
▲ Show 20 Lines • Show All 570 Lines • ▼ Show 20 Lines | foreach n = [1, 2, 4, 8] in { | ||||
let vm = 1; | let vm = 1; | ||||
} | } | ||||
} | } | ||||
} // hasSideEffects = 0, mayLoad = 0, mayStore = 0 | } // hasSideEffects = 0, mayLoad = 0, mayStore = 0 | ||||
} // Predicates = [HasStdExtV] | } // Predicates = [HasStdExtV] | ||||
let Predicates = [HasStdExtZvlsseg] in { | let Predicates = [HasStdExtZvlsseg] in { | ||||
foreach nf=2-8 in { | foreach nf=2-8 in { | ||||
def VLSEG#nf#E8_V : VUnitStrideSegmentLoad<!add(nf, -1), LSWidth8, "vlseg"#nf#"e8.v">; | foreach eew = [8, 16, 32, 64] in { | ||||
def VLSEG#nf#E16_V : VUnitStrideSegmentLoad<!add(nf, -1), LSWidth16, "vlseg"#nf#"e16.v">; | defvar w = !cast<RISCVWidth>("LSWidth"#eew); | ||||
def VLSEG#nf#E32_V : VUnitStrideSegmentLoad<!add(nf, -1), LSWidth32, "vlseg"#nf#"e32.v">; | |||||
def VLSEG#nf#E64_V : VUnitStrideSegmentLoad<!add(nf, -1), LSWidth64, "vlseg"#nf#"e64.v">; | def VLSEG#nf#E#eew#_V : | ||||
VUnitStrideSegmentLoad<!add(nf, -1), w, "vlseg"#nf#"e"#eew#".v">; | |||||
def VLSEG#nf#E8FF_V : VUnitStrideSegmentLoadFF<!add(nf, -1), LSWidth8, "vlseg"#nf#"e8ff.v">; | def VLSEG#nf#E#eew#FF_V : | ||||
def VLSEG#nf#E16FF_V : VUnitStrideSegmentLoadFF<!add(nf, -1), LSWidth16, "vlseg"#nf#"e16ff.v">; | VUnitStrideSegmentLoadFF<!add(nf, -1), w, "vlseg"#nf#"e"#eew#"ff.v">; | ||||
def VLSEG#nf#E32FF_V : VUnitStrideSegmentLoadFF<!add(nf, -1), LSWidth32, "vlseg"#nf#"e32ff.v">; | def VSSEG#nf#E#eew#_V : | ||||
def VLSEG#nf#E64FF_V : VUnitStrideSegmentLoadFF<!add(nf, -1), LSWidth64, "vlseg"#nf#"e64ff.v">; | VUnitStrideSegmentStore<!add(nf, -1), w, "vsseg"#nf#"e"#eew#".v">; | ||||
def VSSEG#nf#E8_V : VUnitStrideSegmentStore<!add(nf, -1), LSWidth8, "vsseg"#nf#"e8.v">; | |||||
def VSSEG#nf#E16_V : VUnitStrideSegmentStore<!add(nf, -1), LSWidth16, "vsseg"#nf#"e16.v">; | |||||
def VSSEG#nf#E32_V : VUnitStrideSegmentStore<!add(nf, -1), LSWidth32, "vsseg"#nf#"e32.v">; | |||||
def VSSEG#nf#E64_V : VUnitStrideSegmentStore<!add(nf, -1), LSWidth64, "vsseg"#nf#"e64.v">; | |||||
// Vector Strided Instructions | // Vector Strided Instructions | ||||
def VLSSEG#nf#E8_V : VStridedSegmentLoad<!add(nf, -1), LSWidth8, "vlsseg"#nf#"e8.v">; | def VLSSEG#nf#E#eew#_V : | ||||
def VLSSEG#nf#E16_V : VStridedSegmentLoad<!add(nf, -1), LSWidth16, "vlsseg"#nf#"e16.v">; | VStridedSegmentLoad<!add(nf, -1), w, "vlsseg"#nf#"e"#eew#".v">; | ||||
def VLSSEG#nf#E32_V : VStridedSegmentLoad<!add(nf, -1), LSWidth32, "vlsseg"#nf#"e32.v">; | def VSSSEG#nf#E#eew#_V : | ||||
def VLSSEG#nf#E64_V : VStridedSegmentLoad<!add(nf, -1), LSWidth64, "vlsseg"#nf#"e64.v">; | VStridedSegmentStore<!add(nf, -1), w, "vssseg"#nf#"e"#eew#".v">; | ||||
def VSSSEG#nf#E8_V : VStridedSegmentStore<!add(nf, -1), LSWidth8, "vssseg"#nf#"e8.v">; | |||||
def VSSSEG#nf#E16_V : VStridedSegmentStore<!add(nf, -1), LSWidth16, "vssseg"#nf#"e16.v">; | |||||
def VSSSEG#nf#E32_V : VStridedSegmentStore<!add(nf, -1), LSWidth32, "vssseg"#nf#"e32.v">; | |||||
def VSSSEG#nf#E64_V : VStridedSegmentStore<!add(nf, -1), LSWidth64, "vssseg"#nf#"e64.v">; | |||||
// Vector Indexed Instructions | // Vector Indexed Instructions | ||||
def VLUXSEG#nf#EI8_V : VIndexedSegmentLoad<!add(nf, -1), MOPLDIndexedUnord, | def VLUXSEG#nf#EI#eew#_V : | ||||
LSWidth8, "vluxseg"#nf#"ei8.v">; | VIndexedSegmentLoad<!add(nf, -1), MOPLDIndexedUnord, w, | ||||
def VLUXSEG#nf#EI16_V : VIndexedSegmentLoad<!add(nf, -1), MOPLDIndexedUnord, | "vluxseg"#nf#"ei"#eew#".v">; | ||||
LSWidth16, "vluxseg"#nf#"ei16.v">; | def VLOXSEG#nf#EI#eew#_V : | ||||
def VLUXSEG#nf#EI32_V : VIndexedSegmentLoad<!add(nf, -1), MOPLDIndexedUnord, | VIndexedSegmentLoad<!add(nf, -1), MOPLDIndexedOrder, w, | ||||
LSWidth32, "vluxseg"#nf#"ei32.v">; | "vloxseg"#nf#"ei"#eew#".v">; | ||||
def VLUXSEG#nf#EI64_V : VIndexedSegmentLoad<!add(nf, -1), MOPLDIndexedUnord, | def VSUXSEG#nf#EI#eew#_V : | ||||
LSWidth64, "vluxseg"#nf#"ei64.v">; | VIndexedSegmentStore<!add(nf, -1), MOPSTIndexedUnord, w, | ||||
"vsuxseg"#nf#"ei"#eew#".v">; | |||||
def VLOXSEG#nf#EI8_V : VIndexedSegmentLoad<!add(nf, -1), MOPLDIndexedOrder, | def VSOXSEG#nf#EI#eew#_V : | ||||
LSWidth8, "vloxseg"#nf#"ei8.v">; | VIndexedSegmentStore<!add(nf, -1), MOPSTIndexedOrder, w, | ||||
def VLOXSEG#nf#EI16_V : VIndexedSegmentLoad<!add(nf, -1), MOPLDIndexedOrder, | "vsoxseg"#nf#"ei"#eew#".v">; | ||||
LSWidth16, "vloxseg"#nf#"ei16.v">; | } | ||||
def VLOXSEG#nf#EI32_V : VIndexedSegmentLoad<!add(nf, -1), MOPLDIndexedOrder, | |||||
LSWidth32, "vloxseg"#nf#"ei32.v">; | |||||
def VLOXSEG#nf#EI64_V : VIndexedSegmentLoad<!add(nf, -1), MOPLDIndexedOrder, | |||||
LSWidth64, "vloxseg"#nf#"ei64.v">; | |||||
def VSUXSEG#nf#EI8_V : VIndexedSegmentStore<!add(nf, -1), MOPSTIndexedUnord, | |||||
LSWidth8, "vsuxseg"#nf#"ei8.v">; | |||||
def VSUXSEG#nf#EI16_V : VIndexedSegmentStore<!add(nf, -1), MOPSTIndexedUnord, | |||||
LSWidth16, "vsuxseg"#nf#"ei16.v">; | |||||
def VSUXSEG#nf#EI32_V : VIndexedSegmentStore<!add(nf, -1), MOPSTIndexedUnord, | |||||
LSWidth32, "vsuxseg"#nf#"ei32.v">; | |||||
def VSUXSEG#nf#EI64_V : VIndexedSegmentStore<!add(nf, -1), MOPSTIndexedUnord, | |||||
LSWidth64, "vsuxseg"#nf#"ei64.v">; | |||||
def VSOXSEG#nf#EI8_V : VIndexedSegmentStore<!add(nf, -1), MOPSTIndexedOrder, | |||||
LSWidth8, "vsoxseg"#nf#"ei8.v">; | |||||
def VSOXSEG#nf#EI16_V : VIndexedSegmentStore<!add(nf, -1), MOPSTIndexedOrder, | |||||
LSWidth16, "vsoxseg"#nf#"ei16.v">; | |||||
def VSOXSEG#nf#EI32_V : VIndexedSegmentStore<!add(nf, -1), MOPSTIndexedOrder, | |||||
LSWidth32, "vsoxseg"#nf#"ei32.v">; | |||||
def VSOXSEG#nf#EI64_V : VIndexedSegmentStore<!add(nf, -1), MOPSTIndexedOrder, | |||||
LSWidth64, "vsoxseg"#nf#"ei64.v">; | |||||
} | } | ||||
} // Predicates = [HasStdExtZvlsseg] | } // Predicates = [HasStdExtZvlsseg] | ||||
let Predicates = [HasStdExtZvamo, HasStdExtA] in { | let Predicates = [HasStdExtZvamo, HasStdExtA] in { | ||||
defm VAMOSWAPEI8 : VAMO<AMOOPVamoSwap, LSWidth8, "vamoswapei8.v">; | foreach eew = [8, 16, 32] in { | ||||
defm VAMOSWAPEI16 : VAMO<AMOOPVamoSwap, LSWidth16, "vamoswapei16.v">; | defvar w = !cast<RISCVWidth>("LSWidth"#eew); | ||||
defm VAMOSWAPEI32 : VAMO<AMOOPVamoSwap, LSWidth32, "vamoswapei32.v">; | defm VAMOSWAPEI#eew : VAMO<AMOOPVamoSwap, w, "vamoswapei"#eew#".v">; | ||||
defm VAMOADDEI#eew : VAMO<AMOOPVamoAdd, w, "vamoaddei"#eew#".v">; | |||||
defm VAMOADDEI8 : VAMO<AMOOPVamoAdd, LSWidth8, "vamoaddei8.v">; | defm VAMOXOREI#eew : VAMO<AMOOPVamoXor, w, "vamoxorei"#eew#".v">; | ||||
defm VAMOADDEI16 : VAMO<AMOOPVamoAdd, LSWidth16, "vamoaddei16.v">; | defm VAMOANDEI#eew : VAMO<AMOOPVamoAnd, w, "vamoandei"#eew#".v">; | ||||
defm VAMOADDEI32 : VAMO<AMOOPVamoAdd, LSWidth32, "vamoaddei32.v">; | defm VAMOOREI#eew : VAMO<AMOOPVamoOr, w, "vamoorei"#eew#".v">; | ||||
defm VAMOMINEI#eew : VAMO<AMOOPVamoMin, w, "vamominei"#eew#".v">; | |||||
defm VAMOXOREI8 : VAMO<AMOOPVamoXor, LSWidth8, "vamoxorei8.v">; | defm VAMOMAXEI#eew : VAMO<AMOOPVamoMax, w, "vamomaxei"#eew#".v">; | ||||
defm VAMOXOREI16 : VAMO<AMOOPVamoXor, LSWidth16, "vamoxorei16.v">; | defm VAMOMINUEI#eew : VAMO<AMOOPVamoMinu, w, "vamominuei"#eew#".v">; | ||||
defm VAMOXOREI32 : VAMO<AMOOPVamoXor, LSWidth32, "vamoxorei32.v">; | defm VAMOMAXUEI#eew : VAMO<AMOOPVamoMaxu, w, "vamomaxuei"#eew#".v">; | ||||
} | |||||
defm VAMOANDEI8 : VAMO<AMOOPVamoAnd, LSWidth8, "vamoandei8.v">; | |||||
defm VAMOANDEI16 : VAMO<AMOOPVamoAnd, LSWidth16, "vamoandei16.v">; | |||||
defm VAMOANDEI32 : VAMO<AMOOPVamoAnd, LSWidth32, "vamoandei32.v">; | |||||
defm VAMOOREI8 : VAMO<AMOOPVamoOr, LSWidth8, "vamoorei8.v">; | |||||
defm VAMOOREI16 : VAMO<AMOOPVamoOr, LSWidth16, "vamoorei16.v">; | |||||
defm VAMOOREI32 : VAMO<AMOOPVamoOr, LSWidth32, "vamoorei32.v">; | |||||
defm VAMOMINEI8 : VAMO<AMOOPVamoMin, LSWidth8, "vamominei8.v">; | |||||
defm VAMOMINEI16 : VAMO<AMOOPVamoMin, LSWidth16, "vamominei16.v">; | |||||
defm VAMOMINEI32 : VAMO<AMOOPVamoMin, LSWidth32, "vamominei32.v">; | |||||
defm VAMOMAXEI8 : VAMO<AMOOPVamoMax, LSWidth8, "vamomaxei8.v">; | |||||
defm VAMOMAXEI16 : VAMO<AMOOPVamoMax, LSWidth16, "vamomaxei16.v">; | |||||
defm VAMOMAXEI32 : VAMO<AMOOPVamoMax, LSWidth32, "vamomaxei32.v">; | |||||
defm VAMOMINUEI8 : VAMO<AMOOPVamoMinu, LSWidth8, "vamominuei8.v">; | |||||
defm VAMOMINUEI16 : VAMO<AMOOPVamoMinu, LSWidth16, "vamominuei16.v">; | |||||
defm VAMOMINUEI32 : VAMO<AMOOPVamoMinu, LSWidth32, "vamominuei32.v">; | |||||
defm VAMOMAXUEI8 : VAMO<AMOOPVamoMaxu, LSWidth8, "vamomaxuei8.v">; | |||||
defm VAMOMAXUEI16 : VAMO<AMOOPVamoMaxu, LSWidth16, "vamomaxuei16.v">; | |||||
defm VAMOMAXUEI32 : VAMO<AMOOPVamoMaxu, LSWidth32, "vamomaxuei32.v">; | |||||
} // Predicates = [HasStdExtZvamo, HasStdExtA] | } // Predicates = [HasStdExtZvamo, HasStdExtA] | ||||
let Predicates = [HasStdExtZvamo, HasStdExtA, IsRV64] in { | let Predicates = [HasStdExtZvamo, HasStdExtA, IsRV64] in { | ||||
defm VAMOSWAPEI64 : VAMO<AMOOPVamoSwap, LSWidth64, "vamoswapei64.v">; | defm VAMOSWAPEI64 : VAMO<AMOOPVamoSwap, LSWidth64, "vamoswapei64.v">; | ||||
defm VAMOADDEI64 : VAMO<AMOOPVamoAdd, LSWidth64, "vamoaddei64.v">; | defm VAMOADDEI64 : VAMO<AMOOPVamoAdd, LSWidth64, "vamoaddei64.v">; | ||||
defm VAMOXOREI64 : VAMO<AMOOPVamoXor, LSWidth64, "vamoxorei64.v">; | defm VAMOXOREI64 : VAMO<AMOOPVamoXor, LSWidth64, "vamoxorei64.v">; | ||||
defm VAMOANDEI64 : VAMO<AMOOPVamoAnd, LSWidth64, "vamoandei64.v">; | defm VAMOANDEI64 : VAMO<AMOOPVamoAnd, LSWidth64, "vamoandei64.v">; | ||||
defm VAMOOREI64 : VAMO<AMOOPVamoOr, LSWidth64, "vamoorei64.v">; | defm VAMOOREI64 : VAMO<AMOOPVamoOr, LSWidth64, "vamoorei64.v">; | ||||
defm VAMOMINEI64 : VAMO<AMOOPVamoMin, LSWidth64, "vamominei64.v">; | defm VAMOMINEI64 : VAMO<AMOOPVamoMin, LSWidth64, "vamominei64.v">; | ||||
defm VAMOMAXEI64 : VAMO<AMOOPVamoMax, LSWidth64, "vamomaxei64.v">; | defm VAMOMAXEI64 : VAMO<AMOOPVamoMax, LSWidth64, "vamomaxei64.v">; | ||||
defm VAMOMINUEI64 : VAMO<AMOOPVamoMinu, LSWidth64, "vamominuei64.v">; | defm VAMOMINUEI64 : VAMO<AMOOPVamoMinu, LSWidth64, "vamominuei64.v">; | ||||
defm VAMOMAXUEI64 : VAMO<AMOOPVamoMaxu, LSWidth64, "vamomaxuei64.v">; | defm VAMOMAXUEI64 : VAMO<AMOOPVamoMaxu, LSWidth64, "vamomaxuei64.v">; | ||||
} // Predicates = [HasStdExtZvamo, HasStdExtA, IsRV64] | } // Predicates = [HasStdExtZvamo, HasStdExtA, IsRV64] | ||||
include "RISCVInstrInfoVPseudos.td" | include "RISCVInstrInfoVPseudos.td" |
This part is changing from VLSSched<32> to VLSSched<64>. I assume that 32 is a bug?