File: inline_asm.ll

package info (click to toggle)
intel-graphics-compiler 1.0.17791.18-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 102,312 kB
  • sloc: cpp: 935,343; lisp: 286,143; ansic: 16,196; python: 3,279; yacc: 2,487; lex: 1,642; pascal: 300; sh: 174; makefile: 27
file content (44 lines) | stat: -rw-r--r-- 2,350 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
;=========================== begin_copyright_notice ============================
;
; Copyright (C) 2024 Intel Corporation
;
; SPDX-License-Identifier: MIT
;
;============================ end_copyright_notice =============================

; RUN: llc %s -march=genx64 -mcpu=XeHPG -vc-skip-ocl-runtime-info \
; RUN: -finalizer-opts='-dumpcommonisa -isaasmToConsole' -o /dev/null | FileCheck %s

; CHECK-NOT: (P{{[0-9]+}}) add (M1, 8) [[OUT:V[0-9]+]](0,0)<1> [[OUT]](0,0)<1;1,0> V{{[0-9]+}}(0,0)<1;1,0>

target datalayout = "e-p:64:64-p3:32:32-p6:32:32-i64:64-n8:16:32:64"
target triple = "spir64-unknown-unknown"

define spir_kernel void @test(i32 %_arg_VL, i8 addrspace(4)* %_arg_PA, i8 addrspace(4)* %_arg_PB, i8 addrspace(4)* %_arg_PC, <3 x i16> %impl.arg.llvm.genx.local.id16, <3 x i32> %impl.arg.llvm.genx.local.size, i64 %impl.arg.private.base) #0 {
  %1 = bitcast i8 addrspace(4)* %_arg_PA to <8 x i32> addrspace(4)*
  %2 = load <8 x i32>, <8 x i32> addrspace(4)* %1, align 4
  %3 = bitcast i8 addrspace(4)* %_arg_PB to <8 x i32> addrspace(4)*
  %4 = load <8 x i32>, <8 x i32> addrspace(4)* %3, align 4
  %5 = tail call <8 x i16> asm "mov (M1, 8) $0 0x1010101:v", "=r"()
  %6 = tail call <8 x i32> asm "{\0A.decl P1 v_type=P num_elts=8\0Amov (M1, 8) $0 0x1:ud\0Asetp (M1, 8) P1 $3\0A(P1) add (M1, 8) $0 $1 $2\0A}", "=r,r,r,r"(<8 x i32> %2, <8 x i32> %4, <8 x i16> %5)
  %7 = mul <8 x i32> %6, <i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2>
  %8 = bitcast i8 addrspace(4)* %_arg_PC to <8 x i32> addrspace(4)*
  store <8 x i32> %7, <8 x i32> addrspace(4)* %8, align 4
  ret void
}

attributes #0 = { "CMGenxMain" }

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

!0 = !{void (i32, i8 addrspace(4)*, i8 addrspace(4)*, i8 addrspace(4)*, <3 x i16>, <3 x i32>, i64)* @test, !"test", !1, i32 0, !2, !3, !4, i32 0}
!1 = !{i32 0, i32 0, i32 0, i32 0, i32 24, i32 8, i32 96}
!2 = !{i32 88, i32 96, i32 104, i32 112, i32 32, i32 64, i32 80}
!3 = !{i32 0, i32 0, i32 0, i32 0}
!4 = !{!"", !"svmptr_t", !"svmptr_t", !"svmptr_t"}
!5 = !{void (i32, i8 addrspace(4)*, i8 addrspace(4)*, i8 addrspace(4)*, <3 x i16>, <3 x i32>, i64)* @test, !6, !7, !8, !9}
!6 = !{i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0}
!7 = !{i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6}
!8 = !{}
!9 = !{i32 -1, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255}