Author: tyb0807 Date: 2022-02-09T00:10:09Z New Revision: 9b81d2fae8c05ea611578137101e46a7b61fbaed
URL: https://github.com/llvm/llvm-project/commit/9b81d2fae8c05ea611578137101e46a7b61fbaed DIFF: https://github.com/llvm/llvm-project/commit/9b81d2fae8c05ea611578137101e46a7b61fbaed.diff LOG: Revert "[AArch64] ACLE feature macro for Armv8.8-A MOPS" This reverts commit d379ec99085e33ace51740f2b93bda5e5c72326f. Added: Modified: clang/lib/Basic/Targets/AArch64.cpp clang/test/CodeGen/aarch64-mops.c clang/test/Preprocessor/aarch64-target-features.c Removed: ################################################################################ diff --git a/clang/lib/Basic/Targets/AArch64.cpp b/clang/lib/Basic/Targets/AArch64.cpp index b04508570ad75..34bdb58dffc1c 100644 --- a/clang/lib/Basic/Targets/AArch64.cpp +++ b/clang/lib/Basic/Targets/AArch64.cpp @@ -226,8 +226,6 @@ void AArch64TargetInfo::getTargetDefinesARMV87A(const LangOptions &Opts, void AArch64TargetInfo::getTargetDefinesARMV88A(const LangOptions &Opts, MacroBuilder &Builder) const { - // FIXME: this does not handle the case where MOPS is disabled using +nomops - Builder.defineMacro("__ARM_FEATURE_MOPS", "1"); // Also include the Armv8.7 defines getTargetDefinesARMV87A(Opts, Builder); } @@ -437,9 +435,6 @@ void AArch64TargetInfo::getTargetDefines(const LangOptions &Opts, if (HasRandGen) Builder.defineMacro("__ARM_FEATURE_RNG", "1"); - if (HasMOPS) - Builder.defineMacro("__ARM_FEATURE_MOPS", "1"); - switch (ArchKind) { default: break; @@ -667,8 +662,6 @@ bool AArch64TargetInfo::handleTargetFeatures(std::vector<std::string> &Features, HasFlagM = true; if (Feature == "+hbc") HasHBC = true; - if (Feature == "+mops") - HasMOPS = true; } setDataLayout(); diff --git a/clang/test/CodeGen/aarch64-mops.c b/clang/test/CodeGen/aarch64-mops.c index 9a19d4202bcc2..0b6a2c26c1e82 100644 --- a/clang/test/CodeGen/aarch64-mops.c +++ b/clang/test/CodeGen/aarch64-mops.c @@ -1,18 +1,8 @@ // NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py // RUN: %clang_cc1 -triple aarch64-arm-unknown-eabi -target-feature +mops -target-feature +mte -S -emit-llvm -o - %s | FileCheck %s -// RUN: %clang_cc1 -triple aarch64-arm-unknown-eabi -verify %s -// RUN: %clang -target aarch64-arm-none-eabi -march=armv8.7-a+mops+memtag -S -emit-llvm %s -o - | FileCheck %s -// RUN: %clang -target aarch64-arm-none-eabi -march=armv8.8-a+memtag -S -emit-llvm %s -o - | FileCheck %s -// RUN: %clang -target aarch64-arm-none-eabi -march=armv9.2-a+mops+memtag -S -emit-llvm %s -o - | FileCheck %s -// RUN: %clang -target aarch64-arm-none-eabi -march=armv9.3-a+memtag -S -emit-llvm %s -o - | FileCheck %s -// RUN: %clang -target aarch64-arm-none-eabi -march=armv8.7-a -Xclang -verify -S -emit-llvm %s -o - -// RUN: %clang -target aarch64-arm-none-eabi -march=armv8.7-a+mops -Xclang -verify -S -emit-llvm %s -o - -// RUN: %clang -target aarch64-arm-none-eabi -march=armv8.8-a -Xclang -verify -S -emit-llvm %s -o - -// RUN: %clang -target aarch64-arm-none-eabi -march=armv9.2-a -Xclang -verify -S -emit-llvm %s -o - -// RUN: %clang -target aarch64-arm-none-eabi -march=armv9.2-a+mops -Xclang -verify -S -emit-llvm %s -o - -// RUN: %clang -target aarch64-arm-none-eabi -march=armv9.3-a -Xclang -verify -S -emit-llvm %s -o - +#define __ARM_FEATURE_MOPS 1 #include <arm_acle.h> #include <stddef.h> @@ -23,9 +13,9 @@ // CHECK-NEXT: [[TMP0:%.*]] = load i8*, i8** [[DST_ADDR]], align 8 // CHECK-NEXT: [[TMP1:%.*]] = call i8* @llvm.aarch64.mops.memset.tag(i8* [[TMP0]], i8 0, i64 0) // CHECK-NEXT: ret i8* [[TMP1]] +// void *bzero_0(void *dst) { - // expected-warning@+1 {{incompatible integer to pointer conversion returning 'int' from a function with result type 'void *'}} - return __arm_mops_memset_tag(dst, 0, 0); // expected-warning{{implicit declaration of function '__arm_mops_memset_tag' is invalid in C99}} + return __arm_mops_memset_tag(dst, 0, 0); } // CHECK-LABEL: @bzero_1( @@ -35,9 +25,9 @@ void *bzero_0(void *dst) { // CHECK-NEXT: [[TMP0:%.*]] = load i8*, i8** [[DST_ADDR]], align 8 // CHECK-NEXT: [[TMP1:%.*]] = call i8* @llvm.aarch64.mops.memset.tag(i8* [[TMP0]], i8 0, i64 1) // CHECK-NEXT: ret i8* [[TMP1]] +// void *bzero_1(void *dst) { - // expected-warning@+1 {{incompatible integer to pointer conversion returning 'int' from a function with result type 'void *'}} - return __arm_mops_memset_tag(dst, 0, 1); // expected-warning{{implicit declaration of function '__arm_mops_memset_tag' is invalid in C99}} + return __arm_mops_memset_tag(dst, 0, 1); } // CHECK-LABEL: @bzero_10( @@ -47,9 +37,9 @@ void *bzero_1(void *dst) { // CHECK-NEXT: [[TMP0:%.*]] = load i8*, i8** [[DST_ADDR]], align 8 // CHECK-NEXT: [[TMP1:%.*]] = call i8* @llvm.aarch64.mops.memset.tag(i8* [[TMP0]], i8 0, i64 10) // CHECK-NEXT: ret i8* [[TMP1]] +// void *bzero_10(void *dst) { - // expected-warning@+1 {{incompatible integer to pointer conversion returning 'int' from a function with result type 'void *'}} - return __arm_mops_memset_tag(dst, 0, 10); // expected-warning{{implicit declaration of function '__arm_mops_memset_tag' is invalid in C99}} + return __arm_mops_memset_tag(dst, 0, 10); } // CHECK-LABEL: @bzero_10000( @@ -59,9 +49,9 @@ void *bzero_10(void *dst) { // CHECK-NEXT: [[TMP0:%.*]] = load i8*, i8** [[DST_ADDR]], align 8 // CHECK-NEXT: [[TMP1:%.*]] = call i8* @llvm.aarch64.mops.memset.tag(i8* [[TMP0]], i8 0, i64 10000) // CHECK-NEXT: ret i8* [[TMP1]] +// void *bzero_10000(void *dst) { - // expected-warning@+1 {{incompatible integer to pointer conversion returning 'int' from a function with result type 'void *'}} - return __arm_mops_memset_tag(dst, 0, 10000); // expected-warning{{implicit declaration of function '__arm_mops_memset_tag' is invalid in C99}} + return __arm_mops_memset_tag(dst, 0, 10000); } // CHECK-LABEL: @bzero_n( @@ -74,9 +64,9 @@ void *bzero_10000(void *dst) { // CHECK-NEXT: [[TMP1:%.*]] = load i64, i64* [[SIZE_ADDR]], align 8 // CHECK-NEXT: [[TMP2:%.*]] = call i8* @llvm.aarch64.mops.memset.tag(i8* [[TMP0]], i8 0, i64 [[TMP1]]) // CHECK-NEXT: ret i8* [[TMP2]] +// void *bzero_n(void *dst, size_t size) { - // expected-warning@+1 {{incompatible integer to pointer conversion returning 'int' from a function with result type 'void *'}} - return __arm_mops_memset_tag(dst, 0, size); // expected-warning{{implicit declaration of function '__arm_mops_memset_tag' is invalid in C99}} + return __arm_mops_memset_tag(dst, 0, size); } // CHECK-LABEL: @memset_0( @@ -90,9 +80,9 @@ void *bzero_n(void *dst, size_t size) { // CHECK-NEXT: [[TMP2:%.*]] = trunc i32 [[TMP1]] to i8 // CHECK-NEXT: [[TMP3:%.*]] = call i8* @llvm.aarch64.mops.memset.tag(i8* [[TMP0]], i8 [[TMP2]], i64 0) // CHECK-NEXT: ret i8* [[TMP3]] +// void *memset_0(void *dst, int value) { - // expected-warning@+1 {{incompatible integer to pointer conversion returning 'int' from a function with result type 'void *'}} - return __arm_mops_memset_tag(dst, value, 0); // expected-warning{{implicit declaration of function '__arm_mops_memset_tag' is invalid in C99}} + return __arm_mops_memset_tag(dst, value, 0); } // CHECK-LABEL: @memset_1( @@ -106,9 +96,9 @@ void *memset_0(void *dst, int value) { // CHECK-NEXT: [[TMP2:%.*]] = trunc i32 [[TMP1]] to i8 // CHECK-NEXT: [[TMP3:%.*]] = call i8* @llvm.aarch64.mops.memset.tag(i8* [[TMP0]], i8 [[TMP2]], i64 1) // CHECK-NEXT: ret i8* [[TMP3]] +// void *memset_1(void *dst, int value) { - // expected-warning@+1 {{incompatible integer to pointer conversion returning 'int' from a function with result type 'void *'}} - return __arm_mops_memset_tag(dst, value, 1); // expected-warning{{implicit declaration of function '__arm_mops_memset_tag' is invalid in C99}} + return __arm_mops_memset_tag(dst, value, 1); } // CHECK-LABEL: @memset_10( @@ -122,9 +112,9 @@ void *memset_1(void *dst, int value) { // CHECK-NEXT: [[TMP2:%.*]] = trunc i32 [[TMP1]] to i8 // CHECK-NEXT: [[TMP3:%.*]] = call i8* @llvm.aarch64.mops.memset.tag(i8* [[TMP0]], i8 [[TMP2]], i64 10) // CHECK-NEXT: ret i8* [[TMP3]] +// void *memset_10(void *dst, int value) { - // expected-warning@+1 {{incompatible integer to pointer conversion returning 'int' from a function with result type 'void *'}} - return __arm_mops_memset_tag(dst, value, 10); // expected-warning{{implicit declaration of function '__arm_mops_memset_tag' is invalid in C99}} + return __arm_mops_memset_tag(dst, value, 10); } // CHECK-LABEL: @memset_10000( @@ -138,9 +128,9 @@ void *memset_10(void *dst, int value) { // CHECK-NEXT: [[TMP2:%.*]] = trunc i32 [[TMP1]] to i8 // CHECK-NEXT: [[TMP3:%.*]] = call i8* @llvm.aarch64.mops.memset.tag(i8* [[TMP0]], i8 [[TMP2]], i64 10000) // CHECK-NEXT: ret i8* [[TMP3]] +// void *memset_10000(void *dst, int value) { - // expected-warning@+1 {{incompatible integer to pointer conversion returning 'int' from a function with result type 'void *'}} - return __arm_mops_memset_tag(dst, value, 10000); // expected-warning{{implicit declaration of function '__arm_mops_memset_tag' is invalid in C99}} + return __arm_mops_memset_tag(dst, value, 10000); } // CHECK-LABEL: @memset_n( @@ -157,7 +147,7 @@ void *memset_10000(void *dst, int value) { // CHECK-NEXT: [[TMP3:%.*]] = trunc i32 [[TMP1]] to i8 // CHECK-NEXT: [[TMP4:%.*]] = call i8* @llvm.aarch64.mops.memset.tag(i8* [[TMP0]], i8 [[TMP3]], i64 [[TMP2]]) // CHECK-NEXT: ret i8* [[TMP4]] +// void *memset_n(void *dst, int value, size_t size) { - // expected-warning@+1 {{incompatible integer to pointer conversion returning 'int' from a function with result type 'void *'}} - return __arm_mops_memset_tag(dst, value, size); // expected-warning{{implicit declaration of function '__arm_mops_memset_tag' is invalid in C99}} + return __arm_mops_memset_tag(dst, value, size); } diff --git a/clang/test/Preprocessor/aarch64-target-features.c b/clang/test/Preprocessor/aarch64-target-features.c index 1a9ac47d6a6c7..3461af3ecbd20 100644 --- a/clang/test/Preprocessor/aarch64-target-features.c +++ b/clang/test/Preprocessor/aarch64-target-features.c @@ -510,21 +510,9 @@ // CHECK-NO-SVE-VECTOR-BITS-NOT: __ARM_FEATURE_SVE_BITS // CHECK-NO-SVE-VECTOR-BITS-NOT: __ARM_FEATURE_SVE_VECTOR_OPERATORS -// ================== Check Large System Extensions (LSE) +// ================== Check Largse System Extensions (LSE) // RUN: %clang -target aarch64-none-linux-gnu -march=armv8-a+lse -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-LSE %s // RUN: %clang -target arm64-none-linux-gnu -march=armv8-a+lse -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-LSE %s // RUN: %clang -target aarch64-none-linux-gnu -march=armv8.1-a -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-LSE %s // RUN: %clang -target arm64-none-linux-gnu -march=armv8.1-a -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-LSE %s // CHECK-LSE: __ARM_FEATURE_ATOMICS 1 - -// ================== Check Armv8.8-A/Armv9.3-A memcpy and memset acceleration instructions (MOPS) -// RUN: %clang -target aarch64-arm-none-eabi -march=armv8.7-a -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-NOMOPS %s -// RUN: %clang -target aarch64-arm-none-eabi -march=armv8.7-a+mops -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-MOPS %s -// RUN: %clang -target aarch64-arm-none-eabi -march=armv8.8-a -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-MOPS %s -// RUN: %clang -target aarch64-arm-none-eabi -march=armv8.8-a+mops -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-MOPS %s -// RUN: %clang -target aarch64-arm-none-eabi -march=armv9.2-a -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-NOMOPS %s -// RUN: %clang -target aarch64-arm-none-eabi -march=armv9.2-a+mops -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-MOPS %s -// RUN: %clang -target aarch64-arm-none-eabi -march=armv9.3-a -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-MOPS %s -// RUN: %clang -target aarch64-arm-none-eabi -march=armv9.3-a+mops -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-MOPS %s -// CHECK-MOPS: __ARM_FEATURE_MOPS 1 -// CHECK-NOMOPS-NOT: __ARM_FEATURE_MOPS 1 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits