summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorthopre01 <thopre01@138bc75d-0d04-0410-961f-82ee72b054a4>2017-05-04 10:16:04 +0000
committerthopre01 <thopre01@138bc75d-0d04-0410-961f-82ee72b054a4>2017-05-04 10:16:04 +0000
commit1e5fee4e59eb8fa30ebce495ba7562846d44345a (patch)
treeb61d68a04e0b1b45fbd9424585b909a249ddfda5
parentb300be88f2edd807110e26c9deb9424d48f4a4c9 (diff)
downloadgcc-1e5fee4e59eb8fa30ebce495ba7562846d44345a.tar.gz
[ARM] Rename FPSCR builtins to correct names
The GCC documentation in section 6.60.8 ARM Floating Point Status and Control Intrinsics states that the FPSCR register can be read and written to using the intrinsics __builtin_arm_get_fpscr and __builtin_arm_set_fpscr. However, these are misnamed within GCC itself and these intrinsic names are not recognised. This patch corrects the intrinsic names to match the documentation, and adds tests to verify these intrinsics generate the correct instructions. 2017-05-04 Prakhar Bahuguna <prakhar.bahuguna@arm.com> gcc/ * gcc/config/arm/arm-builtins.c (arm_init_builtins): Rename __builtin_arm_ldfscr to __builtin_arm_get_fpscr, and rename __builtin_arm_stfscr to __builtin_arm_set_fpscr. gcc/testsuite/ * gcc.target/arm/fpscr.c: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@247584 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/arm/arm-builtins.c4
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.target/arm/fpscr.c16
4 files changed, 28 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 225799fbf83..c98e5affee5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2017-05-04 Prakhar Bahuguna <prakhar.bahuguna@arm.com>
+
+ * gcc/config/arm/arm-builtins.c (arm_init_builtins): Rename
+ __builtin_arm_ldfscr to __builtin_arm_get_fpscr, and rename
+ __builtin_arm_stfscr to __builtin_arm_set_fpscr.
+
2017-05-04 Martin Liska <mliska@suse.cz>
* tree-vrp.c (simplify_cond_using_ranges_2): Remove unused
diff --git a/gcc/config/arm/arm-builtins.c b/gcc/config/arm/arm-builtins.c
index 689219c1923..deebb59f6a6 100644
--- a/gcc/config/arm/arm-builtins.c
+++ b/gcc/config/arm/arm-builtins.c
@@ -1893,10 +1893,10 @@ arm_init_builtins (void)
= build_function_type_list (unsigned_type_node, NULL);
arm_builtin_decls[ARM_BUILTIN_GET_FPSCR]
- = add_builtin_function ("__builtin_arm_ldfscr", ftype_get_fpscr,
+ = add_builtin_function ("__builtin_arm_get_fpscr", ftype_get_fpscr,
ARM_BUILTIN_GET_FPSCR, BUILT_IN_MD, NULL, NULL_TREE);
arm_builtin_decls[ARM_BUILTIN_SET_FPSCR]
- = add_builtin_function ("__builtin_arm_stfscr", ftype_set_fpscr,
+ = add_builtin_function ("__builtin_arm_set_fpscr", ftype_set_fpscr,
ARM_BUILTIN_SET_FPSCR, BUILT_IN_MD, NULL, NULL_TREE);
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index b2e28ee48d3..bdf64ce0d14 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2017-05-04 Prakhar Bahuguna <prakhar.bahuguna@arm.com>
+
+ * gcc.target/arm/fpscr.c: New file.
+
2017-05-04 Thomas Preud'homme <thomas.preudhomme@arm.com>
* gcc.c-torture/execute/pr78622.c: Require c99_runtime effective
diff --git a/gcc/testsuite/gcc.target/arm/fpscr.c b/gcc/testsuite/gcc.target/arm/fpscr.c
new file mode 100644
index 00000000000..7b4d71d72d8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/fpscr.c
@@ -0,0 +1,16 @@
+/* Test the fpscr builtins. */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_fp_ok } */
+/* { dg-skip-if "need fp instructions" { *-*-* } { "-mfloat-abi=soft" } { "" } } */
+/* { dg-add-options arm_fp } */
+
+void
+test_fpscr ()
+{
+ volatile unsigned int status = __builtin_arm_get_fpscr ();
+ __builtin_arm_set_fpscr (status);
+}
+
+/* { dg-final { scan-assembler "mrc\tp10, 7, r\[0-9\]+, cr1, cr0, 0" } } */
+/* { dg-final { scan-assembler "mcr\tp10, 7, r\[0-9\]+, cr1, cr0, 0" } } */