Xamarin Public Jenkins (auto-signing) 8e12397d70 Imported Upstream version 5.18.0.205
Former-commit-id: 7f59f7e792705db773f1caecdaa823092f4e2927
2018-11-16 08:20:38 +00:00

24 lines
611 B
LLVM

; RUN: llc < %s | FileCheck %s
target triple = "nvptx64-nvidia-cuda"
declare void @foo()
; Load a value, then call a function. Branch, and use the loaded value only on
; one side of the branch. The load shouldn't be sunk beneath the call, because
; the call may modify memory.
define i32 @f(i32 %x, i32* %ptr, i1 %cond) {
Start:
; CHECK: ld.u32
%ptr_val = load i32, i32* %ptr
; CHECK: call.uni
call void @foo()
br i1 %cond, label %L1, label %L2
L1:
%ptr_val2 = add i32 %ptr_val, 100
br label %L2
L2:
%v4 = phi i32 [ %x, %Start ], [ %ptr_val2, %L1 ]
%v5 = add i32 %v4, 1000
ret i32 %v5
}