313 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2; RUN: llc -O0 -mtriple=mipsel-linux-gnu -global-isel -stop-after=irtranslator -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS323 4 5define signext i8 @sext_arg_i8(i8 signext %a) {6 ; MIPS32-LABEL: name: sext_arg_i87 ; MIPS32: bb.1.entry:8 ; MIPS32-NEXT: liveins: $a09 ; MIPS32-NEXT: {{ $}}10 ; MIPS32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $a011 ; MIPS32-NEXT: [[ASSERT_SEXT:%[0-9]+]]:_(s32) = G_ASSERT_SEXT [[COPY]], 812 ; MIPS32-NEXT: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[ASSERT_SEXT]](s32)13 ; MIPS32-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC]](s8)14 ; MIPS32-NEXT: $v0 = COPY [[SEXT]](s32)15 ; MIPS32-NEXT: RetRA implicit $v016entry:17 ret i8 %a18}19 20define zeroext i8 @zext_arg_i8(i8 zeroext %a) {21 ; MIPS32-LABEL: name: zext_arg_i822 ; MIPS32: bb.1.entry:23 ; MIPS32-NEXT: liveins: $a024 ; MIPS32-NEXT: {{ $}}25 ; MIPS32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $a026 ; MIPS32-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY]], 827 ; MIPS32-NEXT: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[ASSERT_ZEXT]](s32)28 ; MIPS32-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[TRUNC]](s8)29 ; MIPS32-NEXT: $v0 = COPY [[ZEXT]](s32)30 ; MIPS32-NEXT: RetRA implicit $v031entry:32 ret i8 %a33}34 35define i8 @aext_arg_i8(i8 %a) {36 ; MIPS32-LABEL: name: aext_arg_i837 ; MIPS32: bb.1.entry:38 ; MIPS32-NEXT: liveins: $a039 ; MIPS32-NEXT: {{ $}}40 ; MIPS32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $a041 ; MIPS32-NEXT: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s32)42 ; MIPS32-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[TRUNC]](s8)43 ; MIPS32-NEXT: $v0 = COPY [[ANYEXT]](s32)44 ; MIPS32-NEXT: RetRA implicit $v045entry:46 ret i8 %a47}48 49declare signext i8 @sext_stack_arg_i8(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i8 %a)50declare zeroext i8 @zext_stack_arg_i8(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i8 %a)51declare i8 @aext_stack_arg_i8(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i8 %a)52 53define signext i8 @call_sext_stack_arg_i8(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i8 signext %a) {54 ; MIPS32-LABEL: name: call_sext_stack_arg_i855 ; MIPS32: bb.1.entry:56 ; MIPS32-NEXT: liveins: $a0, $a1, $a2, $a357 ; MIPS32-NEXT: {{ $}}58 ; MIPS32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $a059 ; MIPS32-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $a160 ; MIPS32-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $a261 ; MIPS32-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $a362 ; MIPS32-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.063 ; MIPS32-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p0) :: (load (s32) from %fixed-stack.0, align 8)64 ; MIPS32-NEXT: [[ASSERT_SEXT:%[0-9]+]]:_(s32) = G_ASSERT_SEXT [[LOAD]], 865 ; MIPS32-NEXT: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[ASSERT_SEXT]](s32)66 ; MIPS32-NEXT: ADJCALLSTACKDOWN 24, 0, implicit-def $sp, implicit $sp67 ; MIPS32-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC]](s8)68 ; MIPS32-NEXT: [[COPY4:%[0-9]+]]:_(p0) = COPY $sp69 ; MIPS32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1670 ; MIPS32-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY4]], [[C]](s32)71 ; MIPS32-NEXT: G_STORE [[SEXT]](s32), [[PTR_ADD]](p0) :: (store (s32) into stack + 16, align 8)72 ; MIPS32-NEXT: $a0 = COPY [[COPY]](s32)73 ; MIPS32-NEXT: $a1 = COPY [[COPY1]](s32)74 ; MIPS32-NEXT: $a2 = COPY [[COPY2]](s32)75 ; MIPS32-NEXT: $a3 = COPY [[COPY3]](s32)76 ; MIPS32-NEXT: JAL @sext_stack_arg_i8, csr_o32, implicit-def $ra, implicit-def $sp, implicit $a0, implicit $a1, implicit $a2, implicit $a3, implicit-def $v077 ; MIPS32-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $v078 ; MIPS32-NEXT: [[ASSERT_SEXT1:%[0-9]+]]:_(s32) = G_ASSERT_SEXT [[COPY5]], 879 ; MIPS32-NEXT: [[TRUNC1:%[0-9]+]]:_(s8) = G_TRUNC [[ASSERT_SEXT1]](s32)80 ; MIPS32-NEXT: ADJCALLSTACKUP 24, 0, implicit-def $sp, implicit $sp81 ; MIPS32-NEXT: [[SEXT1:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC1]](s8)82 ; MIPS32-NEXT: $v0 = COPY [[SEXT1]](s32)83 ; MIPS32-NEXT: RetRA implicit $v084entry:85 %call = call signext i8 @sext_stack_arg_i8(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i8 signext %a)86 ret i8 %call87}88 89define zeroext i8 @call_zext_stack_arg_i8(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i8 zeroext %a) {90 ; MIPS32-LABEL: name: call_zext_stack_arg_i891 ; MIPS32: bb.1.entry:92 ; MIPS32-NEXT: liveins: $a0, $a1, $a2, $a393 ; MIPS32-NEXT: {{ $}}94 ; MIPS32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $a095 ; MIPS32-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $a196 ; MIPS32-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $a297 ; MIPS32-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $a398 ; MIPS32-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.099 ; MIPS32-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p0) :: (load (s32) from %fixed-stack.0, align 8)100 ; MIPS32-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[LOAD]], 8101 ; MIPS32-NEXT: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[ASSERT_ZEXT]](s32)102 ; MIPS32-NEXT: ADJCALLSTACKDOWN 24, 0, implicit-def $sp, implicit $sp103 ; MIPS32-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[TRUNC]](s8)104 ; MIPS32-NEXT: [[COPY4:%[0-9]+]]:_(p0) = COPY $sp105 ; MIPS32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16106 ; MIPS32-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY4]], [[C]](s32)107 ; MIPS32-NEXT: G_STORE [[ZEXT]](s32), [[PTR_ADD]](p0) :: (store (s32) into stack + 16, align 8)108 ; MIPS32-NEXT: $a0 = COPY [[COPY]](s32)109 ; MIPS32-NEXT: $a1 = COPY [[COPY1]](s32)110 ; MIPS32-NEXT: $a2 = COPY [[COPY2]](s32)111 ; MIPS32-NEXT: $a3 = COPY [[COPY3]](s32)112 ; MIPS32-NEXT: JAL @zext_stack_arg_i8, csr_o32, implicit-def $ra, implicit-def $sp, implicit $a0, implicit $a1, implicit $a2, implicit $a3, implicit-def $v0113 ; MIPS32-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $v0114 ; MIPS32-NEXT: [[ASSERT_ZEXT1:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY5]], 8115 ; MIPS32-NEXT: [[TRUNC1:%[0-9]+]]:_(s8) = G_TRUNC [[ASSERT_ZEXT1]](s32)116 ; MIPS32-NEXT: ADJCALLSTACKUP 24, 0, implicit-def $sp, implicit $sp117 ; MIPS32-NEXT: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[TRUNC1]](s8)118 ; MIPS32-NEXT: $v0 = COPY [[ZEXT1]](s32)119 ; MIPS32-NEXT: RetRA implicit $v0120entry:121 %call = call zeroext i8 @zext_stack_arg_i8(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i8 zeroext %a)122 ret i8 %call123}124 125define i8 @call_aext_stack_arg_i8(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i8 %a) {126 ; MIPS32-LABEL: name: call_aext_stack_arg_i8127 ; MIPS32: bb.1.entry:128 ; MIPS32-NEXT: liveins: $a0, $a1, $a2, $a3129 ; MIPS32-NEXT: {{ $}}130 ; MIPS32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $a0131 ; MIPS32-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $a1132 ; MIPS32-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $a2133 ; MIPS32-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $a3134 ; MIPS32-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.0135 ; MIPS32-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p0) :: (load (s32) from %fixed-stack.0, align 8)136 ; MIPS32-NEXT: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[LOAD]](s32)137 ; MIPS32-NEXT: ADJCALLSTACKDOWN 24, 0, implicit-def $sp, implicit $sp138 ; MIPS32-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[TRUNC]](s8)139 ; MIPS32-NEXT: [[COPY4:%[0-9]+]]:_(p0) = COPY $sp140 ; MIPS32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16141 ; MIPS32-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY4]], [[C]](s32)142 ; MIPS32-NEXT: G_STORE [[ANYEXT]](s32), [[PTR_ADD]](p0) :: (store (s32) into stack + 16, align 8)143 ; MIPS32-NEXT: $a0 = COPY [[COPY]](s32)144 ; MIPS32-NEXT: $a1 = COPY [[COPY1]](s32)145 ; MIPS32-NEXT: $a2 = COPY [[COPY2]](s32)146 ; MIPS32-NEXT: $a3 = COPY [[COPY3]](s32)147 ; MIPS32-NEXT: JAL @aext_stack_arg_i8, csr_o32, implicit-def $ra, implicit-def $sp, implicit $a0, implicit $a1, implicit $a2, implicit $a3, implicit-def $v0148 ; MIPS32-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $v0149 ; MIPS32-NEXT: [[TRUNC1:%[0-9]+]]:_(s8) = G_TRUNC [[COPY5]](s32)150 ; MIPS32-NEXT: ADJCALLSTACKUP 24, 0, implicit-def $sp, implicit $sp151 ; MIPS32-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[TRUNC1]](s8)152 ; MIPS32-NEXT: $v0 = COPY [[ANYEXT1]](s32)153 ; MIPS32-NEXT: RetRA implicit $v0154entry:155 %call = call i8 @aext_stack_arg_i8(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i8 %a)156 ret i8 %call157}158 159 160define signext i16 @sext_arg_i16(i16 signext %a) {161 ; MIPS32-LABEL: name: sext_arg_i16162 ; MIPS32: bb.1.entry:163 ; MIPS32-NEXT: liveins: $a0164 ; MIPS32-NEXT: {{ $}}165 ; MIPS32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $a0166 ; MIPS32-NEXT: [[ASSERT_SEXT:%[0-9]+]]:_(s32) = G_ASSERT_SEXT [[COPY]], 16167 ; MIPS32-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[ASSERT_SEXT]](s32)168 ; MIPS32-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC]](s16)169 ; MIPS32-NEXT: $v0 = COPY [[SEXT]](s32)170 ; MIPS32-NEXT: RetRA implicit $v0171entry:172 ret i16 %a173}174 175define zeroext i16 @zext_arg_i16(i16 zeroext %a) {176 ; MIPS32-LABEL: name: zext_arg_i16177 ; MIPS32: bb.1.entry:178 ; MIPS32-NEXT: liveins: $a0179 ; MIPS32-NEXT: {{ $}}180 ; MIPS32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $a0181 ; MIPS32-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY]], 16182 ; MIPS32-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[ASSERT_ZEXT]](s32)183 ; MIPS32-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[TRUNC]](s16)184 ; MIPS32-NEXT: $v0 = COPY [[ZEXT]](s32)185 ; MIPS32-NEXT: RetRA implicit $v0186entry:187 ret i16 %a188}189 190define i16 @aext_arg_i16(i16 %a) {191 ; MIPS32-LABEL: name: aext_arg_i16192 ; MIPS32: bb.1.entry:193 ; MIPS32-NEXT: liveins: $a0194 ; MIPS32-NEXT: {{ $}}195 ; MIPS32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $a0196 ; MIPS32-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)197 ; MIPS32-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[TRUNC]](s16)198 ; MIPS32-NEXT: $v0 = COPY [[ANYEXT]](s32)199 ; MIPS32-NEXT: RetRA implicit $v0200entry:201 ret i16 %a202}203 204declare signext i16 @sext_stack_arg_i16(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i16 %a)205declare zeroext i16 @zext_stack_arg_i16(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i16 %a)206declare i16 @aext_stack_arg_i16(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i16 %a)207 208define signext i16 @call_sext_stack_arg_i16(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i16 signext %a) {209 ; MIPS32-LABEL: name: call_sext_stack_arg_i16210 ; MIPS32: bb.1.entry:211 ; MIPS32-NEXT: liveins: $a0, $a1, $a2, $a3212 ; MIPS32-NEXT: {{ $}}213 ; MIPS32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $a0214 ; MIPS32-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $a1215 ; MIPS32-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $a2216 ; MIPS32-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $a3217 ; MIPS32-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.0218 ; MIPS32-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p0) :: (load (s32) from %fixed-stack.0, align 8)219 ; MIPS32-NEXT: [[ASSERT_SEXT:%[0-9]+]]:_(s32) = G_ASSERT_SEXT [[LOAD]], 16220 ; MIPS32-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[ASSERT_SEXT]](s32)221 ; MIPS32-NEXT: ADJCALLSTACKDOWN 24, 0, implicit-def $sp, implicit $sp222 ; MIPS32-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC]](s16)223 ; MIPS32-NEXT: [[COPY4:%[0-9]+]]:_(p0) = COPY $sp224 ; MIPS32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16225 ; MIPS32-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY4]], [[C]](s32)226 ; MIPS32-NEXT: G_STORE [[SEXT]](s32), [[PTR_ADD]](p0) :: (store (s32) into stack + 16, align 8)227 ; MIPS32-NEXT: $a0 = COPY [[COPY]](s32)228 ; MIPS32-NEXT: $a1 = COPY [[COPY1]](s32)229 ; MIPS32-NEXT: $a2 = COPY [[COPY2]](s32)230 ; MIPS32-NEXT: $a3 = COPY [[COPY3]](s32)231 ; MIPS32-NEXT: JAL @sext_stack_arg_i16, csr_o32, implicit-def $ra, implicit-def $sp, implicit $a0, implicit $a1, implicit $a2, implicit $a3, implicit-def $v0232 ; MIPS32-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $v0233 ; MIPS32-NEXT: [[ASSERT_SEXT1:%[0-9]+]]:_(s32) = G_ASSERT_SEXT [[COPY5]], 16234 ; MIPS32-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[ASSERT_SEXT1]](s32)235 ; MIPS32-NEXT: ADJCALLSTACKUP 24, 0, implicit-def $sp, implicit $sp236 ; MIPS32-NEXT: [[SEXT1:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC1]](s16)237 ; MIPS32-NEXT: $v0 = COPY [[SEXT1]](s32)238 ; MIPS32-NEXT: RetRA implicit $v0239entry:240 %call = call signext i16 @sext_stack_arg_i16(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i16 signext %a)241 ret i16 %call242}243 244define zeroext i16 @call_zext_stack_arg_i16(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i16 zeroext %a) {245 ; MIPS32-LABEL: name: call_zext_stack_arg_i16246 ; MIPS32: bb.1.entry:247 ; MIPS32-NEXT: liveins: $a0, $a1, $a2, $a3248 ; MIPS32-NEXT: {{ $}}249 ; MIPS32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $a0250 ; MIPS32-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $a1251 ; MIPS32-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $a2252 ; MIPS32-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $a3253 ; MIPS32-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.0254 ; MIPS32-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p0) :: (load (s32) from %fixed-stack.0, align 8)255 ; MIPS32-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[LOAD]], 16256 ; MIPS32-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[ASSERT_ZEXT]](s32)257 ; MIPS32-NEXT: ADJCALLSTACKDOWN 24, 0, implicit-def $sp, implicit $sp258 ; MIPS32-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[TRUNC]](s16)259 ; MIPS32-NEXT: [[COPY4:%[0-9]+]]:_(p0) = COPY $sp260 ; MIPS32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16261 ; MIPS32-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY4]], [[C]](s32)262 ; MIPS32-NEXT: G_STORE [[ZEXT]](s32), [[PTR_ADD]](p0) :: (store (s32) into stack + 16, align 8)263 ; MIPS32-NEXT: $a0 = COPY [[COPY]](s32)264 ; MIPS32-NEXT: $a1 = COPY [[COPY1]](s32)265 ; MIPS32-NEXT: $a2 = COPY [[COPY2]](s32)266 ; MIPS32-NEXT: $a3 = COPY [[COPY3]](s32)267 ; MIPS32-NEXT: JAL @zext_stack_arg_i16, csr_o32, implicit-def $ra, implicit-def $sp, implicit $a0, implicit $a1, implicit $a2, implicit $a3, implicit-def $v0268 ; MIPS32-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $v0269 ; MIPS32-NEXT: [[ASSERT_ZEXT1:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY5]], 16270 ; MIPS32-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[ASSERT_ZEXT1]](s32)271 ; MIPS32-NEXT: ADJCALLSTACKUP 24, 0, implicit-def $sp, implicit $sp272 ; MIPS32-NEXT: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[TRUNC1]](s16)273 ; MIPS32-NEXT: $v0 = COPY [[ZEXT1]](s32)274 ; MIPS32-NEXT: RetRA implicit $v0275entry:276 %call = call zeroext i16 @zext_stack_arg_i16(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i16 zeroext %a)277 ret i16 %call278}279 280define i16 @call_aext_stack_arg_i16(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i16 %a) {281 ; MIPS32-LABEL: name: call_aext_stack_arg_i16282 ; MIPS32: bb.1.entry:283 ; MIPS32-NEXT: liveins: $a0, $a1, $a2, $a3284 ; MIPS32-NEXT: {{ $}}285 ; MIPS32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $a0286 ; MIPS32-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $a1287 ; MIPS32-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $a2288 ; MIPS32-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $a3289 ; MIPS32-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.0290 ; MIPS32-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p0) :: (load (s32) from %fixed-stack.0, align 8)291 ; MIPS32-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[LOAD]](s32)292 ; MIPS32-NEXT: ADJCALLSTACKDOWN 24, 0, implicit-def $sp, implicit $sp293 ; MIPS32-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[TRUNC]](s16)294 ; MIPS32-NEXT: [[COPY4:%[0-9]+]]:_(p0) = COPY $sp295 ; MIPS32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16296 ; MIPS32-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY4]], [[C]](s32)297 ; MIPS32-NEXT: G_STORE [[ANYEXT]](s32), [[PTR_ADD]](p0) :: (store (s32) into stack + 16, align 8)298 ; MIPS32-NEXT: $a0 = COPY [[COPY]](s32)299 ; MIPS32-NEXT: $a1 = COPY [[COPY1]](s32)300 ; MIPS32-NEXT: $a2 = COPY [[COPY2]](s32)301 ; MIPS32-NEXT: $a3 = COPY [[COPY3]](s32)302 ; MIPS32-NEXT: JAL @aext_stack_arg_i16, csr_o32, implicit-def $ra, implicit-def $sp, implicit $a0, implicit $a1, implicit $a2, implicit $a3, implicit-def $v0303 ; MIPS32-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $v0304 ; MIPS32-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY5]](s32)305 ; MIPS32-NEXT: ADJCALLSTACKUP 24, 0, implicit-def $sp, implicit $sp306 ; MIPS32-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[TRUNC1]](s16)307 ; MIPS32-NEXT: $v0 = COPY [[ANYEXT1]](s32)308 ; MIPS32-NEXT: RetRA implicit $v0309entry:310 %call = call i16 @aext_stack_arg_i16(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i16 %a)311 ret i16 %call312}313