craig.topper added inline comments.
================ Comment at: llvm/test/MC/RISCV/rvv/rv64zvkns.s:59 + +vaeskf1.vi v10, v9, 1 +# CHECK-INST: vaeskf1.vi v10, v9, 1 ---------------- ego wrote: > If I replaces "v10" with "v0", the test fails with an assertion failure. My > own patch uses a slightly different class hierarchy but hits the same > assertion. > > > ``` > FAIL: LLVM :: MC/RISCV/rvv/rv64zvkns.s (3 of 8) > ******************** TEST 'LLVM :: MC/RISCV/rvv/rv64zvkns.s' FAILED > ******************** > Script: > -- > : 'RUN: at line 1'; > /Users/ego/root-dirs/scratch/projects/llvm-project/build/bin/llvm-mc > -triple=riscv64 -show-encoding --mattr=+zve32x --mattr=+experimental-zvkns > /Users/ego/root-dirs/scratch/projects/llvm-project/llvm/test/MC/RISCV/rvv/rv64zvkns.s > | > /Users/ego/root-dirs/scratch/projects/llvm-project/build/bin/FileCheck > /Users/ego/root-dirs/scratch/projects/llvm-project/llvm/test/MC/RISCV/rvv/rv64zvkns.s > --check-prefixes=CHECK-ENCODING,CHECK-INST > : 'RUN: at line 3'; not > /Users/ego/root-dirs/scratch/projects/llvm-project/build/bin/llvm-mc > -triple=riscv64 -show-encoding > /Users/ego/root-dirs/scratch/projects/llvm-project/llvm/test/MC/RISCV/rvv/rv64zvkns.s > 2>&1 | > /Users/ego/root-dirs/scratch/projects/llvm-project/build/bin/FileCheck > /Users/ego/root-dirs/scratch/projects/llvm-project/llvm/test/MC/RISCV/rvv/rv64zvkns.s > --check-prefix=CHECK-ERROR > : 'RUN: at line 5'; > /Users/ego/root-dirs/scratch/projects/llvm-project/build/bin/llvm-mc > -triple=riscv64 -filetype=obj --mattr=+zve32x --mattr=+experimental-zvkns > /Users/ego/root-dirs/scratch/projects/llvm-project/llvm/test/MC/RISCV/rvv/rv64zvkns.s > | > /Users/ego/root-dirs/scratch/projects/llvm-project/build/bin/llvm-objdump -d > --mattr=+zve32x --mattr=+experimental-zvkns - | > /Users/ego/root-dirs/scratch/projects/llvm-project/build/bin/FileCheck > /Users/ego/root-dirs/scratch/projects/llvm-project/llvm/test/MC/RISCV/rvv/rv64zvkns.s > --check-prefix=CHECK-INST > : 'RUN: at line 8'; > /Users/ego/root-dirs/scratch/projects/llvm-project/build/bin/llvm-mc > -triple=riscv64 -filetype=obj --mattr=+zve32x --mattr=+experimental-zvkns > /Users/ego/root-dirs/scratch/projects/llvm-project/llvm/test/MC/RISCV/rvv/rv64zvkns.s > | > /Users/ego/root-dirs/scratch/projects/llvm-project/build/bin/llvm-objdump -d > - | /Users/ego/root-dirs/scratch/projects/llvm-project/build/bin/FileCheck > /Users/ego/root-dirs/scratch/projects/llvm-project/llvm/test/MC/RISCV/rvv/rv64zvkns.s > --check-prefix=CHECK-UNKNOWN > -- > Exit Code: 2 > > Command Output (stderr): > -- > Assertion failed: (isReg() && "This is not a register operand!"), function > getReg, file MCInst.h, line 70. > PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ > and include the crash backtrace. > Stack dump: > 0. Program arguments: > /Users/ego/root-dirs/scratch/projects/llvm-project/build/bin/llvm-mc > -triple=riscv64 -show-encoding --mattr=+zve32x --mattr=+experimental-zvkns > /Users/ego/root-dirs/scratch/projects/llvm-project/llvm/test/MC/RISCV/rvv/rv64zvkns.s > Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH > or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it): > 0 libLLVMSupport.dylib 0x00000001023015e8 > llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56 > 1 libLLVMSupport.dylib 0x0000000102300840 > llvm::sys::RunSignalHandlers() + 112 > 2 libLLVMSupport.dylib 0x0000000102301c28 SignalHandler(int) + 304 > 3 libsystem_platform.dylib 0x00000001914f82a4 _sigtramp + 56 > 4 libsystem_pthread.dylib 0x00000001914c9cec pthread_kill + 288 > 5 libsystem_c.dylib 0x00000001914032c8 abort + 180 > 6 libsystem_c.dylib 0x0000000191402620 err + 0 > 7 libLLVMRISCVAsmParser.dylib 0x0000000100666208 (anonymous > namespace)::RISCVAsmParser::MatchAndEmitInstruction(llvm::SMLoc, unsigned > int&, llvm::SmallVectorImpl<std::__1::unique_ptr<llvm::MCParsedAsmOperand, > std::__1::default_delete<llvm::MCParsedAsmOperand>>>&, llvm::MCStreamer&, > unsigned long long&, bool) (.cold.42) + 0 > 8 libLLVMRISCVAsmParser.dylib 0x0000000100655084 (anonymous > namespace)::RISCVAsmParser::MatchAndEmitInstruction(llvm::SMLoc, unsigned > int&, llvm::SmallVectorImpl<std::__1::unique_ptr<llvm::MCParsedAsmOperand, > std::__1::default_delete<llvm::MCParsedAsmOperand>>>&, llvm::MCStreamer&, > unsigned long long&, bool) + 7268 > 9 libLLVMMCParser.dylib 0x0000000100c36c08 (anonymous > namespace)::AsmParser::parseAndMatchAndEmitTargetInstruction((anonymous > namespace)::ParseStatementInfo&, llvm::StringRef, llvm::AsmToken, > llvm::SMLoc) + 1356 > 10 libLLVMMCParser.dylib 0x0000000100c2d1d0 (anonymous > namespace)::AsmParser::parseStatement((anonymous > namespace)::ParseStatementInfo&, llvm::MCAsmParserSemaCallback*) + 3492 > 11 libLLVMMCParser.dylib 0x0000000100c27884 (anonymous > namespace)::AsmParser::Run(bool, bool) + 500 > 12 llvm-mc 0x000000010051ffc8 main + 6608 > 13 dyld 0x000000019119fe50 start + 2544 > FileCheck error: '<stdin>' is empty. > FileCheck command line: > /Users/ego/root-dirs/scratch/projects/llvm-project/build/bin/FileCheck > /Users/ego/root-dirs/scratch/projects/llvm-project/llvm/test/MC/RISCV/rvv/rv64zvkns.s > --check-prefixes=CHECK-ENCODING,CHECK-INST > > -- > > ``` Looks like it ended up with `RVVConstraint = VMConstraint` due to the classes it inherited. This caused validateInstruction to look for a mask operand that doesn't exist. Need to force it to the NoConstraint. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D138807/new/ https://reviews.llvm.org/D138807 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits