1 // RUN: %clang_cc1 -triple aarch64-arm-unknown-eabi -target-feature +mops -target-feature +mte -w -S -emit-llvm -o - %s | FileCheck --check-prefix=CHECK-MOPS %s 2 // RUN: %clang_cc1 -triple aarch64-arm-unknown-eabi -target-feature +mops -Wno-implicit-function-declaration -w -S -emit-llvm -o - %s | FileCheck --check-prefix=CHECK-NOMOPS %s 3 // RUN: %clang_cc1 -triple aarch64-arm-unknown-eabi -Wno-implicit-function-declaration -target-feature +mte -w -S -emit-llvm -o - %s | FileCheck --check-prefix=CHECK-NOMOPS %s 4 // RUN: %clang_cc1 -triple aarch64-arm-unknown-eabi -Wno-implicit-function-declaration -w -S -emit-llvm -o - %s | FileCheck --check-prefix=CHECK-NOMOPS %s 5 6 #include <arm_acle.h> 7 #include <stddef.h> 8 9 // CHECK-LABEL: @bzero_0( 10 // CHECK-MOPS: @llvm.aarch64.mops.memset.tag 11 // CHECK-NOMOPS-NOT: @llvm.aarch64.mops.memset.tag 12 void *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.tag 18 // CHECK-NOMOPS-NOT: @llvm.aarch64.mops.memset.tag 19 void *bzero_1(void *dst) { 20 return __arm_mops_memset_tag(dst, 0, 1); 21 } 22 23 // CHECK-LABEL: @bzero_10( 24 // CHECK-MOPS: @llvm.aarch64.mops.memset.tag 25 // CHECK-NOMOPS-NOT: @llvm.aarch64.mops.memset.tag 26 void *bzero_10(void *dst) { 27 return __arm_mops_memset_tag(dst, 0, 10); 28 } 29 30 // CHECK-LABEL: @bzero_10000( 31 // CHECK-MOPS: @llvm.aarch64.mops.memset.tag 32 // CHECK-NOMOPS-NOT: @llvm.aarch64.mops.memset.tag 33 void *bzero_10000(void *dst) { 34 return __arm_mops_memset_tag(dst, 0, 10000); 35 } 36 37 // CHECK-LABEL: @bzero_n( 38 // CHECK-MOPS: @llvm.aarch64.mops.memset.tag 39 // CHECK-NOMOPS-NOT: @llvm.aarch64.mops.memset.tag 40 void *bzero_n(void *dst, size_t size) { 41 return __arm_mops_memset_tag(dst, 0, size); 42 } 43 44 // CHECK-LABEL: @memset_0( 45 // CHECK-MOPS: @llvm.aarch64.mops.memset.tag 46 // CHECK-NOMOPS-NOT: @llvm.aarch64.mops.memset.tag 47 void *memset_0(void *dst, int value) { 48 return __arm_mops_memset_tag(dst, value, 0); 49 } 50 51 // CHECK-LABEL: @memset_1( 52 // CHECK-MOPS: @llvm.aarch64.mops.memset.tag 53 // CHECK-NOMOPS-NOT: @llvm.aarch64.mops.memset.tag 54 void *memset_1(void *dst, int value) { 55 return __arm_mops_memset_tag(dst, value, 1); 56 } 57 58 // CHECK-LABEL: @memset_10( 59 // CHECK-MOPS: @llvm.aarch64.mops.memset.tag 60 // CHECK-NOMOPS-NOT: @llvm.aarch64.mops.memset.tag 61 void *memset_10(void *dst, int value) { 62 return __arm_mops_memset_tag(dst, value, 10); 63 } 64 65 // CHECK-LABEL: @memset_10000( 66 // CHECK-MOPS: @llvm.aarch64.mops.memset.tag 67 // CHECK-NOMOPS-NOT: @llvm.aarch64.mops.memset.tag 68 void *memset_10000(void *dst, int value) { 69 return __arm_mops_memset_tag(dst, value, 10000); 70 } 71 72 // CHECK-LABEL: @memset_n( 73 // CHECK-MOPS: @llvm.aarch64.mops.memset.tag 74 // CHECK-NOMOPS-NOT: @llvm.aarch64.mops.memset.tag 75 void *memset_n(void *dst, int value, size_t size) { 76 return __arm_mops_memset_tag(dst, value, size); 77 } 78