[CodeGen] Parse nusw flag (#138856)

Fixes #127781
This commit is contained in:
Pierre van Houtryve
2025-05-08 10:40:15 +02:00
committed by GitHub
parent 5b8664fcb2
commit 2b14093288
2 changed files with 26 additions and 0 deletions

View File

@@ -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;

View File

@@ -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 %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
...