942 public static boolean isAVX512Register(Register reg) { |
942 public static boolean isAVX512Register(Register reg) { |
943 return reg != null && reg.isValid() && AMD64.XMM.equals(reg.getRegisterCategory()) && reg.encoding > 15; |
943 return reg != null && reg.isValid() && AMD64.XMM.equals(reg.getRegisterCategory()) && reg.encoding > 15; |
944 } |
944 } |
945 |
945 |
946 public final boolean vexPrefix(Register dst, Register nds, Register src, AVXSize size, int pp, int mmmmm, int w, int wEvex, boolean checkAVX) { |
946 public final boolean vexPrefix(Register dst, Register nds, Register src, AVXSize size, int pp, int mmmmm, int w, int wEvex, boolean checkAVX) { |
947 if (isAVX512Register(dst) || isAVX512Register(nds) || isAVX512Register(src)) { |
947 if (isAVX512Register(dst) || isAVX512Register(nds) || isAVX512Register(src) || size == AVXSize.ZMM) { |
948 evexPrefix(dst, Register.None, nds, src, size, pp, mmmmm, wEvex, Z0, B0); |
948 evexPrefix(dst, Register.None, nds, src, size, pp, mmmmm, wEvex, Z0, B0); |
949 return true; |
949 return true; |
950 } |
950 } |
951 emitVEX(getLFlag(size), pp, mmmmm, w, getRXB(dst, src), nds.isValid() ? nds.encoding() : 0, checkAVX); |
951 emitVEX(getLFlag(size), pp, mmmmm, w, getRXB(dst, src), nds.isValid() ? nds.encoding() : 0, checkAVX); |
952 return false; |
952 return false; |
953 } |
953 } |
954 |
954 |
955 public final boolean vexPrefix(Register dst, Register nds, AMD64Address src, AVXSize size, int pp, int mmmmm, int w, int wEvex, boolean checkAVX) { |
955 public final boolean vexPrefix(Register dst, Register nds, AMD64Address src, AVXSize size, int pp, int mmmmm, int w, int wEvex, boolean checkAVX) { |
956 if (isAVX512Register(dst) || isAVX512Register(nds)) { |
956 if (isAVX512Register(dst) || isAVX512Register(nds) || size == AVXSize.ZMM) { |
957 evexPrefix(dst, Register.None, nds, src, size, pp, mmmmm, wEvex, Z0, B0); |
957 evexPrefix(dst, Register.None, nds, src, size, pp, mmmmm, wEvex, Z0, B0); |
958 return true; |
958 return true; |
959 } |
959 } |
960 emitVEX(getLFlag(size), pp, mmmmm, w, getRXB(dst, src), nds.isValid() ? nds.encoding() : 0, checkAVX); |
960 emitVEX(getLFlag(size), pp, mmmmm, w, getRXB(dst, src), nds.isValid() ? nds.encoding() : 0, checkAVX); |
961 return false; |
961 return false; |