blob: dfb0e80d0907d6565a2e1dab01617d4008e91e5f [file] [log] [blame]
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
; RUN: llc < %s -verify-machineinstrs | FileCheck %s
; RUN: %if ptxas %{ llc < %s | %ptxas-verify %}
target triple = "nvptx64-nvidia-cuda"
declare ptr @bar(i64)
declare i64 @baz()
define ptr @foo(i1 %cond) {
; CHECK-LABEL: foo(
; CHECK: {
; CHECK-NEXT: .reg .pred %p<2>;
; CHECK-NEXT: .reg .b16 %rs<3>;
; CHECK-NEXT: .reg .b64 %rd<2>;
; CHECK-EMPTY:
; CHECK-NEXT: // %bb.0: // %entry
; CHECK-NEXT: ld.param.b8 %rs1, [foo_param_0];
; CHECK-NEXT: and.b16 %rs2, %rs1, 1;
; CHECK-NEXT: setp.ne.b16 %p1, %rs2, 0;
; CHECK-NEXT: { // callseq 0, 0
; CHECK-NEXT: .param .b64 retval0;
; CHECK-NEXT: call.uni (retval0), baz, ();
; CHECK-NEXT: ld.param.b64 %rd1, [retval0];
; CHECK-NEXT: } // callseq 0
; CHECK-NEXT: @%p1 bra $L__BB0_2;
; CHECK-NEXT: // %bb.1: // %bb
; CHECK-NEXT: { // callseq 1, 0
; CHECK-NEXT: .param .b64 param0;
; CHECK-NEXT: .param .b64 retval0;
; CHECK-NEXT: st.param.b64 [param0], %rd1;
; CHECK-NEXT: call.uni (retval0), bar, (param0);
; CHECK-NEXT: } // callseq 1
; CHECK-NEXT: $L__BB0_2: // %common.ret
; CHECK-NEXT: st.param.b64 [func_retval0], 0;
; CHECK-NEXT: ret;
entry:
%call = call i64 @baz()
br i1 %cond, label %common.ret, label %bb
bb:
%tmp = call ptr @bar(i64 %call)
br label %common.ret
common.ret:
ret ptr null
}