xref: /llvm-project/llvm/test/CodeGen/SPIRV/function/multiple-anonymous-functions.ll (revision 67d3ef74b31e1517d4f679e754cc2b3041c95901)
1*67d3ef74SVyacheslav Levytskyy; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s
299203241SMichal Paszkowski
399203241SMichal Paszkowski;; Types:
499203241SMichal Paszkowski; CHECK-DAG:  %[[#I32:]] = OpTypeInt 32
599203241SMichal Paszkowski; CHECK-DAG:  %[[#F32:]] = OpTypeFloat 32
699203241SMichal Paszkowski; CHECK-DAG:  %[[#FNI32:]] = OpTypeFunction %[[#I32]] %[[#I32]]
799203241SMichal Paszkowski; CHECK-DAG:  %[[#FNF32:]] = OpTypeFunction %[[#F32]] %[[#F32]]
899203241SMichal Paszkowski
999203241SMichal Paszkowski;; Function declarations:
1099203241SMichal Paszkowski; CHECK:      %[[#ANON0:]] = OpFunction %[[#I32]] None %[[#FNI32]]
1199203241SMichal Paszkowski; CHECK-NEXT: OpFunctionParameter %[[#I32]]
1299203241SMichal Paszkowski; CHECK-NEXT: OpLabel
1399203241SMichal Paszkowski; CHECK-NEXT: OpReturnValue
1499203241SMichal Paszkowski; CHECK-NEXT: OpFunctionEnd
1599203241SMichal Paszkowskidefine internal spir_func i32 @0(i32 %a) {
1699203241SMichal Paszkowski  ret i32 %a
1799203241SMichal Paszkowski}
1899203241SMichal Paszkowski
1999203241SMichal Paszkowski; CHECK:      %[[#ANON1:]] = OpFunction %[[#F32]] None %[[#FNF32]]
2099203241SMichal Paszkowski; CHECK-NEXT: OpFunctionParameter %[[#F32]]
2199203241SMichal Paszkowski; CHECK-NEXT: OpLabel
2299203241SMichal Paszkowski; CHECK-NEXT: OpReturnValue
2399203241SMichal Paszkowski; CHECK-NEXT: OpFunctionEnd
2499203241SMichal Paszkowskidefine internal spir_func float @1(float %a) {
2599203241SMichal Paszkowski  ret float %a
2699203241SMichal Paszkowski}
2799203241SMichal Paszkowski
2899203241SMichal Paszkowski;; Calls:
2999203241SMichal Paszkowski; CHECK:      OpFunctionCall %[[#I32]] %[[#ANON0]]
3099203241SMichal Paszkowski; CHECK:      OpFunctionCall %[[#F32]] %[[#ANON1]]
3199203241SMichal Paszkowskidefine spir_kernel void @foo(i32 %a) {
3299203241SMichal Paszkowski  %call1 = call spir_func i32 @0(i32 %a)
3399203241SMichal Paszkowski  %b = sitofp i32 %a to float
3499203241SMichal Paszkowski  %call2 = call spir_func float @1(float %b)
3599203241SMichal Paszkowski  ret void
3699203241SMichal Paszkowski}
37