1 2018-04-26 Jan Beulich <jbeulich@suse.com>
3 * i386-gen.c (cpu_flag_init): CPU_I586_FLAGS inherits Cpu387 only.
4 CPU_287_FLAGS is Cpu287 only. CPU_387_FLAGS is Cpu387 only.
5 * i386-init.h: Re-generate.
7 2018-04-26 Jan Beulich <jbeulich@suse.com>
9 * i386-gen.c (VexImmExt): Delete.
10 * i386-opc.h (VexImmExt, veximmext): Delete.
11 * i386-opc.tbl: Drop all VexImmExt uses.
12 * i386-tlb.h: Re-generate.
14 2018-04-25 Jan Beulich <jbeulich@suse.com>
16 * i386-opc.tbl (vpslld, vpsrad, vpsrld): Drop AVX512VL
18 * i386-tlb.h: Re-generate.
20 2018-04-25 Tamar Christina <tamar.christina@arm.com>
22 * aarch64-tbl.h (sqrdmlah, sqrdmlsh): Fix masks.
24 2018-04-17 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
26 * i386-dis.c: Add REG_0F1C_MOD_0, MOD_0F1C_PREFIX_0,
28 * i386-gen.c (cpu_flag_init): Add CPU_CLDEMOTE_FLAGS,
29 (cpu_flags): Add CpuCLDEMOTE.
30 * i386-init.h: Regenerate.
31 * i386-opc.h (enum): Add CpuCLDEMOTE,
32 (i386_cpu_flags): Add cpucldemote.
33 * i386-opc.tbl: Add cldemote.
34 * i386-tbl.h: Regenerate.
36 2018-04-16 Alan Modra <amodra@gmail.com>
38 * Makefile.am: Remove sh5 and sh64 support.
39 * configure.ac: Likewise.
40 * disassemble.c: Likewise.
41 * disassemble.h: Likewise.
46 * Makefile.in: Regenerate.
47 * configure: Regenerate.
48 * po/POTFILES.in: Regenerate.
50 2018-04-16 Alan Modra <amodra@gmail.com>
52 * Makefile.am: Remove w65 support.
53 * configure.ac: Likewise.
54 * disassemble.c: Likewise.
55 * disassemble.h: Likewise.
58 * Makefile.in: Regenerate.
59 * configure: Regenerate.
60 * po/POTFILES.in: Regenerate.
62 2018-04-16 Alan Modra <amodra@gmail.com>
64 * configure.ac: Remove we32k support.
65 * configure: Regenerate.
67 2018-04-16 Alan Modra <amodra@gmail.com>
69 * Makefile.am: Remove m88k support.
70 * configure.ac: Likewise.
71 * disassemble.c: Likewise.
72 * disassemble.h: Likewise.
74 * Makefile.in: Regenerate.
75 * configure: Regenerate.
76 * po/POTFILES.in: Regenerate.
78 2018-04-16 Alan Modra <amodra@gmail.com>
80 * Makefile.am: Remove i370 support.
81 * configure.ac: Likewise.
82 * disassemble.c: Likewise.
83 * disassemble.h: Likewise.
86 * Makefile.in: Regenerate.
87 * configure: Regenerate.
88 * po/POTFILES.in: Regenerate.
90 2018-04-16 Alan Modra <amodra@gmail.com>
92 * Makefile.am: Remove h8500 support.
93 * configure.ac: Likewise.
94 * disassemble.c: Likewise.
95 * disassemble.h: Likewise.
96 * h8500-dis.c: Delete.
97 * h8500-opc.h: Delete.
98 * Makefile.in: Regenerate.
99 * configure: Regenerate.
100 * po/POTFILES.in: Regenerate.
102 2018-04-16 Alan Modra <amodra@gmail.com>
104 * configure.ac: Remove tahoe support.
105 * configure: Regenerate.
107 2018-04-15 H.J. Lu <hongjiu.lu@intel.com>
109 * i386-dis.c (prefix_table): Replace Em with Edq on tpause and
111 * i386-opc.tbl: Allow 32-bit registers for tpause and umwait in
113 * i386-tbl.h: Regenerated.
115 2018-04-11 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
117 * i386-dis.c (enum): Add PREFIX_MOD_0_0FAE_REG_6,
118 PREFIX_MOD_1_0FAE_REG_6.
120 (OP_E_register): Use va_mode.
121 * i386-dis-evex.h (prefix_table):
122 New instructions (see prefixes above).
123 * i386-gen.c (cpu_flag_init): Add WAITPKG.
124 (cpu_flags): Likewise.
125 * i386-opc.h (enum): Likewise.
126 (i386_cpu_flags): Likewise.
127 * i386-opc.tbl: Add umonitor, umwait, tpause.
128 * i386-init.h: Regenerate.
129 * i386-tbl.h: Likewise.
131 2018-04-11 Alan Modra <amodra@gmail.com>
133 * opcodes/i860-dis.c: Delete.
134 * opcodes/i960-dis.c: Delete.
135 * Makefile.am: Remove i860 and i960 support.
136 * configure.ac: Likewise.
137 * disassemble.c: Likewise.
138 * disassemble.h: Likewise.
139 * Makefile.in: Regenerate.
140 * configure: Regenerate.
141 * po/POTFILES.in: Regenerate.
143 2018-04-04 H.J. Lu <hongjiu.lu@intel.com>
146 * i386-dis.c (get_valid_dis386): Don't set vex.prefix nor vex.w
148 (print_insn): Clear vex instead of vex.evex.
150 2018-04-04 Nick Clifton <nickc@redhat.com>
152 * po/es.po: Updated Spanish translation.
154 2018-03-28 Jan Beulich <jbeulich@suse.com>
156 * i386-gen.c (opcode_modifiers): Delete VecESize.
157 * i386-opc.h (VecESize): Delete.
158 (struct i386_opcode_modifier): Delete vecesize.
159 * i386-opc.tbl: Drop VecESize.
160 * i386-tlb.h: Re-generate.
162 2018-03-28 Jan Beulich <jbeulich@suse.com>
164 * i386-opc.h (NO_BROADCAST, BROADCAST_1TO16, BROADCAST_1TO8,
165 BROADCAST_1TO4, BROADCAST_1TO2): Delete.
166 (struct i386_opcode_modifier): Shrink broadcast field to 1 bit.
167 * i386-opc.tbl: Replace Broadcast=<N> by Broadcast.
168 * i386-tlb.h: Re-generate.
170 2018-03-28 Jan Beulich <jbeulich@suse.com>
172 * i386-opc.tbl (vcvt*d2si, vcvt*d2usi, vcvt*s2si, vcvt*s2usi):
174 * i386-tlb.h: Re-generate.
176 2018-03-28 Jan Beulich <jbeulich@suse.com>
178 * i386-dis.c (prefix_table): Drop Y for cvt*2si.
179 (vex_len_table): Drop Y for vcvt*2si.
180 (putop): Replace plain 'Y' handling by abort().
182 2018-03-28 Nick Clifton <nickc@redhat.com>
185 * aarch64-tbl.h (aarch64_opcode_table): Add entries for LDFF1xx
186 instructions with only a base address register.
187 * aarch64-opc.c (operand_general_constraint_met_p): Add code to
188 handle AARHC64_OPND_SVE_ADDR_R.
189 (aarch64_print_operand): Likewise.
190 * aarch64-asm-2.c: Regenerate.
191 * aarch64_dis-2.c: Regenerate.
192 * aarch64-opc-2.c: Regenerate.
194 2018-03-22 Jan Beulich <jbeulich@suse.com>
196 * i386-opc.tbl: Drop VecESize from register only insn forms and
197 memory forms not allowing broadcast.
198 * i386-tlb.h: Re-generate.
200 2018-03-22 Jan Beulich <jbeulich@suse.com>
202 * i386-opc.tbl (vfrczs*, vphadd*, vphsub*, vpmacs*, vpmadcs*,
203 vprot*, vpsha*, vpshl*, bextr, blc*, bls*, t1mskc, tzmsk, sha1*,
204 sha256*): Drop Disp<N>.
206 2018-03-22 Jan Beulich <jbeulich@suse.com>
208 * i386-dis.c (EbndS, bnd_swap_mode): New.
209 (prefix_table): Use EbndS.
210 (OP_E_register, OP_E_memory): Also handle bnd_swap_mode.
211 * i386-opc.tbl (bndmov): Move misplaced Load.
212 * i386-tlb.h: Re-generate.
214 2018-03-22 Jan Beulich <jbeulich@suse.com>
216 * i386-opc.tbl (vcvtdq2pd, vcvtps2pd, vcvtudq2pd): Use separate
217 templates allowing memory operands and folded ones for register
219 * i386-tlb.h: Re-generate.
221 2018-03-22 Jan Beulich <jbeulich@suse.com>
223 * i386-opc.tbl (vfrczp*, vpcmov, vpermil2p*): Fold 128- and
224 256-bit templates. Drop redundant leftover Disp<N>.
225 * i386-tlb.h: Re-generate.
227 2018-03-14 Kito Cheng <kito.cheng@gmail.com>
229 * riscv-opc.c (riscv_insn_types): New.
231 2018-03-13 Nick Clifton <nickc@redhat.com>
233 * po/pt_BR.po: Updated Brazilian Portuguese translation.
235 2018-03-08 H.J. Lu <hongjiu.lu@intel.com>
237 * i386-opc.tbl: Add Optimize to clr.
238 * i386-tbl.h: Regenerated.
240 2018-03-08 H.J. Lu <hongjiu.lu@intel.com>
242 * i386-gen.c (opcode_modifiers): Remove OldGcc.
243 * i386-opc.h (OldGcc): Removed.
244 (i386_opcode_modifier): Remove oldgcc.
245 * i386-opc.tbl: Remove fsubp, fsubrp, fdivp and fdivrp
246 instructions for old (<= 2.8.1) versions of gcc.
247 * i386-tbl.h: Regenerated.
249 2018-03-08 Jan Beulich <jbeulich@suse.com>
251 * i386-opc.h (EVEXDYN): New.
252 * i386-opc.tbl: Fold various AVX512VL templates.
253 * i386-tlb.h: Re-generate.
255 2018-03-08 Jan Beulich <jbeulich@suse.com>
257 * i386-opc.tbl (vexpandpd, vexpandps, vmovapd, vmovaps,
258 vmovdqa32, vmovdqa64, vmovdqu32, vmovdqu64, vmovupd, vmovups,
259 vpexpandd, vpexpandq): Fold AFX512VF templates.
260 * i386-tlb.h: Re-generate.
262 2018-03-08 Jan Beulich <jbeulich@suse.com>
264 * i386-opc.tbl (vgf2p8affineinvqb, vgf2p8affineqb, vgf2p8mulb):
265 Fold 128- and 256-bit VEX-encoded templates.
266 * i386-tlb.h: Re-generate.
268 2018-03-08 Jan Beulich <jbeulich@suse.com>
270 * i386-opc.tbl (vexpandpd, vexpandps, vmovapd, vmovaps,
271 vmovdqa32, vmovdqa64, vmovdqu32, vmovdqu64, vmovupd, vmovups,
272 vpexpandd, vpexpandq): Fold AVX512F templates.
273 * i386-tlb.h: Re-generate.
275 2018-03-08 Jan Beulich <jbeulich@suse.com>
277 * i386-opc.tbl (llwpcb, slwpcb, lwpval, lwpins): Fold 32- and
278 64-bit templates. Drop Disp<N>.
279 * i386-tlb.h: Re-generate.
281 2018-03-08 Jan Beulich <jbeulich@suse.com>
283 * i386-opc.tbl (vfmadd*, vfmsub*, vfnmadd*, vfnmsub*): Fold 128-
284 and 256-bit templates.
285 * i386-tlb.h: Re-generate.
287 2018-03-08 Jan Beulich <jbeulich@suse.com>
289 * i386-opc.tbl (cmpxchg8b): Add NoRex64.
290 * i386-tlb.h: Re-generate.
292 2018-03-08 Jan Beulich <jbeulich@suse.com>
294 * i386-opc.tbl (cmpxchg16b, fisttp, fisttpll, bndmov, mwaitx):
296 * i386-tlb.h: Re-generate.
298 2018-03-08 Jan Beulich <jbeulich@suse.com>
300 * i386-opc.tbl (ldmxcsr, stmxcsr): Add NoAVX.
301 * i386-tlb.h: Re-generate.
303 2018-03-08 Jan Beulich <jbeulich@suse.com>
305 * i386-gen.c (opcode_modifiers): Delete FloatD.
306 * i386-opc.h (FloatD): Delete.
307 (struct i386_opcode_modifier): Delete floatd.
308 * i386-opc.tbl (fadd, fsub, fsubr, fmul, fdiv, fdivr): Replace
310 * i386-tlb.h: Re-generate.
312 2018-03-08 Jan Beulich <jbeulich@suse.com>
314 * i386-dis.c (float_reg): Adjust DC and DE fsub*/fdiv* patterns.
316 2018-03-08 Jan Beulich <jbeulich@suse.com>
318 * i386-opc.tbl (vmovd): Disallow Qword memory operands.
319 * i386-tlb.h: Re-generate.
321 2018-03-08 Jan Beulich <jbeulich@suse.com>
323 * i386-opc.tbl (vcvtpd2ps): Fold AVX 128- and 256-bit memory
325 * i386-tlb.h: Re-generate.
327 2018-03-07 Alan Modra <amodra@gmail.com>
329 * disassemble.c (disassembler): Use bfd_arch_powerpc entry for
331 * disassemble.h (print_insn_rs6000): Delete.
332 * ppc-dis.c (powerpc_init_dialect): Handle rs6000.
333 (disassemble_init_powerpc): Call powerpc_init_dialect for rs6000.
334 (print_insn_rs6000): Delete.
336 2018-03-03 Alan Modra <amodra@gmail.com>
338 * sysdep.h (opcodes_error_handler): Define.
339 (_bfd_error_handler): Declare.
340 * Makefile.am: Remove stray #.
341 * opc2c.c (main): Remove bogus -l arg handling. Print "DO NOT
343 * aarch64-dis.c, * arc-dis.c, * arm-dis.c, * avr-dis.c,
344 * d30v-dis.c, * h8300-dis.c, * mmix-dis.c, * ppc-dis.c,
345 * riscv-dis.c, * s390-dis.c, * sparc-dis.c, * v850-dis.c: Use
346 opcodes_error_handler to print errors. Standardize error messages.
347 * msp430-decode.opc, * nios2-dis.c, * rl78-decode.opc: Likewise,
348 and include opintl.h.
349 * nds32-asm.c: Likewise, and include sysdep.h and opintl.h.
350 * i386-gen.c: Standardize error messages.
351 * msp430-decode.c, * rl78-decode.c, rx-decode.c: Regenerate.
352 * Makefile.in: Regenerate.
353 * epiphany-asm.c, * epiphany-desc.c, * epiphany-dis.c,
354 * epiphany-ibld.c, * fr30-asm.c, * fr30-desc.c, * fr30-dis.c,
355 * fr30-ibld.c, * frv-asm.c, * frv-desc.c, * frv-dis.c, * frv-ibld.c,
356 * frv-opc.c, * ip2k-asm.c, * ip2k-desc.c, * ip2k-dis.c, * ip2k-ibld.c,
357 * iq2000-asm.c, * iq2000-desc.c, * iq2000-dis.c, * iq2000-ibld.c,
358 * lm32-asm.c, * lm32-desc.c, * lm32-dis.c, * lm32-ibld.c,
359 * m32c-asm.c, * m32c-desc.c, * m32c-dis.c, * m32c-ibld.c,
360 * m32r-asm.c, * m32r-desc.c, * m32r-dis.c, * m32r-ibld.c,
361 * mep-asm.c, * mep-desc.c, * mep-dis.c, * mep-ibld.c, * mt-asm.c,
362 * mt-desc.c, * mt-dis.c, * mt-ibld.c, * or1k-asm.c, * or1k-desc.c,
363 * or1k-dis.c, * or1k-ibld.c, * xc16x-asm.c, * xc16x-desc.c,
364 * xc16x-dis.c, * xc16x-ibld.c, * xstormy16-asm.c, * xstormy16-desc.c,
365 * xstormy16-dis.c, * xstormy16-ibld.c: Regenerate.
367 2018-03-01 H.J. Lu <hongjiu.lu@intel.com>
369 * * i386-opc.tbl: Add "Optimize" to AVX256 and AVX512
370 vpsub[bwdq] instructions.
371 * i386-tbl.h: Regenerated.
373 2018-03-01 Alan Modra <amodra@gmail.com>
375 * configure.ac (ALL_LINGUAS): Sort.
376 * configure: Regenerate.
378 2018-02-27 Thomas Preud'homme <thomas.preudhomme@arm.com>
380 * arm-dis.c (print_insn_coprocessor): Replace uses of ARM_FEATURE_COPY
381 macro by assignements.
383 2018-02-27 H.J. Lu <hongjiu.lu@intel.com>
386 * i386-gen.c (opcode_modifiers): Add Optimize.
387 * i386-opc.h (Optimize): New enum.
388 (i386_opcode_modifier): Add optimize.
389 * i386-opc.tbl: Add "Optimize" to "mov $imm, reg",
390 "sub reg, reg/mem", "test $imm, acc", "test $imm, reg/mem",
391 "and $imm, acc", "and $imm, reg/mem", "xor reg, reg/mem",
392 "movq $imm, reg" and AVX256 and AVX512 versions of vandnps,
393 vandnpd, vpandn, vpandnd, vpandnq, vxorps, vxorpd, vpxor,
395 * i386-tbl.h: Regenerated.
397 2018-02-26 Alan Modra <amodra@gmail.com>
399 * crx-dis.c (getregliststring): Allocate a large enough buffer
400 to silence false positive gcc8 warning.
402 2018-02-22 Shea Levy <shea@shealevy.com>
404 * disassemble.c (ARCH_riscv): Define if ARCH_all.
406 2018-02-22 H.J. Lu <hongjiu.lu@intel.com>
408 * i386-opc.tbl: Add {rex},
409 * i386-tbl.h: Regenerated.
411 2018-02-20 Maciej W. Rozycki <macro@mips.com>
413 * mips16-opc.c (decode_mips16_operand) <'M'>: Remove case.
414 (mips16_opcodes): Replace `M' with `m' for "restore".
416 2018-02-19 Thomas Preud'homme <thomas.preudhomme@arm.com>
418 * arm-dis.c (thumb_opcodes): Fix BXNS mask.
420 2018-02-13 Maciej W. Rozycki <macro@mips.com>
422 * wasm32-dis.c (print_insn_wasm32): Rename `index' local
423 variable to `function_index'.
425 2018-02-13 Nick Clifton <nickc@redhat.com>
428 * metag-dis.c (print_fmmov): Double buffer size to avoid warning
429 about truncation of printing.
431 2018-02-12 Henry Wong <henry@stuffedcow.net>
433 * mips-opc.c (mips_builtin_opcodes): Correct "sigrie" encoding.
435 2018-02-05 Nick Clifton <nickc@redhat.com>
437 * po/pt_BR.po: Updated Brazilian Portuguese translation.
439 2018-01-23 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
441 * i386-dis.c (enum): Add pconfig.
442 * i386-gen.c (cpu_flag_init): Add CPU_PCONFIG_FLAGS.
443 (cpu_flags): Add CpuPCONFIG.
444 * i386-opc.h (enum): Add CpuPCONFIG.
445 (i386_cpu_flags): Add cpupconfig.
446 * i386-opc.tbl: Add PCONFIG instruction.
447 * i386-init.h: Regenerate.
448 * i386-tbl.h: Likewise.
450 2018-01-23 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
452 * i386-dis.c (enum): Add PREFIX_0F09.
453 * i386-gen.c (cpu_flag_init): Add CPU_WBNOINVD_FLAGS.
454 (cpu_flags): Add CpuWBNOINVD.
455 * i386-opc.h (enum): Add CpuWBNOINVD.
456 (i386_cpu_flags): Add cpuwbnoinvd.
457 * i386-opc.tbl: Add WBNOINVD instruction.
458 * i386-init.h: Regenerate.
459 * i386-tbl.h: Likewise.
461 2018-01-17 Jim Wilson <jimw@sifive.com>
463 * riscv-opc.c (riscv_opcodes) <addi>: Use z instead of 0.
465 2018-01-17 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
467 * i386-gen.c (cpu_flag_init): Delete CPU_CET_FLAGS, CpuCET.
468 Add CPU_IBT_FLAGS, CPU_SHSTK_FLAGS, CPY_ANY_IBT_FLAGS,
469 CPU_ANY_SHSTK_FLAGS, CpuIBT, CpuSHSTK.
470 (cpu_flags): Add CpuIBT, CpuSHSTK.
471 * i386-opc.h (enum): Add CpuIBT, CpuSHSTK.
472 (i386_cpu_flags): Add cpuibt, cpushstk.
473 * i386-opc.tbl: Change CpuCET to CpuSHSTK and CpuIBT.
474 * i386-init.h: Regenerate.
475 * i386-tbl.h: Likewise.
477 2018-01-16 Nick Clifton <nickc@redhat.com>
479 * po/pt_BR.po: Updated Brazilian Portugese translation.
480 * po/de.po: Updated German translation.
482 2018-01-15 Jim Wilson <jimw@sifive.com>
484 * riscv-opc.c (match_c_nop): New.
485 (riscv_opcodes) <addi>: Handle an addi that compresses to c.nop.
487 2018-01-15 Nick Clifton <nickc@redhat.com>
489 * po/uk.po: Updated Ukranian translation.
491 2018-01-13 Nick Clifton <nickc@redhat.com>
493 * po/opcodes.pot: Regenerated.
495 2018-01-13 Nick Clifton <nickc@redhat.com>
497 * configure: Regenerate.
499 2018-01-13 Nick Clifton <nickc@redhat.com>
503 2018-01-11 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
505 * i386-opc.tbl: Remove VL variants for 4FMAPS and 4VNNIW insns.
506 * i386-tbl.h: Regenerate.
508 2018-01-10 Jan Beulich <jbeulich@suse.com>
510 * i386-opc.tbl (v4fmaddss, v4fnmaddss): Adjust Disp8MemShift.
511 * i386-tbl.h: Re-generate.
513 2018-01-10 Jan Beulich <jbeulich@suse.com>
515 * i386-opc.tbl (vpcmpeqb, vpcmpleb, vpcmpltb, vpcmpneqb,
516 vpcmpnleb, vpcmpnltb, vpcmpequb, vpcmpleub, vpcmpltub,
517 vpcmpnequb, vpcmpnleub, vpcmpnltub, vpcmpeqw, vpcmplew,
518 vpcmpltw, vpcmpneqw, vpcmpnlew, vpcmpnltw, vpcmpequw, vpcmpleuw,
519 vpcmpltuw, vpcmpnequw, vpcmpnleuw, vpcmpnltuw): Adjust
520 Disp8MemShift of AVX512VL forms.
521 * i386-tbl.h: Re-generate.
523 2018-01-09 Jim Wilson <jimw@sifive.com>
525 * riscv-dis.c (maybe_print_address): If base_reg is zero,
526 then the hi_addr value is zero.
528 2018-01-09 James Greenhalgh <james.greenhalgh@arm.com>
530 * arm-dis.c (arm_opcodes): Add csdb.
531 (thumb32_opcodes): Add csdb.
533 2018-01-09 James Greenhalgh <james.greenhalgh@arm.com>
535 * aarch64-tbl.h (aarch64_opcode_table): Add "csdb".
536 * aarch64-asm-2.c: Regenerate.
537 * aarch64-dis-2.c: Regenerate.
538 * aarch64-opc-2.c: Regenerate.
540 2018-01-08 H.J. Lu <hongjiu.lu@intel.com>
543 * i386-opc.tbl: Properly encode vmovd with Qword memeory operand.
544 Remove AVX512 vmovd with 64-bit operands.
545 * i386-tbl.h: Regenerated.
547 2018-01-05 Jim Wilson <jimw@sifive.com>
549 * riscv-dis.c (print_insn_args) <'s'>: Call maybe_print_address for a
552 2018-01-03 Alan Modra <amodra@gmail.com>
554 Update year range in copyright notice of all files.
556 2018-01-02 Jan Beulich <jbeulich@suse.com>
558 * i386-gen.c (operand_type_init): Restore OPERAND_TYPE_REGYMM
559 and OPERAND_TYPE_REGZMM entries.
561 For older changes see ChangeLog-2017
563 Copyright (C) 2018 Free Software Foundation, Inc.
565 Copying and distribution of this file, with or without modification,
566 are permitted in any medium without royalty provided the copyright
567 notice and this notice are preserved.
573 version-control: never