[llvm-branch-commits] [llvm] 68d45f8 - Revert "[AMDGPU] Add AMDGPU specific variadic operation MCExprs (#82022)"
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Wed Mar 6 19:35:21 PST 2024
Author: Florian Mayer
Date: 2024-03-06T19:35:15-08:00
New Revision: 68d45f82080bc423fb9a78dd7112ce2b9ee46e99
URL: https://github.com/llvm/llvm-project/commit/68d45f82080bc423fb9a78dd7112ce2b9ee46e99
DIFF: https://github.com/llvm/llvm-project/commit/68d45f82080bc423fb9a78dd7112ce2b9ee46e99.diff
LOG: Revert "[AMDGPU] Add AMDGPU specific variadic operation MCExprs (#82022)"
This reverts commit bec2d105c7b8b39c6d090146d076201d1cd61991.
Added:
Modified:
llvm/docs/AMDGPUUsage.rst
llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
llvm/lib/Target/AMDGPU/MCTargetDesc/CMakeLists.txt
Removed:
llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCExpr.cpp
llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCExpr.h
llvm/test/MC/AMDGPU/mcexpr_amd.s
llvm/test/MC/AMDGPU/mcexpr_amd_err.s
################################################################################
diff --git a/llvm/docs/AMDGPUUsage.rst b/llvm/docs/AMDGPUUsage.rst
index c7cb06ffbef1e0..7f39f69cae60db 100644
--- a/llvm/docs/AMDGPUUsage.rst
+++ b/llvm/docs/AMDGPUUsage.rst
@@ -1534,25 +1534,6 @@ The AMDGPU backend supports the following calling conventions:
=============================== ==========================================================
-AMDGPU MCExpr
--------------
-
-As part of the AMDGPU MC layer, AMDGPU provides the following target specific
-``MCExpr``\s.
-
- .. table:: AMDGPU MCExpr types:
- :name: amdgpu-mcexpr-table
-
- =================== ================= ========================================================
- MCExpr Operands Return value
- =================== ================= ========================================================
- ``max(arg, ...)`` 1 or more Variadic signed operation that returns the maximum
- value of all its arguments.
-
- ``or(arg, ...)`` 1 or more Variadic signed operation that returns the bitwise-or
- result of all its arguments.
-
- =================== ================= ========================================================
.. _amdgpu-elf-code-object:
diff --git a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
index 16a5d6879ce777..cb4eddfe5320fa 100644
--- a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
+++ b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
@@ -7,7 +7,6 @@
//===----------------------------------------------------------------------===//
#include "AMDKernelCodeT.h"
-#include "MCTargetDesc/AMDGPUMCExpr.h"
#include "MCTargetDesc/AMDGPUMCTargetDesc.h"
#include "MCTargetDesc/AMDGPUTargetStreamer.h"
#include "SIDefines.h"
@@ -1817,7 +1816,6 @@ class AMDGPUAsmParser : public MCTargetAsmParser {
public:
void onBeginOfFile() override;
- bool parsePrimaryExpr(const MCExpr *&Res, SMLoc &EndLoc) override;
ParseStatus parseCustomOperand(OperandVector &Operands, unsigned MCK);
@@ -8279,59 +8277,6 @@ void AMDGPUAsmParser::onBeginOfFile() {
getTargetStreamer().EmitDirectiveAMDGCNTarget();
}
-/// Parse AMDGPU specific expressions.
-///
-/// expr ::= or(expr, ...) |
-/// max(expr, ...)
-///
-bool AMDGPUAsmParser::parsePrimaryExpr(const MCExpr *&Res, SMLoc &EndLoc) {
- using AGVK = AMDGPUVariadicMCExpr::VariadicKind;
-
- if (isToken(AsmToken::Identifier)) {
- StringRef TokenId = getTokenStr();
- AGVK VK = StringSwitch<AGVK>(TokenId)
- .Case("max", AGVK::AGVK_Max)
- .Case("or", AGVK::AGVK_Or)
- .Default(AGVK::AGVK_None);
-
- if (VK != AGVK::AGVK_None && peekToken().is(AsmToken::LParen)) {
- SmallVector<const MCExpr *, 4> Exprs;
- uint64_t CommaCount = 0;
- lex(); // Eat 'max'/'or'
- lex(); // Eat '('
- while (true) {
- if (trySkipToken(AsmToken::RParen)) {
- if (Exprs.empty()) {
- Error(getToken().getLoc(),
- "empty " + Twine(TokenId) + " expression");
- return true;
- }
- if (CommaCount + 1 != Exprs.size()) {
- Error(getToken().getLoc(),
- "mismatch of commas in " + Twine(TokenId) + " expression");
- return true;
- }
- Res = AMDGPUVariadicMCExpr::create(VK, Exprs, getContext());
- return false;
- }
- const MCExpr *Expr;
- if (getParser().parseExpression(Expr, EndLoc))
- return true;
- Exprs.push_back(Expr);
- bool LastTokenWasComma = trySkipToken(AsmToken::Comma);
- if (LastTokenWasComma)
- CommaCount++;
- if (!LastTokenWasComma && !isToken(AsmToken::RParen)) {
- Error(getToken().getLoc(),
- "unexpected token in " + Twine(TokenId) + " expression");
- return true;
- }
- }
- }
- }
- return getParser().parsePrimaryExpr(Res, EndLoc, nullptr);
-}
-
ParseStatus AMDGPUAsmParser::parseOModSI(OperandVector &Operands) {
StringRef Name = getTokenStr();
if (Name == "mul") {
diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCExpr.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCExpr.cpp
deleted file mode 100644
index 0659937e06a2b4..00000000000000
--- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCExpr.cpp
+++ /dev/null
@@ -1,94 +0,0 @@
-//===- AMDGPUMCExpr.cpp - AMDGPU specific MC expression classes -----------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-#include "AMDGPUMCExpr.h"
-#include "llvm/MC/MCContext.h"
-#include "llvm/MC/MCStreamer.h"
-#include "llvm/MC/MCSymbol.h"
-#include "llvm/MC/MCValue.h"
-#include "llvm/Support/Allocator.h"
-#include "llvm/Support/raw_ostream.h"
-#include <optional>
-
-using namespace llvm;
-
-const AMDGPUVariadicMCExpr *
-AMDGPUVariadicMCExpr::create(VariadicKind Kind, ArrayRef<const MCExpr *> Args,
- MCContext &Ctx) {
- return new (Ctx) AMDGPUVariadicMCExpr(Kind, Args);
-}
-
-const MCExpr *AMDGPUVariadicMCExpr::getSubExpr(size_t Index) const {
- assert(Index < Args.size() &&
- "Indexing out of bounds AMDGPUVariadicMCExpr sub-expr");
- return Args[Index];
-}
-
-void AMDGPUVariadicMCExpr::printImpl(raw_ostream &OS,
- const MCAsmInfo *MAI) const {
- switch (Kind) {
- default:
- llvm_unreachable("Unknown AMDGPUVariadicMCExpr kind.");
- case AGVK_Or:
- OS << "or(";
- break;
- case AGVK_Max:
- OS << "max(";
- break;
- }
- for (auto It = Args.begin(); It != Args.end(); ++It) {
- (*It)->print(OS, MAI, /*InParens=*/false);
- if ((It + 1) != Args.end())
- OS << ", ";
- }
- OS << ')';
-}
-
-static int64_t op(AMDGPUVariadicMCExpr::VariadicKind Kind, int64_t Arg1,
- int64_t Arg2) {
- switch (Kind) {
- default:
- llvm_unreachable("Unknown AMDGPUVariadicMCExpr kind.");
- case AMDGPUVariadicMCExpr::AGVK_Max:
- return std::max(Arg1, Arg2);
- case AMDGPUVariadicMCExpr::AGVK_Or:
- return Arg1 | Arg2;
- }
-}
-
-bool AMDGPUVariadicMCExpr::evaluateAsRelocatableImpl(
- MCValue &Res, const MCAsmLayout *Layout, const MCFixup *Fixup) const {
- std::optional<int64_t> Total;
-
- for (const MCExpr *Arg : Args) {
- MCValue ArgRes;
- if (!Arg->evaluateAsRelocatable(ArgRes, Layout, Fixup) ||
- !ArgRes.isAbsolute())
- return false;
-
- if (!Total.has_value())
- Total = ArgRes.getConstant();
- Total = op(Kind, *Total, ArgRes.getConstant());
- }
-
- Res = MCValue::get(*Total);
- return true;
-}
-
-void AMDGPUVariadicMCExpr::visitUsedExpr(MCStreamer &Streamer) const {
- for (const MCExpr *Arg : Args)
- Streamer.visitUsedExpr(*Arg);
-}
-
-MCFragment *AMDGPUVariadicMCExpr::findAssociatedFragment() const {
- for (const MCExpr *Arg : Args) {
- if (Arg->findAssociatedFragment())
- return Arg->findAssociatedFragment();
- }
- return nullptr;
-}
diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCExpr.h b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCExpr.h
deleted file mode 100644
index 9e8452f2c624d9..00000000000000
--- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCExpr.h
+++ /dev/null
@@ -1,74 +0,0 @@
-//===- AMDGPUMCExpr.h - AMDGPU specific MC expression classes ---*- C++ -*-===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_LIB_TARGET_AMDGPU_MCTARGETDESC_AMDGPUMCEXPR_H
-#define LLVM_LIB_TARGET_AMDGPU_MCTARGETDESC_AMDGPUMCEXPR_H
-
-#include "llvm/ADT/ArrayRef.h"
-#include "llvm/ADT/SmallVector.h"
-#include "llvm/MC/MCExpr.h"
-
-namespace llvm {
-
-/// AMDGPU target specific variadic MCExpr operations.
-///
-/// Takes in a minimum of 1 argument to be used with an operation. The supported
-/// operations are:
-/// - (bitwise) or
-/// - max
-///
-/// \note If the 'or'/'max' operations are provided only a single argument, the
-/// operation will act as a no-op and simply resolve as the provided argument.
-///
-class AMDGPUVariadicMCExpr : public MCTargetExpr {
-public:
- enum VariadicKind { AGVK_None, AGVK_Or, AGVK_Max };
-
-private:
- VariadicKind Kind;
- SmallVector<const MCExpr *, 2> Args;
-
- AMDGPUVariadicMCExpr(VariadicKind Kind, ArrayRef<const MCExpr *> Args)
- : Kind(Kind), Args(Args) {
- assert(Args.size() >= 1 && "Needs a minimum of one expression.");
- assert(Kind != AGVK_None &&
- "Cannot construct AMDGPUVariadicMCExpr of kind none.");
- }
-
-public:
- static const AMDGPUVariadicMCExpr *
- create(VariadicKind Kind, ArrayRef<const MCExpr *> Args, MCContext &Ctx);
-
- static const AMDGPUVariadicMCExpr *createOr(ArrayRef<const MCExpr *> Args,
- MCContext &Ctx) {
- return create(VariadicKind::AGVK_Or, Args, Ctx);
- }
-
- static const AMDGPUVariadicMCExpr *createMax(ArrayRef<const MCExpr *> Args,
- MCContext &Ctx) {
- return create(VariadicKind::AGVK_Max, Args, Ctx);
- }
-
- VariadicKind getKind() const { return Kind; }
- const MCExpr *getSubExpr(size_t Index) const;
-
- void printImpl(raw_ostream &OS, const MCAsmInfo *MAI) const override;
- bool evaluateAsRelocatableImpl(MCValue &Res, const MCAsmLayout *Layout,
- const MCFixup *Fixup) const override;
- void visitUsedExpr(MCStreamer &Streamer) const override;
- MCFragment *findAssociatedFragment() const override;
- void fixELFSymbolsInTLSFixups(MCAssembler &) const override{};
-
- static bool classof(const MCExpr *E) {
- return E->getKind() == MCExpr::Target;
- }
-};
-
-} // end namespace llvm
-
-#endif // LLVM_LIB_TARGET_AMDGPU_MCTARGETDESC_AMDGPUMCEXPR_H
diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/CMakeLists.txt b/llvm/lib/Target/AMDGPU/MCTargetDesc/CMakeLists.txt
index 0842a58f794b32..5dc76071b0594e 100644
--- a/llvm/lib/Target/AMDGPU/MCTargetDesc/CMakeLists.txt
+++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/CMakeLists.txt
@@ -5,7 +5,6 @@ add_llvm_component_library(LLVMAMDGPUDesc
AMDGPUInstPrinter.cpp
AMDGPUMCAsmInfo.cpp
AMDGPUMCCodeEmitter.cpp
- AMDGPUMCExpr.cpp
AMDGPUMCTargetDesc.cpp
AMDGPUTargetStreamer.cpp
R600InstPrinter.cpp
diff --git a/llvm/test/MC/AMDGPU/mcexpr_amd.s b/llvm/test/MC/AMDGPU/mcexpr_amd.s
deleted file mode 100644
index a9639c3acc305a..00000000000000
--- a/llvm/test/MC/AMDGPU/mcexpr_amd.s
+++ /dev/null
@@ -1,130 +0,0 @@
-// RUN: llvm-mc -triple amdgcn-amd-amdhsa < %s | FileCheck --check-prefix=ASM %s
-// RUN: llvm-mc -triple amdgcn-amd-amdhsa -filetype=obj < %s > %t
-// RUN: llvm-objdump --syms %t | FileCheck --check-prefix=OBJDUMP %s
-
-// OBJDUMP: SYMBOL TABLE:
-// OBJDUMP-NEXT: 0000000000000000 l *ABS* 0000000000000000 zero
-// OBJDUMP-NEXT: 0000000000000001 l *ABS* 0000000000000000 one
-// OBJDUMP-NEXT: 0000000000000002 l *ABS* 0000000000000000 two
-// OBJDUMP-NEXT: 0000000000000003 l *ABS* 0000000000000000 three
-// OBJDUMP-NEXT: 7fffffffffffffff l *ABS* 0000000000000000 i64_max
-// OBJDUMP-NEXT: 8000000000000000 l *ABS* 0000000000000000 i64_min
-// OBJDUMP-NEXT: 0000000000000005 l *ABS* 0000000000000000 max_expression_all
-// OBJDUMP-NEXT: 0000000000000005 l *ABS* 0000000000000000 five
-// OBJDUMP-NEXT: 0000000000000004 l *ABS* 0000000000000000 four
-// OBJDUMP-NEXT: 0000000000000002 l *ABS* 0000000000000000 max_expression_two
-// OBJDUMP-NEXT: 0000000000000001 l *ABS* 0000000000000000 max_expression_one
-// OBJDUMP-NEXT: 000000000000000a l *ABS* 0000000000000000 max_literals
-// OBJDUMP-NEXT: 000000000000000f l *ABS* 0000000000000000 max_with_max_sym
-// OBJDUMP-NEXT: 000000000000000f l *ABS* 0000000000000000 max
-// OBJDUMP-NEXT: ffffffffffffffff l *ABS* 0000000000000000 neg_one
-// OBJDUMP-NEXT: ffffffffffffffff l *ABS* 0000000000000000 max_neg_numbers
-// OBJDUMP-NEXT: ffffffffffffffff l *ABS* 0000000000000000 max_neg_number
-// OBJDUMP-NEXT: 0000000000000003 l *ABS* 0000000000000000 max_with_subexpr
-// OBJDUMP-NEXT: 0000000000000006 l *ABS* 0000000000000000 max_as_subexpr
-// OBJDUMP-NEXT: 0000000000000005 l *ABS* 0000000000000000 max_recursive_subexpr
-// OBJDUMP-NEXT: 7fffffffffffffff l *ABS* 0000000000000000 max_expr_one_max
-// OBJDUMP-NEXT: 7fffffffffffffff l *ABS* 0000000000000000 max_expr_two_max
-// OBJDUMP-NEXT: 7fffffffffffffff l *ABS* 0000000000000000 max_expr_three_max
-// OBJDUMP-NEXT: 8000000000000000 l *ABS* 0000000000000000 max_expr_one_min
-// OBJDUMP-NEXT: 0000000000000003 l *ABS* 0000000000000000 max_expr_two_min
-// OBJDUMP-NEXT: 0000000000989680 l *ABS* 0000000000000000 max_expr_three_min
-// OBJDUMP-NEXT: 0000000000000007 l *ABS* 0000000000000000 or_expression_all
-// OBJDUMP-NEXT: 0000000000000003 l *ABS* 0000000000000000 or_expression_two
-// OBJDUMP-NEXT: 0000000000000001 l *ABS* 0000000000000000 or_expression_one
-// OBJDUMP-NEXT: 000000000000000f l *ABS* 0000000000000000 or_literals
-// OBJDUMP-NEXT: 0000000000000000 l *ABS* 0000000000000000 or_false
-// OBJDUMP-NEXT: 00000000000000ff l *ABS* 0000000000000000 or_with_or_sym
-// OBJDUMP-NEXT: 00000000000000ff l *ABS* 0000000000000000 or
-// OBJDUMP-NEXT: 0000000000000003 l *ABS* 0000000000000000 or_with_subexpr
-// OBJDUMP-NEXT: 0000000000000008 l *ABS* 0000000000000000 or_as_subexpr
-// OBJDUMP-NEXT: 0000000000000007 l *ABS* 0000000000000000 or_recursive_subexpr
-
-// ASM: .set zero, 0
-// ASM: .set one, 1
-// ASM: .set two, 2
-// ASM: .set three, 3
-// ASM: .set i64_max, 9223372036854775807
-// ASM: .set i64_min, -9223372036854775808
-
-.set zero, 0
-.set one, 1
-.set two, 2
-.set three, 3
-.set i64_max, 0x7FFFFFFFFFFFFFFF
-.set i64_min, 0x8000000000000000
-
-// ASM: .set max_expression_all, max(1, 2, five, 3, four)
-// ASM: .set max_expression_two, 2
-// ASM: .set max_expression_one, 1
-// ASM: .set max_literals, 10
-// ASM: .set max_with_max_sym, max(max, 4, 3, 1, 2)
-
-.set max_expression_all, max(one, two, five, three, four)
-.set max_expression_two, max(one, two)
-.set max_expression_one, max(one)
-.set max_literals, max(1,2,3,4,5,6,7,8,9,10)
-.set max_with_max_sym, max(max, 4, 3, one, two)
-
-// ASM: .set max_neg_numbers, -1
-// ASM: .set max_neg_number, -1
-
-.set neg_one, -1
-.set max_neg_numbers, max(-5, -4, -3, -2, neg_one)
-.set max_neg_number, max(neg_one)
-
-// ASM: .set max_with_subexpr, 3
-// ASM: .set max_as_subexpr, 1+(max(4, 3, five))
-// ASM: .set max_recursive_subexpr, max(max(1, four), 3, max_expression_all)
-
-.set max_with_subexpr, max(((one | 3) << 3) / 8)
-.set max_as_subexpr, 1 + max(4, 3, five)
-.set max_recursive_subexpr, max(max(one, four), three, max_expression_all)
-
-// ASM: .set max_expr_one_max, 9223372036854775807
-// ASM: .set max_expr_two_max, max(9223372036854775807, five)
-// ASM: .set max_expr_three_max, max(9223372036854775807, five, 10000000)
-
-.set max_expr_one_max, max(i64_max)
-.set max_expr_two_max, max(i64_max, five)
-.set max_expr_three_max, max(i64_max, five, 10000000)
-
-// ASM: .set max_expr_one_min, -9223372036854775808
-// ASM: .set max_expr_two_min, 3
-// ASM: .set max_expr_three_min, 10000000
-
-.set max_expr_one_min, max(i64_min)
-.set max_expr_two_min, max(i64_min, three)
-.set max_expr_three_min, max(i64_min, three, 10000000)
-
-// ASM: .set or_expression_all, or(1, 2, five, 3, four)
-// ASM: .set or_expression_two, 3
-// ASM: .set or_expression_one, 1
-// ASM: .set or_literals, 15
-// ASM: .set or_false, 0
-// ASM: .set or_with_or_sym, or(or, 4, 3, 1, 2)
-
-.set or_expression_all, or(one, two, five, three, four)
-.set or_expression_two, or(one, two)
-.set or_expression_one, or(one)
-.set or_literals, or(1,2,3,4,5,6,7,8,9,10)
-.set or_false, or(zero, 0, (2-2), 5 > 6)
-.set or_with_or_sym, or(or, 4, 3, one, two)
-
-// ASM: .set or_with_subexpr, 3
-// ASM: .set or_as_subexpr, 1+(or(4, 3, five))
-// ASM: .set or_recursive_subexpr, or(or(1, four), 3, or_expression_all)
-
-.set or_with_subexpr, or(((one | 3) << 3) / 8)
-.set or_as_subexpr, 1 + or(4, 3, five)
-.set or_recursive_subexpr, or(or(one, four), three, or_expression_all)
-
-// ASM: .set four, 4
-// ASM: .set five, 5
-// ASM: .set max, 15
-// ASM: .set or, 255
-
-.set four, 4
-.set five, 5
-.set max, 0xF
-.set or, 0xFF
diff --git a/llvm/test/MC/AMDGPU/mcexpr_amd_err.s b/llvm/test/MC/AMDGPU/mcexpr_amd_err.s
deleted file mode 100644
index ea02e013627218..00000000000000
--- a/llvm/test/MC/AMDGPU/mcexpr_amd_err.s
+++ /dev/null
@@ -1,53 +0,0 @@
-// RUN: not llvm-mc -triple amdgcn-amd-amdhsa %s 2>&1 | FileCheck --check-prefix=ASM %s
-
-.set one, 1
-.set two, 2
-.set three, 3
-
-.set max_empty, max()
-// ASM: :[[@LINE-1]]:{{[0-9]+}}: error: empty max expression
-// ASM: :[[@LINE-2]]:{{[0-9]+}}: error: missing expression
-
-.set or_empty, or()
-// ASM: :[[@LINE-1]]:{{[0-9]+}}: error: empty or expression
-// ASM: :[[@LINE-2]]:{{[0-9]+}}: error: missing expression
-
-.set max_post_aux_comma, max(one,)
-// ASM: :[[@LINE-1]]:{{[0-9]+}}: error: mismatch of commas in max expression
-// ASM: :[[@LINE-2]]:{{[0-9]+}}: error: missing expression
-
-.set max_pre_aux_comma, max(,one)
-// asm: :[[@line-1]]:{{[0-9]+}}: error: unknown token in expression
-// ASM: :[[@LINE-2]]:{{[0-9]+}}: error: missing expression
-
-.set max_double_comma, max(one,, two)
-// ASM: :[[@LINE-1]]:{{[0-9]+}}: error: unknown token in expression
-// ASM: :[[@LINE-2]]:{{[0-9]+}}: error: missing expression
-
-.set max_no_comma, max(one two)
-// ASM: :[[@LINE-1]]:{{[0-9]+}}: error: unexpected token in max expression
-// ASM: :[[@LINE-2]]:{{[0-9]+}}: error: missing expression
-
-.set max_missing_paren, max(two
-// ASM: :[[@LINE-1]]:{{[0-9]+}}: error: unexpected token in max expression
-// ASM: :[[@LINE-2]]:{{[0-9]+}}: error: missing expression
-
-.set max_expression_one, max(three, four,
-// ASM: :[[@LINE-1]]:{{[0-9]+}}: error: unknown token in expression
-// ASM: :[[@LINE-2]]:{{[0-9]+}}: error: missing expression
-
-.set or_expression_one, or(four, five
-// ASM: :[[@LINE-1]]:{{[0-9]+}}: error: unexpected token in or expression
-// ASM: :[[@LINE-2]]:{{[0-9]+}}: error: missing expression
-
-.set max_no_lparen, max four, five)
-// ASM: :[[@LINE-1]]:{{[0-9]+}}: error: expected newline
-
-.set max_no_paren, max one, two, three
-// ASM: :[[@LINE-1]]:{{[0-9]+}}: error: expected newline
-
-.set max_rparen_only, max)
-// ASM: :[[@LINE-1]]:{{[0-9]+}}: error: expected newline
-
-.set four, 4
-.set five, 5
More information about the llvm-branch-commits
mailing list