[mark:arm64/insn/rework 17/17] arch/arm64/lib/insn.c:37:6: warning: no previous prototype for 'test__insn_imm_insn__unsigned_N'

From: kernel test robot
Date: Sat Sep 03 2022 - 12:58:13 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git arm64/insn/rework
head: e7a596adf2e7a4ff7e585c053b93d81730d605a7
commit: e7a596adf2e7a4ff7e585c053b93d81730d605a7 [17/17] HACK: arm64: insn: add immediate tests
config: arm64-allyesconfig (https://download.01.org/0day-ci/archive/20220904/202209040035.zoHGzSIk-lkp@xxxxxxxxx/config)
compiler: aarch64-linux-gcc (GCC) 12.1.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git/commit/?id=e7a596adf2e7a4ff7e585c053b93d81730d605a7
git remote add mark https://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git
git fetch --no-tags mark arm64/insn/rework
git checkout e7a596adf2e7a4ff7e585c053b93d81730d605a7
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm64 SHELL=/bin/bash

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All warnings (new ones prefixed by >>):

| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/lib/insn.c:79:1: note: in expansion of macro 'IMM_ROUNDTRIP'
79 | IMM_ROUNDTRIP(imm6_15);
| ^~~~~~~~~~~~~
arch/arm64/lib/insn.c:37:6: warning: no previous prototype for 'test__insn_imm_insn__unsigned_imm6_10' [-Wmissing-prototypes]
37 | bool test__insn_imm_insn__unsigned_##imm(const u32 old_insn) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/lib/insn.c:80:1: note: in expansion of macro 'IMM_ROUNDTRIP'
80 | IMM_ROUNDTRIP(imm6_10);
| ^~~~~~~~~~~~~
arch/arm64/lib/insn.c:45:6: warning: no previous prototype for 'test__insn_imm_insn__signed_imm6_10' [-Wmissing-prototypes]
45 | bool test__insn_imm_insn__signed_##imm(const u32 old_insn) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/lib/insn.c:80:1: note: in expansion of macro 'IMM_ROUNDTRIP'
80 | IMM_ROUNDTRIP(imm6_10);
| ^~~~~~~~~~~~~
arch/arm64/lib/insn.c:53:6: warning: no previous prototype for 'test__imm_insn_imm__unsigned_imm6_10' [-Wmissing-prototypes]
53 | bool test__imm_insn_imm__unsigned_##imm(const u64 imm) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/lib/insn.c:80:1: note: in expansion of macro 'IMM_ROUNDTRIP'
80 | IMM_ROUNDTRIP(imm6_10);
| ^~~~~~~~~~~~~
arch/arm64/lib/insn.c:60:6: warning: no previous prototype for 'test__imm_insn_imm__signed_imm6_10' [-Wmissing-prototypes]
60 | bool test__imm_insn_imm__signed_##imm(const s64 imm) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/lib/insn.c:80:1: note: in expansion of macro 'IMM_ROUNDTRIP'
80 | IMM_ROUNDTRIP(imm6_10);
| ^~~~~~~~~~~~~
arch/arm64/lib/insn.c:37:6: warning: no previous prototype for 'test__insn_imm_insn__unsigned_immr' [-Wmissing-prototypes]
37 | bool test__insn_imm_insn__unsigned_##imm(const u32 old_insn) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/lib/insn.c:81:1: note: in expansion of macro 'IMM_ROUNDTRIP'
81 | IMM_ROUNDTRIP(immr);
| ^~~~~~~~~~~~~
arch/arm64/lib/insn.c:45:6: warning: no previous prototype for 'test__insn_imm_insn__signed_immr' [-Wmissing-prototypes]
45 | bool test__insn_imm_insn__signed_##imm(const u32 old_insn) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/lib/insn.c:81:1: note: in expansion of macro 'IMM_ROUNDTRIP'
81 | IMM_ROUNDTRIP(immr);
| ^~~~~~~~~~~~~
arch/arm64/lib/insn.c:53:6: warning: no previous prototype for 'test__imm_insn_imm__unsigned_immr' [-Wmissing-prototypes]
53 | bool test__imm_insn_imm__unsigned_##imm(const u64 imm) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/lib/insn.c:81:1: note: in expansion of macro 'IMM_ROUNDTRIP'
81 | IMM_ROUNDTRIP(immr);
| ^~~~~~~~~~~~~
arch/arm64/lib/insn.c:60:6: warning: no previous prototype for 'test__imm_insn_imm__signed_immr' [-Wmissing-prototypes]
60 | bool test__imm_insn_imm__signed_##imm(const s64 imm) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/lib/insn.c:81:1: note: in expansion of macro 'IMM_ROUNDTRIP'
81 | IMM_ROUNDTRIP(immr);
| ^~~~~~~~~~~~~
arch/arm64/lib/insn.c:37:6: warning: no previous prototype for 'test__insn_imm_insn__unsigned_imms' [-Wmissing-prototypes]
37 | bool test__insn_imm_insn__unsigned_##imm(const u32 old_insn) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/lib/insn.c:82:1: note: in expansion of macro 'IMM_ROUNDTRIP'
82 | IMM_ROUNDTRIP(imms);
| ^~~~~~~~~~~~~
arch/arm64/lib/insn.c:45:6: warning: no previous prototype for 'test__insn_imm_insn__signed_imms' [-Wmissing-prototypes]
45 | bool test__insn_imm_insn__signed_##imm(const u32 old_insn) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/lib/insn.c:82:1: note: in expansion of macro 'IMM_ROUNDTRIP'
82 | IMM_ROUNDTRIP(imms);
| ^~~~~~~~~~~~~
arch/arm64/lib/insn.c:53:6: warning: no previous prototype for 'test__imm_insn_imm__unsigned_imms' [-Wmissing-prototypes]
53 | bool test__imm_insn_imm__unsigned_##imm(const u64 imm) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/lib/insn.c:82:1: note: in expansion of macro 'IMM_ROUNDTRIP'
82 | IMM_ROUNDTRIP(imms);
| ^~~~~~~~~~~~~
arch/arm64/lib/insn.c:60:6: warning: no previous prototype for 'test__imm_insn_imm__signed_imms' [-Wmissing-prototypes]
60 | bool test__imm_insn_imm__signed_##imm(const s64 imm) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/lib/insn.c:82:1: note: in expansion of macro 'IMM_ROUNDTRIP'
82 | IMM_ROUNDTRIP(imms);
| ^~~~~~~~~~~~~
arch/arm64/lib/insn.c:37:6: warning: no previous prototype for 'test__insn_imm_insn__unsigned_hw' [-Wmissing-prototypes]
37 | bool test__insn_imm_insn__unsigned_##imm(const u32 old_insn) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/lib/insn.c:83:1: note: in expansion of macro 'IMM_ROUNDTRIP'
83 | IMM_ROUNDTRIP(hw);
| ^~~~~~~~~~~~~
arch/arm64/lib/insn.c:45:6: warning: no previous prototype for 'test__insn_imm_insn__signed_hw' [-Wmissing-prototypes]
45 | bool test__insn_imm_insn__signed_##imm(const u32 old_insn) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/lib/insn.c:83:1: note: in expansion of macro 'IMM_ROUNDTRIP'
83 | IMM_ROUNDTRIP(hw);
| ^~~~~~~~~~~~~
arch/arm64/lib/insn.c:53:6: warning: no previous prototype for 'test__imm_insn_imm__unsigned_hw' [-Wmissing-prototypes]
53 | bool test__imm_insn_imm__unsigned_##imm(const u64 imm) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/lib/insn.c:83:1: note: in expansion of macro 'IMM_ROUNDTRIP'
83 | IMM_ROUNDTRIP(hw);
| ^~~~~~~~~~~~~
arch/arm64/lib/insn.c:60:6: warning: no previous prototype for 'test__imm_insn_imm__signed_hw' [-Wmissing-prototypes]
60 | bool test__imm_insn_imm__signed_##imm(const s64 imm) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/lib/insn.c:83:1: note: in expansion of macro 'IMM_ROUNDTRIP'
83 | IMM_ROUNDTRIP(hw);
| ^~~~~~~~~~~~~
>> arch/arm64/lib/insn.c:37:6: warning: no previous prototype for 'test__insn_imm_insn__unsigned_N' [-Wmissing-prototypes]
37 | bool test__insn_imm_insn__unsigned_##imm(const u32 old_insn) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/lib/insn.c:84:1: note: in expansion of macro 'IMM_ROUNDTRIP'
84 | IMM_ROUNDTRIP(N);
| ^~~~~~~~~~~~~
>> arch/arm64/lib/insn.c:45:6: warning: no previous prototype for 'test__insn_imm_insn__signed_N' [-Wmissing-prototypes]
45 | bool test__insn_imm_insn__signed_##imm(const u32 old_insn) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/lib/insn.c:84:1: note: in expansion of macro 'IMM_ROUNDTRIP'
84 | IMM_ROUNDTRIP(N);
| ^~~~~~~~~~~~~
>> arch/arm64/lib/insn.c:53:6: warning: no previous prototype for 'test__imm_insn_imm__unsigned_N' [-Wmissing-prototypes]
53 | bool test__imm_insn_imm__unsigned_##imm(const u64 imm) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/lib/insn.c:84:1: note: in expansion of macro 'IMM_ROUNDTRIP'
84 | IMM_ROUNDTRIP(N);
| ^~~~~~~~~~~~~
>> arch/arm64/lib/insn.c:60:6: warning: no previous prototype for 'test__imm_insn_imm__signed_N' [-Wmissing-prototypes]
60 | bool test__imm_insn_imm__signed_##imm(const s64 imm) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/lib/insn.c:84:1: note: in expansion of macro 'IMM_ROUNDTRIP'
84 | IMM_ROUNDTRIP(N);
| ^~~~~~~~~~~~~
arch/arm64/lib/insn.c:37:6: warning: no previous prototype for 'test__insn_imm_insn__unsigned_sf' [-Wmissing-prototypes]
37 | bool test__insn_imm_insn__unsigned_##imm(const u32 old_insn) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/lib/insn.c:85:1: note: in expansion of macro 'IMM_ROUNDTRIP'
85 | IMM_ROUNDTRIP(sf);
| ^~~~~~~~~~~~~
arch/arm64/lib/insn.c:45:6: warning: no previous prototype for 'test__insn_imm_insn__signed_sf' [-Wmissing-prototypes]
45 | bool test__insn_imm_insn__signed_##imm(const u32 old_insn) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/lib/insn.c:85:1: note: in expansion of macro 'IMM_ROUNDTRIP'
85 | IMM_ROUNDTRIP(sf);
| ^~~~~~~~~~~~~
arch/arm64/lib/insn.c:53:6: warning: no previous prototype for 'test__imm_insn_imm__unsigned_sf' [-Wmissing-prototypes]
53 | bool test__imm_insn_imm__unsigned_##imm(const u64 imm) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/lib/insn.c:85:1: note: in expansion of macro 'IMM_ROUNDTRIP'
85 | IMM_ROUNDTRIP(sf);
| ^~~~~~~~~~~~~
arch/arm64/lib/insn.c:60:6: warning: no previous prototype for 'test__imm_insn_imm__signed_sf' [-Wmissing-prototypes]
60 | bool test__imm_insn_imm__signed_##imm(const s64 imm) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/lib/insn.c:85:1: note: in expansion of macro 'IMM_ROUNDTRIP'
85 | IMM_ROUNDTRIP(sf);
| ^~~~~~~~~~~~~
>> arch/arm64/lib/insn.c:37:6: warning: no previous prototype for 'test__insn_imm_insn__unsigned_sh' [-Wmissing-prototypes]
37 | bool test__insn_imm_insn__unsigned_##imm(const u32 old_insn) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/lib/insn.c:86:1: note: in expansion of macro 'IMM_ROUNDTRIP'
86 | IMM_ROUNDTRIP(sh);
| ^~~~~~~~~~~~~
>> arch/arm64/lib/insn.c:45:6: warning: no previous prototype for 'test__insn_imm_insn__signed_sh' [-Wmissing-prototypes]
45 | bool test__insn_imm_insn__signed_##imm(const u32 old_insn) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/lib/insn.c:86:1: note: in expansion of macro 'IMM_ROUNDTRIP'
86 | IMM_ROUNDTRIP(sh);
| ^~~~~~~~~~~~~
>> arch/arm64/lib/insn.c:53:6: warning: no previous prototype for 'test__imm_insn_imm__unsigned_sh' [-Wmissing-prototypes]
53 | bool test__imm_insn_imm__unsigned_##imm(const u64 imm) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/lib/insn.c:86:1: note: in expansion of macro 'IMM_ROUNDTRIP'
86 | IMM_ROUNDTRIP(sh);
| ^~~~~~~~~~~~~
>> arch/arm64/lib/insn.c:60:6: warning: no previous prototype for 'test__imm_insn_imm__signed_sh' [-Wmissing-prototypes]
60 | bool test__imm_insn_imm__signed_##imm(const s64 imm) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/lib/insn.c:86:1: note: in expansion of macro 'IMM_ROUNDTRIP'
86 | IMM_ROUNDTRIP(sh);
| ^~~~~~~~~~~~~


vim +/test__insn_imm_insn__unsigned_N +37 arch/arm64/lib/insn.c

35
36 #define IMM_ROUNDTRIP(imm) \
> 37 bool test__insn_imm_insn__unsigned_##imm(const u32 old_insn) \
38 { \
39 u32 new_insn = old_insn; \
40 u64 imm = aarch64_insn_decode_unsigned_##imm(old_insn); \
41 if (!aarch64_insn_try_encode_unsigned_##imm(&new_insn, imm)) \
42 return true; \
43 return new_insn == old_insn; \
44 } \
> 45 bool test__insn_imm_insn__signed_##imm(const u32 old_insn) \
46 { \
47 u32 new_insn = old_insn; \
48 s64 imm = aarch64_insn_decode_signed_##imm(old_insn); \
49 if (!aarch64_insn_try_encode_signed_##imm(&new_insn, imm)) \
50 return true; \
51 return new_insn == old_insn; \
52 } \
> 53 bool test__imm_insn_imm__unsigned_##imm(const u64 imm) \
54 { \
55 u32 insn = 0; \
56 if (!aarch64_insn_try_encode_unsigned_##imm(&insn, imm)) \
57 return true; \
58 return aarch64_insn_decode_unsigned_##imm(insn) == imm; \
59 } \
> 60 bool test__imm_insn_imm__signed_##imm(const s64 imm) \
61 { \
62 u32 insn = 0; \
63 if (!aarch64_insn_try_encode_signed_##imm(&insn, imm)) \
64 return true; \
65 return aarch64_insn_decode_signed_##imm(insn) == imm; \
66 }
67

--
0-DAY CI Kernel Test Service
https://01.org/lkp