diff --git a/lib/Headers/arm_acle.h b/lib/Headers/arm_acle.h
index d706745ad592dc2855bed2554d5bee48af23800e..a7406fbf0a888076359fd5c3b97a82c20856ac6f 100644
--- a/lib/Headers/arm_acle.h
+++ b/lib/Headers/arm_acle.h
@@ -34,8 +34,8 @@
 extern "C" {
 #endif
 
-/* Miscellaneous data-processing intrinsics */
-
+/* 9 DATA-PROCESSING INTRINSICS */
+/* 9.2 Miscellaneous data-processing intrinsics */
 static __inline__ uint32_t __attribute__((always_inline, nodebug))
   __clz(uint32_t t) {
   return __builtin_clz(t);
@@ -74,17 +74,20 @@ static __inline__ uint64_t __attribute__((always_inline, nodebug))
   return __builtin_bswap64(t);
 }
 
-
 /*
- * Saturating intrinsics
+ * 9.4 Saturating intrinsics
  *
  * FIXME: Change guard to their corrosponding __ARM_FEATURE flag when Q flag
  * intrinsics are implemented and the flag is enabled.
  */
+/* 9.4.1 Width-specified saturation intrinsics */
 #if __ARM_32BIT_STATE
 #define __ssat(x, y) __builtin_arm_ssat(x, y)
 #define __usat(x, y) __builtin_arm_usat(x, y)
+#endif
 
+/* 9.4.2 Saturating addition and subtraction intrinsics */
+#if __ARM_32BIT_STATE
 static __inline__ int32_t __attribute__((always_inline, nodebug))
   __qadd(int32_t t, int32_t v) {
   return __builtin_arm_qadd(t, v);
@@ -101,7 +104,7 @@ __qdbl(int32_t t) {
 }
 #endif
 
-/* CRC32 intrinsics */
+/* 9.7 CRC32 intrinsics */
 #if __ARM_FEATURE_CRC32
 static __inline__ uint32_t __attribute__((always_inline, nodebug))
   __crc32b(uint32_t a, uint8_t b) {
diff --git a/test/CodeGen/arm_acle.c b/test/CodeGen/arm_acle.c
index 88d58a40b1f991f0abf8b8a589137e76979839c5..a2f24d3fbf4f78343ca1c6bc947dab291887be1e 100644
--- a/test/CodeGen/arm_acle.c
+++ b/test/CodeGen/arm_acle.c
@@ -3,7 +3,8 @@
 
 #include <arm_acle.h>
 
-/* Miscellaneous data-processing intrinsics */
+/* 9 DATA-PROCESSING INTRINSICS */
+/* 9.2 Miscellaneous data-processing intrinsics */
 // ARM-LABEL: test_rev
 // ARM: call i32 @llvm.bswap.i32(i32 %t)
 uint32_t test_rev(uint32_t t) {
@@ -42,8 +43,10 @@ uint64_t test_clzll(uint64_t t) {
   return __clzll(t);
 }
 
-/* Saturating intrinsics */
+/* 9.4 Saturating intrinsics */
 #ifdef __ARM_32BIT_STATE
+
+/* 9.4.1 Width-specified saturation intrinsics */
 // AArch32-LABEL: test_ssat
 // AArch32: call i32 @llvm.arm.ssat(i32 %t, i32 1)
 int32_t test_ssat(int32_t t) {
@@ -55,6 +58,8 @@ int32_t test_ssat(int32_t t) {
 int32_t test_usat(int32_t t) {
   return __usat(t, 2);
 }
+
+/* 9.4.2 Saturating addition and subtraction intrinsics */
 // AArch32-LABEL: test_qadd
 // AArch32: call i32 @llvm.arm.qadd(i32 %a, i32 %b)
 int32_t test_qadd(int32_t a, int32_t b) {
@@ -77,7 +82,7 @@ int32_t test_qdbl() {
 }
 #endif
 
-/* CRC32 intrinsics */
+/* 9.7 CRC32 intrinsics */
 // ARM-LABEL: test_crc32b
 // AArch32: call i32 @llvm.arm.crc32b
 // AArch64: call i32 @llvm.aarch64.crc32b