[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / CodeGen / Mips / GlobalISel / irtranslator / extend_args.ll
blobf97306ab0b13fa193d5b6eb70f4842090f4e54ca
1 ; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 ; RUN: llc -O0 -mtriple=mipsel-linux-gnu -global-isel -stop-after=irtranslator -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32
5 define  signext i8 @sext_arg_i8(i8 signext %a) {
6   ; MIPS32-LABEL: name: sext_arg_i8
7   ; MIPS32: bb.1.entry:
8   ; MIPS32:   liveins: $a0
9   ; MIPS32:   [[COPY:%[0-9]+]]:_(s32) = COPY $a0
10   ; MIPS32:   [[ASSERT_SEXT:%[0-9]+]]:_(s32) = G_ASSERT_SEXT [[COPY]], 8
11   ; MIPS32:   [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[ASSERT_SEXT]](s32)
12   ; MIPS32:   [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC]](s8)
13   ; MIPS32:   $v0 = COPY [[SEXT]](s32)
14   ; MIPS32:   RetRA implicit $v0
15 entry:
16   ret i8 %a
19 define zeroext i8 @zext_arg_i8(i8 zeroext %a) {
20   ; MIPS32-LABEL: name: zext_arg_i8
21   ; MIPS32: bb.1.entry:
22   ; MIPS32:   liveins: $a0
23   ; MIPS32:   [[COPY:%[0-9]+]]:_(s32) = COPY $a0
24   ; MIPS32:   [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY]], 8
25   ; MIPS32:   [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[ASSERT_ZEXT]](s32)
26   ; MIPS32:   [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[TRUNC]](s8)
27   ; MIPS32:   $v0 = COPY [[ZEXT]](s32)
28   ; MIPS32:   RetRA implicit $v0
29 entry:
30   ret i8 %a
33 define i8 @aext_arg_i8(i8 %a) {
34   ; MIPS32-LABEL: name: aext_arg_i8
35   ; MIPS32: bb.1.entry:
36   ; MIPS32:   liveins: $a0
37   ; MIPS32:   [[COPY:%[0-9]+]]:_(s32) = COPY $a0
38   ; MIPS32:   [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s32)
39   ; MIPS32:   [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[TRUNC]](s8)
40   ; MIPS32:   $v0 = COPY [[ANYEXT]](s32)
41   ; MIPS32:   RetRA implicit $v0
42 entry:
43   ret i8 %a
46 declare signext i8 @sext_stack_arg_i8(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i8 %a)
47 declare zeroext i8 @zext_stack_arg_i8(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i8 %a)
48 declare i8 @aext_stack_arg_i8(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i8 %a)
50 define signext i8 @call_sext_stack_arg_i8(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i8 signext %a) {
51   ; MIPS32-LABEL: name: call_sext_stack_arg_i8
52   ; MIPS32: bb.1.entry:
53   ; MIPS32:   liveins: $a0, $a1, $a2, $a3
54   ; MIPS32:   [[COPY:%[0-9]+]]:_(s32) = COPY $a0
55   ; MIPS32:   [[COPY1:%[0-9]+]]:_(s32) = COPY $a1
56   ; MIPS32:   [[COPY2:%[0-9]+]]:_(s32) = COPY $a2
57   ; MIPS32:   [[COPY3:%[0-9]+]]:_(s32) = COPY $a3
58   ; MIPS32:   [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.0
59   ; MIPS32:   [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p0) :: (load (s32) from %fixed-stack.0, align 8)
60   ; MIPS32:   [[ASSERT_SEXT:%[0-9]+]]:_(s32) = G_ASSERT_SEXT [[LOAD]], 8
61   ; MIPS32:   [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[ASSERT_SEXT]](s32)
62   ; MIPS32:   ADJCALLSTACKDOWN 24, 0, implicit-def $sp, implicit $sp
63   ; MIPS32:   $a0 = COPY [[COPY]](s32)
64   ; MIPS32:   $a1 = COPY [[COPY1]](s32)
65   ; MIPS32:   $a2 = COPY [[COPY2]](s32)
66   ; MIPS32:   $a3 = COPY [[COPY3]](s32)
67   ; MIPS32:   [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC]](s8)
68   ; MIPS32:   [[COPY4:%[0-9]+]]:_(p0) = COPY $sp
69   ; MIPS32:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
70   ; MIPS32:   [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY4]], [[C]](s32)
71   ; MIPS32:   G_STORE [[SEXT]](s32), [[PTR_ADD]](p0) :: (store (s32) into stack + 16, align 8)
72   ; MIPS32:   JAL @sext_stack_arg_i8, csr_o32, implicit-def $ra, implicit-def $sp, implicit $a0, implicit $a1, implicit $a2, implicit $a3, implicit-def $v0
73   ; MIPS32:   [[COPY5:%[0-9]+]]:_(s32) = COPY $v0
74   ; MIPS32:   [[ASSERT_SEXT1:%[0-9]+]]:_(s32) = G_ASSERT_SEXT [[COPY5]], 8
75   ; MIPS32:   [[TRUNC1:%[0-9]+]]:_(s8) = G_TRUNC [[ASSERT_SEXT1]](s32)
76   ; MIPS32:   ADJCALLSTACKUP 24, 0, implicit-def $sp, implicit $sp
77   ; MIPS32:   [[SEXT1:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC1]](s8)
78   ; MIPS32:   $v0 = COPY [[SEXT1]](s32)
79   ; MIPS32:   RetRA implicit $v0
80 entry:
81   %call = call signext i8 @sext_stack_arg_i8(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i8 signext %a)
82   ret i8 %call
85 define zeroext i8 @call_zext_stack_arg_i8(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i8 zeroext %a) {
86   ; MIPS32-LABEL: name: call_zext_stack_arg_i8
87   ; MIPS32: bb.1.entry:
88   ; MIPS32:   liveins: $a0, $a1, $a2, $a3
89   ; MIPS32:   [[COPY:%[0-9]+]]:_(s32) = COPY $a0
90   ; MIPS32:   [[COPY1:%[0-9]+]]:_(s32) = COPY $a1
91   ; MIPS32:   [[COPY2:%[0-9]+]]:_(s32) = COPY $a2
92   ; MIPS32:   [[COPY3:%[0-9]+]]:_(s32) = COPY $a3
93   ; MIPS32:   [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.0
94   ; MIPS32:   [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p0) :: (load (s32) from %fixed-stack.0, align 8)
95   ; MIPS32:   [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[LOAD]], 8
96   ; MIPS32:   [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[ASSERT_ZEXT]](s32)
97   ; MIPS32:   ADJCALLSTACKDOWN 24, 0, implicit-def $sp, implicit $sp
98   ; MIPS32:   $a0 = COPY [[COPY]](s32)
99   ; MIPS32:   $a1 = COPY [[COPY1]](s32)
100   ; MIPS32:   $a2 = COPY [[COPY2]](s32)
101   ; MIPS32:   $a3 = COPY [[COPY3]](s32)
102   ; MIPS32:   [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[TRUNC]](s8)
103   ; MIPS32:   [[COPY4:%[0-9]+]]:_(p0) = COPY $sp
104   ; MIPS32:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
105   ; MIPS32:   [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY4]], [[C]](s32)
106   ; MIPS32:   G_STORE [[ZEXT]](s32), [[PTR_ADD]](p0) :: (store (s32) into stack + 16, align 8)
107   ; MIPS32:   JAL @zext_stack_arg_i8, csr_o32, implicit-def $ra, implicit-def $sp, implicit $a0, implicit $a1, implicit $a2, implicit $a3, implicit-def $v0
108   ; MIPS32:   [[COPY5:%[0-9]+]]:_(s32) = COPY $v0
109   ; MIPS32:   [[ASSERT_ZEXT1:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY5]], 8
110   ; MIPS32:   [[TRUNC1:%[0-9]+]]:_(s8) = G_TRUNC [[ASSERT_ZEXT1]](s32)
111   ; MIPS32:   ADJCALLSTACKUP 24, 0, implicit-def $sp, implicit $sp
112   ; MIPS32:   [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[TRUNC1]](s8)
113   ; MIPS32:   $v0 = COPY [[ZEXT1]](s32)
114   ; MIPS32:   RetRA implicit $v0
115 entry:
116   %call = call zeroext i8 @zext_stack_arg_i8(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i8 zeroext %a)
117   ret i8 %call
120 define i8 @call_aext_stack_arg_i8(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i8 %a) {
121   ; MIPS32-LABEL: name: call_aext_stack_arg_i8
122   ; MIPS32: bb.1.entry:
123   ; MIPS32:   liveins: $a0, $a1, $a2, $a3
124   ; MIPS32:   [[COPY:%[0-9]+]]:_(s32) = COPY $a0
125   ; MIPS32:   [[COPY1:%[0-9]+]]:_(s32) = COPY $a1
126   ; MIPS32:   [[COPY2:%[0-9]+]]:_(s32) = COPY $a2
127   ; MIPS32:   [[COPY3:%[0-9]+]]:_(s32) = COPY $a3
128   ; MIPS32:   [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.0
129   ; MIPS32:   [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p0) :: (load (s32) from %fixed-stack.0, align 8)
130   ; MIPS32:   [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[LOAD]](s32)
131   ; MIPS32:   ADJCALLSTACKDOWN 24, 0, implicit-def $sp, implicit $sp
132   ; MIPS32:   $a0 = COPY [[COPY]](s32)
133   ; MIPS32:   $a1 = COPY [[COPY1]](s32)
134   ; MIPS32:   $a2 = COPY [[COPY2]](s32)
135   ; MIPS32:   $a3 = COPY [[COPY3]](s32)
136   ; MIPS32:   [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[TRUNC]](s8)
137   ; MIPS32:   [[COPY4:%[0-9]+]]:_(p0) = COPY $sp
138   ; MIPS32:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
139   ; MIPS32:   [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY4]], [[C]](s32)
140   ; MIPS32:   G_STORE [[ANYEXT]](s32), [[PTR_ADD]](p0) :: (store (s32) into stack + 16, align 8)
141   ; MIPS32:   JAL @aext_stack_arg_i8, csr_o32, implicit-def $ra, implicit-def $sp, implicit $a0, implicit $a1, implicit $a2, implicit $a3, implicit-def $v0
142   ; MIPS32:   [[COPY5:%[0-9]+]]:_(s32) = COPY $v0
143   ; MIPS32:   [[TRUNC1:%[0-9]+]]:_(s8) = G_TRUNC [[COPY5]](s32)
144   ; MIPS32:   ADJCALLSTACKUP 24, 0, implicit-def $sp, implicit $sp
145   ; MIPS32:   [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[TRUNC1]](s8)
146   ; MIPS32:   $v0 = COPY [[ANYEXT1]](s32)
147   ; MIPS32:   RetRA implicit $v0
148 entry:
149   %call = call i8 @aext_stack_arg_i8(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i8 %a)
150   ret i8 %call
154 define  signext i16 @sext_arg_i16(i16 signext %a) {
155   ; MIPS32-LABEL: name: sext_arg_i16
156   ; MIPS32: bb.1.entry:
157   ; MIPS32:   liveins: $a0
158   ; MIPS32:   [[COPY:%[0-9]+]]:_(s32) = COPY $a0
159   ; MIPS32:   [[ASSERT_SEXT:%[0-9]+]]:_(s32) = G_ASSERT_SEXT [[COPY]], 16
160   ; MIPS32:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[ASSERT_SEXT]](s32)
161   ; MIPS32:   [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC]](s16)
162   ; MIPS32:   $v0 = COPY [[SEXT]](s32)
163   ; MIPS32:   RetRA implicit $v0
164 entry:
165   ret i16 %a
168 define zeroext i16 @zext_arg_i16(i16 zeroext %a) {
169   ; MIPS32-LABEL: name: zext_arg_i16
170   ; MIPS32: bb.1.entry:
171   ; MIPS32:   liveins: $a0
172   ; MIPS32:   [[COPY:%[0-9]+]]:_(s32) = COPY $a0
173   ; MIPS32:   [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY]], 16
174   ; MIPS32:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[ASSERT_ZEXT]](s32)
175   ; MIPS32:   [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[TRUNC]](s16)
176   ; MIPS32:   $v0 = COPY [[ZEXT]](s32)
177   ; MIPS32:   RetRA implicit $v0
178 entry:
179   ret i16 %a
182 define i16 @aext_arg_i16(i16 %a) {
183   ; MIPS32-LABEL: name: aext_arg_i16
184   ; MIPS32: bb.1.entry:
185   ; MIPS32:   liveins: $a0
186   ; MIPS32:   [[COPY:%[0-9]+]]:_(s32) = COPY $a0
187   ; MIPS32:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
188   ; MIPS32:   [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[TRUNC]](s16)
189   ; MIPS32:   $v0 = COPY [[ANYEXT]](s32)
190   ; MIPS32:   RetRA implicit $v0
191 entry:
192   ret i16 %a
195 declare signext i16 @sext_stack_arg_i16(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i16 %a)
196 declare zeroext i16 @zext_stack_arg_i16(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i16 %a)
197 declare i16 @aext_stack_arg_i16(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i16 %a)
199 define signext i16 @call_sext_stack_arg_i16(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i16 signext %a) {
200   ; MIPS32-LABEL: name: call_sext_stack_arg_i16
201   ; MIPS32: bb.1.entry:
202   ; MIPS32:   liveins: $a0, $a1, $a2, $a3
203   ; MIPS32:   [[COPY:%[0-9]+]]:_(s32) = COPY $a0
204   ; MIPS32:   [[COPY1:%[0-9]+]]:_(s32) = COPY $a1
205   ; MIPS32:   [[COPY2:%[0-9]+]]:_(s32) = COPY $a2
206   ; MIPS32:   [[COPY3:%[0-9]+]]:_(s32) = COPY $a3
207   ; MIPS32:   [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.0
208   ; MIPS32:   [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p0) :: (load (s32) from %fixed-stack.0, align 8)
209   ; MIPS32:   [[ASSERT_SEXT:%[0-9]+]]:_(s32) = G_ASSERT_SEXT [[LOAD]], 16
210   ; MIPS32:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[ASSERT_SEXT]](s32)
211   ; MIPS32:   ADJCALLSTACKDOWN 24, 0, implicit-def $sp, implicit $sp
212   ; MIPS32:   $a0 = COPY [[COPY]](s32)
213   ; MIPS32:   $a1 = COPY [[COPY1]](s32)
214   ; MIPS32:   $a2 = COPY [[COPY2]](s32)
215   ; MIPS32:   $a3 = COPY [[COPY3]](s32)
216   ; MIPS32:   [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC]](s16)
217   ; MIPS32:   [[COPY4:%[0-9]+]]:_(p0) = COPY $sp
218   ; MIPS32:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
219   ; MIPS32:   [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY4]], [[C]](s32)
220   ; MIPS32:   G_STORE [[SEXT]](s32), [[PTR_ADD]](p0) :: (store (s32) into stack + 16, align 8)
221   ; MIPS32:   JAL @sext_stack_arg_i16, csr_o32, implicit-def $ra, implicit-def $sp, implicit $a0, implicit $a1, implicit $a2, implicit $a3, implicit-def $v0
222   ; MIPS32:   [[COPY5:%[0-9]+]]:_(s32) = COPY $v0
223   ; MIPS32:   [[ASSERT_SEXT1:%[0-9]+]]:_(s32) = G_ASSERT_SEXT [[COPY5]], 16
224   ; MIPS32:   [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[ASSERT_SEXT1]](s32)
225   ; MIPS32:   ADJCALLSTACKUP 24, 0, implicit-def $sp, implicit $sp
226   ; MIPS32:   [[SEXT1:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC1]](s16)
227   ; MIPS32:   $v0 = COPY [[SEXT1]](s32)
228   ; MIPS32:   RetRA implicit $v0
229 entry:
230   %call = call signext i16 @sext_stack_arg_i16(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i16 signext %a)
231   ret i16 %call
234 define zeroext i16 @call_zext_stack_arg_i16(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i16 zeroext %a) {
235   ; MIPS32-LABEL: name: call_zext_stack_arg_i16
236   ; MIPS32: bb.1.entry:
237   ; MIPS32:   liveins: $a0, $a1, $a2, $a3
238   ; MIPS32:   [[COPY:%[0-9]+]]:_(s32) = COPY $a0
239   ; MIPS32:   [[COPY1:%[0-9]+]]:_(s32) = COPY $a1
240   ; MIPS32:   [[COPY2:%[0-9]+]]:_(s32) = COPY $a2
241   ; MIPS32:   [[COPY3:%[0-9]+]]:_(s32) = COPY $a3
242   ; MIPS32:   [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.0
243   ; MIPS32:   [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p0) :: (load (s32) from %fixed-stack.0, align 8)
244   ; MIPS32:   [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[LOAD]], 16
245   ; MIPS32:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[ASSERT_ZEXT]](s32)
246   ; MIPS32:   ADJCALLSTACKDOWN 24, 0, implicit-def $sp, implicit $sp
247   ; MIPS32:   $a0 = COPY [[COPY]](s32)
248   ; MIPS32:   $a1 = COPY [[COPY1]](s32)
249   ; MIPS32:   $a2 = COPY [[COPY2]](s32)
250   ; MIPS32:   $a3 = COPY [[COPY3]](s32)
251   ; MIPS32:   [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[TRUNC]](s16)
252   ; MIPS32:   [[COPY4:%[0-9]+]]:_(p0) = COPY $sp
253   ; MIPS32:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
254   ; MIPS32:   [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY4]], [[C]](s32)
255   ; MIPS32:   G_STORE [[ZEXT]](s32), [[PTR_ADD]](p0) :: (store (s32) into stack + 16, align 8)
256   ; MIPS32:   JAL @zext_stack_arg_i16, csr_o32, implicit-def $ra, implicit-def $sp, implicit $a0, implicit $a1, implicit $a2, implicit $a3, implicit-def $v0
257   ; MIPS32:   [[COPY5:%[0-9]+]]:_(s32) = COPY $v0
258   ; MIPS32:   [[ASSERT_ZEXT1:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY5]], 16
259   ; MIPS32:   [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[ASSERT_ZEXT1]](s32)
260   ; MIPS32:   ADJCALLSTACKUP 24, 0, implicit-def $sp, implicit $sp
261   ; MIPS32:   [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[TRUNC1]](s16)
262   ; MIPS32:   $v0 = COPY [[ZEXT1]](s32)
263   ; MIPS32:   RetRA implicit $v0
264 entry:
265   %call = call zeroext i16 @zext_stack_arg_i16(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i16 zeroext %a)
266   ret i16 %call
269 define i16 @call_aext_stack_arg_i16(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i16 %a) {
270   ; MIPS32-LABEL: name: call_aext_stack_arg_i16
271   ; MIPS32: bb.1.entry:
272   ; MIPS32:   liveins: $a0, $a1, $a2, $a3
273   ; MIPS32:   [[COPY:%[0-9]+]]:_(s32) = COPY $a0
274   ; MIPS32:   [[COPY1:%[0-9]+]]:_(s32) = COPY $a1
275   ; MIPS32:   [[COPY2:%[0-9]+]]:_(s32) = COPY $a2
276   ; MIPS32:   [[COPY3:%[0-9]+]]:_(s32) = COPY $a3
277   ; MIPS32:   [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.0
278   ; MIPS32:   [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p0) :: (load (s32) from %fixed-stack.0, align 8)
279   ; MIPS32:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[LOAD]](s32)
280   ; MIPS32:   ADJCALLSTACKDOWN 24, 0, implicit-def $sp, implicit $sp
281   ; MIPS32:   $a0 = COPY [[COPY]](s32)
282   ; MIPS32:   $a1 = COPY [[COPY1]](s32)
283   ; MIPS32:   $a2 = COPY [[COPY2]](s32)
284   ; MIPS32:   $a3 = COPY [[COPY3]](s32)
285   ; MIPS32:   [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[TRUNC]](s16)
286   ; MIPS32:   [[COPY4:%[0-9]+]]:_(p0) = COPY $sp
287   ; MIPS32:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
288   ; MIPS32:   [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY4]], [[C]](s32)
289   ; MIPS32:   G_STORE [[ANYEXT]](s32), [[PTR_ADD]](p0) :: (store (s32) into stack + 16, align 8)
290   ; MIPS32:   JAL @aext_stack_arg_i16, csr_o32, implicit-def $ra, implicit-def $sp, implicit $a0, implicit $a1, implicit $a2, implicit $a3, implicit-def $v0
291   ; MIPS32:   [[COPY5:%[0-9]+]]:_(s32) = COPY $v0
292   ; MIPS32:   [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY5]](s32)
293   ; MIPS32:   ADJCALLSTACKUP 24, 0, implicit-def $sp, implicit $sp
294   ; MIPS32:   [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[TRUNC1]](s16)
295   ; MIPS32:   $v0 = COPY [[ANYEXT1]](s32)
296   ; MIPS32:   RetRA implicit $v0
297 entry:
298   %call = call i16 @aext_stack_arg_i16(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i16 %a)
299   ret i16 %call