diff --git a/pennylane_lightning/core/src/simulators/lightning_kokkos/gates/MatrixGateFunctors.hpp b/pennylane_lightning/core/src/simulators/lightning_kokkos/gates/MatrixGateFunctors.hpp index 3d7a7603b..918d9ade1 100644 --- a/pennylane_lightning/core/src/simulators/lightning_kokkos/gates/MatrixGateFunctors.hpp +++ b/pennylane_lightning/core/src/simulators/lightning_kokkos/gates/MatrixGateFunctors.hpp @@ -23,7 +23,8 @@ namespace { using namespace Pennylane::Util; using Kokkos::Experimental::swap; -using Pennylane::LightningKokkos::Util::generateControlBitPatterns; +using Pennylane::LightningKokkos::Util::ControlBitPatterns; +using Pennylane::LightningKokkos::Util::generateBitPatterns; using Pennylane::LightningKokkos::Util::one; using Pennylane::LightningKokkos::Util::parity_2_offset; using Pennylane::LightningKokkos::Util::reverseWires; @@ -140,8 +141,11 @@ template struct NCMultiQubitOpFunctor { num_qubits = num_qubits_; std::tie(parity, rev_wires) = reverseWires(num_qubits_, wires_, controlled_wires_); - indices = generateControlBitPatterns(num_qubits_, controlled_wires_, - controlled_values_, wires_); + std::vector indices_ = + generateBitPatterns(wires_, num_qubits_); + ControlBitPatterns(indices_, num_qubits_, controlled_wires_, + controlled_values_); + indices = vector2view(indices_); } KOKKOS_INLINE_FUNCTION @@ -230,8 +234,11 @@ template struct applyNC1QubitOpFunctor { num_qubits = num_qubits_; std::tie(parity, rev_wires) = reverseWires(num_qubits_, wires_, controlled_wires_); - indices = generateControlBitPatterns(num_qubits_, controlled_wires_, - controlled_values_, wires_); + std::vector indices_ = + generateBitPatterns(wires_, num_qubits_); + ControlBitPatterns(indices_, num_qubits_, controlled_wires_, + controlled_values_); + indices = vector2view(indices_); } KOKKOS_INLINE_FUNCTION @@ -331,8 +338,11 @@ template struct applyNC2QubitOpFunctor { num_qubits = num_qubits_; std::tie(parity, rev_wires) = reverseWires(num_qubits_, wires_, controlled_wires_); - indices = generateControlBitPatterns(num_qubits_, controlled_wires_, - controlled_values_, wires_); + std::vector indices_ = + generateBitPatterns(wires_, num_qubits_); + ControlBitPatterns(indices_, num_qubits_, controlled_wires_, + controlled_values_); + indices = vector2view(indices_); } KOKKOS_INLINE_FUNCTION @@ -443,8 +453,11 @@ template struct applyNC3QubitOpFunctor { num_qubits = num_qubits_; std::tie(parity, rev_wires) = reverseWires(num_qubits_, wires_, controlled_wires_); - indices = generateControlBitPatterns(num_qubits_, controlled_wires_, - controlled_values_, wires_); + std::vector indices_ = + generateBitPatterns(wires_, num_qubits_); + ControlBitPatterns(indices_, num_qubits_, controlled_wires_, + controlled_values_); + indices = vector2view(indices_); } KOKKOS_INLINE_FUNCTION