|  | ; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv32-unknown-unknown %s -o - | FileCheck %s | 
|  |  | 
|  | ;; Debug info: | 
|  | ; CHECK:     OpName %[[#FOO:]] "foo" | 
|  |  | 
|  | ;; Types: | 
|  | ; CHECK:     %[[#VOID:]] = OpTypeVoid | 
|  | ; CHECK:     %[[#FN:]] = OpTypeFunction %[[#VOID]] | 
|  |  | 
|  | ;; Functions: | 
|  | ; CHECK:     %[[#FOO]] = OpFunction %[[#VOID]] None %[[#FN]] | 
|  | ; CHECK-NOT: OpFunctionParameter | 
|  | ;; NOTE: In 2.4, it isn't explicitly written that a function always has a least | 
|  | ;;       one block. In fact, 2.4.11 seems to imply that there are at least two | 
|  | ;;       blocks in functions with a body, but that doesn't make much sense. | 
|  | ;;       However, in order to distinguish between function declaration and | 
|  | ;;       definition, a function needs at least one block, hence why this test | 
|  | ;;       expects one OpLabel + OpReturn. | 
|  | ; CHECK:     OpLabel | 
|  | ; CHECK:     OpReturn | 
|  | ; CHECK-NOT: OpLabel | 
|  | ; CHECK:     OpFunctionEnd | 
|  | define void @foo() { | 
|  | ret void | 
|  | } |