|
| 1 | +;=========================== begin_copyright_notice ============================ |
| 2 | +; |
| 3 | +; Copyright (C) 2023 Intel Corporation |
| 4 | +; |
| 5 | +; SPDX-License-Identifier: MIT |
| 6 | +; |
| 7 | +;============================ end_copyright_notice ============================= |
| 8 | + |
| 9 | +; To test inline as on constraint "P" : plain immediate |
| 10 | + |
| 11 | +; REQUIRES: llvm-14-plus, regkeys |
| 12 | + |
| 13 | +; RUN: igc_opt --opaque-pointers --CheckInstrTypes --igc-update-instrtypes-on-run -inputocl --neo \ |
| 14 | +; RUN: -platformpvc -igc-emit-visa -regkey DumpVISAASMToConsole -simd-mode 16 %s \ |
| 15 | +; RUN: | FileCheck %s |
| 16 | + |
| 17 | +; CHECK-LABEL: .function |
| 18 | +; CHECK: dpas.bf.bf.8.2 (M1, 16) |
| 19 | +; CHECK: ret (M1, 1) |
| 20 | + |
| 21 | +; Function Attrs: convergent nounwind null_pointer_is_valid |
| 22 | +define spir_kernel void @test(i32 addrspace(1)* align 4 %a, i32 addrspace(1)* align 4 %b, <8 x i32> %r0, <8 x i32> %payloadHeader, |
| 23 | + i16 %localIdX, i16 %localIdY, i16 %localIdZ ) { |
| 24 | +entry: |
| 25 | + %lid = zext i16 %localIdX to i64 |
| 26 | + %base = ptrtoint i32 addrspace(1)* %a to i64 |
| 27 | + %bbase = ptrtoint i32 addrspace(1)* %b to i64 |
| 28 | + %tmp0 = add i64 %base, %lid |
| 29 | + %a_addr = inttoptr i64 %tmp0 to i16 addrspace(1)* |
| 30 | + %tmp1 = add i64 %bbase, %lid |
| 31 | + %b_addr = inttoptr i64 %tmp1 to i16 addrspace(1)* |
| 32 | + %ma = load i32, ptr addrspace(1) %a, align 4 |
| 33 | + %mb = load i32, ptr addrspace(1) %b, align 4 |
| 34 | + |
| 35 | + %r = call i32 asm "dpas.bf.bf.8.$4 (M1, 16) $0.0 $1.0 $2.0 $3(0,0)" , "=rw,rw,rw,rw,P"(i32 0, i32 %ma, i32 %mb, i32 2) |
| 36 | + |
| 37 | + %tmp3 = add i64 %tmp0, 1024 |
| 38 | + %d_addr = inttoptr i64 %tmp3 to i32 addrspace(1)* |
| 39 | + store i32 %r, i32 addrspace(1)* %d_addr |
| 40 | + ret void |
| 41 | +} |
| 42 | + |
| 43 | + |
| 44 | +!igc.functions = !{!0} |
| 45 | +!IGCMetadata = !{!13} |
| 46 | + |
| 47 | +!0 = !{void (i16 addrspace(1)*, i16 addrspace(1)*, <8 x i32>, <8 x i32>, i16, i16, i16)* @test, !1} |
| 48 | +!1 = !{!2, !3} |
| 49 | +!2 = !{!"function_type", i32 0} |
| 50 | +!3 = !{!"sub_group_size", i32 16} |
| 51 | +!13 = !{!"ModuleMD", !14} |
| 52 | +!14 = !{!"FuncMD", !15, !16} |
| 53 | +!15 = !{!"FuncMDMap[0]", void (i16 addrspace(1)*, i16 addrspace(1)*, <8 x i32>, <8 x i32>, i16, i16, i16)* @test} |
| 54 | +!16 = !{!"FuncMDValue[0]", !90, !100, !226} |
| 55 | +!90 = !{!"localOffsets"} |
| 56 | +!100 = !{!"resAllocMD", !183, !184, !185, !186} |
| 57 | +!183 = !{!"uavsNumType", i32 0} |
| 58 | +!184 = !{!"srvsNumType", i32 0} |
| 59 | +!185 = !{!"samplersNumType", i32 0} |
| 60 | +!186 = !{!"argAllocMDList", !187, !191, !192, !193, !194, !195, !196} |
| 61 | +!187 = !{!"argAllocMDListVec[0]", !188, !189, !190} |
| 62 | +!188 = !{!"type", i32 0} |
| 63 | +!189 = !{!"extensionType", i32 -1} |
| 64 | +!190 = !{!"indexType", i32 -1} |
| 65 | +!191 = !{!"argAllocMDListVec[1]", !188, !189, !190} |
| 66 | +!192 = !{!"argAllocMDListVec[2]", !188, !189, !190} |
| 67 | +!193 = !{!"argAllocMDListVec[3]", !188, !189, !190} |
| 68 | +!194 = !{!"argAllocMDListVec[4]", !188, !189, !190} |
| 69 | +!195 = !{!"argAllocMDListVec[5]", !188, !189, !190} |
| 70 | +!196 = !{!"argAllocMDListVec[6]", !188, !189, !190} |
| 71 | +!226 = !{!"m_OpenCLArgTypeQualifiers", !227, !228} |
| 72 | +!227 = !{!"m_OpenCLArgTypeQualifiersVec[0]", !""} |
| 73 | +!228 = !{!"m_OpenCLArgTypeQualifiersVec[1]", !""} |
| 74 | + |
0 commit comments