Source/Packages

Accelerator.SM86.Control

packages/hardware/architectures/nvidia-sm86/src/Accelerator/SM86/Control.alpha

164 lines43 declarations5.1 KiBSHA-256 dc1a696202aa

Complete file · line 1

Control.alpha

Definition view
1module Accelerator.SM86.Control
2
3import Accelerator.SM86.Types
4
5family SM86Barrier : Type 0
6constructor SM86Barrier0
7constructor SM86Barrier1
8constructor SM86Barrier2
9constructor SM86Barrier3
10constructor SM86Barrier4
11constructor SM86Barrier5
12constructor SM86Barrier6
13constructor SM86BarrierNone
14
15end-family
16
17family SM86WaitBarrier : Type 0
18constructor SM86WaitBarrier0
19constructor SM86WaitBarrier1
20constructor SM86WaitBarrier2
21constructor SM86WaitBarrier3
22constructor SM86WaitBarrier4
23constructor SM86WaitBarrier5
24
25end-family
26
27family SM86YieldMode : Type 0
28constructor SM86Continue
29constructor SM86Yield
30
31end-family
32
33family SM86Control : Type 0
34constructor SM86ControlValue
35field unrestricted sm86ControlStall : Byte
36field unrestricted sm86ControlYield : (family SM86YieldMode)
37field unrestricted sm86ControlWriteBarrier : (family SM86Barrier)
38field unrestricted sm86ControlReadBarrier : (family SM86Barrier)
39field unrestricted sm86ControlWaitMask : Byte
40field unrestricted sm86ControlReuseMask : Byte
41
42end-family
43
44family SM86ControlResult : Type 0
45constructor SM86ControlValidated
46field unrestricted validatedSM86Control : (family SM86Control)
47constructor SM86ControlFailed
48field unrestricted sm86ControlFailureCode : Nat
49
50end-family
51
52def sm86ControlStallCode =
53  (succ zero)
54
55def sm86ControlWaitMaskCode =
56  (succ sm86ControlStallCode)
57
58def sm86ControlReuseMaskCode =
59  (succ sm86ControlWaitMaskCode)
60
61def sm86ControlFailure =
62  (lambda unrestricted code : Nat . (constructor SM86ControlResult SM86ControlFailed code))
63
64def sm86ControlCheck =
65  (lambda unrestricted condition : Nat .
66    (lambda unrestricted code : Nat .
67      (lambda unrestricted success : (pi unrestricted witness : Nat . (family SM86ControlResult)) .
68        (nat-eliminate
69          (lambda unrestricted valid : Nat . (family SM86ControlResult))
70          (sm86ControlFailure code)
71          (lambda unrestricted predecessor : Nat .
72            (lambda unrestricted induction : (family SM86ControlResult) . (success zero)))
73          condition))))
74
75def makeSM86Control =
76  (lambda unrestricted stall : Byte .
77    (lambda unrestricted yieldMode : (family SM86YieldMode) .
78      (lambda unrestricted writeBarrier : (family SM86Barrier) .
79        (lambda unrestricted readBarrier : (family SM86Barrier) .
80          (lambda unrestricted waitMask : Byte .
81            (lambda unrestricted reuseMask : Byte .
82              (sm86ControlCheck
83                (nat-less-than (byte-to-nat stall) (byte-to-nat (byte 16)))
84                sm86ControlStallCode
85                (lambda unrestricted stallWitness : Nat .
86                  (sm86ControlCheck
87                    (nat-less-than (byte-to-nat waitMask) (byte-to-nat (byte 64)))
88                    sm86ControlWaitMaskCode
89                    (lambda unrestricted waitWitness : Nat .
90                      (sm86ControlCheck
91                        (nat-less-than (byte-to-nat reuseMask) (byte-to-nat (byte 16)))
92                        sm86ControlReuseMaskCode
93                        (lambda unrestricted reuseWitness : Nat .
94                          (constructor
95                            SM86ControlResult
96                            SM86ControlValidated
97                            (constructor
98                              SM86Control
99                              SM86ControlValue
100                              stall
101                              yieldMode
102                              writeBarrier
103                              readBarrier
104                              waitMask
105                              reuseMask))))))))))))))
106
107def sm86SafeControl : (family SM86Control) =
108  (constructor
109    SM86Control
110    SM86ControlValue
111    (byte 7)
112    (constructor SM86YieldMode SM86Continue)
113    (constructor SM86Barrier SM86BarrierNone)
114    (constructor SM86Barrier SM86BarrierNone)
115    (byte 0)
116    (byte 0))
117
118def sm86SetBarrierControl =
119  (lambda unrestricted barrier : (family SM86Barrier) .
120    (constructor
121      SM86Control
122      SM86ControlValue
123      (byte 1)
124      (constructor SM86YieldMode SM86Continue)
125      barrier
126      (constructor SM86Barrier SM86BarrierNone)
127      (byte 0)
128      (byte 0)))
129
130def sm86WaitBarrierMask =
131  (lambda unrestricted barrier : (family SM86WaitBarrier) .
132    (eliminate
133      SM86WaitBarrier
134      (lambda unrestricted value : (family SM86WaitBarrier) . Byte)
135      barrier
136      (branch SM86WaitBarrier0 . (byte 1))
137      (branch SM86WaitBarrier1 . (byte 2))
138      (branch SM86WaitBarrier2 . (byte 4))
139      (branch SM86WaitBarrier3 . (byte 8))
140      (branch SM86WaitBarrier4 . (byte 16))
141      (branch SM86WaitBarrier5 . (byte 32))))
142
143def sm86WaitBarrierControl =
144  (lambda unrestricted barrier : (family SM86WaitBarrier) .
145    (constructor
146      SM86Control
147      SM86ControlValue
148      (byte 7)
149      (constructor SM86YieldMode SM86Continue)
150      (constructor SM86Barrier SM86BarrierNone)
151      (constructor SM86Barrier SM86BarrierNone)
152      (sm86WaitBarrierMask barrier)
153      (byte 0)))
154
155def sm86BranchControl : (family SM86Control) =
156  (constructor
157    SM86Control
158    SM86ControlValue
159    (byte 5)
160    (constructor SM86YieldMode SM86Yield)
161    (constructor SM86Barrier SM86BarrierNone)
162    (constructor SM86Barrier SM86BarrierNone)
163    (byte 0)
164    (byte 0))

The compiler supplied declaration spans and resolved links from this source snapshot. This page does not assert that this file belongs to a checked closure.