brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · 3382987 Raw
46 lines · plain
1; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s2; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown %s -o - -filetype=obj | spirv-val %}3 4; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv32-unknown-unknown %s -o - | FileCheck %s5; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv32-unknown-unknown %s -o - -filetype=obj | spirv-val %}6 7; CHECK-DAG: %[[#TYCHAR:]] = OpTypeInt 8 08; CHECK-DAG: %[[#TYCHARPTR:]] = OpTypePointer Function %[[#TYCHAR]]9; CHECK-DAG: %[[#TYINT32:]] = OpTypeInt 32 010; CHECK-DAG: %[[#TYSTRUCTINT32:]] = OpTypeStruct %[[#TYINT32]]11; CHECK-DAG: %[[#TYARRAY:]] = OpTypeArray %[[#TYSTRUCTINT32]] %[[#]]12; CHECK-DAG: %[[#TYSTRUCT:]] = OpTypeStruct %[[#TYARRAY]]13; CHECK-DAG: %[[#TYSTRUCTPTR:]] = OpTypePointer Function %[[#TYSTRUCT]]14; CHECK-DAG: %[[#TYINT64:]] = OpTypeInt 64 015; CHECK-DAG: %[[#TYINT64PTR:]] = OpTypePointer Function %[[#TYINT64]]16; CHECK: OpFunction17; CHECK: %[[#PTRTOSTRUCT:]] = OpFunctionParameter %[[#TYSTRUCTPTR]]18; CHECK: %[[#PTRTOCHAR:]] = OpBitcast %[[#TYCHARPTR]] %[[#PTRTOSTRUCT]]19; CHECK-NEXT: OpInBoundsPtrAccessChain %[[#TYCHARPTR]] %[[#PTRTOCHAR]]20; CHECK: OpFunction21; CHECK: %[[#PTRTOSTRUCT2:]] = OpFunctionParameter %[[#TYSTRUCTPTR]]22; CHECK: %[[#ELEM:]] = OpInBoundsPtrAccessChain %[[#TYSTRUCTPTR]] %[[#PTRTOSTRUCT2]]23; CHECK-NEXT: %[[#TOLOAD:]] = OpBitcast %[[#TYINT64PTR]] %[[#ELEM]]24; CHECK-NEXT: OpLoad %[[#TYINT64]] %[[#TOLOAD]]25 26%struct.S = type { i32 }27%struct.__wrapper_class = type { [7 x %struct.S] }28 29@G_elem = global ptr null30@G_data = global i64 031 32define spir_kernel void @foo1(ptr noundef byval(%struct.__wrapper_class) align 4 %_arg_Arr) {33entry:34  %elem = getelementptr inbounds i8, ptr %_arg_Arr, i64 035  store ptr %elem, ptr @G_elem36  ret void37}38 39define spir_kernel void @foo2(ptr noundef byval(%struct.__wrapper_class) align 4 %_arg_Arr) {40entry:41  %elem = getelementptr inbounds %struct.__wrapper_class, ptr %_arg_Arr, i64 042  %data = load i64, ptr %elem43  store i64 %data, ptr @G_data44  ret void45}46