diff --git a/src/arch/arm/isa/formats/sve_2nd_level.isa b/src/arch/arm/isa/formats/sve_2nd_level.isa
index 3c5e01c..ff7e50e 100644
--- a/src/arch/arm/isa/formats/sve_2nd_level.isa
+++ b/src/arch/arm/isa/formats/sve_2nd_level.isa
@@ -118,6 +118,7 @@
                         return new Unknown64(machInst);
                     }
                 }
+                break;
             }
           case 0x3:
             {
@@ -532,6 +533,7 @@
                             return new SveIndexII<int64_t>(machInst,
                                     zd, imm5, imm5b);
                     }
+                    break;
                 }
             case 1:
                 { // INDEX (scalar, immediate)
@@ -552,6 +554,7 @@
                             return new SveIndexRI<int64_t>(machInst,
                                     zd, zn, imm5);
                     }
+                    break;
                 }
             case 2:
                 { // INDEX (immediate, scalar)
@@ -572,6 +575,7 @@
                             return new SveIndexIR<int64_t>(machInst,
                                     zd, imm5, zm);
                     }
+                    break;
                 }
             case 3:
                 { // INDEX (scalars)
diff --git a/src/arch/arm/isa/formats/sve_top_level.isa b/src/arch/arm/isa/formats/sve_top_level.isa
index f4f1ab5..b8e1d46 100644
--- a/src/arch/arm/isa/formats/sve_top_level.isa
+++ b/src/arch/arm/isa/formats/sve_top_level.isa
@@ -128,6 +128,7 @@
                         return decodeSveIntArithUnaryPred(machInst);
                     }
                 }
+                break;
             }
           case 0x1:
             {
@@ -166,6 +167,7 @@
                   case 0x3:
                     return decodeSveElemCount(machInst);
                 }
+                break;
             }
           case 0x2:
             if (bits(machInst, 20)) {
@@ -195,6 +197,7 @@
                   case 0x3:
                     return decodeSveSelVec(machInst);
                 }
+                break;
             }
           case 0x4:
             return decodeSveIntCmpVec(machInst);
@@ -279,6 +282,7 @@
                               case 0x3:
                                   return decodeSveFpAccumReduc(machInst);
                             }
+                            break;
                         }
                       case 0x2:
                         return decodeSveFpArithPred(machInst);
@@ -286,6 +290,7 @@
                         return decodeSveFpUnaryPred(machInst);
                     }
                 }
+                break;
             }
           case 0x3:
             return decodeSveFpFusedMulAdd(machInst);
