From 2ca352d027da26194deaa77ebc486df159e51c28 Mon Sep 17 00:00:00 2001 From: Bradley Smith Date: Tue, 12 Nov 2013 10:38:05 +0000 Subject: [PATCH] [ARM] Add support for FP_HP_extension build attribute git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194470 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/ARM/ARMAsmPrinter.cpp | 3 +++ lib/Target/ARM/ARMBuildAttrs.h | 5 ++++- .../ARM/2010-09-29-mc-asm-header-test.ll | 19 +++++++++++++++++-- test/CodeGen/ARM/build-attributes-encoding.s | 11 +++++++---- 4 files changed, 31 insertions(+), 7 deletions(-) diff --git a/lib/Target/ARM/ARMAsmPrinter.cpp b/lib/Target/ARM/ARMAsmPrinter.cpp index aa54e0ddf3b..e79f88d4b6f 100644 --- a/lib/Target/ARM/ARMAsmPrinter.cpp +++ b/lib/Target/ARM/ARMAsmPrinter.cpp @@ -703,6 +703,9 @@ void ARMAsmPrinter::emitAttributes() { // FIXME: Should we signal R9 usage? + if (Subtarget->hasFP16()) + ATS.emitAttribute(ARMBuildAttrs::FP_HP_extension, ARMBuildAttrs::AllowHPFP); + if (Subtarget->hasMPExtension()) ATS.emitAttribute(ARMBuildAttrs::MPextension_use, ARMBuildAttrs::AllowMP); diff --git a/lib/Target/ARM/ARMBuildAttrs.h b/lib/Target/ARM/ARMBuildAttrs.h index eb0c9ede973..b16d4ef54b6 100644 --- a/lib/Target/ARM/ARMBuildAttrs.h +++ b/lib/Target/ARM/ARMBuildAttrs.h @@ -59,7 +59,7 @@ namespace ARMBuildAttrs { ABI_FP_optimization_goals = 31, compatibility = 32, CPU_unaligned_access = 34, - VFP_HP_extension = 36, + FP_HP_extension = 36, ABI_FP_16bit_format = 38, MPextension_use = 42, // was 70, 2.08 ABI DIV_use = 44, @@ -146,6 +146,9 @@ namespace ARMBuildAttrs { BaseAAPCS = 0, HardFPAAPCS = 1, + // Tag_FP_HP_extension, (=36), uleb128 + AllowHPFP = 1, // Allow use of Half Precision FP + // Tag_MPextension_use, (=42), uleb128 AllowMP = 1, // Allow use of MP extensions diff --git a/test/CodeGen/ARM/2010-09-29-mc-asm-header-test.ll b/test/CodeGen/ARM/2010-09-29-mc-asm-header-test.ll index 9d1bb560883..30536943513 100644 --- a/test/CodeGen/ARM/2010-09-29-mc-asm-header-test.ll +++ b/test/CodeGen/ARM/2010-09-29-mc-asm-header-test.ll @@ -29,6 +29,7 @@ ; V6: .eabi_attribute 25, 1 ; V6-NOT: .eabi_attribute 27 ; V6-NOT: .eabi_attribute 28 +; V6-NOT: .eabi_attribute 36 ; V6-NOT: .eabi_attribute 42 ; V6-NOT: .eabi_attribute 68 @@ -40,6 +41,7 @@ ; V6M: .eabi_attribute 25, 1 ; V6M-NOT: .eabi_attribute 27 ; V6M-NOT: .eabi_attribute 28 +; V6M-NOT: .eabi_attribute 36 ; V6M-NOT: .eabi_attribute 42 ; V6M-NOT: .eabi_attribute 68 @@ -55,6 +57,7 @@ ; ARM1156T2F-S: .eabi_attribute 25, 1 ; ARM1156T2F-S-NOT: .eabi_attribute 27 ; ARM1156T2F-S-NOT: .eabi_attribute 28 +; ARM1156T2F-S-NOT: .eabi_attribute 36 ; ARM1156T2F-S-NOT: .eabi_attribute 42 ; ARM1156T2F-S-NOT: .eabi_attribute 68 @@ -66,6 +69,7 @@ ; V7M: .eabi_attribute 25, 1 ; V7M-NOT: .eabi_attribute 27 ; V7M-NOT: .eabi_attribute 28 +; V7M-NOT: .eabi_attribute 36 ; V7M-NOT: .eabi_attribute 42 ; V7M: .eabi_attribute 44, 0 ; V7M-NOT: .eabi_attribute 68 @@ -79,6 +83,7 @@ ; V7: .eabi_attribute 25, 1 ; V7-NOT: .eabi_attribute 27 ; V7-NOT: .eabi_attribute 28 +; V7-NOT: .eabi_attribute 36 ; V7-NOT: .eabi_attribute 42 ; V7-NOT: .eabi_attribute 68 @@ -120,6 +125,7 @@ ; CORTEX-A9-SOFT: .eabi_attribute 25, 1 ; CORTEX-A9-SOFT-NOT: .eabi_attribute 27 ; CORTEX-A9-SOFT-NOT: .eabi_attribute 28 +; CORTEX-A9-SOFT: .eabi_attribute 36, 1 ; CORTEX-A9-SOFT-NOT: .eabi_attribute 42 ; CORTEX-A9-SOFT: .eabi_attribute 68, 1 @@ -136,6 +142,7 @@ ; CORTEX-A9-HARD: .eabi_attribute 25, 1 ; CORTEX-A9-HARD-NOT: .eabi_attribute 27 ; CORTEX-A9-HARD: .eabi_attribute 28, 1 +; CORTEX-A9-HARD: .eabi_attribute 36, 1 ; CORTEX-A9-HARD-NOT: .eabi_attribute 42 ; CORTEX-A9-HARD: .eabi_attribute 68, 1 @@ -152,6 +159,7 @@ ; CORTEX-A9-MP: .eabi_attribute 25, 1 ; CORTEX-A9-NOT: .eabi_attribute 27 ; CORTEX-A9-NOT: .eabi_attribute 28 +; CORTEX-A9-MP: .eabi_attribute 36, 1 ; CORTEX-A9-MP: .eabi_attribute 42, 1 ; CORTEX-A9-MP: .eabi_attribute 68, 1 @@ -166,10 +174,11 @@ ; CORTEX-A15: .eabi_attribute 23, 3 ; CORTEX-A15: .eabi_attribute 24, 1 ; CORTEX-A15: .eabi_attribute 25, 1 -; CORTEX-A15: .eabi_attribute 42, 1 -; CORTEX-A15: .eabi_attribute 44, 2 ; CORTEX-A15-NOT: .eabi_attribute 27 ; CORTEX-A15-NOT: .eabi_attribute 28 +; CORTEX-A15: .eabi_attribute 36, 1 +; CORTEX-A15: .eabi_attribute 42, 1 +; CORTEX-A15: .eabi_attribute 44, 2 ; CORTEX-A15: .eabi_attribute 68, 3 ; CORTEX-M0: .cpu cortex-m0 @@ -181,6 +190,7 @@ ; CORTEX-M0: .eabi_attribute 25, 1 ; CORTEX-M0-NOT: .eabi_attribute 27 ; CORTEX-M0-NOT: .eabi_attribute 28 +; CORTEX-M0-NOT: .eabi_attribute 36 ; CORTEX-M0-NOT: .eabi_attribute 42 ; CORTEX-M0-NOT: .eabi_attribute 68 @@ -197,6 +207,7 @@ ; CORTEX-M4-SOFT: .eabi_attribute 25, 1 ; CORTEX-M4-SOFT: .eabi_attribute 27, 1 ; CORTEX-M4-SOFT-NOT: .eabi_attribute 28 +; CORTEX-M4-SOFT: .eabi_attribute 36, 1 ; CORTEX-M4-SOFT-NOT: .eabi_attribute 42 ; CORTEX-M4-SOFT: .eabi_attribute 44, 0 ; CORTEX-M4-SOFT-NOT: .eabi_attribute 68 @@ -214,6 +225,7 @@ ; CORTEX-M4-HARD: .eabi_attribute 25, 1 ; CORTEX-M4-HARD: .eabi_attribute 27, 1 ; CORTEX-M4-HARD: .eabi_attribute 28, 1 +; CORTEX-M4-HARD: .eabi_attribute 36, 1 ; CORTEX-M4-HARD-NOT: .eabi_attribute 42 ; CORTEX-M4-HARD: .eabi_attribute 44, 0 ; CORTEX-M4-HRAD-NOT: .eabi_attribute 68 @@ -231,6 +243,7 @@ ; CORTEX-R5: .eabi_attribute 25, 1 ; CORTEX-R5: .eabi_attribute 27, 1 ; CORTEX-R5-NOT: .eabi_attribute 28 +; CORTEX-R5-NOT: .eabi_attribute 36 ; CORTEX-R5-NOT: .eabi_attribute 42 ; CORTEX-R5: .eabi_attribute 44, 2 ; CORTEX-R5-NOT: .eabi_attribute 68 @@ -246,6 +259,7 @@ ; CORTEX-A53: .eabi_attribute 25, 1 ; CORTEX-A53-NOT: .eabi_attribute 27 ; CORTEX-A53-NOT: .eabi_attribute 28 +; CORTEX-A53: .eabi_attribute 36, 1 ; CORTEX-A53: .eabi_attribute 42, 1 ; CORTEX-A53: .eabi_attribute 44, 2 ; CORTEX-A53: .eabi_attribute 68, 3 @@ -261,6 +275,7 @@ ; CORTEX-A57: .eabi_attribute 25, 1 ; CORTEX-A57-NOT: .eabi_attribute 27 ; CORTEX-A57-NOT: .eabi_attribute 28 +; CORTEX-A57: .eabi_attribute 36, 1 ; CORTEX-A57: .eabi_attribute 42, 1 ; CORTEX-A57: .eabi_attribute 44, 2 ; CORTEX-A57: .eabi_attribute 68, 3 diff --git a/test/CodeGen/ARM/build-attributes-encoding.s b/test/CodeGen/ARM/build-attributes-encoding.s index 779c3437221..5ad51b28411 100644 --- a/test/CodeGen/ARM/build-attributes-encoding.s +++ b/test/CodeGen/ARM/build-attributes-encoding.s @@ -45,6 +45,9 @@ // Tag_ABI_VFP_args (=28) .eabi_attribute 28, 1 +// Tag_FP_HP_extension (=36) +.eabi_attribute 36, 1 + // Tag_MPextension_use (=42) .eabi_attribute 42, 1 @@ -68,15 +71,15 @@ // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 // CHECK-NEXT: Offset: 0x34 -// CHECK-NEXT: Size: 68 +// CHECK-NEXT: Size: 70 // CHECK-NEXT: Link: 0 // CHECK-NEXT: Info: 0 // CHECK-NEXT: AddressAlignment: 1 // CHECK-NEXT: EntrySize: 0 // CHECK-NEXT: SectionData ( -// CHECK-NEXT: 0000: 41430000 00616561 62690001 39000000 +// CHECK-NEXT: 0000: 41450000 00616561 62690001 3B000000 // CHECK-NEXT: 0010: 05434F52 5445582D 41380006 0A074108 // CHECK-NEXT: 0020: 0109020A 030C0214 01150117 01180119 -// CHECK-NEXT: 0030: 011B001C 012A012C 0244036E A0018101 -// CHECK-NEXT: 0040: 01FA0101 +// CHECK-NEXT: 0030: 011B001C 0124012A 012C0244 036EA001 +// CHECK-NEXT: 0040: 810101FA 0101 // CHECK-NEXT: ) -- 2.34.1