// RUN: %clang_cc1 %s -ffreestanding -triple=x86_64-unknown-unknown \ // RUN: -target-feature +amx-movrs -emit-llvm -o - -Wall -Werror -pedantic \ // RUN: -target-feature +amx-transpose -Wno-gnu-statement-expression| FileCheck %s #include #include char buf[2048]; #define STRIDE 32 // CHECK-LABEL: define dso_local void @test_tile_2rpntlvwz0rs_internal( // CHECK: call { x86_amx, x86_amx } @llvm.x86.t2rpntlvwz0rs.internal(i16 %{{.*}}, i16 %{{.*}}, i16 %{{.*}}, ptr %{{.*}}, i64 %{{.*}}) // CHECK: extractvalue { x86_amx, x86_amx } %{{.*}}, 0 // CHECK: call <256 x i32> @llvm.x86.cast.tile.to.vector.v256i32(x86_amx %{{.*}}) // CHECK: store <256 x i32> %{{.*}}, ptr %{{.*}}, align 1024 // CHECK: extractvalue { x86_amx, x86_amx } %{{.*}}, 1 // CHECK: call <256 x i32> @llvm.x86.cast.tile.to.vector.v256i32(x86_amx %{{.*}}) void test_tile_2rpntlvwz0rs_internal(int row, int col0, int col1, void *D0, void *D1, void *B) { _tile_2rpntlvwz0rs_internal(row, col0, col1, D0, D1, B, 1); } // CHECK-LABEL: define dso_local void @test_tile_2rpntlvwz0rst1_internal( // CHECK: call { x86_amx, x86_amx } @llvm.x86.t2rpntlvwz0rst1.internal(i16 %{{.*}}, i16 %{{.*}}, i16 %{{.*}}, ptr %{{.*}}, i64 %{{.*}}) // CHECK: extractvalue { x86_amx, x86_amx } %{{.*}}, 0 // CHECK: call <256 x i32> @llvm.x86.cast.tile.to.vector.v256i32(x86_amx %{{.*}}) // CHECK: store <256 x i32> %{{.*}}, ptr %{{.*}}, align 1024 // CHECK: extractvalue { x86_amx, x86_amx } %{{.*}}, 1 // CHECK: call <256 x i32> @llvm.x86.cast.tile.to.vector.v256i32(x86_amx %{{.*}}) void test_tile_2rpntlvwz0rst1_internal(int row, int col0, int col1, void *D0, void *D1, void *B) { _tile_2rpntlvwz0rst1_internal(row, col0, col1, D0, D1, B, 1); } // CHECK-LABEL: define dso_local void @test_tile_2rpntlvwz1rs_internal( // CHECK: call { x86_amx, x86_amx } @llvm.x86.t2rpntlvwz1rs.internal(i16 %{{.*}}, i16 %{{.*}}, i16 %{{.*}}, ptr %{{.*}}, i64 %{{.*}}) // CHECK: extractvalue { x86_amx, x86_amx } %{{.*}}, 0 // CHECK: call <256 x i32> @llvm.x86.cast.tile.to.vector.v256i32(x86_amx %{{.*}}) // CHECK: store <256 x i32> %{{.*}}, ptr %{{.*}}, align 1024 // CHECK: extractvalue { x86_amx, x86_amx } %{{.*}}, 1 // CHECK: call <256 x i32> @llvm.x86.cast.tile.to.vector.v256i32(x86_amx %{{.*}}) void test_tile_2rpntlvwz1rs_internal(int row, int col0, int col1, void *D0, void *D1, void *B) { _tile_2rpntlvwz1rs_internal(row, col0, col1, D0, D1, B, 1); } // CHECK-LABEL: define dso_local void @test_tile_2rpntlvwz1rst1_internal( // CHECK: call { x86_amx, x86_amx } @llvm.x86.t2rpntlvwz1rst1.internal(i16 %{{.*}}, i16 %{{.*}}, i16 %{{.*}}, ptr %{{.*}}, i64 %{{.*}}) // CHECK: extractvalue { x86_amx, x86_amx } %{{.*}}, 0 // CHECK: call <256 x i32> @llvm.x86.cast.tile.to.vector.v256i32(x86_amx %{{.*}}) // CHECK: store <256 x i32> %{{.*}}, ptr %{{.*}}, align 1024 // CHECK: extractvalue { x86_amx, x86_amx } %{{.*}}, 1 // CHECK: call <256 x i32> @llvm.x86.cast.tile.to.vector.v256i32(x86_amx %{{.*}}) void test_tile_2rpntlvwz1rst1_internal(int row, int col0, int col1, void *D0, void *D1, void *B) { _tile_2rpntlvwz1rst1_internal(row, col0, col1, D0, D1, B, 1); }