Commit 48a33bd7 authored by Mccaskey, Alex's avatar Mccaskey, Alex
Browse files

first pass at general mechanics for compute action in qasm3

parent bf169bc6
Loading
Loading
Loading
Loading
+23 −1
Original line number Diff line number Diff line
@@ -73,18 +73,24 @@ def EndCtrlURegion : QuantumOp<"end_ctrl_u_region", []> {
  let arguments = (ins QubitType:$ctrl_qubit);
  let results = (outs);
  let printer = [{  auto op = *this;
  p << "} (ctrl_bit = " << op.ctrl_qubit() << ")";
  p << "} (ctrl_bit = " << op.ctrl_qubit() << ") // END CTRL";
  }];
}

def StartAdjointURegion : QuantumOp<"start_adj_u_region", []> {
  let arguments = (ins);
  let results = (outs);
  let printer = [{
  p << "q.adj_region {";
  }];
}

def EndAdjointURegion : QuantumOp<"end_adj_u_region", []> {
  let arguments = (ins);
  let results = (outs);
  let printer = [{
  p << "} // END ADJOINT";
  }];
}

def StartPowURegion : QuantumOp<"start_pow_u_region", []> {
@@ -97,6 +103,22 @@ def EndPowURegion : QuantumOp<"end_pow_u_region", []> {
  let results = (outs);
}

def ComputeMarkerOp : QuantumOp<"compute_marker", []> {
  let arguments = (ins);
  let results = (outs);
  let printer = [{
  p << "q.mark_compute {";
  }];
}

def ComputeUnMarkerOp : QuantumOp<"compute_unmarker", []> {
  let arguments = (ins);
  let results = (outs);
  let printer = [{
  p << "} // END COMPUTE";
  }];
}

def InstOp : QuantumOp<"inst", [AttrSizedOperandSegments]> {
    let arguments = (ins StrAttr:$name, Variadic<QubitType>:$qubits, Variadic<F64>:$params);
    let results = (outs Optional<ResultType>:$bit);
+1 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@ file(GLOB SRC *.cpp antlr/generated/*.cpp utils/*.cpp
   visitor_handlers/conditional_handler.cpp
   visitor_handlers/subroutine_handler.cpp
   visitor_handlers/alias_handler.cpp
   visitor_handlers/compute_action_handler.cpp
   )

add_library(${LIBRARY_NAME} SHARED ${SRC})
+6 −1

File changed.

Preview size limit exceeded, changes collapsed.

+135 −131
Original line number Diff line number Diff line
@@ -93,136 +93,140 @@ T__91=92
T__92=93
T__93=94
T__94=95
LBRACKET=96
RBRACKET=97
LBRACE=98
RBRACE=99
LPAREN=100
RPAREN=101
COLON=102
SEMICOLON=103
DOT=104
COMMA=105
EQUALS=106
ARROW=107
MINUS=108
EXTERN=109
Constant=110
Whitespace=111
Newline=112
Integer=113
Identifier=114
RealNumber=115
TimingLiteral=116
StringLiteral=117
LineComment=118
BlockComment=119
T__95=96
T__96=97
LBRACKET=98
RBRACKET=99
LBRACE=100
RBRACE=101
LPAREN=102
RPAREN=103
COLON=104
SEMICOLON=105
DOT=106
COMMA=107
EQUALS=108
ARROW=109
MINUS=110
EXTERN=111
Constant=112
Whitespace=113
Newline=114
Integer=115
Identifier=116
RealNumber=117
TimingLiteral=118
StringLiteral=119
LineComment=120
BlockComment=121
'OPENQASM'=1
'include'=2
'QCOR_EXPECT_TRUE'=3
'qubit'=4
'qreg'=5
'bit'=6
'creg'=7
'int'=8
'uint'=9
'float'=10
'angle'=11
'fixed'=12
'bool'=13
'int64_t'=14
'double'=15
'const'=16
'let'=17
'||'=18
'gate'=19
'CX'=20
'U'=21
'gphase'=22
'measure'=23
'barrier'=24
'inv'=25
'pow'=26
'ctrl'=27
'@'=28
'reset'=29
'~'=30
'!'=31
'>'=32
'<'=33
'>='=34
'<='=35
'=='=36
'!='=37
'&&'=38
'|'=39
'^'=40
'&'=41
'<<'=42
'>>'=43
'+'=44
'*'=45
'/'=46
'%'=47
'++'=48
'--'=49
'sin'=50
'cos'=51
'tan'=52
'arctan'=53
'arccos'=54
'arcsin'=55
'exp'=56
'ln'=57
'sqrt'=58
'rotl'=59
'rotr'=60
'popcount'=61
'lengthof'=62
'+='=63
'-='=64
'*='=65
'/='=66
'&='=67
'|='=68
'~='=69
'^='=70
'<<='=71
'>>='=72
'in'=73
'if'=74
'else'=75
'for'=76
'while'=77
'range'=78
'break'=79
'continue'=80
'end'=81
'kernel'=82
'def'=83
'return'=84
'#pragma'=85
'length'=86
'stretch'=87
'boxas'=88
'boxto'=89
'stretchinf'=90
'delay'=91
'rotary'=92
'defcalgrammar'=93
'defcal'=94
'"openpulse"'=95
'['=96
']'=97
'{'=98
'}'=99
'('=100
')'=101
':'=102
';'=103
'.'=104
','=105
'='=106
'->'=107
'-'=108
'extern'=109
'compute'=3
'action'=4
'QCOR_EXPECT_TRUE'=5
'qubit'=6
'qreg'=7
'bit'=8
'creg'=9
'int'=10
'uint'=11
'float'=12
'angle'=13
'fixed'=14
'bool'=15
'int64_t'=16
'double'=17
'const'=18
'let'=19
'||'=20
'gate'=21
'CX'=22
'U'=23
'gphase'=24
'measure'=25
'barrier'=26
'inv'=27
'pow'=28
'ctrl'=29
'@'=30
'reset'=31
'~'=32
'!'=33
'>'=34
'<'=35
'>='=36
'<='=37
'=='=38
'!='=39
'&&'=40
'|'=41
'^'=42
'&'=43
'<<'=44
'>>'=45
'+'=46
'*'=47
'/'=48
'%'=49
'++'=50
'--'=51
'sin'=52
'cos'=53
'tan'=54
'arctan'=55
'arccos'=56
'arcsin'=57
'exp'=58
'ln'=59
'sqrt'=60
'rotl'=61
'rotr'=62
'popcount'=63
'lengthof'=64
'+='=65
'-='=66
'*='=67
'/='=68
'&='=69
'|='=70
'~='=71
'^='=72
'<<='=73
'>>='=74
'in'=75
'if'=76
'else'=77
'for'=78
'while'=79
'range'=80
'break'=81
'continue'=82
'end'=83
'kernel'=84
'def'=85
'return'=86
'#pragma'=87
'length'=88
'stretch'=89
'boxas'=90
'boxto'=91
'stretchinf'=92
'delay'=93
'rotary'=94
'defcalgrammar'=95
'defcal'=96
'"openpulse"'=97
'['=98
']'=99
'{'=100
'}'=101
'('=102
')'=103
':'=104
';'=105
'.'=106
','=107
'='=108
'->'=109
'-'=110
'extern'=111
+3 −0
Original line number Diff line number Diff line
@@ -36,6 +36,9 @@ public:
  virtual void enterStatement(qasm3Parser::StatementContext * /*ctx*/) override { }
  virtual void exitStatement(qasm3Parser::StatementContext * /*ctx*/) override { }

  virtual void enterCompute_action_stmt(qasm3Parser::Compute_action_stmtContext * /*ctx*/) override { }
  virtual void exitCompute_action_stmt(qasm3Parser::Compute_action_stmtContext * /*ctx*/) override { }

  virtual void enterQcor_test_statement(qasm3Parser::Qcor_test_statementContext * /*ctx*/) override { }
  virtual void exitQcor_test_statement(qasm3Parser::Qcor_test_statementContext * /*ctx*/) override { }

Loading