diff --git a/src/ARCH_SRC/cray_gu/gu.c b/src/ARCH_SRC/cray_gu/gu.c
new file mode 100644
index 0000000000000000000000000000000000000000..24581c7e06e7b6efaeae025b894cd22f80b30634
--- /dev/null
+++ b/src/ARCH_SRC/cray_gu/gu.c
@@ -0,0 +1,45 @@
+/*
+
+*  Copyright -2022 Hewlett Packard Enterprise Development LP
+
+*/
+
+void __cce_floatingpt_gu( void ); // Gradual Underflow.
+
+ 
+
+static void (*p)(void)  __attribute__((section(".init_array"))) = __cce_floatingpt_gu;
+
+ 
+
+#define DENORMS_ARE_ZEROS                      6
+
+#define FLUSH_TO_ZERO_MASK                    15
+
+ 
+
+void __cce_floatingpt_gu( void )
+
+{
+
+  unsigned long gu_src = (1 << DENORMS_ARE_ZEROS);
+
+  unsigned long gu_dst = (1 << FLUSH_TO_ZERO_MASK);
+
+ 
+
+  do {
+
+      unsigned long __mxcsr;
+
+      __asm__ volatile("stmxcsr %0" : : "m" (__mxcsr));
+
+      __mxcsr &= ~(gu_src | gu_dst);
+
+      __asm__ volatile("ldmxcsr %0" : : "m" (__mxcsr));
+
+  }
+
+  while (0);
+
+}