1; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s 2; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown %s -o - -filetype=obj | spirv-val %} 3 4; CHECK-DAG: %[[#FLOAT32:]] = OpTypeFloat 32 5; CHECK-DAG: %[[#PTR1:]] = OpTypePointer Function %[[#FLOAT32]] 6; CHECK-DAG: %[[#ARG:]] = OpFunctionParameter %[[#PTR1]] 7 8define spir_kernel void @test1(ptr %arg) !kernel_arg_type !1 { 9 %a = getelementptr inbounds float, ptr %arg, i64 1 10 ret void 11} 12 13!1 = !{!"float*"} 14 15; CHECK-DAG: %[[#CHAR:]] = OpTypeInt 8 0 16; CHECK-DAG: %[[#PTR2:]] = OpTypePointer Function %[[#CHAR]] 17; CHECK-DAG: %[[#ARG:]] = OpFunctionParameter %[[#PTR2]] 18 19define spir_kernel void @test2(ptr %arg) !kernel_arg_type !2 { 20 %a = getelementptr inbounds i8, ptr %arg, i64 1 21 ret void 22} 23 24!2 = !{!"char*"} 25 26; CHECK-DAG: %[[#SHORT:]] = OpTypeInt 16 0 27; CHECK-DAG: %[[#PTR3:]] = OpTypePointer Function %[[#SHORT]] 28; CHECK-DAG: %[[#ARG:]] = OpFunctionParameter %[[#PTR3]] 29 30define spir_kernel void @test3(ptr %arg) !kernel_arg_type !3 { 31 %a = getelementptr inbounds i16, ptr %arg, i64 1 32 ret void 33} 34 35!3 = !{!"short*"} 36 37; CHECK-DAG: %[[#INT:]] = OpTypeInt 32 0 38; CHECK-DAG: %[[#PTR4:]] = OpTypePointer Function %[[#INT]] 39; CHECK-DAG: %[[#ARG:]] = OpFunctionParameter %[[#PTR4]] 40 41define spir_kernel void @test4(ptr %arg) !kernel_arg_type !4 { 42 %a = getelementptr inbounds i32, ptr %arg, i64 1 43 ret void 44} 45 46!4 = !{!"int*"} 47 48; CHECK-DAG: %[[#LONG:]] = OpTypeInt 64 0 49; CHECK-DAG: %[[#PTR5:]] = OpTypePointer Function %[[#LONG]] 50; CHECK-DAG: %[[#ARG:]] = OpFunctionParameter %[[#PTR5]] 51 52define spir_kernel void @test5(ptr %arg) !kernel_arg_type !5 { 53 %a = getelementptr inbounds i64, ptr %arg, i64 1 54 ret void 55} 56 57!5 = !{!"long*"} 58 59; CHECK-DAG: %[[#DOUBLE:]] = OpTypeFloat 64 60; CHECK-DAG: %[[#PTR6:]] = OpTypePointer Function %[[#DOUBLE]] 61; CHECK-DAG: %[[#ARG:]] = OpFunctionParameter %[[#PTR6]] 62 63define spir_kernel void @test6(ptr %arg) !kernel_arg_type !6 { 64 %a = getelementptr inbounds double, ptr %arg, i64 1 65 ret void 66} 67 68!6 = !{!"double*"} 69 70; CHECK-DAG: %[[#HALF:]] = OpTypeFloat 16 71; CHECK-DAG: %[[#PTR7:]] = OpTypePointer Function %[[#HALF]] 72; CHECK-DAG: %[[#ARG:]] = OpFunctionParameter %[[#PTR7]] 73 74define spir_kernel void @test7(ptr %arg) !kernel_arg_type !7 { 75 %a = getelementptr inbounds half, ptr %arg, i64 1 76 ret void 77} 78 79!7 = !{!"half*"} 80