• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# IR Specification (Updated 10/14/21)
2Stmt
3= Block(stmts_ = [Stmt])
4| Store(buf_ = Buf, indices = [Expr], value_ = Expr, mask_ = Expr)
5| Allocate(buf_ = Buf)
6| Free(buf_ = Buf)
7| PlacementAllocate(buf_ = Buf, buf_to_reuse_ = Buf)
8| Let(var_ = Var, val_ = Expr)
9| Cond(condition_ = Expr, true_stmt_ = Block, false_stmt_ = Block)
10| For(var_ = Var, start_ = Expr, stop_ = Expr, body_ = Block, loopOptions = LoopOptions)
11| AtomicAdd(buf_ = Buf, indices = [Expr], value_ = Expr)
12| SyncThreads()
13| ExternalCall(buf_ = Buf, buf_args_ = [Buf], args_ = [Expr])
14
15Expr
16= Var()
17| Buf(base_handle_ = Var, dims = [Expr], qscale_ = Expr, qzero_ = Expr)
18| Term(variables_ = [Expr], scalar_ = Expr)
19| Polynomial(variables_ = [Term], scalar_ = Expr)
20| MaxTerm(variables_ = [Term], scalar_ = Expr)
21| MinTerm(variables_ = [Term], scalar_ = Expr)
22| Cast(src_value_ = Expr)
23| BitCast(src_value_ = Expr)
24| BinaryOpNode(lhs_ = Expr, rhs_ = Expr)
25| ImmInt/ImmFloat/etc.()
26| Ramp(base_ = Expr, stride_ = Expr)
27| Load(buf_ = Buf, indices = [Expr], mask_ = Expr)
28| Broadcast(value_ = Expr, lanes_ = int)
29| IfThenElse(condition_ = Expr, true_ = Expr, false_ = Expr)
30| Intrinsics(op_type_ = {kSin, kPow, kExp, ...}, params_ = [Expr])
31| CompareSelect(lhs_ = Expr, rhs_ = Expr, ret_val1_ = Expr, ret_val2_ = Expr, compare_op_ = {kEQ, kGT, kGE, ...}, bias_ = {kUnbiased, kLikely, kUnlikely})
32| ReduceOp(body_ = Expr, reduce_args_ = [Var], reducer = Reducer)
33