Skip to content

Commit 68bc6d7

Browse files
author
Shao-Ce SUN
committed
[RISCV] Remove Zvamo Extention
Based on D111692. Zvamo is not part of the 1.0 V spec. Remove it. Reviewed By: arcbbb Differential Revision: https://reviews.llvm.org/D115709
1 parent 4ece4cd commit 68bc6d7

33 files changed

+11
-34854
lines changed

clang/test/Driver/riscv-arch.c

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -435,25 +435,6 @@
435435
// RUN: -fsyntax-only 2>&1 | FileCheck -check-prefix=RV32-EXPERIMENTAL-ZFHMIN %s
436436
// RV32-EXPERIMENTAL-ZFHMIN: "-target-feature" "+experimental-zfhmin"
437437

438-
// RUN: %clang -target riscv32-unknown-elf -march=rv32izvamo -### %s -c 2>&1 | \
439-
// RUN: FileCheck -check-prefix=RV32-EXPERIMENTAL-ZVAMO-NOFLAG %s
440-
// RV32-EXPERIMENTAL-ZVAMO-NOFLAG: error: invalid arch name 'rv32izvamo'
441-
// RV32-EXPERIMENTAL-ZVAMO-NOFLAG: requires '-menable-experimental-extensions'
442-
443-
// RUN: %clang -target riscv32-unknown-elf -march=rv32izvamo -menable-experimental-extensions -### %s -c 2>&1 | \
444-
// RUN: FileCheck -check-prefix=RV32-EXPERIMENTAL-ZVAMO-NOVERS %s
445-
// RV32-EXPERIMENTAL-ZVAMO-NOVERS: error: invalid arch name 'rv32izvamo'
446-
// RV32-EXPERIMENTAL-ZVAMO-NOVERS: experimental extension requires explicit version number
447-
448-
// RUN: %clang -target riscv32-unknown-elf -march=rv32izvamo0p1 -menable-experimental-extensions -### %s -c 2>&1 | \
449-
// RUN: FileCheck -check-prefix=RV32-EXPERIMENTAL-ZVAMO-BADVERS %s
450-
// RV32-EXPERIMENTAL-ZVAMO-BADVERS: error: invalid arch name 'rv32izvamo0p1'
451-
// RV32-EXPERIMENTAL-ZVAMO-BADVERS: unsupported version number 0.1 for experimental extension 'zvamo'
452-
453-
// RUN: %clang -target riscv32-unknown-elf -march=rv32izvamo0p10 -menable-experimental-extensions -### %s -c 2>&1 | \
454-
// RUN: FileCheck -check-prefix=RV32-EXPERIMENTAL-ZVAMO-GOODVERS %s
455-
// RV32-EXPERIMENTAL-ZVAMO-GOODVERS: "-target-feature" "+experimental-zvamo"
456-
457438
// RUN: %clang -target riscv32-unknown-elf -march=rv32izvlsseg -### %s -c 2>&1 | \
458439
// RUN: FileCheck -check-prefix=RV32-EXPERIMENTAL-ZVLSSEG-NOFLAG %s
459440
// RV32-EXPERIMENTAL-ZVLSSEG-NOFLAG: error: invalid arch name 'rv32izvlsseg'

clang/test/Preprocessor/riscv-target-features.c

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
// CHECK-NOT: __riscv_zfh
3232
// CHECK-NOT: __riscv_v
3333
// CHECK-NOT: __riscv_vector
34-
// CHECK-NOT: __riscv_zvamo
3534
// CHECK-NOT: __riscv_zvlsseg
3635

3736
// RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32im -x c -E -dM %s \
@@ -205,17 +204,6 @@
205204
// CHECK-V-EXT: __riscv_vector 1
206205
// CHECK-V-EXT: __riscv_zvlsseg 10000
207206

208-
// RUN: %clang -target riscv32-unknown-linux-gnu -menable-experimental-extensions \
209-
// RUN: -march=rv32izvamo0p10 -x c -E -dM %s \
210-
// RUN: -o - | FileCheck --check-prefix=CHECK-ZVAMO-EXT %s
211-
// RUN: %clang -target riscv64-unknown-linux-gnu -menable-experimental-extensions \
212-
// RUN: -march=rv32izvamo0p10 -x c -E -dM %s \
213-
// RUN: -o - | FileCheck --check-prefix=CHECK-ZVAMO-EXT %s
214-
// CHECK-ZVAMO-EXT: __riscv_v 10000
215-
// CHECK-ZVAMO-EXT: __riscv_vector 1
216-
// CHECK-ZVAMO-EXT: __riscv_zvamo 10000
217-
// CHECK-ZVAMO-EXT: __riscv_zvlsseg 10000
218-
219207
// RUN: %clang -target riscv32-unknown-linux-gnu -menable-experimental-extensions \
220208
// RUN: -march=rv32izfh0p1 -x c -E -dM %s \
221209
// RUN: -o - | FileCheck --check-prefix=CHECK-ZFH-EXT %s

