1; RUN: opt -mtriple=amdgcn-amd-amdhsa -S -inline < %s | FileCheck %s 2; RUN: opt -mtriple=amdgcn-amd-amdhsa -S -passes='cgscc(inline)' < %s | FileCheck %s 3 4define i32 @func_default() #0 { 5 ret i32 0 6} 7 8define i32 @func_ieee_enabled() #1 { 9 ret i32 0 10} 11 12define i32 @func_ieee_disabled() #2 { 13 ret i32 0 14} 15 16; CHECK-LABEL: @default_call_default( 17; CHECK-NEXT: ret i32 0 18define i32 @default_call_default() #0 { 19 %call = call i32 @func_default() 20 ret i32 %call 21} 22 23; CHECK-LABEL: @ieee_enabled_call_default( 24; CHECK-NEXT: ret i32 0 25define i32 @ieee_enabled_call_default() #1 { 26 %call = call i32 @func_default() 27 ret i32 %call 28} 29 30; CHECK-LABEL: @ieee_enabled_call_ieee_enabled( 31; CHECK-NEXT: ret i32 0 32define i32 @ieee_enabled_call_ieee_enabled() #1 { 33 %call = call i32 @func_ieee_enabled() 34 ret i32 %call 35} 36 37; CHECK-LABEL: @ieee_enabled_call_ieee_disabled( 38; CHECK-NEXT: call i32 @func_ieee_disabled() 39define i32 @ieee_enabled_call_ieee_disabled() #1 { 40 %call = call i32 @func_ieee_disabled() 41 ret i32 %call 42} 43 44; CHECK-LABEL: @ieee_disabled_call_default( 45; CHECK-NEXT: call i32 @func_default() 46define i32 @ieee_disabled_call_default() #2 { 47 %call = call i32 @func_default() 48 ret i32 %call 49} 50 51; CHECK-LABEL: @ieee_disabled_call_ieee_enabled( 52; CHECK-NEXT: call i32 @func_ieee_enabled() 53define i32 @ieee_disabled_call_ieee_enabled() #2 { 54 %call = call i32 @func_ieee_enabled() 55 ret i32 %call 56} 57 58; CHECK-LABEL: @ieee_disabled_call_ieee_disabled( 59; CHECK-NEXT: ret i32 0 60define i32 @ieee_disabled_call_ieee_disabled() #2 { 61 %call = call i32 @func_ieee_disabled() 62 ret i32 %call 63} 64 65; Shader calling a compute function 66; CHECK-LABEL: @amdgpu_ps_default_call_default( 67; CHECK-NEXT: call i32 @func_default() 68define amdgpu_ps i32 @amdgpu_ps_default_call_default() #0 { 69 %call = call i32 @func_default() 70 ret i32 %call 71} 72 73; Shader with ieee enabled calling a compute function 74; CHECK-LABEL: @amdgpu_ps_ieee_enabled_call_default( 75; CHECK-NEXT: ret i32 0 76define amdgpu_ps i32 @amdgpu_ps_ieee_enabled_call_default() #1 { 77 %call = call i32 @func_default() 78 ret i32 %call 79} 80 81; CHECK-LABEL: @amdgpu_ps_ieee_disabled_call_default( 82; CHECK-NEXT: call i32 @func_default() 83define amdgpu_ps i32 @amdgpu_ps_ieee_disabled_call_default() #2 { 84 %call = call i32 @func_default() 85 ret i32 %call 86} 87 88attributes #0 = { nounwind } 89attributes #1 = { nounwind "amdgpu-ieee"="true" } 90attributes #2 = { nounwind "amdgpu-ieee"="false" } 91