Commit e3bd7ad4 authored by Nguyen, Thien Minh's avatar Nguyen, Thien Minh
Browse files

Added some stubs for new QIR API's



Signed-off-by: default avatarThien Nguyen <nguyentm@ornl.gov>
parent 819f0175
Loading
Loading
Loading
Loading
+183 −1
Original line number Diff line number Diff line
@@ -291,3 +291,185 @@ void __quantum__rt__finalize() {
    ::quantum::submit(qbits.get());
  }
}

void __quantum__qis__exp__body(Array *paulis, double angle, Array *qubits) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__exp__adj(Array *paulis, double angle, Array *qubits) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__exp__ctl(Array *ctls, Array *paulis, double angle,
                              Array *qubits) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__exp__ctladj(Array *ctls, Array *paulis, double angle,
                                 Array *qubits) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__h__body(Qubit *q) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__h__ctl(Array *ctls, Qubit *q) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__r__body(Pauli pauli, double theta, Qubit *q) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__r__adj(Pauli pauli, double theta, Qubit *q) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__r__ctl(Array *ctls, Pauli pauli, double theta, Qubit *q) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__r__ctladj(Array *ctls, Pauli pauli, double theta,
                               Qubit *q) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__s__body(Qubit *q) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__s__adj(Qubit *q) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__s__ctl(Array *ctls, Qubit *q) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__s__ctladj(Array *ctls, Qubit *q) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__t__body(Qubit *q) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__t__adj(Qubit *q) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__t__ctl(Array *ctls, Qubit *q) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__t__ctladj(Array *ctls, Qubit *q) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__x__body(Qubit *q) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__x__adj(Qubit *q) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__x__ctl(Array *ctls, Qubit *q) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__x__ctladj(Array *ctls, Qubit *q) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__y__body(Qubit *q) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__y__adj(Qubit *q) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__y__ctl(Array *ctls, Qubit *q) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__y__ctladj(Array *ctls, Qubit *q) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__z__body(Qubit *q) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__z__adj(Qubit *q) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__z__ctl(Array *ctls, Qubit *q) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__z__ctladj(Array *ctls, Qubit *q) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__rx__body(double theta, Qubit *q) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__ry__body(double theta, Qubit *q) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__rz__body(double theta, Qubit *q) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__qis__cnot__body(Qubit *src, Qubit *tgt) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}

Result *__quantum__qis__measure__body(Array *bases, Array *qubits) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
  return nullptr;
}
double __quantum__qis__intasdouble__body(int32_t intVal) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
  return 0.0;
}
void __quantum__rt__array_update_alias_count(Array *bases, int64_t count) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
bool __quantum__rt__result_equal(Result *res, Result *comp) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
  return false;
}
int64_t __quantum__rt__array_get_size_1d(Array *state1) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
  return 0;
}
int8_t *__quantum__rt__tuple_create(int64_t state) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
  return nullptr;
}
void __quantum__rt__string_update_reference_count(void *str, int64_t count) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__rt__array_update_reference_count(Array *aux, int64_t count) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
void __quantum__rt__result_update_reference_count(Result *, int64_t count) {
  // TODO
  std::cout << "CALL: " << __PRETTY_FUNCTION__ << "\n";
}
+50 −0
Original line number Diff line number Diff line
@@ -19,6 +19,8 @@ extern "C" {
using Qubit = uint64_t;
using Result = uint64_t;
using Array = std::vector<int8_t*>;
// FIXME: QIR use llvm type i2 then zext to int32...
using Pauli = int8_t;
using TupleHeader = int *;
using qreg = xacc::internal_compiler::qreg;

@@ -49,6 +51,54 @@ void __quantum__qis__ry(double x, Qubit* q);
void __quantum__qis__rz(double x, Qubit* q);
void __quantum__qis__u3(double theta, double phi, double lambda, Qubit* q);

// New QIR runtime API:
void __quantum__qis__exp__body(Array* paulis, double angle, Array* qubits);
void __quantum__qis__exp__adj(Array* paulis, double angle, Array* qubits);
void __quantum__qis__exp__ctl(Array* ctls, Array* paulis, double angle, Array* qubits);
void __quantum__qis__exp__ctladj(Array* ctls, Array* paulis, double angle, Array* qubits);
void __quantum__qis__h__body(Qubit* q);
void __quantum__qis__h__ctl(Array* ctls, Qubit* q);
void __quantum__qis__r__body(Pauli pauli, double theta, Qubit* q);
void __quantum__qis__r__adj(Pauli pauli, double theta, Qubit* q);    
void __quantum__qis__r__ctl(Array* ctls, Pauli pauli, double theta, Qubit* q);
void __quantum__qis__r__ctladj(Array* ctls, Pauli pauli, double theta, Qubit* q);
void __quantum__qis__s__body(Qubit* q);
void __quantum__qis__s__adj(Qubit* q);
void __quantum__qis__s__ctl(Array* ctls, Qubit* q);
void __quantum__qis__s__ctladj(Array* ctls, Qubit* q);
void __quantum__qis__t__body(Qubit* q);
void __quantum__qis__t__adj(Qubit* q);
void __quantum__qis__t__ctl(Array* ctls, Qubit* q);
void __quantum__qis__t__ctladj(Array* ctls, Qubit* q);
void __quantum__qis__x__body(Qubit* q);
void __quantum__qis__x__adj(Qubit* q);
void __quantum__qis__x__ctl(Array* ctls, Qubit* q);
void __quantum__qis__x__ctladj(Array* ctls, Qubit* q);
void __quantum__qis__y__body(Qubit* q);
void __quantum__qis__y__adj(Qubit* q);
void __quantum__qis__y__ctl(Array* ctls, Qubit* q);
void __quantum__qis__y__ctladj(Array* ctls, Qubit* q);
void __quantum__qis__z__body(Qubit* q);
void __quantum__qis__z__adj(Qubit* q);
void __quantum__qis__z__ctl(Array* ctls, Qubit* q);
void __quantum__qis__z__ctladj(Array* ctls, Qubit* q);

void __quantum__qis__rx__body(double theta, Qubit* q);
void __quantum__qis__ry__body(double theta, Qubit* q);
void __quantum__qis__rz__body(double theta, Qubit* q);
void __quantum__qis__cnot__body(Qubit* src, Qubit* tgt);

Result* __quantum__qis__measure__body(Array* bases, Array* qubits);
double __quantum__qis__intasdouble__body(int32_t intVal);
void __quantum__rt__array_update_alias_count(Array* bases, int64_t count);
bool __quantum__rt__result_equal(Result* res, Result* comp);
int64_t __quantum__rt__array_get_size_1d(Array* state1);
int8_t* __quantum__rt__tuple_create(int64_t state);
void __quantum__rt__string_update_reference_count(void* str, int64_t count);
void __quantum__rt__array_update_reference_count(Array* aux, int64_t count);
void __quantum__rt__result_update_reference_count(Result *, int64_t count);
// =====================================================

Result* __quantum__qis__mz(Qubit* q);

Array* __quantum__rt__qubit_allocate_array(uint64_t idx);