; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 2
; RUN: opt -mtriple=amdgcn-- -passes=amdgpu-printf-runtime-binding -mcpu=gfx90a -S < %s | FileCheck --check-prefix=GCN %s

@str = private unnamed_addr constant [10 x i8] c"string %d\00", align 1

define void @caller(i32 %n) {
; GCN-LABEL: define void @caller
; GCN-SAME: (i32 [[N:%.*]]) #[[ATTR0:[0-9]+]] {
; GCN-NEXT:  entry:
; GCN-NEXT:    [[CALL:%.*]] = call i32 (ptr, ...) @printf(ptr @str, i32 [[N]])
; GCN-NEXT:    ret void
;
entry:
  %call = call i32 (ptr, ...) @printf(ptr @str, i32 %n)
  ret void
}

define void @caller_builtin(i32 %n) {
; GCN-LABEL: define void @caller_builtin
; GCN-SAME: (i32 [[N:%.*]]) #[[ATTR0]] {
; GCN-NEXT:  entry:
; GCN-NEXT:    [[PRINTF_ALLOC_FN:%.*]] = call ptr addrspace(1) @__printf_alloc(i32 8)
; GCN-NEXT:    br label [[ENTRY_SPLIT:%.*]]
; GCN:       entry.split:
; GCN-NEXT:    [[TMP0:%.*]] = icmp ne ptr addrspace(1) [[PRINTF_ALLOC_FN]], null
; GCN-NEXT:    br i1 [[TMP0]], label [[TMP1:%.*]], label [[TMP2:%.*]]
; GCN:       1:
; GCN-NEXT:    [[PRINTBUFFID:%.*]] = getelementptr i8, ptr addrspace(1) [[PRINTF_ALLOC_FN]], i32 0
; GCN-NEXT:    [[PRINTBUFFIDCAST:%.*]] = bitcast ptr addrspace(1) [[PRINTBUFFID]] to ptr addrspace(1)
; GCN-NEXT:    store i32 1, ptr addrspace(1) [[PRINTBUFFIDCAST]], align 4
; GCN-NEXT:    [[PRINTBUFFGEP:%.*]] = getelementptr i8, ptr addrspace(1) [[PRINTF_ALLOC_FN]], i32 4
; GCN-NEXT:    store i32 [[N]], ptr addrspace(1) [[PRINTBUFFGEP]], align 4
; GCN-NEXT:    br label [[TMP2]]
; GCN:       2:
; GCN-NEXT:    ret void
;
entry:
  %call = call i32 (ptr, ...) @printf(ptr @str, i32 %n) #0
  ret void
}

declare i32 @printf(ptr, ...) #1

attributes #0 = { builtin }
attributes #1 = { nobuiltin }
