static JitType forceUniformSExt(JitType myType, JitType otherType, MethodVisitor mv) {
		JitType myExtType = generateSExt(myType, mv);
		return switch (myExtType) {
			case IntJitType mt -> switch (otherType.ext()) { // Don't extend other, yet
				case IntJitType ot -> mt;
				case LongJitType ot -> generateSExtIntToLong(mv);
				case MpIntJitType ot -> generateIntToMpInt(mt, MpIntJitType.forSize(mt.size()),
					mv);
				default -> throw new AssertionError();
			};
			case LongJitType mt -> switch (otherType.ext()) {
				case IntJitType ot -> mt; // Other operand needs up-conversion
				case LongJitType ot -> mt;
				case MpIntJitType ot -> generateLongToMpInt(mt, MpIntJitType.forSize(mt.size()),
					mv);
				default -> throw new AssertionError();
			};
			case MpIntJitType mt -> mt; // Other may need up-conversion
			default -> throw new AssertionError();
		};
	}
Do the same as {@link #forceUniformZExt(JitType, JitType, MethodVisitor)}, but with signed
values.

@param myType the type of an operand, probably in a binary operator
@param otherType the type of the other operand of a binary operator
@param mv the method visitor
@return the new type of the operand
Ghidra/Framework/Emulation/src/main/java/ghidra/pcode/emu/jit/gen/type/TypeConversions.java