static JitUnOp unOp(PcodeOp op, JitOutVar out, JitVal u) {
		return switch (op.getOpcode()) {
			case PcodeOp.COPY -> new JitCopyOp(op, out, u);

			case PcodeOp.INT_ZEXT -> new JitIntZExtOp(op, out, u);
			case PcodeOp.INT_SEXT -> new JitIntSExtOp(op, out, u);
			case PcodeOp.INT_2COMP -> new JitInt2CompOp(op, out, u);
			case PcodeOp.INT_NEGATE -> new JitIntNegateOp(op, out, u);

			case PcodeOp.POPCOUNT -> new JitPopCountOp(op, out, u);
			case PcodeOp.LZCOUNT -> new JitLzCountOp(op, out, u);

			case PcodeOp.BOOL_NEGATE -> new JitBoolNegateOp(op, out, u);

			case PcodeOp.FLOAT_NAN -> new JitFloatNaNOp(op, out, u);
			case PcodeOp.FLOAT_NEG -> new JitFloatNegOp(op, out, u);
			case PcodeOp.FLOAT_ABS -> new JitFloatAbsOp(op, out, u);
			case PcodeOp.FLOAT_SQRT -> new JitFloatSqrtOp(op, out, u);

			case PcodeOp.FLOAT_INT2FLOAT -> new JitFloatInt2FloatOp(op, out, u);
			case PcodeOp.FLOAT_FLOAT2FLOAT -> new JitFloatFloat2FloatOp(op, out, u);
			case PcodeOp.FLOAT_TRUNC -> new JitFloatTruncOp(op, out, u);
			case PcodeOp.FLOAT_CEIL -> new JitFloatCeilOp(op, out, u);
			case PcodeOp.FLOAT_FLOOR -> new JitFloatFloorOp(op, out, u);
			case PcodeOp.FLOAT_ROUND -> new JitFloatRoundOp(op, out, u);

			default -> throw new UnsupportedOperationException(
				"Unrecognized un op: " + op.getMnemonic());
		};
	}
Create a use-def node for a unary p-coe op

@param op the p-code op
@param out the (pre-made) output operand use-def node
@param u the input operand use-def node
@return the use-def node
Ghidra/Framework/Emulation/src/main/java/ghidra/pcode/emu/jit/op/JitOp.java