Normalize a builder-side QEC operand: must be a ``QuakeValue`` whose MLIR type is ``!cc.measure_handle`` or ``!cc.stdvec<!cc.measure_handle>`` (the value forms produced by ``mz`` / ``mx`` / ``my`` for scalar and ``qvector`` targets).
(self, qv, opName)
| 1240 | return self.__measure(quake.MyOp, target, regName) |
| 1241 | |
| 1242 | def __qecOperandValue(self, qv, opName): |
| 1243 | """Normalize a builder-side QEC operand: must be a |
| 1244 | ``QuakeValue`` whose MLIR type is ``!cc.measure_handle`` or |
| 1245 | ``!cc.stdvec<!cc.measure_handle>`` (the value forms produced by |
| 1246 | ``mz`` / ``mx`` / ``my`` for scalar and ``qvector`` targets).""" |
| 1247 | if not isinstance(qv, QuakeValue): |
| 1248 | emitFatalError( |
| 1249 | f"kernel.{opName} arguments must be QuakeValue " |
| 1250 | f"measurement handles (returned by kernel.mz / mx / my)") |
| 1251 | ty = qv.mlirValue.type |
| 1252 | ok = (cc.MeasureHandleType.isinstance(ty) or |
| 1253 | (cc.StdvecType.isinstance(ty) and cc.MeasureHandleType.isinstance( |
| 1254 | cc.StdvecType.getElementType(ty)))) |
| 1255 | if not ok: |
| 1256 | emitFatalError( |
| 1257 | f"kernel.{opName} arguments must each be a " |
| 1258 | f"cudaq.measure_handle or list[cudaq.measure_handle]") |
| 1259 | return qv.mlirValue |
| 1260 | |
| 1261 | def detector(self, *measurements): |
| 1262 | """Define a detector over one or more measurement results. |
no test coverage detected