Skip to content

[CodeGen] Parse nusw flag #138856

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
May 8, 2025
Merged

[CodeGen] Parse nusw flag #138856

merged 2 commits into from
May 8, 2025

Conversation

Pierre-vh
Copy link
Contributor

Fixes #127781

Copy link
Contributor Author

This stack of pull requests is managed by Graphite. Learn more about stacking.

@Pierre-vh Pierre-vh requested review from arsenm, jayfoad and shiltian May 7, 2025 12:32
@Pierre-vh Pierre-vh marked this pull request as ready for review May 7, 2025 12:32
@llvmbot
Copy link
Member

llvmbot commented May 7, 2025

@llvm/pr-subscribers-backend-amdgpu

@llvm/pr-subscribers-llvm-globalisel

Author: Pierre van Houtryve (Pierre-vh)

Changes

Fixes #127781


Full diff: https://github.com/llvm/llvm-project/pull/138856.diff

2 Files Affected:

  • (modified) llvm/lib/CodeGen/MIRParser/MIParser.cpp (+3)
  • (added) llvm/test/CodeGen/AMDGPU/GlobalISel/ptradd-flags.mir (+23)
diff --git a/llvm/lib/CodeGen/MIRParser/MIParser.cpp b/llvm/lib/CodeGen/MIRParser/MIParser.cpp
index 5c8e32d11cfb0..858cdb6599c62 100644
--- a/llvm/lib/CodeGen/MIRParser/MIParser.cpp
+++ b/llvm/lib/CodeGen/MIRParser/MIParser.cpp
@@ -1476,6 +1476,7 @@ bool MIParser::parseInstruction(unsigned &OpCode, unsigned &Flags) {
          Token.is(MIToken::kw_unpredictable) ||
          Token.is(MIToken::kw_nneg) ||
          Token.is(MIToken::kw_disjoint) ||
+         Token.is(MIToken::kw_nusw) ||
          Token.is(MIToken::kw_samesign)) {
     // clang-format on
     // Mine frame and fast math flags
@@ -1513,6 +1514,8 @@ bool MIParser::parseInstruction(unsigned &OpCode, unsigned &Flags) {
       Flags |= MachineInstr::NonNeg;
     if (Token.is(MIToken::kw_disjoint))
       Flags |= MachineInstr::Disjoint;
+    if (Token.is(MIToken::kw_nusw))
+      Flags |= MachineInstr::NoUSWrap;
     if (Token.is(MIToken::kw_samesign))
       Flags |= MachineInstr::SameSign;
 
diff --git a/llvm/test/CodeGen/AMDGPU/GlobalISel/ptradd-flags.mir b/llvm/test/CodeGen/AMDGPU/GlobalISel/ptradd-flags.mir
new file mode 100644
index 0000000000000..2da0eb7be0677
--- /dev/null
+++ b/llvm/test/CodeGen/AMDGPU/GlobalISel/ptradd-flags.mir
@@ -0,0 +1,23 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5
+# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -run-pass=none -verify-machineinstrs %s -o - | FileCheck %s
+
+---
+name:  nusw_ptr_add
+legalized:       true
+tracksRegLiveness: true
+body:             |
+  bb.0:
+    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
+
+    ; CHECK-LABEL: name: nusw_ptr_add
+    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
+    ; CHECK-NEXT: {{  $}}
+    ; CHECK-NEXT: %ptr:_(p0) = COPY $vgpr0_vgpr1
+    ; CHECK-NEXT: %off:_(s64) = COPY $vgpr2_vgpr3
+    ; CHECK-NEXT: %ret:_(p0) = nuw nusw G_PTR_ADD %ptr, %off(s64)
+    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY %ret(p0)
+    %ptr:_(p0) = COPY $vgpr0_vgpr1
+    %off:_(s64) = COPY $vgpr2_vgpr3
+    %ret:_(p0) = nuw nusw G_PTR_ADD %ptr, %off
+    $vgpr0_vgpr1 = COPY %ret
+...

Copy link
Contributor Author

Pierre-vh commented May 8, 2025

Merge activity

  • May 8, 4:38 AM EDT: A user started a stack merge that includes this pull request via Graphite.
  • May 8, 4:40 AM EDT: @Pierre-vh merged this pull request with Graphite.

@Pierre-vh Pierre-vh merged commit 2b14093 into main May 8, 2025
11 checks passed
@Pierre-vh Pierre-vh deleted the users/pierre-vh/nusw-miparser branch May 8, 2025 08:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[GlobalISel] MIR serialization issue with G_PTR_ADD instruction flags
3 participants