/* bitfield-alias.s Test file for AArch64 bitfield instructions alias mnemonics. Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of GAS. GAS is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the license, or (at your option) any later version. GAS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; see the file COPYING3. If not, see . */ /* This file tests the GAS's ability in assembling the alias mnemonics of sbfm, bfm and ubfm. Disassembler should prefer to use alias mnemonics to display {[u|s]}bfm instructions. bitfield-bfm.s and bitfield-alias.s will be assembled into idential binary, which is why the two tests share the same dump match file 'bitfield-dump'. This assembly file is also used for the bitfield-no-aliases test. */ // , .macro bf_32r op \op wzr, w7 .endm // , .macro bf_64x op \op xzr, w7 .endm // , , # .macro bf_32s op, shift \op wzr, w7, \shift .endm // , , # .macro bf_64s op, shift \op xzr, x7, \shift .endm // , , #, # .macro bf_32 op, lsb, width \op wzr, w7, #\lsb, #\width .endm // , , #, # .macro bf_64 op, lsb, width \op xzr, x7, #\lsb, #\width .endm .text /* * extend */ bf_32r sxtb bf_64x sxtb bf_32r sxth bf_64x sxth bf_64x sxtw bf_32r uxtb bf_64x uxtb bf_32r uxth bf_64x uxth bf_32r uxtw bf_64x uxtw /* * shift */ .irp op, asr, lsr, lsl .irp shift, 0, 16, 31 bf_32s \op, \shift .endr .irp shift, 0, 31, 63 bf_64s \op, \shift .endr .endr /* * Insert & Extract */ .irp op, sbfiz, sbfx, bfi, bfxil, ubfiz, ubfx bf_32 \op, 0, 1 bf_32 \op, 0, 16 bf_32 \op, 0, 32 bf_32 \op, 16, 1 bf_32 \op, 16, 8 bf_32 \op, 16, 16 bf_32 \op, 31, 1 bf_64 \op, 0, 1 bf_64 \op, 0, 32 bf_64 \op, 0, 64 bf_64 \op, 32, 1 bf_64 \op, 32, 16 bf_64 \op, 32, 32 bf_64 \op, 63, 1 .endr