File: category.ll

package info (click to toggle)
intel-graphics-compiler2 2.18.5-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 107,080 kB
  • sloc: cpp: 807,289; lisp: 287,855; ansic: 16,414; python: 4,004; yacc: 2,588; lex: 1,666; pascal: 313; sh: 186; makefile: 35
file content (69 lines) | stat: -rw-r--r-- 2,867 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
;=========================== begin_copyright_notice ============================
;
; Copyright (C) 2023-2025 Intel Corporation
;
; SPDX-License-Identifier: MIT
;
;============================ end_copyright_notice =============================

; RUN: %opt_typed_ptrs %use_old_pass_manager% -GenXModule -GenXCategoryWrapper -GenXDepressurizerWrapper \
; RUN:  -march=genx64 -mcpu=XeHPG -mtriple=spir64-unknown-unknown -S < %s | FileCheck %s
; RUN: %opt_opaque_ptrs %use_old_pass_manager% -GenXModule -GenXCategoryWrapper -GenXDepressurizerWrapper \
; RUN:  -march=genx64 -mcpu=XeHPG -mtriple=spir64-unknown-unknown -S < %s | FileCheck %s

; Function Attrs: nofree nounwind readonly
declare <16 x i32> @llvm.genx.oword.ld.unaligned.v16i32(i32, i32, i32) #0

; Function Attrs: nofree nosync nounwind readnone
declare !genx_intrinsic_id !17 <32 x i32> @llvm.genx.wrregioni.v64i32.v32i32.i16.i1(<32 x i32>, <16 x i32>, i32, i32, i32, i16, i32, i1) #2

; Function Attrs: nounwind
declare void @llvm.genx.oword.st.v32i32(i32, i32, <32 x i32>) #3

; Function Attrs: nounwind
declare void @llvm.genx.oword.st.v16i32(i32, i32, <16 x i32>) #3

; Function Attrs: noinline nounwind
define dllexport void @convolution(i32 %val, i32 %idx) local_unnamed_addr #1 {
  %1 = tail call <16 x i32> @llvm.genx.oword.ld.unaligned.v16i32(i32 0, i32 2, i32 0)
  %2 = tail call <16 x i32> @llvm.genx.oword.ld.unaligned.v16i32(i32 0, i32 %idx, i32 64)
  %3 = tail call <16 x i32> @llvm.genx.oword.ld.unaligned.v16i32(i32 0, i32 %idx, i32 128)
  %cmp = icmp eq i32 %val, 8
  br i1 %cmp, label %BB, label %exit

BB:
  ; CHECK: BB
  ; CHECK: [[CATEGORY:[^ ]+]] = call i32 @llvm.genx.convert.i32(i32 2)
  ; CHECK: tail call <16 x i32> @llvm.genx.oword.ld.unaligned.v16i32(i32 0, i32 [[CATEGORY]], i32 0)
  %wrregioni1 = tail call <32 x i32> @llvm.genx.wrregioni.v64i32.v32i32.i16.i1(<32 x i32> undef, <16 x i32> %1, i32 0, i32 16, i32 1, i16 0, i32 undef, i1 true)
  %wrregioni2 = tail call <32 x i32> @llvm.genx.wrregioni.v64i32.v32i32.i16.i1(<32 x i32> %wrregioni1, <16 x i32> %3, i32 0, i32 16, i32 1, i16 64, i32 undef, i1 true)
  tail call void @llvm.genx.oword.st.v32i32(i32 3, i32 0, <32 x i32> %wrregioni2)
  tail call void @llvm.genx.oword.st.v16i32(i32 3, i32 128, <16 x i32> %2)
  br label %exit

exit:
  ret void
}

attributes #0 = { nofree nounwind readonly }
attributes #1 = { nounwind "CMGenxMain" "oclrt"="1" }
attributes #2 = { nofree nosync nounwind readnone }
attributes #3 = { nounwind }

!genx.kernels = !{!0}
!genx.kernel.internal = !{!5}

!0 = !{void (i32, i32)* @convolution, !"convolution", !1, i32 0, !2, !3, !4, i32 0}
!1 = !{i32 64, i32 128}
!2 = !{i32 -1, i32 16}
!3 = !{i32 0}
!4 = !{}
!5 = !{void (i32, i32)* @convolution, !6, !7, !8, null}
!6 = !{i32 0, i32 0}
!7 = !{i32 0, i32 0}
!8 = !{!9}
!9 = !{i32 0, !10}
!10 = !{!11}
!11 = !{i32 1, i32 0}

!17 = !{i32 11177}