llvm/include/llvm/IR/IntrinsicsRISCV.td

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -642,20 +642,6 @@ let TargetPrefix = "riscv" in {
642642
LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>, llvm_anyint_ty,
643643
LLVMMatchType<2>],
644644
[ImmArg<ArgIndex<4>>, IntrNoMem]>, RISCVVIntrinsic;
645-
// For atomic operations without mask
646-
// Input: (base, index, value, vl)
647-
class RISCVAMONoMask
648-
: Intrinsic<[llvm_anyvector_ty],
649-
[LLVMPointerType<LLVMMatchType<0>>, llvm_anyvector_ty, LLVMMatchType<0>,
650-
llvm_anyint_ty],
651-
[NoCapture<ArgIndex<0>>]>, RISCVVIntrinsic;
652-
// For atomic operations with mask
653-
// Input: (base, index, value, mask, vl)
654-
class RISCVAMOMask
655-
: Intrinsic<[llvm_anyvector_ty],
656-
[LLVMPointerType<LLVMMatchType<0>>, llvm_anyvector_ty, LLVMMatchType<0>,
657-
LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>, llvm_anyint_ty],
658-
[NoCapture<ArgIndex<0>>]>, RISCVVIntrinsic;
659645

660646
// For unit stride segment load
661647
// Input: (pointer, vl)
@@ -930,10 +916,6 @@ let TargetPrefix = "riscv" in {
930916
def "int_riscv_" #NAME :RISCVConversionNoMask;
931917
def "int_riscv_" # NAME # "_mask" : RISCVConversionMask;
932918
}
933-
multiclass RISCVAMO {
934-
def "int_riscv_" # NAME : RISCVAMONoMask;
935-
def "int_riscv_" # NAME # "_mask" : RISCVAMOMask;
936-
}
937919
multiclass RISCVUSSegLoad<int nf> {
938920
def "int_riscv_" # NAME : RISCVUSSegLoad<nf>;
939921
def "int_riscv_" # NAME # "_mask" : RISCVUSSegLoadMask<nf>;
@@ -976,16 +958,6 @@ let TargetPrefix = "riscv" in {
976958
def int_riscv_vlm : RISCVUSLoad;
977959
def int_riscv_vsm : RISCVUSStore;
978960

979-
defm vamoswap : RISCVAMO;
980-
defm vamoadd : RISCVAMO;
981-
defm vamoxor : RISCVAMO;
982-
defm vamoand : RISCVAMO;
983-
defm vamoor : RISCVAMO;
984-
defm vamomin : RISCVAMO;
985-
defm vamomax : RISCVAMO;
986-
defm vamominu : RISCVAMO;
987-
defm vamomaxu : RISCVAMO;
988-
989961
defm vadd : RISCVBinaryAAX;
990962
defm vsub : RISCVBinaryAAX;
991963
defm vrsub : RISCVBinaryAAX;

llvm/lib/Support/RISCVISAInfo.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ static const RISCVSupportedExtension SupportedExperimentalExtensions[] = {
6161
{"zbs", RISCVExtensionVersion{1, 0}},
6262
{"zbt", RISCVExtensionVersion{0, 93}},
6363

64-
{"zvamo", RISCVExtensionVersion{0, 10}},
6564
{"zvlsseg", RISCVExtensionVersion{0, 10}},
6665

6766
{"zfhmin", RISCVExtensionVersion{0, 1}},
@@ -286,10 +285,6 @@ void RISCVISAInfo::toFeatures(
286285
if (ExtName == "zvlsseg") {
287286
Features.push_back("+experimental-v");
288287
Features.push_back("+experimental-zvlsseg");
289-
} else if (ExtName == "zvamo") {
290-
Features.push_back("+experimental-v");
291-
Features.push_back("+experimental-zvlsseg");
292-
Features.push_back("+experimental-zvamo");
293288
} else if (isExperimentalExtension(ExtName)) {
294289
Features.push_back(StrAlloc("+experimental-" + ExtName));
295290
} else {

llvm/lib/Target/RISCV/RISCV.td

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -168,14 +168,6 @@ def HasStdExtZvlsseg : Predicate<"Subtarget->hasStdExtZvlsseg()">,
168168
AssemblerPredicate<(all_of FeatureStdExtZvlsseg),
169169
"'Zvlsseg' (Vector segment load/store instructions)">;
170170

171-
def FeatureStdExtZvamo
172-
: SubtargetFeature<"experimental-zvamo", "HasStdExtZvamo", "true",
173-
"'Zvamo' (Vector AMO Operations)",
174-
[FeatureStdExtV]>;
175-
def HasStdExtZvamo : Predicate<"Subtarget->hasStdExtZvamo()">,
176-
AssemblerPredicate<(all_of FeatureStdExtZvamo),
177-
"'Zvamo' (Vector AMO Operations)">;
178-
179171
def Feature64Bit
180172
: SubtargetFeature<"64bit", "HasRV64", "true", "Implements RV64">;
181173
def IsRV64 : Predicate<"Subtarget->is64Bit()">,

llvm/lib/Target/RISCV/RISCVInstrFormatsV.td

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -45,19 +45,6 @@ def SUMOPUnitStride : RISCVLSUMOP<0b00000>;
4545
def SUMOPUnitStrideMask : RISCVLSUMOP<0b01011>;
4646
def SUMOPUnitStrideWholeReg : RISCVLSUMOP<0b01000>;
4747

48-
class RISCVAMOOP<bits<5> val> {
49-
bits<5> Value = val;
50-
}
51-
def AMOOPVamoSwap : RISCVAMOOP<0b00001>;
52-
def AMOOPVamoAdd : RISCVAMOOP<0b00000>;
53-
def AMOOPVamoXor : RISCVAMOOP<0b00100>;
54-
def AMOOPVamoAnd : RISCVAMOOP<0b01100>;
55-
def AMOOPVamoOr : RISCVAMOOP<0b01000>;
56-
def AMOOPVamoMin : RISCVAMOOP<0b10000>;
57-
def AMOOPVamoMax : RISCVAMOOP<0b10100>;
58-
def AMOOPVamoMinu : RISCVAMOOP<0b11000>;
59-
def AMOOPVamoMaxu : RISCVAMOOP<0b11100>;
60-
6148
class RISCVWidth<bits<4> val> {
6249
bits<4> Value = val;
6350
}
@@ -342,22 +329,3 @@ class RVInstVSX<bits<3> nf, bit mew, RISCVMOP mop, bits<3> width,
342329

343330
let Uses = [VTYPE, VL];
344331
}
345-
346-
class RVInstVAMO<RISCVAMOOP amoop, bits<3> width, dag outs,
347-
dag ins, string opcodestr, string argstr>
348-
: RVInst<outs, ins, opcodestr, argstr, [], InstFormatR> {
349-
bits<5> vs2;
350-
bits<5> rs1;
351-
bit wd;
352-
bit vm;
353-
354-
let Inst{31-27} = amoop.Value;
355-
let Inst{26} = wd;
356-
let Inst{25} = vm;
357-
let Inst{24-20} = vs2;
358-
let Inst{19-15} = rs1;
359-
let Inst{14-12} = width;
360-
let Opcode = OPC_AMO.Value;
361-
362-
let Uses = [VTYPE, VL];
363-
}

llvm/lib/Target/RISCV/RISCVInstrInfoV.td

Lines changed: 1 addition & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -338,29 +338,6 @@ class VALUVs2<bits<6> funct6, bits<5> vs1, RISCVVFormat opv, string opcodestr>
338338
opcodestr, "$vd, $vs2$vm">;
339339
} // hasSideEffects = 0, mayLoad = 0, mayStore = 0
340340

341-
let hasSideEffects = 0, mayLoad = 1, mayStore = 1 in {
342-
// vamo vd, (rs1), vs2, vd, vm
343-
class VAMOWd<RISCVAMOOP amoop, RISCVWidth width, string opcodestr>
344-
: RVInstVAMO<amoop, width.Value{2-0}, (outs VR:$vd_wd),
345-
(ins GPR:$rs1, VR:$vs2, VR:$vd, VMaskOp:$vm),
346-
opcodestr, "$vd_wd, (${rs1}), $vs2, $vd$vm"> {
347-
let Constraints = "$vd_wd = $vd";
348-
let wd = 1;
349-
bits<5> vd;
350-
let Inst{11-7} = vd;
351-
}
352-
353-
// vamo x0, (rs1), vs2, vs3, vm
354-
class VAMONoWd<RISCVAMOOP amoop, RISCVWidth width, string opcodestr>
355-
: RVInstVAMO<amoop, width.Value{2-0}, (outs),
356-
(ins GPR:$rs1, VR:$vs2, VR:$vs3, VMaskOp:$vm),
357-
opcodestr, "x0, (${rs1}), $vs2, $vs3$vm"> {
358-
bits<5> vs3;
359-
let Inst{11-7} = vs3;
360-
}
361-
362-
} // hasSideEffects = 0, mayLoad = 1, mayStore = 1
363-
364341
//===----------------------------------------------------------------------===//
365342
// Combination of instruction classes.
366343
// Use these multiclasses to define instructions more easily.
@@ -779,11 +756,6 @@ multiclass VCPR_MV_Mask<string opcodestr, bits<6> funct6, string vm = "v"> {
779756
Sched<[WriteVCompressV, ReadVCompressV, ReadVCompressV]>;
780757
}
781758

782-
multiclass VAMO<RISCVAMOOP amoop, RISCVWidth width, string opcodestr> {
783-
def _WD : VAMOWd<amoop, width, opcodestr>;
784-
def _UNWD : VAMONoWd<amoop, width, opcodestr>;
785-
}
786-
787759
multiclass VWholeLoadN<bits<3> nf, string opcodestr, RegisterClass VRC> {
788760
foreach l = [8, 16, 32, 64] in {
789761
defvar w = !cast<RISCVWidth>("LSWidth" # l);
@@ -822,7 +794,7 @@ foreach eew = [8, 16, 32, 64] in {
822794
// Vector Strided Instructions
823795
def VLSE#eew#_V : VStridedLoad<w, "vlse"#eew#".v">, VLSSched<eew>;
824796
def VSSE#eew#_V : VStridedStore<w, "vsse"#eew#".v">, VSSSched<eew>;
825-
797+
826798
// Vector Indexed Instructions
827799
def VLUXEI#eew#_V :
828800
VIndexedLoad<MOPLDIndexedUnord, w, "vluxei"#eew#".v">, VLXSched<eew, "U">;
@@ -1469,31 +1441,4 @@ let Predicates = [HasStdExtZvlsseg] in {
14691441
}
14701442
} // Predicates = [HasStdExtZvlsseg]
14711443

1472-
let Predicates = [HasStdExtZvamo, HasStdExtA] in {
1473-
foreach eew = [8, 16, 32] in {
1474-
defvar w = !cast<RISCVWidth>("LSWidth"#eew);
1475-
defm VAMOSWAPEI#eew : VAMO<AMOOPVamoSwap, w, "vamoswapei"#eew#".v">;
1476-
defm VAMOADDEI#eew : VAMO<AMOOPVamoAdd, w, "vamoaddei"#eew#".v">;
1477-
defm VAMOXOREI#eew : VAMO<AMOOPVamoXor, w, "vamoxorei"#eew#".v">;
1478-
defm VAMOANDEI#eew : VAMO<AMOOPVamoAnd, w, "vamoandei"#eew#".v">;
1479-
defm VAMOOREI#eew : VAMO<AMOOPVamoOr, w, "vamoorei"#eew#".v">;
1480-
defm VAMOMINEI#eew : VAMO<AMOOPVamoMin, w, "vamominei"#eew#".v">;
1481-
defm VAMOMAXEI#eew : VAMO<AMOOPVamoMax, w, "vamomaxei"#eew#".v">;
1482-
defm VAMOMINUEI#eew : VAMO<AMOOPVamoMinu, w, "vamominuei"#eew#".v">;
1483-
defm VAMOMAXUEI#eew : VAMO<AMOOPVamoMaxu, w, "vamomaxuei"#eew#".v">;
1484-
}
1485-
} // Predicates = [HasStdExtZvamo, HasStdExtA]
1486-
1487-
let Predicates = [HasStdExtZvamo, HasStdExtA, IsRV64] in {
1488-
defm VAMOSWAPEI64 : VAMO<AMOOPVamoSwap, LSWidth64, "vamoswapei64.v">;
1489-
defm VAMOADDEI64 : VAMO<AMOOPVamoAdd, LSWidth64, "vamoaddei64.v">;
1490-
defm VAMOXOREI64 : VAMO<AMOOPVamoXor, LSWidth64, "vamoxorei64.v">;
1491-
defm VAMOANDEI64 : VAMO<AMOOPVamoAnd, LSWidth64, "vamoandei64.v">;
1492-
defm VAMOOREI64 : VAMO<AMOOPVamoOr, LSWidth64, "vamoorei64.v">;
1493-
defm VAMOMINEI64 : VAMO<AMOOPVamoMin, LSWidth64, "vamominei64.v">;
1494-
defm VAMOMAXEI64 : VAMO<AMOOPVamoMax, LSWidth64, "vamomaxei64.v">;
1495-
defm VAMOMINUEI64 : VAMO<AMOOPVamoMinu, LSWidth64, "vamominuei64.v">;
1496-
defm VAMOMAXUEI64 : VAMO<AMOOPVamoMaxu, LSWidth64, "vamomaxuei64.v">;
1497-
} // Predicates = [HasStdExtZvamo, HasStdExtA, IsRV64]
1498-
14991444
include "RISCVInstrInfoVPseudos.td"

0 commit comments

Comments
 (0)