Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7858,8 +7858,8 @@ void PPCDAGToDAGISel::PeepholePPC64() {
if (!isInt<16>(Offset))
continue;

ImmOpnd = CurDAG->getTargetConstant(Offset, SDLoc(ImmOpnd),
ImmOpnd.getValueType());
ImmOpnd = CurDAG->getSignedTargetConstant(Offset, SDLoc(ImmOpnd),
ImmOpnd.getValueType());
} else if (Offset != 0) {
// This optimization is performed for non-TOC-based local-[exec|dynamic]
// accesses.
Expand Down
33 changes: 33 additions & 0 deletions llvm/test/CodeGen/PowerPC/signed-offset.ll
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
; RUN: llc -verify-machineinstrs < %s -mcpu=ppc -mtriple powerpc-ibm-aix-xcoff | FileCheck %s

%_type = type <{ [90112 x i8] }>

@g = external global %_type

define void @foo(ptr %p) {
; CHECK-LABEL: foo:
; CHECK: stfd 31, 0(31)
; CHECK-NEXT: lwz 3, -32(30)
; CHECK-NEXT: lwz 4, -28(30)
; CHECK-NEXT: cmplwi 3, 0
; CHECK-NEXT: cmpwi 1, 3, 0
; CHECK-NEXT: crandc 20, 5, 2
; CHECK-NEXT: cmpwi 1, 4, 0
entry:
%0 = load double, ptr getelementptr inbounds nuw (i8, ptr @g, i32 83272), align 8
%1 = call i32 @bar(ptr getelementptr inbounds nuw (i8, ptr @g, i32 83272))
%2 = call i32 @bar(ptr getelementptr inbounds nuw (i8, ptr @g, i32 83240))
store double %0, ptr %p, align 8
%3 = load i64, ptr getelementptr inbounds nuw (i8, ptr @g, i32 83240), align 8
%4 = icmp slt i64 %3, 1
br i1 %4, label %then, label %else

then: ; preds = %entry
ret void

else: ; preds = %entry
ret void
}

declare signext i32 @bar(ptr)