[LLVM][IR] Use splat syntax when printing ConstantExpr based splats. (#116856)
[llvm-project.git] / clang / test / CodeGen / X86 / amx_movrs_tranpose.c
blob192c153835e1e64ce33835d33973460c167c4017
1 // RUN: %clang_cc1 %s -ffreestanding -triple=x86_64-unknown-unknown \
2 // RUN: -target-feature +amx-movrs -emit-llvm -o - -Wall -Werror -pedantic \
3 // RUN: -target-feature +amx-transpose -Wno-gnu-statement-expression| FileCheck %s
5 #include <immintrin.h>
6 #include <stddef.h>
8 char buf[2048];
9 #define STRIDE 32
11 // CHECK-LABEL: define dso_local void @test_tile_2rpntlvwz0rs_internal(
12 // CHECK: call { x86_amx, x86_amx } @llvm.x86.t2rpntlvwz0rs.internal(i16 %{{.*}}, i16 %{{.*}}, i16 %{{.*}}, ptr %{{.*}}, i64 %{{.*}})
13 // CHECK: extractvalue { x86_amx, x86_amx } %{{.*}}, 0
14 // CHECK: call <256 x i32> @llvm.x86.cast.tile.to.vector.v256i32(x86_amx %{{.*}})
15 // CHECK: store <256 x i32> %{{.*}}, ptr %{{.*}}, align 1024
16 // CHECK: extractvalue { x86_amx, x86_amx } %{{.*}}, 1
17 // CHECK: call <256 x i32> @llvm.x86.cast.tile.to.vector.v256i32(x86_amx %{{.*}})
18 void test_tile_2rpntlvwz0rs_internal(int row, int col0, int col1, void *D0, void *D1, void *B) {
19 _tile_2rpntlvwz0rs_internal(row, col0, col1, D0, D1, B, 1);
22 // CHECK-LABEL: define dso_local void @test_tile_2rpntlvwz0rst1_internal(
23 // CHECK: call { x86_amx, x86_amx } @llvm.x86.t2rpntlvwz0rst1.internal(i16 %{{.*}}, i16 %{{.*}}, i16 %{{.*}}, ptr %{{.*}}, i64 %{{.*}})
24 // CHECK: extractvalue { x86_amx, x86_amx } %{{.*}}, 0
25 // CHECK: call <256 x i32> @llvm.x86.cast.tile.to.vector.v256i32(x86_amx %{{.*}})
26 // CHECK: store <256 x i32> %{{.*}}, ptr %{{.*}}, align 1024
27 // CHECK: extractvalue { x86_amx, x86_amx } %{{.*}}, 1
28 // CHECK: call <256 x i32> @llvm.x86.cast.tile.to.vector.v256i32(x86_amx %{{.*}})
29 void test_tile_2rpntlvwz0rst1_internal(int row, int col0, int col1, void *D0, void *D1, void *B) {
30 _tile_2rpntlvwz0rst1_internal(row, col0, col1, D0, D1, B, 1);
33 // CHECK-LABEL: define dso_local void @test_tile_2rpntlvwz1rs_internal(
34 // CHECK: call { x86_amx, x86_amx } @llvm.x86.t2rpntlvwz1rs.internal(i16 %{{.*}}, i16 %{{.*}}, i16 %{{.*}}, ptr %{{.*}}, i64 %{{.*}})
35 // CHECK: extractvalue { x86_amx, x86_amx } %{{.*}}, 0
36 // CHECK: call <256 x i32> @llvm.x86.cast.tile.to.vector.v256i32(x86_amx %{{.*}})
37 // CHECK: store <256 x i32> %{{.*}}, ptr %{{.*}}, align 1024
38 // CHECK: extractvalue { x86_amx, x86_amx } %{{.*}}, 1
39 // CHECK: call <256 x i32> @llvm.x86.cast.tile.to.vector.v256i32(x86_amx %{{.*}})
40 void test_tile_2rpntlvwz1rs_internal(int row, int col0, int col1, void *D0, void *D1, void *B) {
41 _tile_2rpntlvwz1rs_internal(row, col0, col1, D0, D1, B, 1);
44 // CHECK-LABEL: define dso_local void @test_tile_2rpntlvwz1rst1_internal(
45 // CHECK: call { x86_amx, x86_amx } @llvm.x86.t2rpntlvwz1rst1.internal(i16 %{{.*}}, i16 %{{.*}}, i16 %{{.*}}, ptr %{{.*}}, i64 %{{.*}})
46 // CHECK: extractvalue { x86_amx, x86_amx } %{{.*}}, 0
47 // CHECK: call <256 x i32> @llvm.x86.cast.tile.to.vector.v256i32(x86_amx %{{.*}})
48 // CHECK: store <256 x i32> %{{.*}}, ptr %{{.*}}, align 1024
49 // CHECK: extractvalue { x86_amx, x86_amx } %{{.*}}, 1
50 // CHECK: call <256 x i32> @llvm.x86.cast.tile.to.vector.v256i32(x86_amx %{{.*}})
51 void test_tile_2rpntlvwz1rst1_internal(int row, int col0, int col1, void *D0, void *D1, void *B) {
52 _tile_2rpntlvwz1rst1_internal(row, col0, col1, D0, D1, B, 1);