llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-mc Author: Koakuma (koachan) <details> <summary>Changes</summary> This enables `ParseForAllFeatures` to report the correct error message when trying to assemble instructions not available in V8 mode. --- Full diff: https://github.com/llvm/llvm-project/pull/96021.diff 3 Files Affected: - (modified) llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp (+2-1) - (modified) llvm/test/MC/Sparc/sparc-asm-errors.s (+1-1) - (modified) llvm/test/MC/Sparc/sparcv9-instructions.s (+26-26) ``````````diff diff --git a/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp b/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp index 3d8637bb8c359..34531fff31e8e 100644 --- a/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp +++ b/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp @@ -1189,7 +1189,8 @@ ParseStatus SparcAsmParser::parseCallTarget(OperandVector &Operands) { ParseStatus SparcAsmParser::parseOperand(OperandVector &Operands, StringRef Mnemonic) { - ParseStatus Res = MatchOperandParserImpl(Operands, Mnemonic); + ParseStatus Res = + MatchOperandParserImpl(Operands, Mnemonic, /*ParseForAllFeatures=*/true); // If there wasn't a custom match, try the generic matcher below. Otherwise, // there was a match, but an error occurred, in which case, just return that diff --git a/llvm/test/MC/Sparc/sparc-asm-errors.s b/llvm/test/MC/Sparc/sparc-asm-errors.s index 780f4e7fad787..2b3a2eb2bfae6 100644 --- a/llvm/test/MC/Sparc/sparc-asm-errors.s +++ b/llvm/test/MC/Sparc/sparc-asm-errors.s @@ -11,7 +11,7 @@ ! V9: unknown membar tag membar #BadTag - ! V8: instruction requires a CPU feature not currently enabled + ! V8: unexpected token ! V9: invalid membar mask number membar -127 diff --git a/llvm/test/MC/Sparc/sparcv9-instructions.s b/llvm/test/MC/Sparc/sparcv9-instructions.s index a7761c10c509b..68ae2ac5c98a4 100644 --- a/llvm/test/MC/Sparc/sparcv9-instructions.s +++ b/llvm/test/MC/Sparc/sparcv9-instructions.s @@ -537,112 +537,112 @@ ! V9: stxa %g0, [%g2+%i5] #ASI_SNF ! encoding: [0xc0,0xf0,0x90,0x7d] stxa %g0, [%g2 + %i5] #ASI_SNF - ! V8: error: invalid operand for instruction + ! V8: error: instruction requires a CPU feature not currently enabled ! V8-NEXT: prefetch [ %i1 + 0xf80 ], 1 ! V9: prefetch [%i1+3968], #one_read ! encoding: [0xc3,0x6e,0x6f,0x80] prefetch [ %i1 + 0xf80 ], 1 - ! V8: error: unexpected token + ! V8: error: instruction requires a CPU feature not currently enabled ! V8-NEXT: prefetch [ %i1 + 0xf80 ], #n_reads ! V9: prefetch [%i1+3968], #n_reads ! encoding: [0xc1,0x6e,0x6f,0x80] prefetch [ %i1 + 0xf80 ], #n_reads - ! V8: error: unexpected token + ! V8: error: instruction requires a CPU feature not currently enabled ! V8-NEXT: prefetch [ %i1 + 0xf80 ], #one_read ! V9: prefetch [%i1+3968], #one_read ! encoding: [0xc3,0x6e,0x6f,0x80] prefetch [ %i1 + 0xf80 ], #one_read - ! V8: error: unexpected token + ! V8: error: instruction requires a CPU feature not currently enabled ! V8-NEXT: prefetch [ %i1 + 0xf80 ], #n_writes ! V9: prefetch [%i1+3968], #n_writes ! encoding: [0xc5,0x6e,0x6f,0x80] prefetch [ %i1 + 0xf80 ], #n_writes - ! V8: error: unexpected token + ! V8: error: instruction requires a CPU feature not currently enabled ! V8-NEXT: prefetch [ %i1 + 0xf80 ], #one_write ! V9: prefetch [%i1+3968], #one_write ! encoding: [0xc7,0x6e,0x6f,0x80] prefetch [ %i1 + 0xf80 ], #one_write - ! V8: error: unexpected token + ! V8: error: instruction requires a CPU feature not currently enabled ! V8-NEXT: prefetch [ %i1 + 0xf80 ], #page ! V9: prefetch [%i1+3968], #page ! encoding: [0xc9,0x6e,0x6f,0x80] prefetch [ %i1 + 0xf80 ], #page - ! V8: error: unexpected token + ! V8: error: instruction requires a CPU feature not currently enabled ! V8-NEXT: prefetch [ %i1 + 0xf80 ], #unified ! V9: prefetch [%i1+3968], #unified ! encoding: [0xe3,0x6e,0x6f,0x80] prefetch [ %i1 + 0xf80 ], #unified - ! V8: error: unexpected token + ! V8: error: instruction requires a CPU feature not currently enabled ! V8-NEXT: prefetch [ %i1 + 0xf80 ], #n_reads_strong ! V9: prefetch [%i1+3968], #n_reads_strong ! encoding: [0xe9,0x6e,0x6f,0x80] prefetch [ %i1 + 0xf80 ], #n_reads_strong - ! V8: error: unexpected token + ! V8: error: instruction requires a CPU feature not currently enabled ! V8-NEXT: prefetch [ %i1 + 0xf80 ], #one_read_strong ! V9: prefetch [%i1+3968], #one_read_strong ! encoding: [0xeb,0x6e,0x6f,0x80] prefetch [ %i1 + 0xf80 ], #one_read_strong - ! V8: error: unexpected token + ! V8: error: instruction requires a CPU feature not currently enabled ! V8-NEXT: prefetch [ %i1 + 0xf80 ], #n_writes_strong ! V9: prefetch [%i1+3968], #n_writes_strong ! encoding: [0xed,0x6e,0x6f,0x80] prefetch [ %i1 + 0xf80 ], #n_writes_strong - ! V8: error: unexpected token + ! V8: error: instruction requires a CPU feature not currently enabled ! V8-NEXT: prefetch [ %i1 + 0xf80 ], #one_write_strong ! V9: prefetch [%i1+3968], #one_write_strong ! encoding: [0xef,0x6e,0x6f,0x80] prefetch [ %i1 + 0xf80 ], #one_write_strong - ! V8: error: invalid operand for instruction + ! V8: error: instruction requires a CPU feature not currently enabled ! V8-NEXT: prefetch [ %i1 + %i2 ], 1 ! V9: prefetch [%i1+%i2], #one_read ! encoding: [0xc3,0x6e,0x40,0x1a] prefetch [ %i1 + %i2 ], 1 - ! V8: error: unexpected token + ! V8: error: instruction requires a CPU feature not currently enabled ! V8-NEXT: prefetch [ %i1 + %i2 ], #n_reads ! V9: prefetch [%i1+%i2], #n_reads ! encoding: [0xc1,0x6e,0x40,0x1a] prefetch [ %i1 + %i2 ], #n_reads - ! V8: error: unexpected token + ! V8: error: instruction requires a CPU feature not currently enabled ! V8-NEXT: prefetch [ %i1 + %i2 ], #one_read ! V9: prefetch [%i1+%i2], #one_read ! encoding: [0xc3,0x6e,0x40,0x1a] prefetch [ %i1 + %i2 ], #one_read - ! V8: error: unexpected token + ! V8: error: instruction requires a CPU feature not currently enabled ! V8-NEXT: prefetch [ %i1 + %i2 ], #n_writes ! V9: prefetch [%i1+%i2], #n_writes ! encoding: [0xc5,0x6e,0x40,0x1a] prefetch [ %i1 + %i2 ], #n_writes - ! V8: error: unexpected token + ! V8: error: instruction requires a CPU feature not currently enabled ! V8-NEXT: prefetch [ %i1 + %i2 ], #one_write ! V9: prefetch [%i1+%i2], #one_write ! encoding: [0xc7,0x6e,0x40,0x1a] prefetch [ %i1 + %i2 ], #one_write - ! V8: error: unexpected token + ! V8: error: instruction requires a CPU feature not currently enabled ! V8-NEXT: prefetch [ %i1 + %i2 ], #page ! V9: prefetch [%i1+%i2], #page ! encoding: [0xc9,0x6e,0x40,0x1a] prefetch [ %i1 + %i2 ], #page - ! V8: error: unexpected token + ! V8: error: instruction requires a CPU feature not currently enabled ! V8-NEXT: prefetch [ %i1 + %i2 ], #unified ! V9: prefetch [%i1+%i2], #unified ! encoding: [0xe3,0x6e,0x40,0x1a] prefetch [ %i1 + %i2 ], #unified - ! V8: error: unexpected token + ! V8: error: instruction requires a CPU feature not currently enabled ! V8-NEXT: prefetch [ %i1 + %i2 ], #n_reads_strong ! V9: prefetch [%i1+%i2], #n_reads_strong ! encoding: [0xe9,0x6e,0x40,0x1a] prefetch [ %i1 + %i2 ], #n_reads_strong - ! V8: error: unexpected token + ! V8: error: instruction requires a CPU feature not currently enabled ! V8-NEXT: prefetch [ %i1 + %i2 ], #one_read_strong ! V9: prefetch [%i1+%i2], #one_read_strong ! encoding: [0xeb,0x6e,0x40,0x1a] prefetch [ %i1 + %i2 ], #one_read_strong - ! V8: error: unexpected token + ! V8: error: instruction requires a CPU feature not currently enabled ! V8-NEXT: prefetch [ %i1 + %i2 ], #n_writes_strong ! V9: prefetch [%i1+%i2], #n_writes_strong ! encoding: [0xed,0x6e,0x40,0x1a] prefetch [ %i1 + %i2 ], #n_writes_strong - ! V8: error: unexpected token + ! V8: error: instruction requires a CPU feature not currently enabled ! V8-NEXT: prefetch [ %i1 + %i2 ], #one_write_strong ! V9: prefetch [%i1+%i2], #one_write_strong ! encoding: [0xef,0x6e,0x40,0x1a] prefetch [ %i1 + %i2 ], #one_write_strong @@ -657,22 +657,22 @@ ! V9: prefetcha [%i1+3968] %asi, #one_read ! encoding: [0xc3,0xee,0x6f,0x80] prefetcha [ %i1 + 0xf80 ] %asi, #one_read - ! V8: error: invalid operand for instruction + ! V8: error: instruction requires a CPU feature not currently enabled ! V8-NEXT: prefetcha [ %i1 + %i2 ] #ASI_SNF, 1 ! V9: prefetcha [%i1+%i2] #ASI_SNF, #one_read ! encoding: [0xc3,0xee,0x50,0x7a] prefetcha [ %i1 + %i2 ] #ASI_SNF, 1 - ! V8: error: unexpected token + ! V8: error: instruction requires a CPU feature not currently enabled ! V8-NEXT: prefetcha [ %i1 + %i2 ] #ASI_SNF, #one_read ! V9: prefetcha [%i1+%i2] #ASI_SNF, #one_read ! encoding: [0xc3,0xee,0x50,0x7a] prefetcha [ %i1 + %i2 ] #ASI_SNF, #one_read - ! V8: error: invalid operand for instruction + ! V8: error: instruction requires a CPU feature not currently enabled ! V8-NEXT: prefetcha [ %i1 + %i2 ] 131, 1 ! V9: prefetcha [%i1+%i2] #ASI_SNF, #one_read ! encoding: [0xc3,0xee,0x50,0x7a] prefetcha [ %i1 + %i2 ] 131, 1 - ! V8: error: unexpected token + ! V8: error: instruction requires a CPU feature not currently enabled ! V8-NEXT: prefetcha [ %i1 + %i2 ] 131, #one_read ! V9: prefetcha [%i1+%i2] #ASI_SNF, #one_read ! encoding: [0xc3,0xee,0x50,0x7a] prefetcha [ %i1 + %i2 ] 131, #one_read `````````` </details> https://github.com/llvm/llvm-project/pull/96021 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits