Home | History | Annotate | Download | only in AMDGPU
      1 ; RUN: opt -S -mtriple=amdgcn-amd-amdhsa -codegenprepare %s | FileCheck %s
      2 
      3 define internal fastcc void @callee(i32* nocapture %p, i32 %a) #0 {
      4   store volatile i32 %a, i32* %p, align 4
      5   ret void
      6 }
      7 
      8 ; CHECK-LABEL: @func_caller(
      9 ; CHECK: tail call fastcc void @callee(
     10 ; CHECK-NEXT: ret void
     11 ; CHECK: ret void
     12 define void @func_caller(i32* nocapture %p, i32 %a, i32 %b) #0 {
     13 entry:
     14   %cmp = icmp eq i32 %b, 0
     15   br i1 %cmp, label %bb, label %ret
     16 
     17 bb:
     18   tail call fastcc void @callee(i32* %p, i32 %a)
     19   br label %ret
     20 
     21 ret:
     22   ret void
     23 }
     24 
     25 ; CHECK-LABEL: @kernel_caller(
     26 ; CHECK: tail call fastcc void @callee(
     27 ; CHECK-NEXT: br label %ret
     28 
     29 ; CHECK: ret void
     30 define amdgpu_kernel void @kernel_caller(i32* nocapture %p, i32 %a, i32 %b) #0 {
     31 entry:
     32   %cmp = icmp eq i32 %b, 0
     33   br i1 %cmp, label %bb, label %ret
     34 
     35 bb:
     36   tail call fastcc void @callee(i32* %p, i32 %a)
     37   br label %ret
     38 
     39 ret:
     40   ret void
     41 }
     42 
     43 attributes #0 = { nounwind }
     44