Skip to content

Commit 9f8d4af

Browse files
committed
Feedback, change mcexpr from logical to bitwise or, documentation on mcexpr in AMDGPUUsage
1 parent 67b279e commit 9f8d4af

File tree

4 files changed

+30
-12
lines changed

4 files changed

+30
-12
lines changed

llvm/docs/AMDGPUUsage.rst

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1534,6 +1534,24 @@ The AMDGPU backend supports the following calling conventions:
15341534

15351535
=============================== ==========================================================
15361536

1537+
AMDGPU MCExpr
1538+
-------------
1539+
1540+
As part of the AMDGPU MC layer, AMDGPU provides the following target specific
1541+
``MCExpr``\s.
1542+
1543+
.. table:: AMDGPU MCExpr types:
1544+
:name: amdgpu-mcexpr-table
1545+
1546+
=================== ======================================================================
1547+
AMDGPU MCExpr Description
1548+
=================== ======================================================================
1549+
``max(arg, ...)`` Variadic operation that returns maximum value of all its arguments.
1550+
1551+
``or(arg, ...)`` Variadic operation that returns the bitwise-or result of all its
1552+
arguments.
1553+
1554+
=================== ======================================================================
15371555

15381556
.. _amdgpu-elf-code-object:
15391557

llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCExpr.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ static int64_t op(AMDGPUVariadicMCExpr::VariadicKind Kind, int64_t Arg1,
5757
case AMDGPUVariadicMCExpr::AGVK_Max:
5858
return std::max(Arg1, Arg2);
5959
case AMDGPUVariadicMCExpr::AGVK_Or:
60-
return Arg1 || Arg2;
60+
return Arg1 | Arg2;
6161
}
6262
}
6363

llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCExpr.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ namespace llvm {
1919
///
2020
/// Takes in a minimum of 1 argument to be used with an operation. The supported
2121
/// operations are:
22-
/// - (logic) or
22+
/// - (bitwise) or
2323
/// - max
2424
///
2525
/// \note If the 'or'/'max' operations are provided only a single argument, the

llvm/test/MC/AMDGPU/mcexpr_amd.s

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,16 @@
2929
// OBJDUMP-NEXT: 8000000000000000 l *ABS* 0000000000000000 max_expr_one_min
3030
// OBJDUMP-NEXT: 0000000000000003 l *ABS* 0000000000000000 max_expr_two_min
3131
// OBJDUMP-NEXT: 0000000000989680 l *ABS* 0000000000000000 max_expr_three_min
32-
// OBJDUMP-NEXT: 0000000000000001 l *ABS* 0000000000000000 or_expression_all
33-
// OBJDUMP-NEXT: 0000000000000001 l *ABS* 0000000000000000 or_expression_two
32+
// OBJDUMP-NEXT: 0000000000000007 l *ABS* 0000000000000000 or_expression_all
33+
// OBJDUMP-NEXT: 0000000000000003 l *ABS* 0000000000000000 or_expression_two
3434
// OBJDUMP-NEXT: 0000000000000001 l *ABS* 0000000000000000 or_expression_one
35-
// OBJDUMP-NEXT: 0000000000000001 l *ABS* 0000000000000000 or_literals
35+
// OBJDUMP-NEXT: 000000000000000f l *ABS* 0000000000000000 or_literals
3636
// OBJDUMP-NEXT: 0000000000000000 l *ABS* 0000000000000000 or_false
37-
// OBJDUMP-NEXT: 0000000000000001 l *ABS* 0000000000000000 or_with_or_sym
37+
// OBJDUMP-NEXT: 00000000000000ff l *ABS* 0000000000000000 or_with_or_sym
3838
// OBJDUMP-NEXT: 00000000000000ff l *ABS* 0000000000000000 or
39-
// OBJDUMP-NEXT: 0000000000000001 l *ABS* 0000000000000000 or_with_subexpr
40-
// OBJDUMP-NEXT: 0000000000000002 l *ABS* 0000000000000000 or_as_subexpr
41-
// OBJDUMP-NEXT: 0000000000000001 l *ABS* 0000000000000000 or_recursive_subexpr
39+
// OBJDUMP-NEXT: 0000000000000003 l *ABS* 0000000000000000 or_with_subexpr
40+
// OBJDUMP-NEXT: 0000000000000008 l *ABS* 0000000000000000 or_as_subexpr
41+
// OBJDUMP-NEXT: 0000000000000007 l *ABS* 0000000000000000 or_recursive_subexpr
4242

4343
// ASM: .set zero, 0
4444
// ASM: .set one, 1
@@ -98,9 +98,9 @@
9898
.set max_expr_three_min, max(i64_min, three, 10000000)
9999

100100
// ASM: .set or_expression_all, or(1, 2, five, 3, four)
101-
// ASM: .set or_expression_two, 1
101+
// ASM: .set or_expression_two, 3
102102
// ASM: .set or_expression_one, 1
103-
// ASM: .set or_literals, 1
103+
// ASM: .set or_literals, 15
104104
// ASM: .set or_false, 0
105105
// ASM: .set or_with_or_sym, or(or, 4, 3, 1, 2)
106106

@@ -111,7 +111,7 @@
111111
.set or_false, or(zero, 0, (2-2), 5 > 6)
112112
.set or_with_or_sym, or(or, 4, 3, one, two)
113113

114-
// ASM: .set or_with_subexpr, 1
114+
// ASM: .set or_with_subexpr, 3
115115
// ASM: .set or_as_subexpr, 1+(or(4, 3, five))
116116
// ASM: .set or_recursive_subexpr, or(or(1, four), 3, or_expression_all)
117117

0 commit comments

Comments
 (0)