{"zks", "zbkx",      check_implicit_always},
   {"zks", "zksed",     check_implicit_always},
   {"zks", "zksh",      check_implicit_always},
+  {"smstateen", "ssstateen",   check_implicit_always},
   {"smepmp", "zicsr",          check_implicit_always},
-  {"smstateen", "zicsr",       check_implicit_always},
   {"sscofpmf", "zicsr",                check_implicit_always},
+  {"ssstateen", "zicsr",       check_implicit_always},
   {"sstc", "zicsr",            check_implicit_always},
   {NULL, NULL, NULL}
 };
   {"smepmp",           ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
   {"smstateen",                ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
   {"sscofpmf",         ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
+  {"ssstateen",                ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
   {"sstc",             ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
   {"svinval",          ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
   {"svnapot",          ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
 
   CSR_CLASS_H,         /* hypervisor */
   CSR_CLASS_H_32,      /* hypervisor, rv32 only */
   CSR_CLASS_SMSTATEEN,         /* Smstateen only */
-  CSR_CLASS_SMSTATEEN_AND_H,   /* Smstateen only (with H) */
   CSR_CLASS_SMSTATEEN_32,      /* Smstateen RV32 only */
-  CSR_CLASS_SMSTATEEN_AND_H_32,        /* Smstateen RV32 only (with H) */
+  CSR_CLASS_SSSTATEEN,         /* S[ms]stateen only */
+  CSR_CLASS_SSSTATEEN_AND_H,   /* S[ms]stateen only (with H) */
+  CSR_CLASS_SSSTATEEN_AND_H_32,        /* S[ms]stateen RV32 only (with H) */
   CSR_CLASS_SSCOFPMF,          /* Sscofpmf only */
   CSR_CLASS_SSCOFPMF_32,       /* Sscofpmf RV32 only */
   CSR_CLASS_SSTC,              /* Sstc only */
       extension = "zve32x";
       break;
     case CSR_CLASS_SMSTATEEN:
-    case CSR_CLASS_SMSTATEEN_AND_H:
     case CSR_CLASS_SMSTATEEN_32:
-    case CSR_CLASS_SMSTATEEN_AND_H_32:
-      is_rv32_only = (csr_class == CSR_CLASS_SMSTATEEN_32
-                     || csr_class == CSR_CLASS_SMSTATEEN_AND_H_32);
-      is_h_required = (csr_class == CSR_CLASS_SMSTATEEN_AND_H
-                     || csr_class == CSR_CLASS_SMSTATEEN_AND_H_32);
+      is_rv32_only = (csr_class == CSR_CLASS_SMSTATEEN_32);
       extension = "smstateen";
       break;
+    case CSR_CLASS_SSSTATEEN:
+    case CSR_CLASS_SSSTATEEN_AND_H:
+    case CSR_CLASS_SSSTATEEN_AND_H_32:
+      is_rv32_only = (csr_class == CSR_CLASS_SSSTATEEN_AND_H_32);
+      is_h_required = (csr_class == CSR_CLASS_SSSTATEEN_AND_H
+                     || csr_class == CSR_CLASS_SSSTATEEN_AND_H_32);
+      extension = "ssstateen";
+      break;
     case CSR_CLASS_SSCOFPMF_32:
       is_rv32_only = true;
       /* Fall through.  */
 
 .*Warning: invalid CSR `mstateen2', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen3', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen3', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `ssstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `ssstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `ssstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `ssstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `ssstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `ssstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `ssstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen0', needs `h' extension
-.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen0', needs `h' extension
-.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen1', needs `h' extension
-.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen1', needs `h' extension
-.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen2', needs `h' extension
-.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen2', needs `h' extension
-.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen3', needs `h' extension
-.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen3', needs `h' extension
-.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3', needs `ssstateen' extension
 .*Warning: invalid CSR `mstateen0h', needs rv32i extension
 .*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen0h', needs rv32i extension
 .*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
 .*Warning: invalid CSR `hstateen0h', needs rv32i extension
 .*Warning: invalid CSR `hstateen0h', needs `h' extension
-.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen0h', needs rv32i extension
 .*Warning: invalid CSR `hstateen0h', needs `h' extension
-.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen1h', needs rv32i extension
 .*Warning: invalid CSR `hstateen1h', needs `h' extension
-.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen1h', needs rv32i extension
 .*Warning: invalid CSR `hstateen1h', needs `h' extension
-.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen2h', needs rv32i extension
 .*Warning: invalid CSR `hstateen2h', needs `h' extension
-.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen2h', needs rv32i extension
 .*Warning: invalid CSR `hstateen2h', needs `h' extension
-.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `h' extension
-.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `h' extension
-.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h', needs `ssstateen' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: read-only CSR is written `csrw scountovf,a1'
 
 .*Warning: invalid CSR `mstateen2', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen3', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen3', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `ssstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `ssstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `ssstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `ssstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `ssstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `ssstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `ssstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen0', needs `h' extension
-.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen0', needs `h' extension
-.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen1', needs `h' extension
-.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen1', needs `h' extension
-.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen2', needs `h' extension
-.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen2', needs `h' extension
-.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen3', needs `h' extension
-.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen3', needs `h' extension
-.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3', needs `ssstateen' extension
 .*Warning: invalid CSR `mstateen0h', needs rv32i extension
 .*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen0h', needs rv32i extension
 .*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
 .*Warning: invalid CSR `hstateen0h', needs rv32i extension
 .*Warning: invalid CSR `hstateen0h', needs `h' extension
-.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen0h', needs rv32i extension
 .*Warning: invalid CSR `hstateen0h', needs `h' extension
-.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen1h', needs rv32i extension
 .*Warning: invalid CSR `hstateen1h', needs `h' extension
-.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen1h', needs rv32i extension
 .*Warning: invalid CSR `hstateen1h', needs `h' extension
-.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen2h', needs rv32i extension
 .*Warning: invalid CSR `hstateen2h', needs `h' extension
-.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen2h', needs rv32i extension
 .*Warning: invalid CSR `hstateen2h', needs `h' extension
-.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `h' extension
-.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `h' extension
-.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h', needs `ssstateen' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: read-only CSR is written `csrw scountovf,a1'
 
 .*Warning: invalid CSR `mstateen2', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen3', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen3', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `ssstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `ssstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `ssstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `ssstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `ssstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `ssstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `ssstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen0', needs `h' extension
-.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen0', needs `h' extension
-.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen1', needs `h' extension
-.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen1', needs `h' extension
-.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen2', needs `h' extension
-.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen2', needs `h' extension
-.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen3', needs `h' extension
-.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen3', needs `h' extension
-.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3', needs `ssstateen' extension
 .*Warning: invalid CSR `mstateen0h', needs rv32i extension
 .*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen0h', needs rv32i extension
 .*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
 .*Warning: invalid CSR `hstateen0h', needs rv32i extension
 .*Warning: invalid CSR `hstateen0h', needs `h' extension
-.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen0h', needs rv32i extension
 .*Warning: invalid CSR `hstateen0h', needs `h' extension
-.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen1h', needs rv32i extension
 .*Warning: invalid CSR `hstateen1h', needs `h' extension
-.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen1h', needs rv32i extension
 .*Warning: invalid CSR `hstateen1h', needs `h' extension
-.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen2h', needs rv32i extension
 .*Warning: invalid CSR `hstateen2h', needs `h' extension
-.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen2h', needs rv32i extension
 .*Warning: invalid CSR `hstateen2h', needs `h' extension
-.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `h' extension
-.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `h' extension
-.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h', needs `ssstateen' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: read-only CSR is written `csrw scountovf,a1'
 
 .*Warning: invalid CSR `mstateen2', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen3', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen3', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
-.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `ssstateen' extension
+.*Warning: invalid CSR `sstateen0', needs `ssstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `ssstateen' extension
+.*Warning: invalid CSR `sstateen1', needs `ssstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `ssstateen' extension
+.*Warning: invalid CSR `sstateen2', needs `ssstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `ssstateen' extension
+.*Warning: invalid CSR `sstateen3', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen0', needs `h' extension
-.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen0', needs `h' extension
-.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen1', needs `h' extension
-.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen1', needs `h' extension
-.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen2', needs `h' extension
-.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen2', needs `h' extension
-.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen3', needs `h' extension
-.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen3', needs `h' extension
-.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3', needs `ssstateen' extension
 .*Warning: invalid CSR `mstateen0h', needs rv32i extension
 .*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen0h', needs rv32i extension
 .*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
 .*Warning: invalid CSR `hstateen0h', needs rv32i extension
 .*Warning: invalid CSR `hstateen0h', needs `h' extension
-.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen0h', needs rv32i extension
 .*Warning: invalid CSR `hstateen0h', needs `h' extension
-.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen0h', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen1h', needs rv32i extension
 .*Warning: invalid CSR `hstateen1h', needs `h' extension
-.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen1h', needs rv32i extension
 .*Warning: invalid CSR `hstateen1h', needs `h' extension
-.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen1h', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen2h', needs rv32i extension
 .*Warning: invalid CSR `hstateen2h', needs `h' extension
-.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen2h', needs rv32i extension
 .*Warning: invalid CSR `hstateen2h', needs `h' extension
-.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen2h', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `h' extension
-.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h', needs `ssstateen' extension
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `h' extension
-.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `hstateen3h', needs `ssstateen' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: read-only CSR is written `csrw scountovf,a1'
 
        csr vsip
        csr vsatp
 
-       # Smstateen extension
+       # Smstateen/Ssstateen extensions
        csr mstateen0
        csr mstateen1
        csr mstateen2
 
--- /dev/null
+#as: -march=rv32ih_smstateen -mcsr-check -mpriv-spec=1.12
+#source: ssstateen-csr.s
+#objdump: -dr
+
+.*:[   ]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[      ]+[0-9a-f]+:[   ]+10c02573[     ]+csrr[         ]+a0,sstateen0
+[      ]+[0-9a-f]+:[   ]+10d02573[     ]+csrr[         ]+a0,sstateen1
+[      ]+[0-9a-f]+:[   ]+10e02573[     ]+csrr[         ]+a0,sstateen2
+[      ]+[0-9a-f]+:[   ]+10f02573[     ]+csrr[         ]+a0,sstateen3
+[      ]+[0-9a-f]+:[   ]+60c02573[     ]+csrr[         ]+a0,hstateen0
+[      ]+[0-9a-f]+:[   ]+60d02573[     ]+csrr[         ]+a0,hstateen1
+[      ]+[0-9a-f]+:[   ]+60e02573[     ]+csrr[         ]+a0,hstateen2
+[      ]+[0-9a-f]+:[   ]+60f02573[     ]+csrr[         ]+a0,hstateen3
+[      ]+[0-9a-f]+:[   ]+61c02573[     ]+csrr[         ]+a0,hstateen0h
+[      ]+[0-9a-f]+:[   ]+61d02573[     ]+csrr[         ]+a0,hstateen1h
+[      ]+[0-9a-f]+:[   ]+61e02573[     ]+csrr[         ]+a0,hstateen2h
+[      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
 
--- /dev/null
+#as: -march=rv32ih_ssstateen -mcsr-check -mpriv-spec=1.12
+#source: ssstateen-csr.s
+#objdump: -dr
+
+.*:[   ]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[      ]+[0-9a-f]+:[   ]+10c02573[     ]+csrr[         ]+a0,sstateen0
+[      ]+[0-9a-f]+:[   ]+10d02573[     ]+csrr[         ]+a0,sstateen1
+[      ]+[0-9a-f]+:[   ]+10e02573[     ]+csrr[         ]+a0,sstateen2
+[      ]+[0-9a-f]+:[   ]+10f02573[     ]+csrr[         ]+a0,sstateen3
+[      ]+[0-9a-f]+:[   ]+60c02573[     ]+csrr[         ]+a0,hstateen0
+[      ]+[0-9a-f]+:[   ]+60d02573[     ]+csrr[         ]+a0,hstateen1
+[      ]+[0-9a-f]+:[   ]+60e02573[     ]+csrr[         ]+a0,hstateen2
+[      ]+[0-9a-f]+:[   ]+60f02573[     ]+csrr[         ]+a0,hstateen3
+[      ]+[0-9a-f]+:[   ]+61c02573[     ]+csrr[         ]+a0,hstateen0h
+[      ]+[0-9a-f]+:[   ]+61d02573[     ]+csrr[         ]+a0,hstateen1h
+[      ]+[0-9a-f]+:[   ]+61e02573[     ]+csrr[         ]+a0,hstateen2h
+[      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
 
--- /dev/null
+target:
+       csrr    a0, sstateen0
+       csrr    a0, sstateen1
+       csrr    a0, sstateen2
+       csrr    a0, sstateen3
+       csrr    a0, hstateen0
+       csrr    a0, hstateen1
+       csrr    a0, hstateen2
+       csrr    a0, hstateen3
+       csrr    a0, hstateen0h
+       csrr    a0, hstateen1h
+       csrr    a0, hstateen2h
+       csrr    a0, hstateen3h
 
 DECLARE_CSR(vstval, CSR_VSTVAL, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(vsip, CSR_VSIP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(vsatp, CSR_VSATP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
-/* Smstateen extension */
+/* Smstateen/Ssstateen extensions.  */
 DECLARE_CSR(mstateen0, CSR_MSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(mstateen1, CSR_MSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(mstateen2, CSR_MSTATEEN2, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(mstateen3, CSR_MSTATEEN3, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
-DECLARE_CSR(sstateen0, CSR_SSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
-DECLARE_CSR(sstateen1, CSR_SSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
-DECLARE_CSR(sstateen2, CSR_SSTATEEN2, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
-DECLARE_CSR(sstateen3, CSR_SSTATEEN3, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
-DECLARE_CSR(hstateen0, CSR_HSTATEEN0, CSR_CLASS_SMSTATEEN_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
-DECLARE_CSR(hstateen1, CSR_HSTATEEN1, CSR_CLASS_SMSTATEEN_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
-DECLARE_CSR(hstateen2, CSR_HSTATEEN2, CSR_CLASS_SMSTATEEN_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
-DECLARE_CSR(hstateen3, CSR_HSTATEEN3, CSR_CLASS_SMSTATEEN_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(sstateen0, CSR_SSTATEEN0, CSR_CLASS_SSSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(sstateen1, CSR_SSTATEEN1, CSR_CLASS_SSSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(sstateen2, CSR_SSTATEEN2, CSR_CLASS_SSSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(sstateen3, CSR_SSTATEEN3, CSR_CLASS_SSSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hstateen0, CSR_HSTATEEN0, CSR_CLASS_SSSTATEEN_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hstateen1, CSR_HSTATEEN1, CSR_CLASS_SSSTATEEN_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hstateen2, CSR_HSTATEEN2, CSR_CLASS_SSSTATEEN_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hstateen3, CSR_HSTATEEN3, CSR_CLASS_SSSTATEEN_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(mstateen0h, CSR_MSTATEEN0H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(mstateen1h, CSR_MSTATEEN1H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(mstateen2h, CSR_MSTATEEN2H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(mstateen3h, CSR_MSTATEEN3H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
-DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
-DECLARE_CSR(hstateen1h, CSR_HSTATEEN1H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
-DECLARE_CSR(hstateen2h, CSR_HSTATEEN2H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
-DECLARE_CSR(hstateen3h, CSR_HSTATEEN3H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H, CSR_CLASS_SSSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hstateen1h, CSR_HSTATEEN1H, CSR_CLASS_SSSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hstateen2h, CSR_HSTATEEN2H, CSR_CLASS_SSSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hstateen3h, CSR_HSTATEEN3H, CSR_CLASS_SSSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 /* Sscofpmf extension */
 DECLARE_CSR(scountovf, CSR_SCOUNTOVF, CSR_CLASS_SSCOFPMF, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(mhpmevent3h, CSR_MHPMEVENT3H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)