69 lines · c
1// RUN: %clang_cc1 -triple aarch64 -Wno-int-conversion -target-feature +mops -target-feature +mte -w -emit-llvm -o - %s | FileCheck --check-prefix=CHECK-MOPS %s2// RUN: not %clang_cc1 -triple aarch64 -Wno-int-conversion -target-feature +mops -Wno-implicit-function-declaration -w -emit-llvm -o - %s 2>&1 | FileCheck --check-prefix=CHECK-NOMOPS %s3// RUN: not %clang_cc1 -triple aarch64 -Wno-int-conversion -Wno-implicit-function-declaration -target-feature +mte -w -emit-llvm -o - %s 2>&1 | FileCheck --check-prefix=CHECK-NOMOPS %s4// RUN: not %clang_cc1 -triple aarch64 -Wno-int-conversion -Wno-implicit-function-declaration -w -emit-llvm -o - %s 2>&1 | FileCheck --check-prefix=CHECK-NOMOPS %s5 6#include <arm_acle.h>7#include <stddef.h>8 9// CHECK-LABEL: @bzero_0(10// CHECK-MOPS: @llvm.aarch64.mops.memset.tag11// CHECK-NOMOPS: '__builtin_arm_mops_memset_tag' needs target feature mte,mops12void *bzero_0(void *dst) {13 return __arm_mops_memset_tag(dst, 0, 0);14}15 16// CHECK-LABEL: @bzero_1(17// CHECK-MOPS: @llvm.aarch64.mops.memset.tag18void *bzero_1(void *dst) {19 return __arm_mops_memset_tag(dst, 0, 1);20}21 22// CHECK-LABEL: @bzero_10(23// CHECK-MOPS: @llvm.aarch64.mops.memset.tag24void *bzero_10(void *dst) {25 return __arm_mops_memset_tag(dst, 0, 10);26}27 28// CHECK-LABEL: @bzero_10000(29// CHECK-MOPS: @llvm.aarch64.mops.memset.tag30void *bzero_10000(void *dst) {31 return __arm_mops_memset_tag(dst, 0, 10000);32}33 34// CHECK-LABEL: @bzero_n(35// CHECK-MOPS: @llvm.aarch64.mops.memset.tag36void *bzero_n(void *dst, size_t size) {37 return __arm_mops_memset_tag(dst, 0, size);38}39 40// CHECK-LABEL: @memset_0(41// CHECK-MOPS: @llvm.aarch64.mops.memset.tag42void *memset_0(void *dst, int value) {43 return __arm_mops_memset_tag(dst, value, 0);44}45 46// CHECK-LABEL: @memset_1(47// CHECK-MOPS: @llvm.aarch64.mops.memset.tag48void *memset_1(void *dst, int value) {49 return __arm_mops_memset_tag(dst, value, 1);50}51 52// CHECK-LABEL: @memset_10(53// CHECK-MOPS: @llvm.aarch64.mops.memset.tag54void *memset_10(void *dst, int value) {55 return __arm_mops_memset_tag(dst, value, 10);56}57 58// CHECK-LABEL: @memset_10000(59// CHECK-MOPS: @llvm.aarch64.mops.memset.tag60void *memset_10000(void *dst, int value) {61 return __arm_mops_memset_tag(dst, value, 10000);62}63 64// CHECK-LABEL: @memset_n(65// CHECK-MOPS: @llvm.aarch64.mops.memset.tag66void *memset_n(void *dst, int value, size_t size) {67 return __arm_mops_memset_tag(dst, value, size);68}69