| ; RUN: llc -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s |
| ; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown %s -o - -filetype=obj | spirv-val %} |
| |
| ; Verify that <1 x T> types are scalarized to T since SPIR-V doesn't support |
| ; single-element vectors. |
| |
| ; CHECK-DAG: %[[#INT16:]] = OpTypeInt 16 0 |
| ; CHECK-DAG: %[[#FLOAT64:]] = OpTypeFloat 64 |
| ; CHECK-DAG: %[[#VEC4:]] = OpTypeVector %[[#FLOAT64]] 4 |
| ; CHECK-DAG: %[[#FNTY:]] = OpTypeFunction %[[#VEC4]] %[[#INT16]] |
| ; CHECK-DAG: %[[#ZERO:]] = OpConstantNull %[[#INT16]] |
| |
| ; CHECK: OpFunctionCall %[[#VEC4]] %[[#]] %[[#ZERO]] |
| define spir_func <4 x double> @caller() { |
| entry: |
| %C = call <4 x double> @callee(<1 x i16> zeroinitializer) |
| ret <4 x double> %C |
| } |
| declare <4 x double> @callee(<1 x i16>) |
| |
| ; CHECK: %[[#EXTRACT_RES:]] = OpFunctionParameter %[[#INT16]] |
| ; CHECK: OpReturnValue %[[#EXTRACT_RES]] |
| define spir_func i16 @test_extractelement(<1 x i16> %v) { |
| entry: |
| %e = extractelement <1 x i16> %v, i32 0 |
| ret i16 %e |
| } |
| |
| ; CHECK: %[[#INSERT_VAL:]] = OpFunctionParameter %[[#INT16]] |
| ; CHECK: OpReturnValue %[[#INSERT_VAL]] |
| define spir_func <1 x i16> @test_insertelement(i16 %val) { |
| entry: |
| %v = insertelement <1 x i16> poison, i16 %val, i32 0 |
| ret <1 x i16> %v |
| } |
| |
| ; CHECK: %[[#SHUF_PARAM:]] = OpFunctionParameter %[[#INT16]] |
| ; CHECK: OpReturnValue %[[#SHUF_PARAM]] |
| define spir_func <1 x i16> @test_shufflevector(<1 x i16> %v) { |
| entry: |
| %s = shufflevector <1 x i16> %v, <1 x i16> poison, <1 x i32> zeroinitializer |
| ret <1 x i16> %s |
| } |
| |
| ; CHECK: %[[#LHS_PARAM:]] = OpFunctionParameter %[[#INT16]] |
| ; CHECK: %[[#RHS_PARAM:]] = OpFunctionParameter %[[#INT16]] |
| ; CHECK: %[[#RET:]] = OpIAdd %[[#INT16]] %[[#LHS_PARAM]] %[[#RHS_PARAM]] |
| ; CHECK: OpReturnValue %[[#RET]] |
| define spir_func <1 x i16> @test_arithm(<1 x i16> %v1, <1 x i16> %v2) { |
| entry: |
| %s = add <1 x i16> %v1, %v2 |
| ret <1 x i16> %s |
| } |