1# MPX instructions
2	.allow_index_reg
3	.text
4start:
5	### bndmk
6	bndmk (%r11), %bnd1
7	bndmk (%rax), %bnd1
8	bndmk (0x399), %bnd1
9	bndmk 0x3(%r9), %bnd1
10	bndmk 0x3(%rax), %bnd1
11	bndmk 0x3(,%r12,1), %bnd1
12	bndmk (%rax,%rcx), %bnd1
13	bndmk 0x3(%r11,%rax,1), %bnd1
14	bndmk 0x3(%rbx,%r9,1), %bnd1
15
16	### bndmov
17	bndmov (%r11), %bnd1
18	bndmov (%rax), %bnd1
19	bndmov (0x399), %bnd1
20	bndmov 0x3(%r9), %bnd2
21	bndmov 0x3(%rax), %bnd2
22	bndmov 0x3(,%r12,1), %bnd0
23	bndmov (%rax,%rdx), %bnd2
24	bndmov 0x3(%r11,%rax,1), %bnd1
25	bndmov 0x3(%rbx,%r9,1), %bnd1
26	bndmov %bnd2, %bnd0
27
28	bndmov %bnd1, (%r11)
29	bndmov %bnd1, (%rax)
30	bndmov %bnd1, (0x399)
31	bndmov %bnd2, 0x3(%r9)
32	bndmov %bnd2, 0x3(%rax)
33	bndmov %bnd0, 0x3(,%r12,1)
34	bndmov %bnd2, (%rax,%rdx)
35	bndmov %bnd1, 0x3(%r11,%rax,1)
36	bndmov %bnd1, 0x3(%rbx,%r9,1)
37	bndmov %bnd0, %bnd2
38
39	### bndcl
40	bndcl (%r11), %bnd1
41	bndcl (%rax), %bnd1
42	bndcl %r11, %bnd1
43	bndcl %rcx, %bnd1
44	bndcl (0x399), %bnd1
45	bndcl 0x3(%r9), %bnd2
46	bndcl 0x3(%rax), %bnd2
47	bndcl 0x3(,%r12,1), %bnd0
48	bndcl (%rax,%rdx), %bnd2
49	bndcl 0x3(%r11,%rax,1), %bnd1
50	bndcl 0x3(%rbx,%r9,1), %bnd1
51
52	### bndcu
53	bndcu (%r11), %bnd1
54	bndcu (%rax), %bnd1
55	bndcu %r11, %bnd1
56	bndcu %rcx, %bnd1
57	bndcu (0x399), %bnd1
58	bndcu 0x3(%r9), %bnd2
59	bndcu 0x3(%rax), %bnd2
60	bndcu 0x3(,%r12,1), %bnd0
61	bndcu (%rax,%rdx), %bnd2
62	bndcu 0x3(%r11,%rax,1), %bnd1
63	bndcu 0x3(%rbx,%r9,1), %bnd1
64
65	### bndcn
66	bndcn (%r11), %bnd1
67	bndcn (%rax), %bnd1
68	bndcn %r11, %bnd1
69	bndcn %rcx, %bnd1
70	bndcn (0x399), %bnd1
71	bndcn 0x3(%r9), %bnd2
72	bndcn 0x3(%rax), %bnd2
73	bndcn 0x3(,%r12,1), %bnd0
74	bndcn (%rax,%rdx), %bnd2
75	bndcn 0x3(%r11,%rax,1), %bnd1
76	bndcn 0x3(%rbx,%r9,1), %bnd1
77
78	### bndstx
79	bndstx %bnd0, 0x3(%rax,%rbx,1)
80	bndstx %bnd2, 3(%rbx,%rdx)
81	bndstx %bnd3, 0x399(%r12)
82	bndstx %bnd1, 0x1234(%r11)
83	bndstx %bnd2, 0x1234(%rbx)
84	bndstx %bnd2, 3(,%rbx,1)
85	bndstx %bnd2, 3(,%r12,1)
86	bndstx %bnd1, (%rdx)
87
88	### bndldx
89	bndldx 0x3(%rax,%rbx,1), %bnd0
90	bndldx 3(%rbx,%rdx), %bnd2
91	bndldx 0x399(%r12), %bnd3
92	bndldx 0x1234(%r11), %bnd1
93	bndldx 0x1234(%rbx), %bnd2
94	bndldx 3(,%rbx,1), %bnd2
95	bndldx 3(,%r12,1), %bnd2
96	bndldx (%rdx), %bnd1
97
98	### bnd
99	bnd call	foo
100	bnd call	*(%rax)
101	bnd call	*(%r11)
102	bnd je	foo
103	bnd jmp	foo
104	bnd jmp	*(%rcx)
105	bnd jmp	*(%r12)
106	bnd ret
107
108.intel_syntax noprefix
109	bndmk bnd1, [r11]
110	bndmk bnd1, [rax]
111	bndmk bnd1, [0x399]
112	bndmk bnd1, [r9+0x3]
113	bndmk bnd1, [rax+0x3]
114	bndmk bnd1, [1*r12+0x3]
115	bndmk bnd1, [rax+rcx]
116	bndmk bnd1, [r11+1*rax+0x3]
117	bndmk bnd1, [rbx+1*r9+0x3]
118
119	### bndmov
120	bndmov bnd1, [r11]
121	bndmov bnd1, [rax]
122	bndmov bnd1, [0x399]
123	bndmov bnd2, [r9+0x3]
124	bndmov bnd2, [rax+0x3]
125	bndmov bnd0, [1*r12+0x3]
126	bndmov bnd2, [rax+rdx]
127	bndmov bnd1, [r11+1*rax+0x3]
128	bndmov bnd1, [rbx+1*r9+0x3]
129	bndmov bnd0, bnd2
130
131	bndmov [r11], bnd1
132	bndmov [rax], bnd1
133	bndmov [0x399], bnd1
134	bndmov [r9+0x3], bnd2
135	bndmov [rax+0x3], bnd2
136	bndmov [1*r12+0x3], bnd0
137	bndmov [rax+rdx], bnd2
138	bndmov [r11+1*rax+0x3], bnd1
139	bndmov [rbx+1*r9+0x3], bnd1
140	bndmov bnd2, bnd0
141
142	### bndcl
143	bndcl bnd1, [r11]
144	bndcl bnd1, [rax]
145	bndcl bnd1, r11
146	bndcl bnd1, rcx
147	bndcl bnd1, [0x399]
148	bndcl bnd1, [r9+0x3]
149	bndcl bnd1, [rax+0x3]
150	bndcl bnd1, [1*r12+0x3]
151	bndcl bnd1, [rax+rcx]
152	bndcl bnd1, [r11+1*rax+0x3]
153	bndcl bnd1, [rbx+1*r9+0x3]
154
155	### bndcu
156	bndcu bnd1, [r11]
157	bndcu bnd1, [rax]
158	bndcu bnd1, r11
159	bndcu bnd1, rcx
160	bndcu bnd1, [0x399]
161	bndcu bnd1, [r9+0x3]
162	bndcu bnd1, [rax+0x3]
163	bndcu bnd1, [1*r12+0x3]
164	bndcu bnd1, [rax+rcx]
165	bndcu bnd1, [r11+1*rax+0x3]
166	bndcu bnd1, [rbx+1*r9+0x3]
167
168	### bndcn
169	bndcn bnd1, [r11]
170	bndcn bnd1, [rax]
171	bndcn bnd1, r11
172	bndcn bnd1, rcx
173	bndcn bnd1, [0x399]
174	bndcn bnd1, [r9+0x3]
175	bndcn bnd1, [rax+0x3]
176	bndcn bnd1, [1*r9+0x3]
177	bndcn bnd1, [rax+rcx]
178	bndcn bnd1, [r11+1*rax+0x3]
179	bndcn bnd1, [rbx+1*r9+0x3]
180
181	### bndstx
182	bndstx [rax+rbx*1+0x3], bnd0
183	bndstx [rbx+rdx+3], bnd2
184	bndstx [r12+0x399], bnd3
185	bndstx [r11+0x1234], bnd1
186	bndstx [rbx+0x1234], bnd2
187	bndstx [1*rbx+3], bnd2
188	bndstx [1*r12+3], bnd2
189	bndstx [rdx], bnd1
190
191	### bndldx
192	bndldx bnd0, [rax+rbx*1+0x3]
193	bndldx bnd2, [rbx+rdx+3]
194	bndldx bnd3, [r12+0x399]
195	bndldx bnd1, [r11+0x1234]
196	bndldx bnd2, [rbx+0x1234]
197	bndldx bnd2, [1*rbx+3]
198	bndldx bnd2, [1*r12+3]
199	bndldx bnd1, [rdx]
200
201	### bnd
202	bnd call	foo
203	bnd call	rax
204	bnd call	r11
205	bnd je	foo
206	bnd jmp	foo
207	bnd jmp	rcx
208	bnd jmp	r12
209	bnd ret
210
211foo:	bnd ret
212