mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 12:12:47 +01:00
24e6d035e6
`SimplifySetCC` invokes `getNodeIfExists` without passing `Flags` argument and `getNodeIfExists` uses a default `SDNodeFlags` to intersect the original flags, as a consequence, flags like `nsw` is dropped. Added a new helper function `doesNodeExist` to check if a node exists without modifying its flags. Reviewed By: #powerpc, nemanjai Differential Revision: https://reviews.llvm.org/D89938
34 lines
967 B
LLVM
34 lines
967 B
LLVM
; RUN: llc -mtriple=powerpc64le -simplify-mir -verify-machineinstrs \
|
|
; RUN: -stop-after=finalize-isel < %s | FileCheck %s
|
|
|
|
declare void @foo(i64)
|
|
declare void @bar(i1)
|
|
|
|
define void @f(i64 %a, i64 %b) {
|
|
; CHECK-LABEL: name: f
|
|
; CHECK: bb.0 (%ir-block.0):
|
|
; CHECK: liveins: $x3, $x4
|
|
; CHECK: [[COPY:%[0-9]+]]:g8rc = COPY $x4
|
|
; CHECK: [[COPY1:%[0-9]+]]:g8rc = COPY $x3
|
|
; CHECK: [[SUBF8_:%[0-9]+]]:g8rc = nsw SUBF8 [[COPY1]], [[COPY]]
|
|
%c = sub nsw i64 %b, %a
|
|
call void @foo(i64 %c)
|
|
%d = icmp slt i64 %a, %b
|
|
call void @bar(i1 %d)
|
|
ret void
|
|
}
|
|
|
|
define void @g(i64 %a, i64 %b) {
|
|
; CHECK-LABEL: name: g
|
|
; CHECK: bb.0 (%ir-block.0):
|
|
; CHECK: liveins: $x3, $x4
|
|
; CHECK: [[COPY:%[0-9]+]]:g8rc = COPY $x4
|
|
; CHECK: [[COPY1:%[0-9]+]]:g8rc = COPY $x3
|
|
; CHECK: [[SUBF8_:%[0-9]+]]:g8rc = nsw SUBF8 [[COPY]], [[COPY1]]
|
|
%c = sub nsw i64 %a, %b
|
|
call void @foo(i64 %c)
|
|
%d = icmp slt i64 %a, %b
|
|
call void @bar(i1 %d)
|
|
ret void
|
|
}
|