^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0-or-later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * Copyright 2008 Michael Ellerman, IBM Corporation.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #include <asm/feature-fixups.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #include <asm/ppc_asm.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #include <asm/synch.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #include <asm/asm-compat.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include <asm/ppc-opcode.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) .text
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #define globl(x) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) .globl x; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) x:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) globl(ftr_fixup_test1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) or 2,2,2 /* fixup will nop out this instruction */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) or 3,3,3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) globl(end_ftr_fixup_test1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) globl(ftr_fixup_test1_orig)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) or 3,3,3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) globl(ftr_fixup_test1_expected)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) or 3,3,3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) globl(ftr_fixup_test2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) or 2,2,2 /* fixup will replace this with ftr_fixup_test2_alt */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) or 3,3,3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) globl(end_ftr_fixup_test2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) globl(ftr_fixup_test2_orig)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) or 3,3,3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) globl(ftr_fixup_test2_alt)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) or 31,31,31
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) globl(ftr_fixup_test2_expected)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) or 31,31,31
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) or 3,3,3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) globl(ftr_fixup_test3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) or 2,2,2 /* fixup will fail to replace this */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) or 3,3,3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) globl(end_ftr_fixup_test3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) globl(ftr_fixup_test3_orig)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) or 3,3,3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) globl(ftr_fixup_test3_alt)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) or 31,31,31
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) or 31,31,31
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) globl(ftr_fixup_test4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) or 3,3,3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) globl(end_ftr_fixup_test4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) globl(ftr_fixup_test4_expected)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) or 31,31,31
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) or 31,31,31
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) or 3,3,3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) globl(ftr_fixup_test4_orig)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) or 3,3,3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) globl(ftr_fixup_test4_alt)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) or 31,31,31
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) or 31,31,31
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) globl(ftr_fixup_test5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) BEGIN_FTR_SECTION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) FTR_SECTION_ELSE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) 2: b 3f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) 3: or 5,5,5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) beq 3b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) b 1f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) or 6,6,6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) b 2b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) 1: bdnz 3b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) ALT_FTR_SECTION_END(0, 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) globl(end_ftr_fixup_test5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) globl(ftr_fixup_test5_expected)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) 2: b 3f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) 3: or 5,5,5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) beq 3b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) b 1f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) or 6,6,6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) b 2b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 1: bdnz 3b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) globl(ftr_fixup_test6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) 1: or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) BEGIN_FTR_SECTION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) or 5,5,5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) 2: PPC_LCMPI r3,0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) beq 4f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) blt 2b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) b 1b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) b 4f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) FTR_SECTION_ELSE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) 2: or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) PPC_LCMPI r3,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) beq 3f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) blt 2b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) b 3f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) b 1b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) ALT_FTR_SECTION_END(0, 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) 3: or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) 4: or 3,3,3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) globl(end_ftr_fixup_test6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) globl(ftr_fixup_test6_expected)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) 1: or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) 2: or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) PPC_LCMPI r3,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) beq 3f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) blt 2b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) b 3f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) b 1b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) 3: or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) or 3,3,3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) globl(ftr_fixup_test7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) BEGIN_FTR_SECTION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) FTR_SECTION_ELSE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) 2: b 3f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) 3: or 5,5,5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) beq 3b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) b 1f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) or 6,6,6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) b 2b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) bdnz 3b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) 1:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) ALT_FTR_SECTION_END(0, 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) globl(end_ftr_fixup_test7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) globl(ftr_fixup_test7_expected)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) 2: b 3f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) 3: or 5,5,5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) beq 3b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) b 1f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) or 6,6,6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) b 2b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) bdnz 3b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) 1: or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) #if 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) /* Test that if we have a larger else case the assembler spots it and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) * reports an error. #if 0'ed so as not to break the build normally.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) ftr_fixup_test_too_big:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) BEGIN_FTR_SECTION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) FTR_SECTION_ELSE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) or 3,3,3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) or 3,3,3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) or 3,3,3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) or 3,3,3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) ALT_FTR_SECTION_END(0, 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) #define MAKE_MACRO_TEST(TYPE) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) globl(ftr_fixup_test_ ##TYPE##_macros) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) /* Basic test, this section should all be nop'ed */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) BEGIN_##TYPE##_SECTION \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) END_##TYPE##_SECTION(0, 1) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) /* Basic test, this section should NOT be nop'ed */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) BEGIN_##TYPE##_SECTION \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) END_##TYPE##_SECTION(0, 0) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) /* Nesting test, inner section should be nop'ed */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) BEGIN_##TYPE##_SECTION \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) BEGIN_##TYPE##_SECTION_NESTED(80) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) END_##TYPE##_SECTION_NESTED(0, 1, 80) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) END_##TYPE##_SECTION(0, 0) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) /* Nesting test, whole section should be nop'ed */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) BEGIN_##TYPE##_SECTION \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) BEGIN_##TYPE##_SECTION_NESTED(80) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) END_##TYPE##_SECTION_NESTED(0, 0, 80) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) END_##TYPE##_SECTION(0, 1) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) /* Nesting test, none should be nop'ed */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) BEGIN_##TYPE##_SECTION \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) BEGIN_##TYPE##_SECTION_NESTED(80) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) END_##TYPE##_SECTION_NESTED(0, 0, 80) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) END_##TYPE##_SECTION(0, 0) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) /* Basic alt section test, default case should be taken */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) BEGIN_##TYPE##_SECTION \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) ##TYPE##_SECTION_ELSE \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) or 5,5,5; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) or 5,5,5; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) ALT_##TYPE##_SECTION_END(0, 0) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) /* Basic alt section test, else case should be taken */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) BEGIN_##TYPE##_SECTION \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) ##TYPE##_SECTION_ELSE \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) or 31,31,31; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) or 31,31,31; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) or 31,31,31; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) ALT_##TYPE##_SECTION_END(0, 1) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) /* Alt with smaller else case, should be padded with nops */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) BEGIN_##TYPE##_SECTION \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) ##TYPE##_SECTION_ELSE \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) or 31,31,31; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) ALT_##TYPE##_SECTION_END(0, 1) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) /* Alt section with nested section in default case */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) /* Default case should be taken, with nop'ed inner section */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) BEGIN_##TYPE##_SECTION \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) BEGIN_##TYPE##_SECTION_NESTED(95) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) END_##TYPE##_SECTION_NESTED(0, 1, 95) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) ##TYPE##_SECTION_ELSE \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) ALT_##TYPE##_SECTION_END(0, 0) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) /* Alt section with nested section in else, default taken */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) BEGIN_##TYPE##_SECTION \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) ##TYPE##_SECTION_ELSE \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) or 5,5,5; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) BEGIN_##TYPE##_SECTION_NESTED(95) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) END_##TYPE##_SECTION_NESTED(0, 1, 95) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) or 5,5,5; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) ALT_##TYPE##_SECTION_END(0, 0) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) /* Alt section with nested section in else, else taken & nop */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) BEGIN_##TYPE##_SECTION \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) ##TYPE##_SECTION_ELSE \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) or 5,5,5; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) BEGIN_##TYPE##_SECTION_NESTED(95) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) END_##TYPE##_SECTION_NESTED(0, 1, 95) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) or 5,5,5; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) ALT_##TYPE##_SECTION_END(0, 1) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) /* Feature section with nested alt section, default taken */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) BEGIN_##TYPE##_SECTION \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) BEGIN_##TYPE##_SECTION_NESTED(95) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366) ##TYPE##_SECTION_ELSE_NESTED(95) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) or 5,5,5; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) END_##TYPE##_SECTION(0, 0) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) /* Feature section with nested alt section, else taken */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) BEGIN_##TYPE##_SECTION \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) BEGIN_##TYPE##_SECTION_NESTED(95) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) ##TYPE##_SECTION_ELSE_NESTED(95) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) or 5,5,5; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) END_##TYPE##_SECTION(0, 0) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) /* Feature section with nested alt section, all nop'ed */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386) BEGIN_##TYPE##_SECTION \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) BEGIN_##TYPE##_SECTION_NESTED(95) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390) ##TYPE##_SECTION_ELSE_NESTED(95) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391) or 5,5,5; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392) ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) END_##TYPE##_SECTION(0, 1) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397) /* Nested alt sections, default with inner default taken */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398) BEGIN_##TYPE##_SECTION \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) BEGIN_##TYPE##_SECTION_NESTED(95) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402) ##TYPE##_SECTION_ELSE_NESTED(95) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) or 5,5,5; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406) ##TYPE##_SECTION_ELSE \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407) or 31,31,31; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) BEGIN_##TYPE##_SECTION_NESTED(94) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) or 5,5,5; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410) ##TYPE##_SECTION_ELSE_NESTED(94) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412) ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413) or 31,31,31; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414) ALT_##TYPE##_SECTION_END(0, 0) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417) /* Nested alt sections, default with inner else taken */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418) BEGIN_##TYPE##_SECTION \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420) BEGIN_##TYPE##_SECTION_NESTED(95) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422) ##TYPE##_SECTION_ELSE_NESTED(95) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423) or 5,5,5; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424) ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426) ##TYPE##_SECTION_ELSE \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427) or 31,31,31; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428) BEGIN_##TYPE##_SECTION_NESTED(94) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) or 5,5,5; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430) ##TYPE##_SECTION_ELSE_NESTED(94) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432) ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433) or 31,31,31; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434) ALT_##TYPE##_SECTION_END(0, 0) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437) /* Nested alt sections, else with inner default taken */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438) BEGIN_##TYPE##_SECTION \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440) BEGIN_##TYPE##_SECTION_NESTED(95) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442) ##TYPE##_SECTION_ELSE_NESTED(95) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443) or 5,5,5; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444) ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446) ##TYPE##_SECTION_ELSE \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447) or 31,31,31; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448) BEGIN_##TYPE##_SECTION_NESTED(94) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449) or 5,5,5; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450) ##TYPE##_SECTION_ELSE_NESTED(94) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452) ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453) or 31,31,31; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454) ALT_##TYPE##_SECTION_END(0, 1) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 456) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 457) /* Nested alt sections, else with inner else taken */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 458) BEGIN_##TYPE##_SECTION \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 459) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 460) BEGIN_##TYPE##_SECTION_NESTED(95) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 461) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 462) ##TYPE##_SECTION_ELSE_NESTED(95) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 463) or 5,5,5; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 464) ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 465) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 466) ##TYPE##_SECTION_ELSE \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 467) or 31,31,31; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 468) BEGIN_##TYPE##_SECTION_NESTED(94) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 469) or 5,5,5; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 470) ##TYPE##_SECTION_ELSE_NESTED(94) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 471) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 472) ALT_##TYPE##_SECTION_END_NESTED(0, 1, 94) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 473) or 31,31,31; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 474) ALT_##TYPE##_SECTION_END(0, 1) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 475) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 476) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 477) /* Nested alt sections, else can have large else case */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 478) BEGIN_##TYPE##_SECTION \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 479) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 480) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 481) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 482) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 483) ##TYPE##_SECTION_ELSE \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 484) BEGIN_##TYPE##_SECTION_NESTED(94) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 485) or 5,5,5; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 486) or 5,5,5; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 487) or 5,5,5; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 488) or 5,5,5; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 489) ##TYPE##_SECTION_ELSE_NESTED(94) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 490) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 491) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 492) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 493) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 494) ALT_##TYPE##_SECTION_END_NESTED(0, 1, 94) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 495) ALT_##TYPE##_SECTION_END(0, 1) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 496) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 497) or 1,1,1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 498)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 499) #define MAKE_MACRO_TEST_EXPECTED(TYPE) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 500) globl(ftr_fixup_test_ ##TYPE##_macros_expected) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 501) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 502) /* Basic test, this section should all be nop'ed */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 503) /* BEGIN_##TYPE##_SECTION */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 504) nop; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 505) nop; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 506) nop; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 507) /* END_##TYPE##_SECTION(0, 1) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 508) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 509) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 510) /* Basic test, this section should NOT be nop'ed */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 511) /* BEGIN_##TYPE##_SECTION */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 512) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 513) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 514) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 515) /* END_##TYPE##_SECTION(0, 0) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 516) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 517) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 518) /* Nesting test, inner section should be nop'ed */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 519) /* BEGIN_##TYPE##_SECTION */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 520) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 521) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 522) /* BEGIN_##TYPE##_SECTION_NESTED(80) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 523) nop; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 524) nop; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 525) /* END_##TYPE##_SECTION_NESTED(0, 1, 80) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 526) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 527) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 528) /* END_##TYPE##_SECTION(0, 0) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 529) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 530) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 531) /* Nesting test, whole section should be nop'ed */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 532) /* NB. inner section is not nop'ed, but then entire outer is */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 533) /* BEGIN_##TYPE##_SECTION */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 534) nop; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 535) nop; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 536) /* BEGIN_##TYPE##_SECTION_NESTED(80) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 537) nop; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 538) nop; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 539) /* END_##TYPE##_SECTION_NESTED(0, 0, 80) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 540) nop; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 541) nop; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 542) /* END_##TYPE##_SECTION(0, 1) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 543) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 544) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 545) /* Nesting test, none should be nop'ed */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 546) /* BEGIN_##TYPE##_SECTION */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 547) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 548) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 549) /* BEGIN_##TYPE##_SECTION_NESTED(80) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 550) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 551) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 552) /* END_##TYPE##_SECTION_NESTED(0, 0, 80) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 553) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 554) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 555) /* END_##TYPE##_SECTION(0, 0) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 556) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 557) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 558) /* Basic alt section test, default case should be taken */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 559) /* BEGIN_##TYPE##_SECTION */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 560) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 561) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 562) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 563) /* ##TYPE##_SECTION_ELSE */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 564) /* or 5,5,5; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 565) /* or 5,5,5; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 566) /* ALT_##TYPE##_SECTION_END(0, 0) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 567) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 568) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 569) /* Basic alt section test, else case should be taken */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 570) /* BEGIN_##TYPE##_SECTION */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 571) /* or 3,3,3; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 572) /* or 3,3,3; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 573) /* or 3,3,3; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 574) /* ##TYPE##_SECTION_ELSE */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 575) or 31,31,31; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 576) or 31,31,31; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 577) or 31,31,31; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 578) /* ALT_##TYPE##_SECTION_END(0, 1) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 579) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 580) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 581) /* Alt with smaller else case, should be padded with nops */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 582) /* BEGIN_##TYPE##_SECTION */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 583) /* or 3,3,3; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 584) /* or 3,3,3; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 585) /* or 3,3,3; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 586) /* ##TYPE##_SECTION_ELSE */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 587) or 31,31,31; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 588) nop; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 589) nop; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 590) /* ALT_##TYPE##_SECTION_END(0, 1) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 591) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 592) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 593) /* Alt section with nested section in default case */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 594) /* Default case should be taken, with nop'ed inner section */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 595) /* BEGIN_##TYPE##_SECTION */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 596) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 597) /* BEGIN_##TYPE##_SECTION_NESTED(95) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 598) nop; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 599) nop; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 600) /* END_##TYPE##_SECTION_NESTED(0, 1, 95) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 601) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 602) /* ##TYPE##_SECTION_ELSE */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 603) /* or 2,2,2; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 604) /* or 2,2,2; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 605) /* ALT_##TYPE##_SECTION_END(0, 0) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 606) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 607) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 608) /* Alt section with nested section in else, default taken */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 609) /* BEGIN_##TYPE##_SECTION */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 610) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 611) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 612) or 3,3,3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 613) /* ##TYPE##_SECTION_ELSE */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 614) /* or 5,5,5; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 615) /* BEGIN_##TYPE##_SECTION_NESTED(95) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 616) /* or 3,3,3; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 617) /* END_##TYPE##_SECTION_NESTED(0, 1, 95) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 618) /* or 5,5,5; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 619) /* ALT_##TYPE##_SECTION_END(0, 0) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 620) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 621) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 622) /* Alt section with nested section in else, else taken & nop */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 623) /* BEGIN_##TYPE##_SECTION */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 624) /* or 3,3,3; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 625) /* or 3,3,3; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 626) /* or 3,3,3; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 627) /* ##TYPE##_SECTION_ELSE */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 628) or 5,5,5; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 629) /* BEGIN_##TYPE##_SECTION_NESTED(95) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 630) nop; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 631) /* END_##TYPE##_SECTION_NESTED(0, 1, 95) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 632) or 5,5,5; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 633) /* ALT_##TYPE##_SECTION_END(0, 1) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 634) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 635) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 636) /* Feature section with nested alt section, default taken */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 637) /* BEGIN_##TYPE##_SECTION */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 638) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 639) /* BEGIN_##TYPE##_SECTION_NESTED(95) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 640) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 641) /* ##TYPE##_SECTION_ELSE_NESTED(95) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 642) /* or 5,5,5; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 643) /* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 644) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 645) /* END_##TYPE##_SECTION(0, 0) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 646) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 647) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 648) /* Feature section with nested alt section, else taken */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 649) /* BEGIN_##TYPE##_SECTION */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 650) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 651) /* BEGIN_##TYPE##_SECTION_NESTED(95) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 652) /* or 1,1,1; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 653) /* ##TYPE##_SECTION_ELSE_NESTED(95) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 654) or 5,5,5; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 655) /* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 656) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 657) /* END_##TYPE##_SECTION(0, 0) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 658) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 659) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 660) /* Feature section with nested alt section, all nop'ed */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 661) /* BEGIN_##TYPE##_SECTION */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 662) nop; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 663) /* BEGIN_##TYPE##_SECTION_NESTED(95) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 664) nop; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 665) /* ##TYPE##_SECTION_ELSE_NESTED(95) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 666) /* or 5,5,5; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 667) /* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 668) nop; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 669) /* END_##TYPE##_SECTION(0, 1) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 670) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 671) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 672) /* Nested alt sections, default with inner default taken */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 673) /* BEGIN_##TYPE##_SECTION */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 674) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 675) /* BEGIN_##TYPE##_SECTION_NESTED(95) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 676) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 677) /* ##TYPE##_SECTION_ELSE_NESTED(95) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 678) /* or 5,5,5; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 679) /* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 95) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 680) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 681) /* ##TYPE##_SECTION_ELSE */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 682) /* or 31,31,31; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 683) /* BEGIN_##TYPE##_SECTION_NESTED(94) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 684) /* or 5,5,5; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 685) /* ##TYPE##_SECTION_ELSE_NESTED(94) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 686) /* or 1,1,1; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 687) /* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 688) /* or 31,31,31; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 689) /* ALT_##TYPE##_SECTION_END(0, 0) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 690) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 691) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 692) /* Nested alt sections, default with inner else taken */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 693) /* BEGIN_##TYPE##_SECTION */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 694) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 695) /* BEGIN_##TYPE##_SECTION_NESTED(95) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 696) /* or 1,1,1; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 697) /* ##TYPE##_SECTION_ELSE_NESTED(95) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 698) or 5,5,5; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 699) /* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 700) or 2,2,2; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 701) /* ##TYPE##_SECTION_ELSE */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 702) /* or 31,31,31; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 703) /* BEGIN_##TYPE##_SECTION_NESTED(94) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 704) /* or 5,5,5; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 705) /* ##TYPE##_SECTION_ELSE_NESTED(94) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 706) /* or 1,1,1; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 707) /* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 708) /* or 31,31,31; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 709) /* ALT_##TYPE##_SECTION_END(0, 0) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 710) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 711) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 712) /* Nested alt sections, else with inner default taken */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 713) /* BEGIN_##TYPE##_SECTION */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 714) /* or 2,2,2; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 715) /* BEGIN_##TYPE##_SECTION_NESTED(95) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 716) /* or 1,1,1; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 717) /* ##TYPE##_SECTION_ELSE_NESTED(95) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 718) /* or 5,5,5; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 719) /* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 720) /* or 2,2,2; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 721) /* ##TYPE##_SECTION_ELSE */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 722) or 31,31,31; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 723) /* BEGIN_##TYPE##_SECTION_NESTED(94) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 724) or 5,5,5; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 725) /* ##TYPE##_SECTION_ELSE_NESTED(94) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 726) /* or 1,1,1; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 727) /* ALT_##TYPE##_SECTION_END_NESTED(0, 0, 94) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 728) or 31,31,31; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 729) /* ALT_##TYPE##_SECTION_END(0, 1) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 730) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 731) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 732) /* Nested alt sections, else with inner else taken */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 733) /* BEGIN_##TYPE##_SECTION */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 734) /* or 2,2,2; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 735) /* BEGIN_##TYPE##_SECTION_NESTED(95) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 736) /* or 1,1,1; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 737) /* ##TYPE##_SECTION_ELSE_NESTED(95) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 738) /* or 5,5,5; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 739) /* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 95) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 740) /* or 2,2,2; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 741) /* ##TYPE##_SECTION_ELSE */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 742) or 31,31,31; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 743) /* BEGIN_##TYPE##_SECTION_NESTED(94) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 744) /* or 5,5,5; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 745) /* ##TYPE##_SECTION_ELSE_NESTED(94) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 746) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 747) /* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 94) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 748) or 31,31,31; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 749) /* ALT_##TYPE##_SECTION_END(0, 1) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 750) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 751) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 752) /* Nested alt sections, else can have large else case */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 753) /* BEGIN_##TYPE##_SECTION */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 754) /* or 2,2,2; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 755) /* or 2,2,2; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 756) /* or 2,2,2; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 757) /* or 2,2,2; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 758) /* ##TYPE##_SECTION_ELSE */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 759) /* BEGIN_##TYPE##_SECTION_NESTED(94) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 760) /* or 5,5,5; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 761) /* or 5,5,5; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 762) /* or 5,5,5; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 763) /* or 5,5,5; */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 764) /* ##TYPE##_SECTION_ELSE_NESTED(94) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 765) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 766) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 767) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 768) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 769) /* ALT_##TYPE##_SECTION_END_NESTED(0, 1, 94) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 770) /* ALT_##TYPE##_SECTION_END(0, 1) */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 771) or 1,1,1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 772) or 1,1,1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 773)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 774) MAKE_MACRO_TEST(FTR);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 775) MAKE_MACRO_TEST_EXPECTED(FTR);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 776)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 777) #ifdef CONFIG_PPC64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 778) MAKE_MACRO_TEST(FW_FTR);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 779) MAKE_MACRO_TEST_EXPECTED(FW_FTR);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 780) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 781)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 782) globl(lwsync_fixup_test)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 783) 1: or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 784) LWSYNC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 785) globl(end_lwsync_fixup_test)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 786)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 787) globl(lwsync_fixup_test_expected_LWSYNC)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 788) 1: or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 789) lwsync
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 790)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 791) globl(lwsync_fixup_test_expected_SYNC)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 792) 1: or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 793) sync
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 794)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 795) globl(ftr_fixup_prefix1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 796) or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 797) .long OP_PREFIX << 26
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 798) .long 0x0000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 799) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 800) globl(end_ftr_fixup_prefix1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 801)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 802) globl(ftr_fixup_prefix1_orig)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 803) or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 804) .long OP_PREFIX << 26
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 805) .long 0x0000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 806) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 807)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 808) globl(ftr_fixup_prefix1_expected)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 809) or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 810) nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 811) nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 812) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 813)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 814) globl(ftr_fixup_prefix2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 815) or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 816) .long OP_PREFIX << 26
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 817) .long 0x0000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 818) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 819) globl(end_ftr_fixup_prefix2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 820)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 821) globl(ftr_fixup_prefix2_orig)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 822) or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 823) .long OP_PREFIX << 26
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 824) .long 0x0000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 825) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 826)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 827) globl(ftr_fixup_prefix2_alt)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 828) .long OP_PREFIX << 26
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 829) .long 0x0000001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 830)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 831) globl(ftr_fixup_prefix2_expected)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 832) or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 833) .long OP_PREFIX << 26
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 834) .long 0x0000001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 835) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 836)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 837) globl(ftr_fixup_prefix3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 838) or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 839) .long OP_PREFIX << 26
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 840) .long 0x0000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 841) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 842) or 3,3,3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 843) globl(end_ftr_fixup_prefix3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 844)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 845) globl(ftr_fixup_prefix3_orig)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 846) or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 847) .long OP_PREFIX << 26
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 848) .long 0x0000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 849) or 2,2,2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 850) or 3,3,3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 851)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 852) globl(ftr_fixup_prefix3_alt)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 853) .long OP_PREFIX << 26
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 854) .long 0x0000001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 855) nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 856)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 857) globl(ftr_fixup_prefix3_expected)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 858) or 1,1,1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 859) .long OP_PREFIX << 26
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 860) .long 0x0000001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 861) nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 862) or 3,3,3