mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 12:12:47 +01:00
[RISCV] Add new vector instructions in v0.10.
* Add new vector instructions in v0.10. - load/store for mask value vle1.v vse1.v - vsetivli for 0-31 immediate vector length. * Rename vector instructions in v0.10. - vfrsqrte7 -> vfrsqrt7 - vfrece7 -> vfrec7 * Reserve memory width encodings for EEW>128b. Differential Revision: https://reviews.llvm.org/D95781
This commit is contained in:
parent
67b774212d
commit
c774266248
@ -790,6 +790,9 @@ let TargetPrefix = "riscv" in {
|
||||
defm vsoxei : RISCVIStore;
|
||||
defm vsuxei : RISCVIStore;
|
||||
|
||||
def int_riscv_vle1 : RISCVUSLoad;
|
||||
def int_riscv_vse1 : RISCVUSStore;
|
||||
|
||||
defm vamoswap : RISCVAMO;
|
||||
defm vamoadd : RISCVAMO;
|
||||
defm vamoxor : RISCVAMO;
|
||||
@ -940,8 +943,8 @@ let TargetPrefix = "riscv" in {
|
||||
defm vfwnmsac : RISCVTernaryWide;
|
||||
|
||||
defm vfsqrt : RISCVUnaryAA;
|
||||
defm vfrsqrte7 : RISCVUnaryAA;
|
||||
defm vfrece7 : RISCVUnaryAA;
|
||||
defm vfrsqrt7 : RISCVUnaryAA;
|
||||
defm vfrec7 : RISCVUnaryAA;
|
||||
|
||||
defm vfmin : RISCVBinaryAAX;
|
||||
defm vfmax : RISCVBinaryAAX;
|
||||
|
@ -59,7 +59,8 @@ bool RISCVCleanupVSETVLI::runOnMachineBasicBlock(MachineBasicBlock &MBB) {
|
||||
for (auto MII = MBB.begin(), MIE = MBB.end(); MII != MIE;) {
|
||||
MachineInstr &MI = *MII++;
|
||||
|
||||
if (MI.getOpcode() != RISCV::PseudoVSETVLI) {
|
||||
if (MI.getOpcode() != RISCV::PseudoVSETVLI &&
|
||||
MI.getOpcode() != RISCV::PseudoVSETIVLI) {
|
||||
if (PrevVSETVLI &&
|
||||
(MI.isCall() || MI.modifiesRegister(RISCV::VL) ||
|
||||
MI.modifiesRegister(RISCV::VTYPE))) {
|
||||
@ -69,26 +70,48 @@ bool RISCVCleanupVSETVLI::runOnMachineBasicBlock(MachineBasicBlock &MBB) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// If we don't have a previous VSETVLI or the VL output isn't dead, we
|
||||
// If we don't have a previous VSET{I}VLI or the VL output isn't dead, we
|
||||
// can't remove this VSETVLI.
|
||||
if (!PrevVSETVLI || !MI.getOperand(0).isDead()) {
|
||||
PrevVSETVLI = &MI;
|
||||
continue;
|
||||
}
|
||||
|
||||
Register PrevAVLReg = PrevVSETVLI->getOperand(1).getReg();
|
||||
Register AVLReg = MI.getOperand(1).getReg();
|
||||
// If a previous "set vl" instruction opcode is different from this one, we
|
||||
// can't differentiate the AVL values.
|
||||
if (PrevVSETVLI->getOpcode() != MI.getOpcode()) {
|
||||
PrevVSETVLI = &MI;
|
||||
continue;
|
||||
}
|
||||
|
||||
// The remaining two cases are
|
||||
// 1. PrevVSETVLI = PseudoVSETVLI
|
||||
// MI = PseudoVSETVLI
|
||||
//
|
||||
// 2. PrevVSETVLI = PseudoVSETIVLI
|
||||
// MI = PseudoVSETIVLI
|
||||
Register AVLReg;
|
||||
bool SameAVL = false;
|
||||
if (MI.getOpcode() == RISCV::PseudoVSETVLI) {
|
||||
AVLReg = MI.getOperand(1).getReg();
|
||||
SameAVL = PrevVSETVLI->getOperand(1).getReg() == AVLReg;
|
||||
} else { // RISCV::PseudoVSETIVLI
|
||||
SameAVL =
|
||||
PrevVSETVLI->getOperand(1).getImm() == MI.getOperand(1).getImm();
|
||||
}
|
||||
int64_t PrevVTYPEImm = PrevVSETVLI->getOperand(2).getImm();
|
||||
int64_t VTYPEImm = MI.getOperand(2).getImm();
|
||||
|
||||
// Does this VSETVLI use the same AVL register and VTYPE immediate?
|
||||
if (PrevAVLReg != AVLReg || PrevVTYPEImm != VTYPEImm) {
|
||||
// Does this VSET{I}VLI use the same AVL register/value and VTYPE immediate?
|
||||
if (!SameAVL || PrevVTYPEImm != VTYPEImm) {
|
||||
PrevVSETVLI = &MI;
|
||||
continue;
|
||||
}
|
||||
|
||||
// If the AVLReg is X0 we need to look at the output VL of both VSETVLIs.
|
||||
if (AVLReg == RISCV::X0) {
|
||||
if ((MI.getOpcode() == RISCV::PseudoVSETVLI) && (AVLReg == RISCV::X0)) {
|
||||
assert((PrevVSETVLI->getOpcode() == RISCV::PseudoVSETVLI) &&
|
||||
"Unexpected vsetvli opcode.");
|
||||
Register PrevOutVL = PrevVSETVLI->getOperand(0).getReg();
|
||||
Register OutVL = MI.getOperand(0).getReg();
|
||||
// We can't remove if the previous VSETVLI left VL unchanged and the
|
||||
|
@ -103,6 +103,7 @@ bool RISCVExpandPseudo::expandMI(MachineBasicBlock &MBB,
|
||||
case RISCV::PseudoLA_TLS_GD:
|
||||
return expandLoadTLSGDAddress(MBB, MBBI, NextMBBI);
|
||||
case RISCV::PseudoVSETVLI:
|
||||
case RISCV::PseudoVSETIVLI:
|
||||
return expandVSetVL(MBB, MBBI);
|
||||
case RISCV::PseudoVMCLR_M_B1:
|
||||
case RISCV::PseudoVMCLR_M_B2:
|
||||
@ -217,9 +218,15 @@ bool RISCVExpandPseudo::expandVSetVL(MachineBasicBlock &MBB,
|
||||
|
||||
DebugLoc DL = MBBI->getDebugLoc();
|
||||
|
||||
assert(MBBI->getOpcode() == RISCV::PseudoVSETVLI &&
|
||||
assert((MBBI->getOpcode() == RISCV::PseudoVSETVLI ||
|
||||
MBBI->getOpcode() == RISCV::PseudoVSETIVLI) &&
|
||||
"Unexpected pseudo instruction");
|
||||
const MCInstrDesc &Desc = TII->get(RISCV::VSETVLI);
|
||||
unsigned Opcode;
|
||||
if (MBBI->getOpcode() == RISCV::PseudoVSETVLI)
|
||||
Opcode = RISCV::VSETVLI;
|
||||
else
|
||||
Opcode = RISCV::VSETIVLI;
|
||||
const MCInstrDesc &Desc = TII->get(Opcode);
|
||||
assert(Desc.getNumOperands() == 3 && "Unexpected instruction format");
|
||||
|
||||
Register DstReg = MBBI->getOperand(0).getReg();
|
||||
|
@ -607,12 +607,14 @@ void RISCVDAGToDAGISel::Select(SDNode *Node) {
|
||||
|
||||
SDValue VLOperand = Node->getOperand(2);
|
||||
if (auto *C = dyn_cast<ConstantSDNode>(VLOperand)) {
|
||||
if (C->isNullValue()) {
|
||||
VLOperand = SDValue(
|
||||
CurDAG->getMachineNode(RISCV::ADDI, DL, XLenVT,
|
||||
CurDAG->getRegister(RISCV::X0, XLenVT),
|
||||
CurDAG->getTargetConstant(0, DL, XLenVT)),
|
||||
0);
|
||||
uint64_t AVL = C->getZExtValue();
|
||||
if (isUInt<5>(AVL)) {
|
||||
SDValue VLImm = CurDAG->getTargetConstant(AVL, DL, XLenVT);
|
||||
ReplaceNode(Node,
|
||||
CurDAG->getMachineNode(RISCV::PseudoVSETIVLI, DL, XLenVT,
|
||||
MVT::Other, VLImm, VTypeIOp,
|
||||
/* Chain */ Node->getOperand(0)));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -38,9 +38,11 @@ class RISCVLSUMOP<bits<5> val> {
|
||||
bits<5> Value = val;
|
||||
}
|
||||
def LUMOPUnitStride : RISCVLSUMOP<0b00000>;
|
||||
def LUMOPUnitStrideMask : RISCVLSUMOP<0b01011>;
|
||||
def LUMOPUnitStrideWholeReg : RISCVLSUMOP<0b01000>;
|
||||
def LUMOPUnitStrideFF: RISCVLSUMOP<0b10000>;
|
||||
def SUMOPUnitStride : RISCVLSUMOP<0b00000>;
|
||||
def SUMOPUnitStrideMask : RISCVLSUMOP<0b01011>;
|
||||
def SUMOPUnitStrideWholeReg : RISCVLSUMOP<0b01000>;
|
||||
|
||||
class RISCVAMOOP<bits<5> val> {
|
||||
@ -63,10 +65,23 @@ def LSWidth8 : RISCVWidth<0b0000>;
|
||||
def LSWidth16 : RISCVWidth<0b0101>;
|
||||
def LSWidth32 : RISCVWidth<0b0110>;
|
||||
def LSWidth64 : RISCVWidth<0b0111>;
|
||||
def LSWidth128 : RISCVWidth<0b1000>;
|
||||
def LSWidth256 : RISCVWidth<0b1101>;
|
||||
def LSWidth512 : RISCVWidth<0b1110>;
|
||||
def LSWidth1024 : RISCVWidth<0b1111>;
|
||||
|
||||
class RVInstSetiVLi<dag outs, dag ins, string opcodestr, string argstr>
|
||||
: RVInst<outs, ins, opcodestr, argstr, [], InstFormatI> {
|
||||
bits<5> uimm;
|
||||
bits<5> rd;
|
||||
bits<10> vtypei;
|
||||
|
||||
let Inst{31} = 1;
|
||||
let Inst{30} = 1;
|
||||
let Inst{29-20} = vtypei{9-0};
|
||||
let Inst{19-15} = uimm;
|
||||
let Inst{14-12} = 0b111;
|
||||
let Inst{11-7} = rd;
|
||||
let Opcode = OPC_OP_V.Value;
|
||||
|
||||
let Defs = [VTYPE, VL];
|
||||
}
|
||||
|
||||
class RVInstSetVLi<dag outs, dag ins, string opcodestr, string argstr>
|
||||
: RVInst<outs, ins, opcodestr, argstr, [], InstFormatI> {
|
||||
|
@ -82,6 +82,12 @@ def simm5_plus1 : Operand<XLenVT>, ImmLeaf<XLenVT,
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
let hasSideEffects = 0, mayLoad = 1, mayStore = 0 in {
|
||||
// load vd, (rs1)
|
||||
class VUnitStrideLoadMask<string opcodestr>
|
||||
: RVInstVLU<0b000, LSWidth8.Value{3}, LUMOPUnitStrideMask, LSWidth8.Value{2-0},
|
||||
(outs VR:$vd),
|
||||
(ins GPR:$rs1), opcodestr, "$vd, (${rs1})">;
|
||||
|
||||
// load vd, (rs1), vm
|
||||
class VUnitStrideLoad<RISCVLSUMOP lumop, RISCVWidth width,
|
||||
string opcodestr>
|
||||
@ -137,6 +143,12 @@ class VIndexedSegmentLoad<bits<3> nf, RISCVMOP mop, RISCVWidth width,
|
||||
} // hasSideEffects = 0, mayLoad = 1, mayStore = 0
|
||||
|
||||
let hasSideEffects = 0, mayLoad = 0, mayStore = 1 in {
|
||||
// store vd, vs3, (rs1), vm
|
||||
class VUnitStrideStoreMask<string opcodestr>
|
||||
: RVInstVSU<0b000, LSWidth8.Value{3}, SUMOPUnitStrideMask, LSWidth8.Value{2-0},
|
||||
(outs), (ins VR:$vs3, GPR:$rs1), opcodestr,
|
||||
"$vs3, (${rs1})">;
|
||||
|
||||
// store vd, vs3, (rs1), vm
|
||||
class VUnitStrideStore<RISCVLSUMOP sumop, RISCVWidth width,
|
||||
string opcodestr>
|
||||
@ -423,10 +435,6 @@ multiclass VWholeLoad<bits<3> nf, string opcodestr> {
|
||||
def E16_V : VWholeLoad<nf, LSWidth16, opcodestr # "e16.v">;
|
||||
def E32_V : VWholeLoad<nf, LSWidth32, opcodestr # "e32.v">;
|
||||
def E64_V : VWholeLoad<nf, LSWidth64, opcodestr # "e64.v">;
|
||||
def E128_V : VWholeLoad<nf, LSWidth128, opcodestr # "e128.v">;
|
||||
def E256_V : VWholeLoad<nf, LSWidth256, opcodestr # "e256.v">;
|
||||
def E512_V : VWholeLoad<nf, LSWidth512, opcodestr # "e512.v">;
|
||||
def E1024_V : VWholeLoad<nf, LSWidth1024, opcodestr # "e1024.v">;
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
@ -438,6 +446,9 @@ let hasSideEffects = 1, mayLoad = 0, mayStore = 0 in {
|
||||
def VSETVLI : RVInstSetVLi<(outs GPR:$rd), (ins GPR:$rs1, VTypeIOp:$vtypei),
|
||||
"vsetvli", "$rd, $rs1, $vtypei">;
|
||||
|
||||
def VSETIVLI : RVInstSetiVLi<(outs GPR:$rd), (ins uimm5:$uimm, VTypeIOp:$vtypei),
|
||||
"vsetivli", "$rd, $uimm, $vtypei">;
|
||||
|
||||
def VSETVL : RVInstSetVL<(outs GPR:$rd), (ins GPR:$rs1, GPR:$rs2),
|
||||
"vsetvl", "$rd, $rs1, $rs2">;
|
||||
} // hasSideEffects = 1, mayLoad = 0, mayStore = 0
|
||||
@ -447,47 +458,30 @@ def VLE8_V : VUnitStrideLoad<LUMOPUnitStride, LSWidth8, "vle8.v">;
|
||||
def VLE16_V : VUnitStrideLoad<LUMOPUnitStride, LSWidth16, "vle16.v">;
|
||||
def VLE32_V : VUnitStrideLoad<LUMOPUnitStride, LSWidth32, "vle32.v">;
|
||||
def VLE64_V : VUnitStrideLoad<LUMOPUnitStride, LSWidth64, "vle64.v">;
|
||||
def VLE128_V : VUnitStrideLoad<LUMOPUnitStride, LSWidth128, "vle128.v">;
|
||||
def VLE256_V : VUnitStrideLoad<LUMOPUnitStride, LSWidth256, "vle256.v">;
|
||||
def VLE512_V : VUnitStrideLoad<LUMOPUnitStride, LSWidth512, "vle512.v">;
|
||||
def VLE1024_V : VUnitStrideLoad<LUMOPUnitStride, LSWidth1024, "vle1024.v">;
|
||||
|
||||
def VLE8FF_V : VUnitStrideLoad<LUMOPUnitStrideFF, LSWidth8, "vle8ff.v">;
|
||||
def VLE16FF_V : VUnitStrideLoad<LUMOPUnitStrideFF, LSWidth16, "vle16ff.v">;
|
||||
def VLE32FF_V : VUnitStrideLoad<LUMOPUnitStrideFF, LSWidth32, "vle32ff.v">;
|
||||
def VLE64FF_V : VUnitStrideLoad<LUMOPUnitStrideFF, LSWidth64, "vle64ff.v">;
|
||||
def VLE128FF_V : VUnitStrideLoad<LUMOPUnitStrideFF, LSWidth128, "vle128ff.v">;
|
||||
def VLE256FF_V : VUnitStrideLoad<LUMOPUnitStrideFF, LSWidth256, "vle256ff.v">;
|
||||
def VLE512FF_V : VUnitStrideLoad<LUMOPUnitStrideFF, LSWidth512, "vle512ff.v">;
|
||||
def VLE1024FF_V : VUnitStrideLoad<LUMOPUnitStrideFF, LSWidth1024, "vle1024ff.v">;
|
||||
|
||||
def VLE1_V : VUnitStrideLoadMask<"vle1.v">;
|
||||
def VSE1_V : VUnitStrideStoreMask<"vse1.v">;
|
||||
|
||||
def VSE8_V : VUnitStrideStore<SUMOPUnitStride, LSWidth8, "vse8.v">;
|
||||
def VSE16_V : VUnitStrideStore<SUMOPUnitStride, LSWidth16, "vse16.v">;
|
||||
def VSE32_V : VUnitStrideStore<SUMOPUnitStride, LSWidth32, "vse32.v">;
|
||||
def VSE64_V : VUnitStrideStore<SUMOPUnitStride, LSWidth64, "vse64.v">;
|
||||
def VSE128_V : VUnitStrideStore<SUMOPUnitStride, LSWidth128, "vse128.v">;
|
||||
def VSE256_V : VUnitStrideStore<SUMOPUnitStride, LSWidth256, "vse256.v">;
|
||||
def VSE512_V : VUnitStrideStore<SUMOPUnitStride, LSWidth512, "vse512.v">;
|
||||
def VSE1024_V : VUnitStrideStore<SUMOPUnitStride, LSWidth1024, "vse1024.v">;
|
||||
|
||||
// Vector Strided Instructions
|
||||
def VLSE8_V : VStridedLoad<LSWidth8, "vlse8.v">;
|
||||
def VLSE16_V : VStridedLoad<LSWidth16, "vlse16.v">;
|
||||
def VLSE32_V : VStridedLoad<LSWidth32, "vlse32.v">;
|
||||
def VLSE64_V : VStridedLoad<LSWidth64, "vlse64.v">;
|
||||
def VLSE128_V : VStridedLoad<LSWidth128, "vlse128.v">;
|
||||
def VLSE256_V : VStridedLoad<LSWidth256, "vlse256.v">;
|
||||
def VLSE512_V : VStridedLoad<LSWidth512, "vlse512.v">;
|
||||
def VLSE1024_V : VStridedLoad<LSWidth1024, "vlse1024.v">;
|
||||
|
||||
def VSSE8_V : VStridedStore<LSWidth8, "vsse8.v">;
|
||||
def VSSE16_V : VStridedStore<LSWidth16, "vsse16.v">;
|
||||
def VSSE32_V : VStridedStore<LSWidth32, "vsse32.v">;
|
||||
def VSSE64_V : VStridedStore<LSWidth64, "vsse64.v">;
|
||||
def VSSE128_V : VStridedStore<LSWidth128, "vsse128.v">;
|
||||
def VSSE256_V : VStridedStore<LSWidth256, "vsse256.v">;
|
||||
def VSSE512_V : VStridedStore<LSWidth512, "vsse512.v">;
|
||||
def VSSE1024_V : VStridedStore<LSWidth1024, "vsse1024.v">;
|
||||
|
||||
// Vector Indexed Instructions
|
||||
def VLUXEI8_V : VIndexedLoad<MOPLDIndexedUnord, LSWidth8, "vluxei8.v">;
|
||||
@ -806,8 +800,8 @@ defm VFWNMSAC_V : VALUr_FV_V_F<"vfwnmsac", 0b111111>;
|
||||
|
||||
// Vector Floating-Point Square-Root Instruction
|
||||
defm VFSQRT_V : VALU_FV_VS2<"vfsqrt.v", 0b010011, 0b00000>;
|
||||
defm VFRSQRTE7_V : VALU_FV_VS2<"vfrsqrte7.v", 0b010011, 0b00100>;
|
||||
defm VFRECE7_V : VALU_FV_VS2<"vfrece7.v", 0b010011, 0b00101>;
|
||||
defm VFRSQRT7_V : VALU_FV_VS2<"vfrsqrt7.v", 0b010011, 0b00100>;
|
||||
defm VFREC7_V : VALU_FV_VS2<"vfrec7.v", 0b010011, 0b00101>;
|
||||
|
||||
// Vector Floating-Point MIN/MAX Instructions
|
||||
defm VFMIN_V : VALU_FV_V_F<"vfmin", 0b000100>;
|
||||
@ -1058,47 +1052,27 @@ let Predicates = [HasStdExtZvlsseg] in {
|
||||
def VLSEG#nf#E16_V : VUnitStrideSegmentLoad<!add(nf, -1), LUMOPUnitStride, LSWidth16, "vlseg"#nf#"e16.v">;
|
||||
def VLSEG#nf#E32_V : VUnitStrideSegmentLoad<!add(nf, -1), LUMOPUnitStride, LSWidth32, "vlseg"#nf#"e32.v">;
|
||||
def VLSEG#nf#E64_V : VUnitStrideSegmentLoad<!add(nf, -1), LUMOPUnitStride, LSWidth64, "vlseg"#nf#"e64.v">;
|
||||
def VLSEG#nf#E128_V : VUnitStrideSegmentLoad<!add(nf, -1), LUMOPUnitStride, LSWidth128, "vlseg"#nf#"e128.v">;
|
||||
def VLSEG#nf#E256_V : VUnitStrideSegmentLoad<!add(nf, -1), LUMOPUnitStride, LSWidth256, "vlseg"#nf#"e256.v">;
|
||||
def VLSEG#nf#E512_V : VUnitStrideSegmentLoad<!add(nf, -1), LUMOPUnitStride, LSWidth512, "vlseg"#nf#"e512.v">;
|
||||
def VLSEG#nf#E1024_V : VUnitStrideSegmentLoad<!add(nf, -1), LUMOPUnitStride, LSWidth1024, "vlseg"#nf#"e1024.v">;
|
||||
|
||||
def VLSEG#nf#E8FF_V : VUnitStrideSegmentLoad<!add(nf, -1), LUMOPUnitStrideFF, LSWidth8, "vlseg"#nf#"e8ff.v">;
|
||||
def VLSEG#nf#E16FF_V : VUnitStrideSegmentLoad<!add(nf, -1), LUMOPUnitStrideFF, LSWidth16, "vlseg"#nf#"e16ff.v">;
|
||||
def VLSEG#nf#E32FF_V : VUnitStrideSegmentLoad<!add(nf, -1), LUMOPUnitStrideFF, LSWidth32, "vlseg"#nf#"e32ff.v">;
|
||||
def VLSEG#nf#E64FF_V : VUnitStrideSegmentLoad<!add(nf, -1), LUMOPUnitStrideFF, LSWidth64, "vlseg"#nf#"e64ff.v">;
|
||||
def VLSEG#nf#E128FF_V : VUnitStrideSegmentLoad<!add(nf, -1), LUMOPUnitStrideFF, LSWidth128, "vlseg"#nf#"e128ff.v">;
|
||||
def VLSEG#nf#E256FF_V : VUnitStrideSegmentLoad<!add(nf, -1), LUMOPUnitStrideFF, LSWidth256, "vlseg"#nf#"e256ff.v">;
|
||||
def VLSEG#nf#E512FF_V : VUnitStrideSegmentLoad<!add(nf, -1), LUMOPUnitStrideFF, LSWidth512, "vlseg"#nf#"e512ff.v">;
|
||||
def VLSEG#nf#E1024FF_V : VUnitStrideSegmentLoad<!add(nf, -1), LUMOPUnitStrideFF, LSWidth1024, "vlseg"#nf#"e1024ff.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">;
|
||||
def VSSEG#nf#E128_V : VUnitStrideSegmentStore<!add(nf, -1), LSWidth128, "vsseg"#nf#"e128.v">;
|
||||
def VSSEG#nf#E256_V : VUnitStrideSegmentStore<!add(nf, -1), LSWidth256, "vsseg"#nf#"e256.v">;
|
||||
def VSSEG#nf#E512_V : VUnitStrideSegmentStore<!add(nf, -1), LSWidth512, "vsseg"#nf#"e512.v">;
|
||||
def VSSEG#nf#E1024_V : VUnitStrideSegmentStore<!add(nf, -1), LSWidth1024, "vsseg"#nf#"e1024.v">;
|
||||
|
||||
// Vector Strided Instructions
|
||||
def VLSSEG#nf#E8_V : VStridedSegmentLoad<!add(nf, -1), LSWidth8, "vlsseg"#nf#"e8.v">;
|
||||
def VLSSEG#nf#E16_V : VStridedSegmentLoad<!add(nf, -1), LSWidth16, "vlsseg"#nf#"e16.v">;
|
||||
def VLSSEG#nf#E32_V : VStridedSegmentLoad<!add(nf, -1), LSWidth32, "vlsseg"#nf#"e32.v">;
|
||||
def VLSSEG#nf#E64_V : VStridedSegmentLoad<!add(nf, -1), LSWidth64, "vlsseg"#nf#"e64.v">;
|
||||
def VLSSEG#nf#E128_V : VStridedSegmentLoad<!add(nf, -1), LSWidth128, "vlsseg"#nf#"e128.v">;
|
||||
def VLSSEG#nf#E256_V : VStridedSegmentLoad<!add(nf, -1), LSWidth256, "vlsseg"#nf#"e256.v">;
|
||||
def VLSSEG#nf#E512_V : VStridedSegmentLoad<!add(nf, -1), LSWidth512, "vlsseg"#nf#"e512.v">;
|
||||
def VLSSEG#nf#E1024_V : VStridedSegmentLoad<!add(nf, -1), LSWidth1024, "vlsseg"#nf#"e1024.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">;
|
||||
def VSSSEG#nf#E128_V : VStridedSegmentStore<!add(nf, -1), LSWidth128, "vssseg"#nf#"e128.v">;
|
||||
def VSSSEG#nf#E256_V : VStridedSegmentStore<!add(nf, -1), LSWidth256, "vssseg"#nf#"e256.v">;
|
||||
def VSSSEG#nf#E512_V : VStridedSegmentStore<!add(nf, -1), LSWidth512, "vssseg"#nf#"e512.v">;
|
||||
def VSSSEG#nf#E1024_V : VStridedSegmentStore<!add(nf, -1), LSWidth1024, "vssseg"#nf#"e1024.v">;
|
||||
|
||||
// Vector Indexed Instructions
|
||||
def VLUXSEG#nf#EI8_V : VIndexedSegmentLoad<!add(nf, -1), MOPLDIndexedUnord,
|
||||
@ -1109,14 +1083,6 @@ let Predicates = [HasStdExtZvlsseg] in {
|
||||
LSWidth32, "vluxseg"#nf#"ei32.v">;
|
||||
def VLUXSEG#nf#EI64_V : VIndexedSegmentLoad<!add(nf, -1), MOPLDIndexedUnord,
|
||||
LSWidth64, "vluxseg"#nf#"ei64.v">;
|
||||
def VLUXSEG#nf#EI128_V : VIndexedSegmentLoad<!add(nf, -1), MOPLDIndexedUnord,
|
||||
LSWidth128, "vluxseg"#nf#"ei128.v">;
|
||||
def VLUXSEG#nf#EI256_V : VIndexedSegmentLoad<!add(nf, -1), MOPLDIndexedUnord,
|
||||
LSWidth256, "vluxseg"#nf#"ei256.v">;
|
||||
def VLUXSEG#nf#EI512_V : VIndexedSegmentLoad<!add(nf, -1), MOPLDIndexedUnord,
|
||||
LSWidth512, "vluxseg"#nf#"ei512.v">;
|
||||
def VLUXSEG#nf#EI1024_V : VIndexedSegmentLoad<!add(nf, -1), MOPLDIndexedUnord,
|
||||
LSWidth1024, "vluxseg"#nf#"ei1024.v">;
|
||||
|
||||
def VLOXSEG#nf#EI8_V : VIndexedSegmentLoad<!add(nf, -1), MOPLDIndexedOrder,
|
||||
LSWidth8, "vloxseg"#nf#"ei8.v">;
|
||||
@ -1126,14 +1092,6 @@ let Predicates = [HasStdExtZvlsseg] in {
|
||||
LSWidth32, "vloxseg"#nf#"ei32.v">;
|
||||
def VLOXSEG#nf#EI64_V : VIndexedSegmentLoad<!add(nf, -1), MOPLDIndexedOrder,
|
||||
LSWidth64, "vloxseg"#nf#"ei64.v">;
|
||||
def VLOXSEG#nf#EI128_V : VIndexedSegmentLoad<!add(nf, -1), MOPLDIndexedOrder,
|
||||
LSWidth128, "vloxseg"#nf#"ei128.v">;
|
||||
def VLOXSEG#nf#EI256_V : VIndexedSegmentLoad<!add(nf, -1), MOPLDIndexedOrder,
|
||||
LSWidth256, "vloxseg"#nf#"ei256.v">;
|
||||
def VLOXSEG#nf#EI512_V : VIndexedSegmentLoad<!add(nf, -1), MOPLDIndexedOrder,
|
||||
LSWidth512, "vloxseg"#nf#"ei512.v">;
|
||||
def VLOXSEG#nf#EI1024_V : VIndexedSegmentLoad<!add(nf, -1), MOPLDIndexedOrder,
|
||||
LSWidth1024, "vloxseg"#nf#"ei1024.v">;
|
||||
|
||||
def VSUXSEG#nf#EI8_V : VIndexedSegmentStore<!add(nf, -1), MOPSTIndexedUnord,
|
||||
LSWidth8, "vsuxseg"#nf#"ei8.v">;
|
||||
@ -1143,14 +1101,6 @@ let Predicates = [HasStdExtZvlsseg] in {
|
||||
LSWidth32, "vsuxseg"#nf#"ei32.v">;
|
||||
def VSUXSEG#nf#EI64_V : VIndexedSegmentStore<!add(nf, -1), MOPSTIndexedUnord,
|
||||
LSWidth64, "vsuxseg"#nf#"ei64.v">;
|
||||
def VSUXSEG#nf#EI128_V : VIndexedSegmentStore<!add(nf, -1), MOPSTIndexedUnord,
|
||||
LSWidth128, "vsuxseg"#nf#"ei128.v">;
|
||||
def VSUXSEG#nf#EI256_V : VIndexedSegmentStore<!add(nf, -1), MOPSTIndexedUnord,
|
||||
LSWidth256, "vsuxseg"#nf#"ei256.v">;
|
||||
def VSUXSEG#nf#EI512_V : VIndexedSegmentStore<!add(nf, -1), MOPSTIndexedUnord,
|
||||
LSWidth512, "vsuxseg"#nf#"ei512.v">;
|
||||
def VSUXSEG#nf#EI1024_V : VIndexedSegmentStore<!add(nf, -1), MOPSTIndexedUnord,
|
||||
LSWidth1024, "vsuxseg"#nf#"ei1024.v">;
|
||||
|
||||
def VSOXSEG#nf#EI8_V : VIndexedSegmentStore<!add(nf, -1), MOPSTIndexedOrder,
|
||||
LSWidth8, "vsoxseg"#nf#"ei8.v">;
|
||||
@ -1160,14 +1110,6 @@ let Predicates = [HasStdExtZvlsseg] in {
|
||||
LSWidth32, "vsoxseg"#nf#"ei32.v">;
|
||||
def VSOXSEG#nf#EI64_V : VIndexedSegmentStore<!add(nf, -1), MOPSTIndexedOrder,
|
||||
LSWidth64, "vsoxseg"#nf#"ei64.v">;
|
||||
def VSOXSEG#nf#EI128_V : VIndexedSegmentStore<!add(nf, -1), MOPSTIndexedOrder,
|
||||
LSWidth128, "vsoxseg"#nf#"ei128.v">;
|
||||
def VSOXSEG#nf#EI256_V : VIndexedSegmentStore<!add(nf, -1), MOPSTIndexedOrder,
|
||||
LSWidth256, "vsoxseg"#nf#"ei256.v">;
|
||||
def VSOXSEG#nf#EI512_V : VIndexedSegmentStore<!add(nf, -1), MOPSTIndexedOrder,
|
||||
LSWidth512, "vsoxseg"#nf#"ei512.v">;
|
||||
def VSOXSEG#nf#EI1024_V : VIndexedSegmentStore<!add(nf, -1), MOPSTIndexedOrder,
|
||||
LSWidth1024, "vsoxseg"#nf#"ei1024.v">;
|
||||
}
|
||||
} // Predicates = [HasStdExtZvlsseg]
|
||||
|
||||
|
@ -1218,6 +1218,14 @@ multiclass VPseudoUSLoad<bit isFF> {
|
||||
}
|
||||
}
|
||||
|
||||
multiclass VPseudoLoadMask {
|
||||
foreach mti = AllMasks in {
|
||||
let VLMul = mti.LMul.value in {
|
||||
def "_V_" # mti.BX : VPseudoUSLoadNoMask<VR>;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
multiclass VPseudoSLoad {
|
||||
foreach eew = EEWList in {
|
||||
foreach lmul = MxSet<eew>.m in {
|
||||
@ -1260,6 +1268,14 @@ multiclass VPseudoUSStore {
|
||||
}
|
||||
}
|
||||
|
||||
multiclass VPseudoStoreMask {
|
||||
foreach mti = AllMasks in {
|
||||
let VLMul = mti.LMul.value in {
|
||||
def "_V_" # mti.BX : VPseudoUSStoreNoMask<VR>;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
multiclass VPseudoSStore {
|
||||
foreach eew = EEWList in {
|
||||
foreach lmul = MxSet<eew>.m in {
|
||||
@ -3126,7 +3142,7 @@ def PseudoReadVL : Pseudo<(outs GPR:$rd), (ins), []>;
|
||||
// Pseudos.
|
||||
let hasSideEffects = 1, mayLoad = 0, mayStore = 0, Defs = [VL, VTYPE] in {
|
||||
def PseudoVSETVLI : Pseudo<(outs GPR:$rd), (ins GPR:$rs1, VTypeIOp:$vtypei), []>;
|
||||
|
||||
def PseudoVSETIVLI : Pseudo<(outs GPR:$rd), (ins uimm5:$rs1, VTypeIOp:$vtypei), []>;
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
@ -3141,6 +3157,9 @@ def PseudoVSETVLI : Pseudo<(outs GPR:$rd), (ins GPR:$rs1, VTypeIOp:$vtypei), []>
|
||||
defm PseudoVL : VPseudoUSLoad</*isFF=*/false>;
|
||||
defm PseudoVS : VPseudoUSStore;
|
||||
|
||||
defm PseudoVLE1 : VPseudoLoadMask;
|
||||
defm PseudoVSE1 : VPseudoStoreMask;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// 7.5 Vector Strided Instructions
|
||||
//===----------------------------------------------------------------------===//
|
||||
@ -3430,12 +3449,12 @@ defm PseudoVFSQRT : VPseudoUnaryV_V;
|
||||
//===----------------------------------------------------------------------===//
|
||||
// 14.9. Vector Floating-Point Reciprocal Square-Root Estimate Instruction
|
||||
//===----------------------------------------------------------------------===//
|
||||
defm PseudoVFRSQRTE7 : VPseudoUnaryV_V;
|
||||
defm PseudoVFRSQRT7 : VPseudoUnaryV_V;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// 14.10. Vector Floating-Point Reciprocal Estimate Instruction
|
||||
//===----------------------------------------------------------------------===//
|
||||
defm PseudoVFRECE7 : VPseudoUnaryV_V;
|
||||
defm PseudoVFREC7 : VPseudoUnaryV_V;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// 14.11. Vector Floating-Point Min/Max Instructions
|
||||
@ -3712,6 +3731,15 @@ foreach vti = AllVectors in
|
||||
vti.Vector, vti.Mask, vti.SEW, vti.LMul, vti.RegClass>;
|
||||
}
|
||||
|
||||
foreach vti = AllMasks in {
|
||||
defvar PseudoVLE1 = !cast<Instruction>("PseudoVLE1_V_"#vti.BX);
|
||||
def : Pat<(vti.Mask (int_riscv_vle1 GPR:$rs1, (XLenVT (VLOp GPR:$vl)))),
|
||||
(PseudoVLE1 $rs1, GPR:$vl, vti.SEW)>;
|
||||
defvar PseudoVSE1 = !cast<Instruction>("PseudoVSE1_V_"#vti.BX);
|
||||
def : Pat<(int_riscv_vse1 (vti.Mask VR:$rs3), GPR:$rs1, (XLenVT (VLOp GPR:$vl))),
|
||||
(PseudoVSE1 $rs3, $rs1, GPR:$vl, vti.SEW)>;
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// 7.5 Vector Strided Instructions
|
||||
//===----------------------------------------------------------------------===//
|
||||
@ -4103,12 +4131,12 @@ defm "" : VPatUnaryV_V<"int_riscv_vfsqrt", "PseudoVFSQRT", AllFloatVectors>;
|
||||
//===----------------------------------------------------------------------===//
|
||||
// 14.9. Vector Floating-Point Reciprocal Square-Root Estimate Instruction
|
||||
//===----------------------------------------------------------------------===//
|
||||
defm "" : VPatUnaryV_V<"int_riscv_vfrsqrte7", "PseudoVFRSQRTE7", AllFloatVectors>;
|
||||
defm "" : VPatUnaryV_V<"int_riscv_vfrsqrt7", "PseudoVFRSQRT7", AllFloatVectors>;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// 14.10. Vector Floating-Point Reciprocal Estimate Instruction
|
||||
//===----------------------------------------------------------------------===//
|
||||
defm "" : VPatUnaryV_V<"int_riscv_vfrece7", "PseudoVFRECE7", AllFloatVectors>;
|
||||
defm "" : VPatUnaryV_V<"int_riscv_vfrec7", "PseudoVFREC7", AllFloatVectors>;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// 14.11. Vector Floating-Point Min/Max Instructions
|
||||
|
46
test/CodeGen/RISCV/rvv/cleanup-vsetivli.mir
Normal file
46
test/CodeGen/RISCV/rvv/cleanup-vsetivli.mir
Normal file
@ -0,0 +1,46 @@
|
||||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc %s -mtriple=riscv64 -run-pass=riscv-cleanup-vsetvli -o - | FileCheck %s
|
||||
|
||||
# Make sure we don't combine these VSET{I}VLIs in the cleanup pass. We could not
|
||||
# differentiate AVL values if the opcode of the previous one is different from
|
||||
# current one.
|
||||
|
||||
--- |
|
||||
; ModuleID = '../llvm/test/CodeGen/RISCV/rvv/add-vsetivli.ll'
|
||||
source_filename = "../llvm/test/CodeGen/RISCV/rvv/add-vsetivli.ll"
|
||||
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n64-S128"
|
||||
target triple = "riscv64"
|
||||
|
||||
define void @cleanup_vsetivli() #0 {
|
||||
ret void
|
||||
}
|
||||
|
||||
attributes #0 = { "target-features"="+experimental-v" }
|
||||
|
||||
...
|
||||
---
|
||||
name: cleanup_vsetivli
|
||||
alignment: 4
|
||||
tracksRegLiveness: true
|
||||
registers:
|
||||
- { id: 0, class: gpr }
|
||||
frameInfo:
|
||||
maxAlignment: 1
|
||||
machineFunctionInfo: {}
|
||||
body: |
|
||||
bb.0 (%ir-block.0):
|
||||
; CHECK-LABEL: name: cleanup_vsetivli
|
||||
; CHECK: dead %0:gpr = PseudoVSETVLI $x0, 12, implicit-def $vl, implicit-def $vtype
|
||||
; CHECK: dead %1:gpr = PseudoVSETIVLI 5, 12, implicit-def $vl, implicit-def $vtype
|
||||
; CHECK: dead %3:gpr = PseudoVSETVLI $x0, 12, implicit-def $vl, implicit-def $vtype
|
||||
; CHECK: dead %5:gpr = PseudoVSETIVLI 5, 12, implicit-def $vl, implicit-def $vtype
|
||||
; CHECK: PseudoRET
|
||||
dead %0:gpr = PseudoVSETVLI $x0, 12, implicit-def $vl, implicit-def $vtype
|
||||
dead %1:gpr = PseudoVSETIVLI 5, 12, implicit-def $vl, implicit-def $vtype
|
||||
dead %2:gpr = PseudoVSETIVLI 5, 12, implicit-def $vl, implicit-def $vtype
|
||||
dead %3:gpr = PseudoVSETVLI $x0, 12, implicit-def $vl, implicit-def $vtype
|
||||
dead %4:gpr = PseudoVSETVLI $x0, 12, implicit-def $vl, implicit-def $vtype
|
||||
dead %5:gpr = PseudoVSETIVLI 5, 12, implicit-def $vl, implicit-def $vtype
|
||||
PseudoRET
|
||||
|
||||
...
|
@ -16,8 +16,7 @@ define void @test_vsetvli_e64mf8(i32 %avl) nounwind {
|
||||
define void @test_vsetvli_e8mf2_zero_avl() nounwind {
|
||||
; CHECK-LABEL: test_vsetvli_e8mf2_zero_avl:
|
||||
; CHECK: # %bb.0:
|
||||
; CHECK-NEXT: mv a0, zero
|
||||
; CHECK-NEXT: vsetvli a0, a0, e8,mf2,ta,mu
|
||||
; CHECK-NEXT: vsetivli a0, 0, e8,mf2,ta,mu
|
||||
; CHECK-NEXT: ret
|
||||
call i32 @llvm.riscv.vsetvli.i32(i32 0, i32 0, i32 7)
|
||||
ret void
|
||||
|
@ -25,8 +25,7 @@ define void @test_vsetvli_e16mf4(i64 %avl) nounwind {
|
||||
define void @test_vsetvli_e32mf8_zero_avl() nounwind {
|
||||
; CHECK-LABEL: test_vsetvli_e32mf8_zero_avl:
|
||||
; CHECK: # %bb.0:
|
||||
; CHECK-NEXT: mv a0, zero
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf4,ta,mu
|
||||
; CHECK-NEXT: vsetivli a0, 0, e16,mf4,ta,mu
|
||||
; CHECK-NEXT: ret
|
||||
call i64 @llvm.riscv.vsetvli.i64(i64 0, i64 1, i64 6)
|
||||
ret void
|
||||
|
602
test/CodeGen/RISCV/rvv/vfrec7-rv32.ll
Normal file
602
test/CodeGen/RISCV/rvv/vfrec7-rv32.ll
Normal file
@ -0,0 +1,602 @@
|
||||
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
||||
; RUN: llc -mtriple=riscv32 -mattr=+experimental-v,+d,+experimental-zfh -verify-machineinstrs \
|
||||
; RUN: --riscv-no-aliases < %s | FileCheck %s
|
||||
declare <vscale x 1 x half> @llvm.riscv.vfrec7.nxv1f16(
|
||||
<vscale x 1 x half>,
|
||||
i32);
|
||||
|
||||
define <vscale x 1 x half> @intrinsic_vfrec7_v_nxv1f16_nxv1f16(<vscale x 1 x half> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_v_nxv1f16_nxv1f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf4,ta,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x half> @llvm.riscv.vfrec7.nxv1f16(
|
||||
<vscale x 1 x half> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 1 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x half> @llvm.riscv.vfrec7.mask.nxv1f16(
|
||||
<vscale x 1 x half>,
|
||||
<vscale x 1 x half>,
|
||||
<vscale x 1 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 1 x half> @intrinsic_vfrec7_mask_v_nxv1f16_nxv1f16(<vscale x 1 x i1> %0, <vscale x 1 x half> %1, <vscale x 1 x half> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_mask_v_nxv1f16_nxv1f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf4,tu,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x half> @llvm.riscv.vfrec7.mask.nxv1f16(
|
||||
<vscale x 1 x half> %1,
|
||||
<vscale x 1 x half> %2,
|
||||
<vscale x 1 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 1 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x half> @llvm.riscv.vfrec7.nxv2f16(
|
||||
<vscale x 2 x half>,
|
||||
i32);
|
||||
|
||||
define <vscale x 2 x half> @intrinsic_vfrec7_v_nxv2f16_nxv2f16(<vscale x 2 x half> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_v_nxv2f16_nxv2f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf2,ta,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x half> @llvm.riscv.vfrec7.nxv2f16(
|
||||
<vscale x 2 x half> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 2 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x half> @llvm.riscv.vfrec7.mask.nxv2f16(
|
||||
<vscale x 2 x half>,
|
||||
<vscale x 2 x half>,
|
||||
<vscale x 2 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 2 x half> @intrinsic_vfrec7_mask_v_nxv2f16_nxv2f16(<vscale x 2 x i1> %0, <vscale x 2 x half> %1, <vscale x 2 x half> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_mask_v_nxv2f16_nxv2f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf2,tu,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x half> @llvm.riscv.vfrec7.mask.nxv2f16(
|
||||
<vscale x 2 x half> %1,
|
||||
<vscale x 2 x half> %2,
|
||||
<vscale x 2 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 2 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x half> @llvm.riscv.vfrec7.nxv4f16(
|
||||
<vscale x 4 x half>,
|
||||
i32);
|
||||
|
||||
define <vscale x 4 x half> @intrinsic_vfrec7_v_nxv4f16_nxv4f16(<vscale x 4 x half> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_v_nxv4f16_nxv4f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m1,ta,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x half> @llvm.riscv.vfrec7.nxv4f16(
|
||||
<vscale x 4 x half> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 4 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x half> @llvm.riscv.vfrec7.mask.nxv4f16(
|
||||
<vscale x 4 x half>,
|
||||
<vscale x 4 x half>,
|
||||
<vscale x 4 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 4 x half> @intrinsic_vfrec7_mask_v_nxv4f16_nxv4f16(<vscale x 4 x i1> %0, <vscale x 4 x half> %1, <vscale x 4 x half> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_mask_v_nxv4f16_nxv4f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m1,tu,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x half> @llvm.riscv.vfrec7.mask.nxv4f16(
|
||||
<vscale x 4 x half> %1,
|
||||
<vscale x 4 x half> %2,
|
||||
<vscale x 4 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 4 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x half> @llvm.riscv.vfrec7.nxv8f16(
|
||||
<vscale x 8 x half>,
|
||||
i32);
|
||||
|
||||
define <vscale x 8 x half> @intrinsic_vfrec7_v_nxv8f16_nxv8f16(<vscale x 8 x half> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_v_nxv8f16_nxv8f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m2,ta,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x half> @llvm.riscv.vfrec7.nxv8f16(
|
||||
<vscale x 8 x half> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 8 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x half> @llvm.riscv.vfrec7.mask.nxv8f16(
|
||||
<vscale x 8 x half>,
|
||||
<vscale x 8 x half>,
|
||||
<vscale x 8 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 8 x half> @intrinsic_vfrec7_mask_v_nxv8f16_nxv8f16(<vscale x 8 x i1> %0, <vscale x 8 x half> %1, <vscale x 8 x half> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_mask_v_nxv8f16_nxv8f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m2,tu,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v10, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x half> @llvm.riscv.vfrec7.mask.nxv8f16(
|
||||
<vscale x 8 x half> %1,
|
||||
<vscale x 8 x half> %2,
|
||||
<vscale x 8 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 8 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x half> @llvm.riscv.vfrec7.nxv16f16(
|
||||
<vscale x 16 x half>,
|
||||
i32);
|
||||
|
||||
define <vscale x 16 x half> @intrinsic_vfrec7_v_nxv16f16_nxv16f16(<vscale x 16 x half> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_v_nxv16f16_nxv16f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m4,ta,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x half> @llvm.riscv.vfrec7.nxv16f16(
|
||||
<vscale x 16 x half> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 16 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x half> @llvm.riscv.vfrec7.mask.nxv16f16(
|
||||
<vscale x 16 x half>,
|
||||
<vscale x 16 x half>,
|
||||
<vscale x 16 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 16 x half> @intrinsic_vfrec7_mask_v_nxv16f16_nxv16f16(<vscale x 16 x i1> %0, <vscale x 16 x half> %1, <vscale x 16 x half> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_mask_v_nxv16f16_nxv16f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m4,tu,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v12, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x half> @llvm.riscv.vfrec7.mask.nxv16f16(
|
||||
<vscale x 16 x half> %1,
|
||||
<vscale x 16 x half> %2,
|
||||
<vscale x 16 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 16 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 32 x half> @llvm.riscv.vfrec7.nxv32f16(
|
||||
<vscale x 32 x half>,
|
||||
i32);
|
||||
|
||||
define <vscale x 32 x half> @intrinsic_vfrec7_v_nxv32f16_nxv32f16(<vscale x 32 x half> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_v_nxv32f16_nxv32f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m8,ta,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 32 x half> @llvm.riscv.vfrec7.nxv32f16(
|
||||
<vscale x 32 x half> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 32 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 32 x half> @llvm.riscv.vfrec7.mask.nxv32f16(
|
||||
<vscale x 32 x half>,
|
||||
<vscale x 32 x half>,
|
||||
<vscale x 32 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 32 x half> @intrinsic_vfrec7_mask_v_nxv32f16_nxv32f16(<vscale x 32 x i1> %0, <vscale x 32 x half> %1, <vscale x 32 x half> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_mask_v_nxv32f16_nxv32f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m8,tu,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v16, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 32 x half> @llvm.riscv.vfrec7.mask.nxv32f16(
|
||||
<vscale x 32 x half> %1,
|
||||
<vscale x 32 x half> %2,
|
||||
<vscale x 32 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 32 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x float> @llvm.riscv.vfrec7.nxv1f32(
|
||||
<vscale x 1 x float>,
|
||||
i32);
|
||||
|
||||
define <vscale x 1 x float> @intrinsic_vfrec7_v_nxv1f32_nxv1f32(<vscale x 1 x float> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_v_nxv1f32_nxv1f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,mf2,ta,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x float> @llvm.riscv.vfrec7.nxv1f32(
|
||||
<vscale x 1 x float> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 1 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x float> @llvm.riscv.vfrec7.mask.nxv1f32(
|
||||
<vscale x 1 x float>,
|
||||
<vscale x 1 x float>,
|
||||
<vscale x 1 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 1 x float> @intrinsic_vfrec7_mask_v_nxv1f32_nxv1f32(<vscale x 1 x i1> %0, <vscale x 1 x float> %1, <vscale x 1 x float> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_mask_v_nxv1f32_nxv1f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,mf2,tu,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x float> @llvm.riscv.vfrec7.mask.nxv1f32(
|
||||
<vscale x 1 x float> %1,
|
||||
<vscale x 1 x float> %2,
|
||||
<vscale x 1 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 1 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x float> @llvm.riscv.vfrec7.nxv2f32(
|
||||
<vscale x 2 x float>,
|
||||
i32);
|
||||
|
||||
define <vscale x 2 x float> @intrinsic_vfrec7_v_nxv2f32_nxv2f32(<vscale x 2 x float> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_v_nxv2f32_nxv2f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m1,ta,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x float> @llvm.riscv.vfrec7.nxv2f32(
|
||||
<vscale x 2 x float> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 2 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x float> @llvm.riscv.vfrec7.mask.nxv2f32(
|
||||
<vscale x 2 x float>,
|
||||
<vscale x 2 x float>,
|
||||
<vscale x 2 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 2 x float> @intrinsic_vfrec7_mask_v_nxv2f32_nxv2f32(<vscale x 2 x i1> %0, <vscale x 2 x float> %1, <vscale x 2 x float> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_mask_v_nxv2f32_nxv2f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m1,tu,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x float> @llvm.riscv.vfrec7.mask.nxv2f32(
|
||||
<vscale x 2 x float> %1,
|
||||
<vscale x 2 x float> %2,
|
||||
<vscale x 2 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 2 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x float> @llvm.riscv.vfrec7.nxv4f32(
|
||||
<vscale x 4 x float>,
|
||||
i32);
|
||||
|
||||
define <vscale x 4 x float> @intrinsic_vfrec7_v_nxv4f32_nxv4f32(<vscale x 4 x float> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_v_nxv4f32_nxv4f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m2,ta,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x float> @llvm.riscv.vfrec7.nxv4f32(
|
||||
<vscale x 4 x float> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 4 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x float> @llvm.riscv.vfrec7.mask.nxv4f32(
|
||||
<vscale x 4 x float>,
|
||||
<vscale x 4 x float>,
|
||||
<vscale x 4 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 4 x float> @intrinsic_vfrec7_mask_v_nxv4f32_nxv4f32(<vscale x 4 x i1> %0, <vscale x 4 x float> %1, <vscale x 4 x float> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_mask_v_nxv4f32_nxv4f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m2,tu,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v10, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x float> @llvm.riscv.vfrec7.mask.nxv4f32(
|
||||
<vscale x 4 x float> %1,
|
||||
<vscale x 4 x float> %2,
|
||||
<vscale x 4 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 4 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x float> @llvm.riscv.vfrec7.nxv8f32(
|
||||
<vscale x 8 x float>,
|
||||
i32);
|
||||
|
||||
define <vscale x 8 x float> @intrinsic_vfrec7_v_nxv8f32_nxv8f32(<vscale x 8 x float> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_v_nxv8f32_nxv8f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m4,ta,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x float> @llvm.riscv.vfrec7.nxv8f32(
|
||||
<vscale x 8 x float> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 8 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x float> @llvm.riscv.vfrec7.mask.nxv8f32(
|
||||
<vscale x 8 x float>,
|
||||
<vscale x 8 x float>,
|
||||
<vscale x 8 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 8 x float> @intrinsic_vfrec7_mask_v_nxv8f32_nxv8f32(<vscale x 8 x i1> %0, <vscale x 8 x float> %1, <vscale x 8 x float> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_mask_v_nxv8f32_nxv8f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m4,tu,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v12, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x float> @llvm.riscv.vfrec7.mask.nxv8f32(
|
||||
<vscale x 8 x float> %1,
|
||||
<vscale x 8 x float> %2,
|
||||
<vscale x 8 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 8 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x float> @llvm.riscv.vfrec7.nxv16f32(
|
||||
<vscale x 16 x float>,
|
||||
i32);
|
||||
|
||||
define <vscale x 16 x float> @intrinsic_vfrec7_v_nxv16f32_nxv16f32(<vscale x 16 x float> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_v_nxv16f32_nxv16f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m8,ta,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x float> @llvm.riscv.vfrec7.nxv16f32(
|
||||
<vscale x 16 x float> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 16 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x float> @llvm.riscv.vfrec7.mask.nxv16f32(
|
||||
<vscale x 16 x float>,
|
||||
<vscale x 16 x float>,
|
||||
<vscale x 16 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 16 x float> @intrinsic_vfrec7_mask_v_nxv16f32_nxv16f32(<vscale x 16 x i1> %0, <vscale x 16 x float> %1, <vscale x 16 x float> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_mask_v_nxv16f32_nxv16f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m8,tu,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v16, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x float> @llvm.riscv.vfrec7.mask.nxv16f32(
|
||||
<vscale x 16 x float> %1,
|
||||
<vscale x 16 x float> %2,
|
||||
<vscale x 16 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 16 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x double> @llvm.riscv.vfrec7.nxv1f64(
|
||||
<vscale x 1 x double>,
|
||||
i32);
|
||||
|
||||
define <vscale x 1 x double> @intrinsic_vfrec7_v_nxv1f64_nxv1f64(<vscale x 1 x double> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_v_nxv1f64_nxv1f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m1,ta,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x double> @llvm.riscv.vfrec7.nxv1f64(
|
||||
<vscale x 1 x double> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 1 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x double> @llvm.riscv.vfrec7.mask.nxv1f64(
|
||||
<vscale x 1 x double>,
|
||||
<vscale x 1 x double>,
|
||||
<vscale x 1 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 1 x double> @intrinsic_vfrec7_mask_v_nxv1f64_nxv1f64(<vscale x 1 x i1> %0, <vscale x 1 x double> %1, <vscale x 1 x double> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_mask_v_nxv1f64_nxv1f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m1,tu,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x double> @llvm.riscv.vfrec7.mask.nxv1f64(
|
||||
<vscale x 1 x double> %1,
|
||||
<vscale x 1 x double> %2,
|
||||
<vscale x 1 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 1 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x double> @llvm.riscv.vfrec7.nxv2f64(
|
||||
<vscale x 2 x double>,
|
||||
i32);
|
||||
|
||||
define <vscale x 2 x double> @intrinsic_vfrec7_v_nxv2f64_nxv2f64(<vscale x 2 x double> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_v_nxv2f64_nxv2f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m2,ta,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x double> @llvm.riscv.vfrec7.nxv2f64(
|
||||
<vscale x 2 x double> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 2 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x double> @llvm.riscv.vfrec7.mask.nxv2f64(
|
||||
<vscale x 2 x double>,
|
||||
<vscale x 2 x double>,
|
||||
<vscale x 2 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 2 x double> @intrinsic_vfrec7_mask_v_nxv2f64_nxv2f64(<vscale x 2 x i1> %0, <vscale x 2 x double> %1, <vscale x 2 x double> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_mask_v_nxv2f64_nxv2f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m2,tu,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v10, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x double> @llvm.riscv.vfrec7.mask.nxv2f64(
|
||||
<vscale x 2 x double> %1,
|
||||
<vscale x 2 x double> %2,
|
||||
<vscale x 2 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 2 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x double> @llvm.riscv.vfrec7.nxv4f64(
|
||||
<vscale x 4 x double>,
|
||||
i32);
|
||||
|
||||
define <vscale x 4 x double> @intrinsic_vfrec7_v_nxv4f64_nxv4f64(<vscale x 4 x double> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_v_nxv4f64_nxv4f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m4,ta,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x double> @llvm.riscv.vfrec7.nxv4f64(
|
||||
<vscale x 4 x double> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 4 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x double> @llvm.riscv.vfrec7.mask.nxv4f64(
|
||||
<vscale x 4 x double>,
|
||||
<vscale x 4 x double>,
|
||||
<vscale x 4 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 4 x double> @intrinsic_vfrec7_mask_v_nxv4f64_nxv4f64(<vscale x 4 x i1> %0, <vscale x 4 x double> %1, <vscale x 4 x double> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_mask_v_nxv4f64_nxv4f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m4,tu,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v12, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x double> @llvm.riscv.vfrec7.mask.nxv4f64(
|
||||
<vscale x 4 x double> %1,
|
||||
<vscale x 4 x double> %2,
|
||||
<vscale x 4 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 4 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x double> @llvm.riscv.vfrec7.nxv8f64(
|
||||
<vscale x 8 x double>,
|
||||
i32);
|
||||
|
||||
define <vscale x 8 x double> @intrinsic_vfrec7_v_nxv8f64_nxv8f64(<vscale x 8 x double> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_v_nxv8f64_nxv8f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m8,ta,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x double> @llvm.riscv.vfrec7.nxv8f64(
|
||||
<vscale x 8 x double> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 8 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x double> @llvm.riscv.vfrec7.mask.nxv8f64(
|
||||
<vscale x 8 x double>,
|
||||
<vscale x 8 x double>,
|
||||
<vscale x 8 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 8 x double> @intrinsic_vfrec7_mask_v_nxv8f64_nxv8f64(<vscale x 8 x i1> %0, <vscale x 8 x double> %1, <vscale x 8 x double> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_mask_v_nxv8f64_nxv8f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m8,tu,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v16, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x double> @llvm.riscv.vfrec7.mask.nxv8f64(
|
||||
<vscale x 8 x double> %1,
|
||||
<vscale x 8 x double> %2,
|
||||
<vscale x 8 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 8 x double> %a
|
||||
}
|
602
test/CodeGen/RISCV/rvv/vfrec7-rv64.ll
Normal file
602
test/CodeGen/RISCV/rvv/vfrec7-rv64.ll
Normal file
@ -0,0 +1,602 @@
|
||||
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
||||
; RUN: llc -mtriple=riscv64 -mattr=+experimental-v,+d,+experimental-zfh -verify-machineinstrs \
|
||||
; RUN: --riscv-no-aliases < %s | FileCheck %s
|
||||
declare <vscale x 1 x half> @llvm.riscv.vfrec7.nxv1f16(
|
||||
<vscale x 1 x half>,
|
||||
i64);
|
||||
|
||||
define <vscale x 1 x half> @intrinsic_vfrec7_v_nxv1f16_nxv1f16(<vscale x 1 x half> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_v_nxv1f16_nxv1f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf4,ta,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x half> @llvm.riscv.vfrec7.nxv1f16(
|
||||
<vscale x 1 x half> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 1 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x half> @llvm.riscv.vfrec7.mask.nxv1f16(
|
||||
<vscale x 1 x half>,
|
||||
<vscale x 1 x half>,
|
||||
<vscale x 1 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 1 x half> @intrinsic_vfrec7_mask_v_nxv1f16_nxv1f16(<vscale x 1 x i1> %0, <vscale x 1 x half> %1, <vscale x 1 x half> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_mask_v_nxv1f16_nxv1f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf4,tu,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x half> @llvm.riscv.vfrec7.mask.nxv1f16(
|
||||
<vscale x 1 x half> %1,
|
||||
<vscale x 1 x half> %2,
|
||||
<vscale x 1 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 1 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x half> @llvm.riscv.vfrec7.nxv2f16(
|
||||
<vscale x 2 x half>,
|
||||
i64);
|
||||
|
||||
define <vscale x 2 x half> @intrinsic_vfrec7_v_nxv2f16_nxv2f16(<vscale x 2 x half> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_v_nxv2f16_nxv2f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf2,ta,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x half> @llvm.riscv.vfrec7.nxv2f16(
|
||||
<vscale x 2 x half> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 2 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x half> @llvm.riscv.vfrec7.mask.nxv2f16(
|
||||
<vscale x 2 x half>,
|
||||
<vscale x 2 x half>,
|
||||
<vscale x 2 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 2 x half> @intrinsic_vfrec7_mask_v_nxv2f16_nxv2f16(<vscale x 2 x i1> %0, <vscale x 2 x half> %1, <vscale x 2 x half> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_mask_v_nxv2f16_nxv2f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf2,tu,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x half> @llvm.riscv.vfrec7.mask.nxv2f16(
|
||||
<vscale x 2 x half> %1,
|
||||
<vscale x 2 x half> %2,
|
||||
<vscale x 2 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 2 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x half> @llvm.riscv.vfrec7.nxv4f16(
|
||||
<vscale x 4 x half>,
|
||||
i64);
|
||||
|
||||
define <vscale x 4 x half> @intrinsic_vfrec7_v_nxv4f16_nxv4f16(<vscale x 4 x half> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_v_nxv4f16_nxv4f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m1,ta,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x half> @llvm.riscv.vfrec7.nxv4f16(
|
||||
<vscale x 4 x half> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 4 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x half> @llvm.riscv.vfrec7.mask.nxv4f16(
|
||||
<vscale x 4 x half>,
|
||||
<vscale x 4 x half>,
|
||||
<vscale x 4 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 4 x half> @intrinsic_vfrec7_mask_v_nxv4f16_nxv4f16(<vscale x 4 x i1> %0, <vscale x 4 x half> %1, <vscale x 4 x half> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_mask_v_nxv4f16_nxv4f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m1,tu,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x half> @llvm.riscv.vfrec7.mask.nxv4f16(
|
||||
<vscale x 4 x half> %1,
|
||||
<vscale x 4 x half> %2,
|
||||
<vscale x 4 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 4 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x half> @llvm.riscv.vfrec7.nxv8f16(
|
||||
<vscale x 8 x half>,
|
||||
i64);
|
||||
|
||||
define <vscale x 8 x half> @intrinsic_vfrec7_v_nxv8f16_nxv8f16(<vscale x 8 x half> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_v_nxv8f16_nxv8f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m2,ta,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x half> @llvm.riscv.vfrec7.nxv8f16(
|
||||
<vscale x 8 x half> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 8 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x half> @llvm.riscv.vfrec7.mask.nxv8f16(
|
||||
<vscale x 8 x half>,
|
||||
<vscale x 8 x half>,
|
||||
<vscale x 8 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 8 x half> @intrinsic_vfrec7_mask_v_nxv8f16_nxv8f16(<vscale x 8 x i1> %0, <vscale x 8 x half> %1, <vscale x 8 x half> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_mask_v_nxv8f16_nxv8f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m2,tu,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v10, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x half> @llvm.riscv.vfrec7.mask.nxv8f16(
|
||||
<vscale x 8 x half> %1,
|
||||
<vscale x 8 x half> %2,
|
||||
<vscale x 8 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 8 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x half> @llvm.riscv.vfrec7.nxv16f16(
|
||||
<vscale x 16 x half>,
|
||||
i64);
|
||||
|
||||
define <vscale x 16 x half> @intrinsic_vfrec7_v_nxv16f16_nxv16f16(<vscale x 16 x half> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_v_nxv16f16_nxv16f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m4,ta,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x half> @llvm.riscv.vfrec7.nxv16f16(
|
||||
<vscale x 16 x half> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 16 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x half> @llvm.riscv.vfrec7.mask.nxv16f16(
|
||||
<vscale x 16 x half>,
|
||||
<vscale x 16 x half>,
|
||||
<vscale x 16 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 16 x half> @intrinsic_vfrec7_mask_v_nxv16f16_nxv16f16(<vscale x 16 x i1> %0, <vscale x 16 x half> %1, <vscale x 16 x half> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_mask_v_nxv16f16_nxv16f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m4,tu,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v12, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x half> @llvm.riscv.vfrec7.mask.nxv16f16(
|
||||
<vscale x 16 x half> %1,
|
||||
<vscale x 16 x half> %2,
|
||||
<vscale x 16 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 16 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 32 x half> @llvm.riscv.vfrec7.nxv32f16(
|
||||
<vscale x 32 x half>,
|
||||
i64);
|
||||
|
||||
define <vscale x 32 x half> @intrinsic_vfrec7_v_nxv32f16_nxv32f16(<vscale x 32 x half> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_v_nxv32f16_nxv32f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m8,ta,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 32 x half> @llvm.riscv.vfrec7.nxv32f16(
|
||||
<vscale x 32 x half> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 32 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 32 x half> @llvm.riscv.vfrec7.mask.nxv32f16(
|
||||
<vscale x 32 x half>,
|
||||
<vscale x 32 x half>,
|
||||
<vscale x 32 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 32 x half> @intrinsic_vfrec7_mask_v_nxv32f16_nxv32f16(<vscale x 32 x i1> %0, <vscale x 32 x half> %1, <vscale x 32 x half> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_mask_v_nxv32f16_nxv32f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m8,tu,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v16, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 32 x half> @llvm.riscv.vfrec7.mask.nxv32f16(
|
||||
<vscale x 32 x half> %1,
|
||||
<vscale x 32 x half> %2,
|
||||
<vscale x 32 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 32 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x float> @llvm.riscv.vfrec7.nxv1f32(
|
||||
<vscale x 1 x float>,
|
||||
i64);
|
||||
|
||||
define <vscale x 1 x float> @intrinsic_vfrec7_v_nxv1f32_nxv1f32(<vscale x 1 x float> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_v_nxv1f32_nxv1f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,mf2,ta,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x float> @llvm.riscv.vfrec7.nxv1f32(
|
||||
<vscale x 1 x float> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 1 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x float> @llvm.riscv.vfrec7.mask.nxv1f32(
|
||||
<vscale x 1 x float>,
|
||||
<vscale x 1 x float>,
|
||||
<vscale x 1 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 1 x float> @intrinsic_vfrec7_mask_v_nxv1f32_nxv1f32(<vscale x 1 x i1> %0, <vscale x 1 x float> %1, <vscale x 1 x float> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_mask_v_nxv1f32_nxv1f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,mf2,tu,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x float> @llvm.riscv.vfrec7.mask.nxv1f32(
|
||||
<vscale x 1 x float> %1,
|
||||
<vscale x 1 x float> %2,
|
||||
<vscale x 1 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 1 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x float> @llvm.riscv.vfrec7.nxv2f32(
|
||||
<vscale x 2 x float>,
|
||||
i64);
|
||||
|
||||
define <vscale x 2 x float> @intrinsic_vfrec7_v_nxv2f32_nxv2f32(<vscale x 2 x float> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_v_nxv2f32_nxv2f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m1,ta,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x float> @llvm.riscv.vfrec7.nxv2f32(
|
||||
<vscale x 2 x float> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 2 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x float> @llvm.riscv.vfrec7.mask.nxv2f32(
|
||||
<vscale x 2 x float>,
|
||||
<vscale x 2 x float>,
|
||||
<vscale x 2 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 2 x float> @intrinsic_vfrec7_mask_v_nxv2f32_nxv2f32(<vscale x 2 x i1> %0, <vscale x 2 x float> %1, <vscale x 2 x float> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_mask_v_nxv2f32_nxv2f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m1,tu,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x float> @llvm.riscv.vfrec7.mask.nxv2f32(
|
||||
<vscale x 2 x float> %1,
|
||||
<vscale x 2 x float> %2,
|
||||
<vscale x 2 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 2 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x float> @llvm.riscv.vfrec7.nxv4f32(
|
||||
<vscale x 4 x float>,
|
||||
i64);
|
||||
|
||||
define <vscale x 4 x float> @intrinsic_vfrec7_v_nxv4f32_nxv4f32(<vscale x 4 x float> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_v_nxv4f32_nxv4f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m2,ta,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x float> @llvm.riscv.vfrec7.nxv4f32(
|
||||
<vscale x 4 x float> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 4 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x float> @llvm.riscv.vfrec7.mask.nxv4f32(
|
||||
<vscale x 4 x float>,
|
||||
<vscale x 4 x float>,
|
||||
<vscale x 4 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 4 x float> @intrinsic_vfrec7_mask_v_nxv4f32_nxv4f32(<vscale x 4 x i1> %0, <vscale x 4 x float> %1, <vscale x 4 x float> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_mask_v_nxv4f32_nxv4f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m2,tu,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v10, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x float> @llvm.riscv.vfrec7.mask.nxv4f32(
|
||||
<vscale x 4 x float> %1,
|
||||
<vscale x 4 x float> %2,
|
||||
<vscale x 4 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 4 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x float> @llvm.riscv.vfrec7.nxv8f32(
|
||||
<vscale x 8 x float>,
|
||||
i64);
|
||||
|
||||
define <vscale x 8 x float> @intrinsic_vfrec7_v_nxv8f32_nxv8f32(<vscale x 8 x float> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_v_nxv8f32_nxv8f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m4,ta,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x float> @llvm.riscv.vfrec7.nxv8f32(
|
||||
<vscale x 8 x float> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 8 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x float> @llvm.riscv.vfrec7.mask.nxv8f32(
|
||||
<vscale x 8 x float>,
|
||||
<vscale x 8 x float>,
|
||||
<vscale x 8 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 8 x float> @intrinsic_vfrec7_mask_v_nxv8f32_nxv8f32(<vscale x 8 x i1> %0, <vscale x 8 x float> %1, <vscale x 8 x float> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_mask_v_nxv8f32_nxv8f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m4,tu,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v12, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x float> @llvm.riscv.vfrec7.mask.nxv8f32(
|
||||
<vscale x 8 x float> %1,
|
||||
<vscale x 8 x float> %2,
|
||||
<vscale x 8 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 8 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x float> @llvm.riscv.vfrec7.nxv16f32(
|
||||
<vscale x 16 x float>,
|
||||
i64);
|
||||
|
||||
define <vscale x 16 x float> @intrinsic_vfrec7_v_nxv16f32_nxv16f32(<vscale x 16 x float> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_v_nxv16f32_nxv16f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m8,ta,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x float> @llvm.riscv.vfrec7.nxv16f32(
|
||||
<vscale x 16 x float> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 16 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x float> @llvm.riscv.vfrec7.mask.nxv16f32(
|
||||
<vscale x 16 x float>,
|
||||
<vscale x 16 x float>,
|
||||
<vscale x 16 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 16 x float> @intrinsic_vfrec7_mask_v_nxv16f32_nxv16f32(<vscale x 16 x i1> %0, <vscale x 16 x float> %1, <vscale x 16 x float> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_mask_v_nxv16f32_nxv16f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m8,tu,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v16, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x float> @llvm.riscv.vfrec7.mask.nxv16f32(
|
||||
<vscale x 16 x float> %1,
|
||||
<vscale x 16 x float> %2,
|
||||
<vscale x 16 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 16 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x double> @llvm.riscv.vfrec7.nxv1f64(
|
||||
<vscale x 1 x double>,
|
||||
i64);
|
||||
|
||||
define <vscale x 1 x double> @intrinsic_vfrec7_v_nxv1f64_nxv1f64(<vscale x 1 x double> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_v_nxv1f64_nxv1f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m1,ta,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x double> @llvm.riscv.vfrec7.nxv1f64(
|
||||
<vscale x 1 x double> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 1 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x double> @llvm.riscv.vfrec7.mask.nxv1f64(
|
||||
<vscale x 1 x double>,
|
||||
<vscale x 1 x double>,
|
||||
<vscale x 1 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 1 x double> @intrinsic_vfrec7_mask_v_nxv1f64_nxv1f64(<vscale x 1 x i1> %0, <vscale x 1 x double> %1, <vscale x 1 x double> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_mask_v_nxv1f64_nxv1f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m1,tu,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x double> @llvm.riscv.vfrec7.mask.nxv1f64(
|
||||
<vscale x 1 x double> %1,
|
||||
<vscale x 1 x double> %2,
|
||||
<vscale x 1 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 1 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x double> @llvm.riscv.vfrec7.nxv2f64(
|
||||
<vscale x 2 x double>,
|
||||
i64);
|
||||
|
||||
define <vscale x 2 x double> @intrinsic_vfrec7_v_nxv2f64_nxv2f64(<vscale x 2 x double> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_v_nxv2f64_nxv2f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m2,ta,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x double> @llvm.riscv.vfrec7.nxv2f64(
|
||||
<vscale x 2 x double> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 2 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x double> @llvm.riscv.vfrec7.mask.nxv2f64(
|
||||
<vscale x 2 x double>,
|
||||
<vscale x 2 x double>,
|
||||
<vscale x 2 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 2 x double> @intrinsic_vfrec7_mask_v_nxv2f64_nxv2f64(<vscale x 2 x i1> %0, <vscale x 2 x double> %1, <vscale x 2 x double> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_mask_v_nxv2f64_nxv2f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m2,tu,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v10, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x double> @llvm.riscv.vfrec7.mask.nxv2f64(
|
||||
<vscale x 2 x double> %1,
|
||||
<vscale x 2 x double> %2,
|
||||
<vscale x 2 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 2 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x double> @llvm.riscv.vfrec7.nxv4f64(
|
||||
<vscale x 4 x double>,
|
||||
i64);
|
||||
|
||||
define <vscale x 4 x double> @intrinsic_vfrec7_v_nxv4f64_nxv4f64(<vscale x 4 x double> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_v_nxv4f64_nxv4f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m4,ta,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x double> @llvm.riscv.vfrec7.nxv4f64(
|
||||
<vscale x 4 x double> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 4 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x double> @llvm.riscv.vfrec7.mask.nxv4f64(
|
||||
<vscale x 4 x double>,
|
||||
<vscale x 4 x double>,
|
||||
<vscale x 4 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 4 x double> @intrinsic_vfrec7_mask_v_nxv4f64_nxv4f64(<vscale x 4 x i1> %0, <vscale x 4 x double> %1, <vscale x 4 x double> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_mask_v_nxv4f64_nxv4f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m4,tu,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v12, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x double> @llvm.riscv.vfrec7.mask.nxv4f64(
|
||||
<vscale x 4 x double> %1,
|
||||
<vscale x 4 x double> %2,
|
||||
<vscale x 4 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 4 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x double> @llvm.riscv.vfrec7.nxv8f64(
|
||||
<vscale x 8 x double>,
|
||||
i64);
|
||||
|
||||
define <vscale x 8 x double> @intrinsic_vfrec7_v_nxv8f64_nxv8f64(<vscale x 8 x double> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_v_nxv8f64_nxv8f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m8,ta,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x double> @llvm.riscv.vfrec7.nxv8f64(
|
||||
<vscale x 8 x double> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 8 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x double> @llvm.riscv.vfrec7.mask.nxv8f64(
|
||||
<vscale x 8 x double>,
|
||||
<vscale x 8 x double>,
|
||||
<vscale x 8 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 8 x double> @intrinsic_vfrec7_mask_v_nxv8f64_nxv8f64(<vscale x 8 x i1> %0, <vscale x 8 x double> %1, <vscale x 8 x double> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrec7_mask_v_nxv8f64_nxv8f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m8,tu,mu
|
||||
; CHECK-NEXT: vfrec7.v v8, v16, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x double> @llvm.riscv.vfrec7.mask.nxv8f64(
|
||||
<vscale x 8 x double> %1,
|
||||
<vscale x 8 x double> %2,
|
||||
<vscale x 8 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 8 x double> %a
|
||||
}
|
602
test/CodeGen/RISCV/rvv/vfrsqrt7-rv32.ll
Normal file
602
test/CodeGen/RISCV/rvv/vfrsqrt7-rv32.ll
Normal file
@ -0,0 +1,602 @@
|
||||
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
||||
; RUN: llc -mtriple=riscv32 -mattr=+experimental-v,+d,+experimental-zfh -verify-machineinstrs \
|
||||
; RUN: --riscv-no-aliases < %s | FileCheck %s
|
||||
declare <vscale x 1 x half> @llvm.riscv.vfrsqrt7.nxv1f16(
|
||||
<vscale x 1 x half>,
|
||||
i32);
|
||||
|
||||
define <vscale x 1 x half> @intrinsic_vfrsqrt7_v_nxv1f16_nxv1f16(<vscale x 1 x half> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_v_nxv1f16_nxv1f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf4,ta,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x half> @llvm.riscv.vfrsqrt7.nxv1f16(
|
||||
<vscale x 1 x half> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 1 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x half> @llvm.riscv.vfrsqrt7.mask.nxv1f16(
|
||||
<vscale x 1 x half>,
|
||||
<vscale x 1 x half>,
|
||||
<vscale x 1 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 1 x half> @intrinsic_vfrsqrt7_mask_v_nxv1f16_nxv1f16(<vscale x 1 x i1> %0, <vscale x 1 x half> %1, <vscale x 1 x half> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_mask_v_nxv1f16_nxv1f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf4,tu,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x half> @llvm.riscv.vfrsqrt7.mask.nxv1f16(
|
||||
<vscale x 1 x half> %1,
|
||||
<vscale x 1 x half> %2,
|
||||
<vscale x 1 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 1 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x half> @llvm.riscv.vfrsqrt7.nxv2f16(
|
||||
<vscale x 2 x half>,
|
||||
i32);
|
||||
|
||||
define <vscale x 2 x half> @intrinsic_vfrsqrt7_v_nxv2f16_nxv2f16(<vscale x 2 x half> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_v_nxv2f16_nxv2f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf2,ta,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x half> @llvm.riscv.vfrsqrt7.nxv2f16(
|
||||
<vscale x 2 x half> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 2 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x half> @llvm.riscv.vfrsqrt7.mask.nxv2f16(
|
||||
<vscale x 2 x half>,
|
||||
<vscale x 2 x half>,
|
||||
<vscale x 2 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 2 x half> @intrinsic_vfrsqrt7_mask_v_nxv2f16_nxv2f16(<vscale x 2 x i1> %0, <vscale x 2 x half> %1, <vscale x 2 x half> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_mask_v_nxv2f16_nxv2f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf2,tu,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x half> @llvm.riscv.vfrsqrt7.mask.nxv2f16(
|
||||
<vscale x 2 x half> %1,
|
||||
<vscale x 2 x half> %2,
|
||||
<vscale x 2 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 2 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x half> @llvm.riscv.vfrsqrt7.nxv4f16(
|
||||
<vscale x 4 x half>,
|
||||
i32);
|
||||
|
||||
define <vscale x 4 x half> @intrinsic_vfrsqrt7_v_nxv4f16_nxv4f16(<vscale x 4 x half> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_v_nxv4f16_nxv4f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m1,ta,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x half> @llvm.riscv.vfrsqrt7.nxv4f16(
|
||||
<vscale x 4 x half> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 4 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x half> @llvm.riscv.vfrsqrt7.mask.nxv4f16(
|
||||
<vscale x 4 x half>,
|
||||
<vscale x 4 x half>,
|
||||
<vscale x 4 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 4 x half> @intrinsic_vfrsqrt7_mask_v_nxv4f16_nxv4f16(<vscale x 4 x i1> %0, <vscale x 4 x half> %1, <vscale x 4 x half> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_mask_v_nxv4f16_nxv4f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m1,tu,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x half> @llvm.riscv.vfrsqrt7.mask.nxv4f16(
|
||||
<vscale x 4 x half> %1,
|
||||
<vscale x 4 x half> %2,
|
||||
<vscale x 4 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 4 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x half> @llvm.riscv.vfrsqrt7.nxv8f16(
|
||||
<vscale x 8 x half>,
|
||||
i32);
|
||||
|
||||
define <vscale x 8 x half> @intrinsic_vfrsqrt7_v_nxv8f16_nxv8f16(<vscale x 8 x half> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_v_nxv8f16_nxv8f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m2,ta,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x half> @llvm.riscv.vfrsqrt7.nxv8f16(
|
||||
<vscale x 8 x half> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 8 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x half> @llvm.riscv.vfrsqrt7.mask.nxv8f16(
|
||||
<vscale x 8 x half>,
|
||||
<vscale x 8 x half>,
|
||||
<vscale x 8 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 8 x half> @intrinsic_vfrsqrt7_mask_v_nxv8f16_nxv8f16(<vscale x 8 x i1> %0, <vscale x 8 x half> %1, <vscale x 8 x half> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_mask_v_nxv8f16_nxv8f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m2,tu,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v10, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x half> @llvm.riscv.vfrsqrt7.mask.nxv8f16(
|
||||
<vscale x 8 x half> %1,
|
||||
<vscale x 8 x half> %2,
|
||||
<vscale x 8 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 8 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x half> @llvm.riscv.vfrsqrt7.nxv16f16(
|
||||
<vscale x 16 x half>,
|
||||
i32);
|
||||
|
||||
define <vscale x 16 x half> @intrinsic_vfrsqrt7_v_nxv16f16_nxv16f16(<vscale x 16 x half> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_v_nxv16f16_nxv16f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m4,ta,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x half> @llvm.riscv.vfrsqrt7.nxv16f16(
|
||||
<vscale x 16 x half> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 16 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x half> @llvm.riscv.vfrsqrt7.mask.nxv16f16(
|
||||
<vscale x 16 x half>,
|
||||
<vscale x 16 x half>,
|
||||
<vscale x 16 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 16 x half> @intrinsic_vfrsqrt7_mask_v_nxv16f16_nxv16f16(<vscale x 16 x i1> %0, <vscale x 16 x half> %1, <vscale x 16 x half> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_mask_v_nxv16f16_nxv16f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m4,tu,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v12, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x half> @llvm.riscv.vfrsqrt7.mask.nxv16f16(
|
||||
<vscale x 16 x half> %1,
|
||||
<vscale x 16 x half> %2,
|
||||
<vscale x 16 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 16 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 32 x half> @llvm.riscv.vfrsqrt7.nxv32f16(
|
||||
<vscale x 32 x half>,
|
||||
i32);
|
||||
|
||||
define <vscale x 32 x half> @intrinsic_vfrsqrt7_v_nxv32f16_nxv32f16(<vscale x 32 x half> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_v_nxv32f16_nxv32f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m8,ta,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 32 x half> @llvm.riscv.vfrsqrt7.nxv32f16(
|
||||
<vscale x 32 x half> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 32 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 32 x half> @llvm.riscv.vfrsqrt7.mask.nxv32f16(
|
||||
<vscale x 32 x half>,
|
||||
<vscale x 32 x half>,
|
||||
<vscale x 32 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 32 x half> @intrinsic_vfrsqrt7_mask_v_nxv32f16_nxv32f16(<vscale x 32 x i1> %0, <vscale x 32 x half> %1, <vscale x 32 x half> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_mask_v_nxv32f16_nxv32f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m8,tu,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v16, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 32 x half> @llvm.riscv.vfrsqrt7.mask.nxv32f16(
|
||||
<vscale x 32 x half> %1,
|
||||
<vscale x 32 x half> %2,
|
||||
<vscale x 32 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 32 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x float> @llvm.riscv.vfrsqrt7.nxv1f32(
|
||||
<vscale x 1 x float>,
|
||||
i32);
|
||||
|
||||
define <vscale x 1 x float> @intrinsic_vfrsqrt7_v_nxv1f32_nxv1f32(<vscale x 1 x float> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_v_nxv1f32_nxv1f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,mf2,ta,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x float> @llvm.riscv.vfrsqrt7.nxv1f32(
|
||||
<vscale x 1 x float> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 1 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x float> @llvm.riscv.vfrsqrt7.mask.nxv1f32(
|
||||
<vscale x 1 x float>,
|
||||
<vscale x 1 x float>,
|
||||
<vscale x 1 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 1 x float> @intrinsic_vfrsqrt7_mask_v_nxv1f32_nxv1f32(<vscale x 1 x i1> %0, <vscale x 1 x float> %1, <vscale x 1 x float> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_mask_v_nxv1f32_nxv1f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,mf2,tu,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x float> @llvm.riscv.vfrsqrt7.mask.nxv1f32(
|
||||
<vscale x 1 x float> %1,
|
||||
<vscale x 1 x float> %2,
|
||||
<vscale x 1 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 1 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x float> @llvm.riscv.vfrsqrt7.nxv2f32(
|
||||
<vscale x 2 x float>,
|
||||
i32);
|
||||
|
||||
define <vscale x 2 x float> @intrinsic_vfrsqrt7_v_nxv2f32_nxv2f32(<vscale x 2 x float> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_v_nxv2f32_nxv2f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m1,ta,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x float> @llvm.riscv.vfrsqrt7.nxv2f32(
|
||||
<vscale x 2 x float> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 2 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x float> @llvm.riscv.vfrsqrt7.mask.nxv2f32(
|
||||
<vscale x 2 x float>,
|
||||
<vscale x 2 x float>,
|
||||
<vscale x 2 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 2 x float> @intrinsic_vfrsqrt7_mask_v_nxv2f32_nxv2f32(<vscale x 2 x i1> %0, <vscale x 2 x float> %1, <vscale x 2 x float> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_mask_v_nxv2f32_nxv2f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m1,tu,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x float> @llvm.riscv.vfrsqrt7.mask.nxv2f32(
|
||||
<vscale x 2 x float> %1,
|
||||
<vscale x 2 x float> %2,
|
||||
<vscale x 2 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 2 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x float> @llvm.riscv.vfrsqrt7.nxv4f32(
|
||||
<vscale x 4 x float>,
|
||||
i32);
|
||||
|
||||
define <vscale x 4 x float> @intrinsic_vfrsqrt7_v_nxv4f32_nxv4f32(<vscale x 4 x float> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_v_nxv4f32_nxv4f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m2,ta,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x float> @llvm.riscv.vfrsqrt7.nxv4f32(
|
||||
<vscale x 4 x float> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 4 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x float> @llvm.riscv.vfrsqrt7.mask.nxv4f32(
|
||||
<vscale x 4 x float>,
|
||||
<vscale x 4 x float>,
|
||||
<vscale x 4 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 4 x float> @intrinsic_vfrsqrt7_mask_v_nxv4f32_nxv4f32(<vscale x 4 x i1> %0, <vscale x 4 x float> %1, <vscale x 4 x float> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_mask_v_nxv4f32_nxv4f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m2,tu,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v10, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x float> @llvm.riscv.vfrsqrt7.mask.nxv4f32(
|
||||
<vscale x 4 x float> %1,
|
||||
<vscale x 4 x float> %2,
|
||||
<vscale x 4 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 4 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x float> @llvm.riscv.vfrsqrt7.nxv8f32(
|
||||
<vscale x 8 x float>,
|
||||
i32);
|
||||
|
||||
define <vscale x 8 x float> @intrinsic_vfrsqrt7_v_nxv8f32_nxv8f32(<vscale x 8 x float> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_v_nxv8f32_nxv8f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m4,ta,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x float> @llvm.riscv.vfrsqrt7.nxv8f32(
|
||||
<vscale x 8 x float> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 8 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x float> @llvm.riscv.vfrsqrt7.mask.nxv8f32(
|
||||
<vscale x 8 x float>,
|
||||
<vscale x 8 x float>,
|
||||
<vscale x 8 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 8 x float> @intrinsic_vfrsqrt7_mask_v_nxv8f32_nxv8f32(<vscale x 8 x i1> %0, <vscale x 8 x float> %1, <vscale x 8 x float> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_mask_v_nxv8f32_nxv8f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m4,tu,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v12, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x float> @llvm.riscv.vfrsqrt7.mask.nxv8f32(
|
||||
<vscale x 8 x float> %1,
|
||||
<vscale x 8 x float> %2,
|
||||
<vscale x 8 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 8 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x float> @llvm.riscv.vfrsqrt7.nxv16f32(
|
||||
<vscale x 16 x float>,
|
||||
i32);
|
||||
|
||||
define <vscale x 16 x float> @intrinsic_vfrsqrt7_v_nxv16f32_nxv16f32(<vscale x 16 x float> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_v_nxv16f32_nxv16f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m8,ta,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x float> @llvm.riscv.vfrsqrt7.nxv16f32(
|
||||
<vscale x 16 x float> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 16 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x float> @llvm.riscv.vfrsqrt7.mask.nxv16f32(
|
||||
<vscale x 16 x float>,
|
||||
<vscale x 16 x float>,
|
||||
<vscale x 16 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 16 x float> @intrinsic_vfrsqrt7_mask_v_nxv16f32_nxv16f32(<vscale x 16 x i1> %0, <vscale x 16 x float> %1, <vscale x 16 x float> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_mask_v_nxv16f32_nxv16f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m8,tu,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v16, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x float> @llvm.riscv.vfrsqrt7.mask.nxv16f32(
|
||||
<vscale x 16 x float> %1,
|
||||
<vscale x 16 x float> %2,
|
||||
<vscale x 16 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 16 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x double> @llvm.riscv.vfrsqrt7.nxv1f64(
|
||||
<vscale x 1 x double>,
|
||||
i32);
|
||||
|
||||
define <vscale x 1 x double> @intrinsic_vfrsqrt7_v_nxv1f64_nxv1f64(<vscale x 1 x double> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_v_nxv1f64_nxv1f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m1,ta,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x double> @llvm.riscv.vfrsqrt7.nxv1f64(
|
||||
<vscale x 1 x double> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 1 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x double> @llvm.riscv.vfrsqrt7.mask.nxv1f64(
|
||||
<vscale x 1 x double>,
|
||||
<vscale x 1 x double>,
|
||||
<vscale x 1 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 1 x double> @intrinsic_vfrsqrt7_mask_v_nxv1f64_nxv1f64(<vscale x 1 x i1> %0, <vscale x 1 x double> %1, <vscale x 1 x double> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_mask_v_nxv1f64_nxv1f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m1,tu,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x double> @llvm.riscv.vfrsqrt7.mask.nxv1f64(
|
||||
<vscale x 1 x double> %1,
|
||||
<vscale x 1 x double> %2,
|
||||
<vscale x 1 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 1 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x double> @llvm.riscv.vfrsqrt7.nxv2f64(
|
||||
<vscale x 2 x double>,
|
||||
i32);
|
||||
|
||||
define <vscale x 2 x double> @intrinsic_vfrsqrt7_v_nxv2f64_nxv2f64(<vscale x 2 x double> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_v_nxv2f64_nxv2f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m2,ta,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x double> @llvm.riscv.vfrsqrt7.nxv2f64(
|
||||
<vscale x 2 x double> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 2 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x double> @llvm.riscv.vfrsqrt7.mask.nxv2f64(
|
||||
<vscale x 2 x double>,
|
||||
<vscale x 2 x double>,
|
||||
<vscale x 2 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 2 x double> @intrinsic_vfrsqrt7_mask_v_nxv2f64_nxv2f64(<vscale x 2 x i1> %0, <vscale x 2 x double> %1, <vscale x 2 x double> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_mask_v_nxv2f64_nxv2f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m2,tu,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v10, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x double> @llvm.riscv.vfrsqrt7.mask.nxv2f64(
|
||||
<vscale x 2 x double> %1,
|
||||
<vscale x 2 x double> %2,
|
||||
<vscale x 2 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 2 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x double> @llvm.riscv.vfrsqrt7.nxv4f64(
|
||||
<vscale x 4 x double>,
|
||||
i32);
|
||||
|
||||
define <vscale x 4 x double> @intrinsic_vfrsqrt7_v_nxv4f64_nxv4f64(<vscale x 4 x double> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_v_nxv4f64_nxv4f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m4,ta,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x double> @llvm.riscv.vfrsqrt7.nxv4f64(
|
||||
<vscale x 4 x double> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 4 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x double> @llvm.riscv.vfrsqrt7.mask.nxv4f64(
|
||||
<vscale x 4 x double>,
|
||||
<vscale x 4 x double>,
|
||||
<vscale x 4 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 4 x double> @intrinsic_vfrsqrt7_mask_v_nxv4f64_nxv4f64(<vscale x 4 x i1> %0, <vscale x 4 x double> %1, <vscale x 4 x double> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_mask_v_nxv4f64_nxv4f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m4,tu,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v12, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x double> @llvm.riscv.vfrsqrt7.mask.nxv4f64(
|
||||
<vscale x 4 x double> %1,
|
||||
<vscale x 4 x double> %2,
|
||||
<vscale x 4 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 4 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x double> @llvm.riscv.vfrsqrt7.nxv8f64(
|
||||
<vscale x 8 x double>,
|
||||
i32);
|
||||
|
||||
define <vscale x 8 x double> @intrinsic_vfrsqrt7_v_nxv8f64_nxv8f64(<vscale x 8 x double> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_v_nxv8f64_nxv8f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m8,ta,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x double> @llvm.riscv.vfrsqrt7.nxv8f64(
|
||||
<vscale x 8 x double> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 8 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x double> @llvm.riscv.vfrsqrt7.mask.nxv8f64(
|
||||
<vscale x 8 x double>,
|
||||
<vscale x 8 x double>,
|
||||
<vscale x 8 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 8 x double> @intrinsic_vfrsqrt7_mask_v_nxv8f64_nxv8f64(<vscale x 8 x i1> %0, <vscale x 8 x double> %1, <vscale x 8 x double> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_mask_v_nxv8f64_nxv8f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m8,tu,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v16, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x double> @llvm.riscv.vfrsqrt7.mask.nxv8f64(
|
||||
<vscale x 8 x double> %1,
|
||||
<vscale x 8 x double> %2,
|
||||
<vscale x 8 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 8 x double> %a
|
||||
}
|
602
test/CodeGen/RISCV/rvv/vfrsqrt7-rv64.ll
Normal file
602
test/CodeGen/RISCV/rvv/vfrsqrt7-rv64.ll
Normal file
@ -0,0 +1,602 @@
|
||||
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
||||
; RUN: llc -mtriple=riscv64 -mattr=+experimental-v,+d,+experimental-zfh -verify-machineinstrs \
|
||||
; RUN: --riscv-no-aliases < %s | FileCheck %s
|
||||
declare <vscale x 1 x half> @llvm.riscv.vfrsqrt7.nxv1f16(
|
||||
<vscale x 1 x half>,
|
||||
i64);
|
||||
|
||||
define <vscale x 1 x half> @intrinsic_vfrsqrt7_v_nxv1f16_nxv1f16(<vscale x 1 x half> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_v_nxv1f16_nxv1f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf4,ta,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x half> @llvm.riscv.vfrsqrt7.nxv1f16(
|
||||
<vscale x 1 x half> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 1 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x half> @llvm.riscv.vfrsqrt7.mask.nxv1f16(
|
||||
<vscale x 1 x half>,
|
||||
<vscale x 1 x half>,
|
||||
<vscale x 1 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 1 x half> @intrinsic_vfrsqrt7_mask_v_nxv1f16_nxv1f16(<vscale x 1 x i1> %0, <vscale x 1 x half> %1, <vscale x 1 x half> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_mask_v_nxv1f16_nxv1f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf4,tu,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x half> @llvm.riscv.vfrsqrt7.mask.nxv1f16(
|
||||
<vscale x 1 x half> %1,
|
||||
<vscale x 1 x half> %2,
|
||||
<vscale x 1 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 1 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x half> @llvm.riscv.vfrsqrt7.nxv2f16(
|
||||
<vscale x 2 x half>,
|
||||
i64);
|
||||
|
||||
define <vscale x 2 x half> @intrinsic_vfrsqrt7_v_nxv2f16_nxv2f16(<vscale x 2 x half> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_v_nxv2f16_nxv2f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf2,ta,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x half> @llvm.riscv.vfrsqrt7.nxv2f16(
|
||||
<vscale x 2 x half> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 2 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x half> @llvm.riscv.vfrsqrt7.mask.nxv2f16(
|
||||
<vscale x 2 x half>,
|
||||
<vscale x 2 x half>,
|
||||
<vscale x 2 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 2 x half> @intrinsic_vfrsqrt7_mask_v_nxv2f16_nxv2f16(<vscale x 2 x i1> %0, <vscale x 2 x half> %1, <vscale x 2 x half> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_mask_v_nxv2f16_nxv2f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf2,tu,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x half> @llvm.riscv.vfrsqrt7.mask.nxv2f16(
|
||||
<vscale x 2 x half> %1,
|
||||
<vscale x 2 x half> %2,
|
||||
<vscale x 2 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 2 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x half> @llvm.riscv.vfrsqrt7.nxv4f16(
|
||||
<vscale x 4 x half>,
|
||||
i64);
|
||||
|
||||
define <vscale x 4 x half> @intrinsic_vfrsqrt7_v_nxv4f16_nxv4f16(<vscale x 4 x half> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_v_nxv4f16_nxv4f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m1,ta,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x half> @llvm.riscv.vfrsqrt7.nxv4f16(
|
||||
<vscale x 4 x half> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 4 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x half> @llvm.riscv.vfrsqrt7.mask.nxv4f16(
|
||||
<vscale x 4 x half>,
|
||||
<vscale x 4 x half>,
|
||||
<vscale x 4 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 4 x half> @intrinsic_vfrsqrt7_mask_v_nxv4f16_nxv4f16(<vscale x 4 x i1> %0, <vscale x 4 x half> %1, <vscale x 4 x half> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_mask_v_nxv4f16_nxv4f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m1,tu,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x half> @llvm.riscv.vfrsqrt7.mask.nxv4f16(
|
||||
<vscale x 4 x half> %1,
|
||||
<vscale x 4 x half> %2,
|
||||
<vscale x 4 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 4 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x half> @llvm.riscv.vfrsqrt7.nxv8f16(
|
||||
<vscale x 8 x half>,
|
||||
i64);
|
||||
|
||||
define <vscale x 8 x half> @intrinsic_vfrsqrt7_v_nxv8f16_nxv8f16(<vscale x 8 x half> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_v_nxv8f16_nxv8f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m2,ta,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x half> @llvm.riscv.vfrsqrt7.nxv8f16(
|
||||
<vscale x 8 x half> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 8 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x half> @llvm.riscv.vfrsqrt7.mask.nxv8f16(
|
||||
<vscale x 8 x half>,
|
||||
<vscale x 8 x half>,
|
||||
<vscale x 8 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 8 x half> @intrinsic_vfrsqrt7_mask_v_nxv8f16_nxv8f16(<vscale x 8 x i1> %0, <vscale x 8 x half> %1, <vscale x 8 x half> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_mask_v_nxv8f16_nxv8f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m2,tu,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v10, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x half> @llvm.riscv.vfrsqrt7.mask.nxv8f16(
|
||||
<vscale x 8 x half> %1,
|
||||
<vscale x 8 x half> %2,
|
||||
<vscale x 8 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 8 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x half> @llvm.riscv.vfrsqrt7.nxv16f16(
|
||||
<vscale x 16 x half>,
|
||||
i64);
|
||||
|
||||
define <vscale x 16 x half> @intrinsic_vfrsqrt7_v_nxv16f16_nxv16f16(<vscale x 16 x half> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_v_nxv16f16_nxv16f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m4,ta,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x half> @llvm.riscv.vfrsqrt7.nxv16f16(
|
||||
<vscale x 16 x half> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 16 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x half> @llvm.riscv.vfrsqrt7.mask.nxv16f16(
|
||||
<vscale x 16 x half>,
|
||||
<vscale x 16 x half>,
|
||||
<vscale x 16 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 16 x half> @intrinsic_vfrsqrt7_mask_v_nxv16f16_nxv16f16(<vscale x 16 x i1> %0, <vscale x 16 x half> %1, <vscale x 16 x half> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_mask_v_nxv16f16_nxv16f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m4,tu,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v12, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x half> @llvm.riscv.vfrsqrt7.mask.nxv16f16(
|
||||
<vscale x 16 x half> %1,
|
||||
<vscale x 16 x half> %2,
|
||||
<vscale x 16 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 16 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 32 x half> @llvm.riscv.vfrsqrt7.nxv32f16(
|
||||
<vscale x 32 x half>,
|
||||
i64);
|
||||
|
||||
define <vscale x 32 x half> @intrinsic_vfrsqrt7_v_nxv32f16_nxv32f16(<vscale x 32 x half> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_v_nxv32f16_nxv32f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m8,ta,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 32 x half> @llvm.riscv.vfrsqrt7.nxv32f16(
|
||||
<vscale x 32 x half> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 32 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 32 x half> @llvm.riscv.vfrsqrt7.mask.nxv32f16(
|
||||
<vscale x 32 x half>,
|
||||
<vscale x 32 x half>,
|
||||
<vscale x 32 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 32 x half> @intrinsic_vfrsqrt7_mask_v_nxv32f16_nxv32f16(<vscale x 32 x i1> %0, <vscale x 32 x half> %1, <vscale x 32 x half> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_mask_v_nxv32f16_nxv32f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m8,tu,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v16, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 32 x half> @llvm.riscv.vfrsqrt7.mask.nxv32f16(
|
||||
<vscale x 32 x half> %1,
|
||||
<vscale x 32 x half> %2,
|
||||
<vscale x 32 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 32 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x float> @llvm.riscv.vfrsqrt7.nxv1f32(
|
||||
<vscale x 1 x float>,
|
||||
i64);
|
||||
|
||||
define <vscale x 1 x float> @intrinsic_vfrsqrt7_v_nxv1f32_nxv1f32(<vscale x 1 x float> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_v_nxv1f32_nxv1f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,mf2,ta,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x float> @llvm.riscv.vfrsqrt7.nxv1f32(
|
||||
<vscale x 1 x float> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 1 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x float> @llvm.riscv.vfrsqrt7.mask.nxv1f32(
|
||||
<vscale x 1 x float>,
|
||||
<vscale x 1 x float>,
|
||||
<vscale x 1 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 1 x float> @intrinsic_vfrsqrt7_mask_v_nxv1f32_nxv1f32(<vscale x 1 x i1> %0, <vscale x 1 x float> %1, <vscale x 1 x float> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_mask_v_nxv1f32_nxv1f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,mf2,tu,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x float> @llvm.riscv.vfrsqrt7.mask.nxv1f32(
|
||||
<vscale x 1 x float> %1,
|
||||
<vscale x 1 x float> %2,
|
||||
<vscale x 1 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 1 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x float> @llvm.riscv.vfrsqrt7.nxv2f32(
|
||||
<vscale x 2 x float>,
|
||||
i64);
|
||||
|
||||
define <vscale x 2 x float> @intrinsic_vfrsqrt7_v_nxv2f32_nxv2f32(<vscale x 2 x float> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_v_nxv2f32_nxv2f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m1,ta,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x float> @llvm.riscv.vfrsqrt7.nxv2f32(
|
||||
<vscale x 2 x float> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 2 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x float> @llvm.riscv.vfrsqrt7.mask.nxv2f32(
|
||||
<vscale x 2 x float>,
|
||||
<vscale x 2 x float>,
|
||||
<vscale x 2 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 2 x float> @intrinsic_vfrsqrt7_mask_v_nxv2f32_nxv2f32(<vscale x 2 x i1> %0, <vscale x 2 x float> %1, <vscale x 2 x float> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_mask_v_nxv2f32_nxv2f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m1,tu,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x float> @llvm.riscv.vfrsqrt7.mask.nxv2f32(
|
||||
<vscale x 2 x float> %1,
|
||||
<vscale x 2 x float> %2,
|
||||
<vscale x 2 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 2 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x float> @llvm.riscv.vfrsqrt7.nxv4f32(
|
||||
<vscale x 4 x float>,
|
||||
i64);
|
||||
|
||||
define <vscale x 4 x float> @intrinsic_vfrsqrt7_v_nxv4f32_nxv4f32(<vscale x 4 x float> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_v_nxv4f32_nxv4f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m2,ta,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x float> @llvm.riscv.vfrsqrt7.nxv4f32(
|
||||
<vscale x 4 x float> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 4 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x float> @llvm.riscv.vfrsqrt7.mask.nxv4f32(
|
||||
<vscale x 4 x float>,
|
||||
<vscale x 4 x float>,
|
||||
<vscale x 4 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 4 x float> @intrinsic_vfrsqrt7_mask_v_nxv4f32_nxv4f32(<vscale x 4 x i1> %0, <vscale x 4 x float> %1, <vscale x 4 x float> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_mask_v_nxv4f32_nxv4f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m2,tu,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v10, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x float> @llvm.riscv.vfrsqrt7.mask.nxv4f32(
|
||||
<vscale x 4 x float> %1,
|
||||
<vscale x 4 x float> %2,
|
||||
<vscale x 4 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 4 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x float> @llvm.riscv.vfrsqrt7.nxv8f32(
|
||||
<vscale x 8 x float>,
|
||||
i64);
|
||||
|
||||
define <vscale x 8 x float> @intrinsic_vfrsqrt7_v_nxv8f32_nxv8f32(<vscale x 8 x float> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_v_nxv8f32_nxv8f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m4,ta,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x float> @llvm.riscv.vfrsqrt7.nxv8f32(
|
||||
<vscale x 8 x float> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 8 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x float> @llvm.riscv.vfrsqrt7.mask.nxv8f32(
|
||||
<vscale x 8 x float>,
|
||||
<vscale x 8 x float>,
|
||||
<vscale x 8 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 8 x float> @intrinsic_vfrsqrt7_mask_v_nxv8f32_nxv8f32(<vscale x 8 x i1> %0, <vscale x 8 x float> %1, <vscale x 8 x float> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_mask_v_nxv8f32_nxv8f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m4,tu,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v12, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x float> @llvm.riscv.vfrsqrt7.mask.nxv8f32(
|
||||
<vscale x 8 x float> %1,
|
||||
<vscale x 8 x float> %2,
|
||||
<vscale x 8 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 8 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x float> @llvm.riscv.vfrsqrt7.nxv16f32(
|
||||
<vscale x 16 x float>,
|
||||
i64);
|
||||
|
||||
define <vscale x 16 x float> @intrinsic_vfrsqrt7_v_nxv16f32_nxv16f32(<vscale x 16 x float> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_v_nxv16f32_nxv16f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m8,ta,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x float> @llvm.riscv.vfrsqrt7.nxv16f32(
|
||||
<vscale x 16 x float> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 16 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x float> @llvm.riscv.vfrsqrt7.mask.nxv16f32(
|
||||
<vscale x 16 x float>,
|
||||
<vscale x 16 x float>,
|
||||
<vscale x 16 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 16 x float> @intrinsic_vfrsqrt7_mask_v_nxv16f32_nxv16f32(<vscale x 16 x i1> %0, <vscale x 16 x float> %1, <vscale x 16 x float> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_mask_v_nxv16f32_nxv16f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m8,tu,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v16, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x float> @llvm.riscv.vfrsqrt7.mask.nxv16f32(
|
||||
<vscale x 16 x float> %1,
|
||||
<vscale x 16 x float> %2,
|
||||
<vscale x 16 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 16 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x double> @llvm.riscv.vfrsqrt7.nxv1f64(
|
||||
<vscale x 1 x double>,
|
||||
i64);
|
||||
|
||||
define <vscale x 1 x double> @intrinsic_vfrsqrt7_v_nxv1f64_nxv1f64(<vscale x 1 x double> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_v_nxv1f64_nxv1f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m1,ta,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x double> @llvm.riscv.vfrsqrt7.nxv1f64(
|
||||
<vscale x 1 x double> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 1 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x double> @llvm.riscv.vfrsqrt7.mask.nxv1f64(
|
||||
<vscale x 1 x double>,
|
||||
<vscale x 1 x double>,
|
||||
<vscale x 1 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 1 x double> @intrinsic_vfrsqrt7_mask_v_nxv1f64_nxv1f64(<vscale x 1 x i1> %0, <vscale x 1 x double> %1, <vscale x 1 x double> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_mask_v_nxv1f64_nxv1f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m1,tu,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x double> @llvm.riscv.vfrsqrt7.mask.nxv1f64(
|
||||
<vscale x 1 x double> %1,
|
||||
<vscale x 1 x double> %2,
|
||||
<vscale x 1 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 1 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x double> @llvm.riscv.vfrsqrt7.nxv2f64(
|
||||
<vscale x 2 x double>,
|
||||
i64);
|
||||
|
||||
define <vscale x 2 x double> @intrinsic_vfrsqrt7_v_nxv2f64_nxv2f64(<vscale x 2 x double> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_v_nxv2f64_nxv2f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m2,ta,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x double> @llvm.riscv.vfrsqrt7.nxv2f64(
|
||||
<vscale x 2 x double> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 2 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x double> @llvm.riscv.vfrsqrt7.mask.nxv2f64(
|
||||
<vscale x 2 x double>,
|
||||
<vscale x 2 x double>,
|
||||
<vscale x 2 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 2 x double> @intrinsic_vfrsqrt7_mask_v_nxv2f64_nxv2f64(<vscale x 2 x i1> %0, <vscale x 2 x double> %1, <vscale x 2 x double> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_mask_v_nxv2f64_nxv2f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m2,tu,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v10, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x double> @llvm.riscv.vfrsqrt7.mask.nxv2f64(
|
||||
<vscale x 2 x double> %1,
|
||||
<vscale x 2 x double> %2,
|
||||
<vscale x 2 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 2 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x double> @llvm.riscv.vfrsqrt7.nxv4f64(
|
||||
<vscale x 4 x double>,
|
||||
i64);
|
||||
|
||||
define <vscale x 4 x double> @intrinsic_vfrsqrt7_v_nxv4f64_nxv4f64(<vscale x 4 x double> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_v_nxv4f64_nxv4f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m4,ta,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x double> @llvm.riscv.vfrsqrt7.nxv4f64(
|
||||
<vscale x 4 x double> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 4 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x double> @llvm.riscv.vfrsqrt7.mask.nxv4f64(
|
||||
<vscale x 4 x double>,
|
||||
<vscale x 4 x double>,
|
||||
<vscale x 4 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 4 x double> @intrinsic_vfrsqrt7_mask_v_nxv4f64_nxv4f64(<vscale x 4 x i1> %0, <vscale x 4 x double> %1, <vscale x 4 x double> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_mask_v_nxv4f64_nxv4f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m4,tu,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v12, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x double> @llvm.riscv.vfrsqrt7.mask.nxv4f64(
|
||||
<vscale x 4 x double> %1,
|
||||
<vscale x 4 x double> %2,
|
||||
<vscale x 4 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 4 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x double> @llvm.riscv.vfrsqrt7.nxv8f64(
|
||||
<vscale x 8 x double>,
|
||||
i64);
|
||||
|
||||
define <vscale x 8 x double> @intrinsic_vfrsqrt7_v_nxv8f64_nxv8f64(<vscale x 8 x double> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_v_nxv8f64_nxv8f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m8,ta,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x double> @llvm.riscv.vfrsqrt7.nxv8f64(
|
||||
<vscale x 8 x double> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 8 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x double> @llvm.riscv.vfrsqrt7.mask.nxv8f64(
|
||||
<vscale x 8 x double>,
|
||||
<vscale x 8 x double>,
|
||||
<vscale x 8 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 8 x double> @intrinsic_vfrsqrt7_mask_v_nxv8f64_nxv8f64(<vscale x 8 x i1> %0, <vscale x 8 x double> %1, <vscale x 8 x double> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrt7_mask_v_nxv8f64_nxv8f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m8,tu,mu
|
||||
; CHECK-NEXT: vfrsqrt7.v v8, v16, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x double> @llvm.riscv.vfrsqrt7.mask.nxv8f64(
|
||||
<vscale x 8 x double> %1,
|
||||
<vscale x 8 x double> %2,
|
||||
<vscale x 8 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 8 x double> %a
|
||||
}
|
94
test/CodeGen/RISCV/rvv/vle1-rv32.ll
Normal file
94
test/CodeGen/RISCV/rvv/vle1-rv32.ll
Normal file
@ -0,0 +1,94 @@
|
||||
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
||||
; RUN: llc -mtriple=riscv32 -mattr=+experimental-v -verify-machineinstrs \
|
||||
; RUN: --riscv-no-aliases < %s | FileCheck %s
|
||||
|
||||
declare <vscale x 1 x i1> @llvm.riscv.vle1.nxv1i1(<vscale x 1 x i1>*, i32);
|
||||
|
||||
define <vscale x 1 x i1> @intrinsic_vle1_v_nxv1i1(<vscale x 1 x i1>* %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vle1_v_nxv1i1:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a1, a1, e8,mf8,ta,mu
|
||||
; CHECK-NEXT: vle1.v v0, (a0)
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x i1> @llvm.riscv.vle1.nxv1i1(<vscale x 1 x i1>* %0, i32 %1)
|
||||
ret <vscale x 1 x i1> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x i1> @llvm.riscv.vle1.nxv2i1(<vscale x 2 x i1>*, i32);
|
||||
|
||||
define <vscale x 2 x i1> @intrinsic_vle1_v_nxv2i1(<vscale x 2 x i1>* %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vle1_v_nxv2i1:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a1, a1, e8,mf4,ta,mu
|
||||
; CHECK-NEXT: vle1.v v0, (a0)
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x i1> @llvm.riscv.vle1.nxv2i1(<vscale x 2 x i1>* %0, i32 %1)
|
||||
ret <vscale x 2 x i1> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x i1> @llvm.riscv.vle1.nxv4i1(<vscale x 4 x i1>*, i32);
|
||||
|
||||
define <vscale x 4 x i1> @intrinsic_vle1_v_nxv4i1(<vscale x 4 x i1>* %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vle1_v_nxv4i1:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a1, a1, e8,mf2,ta,mu
|
||||
; CHECK-NEXT: vle1.v v0, (a0)
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x i1> @llvm.riscv.vle1.nxv4i1(<vscale x 4 x i1>* %0, i32 %1)
|
||||
ret <vscale x 4 x i1> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x i1> @llvm.riscv.vle1.nxv8i1(<vscale x 8 x i1>*, i32);
|
||||
|
||||
define <vscale x 8 x i1> @intrinsic_vle1_v_nxv8i1(<vscale x 8 x i1>* %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vle1_v_nxv8i1:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a1, a1, e8,m1,ta,mu
|
||||
; CHECK-NEXT: vle1.v v0, (a0)
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x i1> @llvm.riscv.vle1.nxv8i1(<vscale x 8 x i1>* %0, i32 %1)
|
||||
ret <vscale x 8 x i1> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x i1> @llvm.riscv.vle1.nxv16i1(<vscale x 16 x i1>*, i32);
|
||||
|
||||
define <vscale x 16 x i1> @intrinsic_vle1_v_nxv16i1(<vscale x 16 x i1>* %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vle1_v_nxv16i1:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a1, a1, e8,m2,ta,mu
|
||||
; CHECK-NEXT: vle1.v v0, (a0)
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x i1> @llvm.riscv.vle1.nxv16i1(<vscale x 16 x i1>* %0, i32 %1)
|
||||
ret <vscale x 16 x i1> %a
|
||||
}
|
||||
|
||||
declare <vscale x 32 x i1> @llvm.riscv.vle1.nxv32i1(<vscale x 32 x i1>*, i32);
|
||||
|
||||
define <vscale x 32 x i1> @intrinsic_vle1_v_nxv32i1(<vscale x 32 x i1>* %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vle1_v_nxv32i1:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a1, a1, e8,m4,ta,mu
|
||||
; CHECK-NEXT: vle1.v v0, (a0)
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 32 x i1> @llvm.riscv.vle1.nxv32i1(<vscale x 32 x i1>* %0, i32 %1)
|
||||
ret <vscale x 32 x i1> %a
|
||||
}
|
||||
|
||||
declare <vscale x 64 x i1> @llvm.riscv.vle1.nxv64i1(<vscale x 64 x i1>*, i32);
|
||||
|
||||
define <vscale x 64 x i1> @intrinsic_vle1_v_nxv64i1(<vscale x 64 x i1>* %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vle1_v_nxv64i1:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a1, a1, e8,m8,ta,mu
|
||||
; CHECK-NEXT: vle1.v v0, (a0)
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 64 x i1> @llvm.riscv.vle1.nxv64i1(<vscale x 64 x i1>* %0, i32 %1)
|
||||
ret <vscale x 64 x i1> %a
|
||||
}
|
94
test/CodeGen/RISCV/rvv/vle1-rv64.ll
Normal file
94
test/CodeGen/RISCV/rvv/vle1-rv64.ll
Normal file
@ -0,0 +1,94 @@
|
||||
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
||||
; RUN: llc -mtriple=riscv64 -mattr=+experimental-v -verify-machineinstrs \
|
||||
; RUN: --riscv-no-aliases < %s | FileCheck %s
|
||||
|
||||
declare <vscale x 1 x i1> @llvm.riscv.vle1.nxv1i1(<vscale x 1 x i1>*, i64);
|
||||
|
||||
define <vscale x 1 x i1> @intrinsic_vle1_v_nxv1i1(<vscale x 1 x i1>* %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vle1_v_nxv1i1:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a1, a1, e8,mf8,ta,mu
|
||||
; CHECK-NEXT: vle1.v v0, (a0)
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x i1> @llvm.riscv.vle1.nxv1i1(<vscale x 1 x i1>* %0, i64 %1)
|
||||
ret <vscale x 1 x i1> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x i1> @llvm.riscv.vle1.nxv2i1(<vscale x 2 x i1>*, i64);
|
||||
|
||||
define <vscale x 2 x i1> @intrinsic_vle1_v_nxv2i1(<vscale x 2 x i1>* %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vle1_v_nxv2i1:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a1, a1, e8,mf4,ta,mu
|
||||
; CHECK-NEXT: vle1.v v0, (a0)
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x i1> @llvm.riscv.vle1.nxv2i1(<vscale x 2 x i1>* %0, i64 %1)
|
||||
ret <vscale x 2 x i1> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x i1> @llvm.riscv.vle1.nxv4i1(<vscale x 4 x i1>*, i64);
|
||||
|
||||
define <vscale x 4 x i1> @intrinsic_vle1_v_nxv4i1(<vscale x 4 x i1>* %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vle1_v_nxv4i1:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a1, a1, e8,mf2,ta,mu
|
||||
; CHECK-NEXT: vle1.v v0, (a0)
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x i1> @llvm.riscv.vle1.nxv4i1(<vscale x 4 x i1>* %0, i64 %1)
|
||||
ret <vscale x 4 x i1> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x i1> @llvm.riscv.vle1.nxv8i1(<vscale x 8 x i1>*, i64);
|
||||
|
||||
define <vscale x 8 x i1> @intrinsic_vle1_v_nxv8i1(<vscale x 8 x i1>* %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vle1_v_nxv8i1:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a1, a1, e8,m1,ta,mu
|
||||
; CHECK-NEXT: vle1.v v0, (a0)
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x i1> @llvm.riscv.vle1.nxv8i1(<vscale x 8 x i1>* %0, i64 %1)
|
||||
ret <vscale x 8 x i1> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x i1> @llvm.riscv.vle1.nxv16i1(<vscale x 16 x i1>*, i64);
|
||||
|
||||
define <vscale x 16 x i1> @intrinsic_vle1_v_nxv16i1(<vscale x 16 x i1>* %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vle1_v_nxv16i1:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a1, a1, e8,m2,ta,mu
|
||||
; CHECK-NEXT: vle1.v v0, (a0)
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x i1> @llvm.riscv.vle1.nxv16i1(<vscale x 16 x i1>* %0, i64 %1)
|
||||
ret <vscale x 16 x i1> %a
|
||||
}
|
||||
|
||||
declare <vscale x 32 x i1> @llvm.riscv.vle1.nxv32i1(<vscale x 32 x i1>*, i64);
|
||||
|
||||
define <vscale x 32 x i1> @intrinsic_vle1_v_nxv32i1(<vscale x 32 x i1>* %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vle1_v_nxv32i1:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a1, a1, e8,m4,ta,mu
|
||||
; CHECK-NEXT: vle1.v v0, (a0)
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 32 x i1> @llvm.riscv.vle1.nxv32i1(<vscale x 32 x i1>* %0, i64 %1)
|
||||
ret <vscale x 32 x i1> %a
|
||||
}
|
||||
|
||||
declare <vscale x 64 x i1> @llvm.riscv.vle1.nxv64i1(<vscale x 64 x i1>*, i64);
|
||||
|
||||
define <vscale x 64 x i1> @intrinsic_vle1_v_nxv64i1(<vscale x 64 x i1>* %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vle1_v_nxv64i1:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a1, a1, e8,m8,ta,mu
|
||||
; CHECK-NEXT: vle1.v v0, (a0)
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 64 x i1> @llvm.riscv.vle1.nxv64i1(<vscale x 64 x i1>* %0, i64 %1)
|
||||
ret <vscale x 64 x i1> %a
|
||||
}
|
94
test/CodeGen/RISCV/rvv/vse1-rv32.ll
Normal file
94
test/CodeGen/RISCV/rvv/vse1-rv32.ll
Normal file
@ -0,0 +1,94 @@
|
||||
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
||||
; RUN: llc -mtriple=riscv32 -mattr=+experimental-v -verify-machineinstrs \
|
||||
; RUN: --riscv-no-aliases < %s | FileCheck %s
|
||||
|
||||
declare void @llvm.riscv.vse1.nxv1i1(<vscale x 1 x i1>, <vscale x 1 x i1>*, i32);
|
||||
|
||||
define void @intrinsic_vse1_v_nxv1i1(<vscale x 1 x i1> %0, <vscale x 1 x i1>* %1, i32 %2) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vse1_v_nxv1i1:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a1, a1, e8,mf8,ta,mu
|
||||
; CHECK-NEXT: vse1.v v0, (a0)
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
call void @llvm.riscv.vse1.nxv1i1(<vscale x 1 x i1> %0, <vscale x 1 x i1>* %1, i32 %2)
|
||||
ret void
|
||||
}
|
||||
|
||||
declare void @llvm.riscv.vse1.nxv2i1(<vscale x 2 x i1>, <vscale x 2 x i1>*, i32);
|
||||
|
||||
define void @intrinsic_vse1_v_nxv2i1(<vscale x 2 x i1> %0, <vscale x 2 x i1>* %1, i32 %2) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vse1_v_nxv2i1:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a1, a1, e8,mf4,ta,mu
|
||||
; CHECK-NEXT: vse1.v v0, (a0)
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
call void @llvm.riscv.vse1.nxv2i1(<vscale x 2 x i1> %0, <vscale x 2 x i1>* %1, i32 %2)
|
||||
ret void
|
||||
}
|
||||
|
||||
declare void @llvm.riscv.vse1.nxv4i1(<vscale x 4 x i1>, <vscale x 4 x i1>*, i32);
|
||||
|
||||
define void @intrinsic_vse1_v_nxv4i1(<vscale x 4 x i1> %0, <vscale x 4 x i1>* %1, i32 %2) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vse1_v_nxv4i1:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a1, a1, e8,mf2,ta,mu
|
||||
; CHECK-NEXT: vse1.v v0, (a0)
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
call void @llvm.riscv.vse1.nxv4i1(<vscale x 4 x i1> %0, <vscale x 4 x i1>* %1, i32 %2)
|
||||
ret void
|
||||
}
|
||||
|
||||
declare void @llvm.riscv.vse1.nxv8i1(<vscale x 8 x i1>, <vscale x 8 x i1>*, i32);
|
||||
|
||||
define void @intrinsic_vse1_v_nxv8i1(<vscale x 8 x i1> %0, <vscale x 8 x i1>* %1, i32 %2) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vse1_v_nxv8i1:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a1, a1, e8,m1,ta,mu
|
||||
; CHECK-NEXT: vse1.v v0, (a0)
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
call void @llvm.riscv.vse1.nxv8i1(<vscale x 8 x i1> %0, <vscale x 8 x i1>* %1, i32 %2)
|
||||
ret void
|
||||
}
|
||||
|
||||
declare void @llvm.riscv.vse1.nxv16i1(<vscale x 16 x i1>, <vscale x 16 x i1>*, i32);
|
||||
|
||||
define void @intrinsic_vse1_v_nxv16i1(<vscale x 16 x i1> %0, <vscale x 16 x i1>* %1, i32 %2) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vse1_v_nxv16i1:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a1, a1, e8,m2,ta,mu
|
||||
; CHECK-NEXT: vse1.v v0, (a0)
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
call void @llvm.riscv.vse1.nxv16i1(<vscale x 16 x i1> %0, <vscale x 16 x i1>* %1, i32 %2)
|
||||
ret void
|
||||
}
|
||||
|
||||
declare void @llvm.riscv.vse1.nxv32i1(<vscale x 32 x i1>, <vscale x 32 x i1>*, i32);
|
||||
|
||||
define void @intrinsic_vse1_v_nxv32i1(<vscale x 32 x i1> %0, <vscale x 32 x i1>* %1, i32 %2) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vse1_v_nxv32i1:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a1, a1, e8,m4,ta,mu
|
||||
; CHECK-NEXT: vse1.v v0, (a0)
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
call void @llvm.riscv.vse1.nxv32i1(<vscale x 32 x i1> %0, <vscale x 32 x i1>* %1, i32 %2)
|
||||
ret void
|
||||
}
|
||||
|
||||
declare void @llvm.riscv.vse1.nxv64i1(<vscale x 64 x i1>, <vscale x 64 x i1>*, i32);
|
||||
|
||||
define void @intrinsic_vse1_v_nxv64i1(<vscale x 64 x i1> %0, <vscale x 64 x i1>* %1, i32 %2) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vse1_v_nxv64i1:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a1, a1, e8,m8,ta,mu
|
||||
; CHECK-NEXT: vse1.v v0, (a0)
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
call void @llvm.riscv.vse1.nxv64i1(<vscale x 64 x i1> %0, <vscale x 64 x i1>* %1, i32 %2)
|
||||
ret void
|
||||
}
|
94
test/CodeGen/RISCV/rvv/vse1-rv64.ll
Normal file
94
test/CodeGen/RISCV/rvv/vse1-rv64.ll
Normal file
@ -0,0 +1,94 @@
|
||||
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
||||
; RUN: llc -mtriple=riscv64 -mattr=+experimental-v -verify-machineinstrs \
|
||||
; RUN: --riscv-no-aliases < %s | FileCheck %s
|
||||
|
||||
declare void @llvm.riscv.vse1.nxv1i1(<vscale x 1 x i1>, <vscale x 1 x i1>*, i64);
|
||||
|
||||
define void @intrinsic_vse1_v_nxv1i1(<vscale x 1 x i1> %0, <vscale x 1 x i1>* %1, i64 %2) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vse1_v_nxv1i1:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a1, a1, e8,mf8,ta,mu
|
||||
; CHECK-NEXT: vse1.v v0, (a0)
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
call void @llvm.riscv.vse1.nxv1i1(<vscale x 1 x i1> %0, <vscale x 1 x i1>* %1, i64 %2)
|
||||
ret void
|
||||
}
|
||||
|
||||
declare void @llvm.riscv.vse1.nxv2i1(<vscale x 2 x i1>, <vscale x 2 x i1>*, i64);
|
||||
|
||||
define void @intrinsic_vse1_v_nxv2i1(<vscale x 2 x i1> %0, <vscale x 2 x i1>* %1, i64 %2) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vse1_v_nxv2i1:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a1, a1, e8,mf4,ta,mu
|
||||
; CHECK-NEXT: vse1.v v0, (a0)
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
call void @llvm.riscv.vse1.nxv2i1(<vscale x 2 x i1> %0, <vscale x 2 x i1>* %1, i64 %2)
|
||||
ret void
|
||||
}
|
||||
|
||||
declare void @llvm.riscv.vse1.nxv4i1(<vscale x 4 x i1>, <vscale x 4 x i1>*, i64);
|
||||
|
||||
define void @intrinsic_vse1_v_nxv4i1(<vscale x 4 x i1> %0, <vscale x 4 x i1>* %1, i64 %2) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vse1_v_nxv4i1:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a1, a1, e8,mf2,ta,mu
|
||||
; CHECK-NEXT: vse1.v v0, (a0)
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
call void @llvm.riscv.vse1.nxv4i1(<vscale x 4 x i1> %0, <vscale x 4 x i1>* %1, i64 %2)
|
||||
ret void
|
||||
}
|
||||
|
||||
declare void @llvm.riscv.vse1.nxv8i1(<vscale x 8 x i1>, <vscale x 8 x i1>*, i64);
|
||||
|
||||
define void @intrinsic_vse1_v_nxv8i1(<vscale x 8 x i1> %0, <vscale x 8 x i1>* %1, i64 %2) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vse1_v_nxv8i1:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a1, a1, e8,m1,ta,mu
|
||||
; CHECK-NEXT: vse1.v v0, (a0)
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
call void @llvm.riscv.vse1.nxv8i1(<vscale x 8 x i1> %0, <vscale x 8 x i1>* %1, i64 %2)
|
||||
ret void
|
||||
}
|
||||
|
||||
declare void @llvm.riscv.vse1.nxv16i1(<vscale x 16 x i1>, <vscale x 16 x i1>*, i64);
|
||||
|
||||
define void @intrinsic_vse1_v_nxv16i1(<vscale x 16 x i1> %0, <vscale x 16 x i1>* %1, i64 %2) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vse1_v_nxv16i1:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a1, a1, e8,m2,ta,mu
|
||||
; CHECK-NEXT: vse1.v v0, (a0)
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
call void @llvm.riscv.vse1.nxv16i1(<vscale x 16 x i1> %0, <vscale x 16 x i1>* %1, i64 %2)
|
||||
ret void
|
||||
}
|
||||
|
||||
declare void @llvm.riscv.vse1.nxv32i1(<vscale x 32 x i1>, <vscale x 32 x i1>*, i64);
|
||||
|
||||
define void @intrinsic_vse1_v_nxv32i1(<vscale x 32 x i1> %0, <vscale x 32 x i1>* %1, i64 %2) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vse1_v_nxv32i1:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a1, a1, e8,m4,ta,mu
|
||||
; CHECK-NEXT: vse1.v v0, (a0)
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
call void @llvm.riscv.vse1.nxv32i1(<vscale x 32 x i1> %0, <vscale x 32 x i1>* %1, i64 %2)
|
||||
ret void
|
||||
}
|
||||
|
||||
declare void @llvm.riscv.vse1.nxv64i1(<vscale x 64 x i1>, <vscale x 64 x i1>*, i64);
|
||||
|
||||
define void @intrinsic_vse1_v_nxv64i1(<vscale x 64 x i1> %0, <vscale x 64 x i1>* %1, i64 %2) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vse1_v_nxv64i1:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a1, a1, e8,m8,ta,mu
|
||||
; CHECK-NEXT: vse1.v v0, (a0)
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
call void @llvm.riscv.vse1.nxv64i1(<vscale x 64 x i1> %0, <vscale x 64 x i1>* %1, i64 %2)
|
||||
ret void
|
||||
}
|
@ -1,602 +0,0 @@
|
||||
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
||||
; RUN: llc -mtriple=riscv32 -mattr=+experimental-v,+d,+experimental-zfh -verify-machineinstrs \
|
||||
; RUN: --riscv-no-aliases < %s | FileCheck %s
|
||||
declare <vscale x 1 x half> @llvm.riscv.vfrece7.nxv1f16(
|
||||
<vscale x 1 x half>,
|
||||
i32);
|
||||
|
||||
define <vscale x 1 x half> @intrinsic_vfrece7_v_nxv1f16_nxv1f16(<vscale x 1 x half> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_v_nxv1f16_nxv1f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf4,ta,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x half> @llvm.riscv.vfrece7.nxv1f16(
|
||||
<vscale x 1 x half> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 1 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x half> @llvm.riscv.vfrece7.mask.nxv1f16(
|
||||
<vscale x 1 x half>,
|
||||
<vscale x 1 x half>,
|
||||
<vscale x 1 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 1 x half> @intrinsic_vfrece7_mask_v_nxv1f16_nxv1f16(<vscale x 1 x i1> %0, <vscale x 1 x half> %1, <vscale x 1 x half> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_mask_v_nxv1f16_nxv1f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf4,tu,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x half> @llvm.riscv.vfrece7.mask.nxv1f16(
|
||||
<vscale x 1 x half> %1,
|
||||
<vscale x 1 x half> %2,
|
||||
<vscale x 1 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 1 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x half> @llvm.riscv.vfrece7.nxv2f16(
|
||||
<vscale x 2 x half>,
|
||||
i32);
|
||||
|
||||
define <vscale x 2 x half> @intrinsic_vfrece7_v_nxv2f16_nxv2f16(<vscale x 2 x half> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_v_nxv2f16_nxv2f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf2,ta,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x half> @llvm.riscv.vfrece7.nxv2f16(
|
||||
<vscale x 2 x half> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 2 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x half> @llvm.riscv.vfrece7.mask.nxv2f16(
|
||||
<vscale x 2 x half>,
|
||||
<vscale x 2 x half>,
|
||||
<vscale x 2 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 2 x half> @intrinsic_vfrece7_mask_v_nxv2f16_nxv2f16(<vscale x 2 x i1> %0, <vscale x 2 x half> %1, <vscale x 2 x half> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_mask_v_nxv2f16_nxv2f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf2,tu,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x half> @llvm.riscv.vfrece7.mask.nxv2f16(
|
||||
<vscale x 2 x half> %1,
|
||||
<vscale x 2 x half> %2,
|
||||
<vscale x 2 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 2 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x half> @llvm.riscv.vfrece7.nxv4f16(
|
||||
<vscale x 4 x half>,
|
||||
i32);
|
||||
|
||||
define <vscale x 4 x half> @intrinsic_vfrece7_v_nxv4f16_nxv4f16(<vscale x 4 x half> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_v_nxv4f16_nxv4f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m1,ta,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x half> @llvm.riscv.vfrece7.nxv4f16(
|
||||
<vscale x 4 x half> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 4 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x half> @llvm.riscv.vfrece7.mask.nxv4f16(
|
||||
<vscale x 4 x half>,
|
||||
<vscale x 4 x half>,
|
||||
<vscale x 4 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 4 x half> @intrinsic_vfrece7_mask_v_nxv4f16_nxv4f16(<vscale x 4 x i1> %0, <vscale x 4 x half> %1, <vscale x 4 x half> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_mask_v_nxv4f16_nxv4f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m1,tu,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x half> @llvm.riscv.vfrece7.mask.nxv4f16(
|
||||
<vscale x 4 x half> %1,
|
||||
<vscale x 4 x half> %2,
|
||||
<vscale x 4 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 4 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x half> @llvm.riscv.vfrece7.nxv8f16(
|
||||
<vscale x 8 x half>,
|
||||
i32);
|
||||
|
||||
define <vscale x 8 x half> @intrinsic_vfrece7_v_nxv8f16_nxv8f16(<vscale x 8 x half> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_v_nxv8f16_nxv8f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m2,ta,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x half> @llvm.riscv.vfrece7.nxv8f16(
|
||||
<vscale x 8 x half> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 8 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x half> @llvm.riscv.vfrece7.mask.nxv8f16(
|
||||
<vscale x 8 x half>,
|
||||
<vscale x 8 x half>,
|
||||
<vscale x 8 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 8 x half> @intrinsic_vfrece7_mask_v_nxv8f16_nxv8f16(<vscale x 8 x i1> %0, <vscale x 8 x half> %1, <vscale x 8 x half> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_mask_v_nxv8f16_nxv8f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m2,tu,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v10, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x half> @llvm.riscv.vfrece7.mask.nxv8f16(
|
||||
<vscale x 8 x half> %1,
|
||||
<vscale x 8 x half> %2,
|
||||
<vscale x 8 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 8 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x half> @llvm.riscv.vfrece7.nxv16f16(
|
||||
<vscale x 16 x half>,
|
||||
i32);
|
||||
|
||||
define <vscale x 16 x half> @intrinsic_vfrece7_v_nxv16f16_nxv16f16(<vscale x 16 x half> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_v_nxv16f16_nxv16f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m4,ta,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x half> @llvm.riscv.vfrece7.nxv16f16(
|
||||
<vscale x 16 x half> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 16 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x half> @llvm.riscv.vfrece7.mask.nxv16f16(
|
||||
<vscale x 16 x half>,
|
||||
<vscale x 16 x half>,
|
||||
<vscale x 16 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 16 x half> @intrinsic_vfrece7_mask_v_nxv16f16_nxv16f16(<vscale x 16 x i1> %0, <vscale x 16 x half> %1, <vscale x 16 x half> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_mask_v_nxv16f16_nxv16f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m4,tu,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v12, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x half> @llvm.riscv.vfrece7.mask.nxv16f16(
|
||||
<vscale x 16 x half> %1,
|
||||
<vscale x 16 x half> %2,
|
||||
<vscale x 16 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 16 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 32 x half> @llvm.riscv.vfrece7.nxv32f16(
|
||||
<vscale x 32 x half>,
|
||||
i32);
|
||||
|
||||
define <vscale x 32 x half> @intrinsic_vfrece7_v_nxv32f16_nxv32f16(<vscale x 32 x half> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_v_nxv32f16_nxv32f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m8,ta,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 32 x half> @llvm.riscv.vfrece7.nxv32f16(
|
||||
<vscale x 32 x half> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 32 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 32 x half> @llvm.riscv.vfrece7.mask.nxv32f16(
|
||||
<vscale x 32 x half>,
|
||||
<vscale x 32 x half>,
|
||||
<vscale x 32 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 32 x half> @intrinsic_vfrece7_mask_v_nxv32f16_nxv32f16(<vscale x 32 x i1> %0, <vscale x 32 x half> %1, <vscale x 32 x half> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_mask_v_nxv32f16_nxv32f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m8,tu,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v16, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 32 x half> @llvm.riscv.vfrece7.mask.nxv32f16(
|
||||
<vscale x 32 x half> %1,
|
||||
<vscale x 32 x half> %2,
|
||||
<vscale x 32 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 32 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x float> @llvm.riscv.vfrece7.nxv1f32(
|
||||
<vscale x 1 x float>,
|
||||
i32);
|
||||
|
||||
define <vscale x 1 x float> @intrinsic_vfrece7_v_nxv1f32_nxv1f32(<vscale x 1 x float> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_v_nxv1f32_nxv1f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,mf2,ta,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x float> @llvm.riscv.vfrece7.nxv1f32(
|
||||
<vscale x 1 x float> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 1 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x float> @llvm.riscv.vfrece7.mask.nxv1f32(
|
||||
<vscale x 1 x float>,
|
||||
<vscale x 1 x float>,
|
||||
<vscale x 1 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 1 x float> @intrinsic_vfrece7_mask_v_nxv1f32_nxv1f32(<vscale x 1 x i1> %0, <vscale x 1 x float> %1, <vscale x 1 x float> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_mask_v_nxv1f32_nxv1f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,mf2,tu,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x float> @llvm.riscv.vfrece7.mask.nxv1f32(
|
||||
<vscale x 1 x float> %1,
|
||||
<vscale x 1 x float> %2,
|
||||
<vscale x 1 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 1 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x float> @llvm.riscv.vfrece7.nxv2f32(
|
||||
<vscale x 2 x float>,
|
||||
i32);
|
||||
|
||||
define <vscale x 2 x float> @intrinsic_vfrece7_v_nxv2f32_nxv2f32(<vscale x 2 x float> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_v_nxv2f32_nxv2f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m1,ta,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x float> @llvm.riscv.vfrece7.nxv2f32(
|
||||
<vscale x 2 x float> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 2 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x float> @llvm.riscv.vfrece7.mask.nxv2f32(
|
||||
<vscale x 2 x float>,
|
||||
<vscale x 2 x float>,
|
||||
<vscale x 2 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 2 x float> @intrinsic_vfrece7_mask_v_nxv2f32_nxv2f32(<vscale x 2 x i1> %0, <vscale x 2 x float> %1, <vscale x 2 x float> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_mask_v_nxv2f32_nxv2f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m1,tu,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x float> @llvm.riscv.vfrece7.mask.nxv2f32(
|
||||
<vscale x 2 x float> %1,
|
||||
<vscale x 2 x float> %2,
|
||||
<vscale x 2 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 2 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x float> @llvm.riscv.vfrece7.nxv4f32(
|
||||
<vscale x 4 x float>,
|
||||
i32);
|
||||
|
||||
define <vscale x 4 x float> @intrinsic_vfrece7_v_nxv4f32_nxv4f32(<vscale x 4 x float> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_v_nxv4f32_nxv4f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m2,ta,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x float> @llvm.riscv.vfrece7.nxv4f32(
|
||||
<vscale x 4 x float> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 4 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x float> @llvm.riscv.vfrece7.mask.nxv4f32(
|
||||
<vscale x 4 x float>,
|
||||
<vscale x 4 x float>,
|
||||
<vscale x 4 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 4 x float> @intrinsic_vfrece7_mask_v_nxv4f32_nxv4f32(<vscale x 4 x i1> %0, <vscale x 4 x float> %1, <vscale x 4 x float> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_mask_v_nxv4f32_nxv4f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m2,tu,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v10, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x float> @llvm.riscv.vfrece7.mask.nxv4f32(
|
||||
<vscale x 4 x float> %1,
|
||||
<vscale x 4 x float> %2,
|
||||
<vscale x 4 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 4 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x float> @llvm.riscv.vfrece7.nxv8f32(
|
||||
<vscale x 8 x float>,
|
||||
i32);
|
||||
|
||||
define <vscale x 8 x float> @intrinsic_vfrece7_v_nxv8f32_nxv8f32(<vscale x 8 x float> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_v_nxv8f32_nxv8f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m4,ta,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x float> @llvm.riscv.vfrece7.nxv8f32(
|
||||
<vscale x 8 x float> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 8 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x float> @llvm.riscv.vfrece7.mask.nxv8f32(
|
||||
<vscale x 8 x float>,
|
||||
<vscale x 8 x float>,
|
||||
<vscale x 8 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 8 x float> @intrinsic_vfrece7_mask_v_nxv8f32_nxv8f32(<vscale x 8 x i1> %0, <vscale x 8 x float> %1, <vscale x 8 x float> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_mask_v_nxv8f32_nxv8f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m4,tu,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v12, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x float> @llvm.riscv.vfrece7.mask.nxv8f32(
|
||||
<vscale x 8 x float> %1,
|
||||
<vscale x 8 x float> %2,
|
||||
<vscale x 8 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 8 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x float> @llvm.riscv.vfrece7.nxv16f32(
|
||||
<vscale x 16 x float>,
|
||||
i32);
|
||||
|
||||
define <vscale x 16 x float> @intrinsic_vfrece7_v_nxv16f32_nxv16f32(<vscale x 16 x float> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_v_nxv16f32_nxv16f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m8,ta,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x float> @llvm.riscv.vfrece7.nxv16f32(
|
||||
<vscale x 16 x float> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 16 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x float> @llvm.riscv.vfrece7.mask.nxv16f32(
|
||||
<vscale x 16 x float>,
|
||||
<vscale x 16 x float>,
|
||||
<vscale x 16 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 16 x float> @intrinsic_vfrece7_mask_v_nxv16f32_nxv16f32(<vscale x 16 x i1> %0, <vscale x 16 x float> %1, <vscale x 16 x float> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_mask_v_nxv16f32_nxv16f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m8,tu,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v16, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x float> @llvm.riscv.vfrece7.mask.nxv16f32(
|
||||
<vscale x 16 x float> %1,
|
||||
<vscale x 16 x float> %2,
|
||||
<vscale x 16 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 16 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x double> @llvm.riscv.vfrece7.nxv1f64(
|
||||
<vscale x 1 x double>,
|
||||
i32);
|
||||
|
||||
define <vscale x 1 x double> @intrinsic_vfrece7_v_nxv1f64_nxv1f64(<vscale x 1 x double> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_v_nxv1f64_nxv1f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m1,ta,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x double> @llvm.riscv.vfrece7.nxv1f64(
|
||||
<vscale x 1 x double> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 1 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x double> @llvm.riscv.vfrece7.mask.nxv1f64(
|
||||
<vscale x 1 x double>,
|
||||
<vscale x 1 x double>,
|
||||
<vscale x 1 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 1 x double> @intrinsic_vfrece7_mask_v_nxv1f64_nxv1f64(<vscale x 1 x i1> %0, <vscale x 1 x double> %1, <vscale x 1 x double> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_mask_v_nxv1f64_nxv1f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m1,tu,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x double> @llvm.riscv.vfrece7.mask.nxv1f64(
|
||||
<vscale x 1 x double> %1,
|
||||
<vscale x 1 x double> %2,
|
||||
<vscale x 1 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 1 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x double> @llvm.riscv.vfrece7.nxv2f64(
|
||||
<vscale x 2 x double>,
|
||||
i32);
|
||||
|
||||
define <vscale x 2 x double> @intrinsic_vfrece7_v_nxv2f64_nxv2f64(<vscale x 2 x double> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_v_nxv2f64_nxv2f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m2,ta,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x double> @llvm.riscv.vfrece7.nxv2f64(
|
||||
<vscale x 2 x double> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 2 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x double> @llvm.riscv.vfrece7.mask.nxv2f64(
|
||||
<vscale x 2 x double>,
|
||||
<vscale x 2 x double>,
|
||||
<vscale x 2 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 2 x double> @intrinsic_vfrece7_mask_v_nxv2f64_nxv2f64(<vscale x 2 x i1> %0, <vscale x 2 x double> %1, <vscale x 2 x double> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_mask_v_nxv2f64_nxv2f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m2,tu,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v10, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x double> @llvm.riscv.vfrece7.mask.nxv2f64(
|
||||
<vscale x 2 x double> %1,
|
||||
<vscale x 2 x double> %2,
|
||||
<vscale x 2 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 2 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x double> @llvm.riscv.vfrece7.nxv4f64(
|
||||
<vscale x 4 x double>,
|
||||
i32);
|
||||
|
||||
define <vscale x 4 x double> @intrinsic_vfrece7_v_nxv4f64_nxv4f64(<vscale x 4 x double> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_v_nxv4f64_nxv4f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m4,ta,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x double> @llvm.riscv.vfrece7.nxv4f64(
|
||||
<vscale x 4 x double> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 4 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x double> @llvm.riscv.vfrece7.mask.nxv4f64(
|
||||
<vscale x 4 x double>,
|
||||
<vscale x 4 x double>,
|
||||
<vscale x 4 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 4 x double> @intrinsic_vfrece7_mask_v_nxv4f64_nxv4f64(<vscale x 4 x i1> %0, <vscale x 4 x double> %1, <vscale x 4 x double> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_mask_v_nxv4f64_nxv4f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m4,tu,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v12, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x double> @llvm.riscv.vfrece7.mask.nxv4f64(
|
||||
<vscale x 4 x double> %1,
|
||||
<vscale x 4 x double> %2,
|
||||
<vscale x 4 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 4 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x double> @llvm.riscv.vfrece7.nxv8f64(
|
||||
<vscale x 8 x double>,
|
||||
i32);
|
||||
|
||||
define <vscale x 8 x double> @intrinsic_vfrece7_v_nxv8f64_nxv8f64(<vscale x 8 x double> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_v_nxv8f64_nxv8f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m8,ta,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x double> @llvm.riscv.vfrece7.nxv8f64(
|
||||
<vscale x 8 x double> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 8 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x double> @llvm.riscv.vfrece7.mask.nxv8f64(
|
||||
<vscale x 8 x double>,
|
||||
<vscale x 8 x double>,
|
||||
<vscale x 8 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 8 x double> @intrinsic_vfrece7_mask_v_nxv8f64_nxv8f64(<vscale x 8 x i1> %0, <vscale x 8 x double> %1, <vscale x 8 x double> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_mask_v_nxv8f64_nxv8f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m8,tu,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v16, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x double> @llvm.riscv.vfrece7.mask.nxv8f64(
|
||||
<vscale x 8 x double> %1,
|
||||
<vscale x 8 x double> %2,
|
||||
<vscale x 8 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 8 x double> %a
|
||||
}
|
@ -1,602 +0,0 @@
|
||||
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
||||
; RUN: llc -mtriple=riscv64 -mattr=+experimental-v,+d,+experimental-zfh -verify-machineinstrs \
|
||||
; RUN: --riscv-no-aliases < %s | FileCheck %s
|
||||
declare <vscale x 1 x half> @llvm.riscv.vfrece7.nxv1f16(
|
||||
<vscale x 1 x half>,
|
||||
i64);
|
||||
|
||||
define <vscale x 1 x half> @intrinsic_vfrece7_v_nxv1f16_nxv1f16(<vscale x 1 x half> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_v_nxv1f16_nxv1f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf4,ta,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x half> @llvm.riscv.vfrece7.nxv1f16(
|
||||
<vscale x 1 x half> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 1 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x half> @llvm.riscv.vfrece7.mask.nxv1f16(
|
||||
<vscale x 1 x half>,
|
||||
<vscale x 1 x half>,
|
||||
<vscale x 1 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 1 x half> @intrinsic_vfrece7_mask_v_nxv1f16_nxv1f16(<vscale x 1 x i1> %0, <vscale x 1 x half> %1, <vscale x 1 x half> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_mask_v_nxv1f16_nxv1f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf4,tu,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x half> @llvm.riscv.vfrece7.mask.nxv1f16(
|
||||
<vscale x 1 x half> %1,
|
||||
<vscale x 1 x half> %2,
|
||||
<vscale x 1 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 1 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x half> @llvm.riscv.vfrece7.nxv2f16(
|
||||
<vscale x 2 x half>,
|
||||
i64);
|
||||
|
||||
define <vscale x 2 x half> @intrinsic_vfrece7_v_nxv2f16_nxv2f16(<vscale x 2 x half> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_v_nxv2f16_nxv2f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf2,ta,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x half> @llvm.riscv.vfrece7.nxv2f16(
|
||||
<vscale x 2 x half> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 2 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x half> @llvm.riscv.vfrece7.mask.nxv2f16(
|
||||
<vscale x 2 x half>,
|
||||
<vscale x 2 x half>,
|
||||
<vscale x 2 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 2 x half> @intrinsic_vfrece7_mask_v_nxv2f16_nxv2f16(<vscale x 2 x i1> %0, <vscale x 2 x half> %1, <vscale x 2 x half> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_mask_v_nxv2f16_nxv2f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf2,tu,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x half> @llvm.riscv.vfrece7.mask.nxv2f16(
|
||||
<vscale x 2 x half> %1,
|
||||
<vscale x 2 x half> %2,
|
||||
<vscale x 2 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 2 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x half> @llvm.riscv.vfrece7.nxv4f16(
|
||||
<vscale x 4 x half>,
|
||||
i64);
|
||||
|
||||
define <vscale x 4 x half> @intrinsic_vfrece7_v_nxv4f16_nxv4f16(<vscale x 4 x half> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_v_nxv4f16_nxv4f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m1,ta,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x half> @llvm.riscv.vfrece7.nxv4f16(
|
||||
<vscale x 4 x half> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 4 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x half> @llvm.riscv.vfrece7.mask.nxv4f16(
|
||||
<vscale x 4 x half>,
|
||||
<vscale x 4 x half>,
|
||||
<vscale x 4 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 4 x half> @intrinsic_vfrece7_mask_v_nxv4f16_nxv4f16(<vscale x 4 x i1> %0, <vscale x 4 x half> %1, <vscale x 4 x half> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_mask_v_nxv4f16_nxv4f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m1,tu,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x half> @llvm.riscv.vfrece7.mask.nxv4f16(
|
||||
<vscale x 4 x half> %1,
|
||||
<vscale x 4 x half> %2,
|
||||
<vscale x 4 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 4 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x half> @llvm.riscv.vfrece7.nxv8f16(
|
||||
<vscale x 8 x half>,
|
||||
i64);
|
||||
|
||||
define <vscale x 8 x half> @intrinsic_vfrece7_v_nxv8f16_nxv8f16(<vscale x 8 x half> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_v_nxv8f16_nxv8f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m2,ta,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x half> @llvm.riscv.vfrece7.nxv8f16(
|
||||
<vscale x 8 x half> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 8 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x half> @llvm.riscv.vfrece7.mask.nxv8f16(
|
||||
<vscale x 8 x half>,
|
||||
<vscale x 8 x half>,
|
||||
<vscale x 8 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 8 x half> @intrinsic_vfrece7_mask_v_nxv8f16_nxv8f16(<vscale x 8 x i1> %0, <vscale x 8 x half> %1, <vscale x 8 x half> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_mask_v_nxv8f16_nxv8f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m2,tu,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v10, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x half> @llvm.riscv.vfrece7.mask.nxv8f16(
|
||||
<vscale x 8 x half> %1,
|
||||
<vscale x 8 x half> %2,
|
||||
<vscale x 8 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 8 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x half> @llvm.riscv.vfrece7.nxv16f16(
|
||||
<vscale x 16 x half>,
|
||||
i64);
|
||||
|
||||
define <vscale x 16 x half> @intrinsic_vfrece7_v_nxv16f16_nxv16f16(<vscale x 16 x half> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_v_nxv16f16_nxv16f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m4,ta,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x half> @llvm.riscv.vfrece7.nxv16f16(
|
||||
<vscale x 16 x half> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 16 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x half> @llvm.riscv.vfrece7.mask.nxv16f16(
|
||||
<vscale x 16 x half>,
|
||||
<vscale x 16 x half>,
|
||||
<vscale x 16 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 16 x half> @intrinsic_vfrece7_mask_v_nxv16f16_nxv16f16(<vscale x 16 x i1> %0, <vscale x 16 x half> %1, <vscale x 16 x half> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_mask_v_nxv16f16_nxv16f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m4,tu,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v12, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x half> @llvm.riscv.vfrece7.mask.nxv16f16(
|
||||
<vscale x 16 x half> %1,
|
||||
<vscale x 16 x half> %2,
|
||||
<vscale x 16 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 16 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 32 x half> @llvm.riscv.vfrece7.nxv32f16(
|
||||
<vscale x 32 x half>,
|
||||
i64);
|
||||
|
||||
define <vscale x 32 x half> @intrinsic_vfrece7_v_nxv32f16_nxv32f16(<vscale x 32 x half> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_v_nxv32f16_nxv32f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m8,ta,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 32 x half> @llvm.riscv.vfrece7.nxv32f16(
|
||||
<vscale x 32 x half> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 32 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 32 x half> @llvm.riscv.vfrece7.mask.nxv32f16(
|
||||
<vscale x 32 x half>,
|
||||
<vscale x 32 x half>,
|
||||
<vscale x 32 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 32 x half> @intrinsic_vfrece7_mask_v_nxv32f16_nxv32f16(<vscale x 32 x i1> %0, <vscale x 32 x half> %1, <vscale x 32 x half> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_mask_v_nxv32f16_nxv32f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m8,tu,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v16, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 32 x half> @llvm.riscv.vfrece7.mask.nxv32f16(
|
||||
<vscale x 32 x half> %1,
|
||||
<vscale x 32 x half> %2,
|
||||
<vscale x 32 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 32 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x float> @llvm.riscv.vfrece7.nxv1f32(
|
||||
<vscale x 1 x float>,
|
||||
i64);
|
||||
|
||||
define <vscale x 1 x float> @intrinsic_vfrece7_v_nxv1f32_nxv1f32(<vscale x 1 x float> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_v_nxv1f32_nxv1f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,mf2,ta,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x float> @llvm.riscv.vfrece7.nxv1f32(
|
||||
<vscale x 1 x float> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 1 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x float> @llvm.riscv.vfrece7.mask.nxv1f32(
|
||||
<vscale x 1 x float>,
|
||||
<vscale x 1 x float>,
|
||||
<vscale x 1 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 1 x float> @intrinsic_vfrece7_mask_v_nxv1f32_nxv1f32(<vscale x 1 x i1> %0, <vscale x 1 x float> %1, <vscale x 1 x float> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_mask_v_nxv1f32_nxv1f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,mf2,tu,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x float> @llvm.riscv.vfrece7.mask.nxv1f32(
|
||||
<vscale x 1 x float> %1,
|
||||
<vscale x 1 x float> %2,
|
||||
<vscale x 1 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 1 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x float> @llvm.riscv.vfrece7.nxv2f32(
|
||||
<vscale x 2 x float>,
|
||||
i64);
|
||||
|
||||
define <vscale x 2 x float> @intrinsic_vfrece7_v_nxv2f32_nxv2f32(<vscale x 2 x float> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_v_nxv2f32_nxv2f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m1,ta,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x float> @llvm.riscv.vfrece7.nxv2f32(
|
||||
<vscale x 2 x float> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 2 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x float> @llvm.riscv.vfrece7.mask.nxv2f32(
|
||||
<vscale x 2 x float>,
|
||||
<vscale x 2 x float>,
|
||||
<vscale x 2 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 2 x float> @intrinsic_vfrece7_mask_v_nxv2f32_nxv2f32(<vscale x 2 x i1> %0, <vscale x 2 x float> %1, <vscale x 2 x float> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_mask_v_nxv2f32_nxv2f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m1,tu,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x float> @llvm.riscv.vfrece7.mask.nxv2f32(
|
||||
<vscale x 2 x float> %1,
|
||||
<vscale x 2 x float> %2,
|
||||
<vscale x 2 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 2 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x float> @llvm.riscv.vfrece7.nxv4f32(
|
||||
<vscale x 4 x float>,
|
||||
i64);
|
||||
|
||||
define <vscale x 4 x float> @intrinsic_vfrece7_v_nxv4f32_nxv4f32(<vscale x 4 x float> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_v_nxv4f32_nxv4f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m2,ta,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x float> @llvm.riscv.vfrece7.nxv4f32(
|
||||
<vscale x 4 x float> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 4 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x float> @llvm.riscv.vfrece7.mask.nxv4f32(
|
||||
<vscale x 4 x float>,
|
||||
<vscale x 4 x float>,
|
||||
<vscale x 4 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 4 x float> @intrinsic_vfrece7_mask_v_nxv4f32_nxv4f32(<vscale x 4 x i1> %0, <vscale x 4 x float> %1, <vscale x 4 x float> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_mask_v_nxv4f32_nxv4f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m2,tu,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v10, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x float> @llvm.riscv.vfrece7.mask.nxv4f32(
|
||||
<vscale x 4 x float> %1,
|
||||
<vscale x 4 x float> %2,
|
||||
<vscale x 4 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 4 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x float> @llvm.riscv.vfrece7.nxv8f32(
|
||||
<vscale x 8 x float>,
|
||||
i64);
|
||||
|
||||
define <vscale x 8 x float> @intrinsic_vfrece7_v_nxv8f32_nxv8f32(<vscale x 8 x float> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_v_nxv8f32_nxv8f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m4,ta,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x float> @llvm.riscv.vfrece7.nxv8f32(
|
||||
<vscale x 8 x float> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 8 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x float> @llvm.riscv.vfrece7.mask.nxv8f32(
|
||||
<vscale x 8 x float>,
|
||||
<vscale x 8 x float>,
|
||||
<vscale x 8 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 8 x float> @intrinsic_vfrece7_mask_v_nxv8f32_nxv8f32(<vscale x 8 x i1> %0, <vscale x 8 x float> %1, <vscale x 8 x float> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_mask_v_nxv8f32_nxv8f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m4,tu,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v12, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x float> @llvm.riscv.vfrece7.mask.nxv8f32(
|
||||
<vscale x 8 x float> %1,
|
||||
<vscale x 8 x float> %2,
|
||||
<vscale x 8 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 8 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x float> @llvm.riscv.vfrece7.nxv16f32(
|
||||
<vscale x 16 x float>,
|
||||
i64);
|
||||
|
||||
define <vscale x 16 x float> @intrinsic_vfrece7_v_nxv16f32_nxv16f32(<vscale x 16 x float> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_v_nxv16f32_nxv16f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m8,ta,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x float> @llvm.riscv.vfrece7.nxv16f32(
|
||||
<vscale x 16 x float> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 16 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x float> @llvm.riscv.vfrece7.mask.nxv16f32(
|
||||
<vscale x 16 x float>,
|
||||
<vscale x 16 x float>,
|
||||
<vscale x 16 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 16 x float> @intrinsic_vfrece7_mask_v_nxv16f32_nxv16f32(<vscale x 16 x i1> %0, <vscale x 16 x float> %1, <vscale x 16 x float> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_mask_v_nxv16f32_nxv16f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m8,tu,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v16, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x float> @llvm.riscv.vfrece7.mask.nxv16f32(
|
||||
<vscale x 16 x float> %1,
|
||||
<vscale x 16 x float> %2,
|
||||
<vscale x 16 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 16 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x double> @llvm.riscv.vfrece7.nxv1f64(
|
||||
<vscale x 1 x double>,
|
||||
i64);
|
||||
|
||||
define <vscale x 1 x double> @intrinsic_vfrece7_v_nxv1f64_nxv1f64(<vscale x 1 x double> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_v_nxv1f64_nxv1f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m1,ta,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x double> @llvm.riscv.vfrece7.nxv1f64(
|
||||
<vscale x 1 x double> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 1 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x double> @llvm.riscv.vfrece7.mask.nxv1f64(
|
||||
<vscale x 1 x double>,
|
||||
<vscale x 1 x double>,
|
||||
<vscale x 1 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 1 x double> @intrinsic_vfrece7_mask_v_nxv1f64_nxv1f64(<vscale x 1 x i1> %0, <vscale x 1 x double> %1, <vscale x 1 x double> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_mask_v_nxv1f64_nxv1f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m1,tu,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x double> @llvm.riscv.vfrece7.mask.nxv1f64(
|
||||
<vscale x 1 x double> %1,
|
||||
<vscale x 1 x double> %2,
|
||||
<vscale x 1 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 1 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x double> @llvm.riscv.vfrece7.nxv2f64(
|
||||
<vscale x 2 x double>,
|
||||
i64);
|
||||
|
||||
define <vscale x 2 x double> @intrinsic_vfrece7_v_nxv2f64_nxv2f64(<vscale x 2 x double> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_v_nxv2f64_nxv2f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m2,ta,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x double> @llvm.riscv.vfrece7.nxv2f64(
|
||||
<vscale x 2 x double> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 2 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x double> @llvm.riscv.vfrece7.mask.nxv2f64(
|
||||
<vscale x 2 x double>,
|
||||
<vscale x 2 x double>,
|
||||
<vscale x 2 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 2 x double> @intrinsic_vfrece7_mask_v_nxv2f64_nxv2f64(<vscale x 2 x i1> %0, <vscale x 2 x double> %1, <vscale x 2 x double> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_mask_v_nxv2f64_nxv2f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m2,tu,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v10, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x double> @llvm.riscv.vfrece7.mask.nxv2f64(
|
||||
<vscale x 2 x double> %1,
|
||||
<vscale x 2 x double> %2,
|
||||
<vscale x 2 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 2 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x double> @llvm.riscv.vfrece7.nxv4f64(
|
||||
<vscale x 4 x double>,
|
||||
i64);
|
||||
|
||||
define <vscale x 4 x double> @intrinsic_vfrece7_v_nxv4f64_nxv4f64(<vscale x 4 x double> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_v_nxv4f64_nxv4f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m4,ta,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x double> @llvm.riscv.vfrece7.nxv4f64(
|
||||
<vscale x 4 x double> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 4 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x double> @llvm.riscv.vfrece7.mask.nxv4f64(
|
||||
<vscale x 4 x double>,
|
||||
<vscale x 4 x double>,
|
||||
<vscale x 4 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 4 x double> @intrinsic_vfrece7_mask_v_nxv4f64_nxv4f64(<vscale x 4 x i1> %0, <vscale x 4 x double> %1, <vscale x 4 x double> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_mask_v_nxv4f64_nxv4f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m4,tu,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v12, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x double> @llvm.riscv.vfrece7.mask.nxv4f64(
|
||||
<vscale x 4 x double> %1,
|
||||
<vscale x 4 x double> %2,
|
||||
<vscale x 4 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 4 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x double> @llvm.riscv.vfrece7.nxv8f64(
|
||||
<vscale x 8 x double>,
|
||||
i64);
|
||||
|
||||
define <vscale x 8 x double> @intrinsic_vfrece7_v_nxv8f64_nxv8f64(<vscale x 8 x double> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_v_nxv8f64_nxv8f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m8,ta,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x double> @llvm.riscv.vfrece7.nxv8f64(
|
||||
<vscale x 8 x double> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 8 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x double> @llvm.riscv.vfrece7.mask.nxv8f64(
|
||||
<vscale x 8 x double>,
|
||||
<vscale x 8 x double>,
|
||||
<vscale x 8 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 8 x double> @intrinsic_vfrece7_mask_v_nxv8f64_nxv8f64(<vscale x 8 x i1> %0, <vscale x 8 x double> %1, <vscale x 8 x double> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrece7_mask_v_nxv8f64_nxv8f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m8,tu,mu
|
||||
; CHECK-NEXT: vfrece7.v v8, v16, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x double> @llvm.riscv.vfrece7.mask.nxv8f64(
|
||||
<vscale x 8 x double> %1,
|
||||
<vscale x 8 x double> %2,
|
||||
<vscale x 8 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 8 x double> %a
|
||||
}
|
@ -1,602 +0,0 @@
|
||||
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
||||
; RUN: llc -mtriple=riscv32 -mattr=+experimental-v,+d,+experimental-zfh -verify-machineinstrs \
|
||||
; RUN: --riscv-no-aliases < %s | FileCheck %s
|
||||
declare <vscale x 1 x half> @llvm.riscv.vfrsqrte7.nxv1f16(
|
||||
<vscale x 1 x half>,
|
||||
i32);
|
||||
|
||||
define <vscale x 1 x half> @intrinsic_vfrsqrte7_v_nxv1f16_nxv1f16(<vscale x 1 x half> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_v_nxv1f16_nxv1f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf4,ta,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x half> @llvm.riscv.vfrsqrte7.nxv1f16(
|
||||
<vscale x 1 x half> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 1 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x half> @llvm.riscv.vfrsqrte7.mask.nxv1f16(
|
||||
<vscale x 1 x half>,
|
||||
<vscale x 1 x half>,
|
||||
<vscale x 1 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 1 x half> @intrinsic_vfrsqrte7_mask_v_nxv1f16_nxv1f16(<vscale x 1 x i1> %0, <vscale x 1 x half> %1, <vscale x 1 x half> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_mask_v_nxv1f16_nxv1f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf4,tu,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x half> @llvm.riscv.vfrsqrte7.mask.nxv1f16(
|
||||
<vscale x 1 x half> %1,
|
||||
<vscale x 1 x half> %2,
|
||||
<vscale x 1 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 1 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x half> @llvm.riscv.vfrsqrte7.nxv2f16(
|
||||
<vscale x 2 x half>,
|
||||
i32);
|
||||
|
||||
define <vscale x 2 x half> @intrinsic_vfrsqrte7_v_nxv2f16_nxv2f16(<vscale x 2 x half> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_v_nxv2f16_nxv2f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf2,ta,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x half> @llvm.riscv.vfrsqrte7.nxv2f16(
|
||||
<vscale x 2 x half> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 2 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x half> @llvm.riscv.vfrsqrte7.mask.nxv2f16(
|
||||
<vscale x 2 x half>,
|
||||
<vscale x 2 x half>,
|
||||
<vscale x 2 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 2 x half> @intrinsic_vfrsqrte7_mask_v_nxv2f16_nxv2f16(<vscale x 2 x i1> %0, <vscale x 2 x half> %1, <vscale x 2 x half> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_mask_v_nxv2f16_nxv2f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf2,tu,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x half> @llvm.riscv.vfrsqrte7.mask.nxv2f16(
|
||||
<vscale x 2 x half> %1,
|
||||
<vscale x 2 x half> %2,
|
||||
<vscale x 2 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 2 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x half> @llvm.riscv.vfrsqrte7.nxv4f16(
|
||||
<vscale x 4 x half>,
|
||||
i32);
|
||||
|
||||
define <vscale x 4 x half> @intrinsic_vfrsqrte7_v_nxv4f16_nxv4f16(<vscale x 4 x half> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_v_nxv4f16_nxv4f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m1,ta,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x half> @llvm.riscv.vfrsqrte7.nxv4f16(
|
||||
<vscale x 4 x half> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 4 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x half> @llvm.riscv.vfrsqrte7.mask.nxv4f16(
|
||||
<vscale x 4 x half>,
|
||||
<vscale x 4 x half>,
|
||||
<vscale x 4 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 4 x half> @intrinsic_vfrsqrte7_mask_v_nxv4f16_nxv4f16(<vscale x 4 x i1> %0, <vscale x 4 x half> %1, <vscale x 4 x half> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_mask_v_nxv4f16_nxv4f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m1,tu,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x half> @llvm.riscv.vfrsqrte7.mask.nxv4f16(
|
||||
<vscale x 4 x half> %1,
|
||||
<vscale x 4 x half> %2,
|
||||
<vscale x 4 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 4 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x half> @llvm.riscv.vfrsqrte7.nxv8f16(
|
||||
<vscale x 8 x half>,
|
||||
i32);
|
||||
|
||||
define <vscale x 8 x half> @intrinsic_vfrsqrte7_v_nxv8f16_nxv8f16(<vscale x 8 x half> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_v_nxv8f16_nxv8f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m2,ta,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x half> @llvm.riscv.vfrsqrte7.nxv8f16(
|
||||
<vscale x 8 x half> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 8 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x half> @llvm.riscv.vfrsqrte7.mask.nxv8f16(
|
||||
<vscale x 8 x half>,
|
||||
<vscale x 8 x half>,
|
||||
<vscale x 8 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 8 x half> @intrinsic_vfrsqrte7_mask_v_nxv8f16_nxv8f16(<vscale x 8 x i1> %0, <vscale x 8 x half> %1, <vscale x 8 x half> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_mask_v_nxv8f16_nxv8f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m2,tu,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v10, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x half> @llvm.riscv.vfrsqrte7.mask.nxv8f16(
|
||||
<vscale x 8 x half> %1,
|
||||
<vscale x 8 x half> %2,
|
||||
<vscale x 8 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 8 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x half> @llvm.riscv.vfrsqrte7.nxv16f16(
|
||||
<vscale x 16 x half>,
|
||||
i32);
|
||||
|
||||
define <vscale x 16 x half> @intrinsic_vfrsqrte7_v_nxv16f16_nxv16f16(<vscale x 16 x half> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_v_nxv16f16_nxv16f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m4,ta,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x half> @llvm.riscv.vfrsqrte7.nxv16f16(
|
||||
<vscale x 16 x half> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 16 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x half> @llvm.riscv.vfrsqrte7.mask.nxv16f16(
|
||||
<vscale x 16 x half>,
|
||||
<vscale x 16 x half>,
|
||||
<vscale x 16 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 16 x half> @intrinsic_vfrsqrte7_mask_v_nxv16f16_nxv16f16(<vscale x 16 x i1> %0, <vscale x 16 x half> %1, <vscale x 16 x half> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_mask_v_nxv16f16_nxv16f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m4,tu,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v12, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x half> @llvm.riscv.vfrsqrte7.mask.nxv16f16(
|
||||
<vscale x 16 x half> %1,
|
||||
<vscale x 16 x half> %2,
|
||||
<vscale x 16 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 16 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 32 x half> @llvm.riscv.vfrsqrte7.nxv32f16(
|
||||
<vscale x 32 x half>,
|
||||
i32);
|
||||
|
||||
define <vscale x 32 x half> @intrinsic_vfrsqrte7_v_nxv32f16_nxv32f16(<vscale x 32 x half> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_v_nxv32f16_nxv32f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m8,ta,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 32 x half> @llvm.riscv.vfrsqrte7.nxv32f16(
|
||||
<vscale x 32 x half> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 32 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 32 x half> @llvm.riscv.vfrsqrte7.mask.nxv32f16(
|
||||
<vscale x 32 x half>,
|
||||
<vscale x 32 x half>,
|
||||
<vscale x 32 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 32 x half> @intrinsic_vfrsqrte7_mask_v_nxv32f16_nxv32f16(<vscale x 32 x i1> %0, <vscale x 32 x half> %1, <vscale x 32 x half> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_mask_v_nxv32f16_nxv32f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m8,tu,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v16, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 32 x half> @llvm.riscv.vfrsqrte7.mask.nxv32f16(
|
||||
<vscale x 32 x half> %1,
|
||||
<vscale x 32 x half> %2,
|
||||
<vscale x 32 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 32 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x float> @llvm.riscv.vfrsqrte7.nxv1f32(
|
||||
<vscale x 1 x float>,
|
||||
i32);
|
||||
|
||||
define <vscale x 1 x float> @intrinsic_vfrsqrte7_v_nxv1f32_nxv1f32(<vscale x 1 x float> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_v_nxv1f32_nxv1f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,mf2,ta,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x float> @llvm.riscv.vfrsqrte7.nxv1f32(
|
||||
<vscale x 1 x float> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 1 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x float> @llvm.riscv.vfrsqrte7.mask.nxv1f32(
|
||||
<vscale x 1 x float>,
|
||||
<vscale x 1 x float>,
|
||||
<vscale x 1 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 1 x float> @intrinsic_vfrsqrte7_mask_v_nxv1f32_nxv1f32(<vscale x 1 x i1> %0, <vscale x 1 x float> %1, <vscale x 1 x float> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_mask_v_nxv1f32_nxv1f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,mf2,tu,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x float> @llvm.riscv.vfrsqrte7.mask.nxv1f32(
|
||||
<vscale x 1 x float> %1,
|
||||
<vscale x 1 x float> %2,
|
||||
<vscale x 1 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 1 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x float> @llvm.riscv.vfrsqrte7.nxv2f32(
|
||||
<vscale x 2 x float>,
|
||||
i32);
|
||||
|
||||
define <vscale x 2 x float> @intrinsic_vfrsqrte7_v_nxv2f32_nxv2f32(<vscale x 2 x float> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_v_nxv2f32_nxv2f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m1,ta,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x float> @llvm.riscv.vfrsqrte7.nxv2f32(
|
||||
<vscale x 2 x float> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 2 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x float> @llvm.riscv.vfrsqrte7.mask.nxv2f32(
|
||||
<vscale x 2 x float>,
|
||||
<vscale x 2 x float>,
|
||||
<vscale x 2 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 2 x float> @intrinsic_vfrsqrte7_mask_v_nxv2f32_nxv2f32(<vscale x 2 x i1> %0, <vscale x 2 x float> %1, <vscale x 2 x float> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_mask_v_nxv2f32_nxv2f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m1,tu,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x float> @llvm.riscv.vfrsqrte7.mask.nxv2f32(
|
||||
<vscale x 2 x float> %1,
|
||||
<vscale x 2 x float> %2,
|
||||
<vscale x 2 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 2 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x float> @llvm.riscv.vfrsqrte7.nxv4f32(
|
||||
<vscale x 4 x float>,
|
||||
i32);
|
||||
|
||||
define <vscale x 4 x float> @intrinsic_vfrsqrte7_v_nxv4f32_nxv4f32(<vscale x 4 x float> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_v_nxv4f32_nxv4f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m2,ta,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x float> @llvm.riscv.vfrsqrte7.nxv4f32(
|
||||
<vscale x 4 x float> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 4 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x float> @llvm.riscv.vfrsqrte7.mask.nxv4f32(
|
||||
<vscale x 4 x float>,
|
||||
<vscale x 4 x float>,
|
||||
<vscale x 4 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 4 x float> @intrinsic_vfrsqrte7_mask_v_nxv4f32_nxv4f32(<vscale x 4 x i1> %0, <vscale x 4 x float> %1, <vscale x 4 x float> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_mask_v_nxv4f32_nxv4f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m2,tu,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v10, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x float> @llvm.riscv.vfrsqrte7.mask.nxv4f32(
|
||||
<vscale x 4 x float> %1,
|
||||
<vscale x 4 x float> %2,
|
||||
<vscale x 4 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 4 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x float> @llvm.riscv.vfrsqrte7.nxv8f32(
|
||||
<vscale x 8 x float>,
|
||||
i32);
|
||||
|
||||
define <vscale x 8 x float> @intrinsic_vfrsqrte7_v_nxv8f32_nxv8f32(<vscale x 8 x float> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_v_nxv8f32_nxv8f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m4,ta,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x float> @llvm.riscv.vfrsqrte7.nxv8f32(
|
||||
<vscale x 8 x float> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 8 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x float> @llvm.riscv.vfrsqrte7.mask.nxv8f32(
|
||||
<vscale x 8 x float>,
|
||||
<vscale x 8 x float>,
|
||||
<vscale x 8 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 8 x float> @intrinsic_vfrsqrte7_mask_v_nxv8f32_nxv8f32(<vscale x 8 x i1> %0, <vscale x 8 x float> %1, <vscale x 8 x float> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_mask_v_nxv8f32_nxv8f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m4,tu,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v12, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x float> @llvm.riscv.vfrsqrte7.mask.nxv8f32(
|
||||
<vscale x 8 x float> %1,
|
||||
<vscale x 8 x float> %2,
|
||||
<vscale x 8 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 8 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x float> @llvm.riscv.vfrsqrte7.nxv16f32(
|
||||
<vscale x 16 x float>,
|
||||
i32);
|
||||
|
||||
define <vscale x 16 x float> @intrinsic_vfrsqrte7_v_nxv16f32_nxv16f32(<vscale x 16 x float> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_v_nxv16f32_nxv16f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m8,ta,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x float> @llvm.riscv.vfrsqrte7.nxv16f32(
|
||||
<vscale x 16 x float> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 16 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x float> @llvm.riscv.vfrsqrte7.mask.nxv16f32(
|
||||
<vscale x 16 x float>,
|
||||
<vscale x 16 x float>,
|
||||
<vscale x 16 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 16 x float> @intrinsic_vfrsqrte7_mask_v_nxv16f32_nxv16f32(<vscale x 16 x i1> %0, <vscale x 16 x float> %1, <vscale x 16 x float> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_mask_v_nxv16f32_nxv16f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m8,tu,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v16, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x float> @llvm.riscv.vfrsqrte7.mask.nxv16f32(
|
||||
<vscale x 16 x float> %1,
|
||||
<vscale x 16 x float> %2,
|
||||
<vscale x 16 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 16 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x double> @llvm.riscv.vfrsqrte7.nxv1f64(
|
||||
<vscale x 1 x double>,
|
||||
i32);
|
||||
|
||||
define <vscale x 1 x double> @intrinsic_vfrsqrte7_v_nxv1f64_nxv1f64(<vscale x 1 x double> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_v_nxv1f64_nxv1f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m1,ta,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x double> @llvm.riscv.vfrsqrte7.nxv1f64(
|
||||
<vscale x 1 x double> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 1 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x double> @llvm.riscv.vfrsqrte7.mask.nxv1f64(
|
||||
<vscale x 1 x double>,
|
||||
<vscale x 1 x double>,
|
||||
<vscale x 1 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 1 x double> @intrinsic_vfrsqrte7_mask_v_nxv1f64_nxv1f64(<vscale x 1 x i1> %0, <vscale x 1 x double> %1, <vscale x 1 x double> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_mask_v_nxv1f64_nxv1f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m1,tu,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x double> @llvm.riscv.vfrsqrte7.mask.nxv1f64(
|
||||
<vscale x 1 x double> %1,
|
||||
<vscale x 1 x double> %2,
|
||||
<vscale x 1 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 1 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x double> @llvm.riscv.vfrsqrte7.nxv2f64(
|
||||
<vscale x 2 x double>,
|
||||
i32);
|
||||
|
||||
define <vscale x 2 x double> @intrinsic_vfrsqrte7_v_nxv2f64_nxv2f64(<vscale x 2 x double> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_v_nxv2f64_nxv2f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m2,ta,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x double> @llvm.riscv.vfrsqrte7.nxv2f64(
|
||||
<vscale x 2 x double> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 2 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x double> @llvm.riscv.vfrsqrte7.mask.nxv2f64(
|
||||
<vscale x 2 x double>,
|
||||
<vscale x 2 x double>,
|
||||
<vscale x 2 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 2 x double> @intrinsic_vfrsqrte7_mask_v_nxv2f64_nxv2f64(<vscale x 2 x i1> %0, <vscale x 2 x double> %1, <vscale x 2 x double> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_mask_v_nxv2f64_nxv2f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m2,tu,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v10, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x double> @llvm.riscv.vfrsqrte7.mask.nxv2f64(
|
||||
<vscale x 2 x double> %1,
|
||||
<vscale x 2 x double> %2,
|
||||
<vscale x 2 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 2 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x double> @llvm.riscv.vfrsqrte7.nxv4f64(
|
||||
<vscale x 4 x double>,
|
||||
i32);
|
||||
|
||||
define <vscale x 4 x double> @intrinsic_vfrsqrte7_v_nxv4f64_nxv4f64(<vscale x 4 x double> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_v_nxv4f64_nxv4f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m4,ta,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x double> @llvm.riscv.vfrsqrte7.nxv4f64(
|
||||
<vscale x 4 x double> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 4 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x double> @llvm.riscv.vfrsqrte7.mask.nxv4f64(
|
||||
<vscale x 4 x double>,
|
||||
<vscale x 4 x double>,
|
||||
<vscale x 4 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 4 x double> @intrinsic_vfrsqrte7_mask_v_nxv4f64_nxv4f64(<vscale x 4 x i1> %0, <vscale x 4 x double> %1, <vscale x 4 x double> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_mask_v_nxv4f64_nxv4f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m4,tu,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v12, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x double> @llvm.riscv.vfrsqrte7.mask.nxv4f64(
|
||||
<vscale x 4 x double> %1,
|
||||
<vscale x 4 x double> %2,
|
||||
<vscale x 4 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 4 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x double> @llvm.riscv.vfrsqrte7.nxv8f64(
|
||||
<vscale x 8 x double>,
|
||||
i32);
|
||||
|
||||
define <vscale x 8 x double> @intrinsic_vfrsqrte7_v_nxv8f64_nxv8f64(<vscale x 8 x double> %0, i32 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_v_nxv8f64_nxv8f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m8,ta,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x double> @llvm.riscv.vfrsqrte7.nxv8f64(
|
||||
<vscale x 8 x double> %0,
|
||||
i32 %1)
|
||||
|
||||
ret <vscale x 8 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x double> @llvm.riscv.vfrsqrte7.mask.nxv8f64(
|
||||
<vscale x 8 x double>,
|
||||
<vscale x 8 x double>,
|
||||
<vscale x 8 x i1>,
|
||||
i32);
|
||||
|
||||
define <vscale x 8 x double> @intrinsic_vfrsqrte7_mask_v_nxv8f64_nxv8f64(<vscale x 8 x i1> %0, <vscale x 8 x double> %1, <vscale x 8 x double> %2, i32 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_mask_v_nxv8f64_nxv8f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m8,tu,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v16, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x double> @llvm.riscv.vfrsqrte7.mask.nxv8f64(
|
||||
<vscale x 8 x double> %1,
|
||||
<vscale x 8 x double> %2,
|
||||
<vscale x 8 x i1> %0,
|
||||
i32 %3)
|
||||
|
||||
ret <vscale x 8 x double> %a
|
||||
}
|
@ -1,602 +0,0 @@
|
||||
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
||||
; RUN: llc -mtriple=riscv64 -mattr=+experimental-v,+d,+experimental-zfh -verify-machineinstrs \
|
||||
; RUN: --riscv-no-aliases < %s | FileCheck %s
|
||||
declare <vscale x 1 x half> @llvm.riscv.vfrsqrte7.nxv1f16(
|
||||
<vscale x 1 x half>,
|
||||
i64);
|
||||
|
||||
define <vscale x 1 x half> @intrinsic_vfrsqrte7_v_nxv1f16_nxv1f16(<vscale x 1 x half> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_v_nxv1f16_nxv1f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf4,ta,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x half> @llvm.riscv.vfrsqrte7.nxv1f16(
|
||||
<vscale x 1 x half> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 1 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x half> @llvm.riscv.vfrsqrte7.mask.nxv1f16(
|
||||
<vscale x 1 x half>,
|
||||
<vscale x 1 x half>,
|
||||
<vscale x 1 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 1 x half> @intrinsic_vfrsqrte7_mask_v_nxv1f16_nxv1f16(<vscale x 1 x i1> %0, <vscale x 1 x half> %1, <vscale x 1 x half> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_mask_v_nxv1f16_nxv1f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf4,tu,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x half> @llvm.riscv.vfrsqrte7.mask.nxv1f16(
|
||||
<vscale x 1 x half> %1,
|
||||
<vscale x 1 x half> %2,
|
||||
<vscale x 1 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 1 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x half> @llvm.riscv.vfrsqrte7.nxv2f16(
|
||||
<vscale x 2 x half>,
|
||||
i64);
|
||||
|
||||
define <vscale x 2 x half> @intrinsic_vfrsqrte7_v_nxv2f16_nxv2f16(<vscale x 2 x half> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_v_nxv2f16_nxv2f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf2,ta,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x half> @llvm.riscv.vfrsqrte7.nxv2f16(
|
||||
<vscale x 2 x half> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 2 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x half> @llvm.riscv.vfrsqrte7.mask.nxv2f16(
|
||||
<vscale x 2 x half>,
|
||||
<vscale x 2 x half>,
|
||||
<vscale x 2 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 2 x half> @intrinsic_vfrsqrte7_mask_v_nxv2f16_nxv2f16(<vscale x 2 x i1> %0, <vscale x 2 x half> %1, <vscale x 2 x half> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_mask_v_nxv2f16_nxv2f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,mf2,tu,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x half> @llvm.riscv.vfrsqrte7.mask.nxv2f16(
|
||||
<vscale x 2 x half> %1,
|
||||
<vscale x 2 x half> %2,
|
||||
<vscale x 2 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 2 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x half> @llvm.riscv.vfrsqrte7.nxv4f16(
|
||||
<vscale x 4 x half>,
|
||||
i64);
|
||||
|
||||
define <vscale x 4 x half> @intrinsic_vfrsqrte7_v_nxv4f16_nxv4f16(<vscale x 4 x half> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_v_nxv4f16_nxv4f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m1,ta,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x half> @llvm.riscv.vfrsqrte7.nxv4f16(
|
||||
<vscale x 4 x half> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 4 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x half> @llvm.riscv.vfrsqrte7.mask.nxv4f16(
|
||||
<vscale x 4 x half>,
|
||||
<vscale x 4 x half>,
|
||||
<vscale x 4 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 4 x half> @intrinsic_vfrsqrte7_mask_v_nxv4f16_nxv4f16(<vscale x 4 x i1> %0, <vscale x 4 x half> %1, <vscale x 4 x half> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_mask_v_nxv4f16_nxv4f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m1,tu,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x half> @llvm.riscv.vfrsqrte7.mask.nxv4f16(
|
||||
<vscale x 4 x half> %1,
|
||||
<vscale x 4 x half> %2,
|
||||
<vscale x 4 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 4 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x half> @llvm.riscv.vfrsqrte7.nxv8f16(
|
||||
<vscale x 8 x half>,
|
||||
i64);
|
||||
|
||||
define <vscale x 8 x half> @intrinsic_vfrsqrte7_v_nxv8f16_nxv8f16(<vscale x 8 x half> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_v_nxv8f16_nxv8f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m2,ta,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x half> @llvm.riscv.vfrsqrte7.nxv8f16(
|
||||
<vscale x 8 x half> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 8 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x half> @llvm.riscv.vfrsqrte7.mask.nxv8f16(
|
||||
<vscale x 8 x half>,
|
||||
<vscale x 8 x half>,
|
||||
<vscale x 8 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 8 x half> @intrinsic_vfrsqrte7_mask_v_nxv8f16_nxv8f16(<vscale x 8 x i1> %0, <vscale x 8 x half> %1, <vscale x 8 x half> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_mask_v_nxv8f16_nxv8f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m2,tu,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v10, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x half> @llvm.riscv.vfrsqrte7.mask.nxv8f16(
|
||||
<vscale x 8 x half> %1,
|
||||
<vscale x 8 x half> %2,
|
||||
<vscale x 8 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 8 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x half> @llvm.riscv.vfrsqrte7.nxv16f16(
|
||||
<vscale x 16 x half>,
|
||||
i64);
|
||||
|
||||
define <vscale x 16 x half> @intrinsic_vfrsqrte7_v_nxv16f16_nxv16f16(<vscale x 16 x half> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_v_nxv16f16_nxv16f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m4,ta,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x half> @llvm.riscv.vfrsqrte7.nxv16f16(
|
||||
<vscale x 16 x half> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 16 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x half> @llvm.riscv.vfrsqrte7.mask.nxv16f16(
|
||||
<vscale x 16 x half>,
|
||||
<vscale x 16 x half>,
|
||||
<vscale x 16 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 16 x half> @intrinsic_vfrsqrte7_mask_v_nxv16f16_nxv16f16(<vscale x 16 x i1> %0, <vscale x 16 x half> %1, <vscale x 16 x half> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_mask_v_nxv16f16_nxv16f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m4,tu,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v12, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x half> @llvm.riscv.vfrsqrte7.mask.nxv16f16(
|
||||
<vscale x 16 x half> %1,
|
||||
<vscale x 16 x half> %2,
|
||||
<vscale x 16 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 16 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 32 x half> @llvm.riscv.vfrsqrte7.nxv32f16(
|
||||
<vscale x 32 x half>,
|
||||
i64);
|
||||
|
||||
define <vscale x 32 x half> @intrinsic_vfrsqrte7_v_nxv32f16_nxv32f16(<vscale x 32 x half> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_v_nxv32f16_nxv32f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m8,ta,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 32 x half> @llvm.riscv.vfrsqrte7.nxv32f16(
|
||||
<vscale x 32 x half> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 32 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 32 x half> @llvm.riscv.vfrsqrte7.mask.nxv32f16(
|
||||
<vscale x 32 x half>,
|
||||
<vscale x 32 x half>,
|
||||
<vscale x 32 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 32 x half> @intrinsic_vfrsqrte7_mask_v_nxv32f16_nxv32f16(<vscale x 32 x i1> %0, <vscale x 32 x half> %1, <vscale x 32 x half> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_mask_v_nxv32f16_nxv32f16:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e16,m8,tu,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v16, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 32 x half> @llvm.riscv.vfrsqrte7.mask.nxv32f16(
|
||||
<vscale x 32 x half> %1,
|
||||
<vscale x 32 x half> %2,
|
||||
<vscale x 32 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 32 x half> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x float> @llvm.riscv.vfrsqrte7.nxv1f32(
|
||||
<vscale x 1 x float>,
|
||||
i64);
|
||||
|
||||
define <vscale x 1 x float> @intrinsic_vfrsqrte7_v_nxv1f32_nxv1f32(<vscale x 1 x float> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_v_nxv1f32_nxv1f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,mf2,ta,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x float> @llvm.riscv.vfrsqrte7.nxv1f32(
|
||||
<vscale x 1 x float> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 1 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x float> @llvm.riscv.vfrsqrte7.mask.nxv1f32(
|
||||
<vscale x 1 x float>,
|
||||
<vscale x 1 x float>,
|
||||
<vscale x 1 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 1 x float> @intrinsic_vfrsqrte7_mask_v_nxv1f32_nxv1f32(<vscale x 1 x i1> %0, <vscale x 1 x float> %1, <vscale x 1 x float> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_mask_v_nxv1f32_nxv1f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,mf2,tu,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x float> @llvm.riscv.vfrsqrte7.mask.nxv1f32(
|
||||
<vscale x 1 x float> %1,
|
||||
<vscale x 1 x float> %2,
|
||||
<vscale x 1 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 1 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x float> @llvm.riscv.vfrsqrte7.nxv2f32(
|
||||
<vscale x 2 x float>,
|
||||
i64);
|
||||
|
||||
define <vscale x 2 x float> @intrinsic_vfrsqrte7_v_nxv2f32_nxv2f32(<vscale x 2 x float> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_v_nxv2f32_nxv2f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m1,ta,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x float> @llvm.riscv.vfrsqrte7.nxv2f32(
|
||||
<vscale x 2 x float> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 2 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x float> @llvm.riscv.vfrsqrte7.mask.nxv2f32(
|
||||
<vscale x 2 x float>,
|
||||
<vscale x 2 x float>,
|
||||
<vscale x 2 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 2 x float> @intrinsic_vfrsqrte7_mask_v_nxv2f32_nxv2f32(<vscale x 2 x i1> %0, <vscale x 2 x float> %1, <vscale x 2 x float> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_mask_v_nxv2f32_nxv2f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m1,tu,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x float> @llvm.riscv.vfrsqrte7.mask.nxv2f32(
|
||||
<vscale x 2 x float> %1,
|
||||
<vscale x 2 x float> %2,
|
||||
<vscale x 2 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 2 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x float> @llvm.riscv.vfrsqrte7.nxv4f32(
|
||||
<vscale x 4 x float>,
|
||||
i64);
|
||||
|
||||
define <vscale x 4 x float> @intrinsic_vfrsqrte7_v_nxv4f32_nxv4f32(<vscale x 4 x float> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_v_nxv4f32_nxv4f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m2,ta,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x float> @llvm.riscv.vfrsqrte7.nxv4f32(
|
||||
<vscale x 4 x float> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 4 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x float> @llvm.riscv.vfrsqrte7.mask.nxv4f32(
|
||||
<vscale x 4 x float>,
|
||||
<vscale x 4 x float>,
|
||||
<vscale x 4 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 4 x float> @intrinsic_vfrsqrte7_mask_v_nxv4f32_nxv4f32(<vscale x 4 x i1> %0, <vscale x 4 x float> %1, <vscale x 4 x float> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_mask_v_nxv4f32_nxv4f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m2,tu,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v10, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x float> @llvm.riscv.vfrsqrte7.mask.nxv4f32(
|
||||
<vscale x 4 x float> %1,
|
||||
<vscale x 4 x float> %2,
|
||||
<vscale x 4 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 4 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x float> @llvm.riscv.vfrsqrte7.nxv8f32(
|
||||
<vscale x 8 x float>,
|
||||
i64);
|
||||
|
||||
define <vscale x 8 x float> @intrinsic_vfrsqrte7_v_nxv8f32_nxv8f32(<vscale x 8 x float> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_v_nxv8f32_nxv8f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m4,ta,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x float> @llvm.riscv.vfrsqrte7.nxv8f32(
|
||||
<vscale x 8 x float> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 8 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x float> @llvm.riscv.vfrsqrte7.mask.nxv8f32(
|
||||
<vscale x 8 x float>,
|
||||
<vscale x 8 x float>,
|
||||
<vscale x 8 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 8 x float> @intrinsic_vfrsqrte7_mask_v_nxv8f32_nxv8f32(<vscale x 8 x i1> %0, <vscale x 8 x float> %1, <vscale x 8 x float> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_mask_v_nxv8f32_nxv8f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m4,tu,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v12, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x float> @llvm.riscv.vfrsqrte7.mask.nxv8f32(
|
||||
<vscale x 8 x float> %1,
|
||||
<vscale x 8 x float> %2,
|
||||
<vscale x 8 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 8 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x float> @llvm.riscv.vfrsqrte7.nxv16f32(
|
||||
<vscale x 16 x float>,
|
||||
i64);
|
||||
|
||||
define <vscale x 16 x float> @intrinsic_vfrsqrte7_v_nxv16f32_nxv16f32(<vscale x 16 x float> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_v_nxv16f32_nxv16f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m8,ta,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x float> @llvm.riscv.vfrsqrte7.nxv16f32(
|
||||
<vscale x 16 x float> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 16 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 16 x float> @llvm.riscv.vfrsqrte7.mask.nxv16f32(
|
||||
<vscale x 16 x float>,
|
||||
<vscale x 16 x float>,
|
||||
<vscale x 16 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 16 x float> @intrinsic_vfrsqrte7_mask_v_nxv16f32_nxv16f32(<vscale x 16 x i1> %0, <vscale x 16 x float> %1, <vscale x 16 x float> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_mask_v_nxv16f32_nxv16f32:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e32,m8,tu,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v16, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 16 x float> @llvm.riscv.vfrsqrte7.mask.nxv16f32(
|
||||
<vscale x 16 x float> %1,
|
||||
<vscale x 16 x float> %2,
|
||||
<vscale x 16 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 16 x float> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x double> @llvm.riscv.vfrsqrte7.nxv1f64(
|
||||
<vscale x 1 x double>,
|
||||
i64);
|
||||
|
||||
define <vscale x 1 x double> @intrinsic_vfrsqrte7_v_nxv1f64_nxv1f64(<vscale x 1 x double> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_v_nxv1f64_nxv1f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m1,ta,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x double> @llvm.riscv.vfrsqrte7.nxv1f64(
|
||||
<vscale x 1 x double> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 1 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 1 x double> @llvm.riscv.vfrsqrte7.mask.nxv1f64(
|
||||
<vscale x 1 x double>,
|
||||
<vscale x 1 x double>,
|
||||
<vscale x 1 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 1 x double> @intrinsic_vfrsqrte7_mask_v_nxv1f64_nxv1f64(<vscale x 1 x i1> %0, <vscale x 1 x double> %1, <vscale x 1 x double> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_mask_v_nxv1f64_nxv1f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m1,tu,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v9, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 1 x double> @llvm.riscv.vfrsqrte7.mask.nxv1f64(
|
||||
<vscale x 1 x double> %1,
|
||||
<vscale x 1 x double> %2,
|
||||
<vscale x 1 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 1 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x double> @llvm.riscv.vfrsqrte7.nxv2f64(
|
||||
<vscale x 2 x double>,
|
||||
i64);
|
||||
|
||||
define <vscale x 2 x double> @intrinsic_vfrsqrte7_v_nxv2f64_nxv2f64(<vscale x 2 x double> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_v_nxv2f64_nxv2f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m2,ta,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x double> @llvm.riscv.vfrsqrte7.nxv2f64(
|
||||
<vscale x 2 x double> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 2 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 2 x double> @llvm.riscv.vfrsqrte7.mask.nxv2f64(
|
||||
<vscale x 2 x double>,
|
||||
<vscale x 2 x double>,
|
||||
<vscale x 2 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 2 x double> @intrinsic_vfrsqrte7_mask_v_nxv2f64_nxv2f64(<vscale x 2 x i1> %0, <vscale x 2 x double> %1, <vscale x 2 x double> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_mask_v_nxv2f64_nxv2f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m2,tu,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v10, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 2 x double> @llvm.riscv.vfrsqrte7.mask.nxv2f64(
|
||||
<vscale x 2 x double> %1,
|
||||
<vscale x 2 x double> %2,
|
||||
<vscale x 2 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 2 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x double> @llvm.riscv.vfrsqrte7.nxv4f64(
|
||||
<vscale x 4 x double>,
|
||||
i64);
|
||||
|
||||
define <vscale x 4 x double> @intrinsic_vfrsqrte7_v_nxv4f64_nxv4f64(<vscale x 4 x double> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_v_nxv4f64_nxv4f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m4,ta,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x double> @llvm.riscv.vfrsqrte7.nxv4f64(
|
||||
<vscale x 4 x double> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 4 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 4 x double> @llvm.riscv.vfrsqrte7.mask.nxv4f64(
|
||||
<vscale x 4 x double>,
|
||||
<vscale x 4 x double>,
|
||||
<vscale x 4 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 4 x double> @intrinsic_vfrsqrte7_mask_v_nxv4f64_nxv4f64(<vscale x 4 x i1> %0, <vscale x 4 x double> %1, <vscale x 4 x double> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_mask_v_nxv4f64_nxv4f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m4,tu,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v12, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 4 x double> @llvm.riscv.vfrsqrte7.mask.nxv4f64(
|
||||
<vscale x 4 x double> %1,
|
||||
<vscale x 4 x double> %2,
|
||||
<vscale x 4 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 4 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x double> @llvm.riscv.vfrsqrte7.nxv8f64(
|
||||
<vscale x 8 x double>,
|
||||
i64);
|
||||
|
||||
define <vscale x 8 x double> @intrinsic_vfrsqrte7_v_nxv8f64_nxv8f64(<vscale x 8 x double> %0, i64 %1) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_v_nxv8f64_nxv8f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m8,ta,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v8
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x double> @llvm.riscv.vfrsqrte7.nxv8f64(
|
||||
<vscale x 8 x double> %0,
|
||||
i64 %1)
|
||||
|
||||
ret <vscale x 8 x double> %a
|
||||
}
|
||||
|
||||
declare <vscale x 8 x double> @llvm.riscv.vfrsqrte7.mask.nxv8f64(
|
||||
<vscale x 8 x double>,
|
||||
<vscale x 8 x double>,
|
||||
<vscale x 8 x i1>,
|
||||
i64);
|
||||
|
||||
define <vscale x 8 x double> @intrinsic_vfrsqrte7_mask_v_nxv8f64_nxv8f64(<vscale x 8 x i1> %0, <vscale x 8 x double> %1, <vscale x 8 x double> %2, i64 %3) nounwind {
|
||||
; CHECK-LABEL: intrinsic_vfrsqrte7_mask_v_nxv8f64_nxv8f64:
|
||||
; CHECK: # %bb.0: # %entry
|
||||
; CHECK-NEXT: vsetvli a0, a0, e64,m8,tu,mu
|
||||
; CHECK-NEXT: vfrsqrte7.v v8, v16, v0.t
|
||||
; CHECK-NEXT: jalr zero, 0(ra)
|
||||
entry:
|
||||
%a = call <vscale x 8 x double> @llvm.riscv.vfrsqrte7.mask.nxv8f64(
|
||||
<vscale x 8 x double> %1,
|
||||
<vscale x 8 x double> %2,
|
||||
<vscale x 8 x i1> %0,
|
||||
i64 %3)
|
||||
|
||||
ret <vscale x 8 x double> %a
|
||||
}
|
@ -22,26 +22,26 @@ vfsqrt.v v8, v4
|
||||
# CHECK-ERROR: instruction requires the following: 'F'{{.*}}'V'
|
||||
# CHECK-UNKNOWN: 57 14 40 4e <unknown>
|
||||
|
||||
vfrsqrte7.v v8, v4, v0.t
|
||||
# CHECK-INST: vfrsqrte7.v v8, v4, v0.t
|
||||
vfrsqrt7.v v8, v4, v0.t
|
||||
# CHECK-INST: vfrsqrt7.v v8, v4, v0.t
|
||||
# CHECK-ENCODING: [0x57,0x14,0x42,0x4c]
|
||||
# CHECK-ERROR: instruction requires the following: 'F'{{.*}}'V'
|
||||
# CHECK-UNKNOWN: 57 14 42 4c <unknown>
|
||||
|
||||
vfrsqrte7.v v8, v4
|
||||
# CHECK-INST: vfrsqrte7.v v8, v4
|
||||
vfrsqrt7.v v8, v4
|
||||
# CHECK-INST: vfrsqrt7.v v8, v4
|
||||
# CHECK-ENCODING: [0x57,0x14,0x42,0x4e]
|
||||
# CHECK-ERROR: instruction requires the following: 'F'{{.*}}'V'
|
||||
# CHECK-UNKNOWN: 57 14 42 4e <unknown>
|
||||
|
||||
vfrece7.v v8, v4, v0.t
|
||||
# CHECK-INST: vfrece7.v v8, v4, v0.t
|
||||
vfrec7.v v8, v4, v0.t
|
||||
# CHECK-INST: vfrec7.v v8, v4, v0.t
|
||||
# CHECK-ENCODING: [0x57,0x94,0x42,0x4c]
|
||||
# CHECK-ERROR: instruction requires the following: 'F'{{.*}}'V'
|
||||
# CHECK-UNKNOWN: 57 94 42 4c <unknown>
|
||||
|
||||
vfrece7.v v8, v4
|
||||
# CHECK-INST: vfrece7.v v8, v4
|
||||
vfrec7.v v8, v4
|
||||
# CHECK-INST: vfrec7.v v8, v4
|
||||
# CHECK-ENCODING: [0x57,0x94,0x42,0x4e]
|
||||
# CHECK-ERROR: instruction requires the following: 'F'{{.*}}'V'
|
||||
# CHECK-UNKNOWN: 57 94 42 4e <unknown>
|
||||
|
@ -1,6 +1,15 @@
|
||||
# RUN: not llvm-mc -triple=riscv64 --mattr=+experimental-v --mattr=+f %s 2>&1 \
|
||||
# RUN: | FileCheck %s --check-prefix=CHECK-ERROR
|
||||
|
||||
vsetivli a2, 32, e8,m1
|
||||
# CHECK-ERROR: unknown operand
|
||||
|
||||
vsetivli a2, zero, e8,m1
|
||||
# CHECK-ERROR: unknown operand
|
||||
|
||||
vsetivli a2, 5, e31
|
||||
# CHECK-ERROR: operand must be e[8|16|32|64|128|256|512|1024],m[1|2|4|8|f2|f4|f8],[ta|tu],[ma|mu]
|
||||
|
||||
vsetvli a2, a0, e31
|
||||
# CHECK-ERROR: operand must be e[8|16|32|64|128|256|512|1024],m[1|2|4|8|f2|f4|f8],[ta|tu],[ma|mu]
|
||||
|
||||
|
@ -8,6 +8,12 @@
|
||||
# RUN: llvm-mc -triple=riscv64 -filetype=obj --mattr=+experimental-v %s \
|
||||
# RUN: | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN
|
||||
|
||||
vle1.v v8, (a0)
|
||||
# CHECK-INST: vle1.v v8, (a0)
|
||||
# CHECK-ENCODING: [0x07,0x04,0xb5,0x00]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 04 b5 00 <unknown>
|
||||
|
||||
vle8.v v8, (a0), v0.t
|
||||
# CHECK-INST: vle8.v v8, (a0), v0.t
|
||||
# CHECK-ENCODING: [0x07,0x04,0x05,0x00]
|
||||
@ -56,54 +62,6 @@ vle64.v v8, (a0)
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 74 05 02 <unknown>
|
||||
|
||||
vle128.v v8, (a0), v0.t
|
||||
# CHECK-INST: vle128.v v8, (a0), v0.t
|
||||
# CHECK-ENCODING: [0x07,0x04,0x05,0x10]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 04 05 10 <unknown>
|
||||
|
||||
vle128.v v8, (a0)
|
||||
# CHECK-INST: vle128.v v8, (a0)
|
||||
# CHECK-ENCODING: [0x07,0x04,0x05,0x12]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 04 05 12 <unknown>
|
||||
|
||||
vle256.v v8, (a0), v0.t
|
||||
# CHECK-INST: vle256.v v8, (a0), v0.t
|
||||
# CHECK-ENCODING: [0x07,0x54,0x05,0x10]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 54 05 10 <unknown>
|
||||
|
||||
vle256.v v8, (a0)
|
||||
# CHECK-INST: vle256.v v8, (a0)
|
||||
# CHECK-ENCODING: [0x07,0x54,0x05,0x12]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 54 05 12 <unknown>
|
||||
|
||||
vle512.v v8, (a0), v0.t
|
||||
# CHECK-INST: vle512.v v8, (a0), v0.t
|
||||
# CHECK-ENCODING: [0x07,0x64,0x05,0x10]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 64 05 10 <unknown>
|
||||
|
||||
vle512.v v8, (a0)
|
||||
# CHECK-INST: vle512.v v8, (a0)
|
||||
# CHECK-ENCODING: [0x07,0x64,0x05,0x12]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 64 05 12 <unknown>
|
||||
|
||||
vle1024.v v8, (a0), v0.t
|
||||
# CHECK-INST: vle1024.v v8, (a0), v0.t
|
||||
# CHECK-ENCODING: [0x07,0x74,0x05,0x10]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 74 05 10 <unknown>
|
||||
|
||||
vle1024.v v8, (a0)
|
||||
# CHECK-INST: vle1024.v v8, (a0)
|
||||
# CHECK-ENCODING: [0x07,0x74,0x05,0x12]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 74 05 12 <unknown>
|
||||
|
||||
vle8ff.v v8, (a0), v0.t
|
||||
# CHECK-INST: vle8ff.v v8, (a0), v0.t
|
||||
# CHECK-ENCODING: [0x07,0x04,0x05,0x01]
|
||||
@ -152,54 +110,6 @@ vle64ff.v v8, (a0)
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 74 05 03 <unknown>
|
||||
|
||||
vle128ff.v v8, (a0), v0.t
|
||||
# CHECK-INST: vle128ff.v v8, (a0), v0.t
|
||||
# CHECK-ENCODING: [0x07,0x04,0x05,0x11]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 04 05 11 <unknown>
|
||||
|
||||
vle128ff.v v8, (a0)
|
||||
# CHECK-INST: vle128ff.v v8, (a0)
|
||||
# CHECK-ENCODING: [0x07,0x04,0x05,0x13]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 04 05 13 <unknown>
|
||||
|
||||
vle256ff.v v8, (a0), v0.t
|
||||
# CHECK-INST: vle256ff.v v8, (a0), v0.t
|
||||
# CHECK-ENCODING: [0x07,0x54,0x05,0x11]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 54 05 11 <unknown>
|
||||
|
||||
vle256ff.v v8, (a0)
|
||||
# CHECK-INST: vle256ff.v v8, (a0)
|
||||
# CHECK-ENCODING: [0x07,0x54,0x05,0x13]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 54 05 13 <unknown>
|
||||
|
||||
vle512ff.v v8, (a0), v0.t
|
||||
# CHECK-INST: vle512ff.v v8, (a0), v0.t
|
||||
# CHECK-ENCODING: [0x07,0x64,0x05,0x11]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 64 05 11 <unknown>
|
||||
|
||||
vle512ff.v v8, (a0)
|
||||
# CHECK-INST: vle512ff.v v8, (a0)
|
||||
# CHECK-ENCODING: [0x07,0x64,0x05,0x13]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 64 05 13 <unknown>
|
||||
|
||||
vle1024ff.v v8, (a0), v0.t
|
||||
# CHECK-INST: vle1024ff.v v8, (a0), v0.t
|
||||
# CHECK-ENCODING: [0x07,0x74,0x05,0x11]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 74 05 11 <unknown>
|
||||
|
||||
vle1024ff.v v8, (a0)
|
||||
# CHECK-INST: vle1024ff.v v8, (a0)
|
||||
# CHECK-ENCODING: [0x07,0x74,0x05,0x13]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 74 05 13 <unknown>
|
||||
|
||||
vlse8.v v8, (a0), a1, v0.t
|
||||
# CHECK-INST: vlse8.v v8, (a0), a1, v0.t
|
||||
# CHECK-ENCODING: [0x07,0x04,0xb5,0x08]
|
||||
@ -248,54 +158,6 @@ vlse64.v v8, (a0), a1
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 74 b5 0a <unknown>
|
||||
|
||||
vlse128.v v8, (a0), a1, v0.t
|
||||
# CHECK-INST: vlse128.v v8, (a0), a1, v0.t
|
||||
# CHECK-ENCODING: [0x07,0x04,0xb5,0x18]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 04 b5 18 <unknown>
|
||||
|
||||
vlse128.v v8, (a0), a1
|
||||
# CHECK-INST: vlse128.v v8, (a0), a1
|
||||
# CHECK-ENCODING: [0x07,0x04,0xb5,0x1a]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 04 b5 1a <unknown>
|
||||
|
||||
vlse256.v v8, (a0), a1, v0.t
|
||||
# CHECK-INST: vlse256.v v8, (a0), a1, v0.t
|
||||
# CHECK-ENCODING: [0x07,0x54,0xb5,0x18]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 54 b5 18 <unknown>
|
||||
|
||||
vlse256.v v8, (a0), a1
|
||||
# CHECK-INST: vlse256.v v8, (a0), a1
|
||||
# CHECK-ENCODING: [0x07,0x54,0xb5,0x1a]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 54 b5 1a <unknown>
|
||||
|
||||
vlse512.v v8, (a0), a1, v0.t
|
||||
# CHECK-INST: vlse512.v v8, (a0), a1, v0.t
|
||||
# CHECK-ENCODING: [0x07,0x64,0xb5,0x18]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 64 b5 18 <unknown>
|
||||
|
||||
vlse512.v v8, (a0), a1
|
||||
# CHECK-INST: vlse512.v v8, (a0), a1
|
||||
# CHECK-ENCODING: [0x07,0x64,0xb5,0x1a]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 64 b5 1a <unknown>
|
||||
|
||||
vlse1024.v v8, (a0), a1, v0.t
|
||||
# CHECK-INST: vlse1024.v v8, (a0), a1, v0.t
|
||||
# CHECK-ENCODING: [0x07,0x74,0xb5,0x18]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 74 b5 18 <unknown>
|
||||
|
||||
vlse1024.v v8, (a0), a1
|
||||
# CHECK-INST: vlse1024.v v8, (a0), a1
|
||||
# CHECK-ENCODING: [0x07,0x74,0xb5,0x1a]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 74 b5 1a <unknown>
|
||||
|
||||
vluxei8.v v8, (a0), v4, v0.t
|
||||
# CHECK-INST: vluxei8.v v8, (a0), v4, v0.t
|
||||
# CHECK-ENCODING: [0x07,0x04,0x45,0x04]
|
||||
@ -416,30 +278,6 @@ vl1re64.v v8, (a0)
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 74 85 22 <unknown>
|
||||
|
||||
vl1re128.v v8, (a0)
|
||||
# CHECK-INST: vl1re128.v v8, (a0)
|
||||
# CHECK-ENCODING: [0x07,0x04,0x85,0x32]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 04 85 32 <unknown>
|
||||
|
||||
vl1re256.v v8, (a0)
|
||||
# CHECK-INST: vl1re256.v v8, (a0)
|
||||
# CHECK-ENCODING: [0x07,0x54,0x85,0x32]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 54 85 32 <unknown>
|
||||
|
||||
vl1re512.v v8, (a0)
|
||||
# CHECK-INST: vl1re512.v v8, (a0)
|
||||
# CHECK-ENCODING: [0x07,0x64,0x85,0x32]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 64 85 32 <unknown>
|
||||
|
||||
vl1re1024.v v8, (a0)
|
||||
# CHECK-INST: vl1re1024.v v8, (a0)
|
||||
# CHECK-ENCODING: [0x07,0x74,0x85,0x32]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 74 85 32 <unknown>
|
||||
|
||||
vl2re8.v v8, (a0)
|
||||
# CHECK-INST: vl2re8.v v8, (a0)
|
||||
# CHECK-ENCODING: [0x07,0x04,0x85,0x42]
|
||||
@ -464,30 +302,6 @@ vl2re64.v v8, (a0)
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 74 85 42 <unknown>
|
||||
|
||||
vl2re128.v v8, (a0)
|
||||
# CHECK-INST: vl2re128.v v8, (a0)
|
||||
# CHECK-ENCODING: [0x07,0x04,0x85,0x52]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 04 85 52 <unknown>
|
||||
|
||||
vl2re256.v v8, (a0)
|
||||
# CHECK-INST: vl2re256.v v8, (a0)
|
||||
# CHECK-ENCODING: [0x07,0x54,0x85,0x52]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 54 85 52 <unknown>
|
||||
|
||||
vl2re512.v v8, (a0)
|
||||
# CHECK-INST: vl2re512.v v8, (a0)
|
||||
# CHECK-ENCODING: [0x07,0x64,0x85,0x52]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 64 85 52 <unknown>
|
||||
|
||||
vl2re1024.v v8, (a0)
|
||||
# CHECK-INST: vl2re1024.v v8, (a0)
|
||||
# CHECK-ENCODING: [0x07,0x74,0x85,0x52]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 74 85 52 <unknown>
|
||||
|
||||
vl4re8.v v8, (a0)
|
||||
# CHECK-INST: vl4re8.v v8, (a0)
|
||||
# CHECK-ENCODING: [0x07,0x04,0x85,0x82]
|
||||
@ -512,30 +326,6 @@ vl4re64.v v8, (a0)
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 74 85 82 <unknown>
|
||||
|
||||
vl4re128.v v8, (a0)
|
||||
# CHECK-INST: vl4re128.v v8, (a0)
|
||||
# CHECK-ENCODING: [0x07,0x04,0x85,0x92]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 04 85 92 <unknown>
|
||||
|
||||
vl4re256.v v8, (a0)
|
||||
# CHECK-INST: vl4re256.v v8, (a0)
|
||||
# CHECK-ENCODING: [0x07,0x54,0x85,0x92]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 54 85 92 <unknown>
|
||||
|
||||
vl4re512.v v8, (a0)
|
||||
# CHECK-INST: vl4re512.v v8, (a0)
|
||||
# CHECK-ENCODING: [0x07,0x64,0x85,0x92]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 64 85 92 <unknown>
|
||||
|
||||
vl4re1024.v v8, (a0)
|
||||
# CHECK-INST: vl4re1024.v v8, (a0)
|
||||
# CHECK-ENCODING: [0x07,0x74,0x85,0x92]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 74 85 92 <unknown>
|
||||
|
||||
vl8re8.v v8, (a0)
|
||||
# CHECK-INST: vl8re8.v v8, (a0)
|
||||
# CHECK-ENCODING: [0x07,0x04,0x85,0x02]
|
||||
@ -559,27 +349,3 @@ vl8re64.v v8, (a0)
|
||||
# CHECK-ENCODING: [0x07,0x74,0x85,0x02]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 74 85 02 <unknown>
|
||||
|
||||
vl8re128.v v8, (a0)
|
||||
# CHECK-INST: vl8re128.v v8, (a0)
|
||||
# CHECK-ENCODING: [0x07,0x04,0x85,0x12]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 04 85 12 <unknown>
|
||||
|
||||
vl8re256.v v8, (a0)
|
||||
# CHECK-INST: vl8re256.v v8, (a0)
|
||||
# CHECK-ENCODING: [0x07,0x54,0x85,0x12]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 54 85 12 <unknown>
|
||||
|
||||
vl8re512.v v8, (a0)
|
||||
# CHECK-INST: vl8re512.v v8, (a0)
|
||||
# CHECK-ENCODING: [0x07,0x64,0x85,0x12]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 64 85 12 <unknown>
|
||||
|
||||
vl8re1024.v v8, (a0)
|
||||
# CHECK-INST: vl8re1024.v v8, (a0)
|
||||
# CHECK-ENCODING: [0x07,0x74,0x85,0x12]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 07 74 85 12 <unknown>
|
||||
|
@ -8,6 +8,12 @@
|
||||
# RUN: llvm-mc -triple=riscv64 -filetype=obj --mattr=+experimental-v %s \
|
||||
# RUN: | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN
|
||||
|
||||
vse1.v v24, (a0)
|
||||
# CHECK-INST: vse1.v v24, (a0)
|
||||
# CHECK-ENCODING: [0x27,0x0c,0xb5,0x00]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 27 0c b5 00 <unknown>
|
||||
|
||||
vse8.v v24, (a0), v0.t
|
||||
# CHECK-INST: vse8.v v24, (a0), v0.t
|
||||
# CHECK-ENCODING: [0x27,0x0c,0x05,0x00]
|
||||
@ -56,54 +62,6 @@ vse64.v v24, (a0)
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 27 7c 05 02 <unknown>
|
||||
|
||||
vse128.v v24, (a0), v0.t
|
||||
# CHECK-INST: vse128.v v24, (a0), v0.t
|
||||
# CHECK-ENCODING: [0x27,0x0c,0x05,0x10]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 27 0c 05 10 <unknown>
|
||||
|
||||
vse128.v v24, (a0)
|
||||
# CHECK-INST: vse128.v v24, (a0)
|
||||
# CHECK-ENCODING: [0x27,0x0c,0x05,0x12]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 27 0c 05 12 <unknown>
|
||||
|
||||
vse256.v v24, (a0), v0.t
|
||||
# CHECK-INST: vse256.v v24, (a0), v0.t
|
||||
# CHECK-ENCODING: [0x27,0x5c,0x05,0x10]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 27 5c 05 10 <unknown>
|
||||
|
||||
vse256.v v24, (a0)
|
||||
# CHECK-INST: vse256.v v24, (a0)
|
||||
# CHECK-ENCODING: [0x27,0x5c,0x05,0x12]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 27 5c 05 12 <unknown>
|
||||
|
||||
vse512.v v24, (a0), v0.t
|
||||
# CHECK-INST: vse512.v v24, (a0), v0.t
|
||||
# CHECK-ENCODING: [0x27,0x6c,0x05,0x10]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 27 6c 05 10 <unknown>
|
||||
|
||||
vse512.v v24, (a0)
|
||||
# CHECK-INST: vse512.v v24, (a0)
|
||||
# CHECK-ENCODING: [0x27,0x6c,0x05,0x12]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 27 6c 05 12 <unknown>
|
||||
|
||||
vse1024.v v24, (a0), v0.t
|
||||
# CHECK-INST: vse1024.v v24, (a0), v0.t
|
||||
# CHECK-ENCODING: [0x27,0x7c,0x05,0x10]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 27 7c 05 10 <unknown>
|
||||
|
||||
vse1024.v v24, (a0)
|
||||
# CHECK-INST: vse1024.v v24, (a0)
|
||||
# CHECK-ENCODING: [0x27,0x7c,0x05,0x12]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 27 7c 05 12 <unknown>
|
||||
|
||||
vsse8.v v24, (a0), a1, v0.t
|
||||
# CHECK-INST: vsse8.v v24, (a0), a1, v0.t
|
||||
# CHECK-ENCODING: [0x27,0x0c,0xb5,0x08]
|
||||
@ -152,54 +110,6 @@ vsse64.v v24, (a0), a1
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 27 7c b5 0a <unknown>
|
||||
|
||||
vsse128.v v24, (a0), a1, v0.t
|
||||
# CHECK-INST: vsse128.v v24, (a0), a1, v0.t
|
||||
# CHECK-ENCODING: [0x27,0x0c,0xb5,0x18]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 27 0c b5 18 <unknown>
|
||||
|
||||
vsse128.v v24, (a0), a1
|
||||
# CHECK-INST: vsse128.v v24, (a0), a1
|
||||
# CHECK-ENCODING: [0x27,0x0c,0xb5,0x1a]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 27 0c b5 1a <unknown>
|
||||
|
||||
vsse256.v v24, (a0), a1, v0.t
|
||||
# CHECK-INST: vsse256.v v24, (a0), a1, v0.t
|
||||
# CHECK-ENCODING: [0x27,0x5c,0xb5,0x18]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 27 5c b5 18 <unknown>
|
||||
|
||||
vsse256.v v24, (a0), a1
|
||||
# CHECK-INST: vsse256.v v24, (a0), a1
|
||||
# CHECK-ENCODING: [0x27,0x5c,0xb5,0x1a]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 27 5c b5 1a <unknown>
|
||||
|
||||
vsse512.v v24, (a0), a1, v0.t
|
||||
# CHECK-INST: vsse512.v v24, (a0), a1, v0.t
|
||||
# CHECK-ENCODING: [0x27,0x6c,0xb5,0x18]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 27 6c b5 18 <unknown>
|
||||
|
||||
vsse512.v v24, (a0), a1
|
||||
# CHECK-INST: vsse512.v v24, (a0), a1
|
||||
# CHECK-ENCODING: [0x27,0x6c,0xb5,0x1a]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 27 6c b5 1a <unknown>
|
||||
|
||||
vsse1024.v v24, (a0), a1, v0.t
|
||||
# CHECK-INST: vsse1024.v v24, (a0), a1, v0.t
|
||||
# CHECK-ENCODING: [0x27,0x7c,0xb5,0x18]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 27 7c b5 18 <unknown>
|
||||
|
||||
vsse1024.v v24, (a0), a1
|
||||
# CHECK-INST: vsse1024.v v24, (a0), a1
|
||||
# CHECK-ENCODING: [0x27,0x7c,0xb5,0x1a]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 27 7c b5 1a <unknown>
|
||||
|
||||
vsuxei8.v v24, (a0), v4, v0.t
|
||||
# CHECK-INST: vsuxei8.v v24, (a0), v4, v0.t
|
||||
# CHECK-ENCODING: [0x27,0x0c,0x45,0x04]
|
||||
|
@ -79,3 +79,21 @@ vsetvl a2, a0, a1
|
||||
# CHECK-ENCODING: [0x57,0x76,0xb5,0x80]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 57 76 b5 80 <unknown>
|
||||
|
||||
vsetivli a2, 0, e32,m1,ta,ma
|
||||
# CHECK-INST: vsetivli a2, 0, e32,m1,ta,ma
|
||||
# CHECK-ENCODING: [0x57,0x76,0x00,0xcd]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 57 76 00 cd <unknown>
|
||||
|
||||
vsetivli a2, 15, e32,m1,ta,ma
|
||||
# CHECK-INST: vsetivli a2, 15, e32,m1,ta,ma
|
||||
# CHECK-ENCODING: [0x57,0xf6,0x07,0xcd]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 57 f6 07 cd <unknown>
|
||||
|
||||
vsetivli a2, 31, e32,m1,ta,ma
|
||||
# CHECK-INST: vsetivli a2, 31, e32,m1,ta,ma
|
||||
# CHECK-ENCODING: [0x57,0xf6,0x0f,0xcd]
|
||||
# CHECK-ERROR: instruction requires the following: 'V' (Vector Instructions)
|
||||
# CHECK-UNKNOWN: 57 f6 0f cd <unknown>
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user