1; This tests that MC/asm header conversion is smooth and that the 2; build attributes are correct 3 4; RUN: llc < %s -mtriple=thumbv5-linux-gnueabi -mcpu=xscale | FileCheck %s --check-prefix=XSCALE 5; RUN: llc < %s -mtriple=armv6-linux-gnueabi | FileCheck %s --check-prefix=V6 6; RUN: llc < %s -mtriple=armv6-linux-gnueabi -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=V6-FAST 7; RUN: llc < %s -mtriple=armv6-linux-gnueabi -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING 8; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi | FileCheck %s --check-prefix=V6M 9; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=V6M-FAST 10; RUN: llc < %s -mtriple=thumbv6sm-linux-gnueabi | FileCheck %s --check-prefix=V6M 11; RUN: llc < %s -mtriple=thumbv6sm-linux-gnueabi -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=V6M-FAST 12; RUN: llc < %s -mtriple=armv6-linux-gnueabi -mcpu=arm1156t2f-s | FileCheck %s --check-prefix=ARM1156T2F-S 13; RUN: llc < %s -mtriple=armv6-linux-gnueabi -mcpu=arm1156t2f-s -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=ARM1156T2F-S-FAST 14; RUN: llc < %s -mtriple=armv6-linux-gnueabi -mcpu=arm1156t2f-s -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING 15; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi | FileCheck %s --check-prefix=V7M 16; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=V7M-FAST 17; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING 18; RUN: llc < %s -mtriple=armv7-linux-gnueabi | FileCheck %s --check-prefix=V7 19; RUN: llc < %s -mtriple=armv7-linux-gnueabi -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING 20; RUN: llc < %s -mtriple=armv7-linux-gnueabi -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=V7-FAST 21; RUN: llc < %s -mtriple=armv8-linux-gnueabi | FileCheck %s --check-prefix=V8 22; RUN: llc < %s -mtriple=armv8-linux-gnueabi -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=V8-FAST 23; RUN: llc < %s -mtriple=armv8-linux-gnueabi -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING 24; RUN: llc < %s -mtriple=thumbv8-linux-gnueabi | FileCheck %s --check-prefix=Vt8 25; RUN: llc < %s -mtriple=thumbv8-linux-gnueabi -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING 26; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mattr=-neon,-crypto | FileCheck %s --check-prefix=V8-FPARMv8 27; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mattr=-fp-armv8,-crypto | FileCheck %s --check-prefix=V8-NEON 28; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mattr=-crypto | FileCheck %s --check-prefix=V8-FPARMv8-NEON 29; RUN: llc < %s -mtriple=armv8-linux-gnueabi | FileCheck %s --check-prefix=V8-FPARMv8-NEON-CRYPTO 30; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a5 | FileCheck %s --check-prefix=CORTEX-A5-DEFAULT 31; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a5 -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A5-DEFAULT-FAST 32; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a5 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING 33; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a5 -mattr=-neon,+d16 | FileCheck %s --check-prefix=CORTEX-A5-NONEON 34; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a5 -mattr=-vfp2 | FileCheck %s --check-prefix=CORTEX-A5-NOFPU 35; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a5 -mattr=-vfp2 -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A5-NOFPU-FAST 36; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a9 -float-abi=soft | FileCheck %s --check-prefix=CORTEX-A9-SOFT 37; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a9 -float-abi=soft -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A9-SOFT-FAST 38; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a9 -float-abi=hard | FileCheck %s --check-prefix=CORTEX-A9-HARD 39; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a9 -float-abi=hard -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A9-HARD-FAST 40; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a9 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING 41; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a12 | FileCheck %s --check-prefix=CORTEX-A12-DEFAULT 42; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a9 -float-abi=soft | FileCheck %s --check-prefix=CORTEX-A9-SOFT 43; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a12 -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A12-DEFAULT-FAST 44; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a12 -mattr=-vfp2 | FileCheck %s --check-prefix=CORTEX-A12-NOFPU 45; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a12 -mattr=-vfp2 -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A12-NOFPU-FAST 46; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a12 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING 47; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a15 | FileCheck %s --check-prefix=CORTEX-A15 48; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a15 -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A15-FAST 49; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a15 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING 50; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a17 | FileCheck %s --check-prefix=CORTEX-A17-DEFAULT 51; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a17 -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A17-FAST 52; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a17 -mattr=-vfp2 | FileCheck %s --check-prefix=CORTEX-A17-NOFPU 53; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a17 -mattr=-vfp2 -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A17-NOFPU-FAST 54 55; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mattr=-neon,+vfp3,+fp16 | FileCheck %s --check-prefix=GENERIC-FPU-VFPV3-FP16 56; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mattr=-neon,+vfp3,+d16,+fp16 | FileCheck %s --check-prefix=GENERIC-FPU-VFPV3-D16-FP16 57; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mattr=-neon,+vfp3,+fp-only-sp,+d16 | FileCheck %s --check-prefix=GENERIC-FPU-VFPV3XD 58; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mattr=-neon,+vfp3,+fp-only-sp,+d16,+fp16 | FileCheck %s --check-prefix=GENERIC-FPU-VFPV3XD-FP16 59; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mattr=+neon,+fp16 | FileCheck %s --check-prefix=GENERIC-FPU-NEON-FP16 60 61; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a17 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING 62; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=cortex-m0 | FileCheck %s --check-prefix=CORTEX-M0 63; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=cortex-m0 -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-M0-FAST 64; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=cortex-m0 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING 65; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=cortex-m0plus | FileCheck %s --check-prefix=CORTEX-M0PLUS 66; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=cortex-m0plus -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-M0PLUS-FAST 67; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=cortex-m0plus -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING 68; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=cortex-m1 | FileCheck %s --check-prefix=CORTEX-M1 69; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=cortex-m1 -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-M1-FAST 70; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=cortex-m1 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING 71; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=sc000 | FileCheck %s --check-prefix=SC000 72; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=sc000 -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=SC000-FAST 73; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=sc000 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING 74; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=cortex-m3 | FileCheck %s --check-prefix=CORTEX-M3 75; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=cortex-m3 -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-M3-FAST 76; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=cortex-m3 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING 77; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=sc300 | FileCheck %s --check-prefix=SC300 78; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=sc300 -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=SC300-FAST 79; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=sc300 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING 80; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=cortex-m4 -float-abi=soft | FileCheck %s --check-prefix=CORTEX-M4-SOFT 81; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=cortex-m4 -float-abi=soft -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-M4-SOFT-FAST 82; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=cortex-m4 -float-abi=hard | FileCheck %s --check-prefix=CORTEX-M4-HARD 83; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=cortex-m4 -float-abi=hard -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-M4-HARD-FAST 84; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=cortex-m4 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING 85; RUN: llc < %s -mtriple=thumbv7em-linux-gnueabi -mcpu=cortex-m7 -mattr=-vfp2 | FileCheck %s --check-prefix=CORTEX-M7 --check-prefix=CORTEX-M7-SOFT 86; RUN: llc < %s -mtriple=thumbv7em-linux-gnueabi -mcpu=cortex-m7 -mattr=-vfp2 -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-M7-NOFPU-FAST 87; RUN: llc < %s -mtriple=thumbv7em-linux-gnueabi -mcpu=cortex-m7 -mattr=+fp-only-sp | FileCheck %s --check-prefix=CORTEX-M7 --check-prefix=CORTEX-M7-SINGLE 88; RUN: llc < %s -mtriple=thumbv7em-linux-gnueabi -mcpu=cortex-m7 -mattr=+fp-only-sp -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-M7-FAST 89; RUN: llc < %s -mtriple=thumbv7em-linux-gnueabi -mcpu=cortex-m7 | FileCheck %s --check-prefix=CORTEX-M7-DOUBLE 90; RUN: llc < %s -mtriple=thumbv7em-linux-gnueabi -mcpu=cortex-m7 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING 91; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r4 | FileCheck %s --check-prefix=CORTEX-R4 92; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r4f | FileCheck %s --check-prefix=CORTEX-R4F 93; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r5 | FileCheck %s --check-prefix=CORTEX-R5 94; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r5 -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-R5-FAST 95; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r5 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING 96; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r7 | FileCheck %s --check-prefix=CORTEX-R7 97; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r7 -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-R7-FAST 98; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r7 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING 99; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a53 | FileCheck %s --check-prefix=CORTEX-A53 100; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a53 -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A53-FAST 101; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a53 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING 102; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a57 | FileCheck %s --check-prefix=CORTEX-A57 103; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a57 -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A57-FAST 104; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a57 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING 105; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a72 | FileCheck %s --check-prefix=CORTEX-A72 106; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a72 -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A72-FAST 107; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a72 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING 108; RUN: llc < %s -mtriple=armv8.1a-linux-gnueabi | FileCheck %s --check-prefix=GENERIC-ARMV8_1-A 109; RUN: llc < %s -mtriple=armv8.1a-linux-gnueabi -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=GENERIC-ARMV8_1-A-FAST 110; RUN: llc < %s -mtriple=armv8.1a-linux-gnueabi -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING 111; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 | FileCheck %s --check-prefix=CORTEX-A7-CHECK 112; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A7-CHECK-FAST 113; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -mattr=-vfp2,-vfp3,-vfp4,-neon,-fp16 | FileCheck %s --check-prefix=CORTEX-A7-NOFPU 114; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -mattr=-vfp2,-vfp3,-vfp4,-neon,-fp16 -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A7-NOFPU-FAST 115; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -mattr=+vfp4,-neon | FileCheck %s --check-prefix=CORTEX-A7-FPUV4 116; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING 117; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -mattr=+vfp4,-neon -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A7-FPUV4-FAST 118; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -mattr=+vfp4,,+d16,-neon | FileCheck %s --check-prefix=CORTEX-A7-FPUV4 119; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -relocation-model=pic | FileCheck %s --check-prefix=RELOC-PIC 120; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -relocation-model=static | FileCheck %s --check-prefix=RELOC-OTHER 121; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -relocation-model=default | FileCheck %s --check-prefix=RELOC-OTHER 122; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -relocation-model=dynamic-no-pic | FileCheck %s --check-prefix=RELOC-OTHER 123; RUN: llc < %s -mtriple=arm-none-linux-gnueabi | FileCheck %s --check-prefix=RELOC-OTHER 124; RUN: llc < %s -mtriple=arm-none-linux-gnueabi | FileCheck %s --check-prefix=PCS-R9-USE 125; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -arm-reserve-r9 | FileCheck %s --check-prefix=PCS-R9-RESERVE 126 127; ARMv8.1a (AArch32) 128; RUN: llc < %s -mtriple=armv8.1a-none-linux-gnueabi -arm-no-strict-align | FileCheck %s --check-prefix=NO-STRICT-ALIGN 129; RUN: llc < %s -mtriple=armv8.1a-none-linux-gnueabi -arm-strict-align | FileCheck %s --check-prefix=STRICT-ALIGN 130; RUN: llc < %s -mtriple=armv8.1a-none-linux-gnueabi | FileCheck %s --check-prefix=NO-STRICT-ALIGN 131; ARMv8a (AArch32) 132; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a57 -arm-no-strict-align | FileCheck %s --check-prefix=NO-STRICT-ALIGN 133; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a57 -arm-strict-align | FileCheck %s --check-prefix=STRICT-ALIGN 134; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a57 | FileCheck %s --check-prefix=NO-STRICT-ALIGN 135; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a72 -arm-no-strict-align | FileCheck %s --check-prefix=NO-STRICT-ALIGN 136; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a72 -arm-strict-align | FileCheck %s --check-prefix=STRICT-ALIGN 137; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a72 | FileCheck %s --check-prefix=NO-STRICT-ALIGN 138; ARMv7a 139; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -arm-no-strict-align | FileCheck %s --check-prefix=NO-STRICT-ALIGN 140; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -arm-strict-align | FileCheck %s --check-prefix=STRICT-ALIGN 141; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 | FileCheck %s --check-prefix=NO-STRICT-ALIGN 142; ARMv7r 143; RUN: llc < %s -mtriple=armv7r-none-linux-gnueabi -mcpu=cortex-r5 -arm-no-strict-align | FileCheck %s --check-prefix=NO-STRICT-ALIGN 144; RUN: llc < %s -mtriple=armv7r-none-linux-gnueabi -mcpu=cortex-r5 -arm-strict-align | FileCheck %s --check-prefix=STRICT-ALIGN 145; RUN: llc < %s -mtriple=armv7r-none-linux-gnueabi -mcpu=cortex-r5 | FileCheck %s --check-prefix=NO-STRICT-ALIGN 146; ARMv7m 147; RUN: llc < %s -mtriple=thumbv7m-none-linux-gnueabi -mcpu=cortex-m3 -arm-no-strict-align | FileCheck %s --check-prefix=NO-STRICT-ALIGN 148; RUN: llc < %s -mtriple=thumbv7m-none-linux-gnueabi -mcpu=cortex-m3 -arm-strict-align | FileCheck %s --check-prefix=STRICT-ALIGN 149; RUN: llc < %s -mtriple=thumbv7m-none-linux-gnueabi -mcpu=cortex-m3 | FileCheck %s --check-prefix=NO-STRICT-ALIGN 150; ARMv6 151; RUN: llc < %s -mtriple=armv6-none-netbsd-gnueabi -mcpu=arm1136j-s | FileCheck %s --check-prefix=NO-STRICT-ALIGN 152; RUN: llc < %s -mtriple=armv6-none-linux-gnueabi -mcpu=arm1136j-s | FileCheck %s --check-prefix=STRICT-ALIGN 153; RUN: llc < %s -mtriple=armv6-none-linux-gnueabi -mcpu=arm1136j-s -arm-no-strict-align | FileCheck %s --check-prefix=NO-STRICT-ALIGN 154; RUN: llc < %s -mtriple=armv6-none-linux-gnueabi -mcpu=arm1136j-s -arm-strict-align | FileCheck %s --check-prefix=STRICT-ALIGN 155; ARMv6k 156; RUN: llc < %s -mtriple=armv6k-none-netbsd-gnueabi -mcpu=arm1176j-s | FileCheck %s --check-prefix=NO-STRICT-ALIGN 157; RUN: llc < %s -mtriple=armv6k-none-linux-gnueabi -mcpu=arm1176j-s | FileCheck %s --check-prefix=STRICT-ALIGN 158; RUN: llc < %s -mtriple=armv6k-none-linux-gnueabi -mcpu=arm1176j-s -arm-no-strict-align | FileCheck %s --check-prefix=NO-STRICT-ALIGN 159; RUN: llc < %s -mtriple=armv6k-none-linux-gnueabi -mcpu=arm1176j-s -arm-strict-align | FileCheck %s --check-prefix=STRICT-ALIGN 160; ARMv6m 161; RUN: llc < %s -mtriple=thumb-none-linux-gnueabi -arm-no-strict-align -mcpu=cortex-m0 | FileCheck %s --check-prefix=STRICT-ALIGN 162; RUN: llc < %s -mtriple=thumb-none-linux-gnueabi -arm-strict-align -mcpu=cortex-m0 | FileCheck %s --check-prefix=STRICT-ALIGN 163; RUN: llc < %s -mtriple=thumbv6m-none-linux-gnueabi -arm-no-strict-align | FileCheck %s --check-prefix=STRICT-ALIGN 164; RUN: llc < %s -mtriple=thumbv6m-none-linux-gnueabi -arm-strict-align | FileCheck %s --check-prefix=STRICT-ALIGN 165; RUN: llc < %s -mtriple=thumb-none-linux-gnueabi -mcpu=cortex-m0 | FileCheck %s --check-prefix=STRICT-ALIGN 166; RUN: llc < %s -mtriple=thumb-none-linux-gnueabi -mcpu=cortex-m0 | FileCheck %s --check-prefix=STRICT-ALIGN 167; ARMv5 168; RUN: llc < %s -mtriple=armv5-none-linux-gnueabi -mcpu=arm1022e -arm-no-strict-align | FileCheck %s --check-prefix=NO-STRICT-ALIGN 169; RUN: llc < %s -mtriple=armv5-none-linux-gnueabi -mcpu=arm1022e -arm-strict-align | FileCheck %s --check-prefix=STRICT-ALIGN 170; RUN: llc < %s -mtriple=armv5-none-linux-gnueabi -mcpu=arm1022e | FileCheck %s --check-prefix=STRICT-ALIGN 171 172; XSCALE: .eabi_attribute 6, 5 173; XSCALE: .eabi_attribute 8, 1 174; XSCALE: .eabi_attribute 9, 1 175 176; DYN-ROUNDING: .eabi_attribute 19, 1 177 178; V6: .eabi_attribute 6, 6 179; V6: .eabi_attribute 8, 1 180;; We assume round-to-nearest by default (matches GCC) 181; V6-NOT: .eabi_attribute 19 182;; The default choice made by llc is for a V6 CPU without an FPU. 183;; This is not an interesting detail, but for such CPUs, the default intention is to use 184;; software floating-point support. The choice is not important for targets without 185;; FPU support! 186; V6: .eabi_attribute 20, 1 187; V6: .eabi_attribute 21, 1 188; V6-NOT: .eabi_attribute 22 189; V6: .eabi_attribute 23, 3 190; V6: .eabi_attribute 24, 1 191; V6: .eabi_attribute 25, 1 192; V6-NOT: .eabi_attribute 27 193; V6-NOT: .eabi_attribute 28 194; V6-NOT: .eabi_attribute 36 195; V6: .eabi_attribute 38, 1 196; V6-NOT: .eabi_attribute 42 197; V6-NOT: .eabi_attribute 44 198; V6-NOT: .eabi_attribute 68 199 200; V6-FAST-NOT: .eabi_attribute 19 201;; Despite the V6 CPU having no FPU by default, we chose to flush to 202;; positive zero here. There's no hardware support doing this, but the 203;; fast maths software library might. 204; V6-FAST-NOT: .eabi_attribute 20 205; V6-FAST-NOT: .eabi_attribute 21 206; V6-FAST-NOT: .eabi_attribute 22 207; V6-FAST: .eabi_attribute 23, 1 208 209;; We emit 6, 12 for both v6-M and v6S-M, technically this is incorrect for 210;; V6-M, however we don't model the OS extension so this is fine. 211; V6M: .eabi_attribute 6, 12 212; V6M-NOT: .eabi_attribute 7 213; V6M: .eabi_attribute 8, 0 214; V6M: .eabi_attribute 9, 1 215; V6M-NOT: .eabi_attribute 19 216;; The default choice made by llc is for a V6M CPU without an FPU. 217;; This is not an interesting detail, but for such CPUs, the default intention is to use 218;; software floating-point support. The choice is not important for targets without 219;; FPU support! 220; V6M: .eabi_attribute 20, 1 221; V6M: .eabi_attribute 21, 1 222; V6M-NOT: .eabi_attribute 22 223; V6M: .eabi_attribute 23, 3 224; V6M: .eabi_attribute 24, 1 225; V6M: .eabi_attribute 25, 1 226; V6M-NOT: .eabi_attribute 27 227; V6M-NOT: .eabi_attribute 28 228; V6M-NOT: .eabi_attribute 36 229; V6M: .eabi_attribute 38, 1 230; V6M-NOT: .eabi_attribute 42 231; V6M-NOT: .eabi_attribute 44 232; V6M-NOT: .eabi_attribute 68 233 234; V6M-FAST-NOT: .eabi_attribute 19 235;; Despite the V6M CPU having no FPU by default, we chose to flush to 236;; positive zero here. There's no hardware support doing this, but the 237;; fast maths software library might. 238; V6M-FAST-NOT: .eabi_attribute 20 239; V6M-FAST-NOT: .eabi_attribute 21 240; V6M-FAST-NOT: .eabi_attribute 22 241; V6M-FAST: .eabi_attribute 23, 1 242 243; ARM1156T2F-S: .cpu arm1156t2f-s 244; ARM1156T2F-S: .eabi_attribute 6, 8 245; ARM1156T2F-S: .eabi_attribute 8, 1 246; ARM1156T2F-S: .eabi_attribute 9, 2 247; ARM1156T2F-S: .fpu vfpv2 248; ARM1156T2F-S-NOT: .eabi_attribute 19 249;; We default to IEEE 754 compliance 250; ARM1156T2F-S: .eabi_attribute 20, 1 251; ARM1156T2F-S: .eabi_attribute 21, 1 252; ARM1156T2F-S-NOT: .eabi_attribute 22 253; ARM1156T2F-S: .eabi_attribute 23, 3 254; ARM1156T2F-S: .eabi_attribute 24, 1 255; ARM1156T2F-S: .eabi_attribute 25, 1 256; ARM1156T2F-S-NOT: .eabi_attribute 27 257; ARM1156T2F-S-NOT: .eabi_attribute 28 258; ARM1156T2F-S-NOT: .eabi_attribute 36 259; ARM1156T2F-S: .eabi_attribute 38, 1 260; ARM1156T2F-S-NOT: .eabi_attribute 42 261; ARM1156T2F-S-NOT: .eabi_attribute 44 262; ARM1156T2F-S-NOT: .eabi_attribute 68 263 264; ARM1156T2F-S-FAST-NOT: .eabi_attribute 19 265;; V6 cores default to flush to positive zero (value 0). Note that value 2 is also equally 266;; valid for this core, it's an implementation defined question as to which of 0 and 2 you 267;; select. LLVM historically picks 0. 268; ARM1156T2F-S-FAST-NOT: .eabi_attribute 20 269; ARM1156T2F-S-FAST-NOT: .eabi_attribute 21 270; ARM1156T2F-S-FAST-NOT: .eabi_attribute 22 271; ARM1156T2F-S-FAST: .eabi_attribute 23, 1 272 273; V7M: .eabi_attribute 6, 10 274; V7M: .eabi_attribute 7, 77 275; V7M: .eabi_attribute 8, 0 276; V7M: .eabi_attribute 9, 2 277; V7M-NOT: .eabi_attribute 19 278;; The default choice made by llc is for a V7M CPU without an FPU. 279;; This is not an interesting detail, but for such CPUs, the default intention is to use 280;; software floating-point support. The choice is not important for targets without 281;; FPU support! 282; V7M: .eabi_attribute 20, 1 283; V7M: .eabi_attribute 21, 1 284; V7M-NOT: .eabi_attribute 22 285; V7M: .eabi_attribute 23, 3 286; V7M: .eabi_attribute 24, 1 287; V7M: .eabi_attribute 25, 1 288; V7M-NOT: .eabi_attribute 27 289; V7M-NOT: .eabi_attribute 28 290; V7M-NOT: .eabi_attribute 36 291; V7M: .eabi_attribute 38, 1 292; V7M-NOT: .eabi_attribute 42 293; V7M-NOT: .eabi_attribute 44 294; V7M-NOT: .eabi_attribute 68 295 296; V7M-FAST-NOT: .eabi_attribute 19 297;; Despite the V7M CPU having no FPU by default, we chose to flush 298;; preserving sign. This matches what the hardware would do in the 299;; architecture revision were to exist on the current target. 300; V7M-FAST: .eabi_attribute 20, 2 301; V7M-FAST-NOT: .eabi_attribute 21 302; V7M-FAST-NOT: .eabi_attribute 22 303; V7M-FAST: .eabi_attribute 23, 1 304 305; V7: .syntax unified 306; V7: .eabi_attribute 6, 10 307; V7-NOT: .eabi_attribute 19 308;; In safe-maths mode we default to an IEEE 754 compliant choice. 309; V7: .eabi_attribute 20, 1 310; V7: .eabi_attribute 21, 1 311; V7-NOT: .eabi_attribute 22 312; V7: .eabi_attribute 23, 3 313; V7: .eabi_attribute 24, 1 314; V7: .eabi_attribute 25, 1 315; V7-NOT: .eabi_attribute 27 316; V7-NOT: .eabi_attribute 28 317; V7-NOT: .eabi_attribute 36 318; V7: .eabi_attribute 38, 1 319; V7-NOT: .eabi_attribute 42 320; V7-NOT: .eabi_attribute 44 321; V7-NOT: .eabi_attribute 68 322 323; V7-FAST-NOT: .eabi_attribute 19 324;; The default CPU does have an FPU and it must be VFPv3 or better, so it flushes 325;; denormals to zero preserving the sign. 326; V7-FAST: .eabi_attribute 20, 2 327; V7-FAST-NOT: .eabi_attribute 21 328; V7-FAST-NOT: .eabi_attribute 22 329; V7-FAST: .eabi_attribute 23, 1 330 331; V8: .syntax unified 332; V8: .eabi_attribute 67, "2.09" 333; V8: .eabi_attribute 6, 14 334; V8-NOT: .eabi_attribute 19 335; V8: .eabi_attribute 20, 1 336; V8: .eabi_attribute 21, 1 337; V8-NOT: .eabi_attribute 22 338; V8: .eabi_attribute 23, 3 339; V8-NOT: .eabi_attribute 44 340 341; V8-FAST-NOT: .eabi_attribute 19 342;; The default does have an FPU, and for V8-A, it flushes preserving sign. 343; V8-FAST: .eabi_attribute 20, 2 344; V8-FAST-NOT: .eabi_attribute 21 345; V8-FAST-NOT: .eabi_attribute 22 346; V8-FAST: .eabi_attribute 23, 1 347 348; Vt8: .syntax unified 349; Vt8: .eabi_attribute 6, 14 350; Vt8-NOT: .eabi_attribute 19 351; Vt8: .eabi_attribute 20, 1 352; Vt8: .eabi_attribute 21, 1 353; Vt8-NOT: .eabi_attribute 22 354; Vt8: .eabi_attribute 23, 3 355 356; V8-FPARMv8: .syntax unified 357; V8-FPARMv8: .eabi_attribute 6, 14 358; V8-FPARMv8: .fpu fp-armv8 359 360; V8-NEON: .syntax unified 361; V8-NEON: .eabi_attribute 6, 14 362; V8-NEON: .fpu neon 363; V8-NEON: .eabi_attribute 12, 3 364 365; V8-FPARMv8-NEON: .syntax unified 366; V8-FPARMv8-NEON: .eabi_attribute 6, 14 367; V8-FPARMv8-NEON: .fpu neon-fp-armv8 368; V8-FPARMv8-NEON: .eabi_attribute 12, 3 369 370; V8-FPARMv8-NEON-CRYPTO: .syntax unified 371; V8-FPARMv8-NEON-CRYPTO: .eabi_attribute 6, 14 372; V8-FPARMv8-NEON-CRYPTO: .fpu crypto-neon-fp-armv8 373; V8-FPARMv8-NEON-CRYPTO: .eabi_attribute 12, 3 374 375; Tag_CPU_unaligned_access 376; NO-STRICT-ALIGN: .eabi_attribute 34, 1 377; STRICT-ALIGN: .eabi_attribute 34, 0 378 379; Tag_CPU_arch 'ARMv7' 380; CORTEX-A7-CHECK: .eabi_attribute 6, 10 381; CORTEX-A7-NOFPU: .eabi_attribute 6, 10 382 383; CORTEX-A7-FPUV4: .eabi_attribute 6, 10 384 385; Tag_CPU_arch_profile 'A' 386; CORTEX-A7-CHECK: .eabi_attribute 7, 65 387; CORTEX-A7-NOFPU: .eabi_attribute 7, 65 388; CORTEX-A7-FPUV4: .eabi_attribute 7, 65 389 390; Tag_ARM_ISA_use 391; CORTEX-A7-CHECK: .eabi_attribute 8, 1 392; CORTEX-A7-NOFPU: .eabi_attribute 8, 1 393; CORTEX-A7-FPUV4: .eabi_attribute 8, 1 394 395; Tag_THUMB_ISA_use 396; CORTEX-A7-CHECK: .eabi_attribute 9, 2 397; CORTEX-A7-NOFPU: .eabi_attribute 9, 2 398; CORTEX-A7-FPUV4: .eabi_attribute 9, 2 399 400; CORTEX-A7-CHECK: .fpu neon-vfpv4 401; CORTEX-A7-NOFPU-NOT: .fpu 402; CORTEX-A7-FPUV4: .fpu vfpv4 403 404; CORTEX-A7-CHECK-NOT: .eabi_attribute 19 405; Tag_ABI_FP_denormal 406;; We default to IEEE 754 compliance 407; CORTEX-A7-CHECK: .eabi_attribute 20, 1 408;; The A7 has VFPv3 support by default, so flush preserving sign. 409; CORTEX-A7-CHECK-FAST: .eabi_attribute 20, 2 410; CORTEX-A7-NOFPU: .eabi_attribute 20, 1 411;; Despite there being no FPU, we chose to flush to zero preserving 412;; sign. This matches what the hardware would do for this architecture 413;; revision. 414; CORTEX-A7-NOFPU-FAST: .eabi_attribute 20, 2 415; CORTEX-A7-FPUV4: .eabi_attribute 20, 1 416;; The VFPv4 FPU flushes preserving sign. 417; CORTEX-A7-FPUV4-FAST: .eabi_attribute 20, 2 418 419; Tag_ABI_FP_exceptions 420; CORTEX-A7-CHECK: .eabi_attribute 21, 1 421; CORTEX-A7-NOFPU: .eabi_attribute 21, 1 422; CORTEX-A7-FPUV4: .eabi_attribute 21, 1 423 424; Tag_ABI_FP_user_exceptions 425; CORTEX-A7-CHECK-NOT: .eabi_attribute 22 426; CORTEX-A7-NOFPU-NOT: .eabi_attribute 22 427; CORTEX-A7-FPUV4-NOT: .eabi_attribute 22 428 429; Tag_ABI_FP_number_model 430; CORTEX-A7-CHECK: .eabi_attribute 23, 3 431; CORTEX-A7-NOFPU: .eabi_attribute 23, 3 432; CORTEX-A7-FPUV4: .eabi_attribute 23, 3 433 434; Tag_ABI_align_needed 435; CORTEX-A7-CHECK: .eabi_attribute 24, 1 436; CORTEX-A7-NOFPU: .eabi_attribute 24, 1 437; CORTEX-A7-FPUV4: .eabi_attribute 24, 1 438 439; Tag_ABI_align_preserved 440; CORTEX-A7-CHECK: .eabi_attribute 25, 1 441; CORTEX-A7-NOFPU: .eabi_attribute 25, 1 442; CORTEX-A7-FPUV4: .eabi_attribute 25, 1 443 444; Tag_FP_HP_extension 445; CORTEX-A7-CHECK: .eabi_attribute 36, 1 446; CORTEX-A7-NOFPU-NOT: .eabi_attribute 36 447; CORTEX-A7-FPUV4: .eabi_attribute 36, 1 448 449; Tag_FP_16bit_format 450; CORTEX-A7-CHECK: .eabi_attribute 38, 1 451; CORTEX-A7-NOFPU: .eabi_attribute 38, 1 452; CORTEX-A7-FPUV4: .eabi_attribute 38, 1 453 454; Tag_MPextension_use 455; CORTEX-A7-CHECK: .eabi_attribute 42, 1 456; CORTEX-A7-NOFPU: .eabi_attribute 42, 1 457; CORTEX-A7-FPUV4: .eabi_attribute 42, 1 458 459; Tag_DIV_use 460; CORTEX-A7-CHECK: .eabi_attribute 44, 2 461; CORTEX-A7-NOFPU: .eabi_attribute 44, 2 462; CORTEX-A7-FPUV4: .eabi_attribute 44, 2 463 464; Tag_Virtualization_use 465; CORTEX-A7-CHECK: .eabi_attribute 68, 3 466; CORTEX-A7-NOFPU: .eabi_attribute 68, 3 467; CORTEX-A7-FPUV4: .eabi_attribute 68, 3 468 469; CORTEX-A5-DEFAULT: .cpu cortex-a5 470; CORTEX-A5-DEFAULT: .eabi_attribute 6, 10 471; CORTEX-A5-DEFAULT: .eabi_attribute 7, 65 472; CORTEX-A5-DEFAULT: .eabi_attribute 8, 1 473; CORTEX-A5-DEFAULT: .eabi_attribute 9, 2 474; CORTEX-A5-DEFAULT: .fpu neon-vfpv4 475; CORTEX-A5-NOT: .eabi_attribute 19 476;; We default to IEEE 754 compliance 477; CORTEX-A5-DEFAULT: .eabi_attribute 20, 1 478; CORTEX-A5-DEFAULT: .eabi_attribute 21, 1 479; CORTEX-A5-DEFAULT-NOT: .eabi_attribute 22 480; CORTEX-A5-DEFAULT: .eabi_attribute 23, 3 481; CORTEX-A5-DEFAULT: .eabi_attribute 24, 1 482; CORTEX-A5-DEFAULT: .eabi_attribute 25, 1 483; CORTEX-A5-DEFAULT: .eabi_attribute 42, 1 484; CORTEX-A5-DEFAULT-NOT: .eabi_attribute 44 485; CORTEX-A5-DEFAULT: .eabi_attribute 68, 1 486 487; CORTEX-A5-DEFAULT-FAST-NOT: .eabi_attribute 19 488;; The A5 defaults to a VFPv4 FPU, so it flushed preserving sign when -ffast-math 489;; is given. 490; CORTEX-A5-DEFAULT-FAST: .eabi_attribute 20, 2 491; CORTEX-A5-DEFAULT-FAST-NOT: .eabi_attribute 21 492; CORTEX-A5-DEFAULT-FAST-NOT: .eabi_attribute 22 493; CORTEX-A5-DEFAULT-FAST: .eabi_attribute 23, 1 494 495; CORTEX-A5-NONEON: .cpu cortex-a5 496; CORTEX-A5-NONEON: .eabi_attribute 6, 10 497; CORTEX-A5-NONEON: .eabi_attribute 7, 65 498; CORTEX-A5-NONEON: .eabi_attribute 8, 1 499; CORTEX-A5-NONEON: .eabi_attribute 9, 2 500; CORTEX-A5-NONEON: .fpu vfpv4-d16 501;; We default to IEEE 754 compliance 502; CORTEX-A5-NONEON: .eabi_attribute 20, 1 503; CORTEX-A5-NONEON: .eabi_attribute 21, 1 504; CORTEX-A5-NONEON-NOT: .eabi_attribute 22 505; CORTEX-A5-NONEON: .eabi_attribute 23, 3 506; CORTEX-A5-NONEON: .eabi_attribute 24, 1 507; CORTEX-A5-NONEON: .eabi_attribute 25, 1 508; CORTEX-A5-NONEON: .eabi_attribute 42, 1 509; CORTEX-A5-NONEON: .eabi_attribute 68, 1 510 511; CORTEX-A5-NONEON-FAST-NOT: .eabi_attribute 19 512;; The A5 defaults to a VFPv4 FPU, so it flushed preserving sign when -ffast-math 513;; is given. 514; CORTEX-A5-NONEON-FAST: .eabi_attribute 20, 2 515; CORTEX-A5-NONEON-FAST-NOT: .eabi_attribute 21 516; CORTEX-A5-NONEON-FAST-NOT: .eabi_attribute 22 517; CORTEX-A5-NONEON-FAST: .eabi_attribute 23, 1 518 519; CORTEX-A5-NOFPU: .cpu cortex-a5 520; CORTEX-A5-NOFPU: .eabi_attribute 6, 10 521; CORTEX-A5-NOFPU: .eabi_attribute 7, 65 522; CORTEX-A5-NOFPU: .eabi_attribute 8, 1 523; CORTEX-A5-NOFPU: .eabi_attribute 9, 2 524; CORTEX-A5-NOFPU-NOT: .fpu 525; CORTEX-A5-NOFPU-NOT: .eabi_attribute 19 526;; We default to IEEE 754 compliance 527; CORTEX-A5-NOFPU: .eabi_attribute 20, 1 528; CORTEX-A5-NOFPU: .eabi_attribute 21, 1 529; CORTEX-A5-NOFPU-NOT: .eabi_attribute 22 530; CORTEX-A5-NOFPU: .eabi_attribute 23, 3 531; CORTEX-A5-NOFPU: .eabi_attribute 24, 1 532; CORTEX-A5-NOFPU: .eabi_attribute 25, 1 533; CORTEX-A5-NOFPU: .eabi_attribute 42, 1 534; CORTEX-A5-NOFPU: .eabi_attribute 68, 1 535 536; CORTEX-A5-NOFPU-FAST-NOT: .eabi_attribute 19 537;; Despite there being no FPU, we chose to flush to zero preserving 538;; sign. This matches what the hardware would do for this architecture 539;; revision. 540; CORTEX-A5-NOFPU-FAST: .eabi_attribute 20, 2 541; CORTEX-A5-NOFPU-FAST-NOT: .eabi_attribute 21 542; CORTEX-A5-NOFPU-FAST-NOT: .eabi_attribute 22 543; CORTEX-A5-NOFPU-FAST: .eabi_attribute 23, 1 544 545; CORTEX-A9-SOFT: .cpu cortex-a9 546; CORTEX-A9-SOFT: .eabi_attribute 6, 10 547; CORTEX-A9-SOFT: .eabi_attribute 7, 65 548; CORTEX-A9-SOFT: .eabi_attribute 8, 1 549; CORTEX-A9-SOFT: .eabi_attribute 9, 2 550; CORTEX-A9-SOFT: .fpu neon 551; CORTEX-A9-SOFT-NOT: .eabi_attribute 19 552;; We default to IEEE 754 compliance 553; CORTEX-A9-SOFT: .eabi_attribute 20, 1 554; CORTEX-A9-SOFT: .eabi_attribute 21, 1 555; CORTEX-A9-SOFT-NOT: .eabi_attribute 22 556; CORTEX-A9-SOFT: .eabi_attribute 23, 3 557; CORTEX-A9-SOFT: .eabi_attribute 24, 1 558; CORTEX-A9-SOFT: .eabi_attribute 25, 1 559; CORTEX-A9-SOFT-NOT: .eabi_attribute 27 560; CORTEX-A9-SOFT-NOT: .eabi_attribute 28 561; CORTEX-A9-SOFT: .eabi_attribute 36, 1 562; CORTEX-A9-SOFT: .eabi_attribute 38, 1 563; CORTEX-A9-SOFT: .eabi_attribute 42, 1 564; CORTEX-A9-SOFT-NOT: .eabi_attribute 44 565; CORTEX-A9-SOFT: .eabi_attribute 68, 1 566 567; CORTEX-A9-SOFT-FAST-NOT: .eabi_attribute 19 568;; The A9 defaults to a VFPv3 FPU, so it flushes preseving sign when 569;; -ffast-math is specified. 570; CORTEX-A9-SOFT-FAST: .eabi_attribute 20, 2 571; CORTEX-A5-SOFT-FAST-NOT: .eabi_attribute 21 572; CORTEX-A5-SOFT-FAST-NOT: .eabi_attribute 22 573; CORTEX-A5-SOFT-FAST: .eabi_attribute 23, 1 574 575; CORTEX-A9-HARD: .cpu cortex-a9 576; CORTEX-A9-HARD: .eabi_attribute 6, 10 577; CORTEX-A9-HARD: .eabi_attribute 7, 65 578; CORTEX-A9-HARD: .eabi_attribute 8, 1 579; CORTEX-A9-HARD: .eabi_attribute 9, 2 580; CORTEX-A9-HARD: .fpu neon 581; CORTEX-A9-HARD-NOT: .eabi_attribute 19 582;; We default to IEEE 754 compliance 583; CORTEX-A9-HARD: .eabi_attribute 20, 1 584; CORTEX-A9-HARD: .eabi_attribute 21, 1 585; CORTEX-A9-HARD-NOT: .eabi_attribute 22 586; CORTEX-A9-HARD: .eabi_attribute 23, 3 587; CORTEX-A9-HARD: .eabi_attribute 24, 1 588; CORTEX-A9-HARD: .eabi_attribute 25, 1 589; CORTEX-A9-HARD-NOT: .eabi_attribute 27 590; CORTEX-A9-HARD: .eabi_attribute 28, 1 591; CORTEX-A9-HARD: .eabi_attribute 36, 1 592; CORTEX-A9-HARD: .eabi_attribute 38, 1 593; CORTEX-A9-HARD: .eabi_attribute 42, 1 594; CORTEX-A9-HARD: .eabi_attribute 68, 1 595 596; CORTEX-A9-HARD-FAST-NOT: .eabi_attribute 19 597;; The A9 defaults to a VFPv3 FPU, so it flushes preseving sign when 598;; -ffast-math is specified. 599; CORTEX-A9-HARD-FAST: .eabi_attribute 20, 2 600; CORTEX-A9-HARD-FAST-NOT: .eabi_attribute 21 601; CORTEX-A9-HARD-FAST-NOT: .eabi_attribute 22 602; CORTEX-A9-HARD-FAST: .eabi_attribute 23, 1 603 604; CORTEX-A12-DEFAULT: .cpu cortex-a12 605; CORTEX-A12-DEFAULT: .eabi_attribute 6, 10 606; CORTEX-A12-DEFAULT: .eabi_attribute 7, 65 607; CORTEX-A12-DEFAULT: .eabi_attribute 8, 1 608; CORTEX-A12-DEFAULT: .eabi_attribute 9, 2 609; CORTEX-A12-DEFAULT: .fpu neon-vfpv4 610; CORTEX-A12-DEFAULT-NOT: .eabi_attribute 19 611;; We default to IEEE 754 compliance 612; CORTEX-A12-DEFAULT: .eabi_attribute 20, 1 613; CORTEX-A12-DEFAULT: .eabi_attribute 21, 1 614; CORTEX-A12-DEFAULT-NOT: .eabi_attribute 22 615; CORTEX-A12-DEFAULT: .eabi_attribute 23, 3 616; CORTEX-A12-DEFAULT: .eabi_attribute 24, 1 617; CORTEX-A12-DEFAULT: .eabi_attribute 25, 1 618; CORTEX-A12-DEFAULT: .eabi_attribute 42, 1 619; CORTEX-A12-DEFAULT: .eabi_attribute 44, 2 620; CORTEX-A12-DEFAULT: .eabi_attribute 68, 3 621 622; CORTEX-A12-DEFAULT-FAST-NOT: .eabi_attribute 19 623;; The A12 defaults to a VFPv3 FPU, so it flushes preseving sign when 624;; -ffast-math is specified. 625; CORTEX-A12-DEFAULT-FAST: .eabi_attribute 20, 2 626; CORTEX-A12-HARD-FAST-NOT: .eabi_attribute 21 627; CORTEX-A12-HARD-FAST-NOT: .eabi_attribute 22 628; CORTEX-A12-HARD-FAST: .eabi_attribute 23, 1 629 630; CORTEX-A12-NOFPU: .cpu cortex-a12 631; CORTEX-A12-NOFPU: .eabi_attribute 6, 10 632; CORTEX-A12-NOFPU: .eabi_attribute 7, 65 633; CORTEX-A12-NOFPU: .eabi_attribute 8, 1 634; CORTEX-A12-NOFPU: .eabi_attribute 9, 2 635; CORTEX-A12-NOFPU-NOT: .fpu 636; CORTEX-A12-NOFPU-NOT: .eabi_attribute 19 637;; We default to IEEE 754 compliance 638; CORTEX-A12-NOFPU: .eabi_attribute 20, 1 639; CORTEX-A12-NOFPU: .eabi_attribute 21, 1 640; CORTEX-A12-NOFPU-NOT: .eabi_attribute 22 641; CORTEX-A12-NOFPU: .eabi_attribute 23, 3 642; CORTEX-A12-NOFPU: .eabi_attribute 24, 1 643; CORTEX-A12-NOFPU: .eabi_attribute 25, 1 644; CORTEX-A12-NOFPU: .eabi_attribute 42, 1 645; CORTEX-A12-NOFPU: .eabi_attribute 44, 2 646; CORTEX-A12-NOFPU: .eabi_attribute 68, 3 647 648; CORTEX-A12-NOFPU-FAST-NOT: .eabi_attribute 19 649;; Despite there being no FPU, we chose to flush to zero preserving 650;; sign. This matches what the hardware would do for this architecture 651;; revision. 652; CORTEX-A12-NOFPU-FAST: .eabi_attribute 20, 2 653; CORTEX-A12-NOFPU-FAST-NOT: .eabi_attribute 21 654; CORTEX-A12-NOFPU-FAST-NOT: .eabi_attribute 22 655; CORTEX-A12-NOFPU-FAST: .eabi_attribute 23, 1 656 657; CORTEX-A15: .cpu cortex-a15 658; CORTEX-A15: .eabi_attribute 6, 10 659; CORTEX-A15: .eabi_attribute 7, 65 660; CORTEX-A15: .eabi_attribute 8, 1 661; CORTEX-A15: .eabi_attribute 9, 2 662; CORTEX-A15: .fpu neon-vfpv4 663; CORTEX-A15-NOT: .eabi_attribute 19 664;; We default to IEEE 754 compliance 665; CORTEX-A15: .eabi_attribute 20, 1 666; CORTEX-A15: .eabi_attribute 21, 1 667; CORTEX-A15-NOT: .eabi_attribute 22 668; CORTEX-A15: .eabi_attribute 23, 3 669; CORTEX-A15: .eabi_attribute 24, 1 670; CORTEX-A15: .eabi_attribute 25, 1 671; CORTEX-A15-NOT: .eabi_attribute 27 672; CORTEX-A15-NOT: .eabi_attribute 28 673; CORTEX-A15: .eabi_attribute 36, 1 674; CORTEX-A15: .eabi_attribute 38, 1 675; CORTEX-A15: .eabi_attribute 42, 1 676; CORTEX-A15: .eabi_attribute 44, 2 677; CORTEX-A15: .eabi_attribute 68, 3 678 679; CORTEX-A15-FAST-NOT: .eabi_attribute 19 680;; The A15 defaults to a VFPv3 FPU, so it flushes preseving sign when 681;; -ffast-math is specified. 682; CORTEX-A15-FAST: .eabi_attribute 20, 2 683; CORTEX-A15-FAST-NOT: .eabi_attribute 21 684; CORTEX-A15-FAST-NOT: .eabi_attribute 22 685; CORTEX-A15-FAST: .eabi_attribute 23, 1 686 687; CORTEX-A17-DEFAULT: .cpu cortex-a17 688; CORTEX-A17-DEFAULT: .eabi_attribute 6, 10 689; CORTEX-A17-DEFAULT: .eabi_attribute 7, 65 690; CORTEX-A17-DEFAULT: .eabi_attribute 8, 1 691; CORTEX-A17-DEFAULT: .eabi_attribute 9, 2 692; CORTEX-A17-DEFAULT: .fpu neon-vfpv4 693; CORTEX-A17-DEFAULT-NOT: .eabi_attribute 19 694;; We default to IEEE 754 compliance 695; CORTEX-A17-DEFAULT: .eabi_attribute 20, 1 696; CORTEX-A17-DEFAULT: .eabi_attribute 21, 1 697; CORTEX-A17-DEFAULT-NOT: .eabi_attribute 22 698; CORTEX-A17-DEFAULT: .eabi_attribute 23, 3 699; CORTEX-A17-DEFAULT: .eabi_attribute 24, 1 700; CORTEX-A17-DEFAULT: .eabi_attribute 25, 1 701; CORTEX-A17-DEFAULT: .eabi_attribute 42, 1 702; CORTEX-A17-DEFAULT: .eabi_attribute 44, 2 703; CORTEX-A17-DEFAULT: .eabi_attribute 68, 3 704 705; CORTEX-A17-FAST-NOT: .eabi_attribute 19 706;; The A17 defaults to a VFPv3 FPU, so it flushes preseving sign when 707;; -ffast-math is specified. 708; CORTEX-A17-FAST: .eabi_attribute 20, 2 709; CORTEX-A17-FAST-NOT: .eabi_attribute 21 710; CORTEX-A17-FAST-NOT: .eabi_attribute 22 711; CORTEX-A17-FAST: .eabi_attribute 23, 1 712 713; CORTEX-A17-NOFPU: .cpu cortex-a17 714; CORTEX-A17-NOFPU: .eabi_attribute 6, 10 715; CORTEX-A17-NOFPU: .eabi_attribute 7, 65 716; CORTEX-A17-NOFPU: .eabi_attribute 8, 1 717; CORTEX-A17-NOFPU: .eabi_attribute 9, 2 718; CORTEX-A17-NOFPU-NOT: .fpu 719; CORTEX-A17-NOFPU-NOT: .eabi_attribute 19 720;; We default to IEEE 754 compliance 721; CORTEX-A17-NOFPU: .eabi_attribute 20, 1 722; CORTEX-A17-NOFPU: .eabi_attribute 21, 1 723; CORTEX-A17-NOFPU-NOT: .eabi_attribute 22 724; CORTEX-A17-NOFPU: .eabi_attribute 23, 3 725; CORTEX-A17-NOFPU: .eabi_attribute 24, 1 726; CORTEX-A17-NOFPU: .eabi_attribute 25, 1 727; CORTEX-A17-NOFPU: .eabi_attribute 42, 1 728; CORTEX-A17-NOFPU: .eabi_attribute 44, 2 729; CORTEX-A17-NOFPU: .eabi_attribute 68, 3 730 731; CORTEX-A17-NOFPU-NOT: .eabi_attribute 19 732;; Despite there being no FPU, we chose to flush to zero preserving 733;; sign. This matches what the hardware would do for this architecture 734;; revision. 735; CORTEX-A17-NOFPU-FAST: .eabi_attribute 20, 2 736; CORTEX-A17-NOFPU-FAST-NOT: .eabi_attribute 21 737; CORTEX-A17-NOFPU-FAST-NOT: .eabi_attribute 22 738; CORTEX-A17-NOFPU-FAST: .eabi_attribute 23, 1 739 740; CORTEX-M0: .cpu cortex-m0 741; CORTEX-M0: .eabi_attribute 6, 12 742; CORTEX-M0-NOT: .eabi_attribute 7 743; CORTEX-M0: .eabi_attribute 8, 0 744; CORTEX-M0: .eabi_attribute 9, 1 745; CORTEX-M0-NOT: .eabi_attribute 19 746;; We default to IEEE 754 compliance 747; CORTEX-M0: .eabi_attribute 20, 1 748; CORTEX-M0: .eabi_attribute 21, 1 749; CORTEX-M0-NOT: .eabi_attribute 22 750; CORTEX-M0: .eabi_attribute 23, 3 751; CORTEX-M0: .eabi_attribute 24, 1 752; CORTEX-M0: .eabi_attribute 25, 1 753; CORTEX-M0-NOT: .eabi_attribute 27 754; CORTEX-M0-NOT: .eabi_attribute 28 755; CORTEX-M0-NOT: .eabi_attribute 36 756; CORTEX-M0: .eabi_attribute 38, 1 757; CORTEX-M0-NOT: .eabi_attribute 42 758; CORTEX-M0-NOT: .eabi_attribute 44 759; CORTEX-M0-NOT: .eabi_attribute 68 760 761; CORTEX-M0-FAST-NOT: .eabi_attribute 19 762;; Despite the M0 CPU having no FPU in this scenario, we chose to 763;; flush to positive zero here. There's no hardware support doing 764;; this, but the fast maths software library might and such behaviour 765;; would match hardware support on this architecture revision if it 766;; existed. 767; CORTEX-M0-FAST-NOT: .eabi_attribute 20 768; CORTEX-M0-FAST-NOT: .eabi_attribute 21 769; CORTEX-M0-FAST-NOT: .eabi_attribute 22 770; CORTEX-M0-FAST: .eabi_attribute 23, 1 771 772; CORTEX-M0PLUS: .cpu cortex-m0plus 773; CORTEX-M0PLUS: .eabi_attribute 6, 12 774; CORTEX-M0PLUS-NOT: .eabi_attribute 7 775; CORTEX-M0PLUS: .eabi_attribute 8, 0 776; CORTEX-M0PLUS: .eabi_attribute 9, 1 777; CORTEX-M0PLUS-NOT: .eabi_attribute 19 778;; We default to IEEE 754 compliance 779; CORTEX-M0PLUS: .eabi_attribute 20, 1 780; CORTEX-M0PLUS: .eabi_attribute 21, 1 781; CORTEX-M0PLUS-NOT: .eabi_attribute 22 782; CORTEX-M0PLUS: .eabi_attribute 23, 3 783; CORTEX-M0PLUS: .eabi_attribute 24, 1 784; CORTEX-M0PLUS: .eabi_attribute 25, 1 785; CORTEX-M0PLUS-NOT: .eabi_attribute 27 786; CORTEX-M0PLUS-NOT: .eabi_attribute 28 787; CORTEX-M0PLUS-NOT: .eabi_attribute 36 788; CORTEX-M0PLUS: .eabi_attribute 38, 1 789; CORTEX-M0PLUS-NOT: .eabi_attribute 42 790; CORTEX-M0PLUS-NOT: .eabi_attribute 44 791; CORTEX-M0PLUS-NOT: .eabi_attribute 68 792 793; CORTEX-M0PLUS-FAST-NOT: .eabi_attribute 19 794;; Despite the M0+ CPU having no FPU in this scenario, we chose to 795;; flush to positive zero here. There's no hardware support doing 796;; this, but the fast maths software library might and such behaviour 797;; would match hardware support on this architecture revision if it 798;; existed. 799; CORTEX-M0PLUS-FAST-NOT: .eabi_attribute 20 800; CORTEX-M0PLUS-FAST-NOT: .eabi_attribute 21 801; CORTEX-M0PLUS-FAST-NOT: .eabi_attribute 22 802; CORTEX-M0PLUS-FAST: .eabi_attribute 23, 1 803 804; CORTEX-M1: .cpu cortex-m1 805; CORTEX-M1: .eabi_attribute 6, 12 806; CORTEX-M1-NOT: .eabi_attribute 7 807; CORTEX-M1: .eabi_attribute 8, 0 808; CORTEX-M1: .eabi_attribute 9, 1 809; CORTEX-M1-NOT: .eabi_attribute 19 810;; We default to IEEE 754 compliance 811; CORTEX-M1: .eabi_attribute 20, 1 812; CORTEX-M1: .eabi_attribute 21, 1 813; CORTEX-M1-NOT: .eabi_attribute 22 814; CORTEX-M1: .eabi_attribute 23, 3 815; CORTEX-M1: .eabi_attribute 24, 1 816; CORTEX-M1: .eabi_attribute 25, 1 817; CORTEX-M1-NOT: .eabi_attribute 27 818; CORTEX-M1-NOT: .eabi_attribute 28 819; CORTEX-M1-NOT: .eabi_attribute 36 820; CORTEX-M1: .eabi_attribute 38, 1 821; CORTEX-M1-NOT: .eabi_attribute 42 822; CORTEX-M1-NOT: .eabi_attribute 44 823; CORTEX-M1-NOT: .eabi_attribute 68 824 825; CORTEX-M1-FAST-NOT: .eabi_attribute 19 826;; Despite the M1 CPU having no FPU in this scenario, we chose to 827;; flush to positive zero here. There's no hardware support doing 828;; this, but the fast maths software library might and such behaviour 829;; would match hardware support on this architecture revision if it 830;; existed. 831; CORTEX-M1-FAST-NOT: .eabi_attribute 20 832; CORTEX-M1-FAST-NOT: .eabi_attribute 21 833; CORTEX-M1-FAST-NOT: .eabi_attribute 22 834; CORTEX-M1-FAST: .eabi_attribute 23, 1 835 836; SC000: .cpu sc000 837; SC000: .eabi_attribute 6, 12 838; SC000-NOT: .eabi_attribute 7 839; SC000: .eabi_attribute 8, 0 840; SC000: .eabi_attribute 9, 1 841; SC000-NOT: .eabi_attribute 19 842;; We default to IEEE 754 compliance 843; SC000: .eabi_attribute 20, 1 844; SC000: .eabi_attribute 21, 1 845; SC000-NOT: .eabi_attribute 22 846; SC000: .eabi_attribute 23, 3 847; SC000: .eabi_attribute 24, 1 848; SC000: .eabi_attribute 25, 1 849; SC000-NOT: .eabi_attribute 27 850; SC000-NOT: .eabi_attribute 28 851; SC000-NOT: .eabi_attribute 36 852; SC000: .eabi_attribute 38, 1 853; SC000-NOT: .eabi_attribute 42 854; SC000-NOT: .eabi_attribute 44 855; SC000-NOT: .eabi_attribute 68 856 857; SC000-FAST-NOT: .eabi_attribute 19 858;; Despite the SC000 CPU having no FPU in this scenario, we chose to 859;; flush to positive zero here. There's no hardware support doing 860;; this, but the fast maths software library might and such behaviour 861;; would match hardware support on this architecture revision if it 862;; existed. 863; SC000-FAST-NOT: .eabi_attribute 20 864; SC000-FAST-NOT: .eabi_attribute 21 865; SC000-FAST-NOT: .eabi_attribute 22 866; SC000-FAST: .eabi_attribute 23, 1 867 868; CORTEX-M3: .cpu cortex-m3 869; CORTEX-M3: .eabi_attribute 6, 10 870; CORTEX-M3: .eabi_attribute 7, 77 871; CORTEX-M3: .eabi_attribute 8, 0 872; CORTEX-M3: .eabi_attribute 9, 2 873; CORTEX-M3-NOT: .eabi_attribute 19 874;; We default to IEEE 754 compliance 875; CORTEX-M3: .eabi_attribute 20, 1 876; CORTEX-M3: .eabi_attribute 21, 1 877; CORTEX-M3-NOT: .eabi_attribute 22 878; CORTEX-M3: .eabi_attribute 23, 3 879; CORTEX-M3: .eabi_attribute 24, 1 880; CORTEX-M3: .eabi_attribute 25, 1 881; CORTEX-M3-NOT: .eabi_attribute 27 882; CORTEX-M3-NOT: .eabi_attribute 28 883; CORTEX-M3-NOT: .eabi_attribute 36 884; CORTEX-M3: .eabi_attribute 38, 1 885; CORTEX-M3-NOT: .eabi_attribute 42 886; CORTEX-M3-NOT: .eabi_attribute 44 887; CORTEX-M3-NOT: .eabi_attribute 68 888 889; CORTEX-M3-FAST-NOT: .eabi_attribute 19 890;; Despite there being no FPU, we chose to flush to zero preserving 891;; sign. This matches what the hardware would do for this architecture 892;; revision. 893; CORTEX-M3-FAST: .eabi_attribute 20, 2 894; CORTEX-M3-FAST-NOT: .eabi_attribute 21 895; CORTEX-M3-FAST-NOT: .eabi_attribute 22 896; CORTEX-M3-FAST: .eabi_attribute 23, 1 897 898; SC300: .cpu sc300 899; SC300: .eabi_attribute 6, 10 900; SC300: .eabi_attribute 7, 77 901; SC300: .eabi_attribute 8, 0 902; SC300: .eabi_attribute 9, 2 903; SC300-NOT: .eabi_attribute 19 904;; We default to IEEE 754 compliance 905; SC300: .eabi_attribute 20, 1 906; SC300: .eabi_attribute 21, 1 907; SC300-NOT: .eabi_attribute 22 908; SC300: .eabi_attribute 23, 3 909; SC300: .eabi_attribute 24, 1 910; SC300: .eabi_attribute 25, 1 911; SC300-NOT: .eabi_attribute 27 912; SC300-NOT: .eabi_attribute 28 913; SC300-NOT: .eabi_attribute 36 914; SC300: .eabi_attribute 38, 1 915; SC300-NOT: .eabi_attribute 42 916; SC300-NOT: .eabi_attribute 44 917; SC300-NOT: .eabi_attribute 68 918 919; SC300-FAST-NOT: .eabi_attribute 19 920;; Despite there being no FPU, we chose to flush to zero preserving 921;; sign. This matches what the hardware would do for this architecture 922;; revision. 923; SC300-FAST: .eabi_attribute 20, 2 924; SC300-FAST-NOT: .eabi_attribute 21 925; SC300-FAST-NOT: .eabi_attribute 22 926; SC300-FAST: .eabi_attribute 23, 1 927 928; CORTEX-M4-SOFT: .cpu cortex-m4 929; CORTEX-M4-SOFT: .eabi_attribute 6, 13 930; CORTEX-M4-SOFT: .eabi_attribute 7, 77 931; CORTEX-M4-SOFT: .eabi_attribute 8, 0 932; CORTEX-M4-SOFT: .eabi_attribute 9, 2 933; CORTEX-M4-SOFT: .fpu fpv4-sp-d16 934; CORTEX-M4-SOFT-NOT: .eabi_attribute 19 935;; We default to IEEE 754 compliance 936; CORTEX-M4-SOFT: .eabi_attribute 20, 1 937; CORTEX-M4-SOFT: .eabi_attribute 21, 1 938; CORTEX-M4-SOFT-NOT: .eabi_attribute 22 939; CORTEX-M4-SOFT: .eabi_attribute 23, 3 940; CORTEX-M4-SOFT: .eabi_attribute 24, 1 941; CORTEX-M4-SOFT: .eabi_attribute 25, 1 942; CORTEX-M4-SOFT: .eabi_attribute 27, 1 943; CORTEX-M4-SOFT-NOT: .eabi_attribute 28 944; CORTEX-M4-SOFT: .eabi_attribute 36, 1 945; CORTEX-M4-SOFT: .eabi_attribute 38, 1 946; CORTEX-M4-SOFT-NOT: .eabi_attribute 42 947; CORTEX-M4-SOFT-NOT: .eabi_attribute 44 948; CORTEX-M4-SOFT-NOT: .eabi_attribute 68 949 950; CORTEX-M4-SOFT-FAST-NOT: .eabi_attribute 19 951;; The M4 defaults to a VFPv4 FPU, so it flushes preseving sign when 952;; -ffast-math is specified. 953; CORTEX-M4-SOFT-FAST: .eabi_attribute 20, 2 954; CORTEX-M4-SOFT-FAST-NOT: .eabi_attribute 21 955; CORTEX-M4-SOFT-FAST-NOT: .eabi_attribute 22 956; CORTEX-M4-SOFT-FAST: .eabi_attribute 23, 1 957 958; CORTEX-M4-HARD: .cpu cortex-m4 959; CORTEX-M4-HARD: .eabi_attribute 6, 13 960; CORTEX-M4-HARD: .eabi_attribute 7, 77 961; CORTEX-M4-HARD: .eabi_attribute 8, 0 962; CORTEX-M4-HARD: .eabi_attribute 9, 2 963; CORTEX-M4-HARD: .fpu fpv4-sp-d16 964; CORTEX-M4-HARD-NOT: .eabi_attribute 19 965;; We default to IEEE 754 compliance 966; CORTEX-M4-HARD: .eabi_attribute 20, 1 967; CORTEX-M4-HARD: .eabi_attribute 21, 1 968; CORTEX-M4-HARD-NOT: .eabi_attribute 22 969; CORTEX-M4-HARD: .eabi_attribute 23, 3 970; CORTEX-M4-HARD: .eabi_attribute 24, 1 971; CORTEX-M4-HARD: .eabi_attribute 25, 1 972; CORTEX-M4-HARD: .eabi_attribute 27, 1 973; CORTEX-M4-HARD: .eabi_attribute 28, 1 974; CORTEX-M4-HARD: .eabi_attribute 36, 1 975; CORTEX-M4-HARD: .eabi_attribute 38, 1 976; CORTEX-M4-HARD-NOT: .eabi_attribute 42 977; CORTEX-M4-HARD-NOT: .eabi_attribute 44 978; CORTEX-M4-HARD-NOT: .eabi_attribute 68 979 980; CORTEX-M4-HARD-FAST-NOT: .eabi_attribute 19 981;; The M4 defaults to a VFPv4 FPU, so it flushes preseving sign when 982;; -ffast-math is specified. 983; CORTEX-M4-HARD-FAST: .eabi_attribute 20, 2 984; CORTEX-M4-HARD-FAST-NOT: .eabi_attribute 21 985; CORTEX-M4-HARD-FAST-NOT: .eabi_attribute 22 986; CORTEX-M4-HARD-FAST: .eabi_attribute 23, 1 987 988; CORTEX-M7: .cpu cortex-m7 989; CORTEX-M7: .eabi_attribute 6, 13 990; CORTEX-M7: .eabi_attribute 7, 77 991; CORTEX-M7: .eabi_attribute 8, 0 992; CORTEX-M7: .eabi_attribute 9, 2 993; CORTEX-M7-SOFT-NOT: .fpu 994; CORTEX-M7-SINGLE: .fpu fpv5-sp-d16 995; CORTEX-M7-DOUBLE: .fpu fpv5-d16 996; CORTEX-M7: .eabi_attribute 17, 1 997; CORTEX-M7-NOT: .eabi_attribute 19 998;; We default to IEEE 754 compliance 999; CORTEX-M7: .eabi_attribute 20, 1 1000; CORTEX-M7: .eabi_attribute 21, 1 1001; CORTEX-M7-NOT: .eabi_attribute 22 1002; CORTEX-M7: .eabi_attribute 23, 3 1003; CORTEX-M7: .eabi_attribute 24, 1 1004; CORTEX-M7: .eabi_attribute 25, 1 1005; CORTEX-M7-SOFT-NOT: .eabi_attribute 27 1006; CORTEX-M7-SINGLE: .eabi_attribute 27, 1 1007; CORTEX-M7-DOUBLE-NOT: .eabi_attribute 27 1008; CORTEX-M7: .eabi_attribute 36, 1 1009; CORTEX-M7: .eabi_attribute 38, 1 1010; CORTEX-M7-NOT: .eabi_attribute 44 1011; CORTEX-M7: .eabi_attribute 14, 0 1012 1013; CORTEX-M7-NOFPU-FAST-NOT: .eabi_attribute 19 1014;; The M7 has the ARMv8 FP unit, which always flushes preserving sign. 1015; CORTEX-M7-FAST: .eabi_attribute 20, 2 1016;; Despite there being no FPU, we chose to flush to zero preserving 1017;; sign. This matches what the hardware would do for this architecture 1018;; revision. 1019; CORTEX-M7-NOFPU-FAST: .eabi_attribute 20, 2 1020; CORTEX-M7-NOFPU-FAST-NOT: .eabi_attribute 21 1021; CORTEX-M7-NOFPU-FAST-NOT: .eabi_attribute 22 1022; CORTEX-M7-NOFPU-FAST: .eabi_attribute 23, 1 1023 1024; CORTEX-R4: .cpu cortex-r4 1025; CORTEX-R4: .eabi_attribute 6, 10 1026; CORTEX-R4: .eabi_attribute 7, 82 1027; CORTEX-R4: .eabi_attribute 8, 1 1028; CORTEX-R4: .eabi_attribute 9, 2 1029; CORTEX-R4-NOT: .fpu vfpv3-d16 1030; CORTEX-R4-NOT: .eabi_attribute 19 1031;; We default to IEEE 754 compliance 1032; CORTEX-R4: .eabi_attribute 20, 1 1033; CORTEX-R4: .eabi_attribute 21, 1 1034; CORTEX-R4-NOT: .eabi_attribute 22 1035; CORTEX-R4: .eabi_attribute 23, 3 1036; CORTEX-R4: .eabi_attribute 24, 1 1037; CORTEX-R4: .eabi_attribute 25, 1 1038; CORTEX-R4-NOT: .eabi_attribute 28 1039; CORTEX-R4-NOT: .eabi_attribute 36 1040; CORTEX-R4: .eabi_attribute 38, 1 1041; CORTEX-R4-NOT: .eabi_attribute 42 1042; CORTEX-R4-NOT: .eabi_attribute 44 1043; CORTEX-R4-NOT: .eabi_attribute 68 1044 1045; CORTEX-R4F: .cpu cortex-r4f 1046; CORTEX-R4F: .eabi_attribute 6, 10 1047; CORTEX-R4F: .eabi_attribute 7, 82 1048; CORTEX-R4F: .eabi_attribute 8, 1 1049; CORTEX-R4F: .eabi_attribute 9, 2 1050; CORTEX-R4F: .fpu vfpv3-d16 1051; CORTEX-R4F-NOT: .eabi_attribute 19 1052;; We default to IEEE 754 compliance 1053; CORTEX-R4F: .eabi_attribute 20, 1 1054; CORTEX-R4F: .eabi_attribute 21, 1 1055; CORTEX-R4F-NOT: .eabi_attribute 22 1056; CORTEX-R4F: .eabi_attribute 23, 3 1057; CORTEX-R4F: .eabi_attribute 24, 1 1058; CORTEX-R4F: .eabi_attribute 25, 1 1059; CORTEX-R4F-NOT: .eabi_attribute 27, 1 1060; CORTEX-R4F-NOT: .eabi_attribute 28 1061; CORTEX-R4F-NOT: .eabi_attribute 36 1062; CORTEX-R4F: .eabi_attribute 38, 1 1063; CORTEX-R4F-NOT: .eabi_attribute 42 1064; CORTEX-R4F-NOT: .eabi_attribute 44 1065; CORTEX-R4F-NOT: .eabi_attribute 68 1066 1067; CORTEX-R5: .cpu cortex-r5 1068; CORTEX-R5: .eabi_attribute 6, 10 1069; CORTEX-R5: .eabi_attribute 7, 82 1070; CORTEX-R5: .eabi_attribute 8, 1 1071; CORTEX-R5: .eabi_attribute 9, 2 1072; CORTEX-R5: .fpu vfpv3-d16 1073; CORTEX-R5-NOT: .eabi_attribute 19 1074;; We default to IEEE 754 compliance 1075; CORTEX-R5: .eabi_attribute 20, 1 1076; CORTEX-R5: .eabi_attribute 21, 1 1077; CORTEX-R5-NOT: .eabi_attribute 22 1078; CORTEX-R5: .eabi_attribute 23, 3 1079; CORTEX-R5: .eabi_attribute 24, 1 1080; CORTEX-R5: .eabi_attribute 25, 1 1081; CORTEX-R5-NOT: .eabi_attribute 27, 1 1082; CORTEX-R5-NOT: .eabi_attribute 28 1083; CORTEX-R5-NOT: .eabi_attribute 36 1084; CORTEX-R5: .eabi_attribute 38, 1 1085; CORTEX-R5-NOT: .eabi_attribute 42 1086; CORTEX-R5: .eabi_attribute 44, 2 1087; CORTEX-R5-NOT: .eabi_attribute 68 1088 1089; CORTEX-R5-FAST-NOT: .eabi_attribute 19 1090;; The R5 has the VFPv3 FP unit, which always flushes preserving sign. 1091; CORTEX-R5-FAST: .eabi_attribute 20, 2 1092; CORTEX-R5-FAST-NOT: .eabi_attribute 21 1093; CORTEX-R5-FAST-NOT: .eabi_attribute 22 1094; CORTEX-R5-FAST: .eabi_attribute 23, 1 1095 1096; CORTEX-R7: .cpu cortex-r7 1097; CORTEX-R7: .eabi_attribute 6, 10 1098; CORTEX-R7: .eabi_attribute 7, 82 1099; CORTEX-R7: .eabi_attribute 8, 1 1100; CORTEX-R7: .eabi_attribute 9, 2 1101; CORTEX-R7: .fpu vfpv3xd 1102; CORTEX-R7-NOT: .eabi_attribute 19 1103;; We default to IEEE 754 compliance 1104; CORTEX-R7: .eabi_attribute 20, 1 1105; CORTEX-R7: .eabi_attribute 21, 1 1106; CORTEX-R7-NOT: .eabi_attribute 22 1107; CORTEX-R7: .eabi_attribute 23, 3 1108; CORTEX-R7: .eabi_attribute 24, 1 1109; CORTEX-R7: .eabi_attribute 25, 1 1110; CORTEX-R7: .eabi_attribute 27, 1 1111; CORTEX-R7-NOT: .eabi_attribute 28 1112; CORTEX-R7-NOT: .eabi_attribute 36 1113; CORTEX-R7: .eabi_attribute 38, 1 1114; CORTEX-R7: .eabi_attribute 42, 1 1115; CORTEX-R7: .eabi_attribute 44, 2 1116; CORTEX-R7-NOT: .eabi_attribute 68 1117 1118; CORTEX-R7-FAST-NOT: .eabi_attribute 19 1119;; The R7 has the VFPv3 FP unit, which always flushes preserving sign. 1120; CORTEX-R7-FAST: .eabi_attribute 20, 2 1121; CORTEX-R7-FAST-NOT: .eabi_attribute 21 1122; CORTEX-R7-FAST-NOT: .eabi_attribute 22 1123; CORTEX-R7-FAST: .eabi_attribute 23, 1 1124 1125; CORTEX-A53: .cpu cortex-a53 1126; CORTEX-A53: .eabi_attribute 6, 14 1127; CORTEX-A53: .eabi_attribute 7, 65 1128; CORTEX-A53: .eabi_attribute 8, 1 1129; CORTEX-A53: .eabi_attribute 9, 2 1130; CORTEX-A53: .fpu crypto-neon-fp-armv8 1131; CORTEX-A53: .eabi_attribute 12, 3 1132; CORTEX-A53-NOT: .eabi_attribute 19 1133;; We default to IEEE 754 compliance 1134; CORTEX-A53: .eabi_attribute 20, 1 1135; CORTEX-A53: .eabi_attribute 21, 1 1136; CORTEX-A53-NOT: .eabi_attribute 22 1137; CORTEX-A53: .eabi_attribute 23, 3 1138; CORTEX-A53: .eabi_attribute 24, 1 1139; CORTEX-A53: .eabi_attribute 25, 1 1140; CORTEX-A53-NOT: .eabi_attribute 27 1141; CORTEX-A53-NOT: .eabi_attribute 28 1142; CORTEX-A53: .eabi_attribute 36, 1 1143; CORTEX-A53: .eabi_attribute 38, 1 1144; CORTEX-A53: .eabi_attribute 42, 1 1145; CORTEX-A53-NOT: .eabi_attribute 44 1146; CORTEX-A53: .eabi_attribute 68, 3 1147 1148; CORTEX-A53-FAST-NOT: .eabi_attribute 19 1149;; The A53 has the ARMv8 FP unit, which always flushes preserving sign. 1150; CORTEX-A53-FAST: .eabi_attribute 20, 2 1151; CORTEX-A53-FAST-NOT: .eabi_attribute 21 1152; CORTEX-A53-FAST-NOT: .eabi_attribute 22 1153; CORTEX-A53-FAST: .eabi_attribute 23, 1 1154 1155; CORTEX-A57: .cpu cortex-a57 1156; CORTEX-A57: .eabi_attribute 6, 14 1157; CORTEX-A57: .eabi_attribute 7, 65 1158; CORTEX-A57: .eabi_attribute 8, 1 1159; CORTEX-A57: .eabi_attribute 9, 2 1160; CORTEX-A57: .fpu crypto-neon-fp-armv8 1161; CORTEX-A57: .eabi_attribute 12, 3 1162; CORTEX-A57-NOT: .eabi_attribute 19 1163;; We default to IEEE 754 compliance 1164; CORTEX-A57: .eabi_attribute 20, 1 1165; CORTEX-A57: .eabi_attribute 21, 1 1166; CORTEX-A57-NOT: .eabi_attribute 22 1167; CORTEX-A57: .eabi_attribute 23, 3 1168; CORTEX-A57: .eabi_attribute 24, 1 1169; CORTEX-A57: .eabi_attribute 25, 1 1170; CORTEX-A57-NOT: .eabi_attribute 27 1171; CORTEX-A57-NOT: .eabi_attribute 28 1172; CORTEX-A57: .eabi_attribute 36, 1 1173; CORTEX-A57: .eabi_attribute 38, 1 1174; CORTEX-A57: .eabi_attribute 42, 1 1175; CORTEX-A57-NOT: .eabi_attribute 44 1176; CORTEX-A57: .eabi_attribute 68, 3 1177 1178; CORTEX-A57-FAST-NOT: .eabi_attribute 19 1179;; The A57 has the ARMv8 FP unit, which always flushes preserving sign. 1180; CORTEX-A57-FAST: .eabi_attribute 20, 2 1181; CORTEX-A57-FAST-NOT: .eabi_attribute 21 1182; CORTEX-A57-FAST-NOT: .eabi_attribute 22 1183; CORTEX-A57-FAST: .eabi_attribute 23, 1 1184 1185; CORTEX-A72: .cpu cortex-a72 1186; CORTEX-A72: .eabi_attribute 6, 14 1187; CORTEX-A72: .eabi_attribute 7, 65 1188; CORTEX-A72: .eabi_attribute 8, 1 1189; CORTEX-A72: .eabi_attribute 9, 2 1190; CORTEX-A72: .fpu crypto-neon-fp-armv8 1191; CORTEX-A72: .eabi_attribute 12, 3 1192; CORTEX-A72-NOT: .eabi_attribute 19 1193;; We default to IEEE 754 compliance 1194; CORTEX-A72: .eabi_attribute 20, 1 1195; CORTEX-A72: .eabi_attribute 21, 1 1196; CORTEX-A72-NOT: .eabi_attribute 22 1197; CORTEX-A72: .eabi_attribute 23, 3 1198; CORTEX-A72: .eabi_attribute 24, 1 1199; CORTEX-A72: .eabi_attribute 25, 1 1200; CORTEX-A72-NOT: .eabi_attribute 27 1201; CORTEX-A72-NOT: .eabi_attribute 28 1202; CORTEX-A72: .eabi_attribute 36, 1 1203; CORTEX-A72: .eabi_attribute 38, 1 1204; CORTEX-A72: .eabi_attribute 42, 1 1205; CORTEX-A72-NOT: .eabi_attribute 44 1206; CORTEX-A72: .eabi_attribute 68, 3 1207 1208; CORTEX-A72-FAST-NOT: .eabi_attribute 19 1209;; The A72 has the ARMv8 FP unit, which always flushes preserving sign. 1210; CORTEX-A72-FAST: .eabi_attribute 20, 2 1211; CORTEX-A72-FAST-NOT: .eabi_attribute 21 1212; CORTEX-A72-FAST-NOT: .eabi_attribute 22 1213; CORTEX-A72-FAST: .eabi_attribute 23, 1 1214 1215; GENERIC-FPU-VFPV3-FP16: .fpu vfpv3-fp16 1216; GENERIC-FPU-VFPV3-D16-FP16: .fpu vfpv3-d16-fp16 1217; GENERIC-FPU-VFPV3XD: .fpu vfpv3xd 1218; GENERIC-FPU-VFPV3XD-FP16: .fpu vfpv3xd-fp16 1219; GENERIC-FPU-NEON-FP16: .fpu neon-fp16 1220 1221; GENERIC-ARMV8_1-A: .eabi_attribute 6, 14 1222; GENERIC-ARMV8_1-A: .eabi_attribute 7, 65 1223; GENERIC-ARMV8_1-A: .eabi_attribute 8, 1 1224; GENERIC-ARMV8_1-A: .eabi_attribute 9, 2 1225; GENERIC-ARMV8_1-A: .fpu crypto-neon-fp-armv8 1226; GENERIC-ARMV8_1-A: .eabi_attribute 12, 4 1227; GENERIC-ARMV8_1-A-NOT: .eabi_attribute 19 1228;; We default to IEEE 754 compliance 1229; GENERIC-ARMV8_1-A: .eabi_attribute 20, 1 1230; GENERIC-ARMV8_1-A: .eabi_attribute 21, 1 1231; GENERIC-ARMV8_1-A-NOT: .eabi_attribute 22 1232; GENERIC-ARMV8_1-A: .eabi_attribute 23, 3 1233; GENERIC-ARMV8_1-A: .eabi_attribute 24, 1 1234; GENERIC-ARMV8_1-A: .eabi_attribute 25, 1 1235; GENERIC-ARMV8_1-A-NOT: .eabi_attribute 27 1236; GENERIC-ARMV8_1-A-NOT: .eabi_attribute 28 1237; GENERIC-ARMV8_1-A: .eabi_attribute 36, 1 1238; GENERIC-ARMV8_1-A: .eabi_attribute 38, 1 1239; GENERIC-ARMV8_1-A: .eabi_attribute 42, 1 1240; GENERIC-ARMV8_1-A-NOT: .eabi_attribute 44 1241; GENERIC-ARMV8_1-A: .eabi_attribute 68, 3 1242 1243; GENERIC-ARMV8_1-A-FAST-NOT: .eabi_attribute 19 1244;; GENERIC-ARMV8_1-A has the ARMv8 FP unit, which always flushes preserving sign. 1245; GENERIC-ARMV8_1-A-FAST: .eabi_attribute 20, 2 1246; GENERIC-ARMV8_1-A-FAST-NOT: .eabi_attribute 21 1247; GENERIC-ARMV8_1-A-FAST-NOT: .eabi_attribute 22 1248; GENERIC-ARMV8_1-A-FAST: .eabi_attribute 23, 1 1249 1250; RELOC-PIC: .eabi_attribute 15, 1 1251; RELOC-PIC: .eabi_attribute 16, 1 1252; RELOC-PIC: .eabi_attribute 17, 2 1253; RELOC-OTHER: .eabi_attribute 17, 1 1254 1255; PCS-R9-USE: .eabi_attribute 14, 0 1256; PCS-R9-RESERVE: .eabi_attribute 14, 3 1257 1258define i32 @f(i64 %z) { 1259 ret i32 0 1260} 1261