1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 11:13:28 +01:00
llvm-mirror/test/CodeGen/X86/AMX/amx-int8-intrinsics.ll
Xiang1 Zhang 535fe28ef4 [X86-64] Support Intel AMX Intrinsic
INTEL ADVANCED MATRIX EXTENSIONS (AMX).
AMX is a new programming paradigm, it has a set of 2-dimensional registers
(TILES) representing sub-arrays from a larger 2-dimensional memory image and
operate on TILES.

These intrinsics use direct TMM register number as its params.

Spec can be found in Chapter 3 here https://software.intel.com/content/www/us/en/develop/download/intel-architecture-instruction-set-extensions-programming-reference.html

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D83111
2020-07-07 10:13:40 +08:00

25 lines
901 B
LLVM

; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+amx-int8 -verify-machineinstrs | FileCheck %s
define void @test_amx() {
; CHECK-LABEL: test_amx:
; CHECK: # %bb.0:
call void @llvm.x86.tdpbssd(i8 3, i8 4, i8 7)
; CHECK-NEXT: tdpbssd %tmm7, %tmm4, %tmm3
call void @llvm.x86.tdpbsud(i8 3, i8 4, i8 7)
; CHECK-NEXT: tdpbsud %tmm7, %tmm4, %tmm3
call void @llvm.x86.tdpbusd(i8 3, i8 0, i8 7)
; CHECK-NEXT: tdpbusd %tmm7, %tmm0, %tmm3
call void @llvm.x86.tdpbuud(i8 3, i8 4, i8 1)
; CHECK-NEXT: tdpbuud %tmm1, %tmm4, %tmm3
ret void
}
declare void @llvm.x86.tdpbssd(i8 %tile0, i8 %tile1, i8 %tile2)
declare void @llvm.x86.tdpbsud(i8 %tile0, i8 %tile1, i8 %tile2)
declare void @llvm.x86.tdpbusd(i8 %tile0, i8 %tile1, i8 %tile2)
declare void @llvm.x86.tdpbuud(i8 %tile0, i8 %tile1, i8 %tile2)