xref: /aosp_15_r20/external/emboss/testdata/complex_offset.emb (revision 99e0aae7469b87d12f0ad23e61142c2d74c1ef70)
1*99e0aae7SDavid Rees# Copyright 2019 Google LLC
2*99e0aae7SDavid Rees#
3*99e0aae7SDavid Rees# Licensed under the Apache License, Version 2.0 (the "License");
4*99e0aae7SDavid Rees# you may not use this file except in compliance with the License.
5*99e0aae7SDavid Rees# You may obtain a copy of the License at
6*99e0aae7SDavid Rees#
7*99e0aae7SDavid Rees#     https://www.apache.org/licenses/LICENSE-2.0
8*99e0aae7SDavid Rees#
9*99e0aae7SDavid Rees# Unless required by applicable law or agreed to in writing, software
10*99e0aae7SDavid Rees# distributed under the License is distributed on an "AS IS" BASIS,
11*99e0aae7SDavid Rees# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*99e0aae7SDavid Rees# See the License for the specific language governing permissions and
13*99e0aae7SDavid Rees# limitations under the License.
14*99e0aae7SDavid Rees
15*99e0aae7SDavid Rees-- Test .emb with a struct with several consecutive packed fields.
16*99e0aae7SDavid Rees--
17*99e0aae7SDavid Rees-- This particular case stresses generated code; common subexpression
18*99e0aae7SDavid Rees-- elimination is needed in the code generator or else the generated code is
19*99e0aae7SDavid Rees-- very, *very* slow when compiled without optimizations.
20*99e0aae7SDavid Rees
21*99e0aae7SDavid Rees[$default byte_order: "BigEndian"]
22*99e0aae7SDavid Rees[(cpp) namespace: "emboss::test"]
23*99e0aae7SDavid Rees
24*99e0aae7SDavid Reesstruct Length:
25*99e0aae7SDavid Rees  0 [+1]  UInt  length
26*99e0aae7SDavid Rees
27*99e0aae7SDavid Reesstruct Data:
28*99e0aae7SDavid Rees  0 [+1]              Length    length
29*99e0aae7SDavid Rees  1 [+length.length]  UInt:8[]  data
30*99e0aae7SDavid Rees
31*99e0aae7SDavid Reesstruct PackedFields:
32*99e0aae7SDavid Rees  0  [+1]            Length    length1 (l1)
33*99e0aae7SDavid Rees  0  [+l1.length+1]  Data      data1 (d1)
34*99e0aae7SDavid Rees  let o1 = d1.$size_in_bytes
35*99e0aae7SDavid Rees  o1 [+1]            Length    length2 (l2)
36*99e0aae7SDavid Rees  o1 [+l2.length+1]  Data      data2 (d2)
37*99e0aae7SDavid Rees  let o2 = o1 + d2.$size_in_bytes
38*99e0aae7SDavid Rees  o2 [+1]            Length    length3 (l3)
39*99e0aae7SDavid Rees  o2 [+l3.length+1]  Data      data3 (d3)
40*99e0aae7SDavid Rees  let o3 = o2 + d3.$size_in_bytes
41*99e0aae7SDavid Rees  o3 [+1]            Length    length4 (l4)
42*99e0aae7SDavid Rees  o3 [+l4.length+1]  Data      data4 (d4)
43*99e0aae7SDavid Rees  let o4 = o3 + d4.$size_in_bytes
44*99e0aae7SDavid Rees  o4 [+1]            Length    length5 (l5)
45*99e0aae7SDavid Rees  o4 [+l5.length+1]  Data      data5 (d5)
46*99e0aae7SDavid Rees  let o5 = o4 + d5.$size_in_bytes
47*99e0aae7SDavid Rees  o5 [+1]            Length    length6 (l6)
48*99e0aae7SDavid Rees  o5 [+l6.length+1]  Data      data6 (d6)
49