File: max.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 (37 lines) | stat: -rw-r--r-- 1,950 bytes parent folder | download | duplicates (2)
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
;=========================== begin_copyright_notice ============================
;
; Copyright (C) 2024 Intel Corporation
;
; SPDX-License-Identifier: MIT
;
;============================ end_copyright_notice =============================

;RUN: %opt %use_old_pass_manager% -GenXReduceIntSize -march=genx64 -S < %s | FileCheck %s

declare <16 x i8> @some.intrinsic()
declare void @another.intrinsic(<16 x i32>)
declare <16 x i32>  @llvm.smax.v16i32(<16 x i32>, <16 x i32>)
declare <16 x i32>  @llvm.umax.v16i32(<16 x i32>, <16 x i32>)

; CHECK-LABEL: @test_smax(
define dllexport spir_kernel void @test_smax(i32 %0) {
; CHECK: [[REDUCE:[^ ]+]] = sext <16 x i8> %2 to <16 x i16>
; CHECK: [[CALL:[^ ]+]] = call <16 x i16> @llvm.smax.v16i16(<16 x i16> [[REDUCE]], <16 x i16> <i16 -180, i16 -180, i16 -180, i16 -180, i16 -180, i16 -180, i16 -180, i16 -180, i16 -180, i16 -180, i16 -180, i16 -180, i16 -180, i16 -180, i16 -180, i16 -180>)
; CHECK: [[EXT:[^ ]+]] = sext <16 x i16> [[CALL]] to <16 x i32>
  %2 = call <16 x i8> @some.intrinsic()
  %3 = sext <16 x i8> %2 to <16 x i32>
  %4 = call <16 x i32> @llvm.smax.v16i32(<16 x i32> %3, <16 x i32> <i32 -180, i32 -180, i32 -180, i32 -180, i32 -180, i32 -180, i32 -180, i32 -180, i32 -180, i32 -180, i32 -180, i32 -180, i32 -180, i32 -180, i32 -180, i32 -180>)
  call void @another.intrinsic(<16 x i32> %4)
  ret void
}

; CHECK-LABEL: @test_umax
define dllexport spir_kernel void @test_umax(i32 %0) {
; CHECK: [[CALL:[^ ]+]] = call <16 x i8> @llvm.umax.v16i8(<16 x i8> %2, <16 x i8> <i8 -76
; CHECK: [[EXT:[^ ]+]] = zext <16 x i8> [[CALL]] to <16 x i32>
  %2 = call <16 x i8> @some.intrinsic()
  %3 = zext <16 x i8> %2 to <16 x i32>
  %4 = call <16 x i32> @llvm.umax.v16i32(<16 x i32> %3, <16 x i32> <i32 180, i32 180, i32 180, i32 180, i32 180, i32 180, i32 180, i32 180, i32 180, i32 180, i32 180, i32 180, i32 180, i32 180, i32 180, i32 180>)
  call void @another.intrinsic(<16 x i32> %4)
  ret void
}