| ; RUN: llc -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s | |
| ; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv-unknown-unknown %s -o - -filetype=obj | spirv-val %} | |
| ; Verify that calling a function, that looks like a builtin, but has no matching | |
| ; number of arguments is treated as user function. | |
| ; "Barrier" with zero args - consider as user function. | |
| ; CHECK: OpFunctionCall %[[#]] %[[#]] | |
| define spir_func void @test_too_few() { | |
| call spir_func void @barrier() | |
| ret void | |
| } | |
| ; Too many args - consider as user function. | |
| ; CHECK: OpFunctionCall %[[#]] %[[#]] %[[#]] %[[#]] %[[#]] %[[#]] | |
| define spir_func void @test_too_many() { | |
| call spir_func void @_Z7barrieriiii(i32 1, i32 2, i32 3, i32 4) | |
| ret void | |
| } | |
| declare spir_func void @barrier() | |
| declare spir_func void @_Z7barrieriiii(i32, i32, i32, i32) |