1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-18 18:42:46 +02:00
llvm-mirror/test/CodeGen/PowerPC/setcc-sub-flag.ll
Kai Luo 24e6d035e6 [DAG][PowerPC] Fix dropped nsw flag in SimplifySetCC by adding doesNodeExist helper
`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
2020-11-25 04:39:03 +00:00

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
}