|
| 1 | +; Check SPIRVReader support for OpCopyMemory. |
| 2 | + |
| 3 | +; REQUIRES: spirv-as |
| 4 | +; RUN: spirv-as --target-env spv1.0 -o %t.spv %s |
| 5 | +; RUN: spirv-val %t.spv |
| 6 | +; RUN: llvm-spirv -r %t.spv -o %t.rev.bc |
| 7 | +; RUN: llvm-dis %t.rev.bc -o - | FileCheck %s |
| 8 | + |
| 9 | + OpCapability Addresses |
| 10 | + OpCapability Int16 |
| 11 | + OpCapability Kernel |
| 12 | + OpMemoryModel Physical64 OpenCL |
| 13 | + OpEntryPoint Kernel %kernel "copymemory" |
| 14 | + OpName %pStruct "pStruct" |
| 15 | + OpName %dstStruct "dstStruct" |
| 16 | + OpName %pShort "pShort" |
| 17 | + OpName %dstShort "dstShort" |
| 18 | + OpName %pInt "pInt" |
| 19 | + OpName %dstInt "dstInt" |
| 20 | + %ushort = OpTypeInt 16 0 |
| 21 | + %uint = OpTypeInt 32 0 |
| 22 | + %struct = OpTypeStruct %ushort %uint %ushort |
| 23 | + %void = OpTypeVoid |
| 24 | +%gptr_struct = OpTypePointer CrossWorkgroup %struct |
| 25 | +%pptr_struct = OpTypePointer Function %struct |
| 26 | + %gptr_short = OpTypePointer CrossWorkgroup %ushort |
| 27 | + %pptr_short = OpTypePointer Function %ushort |
| 28 | + %gptr_int = OpTypePointer CrossWorkgroup %uint |
| 29 | + %pptr_int = OpTypePointer Function %uint |
| 30 | + %kernel_sig = OpTypeFunction %void %gptr_short %gptr_int %gptr_struct |
| 31 | + %ushort_42 = OpConstant %ushort 42 |
| 32 | + %uint_4242 = OpConstant %uint 4242 |
| 33 | +%struct_init = OpConstantComposite %struct %ushort_42 %uint_4242 %ushort_42 |
| 34 | + %kernel = OpFunction %void None %kernel_sig |
| 35 | + %dstShort = OpFunctionParameter %gptr_short |
| 36 | + %dstInt = OpFunctionParameter %gptr_int |
| 37 | + %dstStruct = OpFunctionParameter %gptr_struct |
| 38 | + %entry = OpLabel |
| 39 | + %pShort = OpVariable %pptr_short Function %ushort_42 |
| 40 | + %pInt = OpVariable %pptr_int Function %uint_4242 |
| 41 | + %pStruct = OpVariable %pptr_struct Function %struct_init |
| 42 | + OpCopyMemory %dstShort %pShort |
| 43 | + OpCopyMemory %dstInt %pInt |
| 44 | + OpCopyMemory %dstStruct %pStruct |
| 45 | + OpReturn |
| 46 | + OpFunctionEnd |
| 47 | + |
| 48 | +; CHECK-LABEL: define spir_kernel void @copymemory(ptr addrspace(1) %dstShort, ptr addrspace(1) %dstInt, ptr addrspace(1) %dstStruct) |
| 49 | +; CHECK: call void @llvm.memcpy.p1.p0.i64(ptr addrspace(1) %dstShort, ptr @pShort, i64 2, i1 false) |
| 50 | +; CHECK: call void @llvm.memcpy.p1.p0.i64(ptr addrspace(1) %dstInt, ptr @pInt, i64 4, i1 false) |
| 51 | +; CHECK: call void @llvm.memcpy.p1.p0.i64(ptr addrspace(1) %dstStruct, ptr @pStruct, i64 12, i1 false) |
0 commit comments