xref: /llvm-project/llvm/test/CodeGen/X86/amx-avx512-intrinsics.ll (revision 48803bc8c7be25745a0e623e6753261c07281b06)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc < %s -O0 -verify-machineinstrs -mtriple=x86_64-unknown-unknown --show-mc-encoding -mattr=+amx-tile,+amx-avx512,+avx10.2-512 | FileCheck %s
3
4define <16 x float> @test_tcvtrowd2ps(i32 %A) {
5; CHECK-LABEL: test_tcvtrowd2ps:
6; CHECK:       # %bb.0:
7; CHECK-NEXT:    tcvtrowd2ps %edi, %tmm1, %zmm0 # encoding: [0x62,0xf2,0x46,0x48,0x4a,0xc1]
8; CHECK-NEXT:    retq # encoding: [0xc3]
9  %ret = call <16 x float> @llvm.x86.tcvtrowd2ps(i8 1, i32 %A)
10  ret <16 x float> %ret
11}
12
13define <16 x float> @test_tcvtrowd2psi() {
14; CHECK-LABEL: test_tcvtrowd2psi:
15; CHECK:       # %bb.0:
16; CHECK-NEXT:    tcvtrowd2ps $127, %tmm1, %zmm0 # encoding: [0x62,0xf3,0x7e,0x48,0x07,0xc1,0x7f]
17; CHECK-NEXT:    retq # encoding: [0xc3]
18  %ret = call <16 x float> @llvm.x86.tcvtrowd2ps(i8 1, i32 127)
19  ret <16 x float> %ret
20}
21declare <16 x float> @llvm.x86.tcvtrowd2ps(i8 %A, i32 %B)
22
23define <32 x bfloat> @test_tcvtrowps2bf16h(i32 %A) {
24; CHECK-LABEL: test_tcvtrowps2bf16h:
25; CHECK:       # %bb.0:
26; CHECK-NEXT:    tcvtrowps2bf16h %edi, %tmm1, %zmm0 # encoding: [0x62,0xf2,0x47,0x48,0x6d,0xc1]
27; CHECK-NEXT:    retq # encoding: [0xc3]
28  %ret = call <32 x bfloat> @llvm.x86.tcvtrowps2bf16h(i8 1, i32 %A)
29  ret <32 x bfloat> %ret
30}
31
32define <32 x bfloat> @test_tcvtrowps2bf16hi() {
33; CHECK-LABEL: test_tcvtrowps2bf16hi:
34; CHECK:       # %bb.0:
35; CHECK-NEXT:    tcvtrowps2bf16h $127, %tmm1, %zmm0 # encoding: [0x62,0xf3,0x7f,0x48,0x07,0xc1,0x7f]
36; CHECK-NEXT:    retq # encoding: [0xc3]
37  %ret = call <32 x bfloat> @llvm.x86.tcvtrowps2bf16h(i8 1, i32 127)
38  ret <32 x bfloat> %ret
39}
40declare <32 x bfloat> @llvm.x86.tcvtrowps2bf16h(i8 %A, i32 %B)
41
42define <32 x bfloat> @test_tcvtrowps2bf16l(i32 %A) {
43; CHECK-LABEL: test_tcvtrowps2bf16l:
44; CHECK:       # %bb.0:
45; CHECK-NEXT:    tcvtrowps2bf16l %edi, %tmm1, %zmm0 # encoding: [0x62,0xf2,0x46,0x48,0x6d,0xc1]
46; CHECK-NEXT:    retq # encoding: [0xc3]
47  %ret = call <32 x bfloat> @llvm.x86.tcvtrowps2bf16l(i8 1, i32 %A)
48  ret <32 x bfloat> %ret
49}
50
51define <32 x bfloat> @test_tcvtrowps2bf16li() {
52; CHECK-LABEL: test_tcvtrowps2bf16li:
53; CHECK:       # %bb.0:
54; CHECK-NEXT:    tcvtrowps2bf16l $127, %tmm1, %zmm0 # encoding: [0x62,0xf3,0x7e,0x48,0x77,0xc1,0x7f]
55; CHECK-NEXT:    retq # encoding: [0xc3]
56  %ret = call <32 x bfloat> @llvm.x86.tcvtrowps2bf16l(i8 1, i32 127)
57  ret <32 x bfloat> %ret
58}
59declare <32 x bfloat> @llvm.x86.tcvtrowps2bf16l(i8 %A, i32 %B)
60
61define <32 x half> @test_tcvtrowps2phh(i32 %A) {
62; CHECK-LABEL: test_tcvtrowps2phh:
63; CHECK:       # %bb.0:
64; CHECK-NEXT:    tcvtrowps2phh %edi, %tmm1, %zmm0 # encoding: [0x62,0xf2,0x44,0x48,0x6d,0xc1]
65; CHECK-NEXT:    retq # encoding: [0xc3]
66  %ret = call <32 x half> @llvm.x86.tcvtrowps2phh(i8 1, i32 %A)
67  ret <32 x half> %ret
68}
69
70define <32 x half> @test_tcvtrowps2phhi() {
71; CHECK-LABEL: test_tcvtrowps2phhi:
72; CHECK:       # %bb.0:
73; CHECK-NEXT:    tcvtrowps2phh $127, %tmm1, %zmm0 # encoding: [0x62,0xf3,0x7c,0x48,0x07,0xc1,0x7f]
74; CHECK-NEXT:    retq # encoding: [0xc3]
75  %ret = call <32 x half> @llvm.x86.tcvtrowps2phh(i8 1, i32 127)
76  ret <32 x half> %ret
77}
78declare <32 x half> @llvm.x86.tcvtrowps2phh(i8 %A, i32 %B)
79
80define <32 x half> @test_tcvtrowps2phl(i32 %A) {
81; CHECK-LABEL: test_tcvtrowps2phl:
82; CHECK:       # %bb.0:
83; CHECK-NEXT:    tcvtrowps2phl %edi, %tmm1, %zmm0 # encoding: [0x62,0xf2,0x45,0x48,0x6d,0xc1]
84; CHECK-NEXT:    retq # encoding: [0xc3]
85  %ret = call <32 x half> @llvm.x86.tcvtrowps2phl(i8 1, i32 %A)
86  ret <32 x half> %ret
87}
88
89define <32 x half> @test_tcvtrowps2phli() {
90; CHECK-LABEL: test_tcvtrowps2phli:
91; CHECK:       # %bb.0:
92; CHECK-NEXT:    tcvtrowps2phl $127, %tmm1, %zmm0 # encoding: [0x62,0xf3,0x7f,0x48,0x77,0xc1,0x7f]
93; CHECK-NEXT:    retq # encoding: [0xc3]
94  %ret = call <32 x half> @llvm.x86.tcvtrowps2phl(i8 1, i32 127)
95  ret <32 x half> %ret
96}
97declare <32 x half> @llvm.x86.tcvtrowps2phl(i8 %A, i32 %B)
98
99define <16 x i32> @test_tilemovrow(i32 %A) {
100; CHECK-LABEL: test_tilemovrow:
101; CHECK:       # %bb.0:
102; CHECK-NEXT:    tilemovrow %edi, %tmm1, %zmm0 # encoding: [0x62,0xf2,0x45,0x48,0x4a,0xc1]
103; CHECK-NEXT:    retq # encoding: [0xc3]
104  %ret = call <16 x i32> @llvm.x86.tilemovrow(i8 1, i32 %A)
105  ret <16 x i32> %ret
106}
107
108define <16 x i32> @test_tilemovrowi() {
109; CHECK-LABEL: test_tilemovrowi:
110; CHECK:       # %bb.0:
111; CHECK-NEXT:    tilemovrow $127, %tmm1, %zmm0 # encoding: [0x62,0xf3,0x7d,0x48,0x07,0xc1,0x7f]
112; CHECK-NEXT:    retq # encoding: [0xc3]
113  %ret = call <16 x i32> @llvm.x86.tilemovrow(i8 1, i32 127)
114  ret <16 x i32> %ret
115}
116declare <16 x i32> @llvm.x86.tilemovrow(i8 %A, i32 %B)
117