Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / PowerPC / aix-lower-jump-table.ll
blob979dfa08beaddb126aa1d4ac8b85ca6e80403e4b
1 ; RUN: llc -mtriple powerpc-ibm-aix-xcoff -ppc-min-jump-table-entries=4 -code-model=small < %s | FileCheck \
2 ; RUN: --check-prefixes=32SMALL-ASM,SMALL-ASM %s
4 ; RUN: llc -mtriple powerpc-ibm-aix-xcoff -ppc-min-jump-table-entries=4 -code-model=large < %s | FileCheck \
5 ; RUN: --check-prefixes=32LARGE-ASM,LARGE-ASM %s
7 ; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -ppc-min-jump-table-entries=4 -code-model=small < %s | FileCheck \
8 ; RUN: --check-prefixes=64SMALL-ASM,SMALL-ASM %s
10 ; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -ppc-min-jump-table-entries=4 -code-model=large < %s | FileCheck \
11 ; RUN: --check-prefixes=64LARGE-ASM,LARGE-ASM %s
13 ; RUN: llc -mtriple powerpc-ibm-aix-xcoff -ppc-min-jump-table-entries=4 -function-sections < %s | FileCheck \
14 ; RUN: --check-prefix=FUNC-ASM %s
16 ; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -ppc-min-jump-table-entries=4 -function-sections < %s | FileCheck \
17 ; RUN: --check-prefix=FUNC-ASM %s
19 define i32 @jump_table(i32 %a) {
20 entry:
21   switch i32 %a, label %sw.epilog [
22     i32 1, label %sw.bb
23     i32 2, label %sw.bb1
24     i32 3, label %sw.bb2
25     i32 4, label %sw.bb3
26   ]
28 sw.bb:
29   tail call void asm sideeffect "", ""()
30   br label %sw.epilog
32 sw.bb1:
33   tail call void asm sideeffect "", ""()
34   br label %sw.epilog
36 sw.bb2:
37   tail call void asm sideeffect "", ""()
38   br label %sw.epilog
40 sw.bb3:
41   tail call void asm sideeffect "", ""()
42   br label %sw.epilog
44 sw.epilog:
45   ret i32 0
47 ; 32SMALL-ASM-LABEL: jump_table
48 ; 32SMALL-ASM: .jump_table:
49 ; 32SMALL-ASM:      addi 3, 3, -1
50 ; 32SMALL-ASM:      cmplwi 3, 3
51 ; 32SMALL-ASM:      bgt 0, L..BB0_3
52 ; 32SMALL-ASM:      lwz 4, L..C0(2)
53 ; 32SMALL-ASM:      slwi 3, 3, 2
54 ; 32SMALL-ASM:      lwzx 3, 3, 4
55 ; 32SMALL-ASM:      add 3, 3, 4
56 ; 32SMALL-ASM:      mtctr 3
57 ; 32SMALL-ASM:      bctr
58 ; 32SMALL-ASM: L..BB0_2:
59 ; 32SMALL-ASM: L..BB0_3:
60 ; 32SMALL-ASM: L..BB0_4:
61 ; 32SMALL-ASM: L..BB0_5:
62 ; 32SMALL-ASM: L..BB0_6:
63 ; 32SMALL-ASM:      li 3, 0
64 ; 32SMALL-ASM:      blr
65 ; 32SMALL-ASM:      .csect .rodata[RO],2
66 ; 32SMALL-ASM:      .align  2
67 ; 32SMALL-ASM: L..JTI0_0:
68 ; 32SMALL-ASM:      .vbyte      4, L..BB0_2-L..JTI0_0
69 ; 32SMALL-ASM:      .vbyte      4, L..BB0_6-L..JTI0_0
70 ; 32SMALL-ASM:      .vbyte      4, L..BB0_4-L..JTI0_0
71 ; 32SMALL-ASM:      .vbyte      4, L..BB0_5-L..JTI0_0
73 ; 32LARGE-ASM-LABEL: jump_table
74 ; 32LARGE-ASM: .jump_table:
75 ; 32LARGE-ASM:      addi 3, 3, -1
76 ; 32LARGE-ASM:      cmplwi  3, 3
77 ; 32LARGE-ASM:      bgt     0, L..BB0_3
78 ; 32LARGE-ASM:      addis 4, L..C0@u(2)
79 ; 32LARGE-ASM:      slwi 3, 3, 2
80 ; 32LARGE-ASM:      lwz 4, L..C0@l(4)
81 ; 32LARGE-ASM:      lwzx 3, 3, 4
82 ; 32LARGE-ASM:      add 3, 3, 4
83 ; 32LARGE-ASM:      mtctr 3
84 ; 32LARGE-ASM:      bctr
85 ; 32LARGE-ASM: L..BB0_2:
86 ; 32LARGE-ASM: L..BB0_3:
87 ; 32LARGE-ASM: L..BB0_4:
88 ; 32LARGE-ASM: L..BB0_5:
89 ; 32LARGE-ASM: L..BB0_6:
90 ; 32LARGE-ASM:      li 3, 0
91 ; 32LARGE-ASM:      blr
92 ; 32LARGE-ASM:      .csect .rodata[RO],2
93 ; 32LARGE-ASM:      .align  2
94 ; 32LARGE-ASM: L..JTI0_0:
95 ; 32LARGE-ASM:      .vbyte      4, L..BB0_2-L..JTI0_0
96 ; 32LARGE-ASM:      .vbyte      4, L..BB0_6-L..JTI0_0
97 ; 32LARGE-ASM:      .vbyte      4, L..BB0_4-L..JTI0_0
98 ; 32LARGE-ASM:      .vbyte      4, L..BB0_5-L..JTI0_0
100 ; 64SMALL-ASM-LABEL: jump_table
101 ; 64SMALL-ASM: .jump_table:
102 ; 64SMALL-ASM:      addi 3, 3, -1
103 ; 64SMALL-ASM:      cmplwi  3, 3
104 ; 64SMALL-ASM:      bgt     0, L..BB0_3
105 ; 64SMALL-ASM:      ld 4, L..C0(2)
106 ; 64SMALL-ASM:      rldic 3, 3, 2, 30
107 ; 64SMALL-ASM:      lwax 3, 3, 4
108 ; 64SMALL-ASM:      add 3, 3, 4
109 ; 64SMALL-ASM:      mtctr 3
110 ; 64SMALL-ASM:      bctr
111 ; 64SMALL-ASM: L..BB0_2:
112 ; 64SMALL-ASM: L..BB0_3:
113 ; 64SMALL-ASM: L..BB0_4:
114 ; 64SMALL-ASM: L..BB0_5:
115 ; 64SMALL-ASM: L..BB0_6:
116 ; 64SMALL-ASM:      li 3, 0
117 ; 64SMALL-ASM:      blr
118 ; 64SMALL-ASM:      .csect .rodata[RO],2
119 ; 64SMALL-ASM:      .align  2
120 ; 64SMALL-ASM: L..JTI0_0:
121 ; 64SMALL-ASM:      .vbyte      4, L..BB0_2-L..JTI0_0
122 ; 64SMALL-ASM:      .vbyte      4, L..BB0_6-L..JTI0_0
123 ; 64SMALL-ASM:      .vbyte      4, L..BB0_4-L..JTI0_0
124 ; 64SMALL-ASM:      .vbyte      4, L..BB0_5-L..JTI0_0
126 ; 64LARGE-ASM-LABEL: jump_table
127 ; 64LARGE-ASM: .jump_table:
128 ; 64LARGE-ASM:      addi 3, 3, -1
129 ; 64LARGE-ASM:      cmplwi  3, 3
130 ; 64LARGE-ASM:      bgt     0, L..BB0_3
131 ; 64LARGE-ASM:      addis 4, L..C0@u(2)
132 ; 64LARGE-ASM:      rldic 3, 3, 2, 30
133 ; 64LARGE-ASM:      ld 4, L..C0@l(4)
134 ; 64LARGE-ASM:      lwax 3, 3, 4
135 ; 64LARGE-ASM:      add 3, 3, 4
136 ; 64LARGE-ASM:      mtctr 3
137 ; 64LARGE-ASM:      bctr
138 ; 64LARGE-ASM: L..BB0_2:
139 ; 64LARGE-ASM: L..BB0_3:
140 ; 64LARGE-ASM: L..BB0_4:
141 ; 64LARGE-ASM: L..BB0_5:
142 ; 64LARGE-ASM: L..BB0_6:
143 ; 64LARGE-ASM:      li 3, 0
144 ; 64LARGE-ASM:      blr
145 ; 64LARGE-ASM:      .csect .rodata[RO],2
146 ; 64LARGE-ASM:      .align  2
147 ; 64LARGE-ASM: L..JTI0_0:
148 ; 64LARGE-ASM:      .vbyte      4, L..BB0_2-L..JTI0_0
149 ; 64LARGE-ASM:      .vbyte      4, L..BB0_6-L..JTI0_0
150 ; 64LARGE-ASM:      .vbyte      4, L..BB0_4-L..JTI0_0
151 ; 64LARGE-ASM:      .vbyte      4, L..BB0_5-L..JTI0_0
153 ; FUNC-ASM:         .csect .jump_table[PR],5
154 ; FUNC-ASM: L..BB0_2:
155 ; FUNC-ASM: L..BB0_3:
156 ; FUNC-ASM: L..BB0_4:
157 ; FUNC-ASM: L..BB0_5:
158 ; FUNC-ASM: L..BB0_6:
159 ; FUNC-ASM:         li 3, 0
160 ; FUNC-ASM:         blr
161 ; FUNC-ASM:         .csect .rodata.jmp..jump_table[RO],2
162 ; FUNC-ASM:         .align  2
163 ; FUNC-ASM: L..JTI0_0:
164 ; FUNC-ASM:         .vbyte  4, L..BB0_2-L..JTI0_0
165 ; FUNC-ASM:         .vbyte  4, L..BB0_6-L..JTI0_0
166 ; FUNC-ASM:         .vbyte  4, L..BB0_4-L..JTI0_0
167 ; FUNC-ASM:         .vbyte  4, L..BB0_5-L..JTI0_0
169 ; SMALL-ASM: .toc
170 ; SMALL-ASM: .tc L..JTI0_0[TC],L..JTI0_0
172 ; LARGE-ASM: .toc
173 ; LARGE-ASM: .tc L..JTI0_0[TE],L..JTI0_0