35 lines · c
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: -Wno-gnu-statement-expression| FileCheck %s4 5#include <immintrin.h>6#include <stddef.h>7 8#define STRIDE 329 10char buf[1024];11 12void test_tile_loadd(short row) {13 // CHECK-LABEL: define dso_local void @test_tile_loadd(14 // CHECK: call x86_amx @llvm.x86.tileloaddrs64.internal(i16 %{{.*}}, i16 %{{.*}}, ptr %{{.*}}, i64 %{{.*}})15 // CHECK-NEXT: call <256 x i32> @llvm.x86.cast.tile.to.vector.v256i32(x86_amx %{{.*}})16 __tile1024i a = {row, 8};17 __tile_loaddrs(&a, buf, STRIDE);18}19 20void test_tile_loaddt1(short row) {21 // CHECK-LABEL: define dso_local void @test_tile_loaddt1(22 // CHECK: call x86_amx @llvm.x86.tileloaddrst164.internal(i16 %{{.*}}, i16 %{{.*}}, ptr %{{.*}}, i64 %{{.*}})23 // CHECK-NEXT: call <256 x i32> @llvm.x86.cast.tile.to.vector.v256i32(x86_amx %{{.*}})24 __tile1024i a = {row, 8};25 __tile_stream_loaddrs(&a, buf, STRIDE);26}27 28void test_tile_loadd_macro(void *data) {29 // CHECK-LABEL: define dso_local void @test_tile_loadd_macro(30 // CHECK: call void @llvm.x86.tileloaddrs64(i8 {{.*}}, ptr %{{.*}}, i64 {{.*}})31 // CHECK: call void @llvm.x86.tileloaddrst164(i8 {{.*}}, ptr %{{.*}}, i64 {{.*}})32 _tile_loaddrs(4, data, STRIDE);33 _tile_stream_loaddrs(2, data, STRIDE);34}35