mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-25 12:36:10 +00:00

AArch32/Armv8A introduced the performance deprecation of certain patterns of IT instructions. After some debate internal to ARM, this is now being reverted; i.e. no IT instruction patterns are performance deprecated anymore, as the perfomance degredation is not significant enough. This reverts the following: "ARMv8-A deprecates some uses of the T32 IT instruction. All uses of IT that apply to instructions other than a single subsequent 16-bit instruction from a restricted set are deprecated, as are explicit references to the PC within that single 16-bit instruction. This permits the non-deprecated forms of IT and subsequent instructions to be treated as a single 32-bit conditional instruction." The deprecation no longer applies, but the behaviour may be controlled by the -arm-restrict-it and -arm-no-restrict-it command-line options, with the latter being the default. No warnings about complex IT blocks will be generated. Reviewed By: dmgreen Differential Revision: https://reviews.llvm.org/D118044
16 lines
627 B
C
16 lines
627 B
C
// RUN: %clang -target arm-none-gnueabi -mrestrict-it -### %s 2> %t
|
|
// RUN: FileCheck --check-prefix=CHECK-RESTRICTED < %t %s
|
|
|
|
// RUN: %clang -target armv8a-none-gnueabi -mrestrict-it -### %s 2> %t
|
|
// RUN: FileCheck --check-prefix=CHECK-RESTRICTED < %t %s
|
|
|
|
// CHECK-RESTRICTED: "-mllvm" "-arm-restrict-it"
|
|
|
|
// RUN: %clang -target arm-none-gnueabi -mno-restrict-it -### %s 2> %t
|
|
// RUN: FileCheck --check-prefix=CHECK-NO-RESTRICTED < %t %s
|
|
|
|
// RUN: %clang -target armv8a-none-gnueabi -mno-restrict-it -### %s 2> %t
|
|
// RUN: FileCheck --check-prefix=CHECK-NO-RESTRICTED < %t %s
|
|
|
|
// CHECK-NO-RESTRICTED: "-mllvm" "-arm-default-it"
|