< prev index next >

src/jdk.incubator.vector/share/classes/jdk/incubator/vector/AbstractMask.java

Print this page




 108         for (boolean i : bits) {
 109             if (i) return true;
 110         }
 111         return false;
 112     }
 113 
 114     /*package-private*/
 115     static boolean allTrueHelper(boolean[] bits) {
 116         for (boolean i : bits) {
 117             if (!i) return false;
 118         }
 119         return true;
 120     }
 121 
 122     // @@@ This is a bad implementation -- makes lambdas capturing -- fix this
 123     @SuppressWarnings("unchecked")
 124     static <E> VectorMask<E> trueMask(VectorSpecies<E> species) {
 125         Class<?> eType = species.elementType();
 126 
 127         if (eType == byte.class) {
 128             if (species.boxType() == ByteMaxVector.class)
 129                 return (VectorMask<E>) ByteMaxVector.ByteMaxMask.TRUE_MASK;
 130             switch (species.bitSize()) {
 131                 case 64: return (VectorMask<E>) Byte64Vector.Byte64Mask.TRUE_MASK;
 132                 case 128: return (VectorMask<E>) Byte128Vector.Byte128Mask.TRUE_MASK;
 133                 case 256: return (VectorMask<E>) Byte256Vector.Byte256Mask.TRUE_MASK;
 134                 case 512: return (VectorMask<E>) Byte512Vector.Byte512Mask.TRUE_MASK;
 135                 default: throw new IllegalArgumentException(Integer.toString(species.bitSize()));
 136             }
 137         } else if (eType == short.class) {
 138             if (species.boxType() == ShortMaxVector.class)
 139                 return (VectorMask<E>) ShortMaxVector.ShortMaxMask.TRUE_MASK;
 140             switch (species.bitSize()) {
 141                 case 64: return (VectorMask<E>) Short64Vector.Short64Mask.TRUE_MASK;
 142                 case 128: return (VectorMask<E>) Short128Vector.Short128Mask.TRUE_MASK;
 143                 case 256: return (VectorMask<E>) Short256Vector.Short256Mask.TRUE_MASK;
 144                 case 512: return (VectorMask<E>) Short512Vector.Short512Mask.TRUE_MASK;
 145                 default: throw new IllegalArgumentException(Integer.toString(species.bitSize()));
 146             }
 147         } else if (eType == int.class) {
 148             if (species.boxType() == IntMaxVector.class)
 149                 return (VectorMask<E>) IntMaxVector.IntMaxMask.TRUE_MASK;
 150             switch (species.bitSize()) {
 151                 case 64: return (VectorMask<E>) Int64Vector.Int64Mask.TRUE_MASK;
 152                 case 128: return (VectorMask<E>) Int128Vector.Int128Mask.TRUE_MASK;
 153                 case 256: return (VectorMask<E>) Int256Vector.Int256Mask.TRUE_MASK;
 154                 case 512: return (VectorMask<E>) Int512Vector.Int512Mask.TRUE_MASK;
 155                 default: throw new IllegalArgumentException(Integer.toString(species.bitSize()));
 156             }
 157         } else if (eType == long.class) {
 158             if (species.boxType() == LongMaxVector.class)
 159                 return (VectorMask<E>) LongMaxVector.LongMaxMask.TRUE_MASK;
 160             switch (species.bitSize()) {
 161                 case 64: return (VectorMask<E>) Long64Vector.Long64Mask.TRUE_MASK;
 162                 case 128: return (VectorMask<E>) Long128Vector.Long128Mask.TRUE_MASK;
 163                 case 256: return (VectorMask<E>) Long256Vector.Long256Mask.TRUE_MASK;
 164                 case 512: return (VectorMask<E>) Long512Vector.Long512Mask.TRUE_MASK;
 165                 default: throw new IllegalArgumentException(Integer.toString(species.bitSize()));
 166             }
 167         } else if (eType == float.class) {
 168             if (species.boxType() == FloatMaxVector.class)
 169                 return (VectorMask<E>) FloatMaxVector.FloatMaxMask.TRUE_MASK;
 170             switch (species.bitSize()) {
 171                 case 64: return (VectorMask<E>) Float64Vector.Float64Mask.TRUE_MASK;
 172                 case 128: return (VectorMask<E>) Float128Vector.Float128Mask.TRUE_MASK;
 173                 case 256: return (VectorMask<E>) Float256Vector.Float256Mask.TRUE_MASK;
 174                 case 512: return (VectorMask<E>) Float512Vector.Float512Mask.TRUE_MASK;
 175                 default: throw new IllegalArgumentException(Integer.toString(species.bitSize()));
 176             }
 177         } else if (eType == double.class) {
 178             if (species.boxType() == DoubleMaxVector.class)
 179                 return (VectorMask<E>) DoubleMaxVector.DoubleMaxMask.TRUE_MASK;
 180             switch (species.bitSize()) {
 181                 case 64: return (VectorMask<E>) Double64Vector.Double64Mask.TRUE_MASK;
 182                 case 128: return (VectorMask<E>) Double128Vector.Double128Mask.TRUE_MASK;
 183                 case 256: return (VectorMask<E>) Double256Vector.Double256Mask.TRUE_MASK;
 184                 case 512: return (VectorMask<E>) Double512Vector.Double512Mask.TRUE_MASK;
 185                 default: throw new IllegalArgumentException(Integer.toString(species.bitSize()));
 186             }
 187         } else {
 188             throw new IllegalArgumentException("Bad element type of species");
 189         }
 190     }
 191 
 192     // @@@ This is a bad implementation -- makes lambdas capturing -- fix this
 193     @SuppressWarnings("unchecked")
 194     static <E> VectorMask<E> falseMask(VectorSpecies<E> species) {
 195         Class<?> eType = species.elementType();
 196 
 197         if (eType == byte.class) {
 198             if (species.boxType() == ByteMaxVector.class)
 199                 return (VectorMask<E>) ByteMaxVector.ByteMaxMask.FALSE_MASK;
 200             switch (species.bitSize()) {
 201                 case 64: return (VectorMask<E>) Byte64Vector.Byte64Mask.FALSE_MASK;
 202                 case 128: return (VectorMask<E>) Byte128Vector.Byte128Mask.FALSE_MASK;
 203                 case 256: return (VectorMask<E>) Byte256Vector.Byte256Mask.FALSE_MASK;
 204                 case 512: return (VectorMask<E>) Byte512Vector.Byte512Mask.FALSE_MASK;
 205                 default: throw new IllegalArgumentException(Integer.toString(species.bitSize()));
 206             }
 207         } else if (eType == short.class) {
 208             if (species.boxType() == ShortMaxVector.class)
 209                 return (VectorMask<E>) ShortMaxVector.ShortMaxMask.FALSE_MASK;
 210             switch (species.bitSize()) {
 211                 case 64: return (VectorMask<E>) Short64Vector.Short64Mask.FALSE_MASK;
 212                 case 128: return (VectorMask<E>) Short128Vector.Short128Mask.FALSE_MASK;
 213                 case 256: return (VectorMask<E>) Short256Vector.Short256Mask.FALSE_MASK;
 214                 case 512: return (VectorMask<E>) Short512Vector.Short512Mask.FALSE_MASK;
 215                 default: throw new IllegalArgumentException(Integer.toString(species.bitSize()));
 216             }
 217         } else if (eType == int.class) {
 218             if (species.boxType() == IntMaxVector.class)
 219                 return (VectorMask<E>) IntMaxVector.IntMaxMask.FALSE_MASK;
 220             switch (species.bitSize()) {
 221                 case 64: return (VectorMask<E>) Int64Vector.Int64Mask.FALSE_MASK;
 222                 case 128: return (VectorMask<E>) Int128Vector.Int128Mask.FALSE_MASK;
 223                 case 256: return (VectorMask<E>) Int256Vector.Int256Mask.FALSE_MASK;
 224                 case 512: return (VectorMask<E>) Int512Vector.Int512Mask.FALSE_MASK;
 225                 default: throw new IllegalArgumentException(Integer.toString(species.bitSize()));
 226             }
 227         } else if (eType == long.class) {
 228             if (species.boxType() == LongMaxVector.class)
 229                 return (VectorMask<E>) LongMaxVector.LongMaxMask.FALSE_MASK;
 230             switch (species.bitSize()) {
 231                 case 64: return (VectorMask<E>) Long64Vector.Long64Mask.FALSE_MASK;
 232                 case 128: return (VectorMask<E>) Long128Vector.Long128Mask.FALSE_MASK;
 233                 case 256: return (VectorMask<E>) Long256Vector.Long256Mask.FALSE_MASK;
 234                 case 512: return (VectorMask<E>) Long512Vector.Long512Mask.FALSE_MASK;
 235                 default: throw new IllegalArgumentException(Integer.toString(species.bitSize()));
 236             }
 237         } else if (eType == float.class) {
 238             if (species.boxType() == FloatMaxVector.class)
 239                 return (VectorMask<E>) FloatMaxVector.FloatMaxMask.FALSE_MASK;
 240             switch (species.bitSize()) {
 241                 case 64: return (VectorMask<E>) Float64Vector.Float64Mask.FALSE_MASK;
 242                 case 128: return (VectorMask<E>) Float128Vector.Float128Mask.FALSE_MASK;
 243                 case 256: return (VectorMask<E>) Float256Vector.Float256Mask.FALSE_MASK;
 244                 case 512: return (VectorMask<E>) Float512Vector.Float512Mask.FALSE_MASK;
 245                 default: throw new IllegalArgumentException(Integer.toString(species.bitSize()));
 246             }
 247         } else if (eType == double.class) {
 248             if (species.boxType() == DoubleMaxVector.class)
 249                 return (VectorMask<E>) DoubleMaxVector.DoubleMaxMask.FALSE_MASK;
 250             switch (species.bitSize()) {
 251                 case 64: return (VectorMask<E>) Double64Vector.Double64Mask.FALSE_MASK;
 252                 case 128: return (VectorMask<E>) Double128Vector.Double128Mask.FALSE_MASK;
 253                 case 256: return (VectorMask<E>) Double256Vector.Double256Mask.FALSE_MASK;
 254                 case 512: return (VectorMask<E>) Double512Vector.Double512Mask.FALSE_MASK;
 255                 default: throw new IllegalArgumentException(Integer.toString(species.bitSize()));
 256             }
 257         } else {
 258             throw new IllegalArgumentException("Bad element type of species");
 259         }
 260     }
 261 }


 108         for (boolean i : bits) {
 109             if (i) return true;
 110         }
 111         return false;
 112     }
 113 
 114     /*package-private*/
 115     static boolean allTrueHelper(boolean[] bits) {
 116         for (boolean i : bits) {
 117             if (!i) return false;
 118         }
 119         return true;
 120     }
 121 
 122     // @@@ This is a bad implementation -- makes lambdas capturing -- fix this
 123     @SuppressWarnings("unchecked")
 124     static <E> VectorMask<E> trueMask(VectorSpecies<E> species) {
 125         Class<?> eType = species.elementType();
 126 
 127         if (eType == byte.class) {
 128             if (species.vectorType() == ByteMaxVector.class)
 129                 return (VectorMask<E>) ByteMaxVector.ByteMaxMask.TRUE_MASK;
 130             switch (species.bitSize()) {
 131                 case 64: return (VectorMask<E>) Byte64Vector.Byte64Mask.TRUE_MASK;
 132                 case 128: return (VectorMask<E>) Byte128Vector.Byte128Mask.TRUE_MASK;
 133                 case 256: return (VectorMask<E>) Byte256Vector.Byte256Mask.TRUE_MASK;
 134                 case 512: return (VectorMask<E>) Byte512Vector.Byte512Mask.TRUE_MASK;
 135                 default: throw new IllegalArgumentException(Integer.toString(species.bitSize()));
 136             }
 137         } else if (eType == short.class) {
 138             if (species.vectorType() == ShortMaxVector.class)
 139                 return (VectorMask<E>) ShortMaxVector.ShortMaxMask.TRUE_MASK;
 140             switch (species.bitSize()) {
 141                 case 64: return (VectorMask<E>) Short64Vector.Short64Mask.TRUE_MASK;
 142                 case 128: return (VectorMask<E>) Short128Vector.Short128Mask.TRUE_MASK;
 143                 case 256: return (VectorMask<E>) Short256Vector.Short256Mask.TRUE_MASK;
 144                 case 512: return (VectorMask<E>) Short512Vector.Short512Mask.TRUE_MASK;
 145                 default: throw new IllegalArgumentException(Integer.toString(species.bitSize()));
 146             }
 147         } else if (eType == int.class) {
 148             if (species.vectorType() == IntMaxVector.class)
 149                 return (VectorMask<E>) IntMaxVector.IntMaxMask.TRUE_MASK;
 150             switch (species.bitSize()) {
 151                 case 64: return (VectorMask<E>) Int64Vector.Int64Mask.TRUE_MASK;
 152                 case 128: return (VectorMask<E>) Int128Vector.Int128Mask.TRUE_MASK;
 153                 case 256: return (VectorMask<E>) Int256Vector.Int256Mask.TRUE_MASK;
 154                 case 512: return (VectorMask<E>) Int512Vector.Int512Mask.TRUE_MASK;
 155                 default: throw new IllegalArgumentException(Integer.toString(species.bitSize()));
 156             }
 157         } else if (eType == long.class) {
 158             if (species.vectorType() == LongMaxVector.class)
 159                 return (VectorMask<E>) LongMaxVector.LongMaxMask.TRUE_MASK;
 160             switch (species.bitSize()) {
 161                 case 64: return (VectorMask<E>) Long64Vector.Long64Mask.TRUE_MASK;
 162                 case 128: return (VectorMask<E>) Long128Vector.Long128Mask.TRUE_MASK;
 163                 case 256: return (VectorMask<E>) Long256Vector.Long256Mask.TRUE_MASK;
 164                 case 512: return (VectorMask<E>) Long512Vector.Long512Mask.TRUE_MASK;
 165                 default: throw new IllegalArgumentException(Integer.toString(species.bitSize()));
 166             }
 167         } else if (eType == float.class) {
 168             if (species.vectorType() == FloatMaxVector.class)
 169                 return (VectorMask<E>) FloatMaxVector.FloatMaxMask.TRUE_MASK;
 170             switch (species.bitSize()) {
 171                 case 64: return (VectorMask<E>) Float64Vector.Float64Mask.TRUE_MASK;
 172                 case 128: return (VectorMask<E>) Float128Vector.Float128Mask.TRUE_MASK;
 173                 case 256: return (VectorMask<E>) Float256Vector.Float256Mask.TRUE_MASK;
 174                 case 512: return (VectorMask<E>) Float512Vector.Float512Mask.TRUE_MASK;
 175                 default: throw new IllegalArgumentException(Integer.toString(species.bitSize()));
 176             }
 177         } else if (eType == double.class) {
 178             if (species.vectorType() == DoubleMaxVector.class)
 179                 return (VectorMask<E>) DoubleMaxVector.DoubleMaxMask.TRUE_MASK;
 180             switch (species.bitSize()) {
 181                 case 64: return (VectorMask<E>) Double64Vector.Double64Mask.TRUE_MASK;
 182                 case 128: return (VectorMask<E>) Double128Vector.Double128Mask.TRUE_MASK;
 183                 case 256: return (VectorMask<E>) Double256Vector.Double256Mask.TRUE_MASK;
 184                 case 512: return (VectorMask<E>) Double512Vector.Double512Mask.TRUE_MASK;
 185                 default: throw new IllegalArgumentException(Integer.toString(species.bitSize()));
 186             }
 187         } else {
 188             throw new IllegalArgumentException("Bad element type of species");
 189         }
 190     }
 191 
 192     // @@@ This is a bad implementation -- makes lambdas capturing -- fix this
 193     @SuppressWarnings("unchecked")
 194     static <E> VectorMask<E> falseMask(VectorSpecies<E> species) {
 195         Class<?> eType = species.elementType();
 196 
 197         if (eType == byte.class) {
 198             if (species.vectorType() == ByteMaxVector.class)
 199                 return (VectorMask<E>) ByteMaxVector.ByteMaxMask.FALSE_MASK;
 200             switch (species.bitSize()) {
 201                 case 64: return (VectorMask<E>) Byte64Vector.Byte64Mask.FALSE_MASK;
 202                 case 128: return (VectorMask<E>) Byte128Vector.Byte128Mask.FALSE_MASK;
 203                 case 256: return (VectorMask<E>) Byte256Vector.Byte256Mask.FALSE_MASK;
 204                 case 512: return (VectorMask<E>) Byte512Vector.Byte512Mask.FALSE_MASK;
 205                 default: throw new IllegalArgumentException(Integer.toString(species.bitSize()));
 206             }
 207         } else if (eType == short.class) {
 208             if (species.vectorType() == ShortMaxVector.class)
 209                 return (VectorMask<E>) ShortMaxVector.ShortMaxMask.FALSE_MASK;
 210             switch (species.bitSize()) {
 211                 case 64: return (VectorMask<E>) Short64Vector.Short64Mask.FALSE_MASK;
 212                 case 128: return (VectorMask<E>) Short128Vector.Short128Mask.FALSE_MASK;
 213                 case 256: return (VectorMask<E>) Short256Vector.Short256Mask.FALSE_MASK;
 214                 case 512: return (VectorMask<E>) Short512Vector.Short512Mask.FALSE_MASK;
 215                 default: throw new IllegalArgumentException(Integer.toString(species.bitSize()));
 216             }
 217         } else if (eType == int.class) {
 218             if (species.vectorType() == IntMaxVector.class)
 219                 return (VectorMask<E>) IntMaxVector.IntMaxMask.FALSE_MASK;
 220             switch (species.bitSize()) {
 221                 case 64: return (VectorMask<E>) Int64Vector.Int64Mask.FALSE_MASK;
 222                 case 128: return (VectorMask<E>) Int128Vector.Int128Mask.FALSE_MASK;
 223                 case 256: return (VectorMask<E>) Int256Vector.Int256Mask.FALSE_MASK;
 224                 case 512: return (VectorMask<E>) Int512Vector.Int512Mask.FALSE_MASK;
 225                 default: throw new IllegalArgumentException(Integer.toString(species.bitSize()));
 226             }
 227         } else if (eType == long.class) {
 228             if (species.vectorType() == LongMaxVector.class)
 229                 return (VectorMask<E>) LongMaxVector.LongMaxMask.FALSE_MASK;
 230             switch (species.bitSize()) {
 231                 case 64: return (VectorMask<E>) Long64Vector.Long64Mask.FALSE_MASK;
 232                 case 128: return (VectorMask<E>) Long128Vector.Long128Mask.FALSE_MASK;
 233                 case 256: return (VectorMask<E>) Long256Vector.Long256Mask.FALSE_MASK;
 234                 case 512: return (VectorMask<E>) Long512Vector.Long512Mask.FALSE_MASK;
 235                 default: throw new IllegalArgumentException(Integer.toString(species.bitSize()));
 236             }
 237         } else if (eType == float.class) {
 238             if (species.vectorType() == FloatMaxVector.class)
 239                 return (VectorMask<E>) FloatMaxVector.FloatMaxMask.FALSE_MASK;
 240             switch (species.bitSize()) {
 241                 case 64: return (VectorMask<E>) Float64Vector.Float64Mask.FALSE_MASK;
 242                 case 128: return (VectorMask<E>) Float128Vector.Float128Mask.FALSE_MASK;
 243                 case 256: return (VectorMask<E>) Float256Vector.Float256Mask.FALSE_MASK;
 244                 case 512: return (VectorMask<E>) Float512Vector.Float512Mask.FALSE_MASK;
 245                 default: throw new IllegalArgumentException(Integer.toString(species.bitSize()));
 246             }
 247         } else if (eType == double.class) {
 248             if (species.vectorType() == DoubleMaxVector.class)
 249                 return (VectorMask<E>) DoubleMaxVector.DoubleMaxMask.FALSE_MASK;
 250             switch (species.bitSize()) {
 251                 case 64: return (VectorMask<E>) Double64Vector.Double64Mask.FALSE_MASK;
 252                 case 128: return (VectorMask<E>) Double128Vector.Double128Mask.FALSE_MASK;
 253                 case 256: return (VectorMask<E>) Double256Vector.Double256Mask.FALSE_MASK;
 254                 case 512: return (VectorMask<E>) Double512Vector.Double512Mask.FALSE_MASK;
 255                 default: throw new IllegalArgumentException(Integer.toString(species.bitSize()));
 256             }
 257         } else {
 258             throw new IllegalArgumentException("Bad element type of species");
 259         }
 260     }
 261 }
< prev index next >