2081 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 42; RUN: llc -mtriple powerpc-ibm-aix-xcoff -mcpu=ppc -stop-after=machine-cp -verify-machineinstrs < %s | \3; RUN: FileCheck --check-prefix=32BIT %s4 5; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -mcpu=ppc -stop-after=machine-cp -verify-machineinstrs < %s | \6; RUN: FileCheck --check-prefix=64BIT %s7 8define void @call_test_chars() {9 ; 32BIT-LABEL: name: call_test_chars10 ; 32BIT: bb.0.entry:11 ; 32BIT-NEXT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r112 ; 32BIT-NEXT: $r3 = LI 9713 ; 32BIT-NEXT: $r4 = LI 9714 ; 32BIT-NEXT: $r5 = LI 9715 ; 32BIT-NEXT: $r6 = LI 9716 ; 32BIT-NEXT: BL_NOP <mcsymbol .test_chars>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit killed $r3, implicit killed $r4, implicit killed $r5, implicit killed $r6, implicit $r2, implicit-def $r1, implicit-def dead $r317 ; 32BIT-NEXT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r118 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm19 ;20 ; 64BIT-LABEL: name: call_test_chars21 ; 64BIT: bb.0.entry:22 ; 64BIT-NEXT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r123 ; 64BIT-NEXT: $x3 = LI8 9724 ; 64BIT-NEXT: $x4 = LI8 9725 ; 64BIT-NEXT: $x5 = LI8 9726 ; 64BIT-NEXT: $x6 = LI8 9727 ; 64BIT-NEXT: BL8_NOP <mcsymbol .test_chars>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit killed $x3, implicit killed $x4, implicit killed $x5, implicit killed $x6, implicit $x2, implicit-def $r1, implicit-def dead $x328 ; 64BIT-NEXT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r129 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm30entry:31 call i8 @test_chars(i8 signext 97, i8 signext 97, i8 signext 97, i8 signext 97)32 ret void33}34 35define signext i8 @test_chars(i8 signext %c1, i8 signext %c2, i8 signext %c3, i8 signext %c4) {36 ; 32BIT-LABEL: name: test_chars37 ; 32BIT: bb.0.entry:38 ; 32BIT-NEXT: liveins: $r3, $r4, $r5, $r639 ; 32BIT-NEXT: {{ $}}40 ; 32BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, killed renamable $r441 ; 32BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, killed renamable $r542 ; 32BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, killed renamable $r643 ; 32BIT-NEXT: renamable $r3 = EXTSB killed renamable $r344 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm, implicit $r345 ;46 ; 64BIT-LABEL: name: test_chars47 ; 64BIT: bb.0.entry:48 ; 64BIT-NEXT: liveins: $x3, $x4, $x5, $x649 ; 64BIT-NEXT: {{ $}}50 ; 64BIT-NEXT: renamable $r3 = nsw ADD4 renamable $r3, renamable $r4, implicit killed $x4, implicit killed $x351 ; 64BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, renamable $r5, implicit killed $x552 ; 64BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, renamable $r6, implicit killed $x6, implicit-def $x353 ; 64BIT-NEXT: renamable $x3 = EXTSB8 killed renamable $x354 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm, implicit $x355entry:56 %conv = sext i8 %c1 to i3257 %conv1 = sext i8 %c2 to i3258 %add = add nsw i32 %conv, %conv159 %conv2 = sext i8 %c3 to i3260 %add3 = add nsw i32 %add, %conv261 %conv4 = sext i8 %c4 to i3262 %add5 = add nsw i32 %add3, %conv463 %conv6 = trunc i32 %add5 to i864 ret i8 %conv665}66 67define void @call_test_chars_mix() {68 ; 32BIT-LABEL: name: call_test_chars_mix69 ; 32BIT: bb.0.entry:70 ; 32BIT-NEXT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r171 ; 32BIT-NEXT: $r3 = LI 9772 ; 32BIT-NEXT: $r4 = LI 22573 ; 32BIT-NEXT: $r5 = LI 9774 ; 32BIT-NEXT: $r6 = LI -3175 ; 32BIT-NEXT: BL_NOP <mcsymbol .test_chars_mix>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit killed $r3, implicit killed $r4, implicit killed $r5, implicit killed $r6, implicit $r2, implicit-def $r1, implicit-def dead $r376 ; 32BIT-NEXT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r177 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm78 ;79 ; 64BIT-LABEL: name: call_test_chars_mix80 ; 64BIT: bb.0.entry:81 ; 64BIT-NEXT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r182 ; 64BIT-NEXT: $x3 = LI8 9783 ; 64BIT-NEXT: $x4 = LI8 22584 ; 64BIT-NEXT: $x5 = LI8 9785 ; 64BIT-NEXT: $x6 = LI8 -3186 ; 64BIT-NEXT: BL8_NOP <mcsymbol .test_chars_mix>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit killed $x3, implicit killed $x4, implicit killed $x5, implicit killed $x6, implicit $x2, implicit-def $r1, implicit-def dead $x387 ; 64BIT-NEXT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r188 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm89entry:90 call i8 @test_chars_mix(i8 signext 97, i8 zeroext -31, i8 zeroext 97, i8 signext -31)91 ret void92}93 94define signext i8 @test_chars_mix(i8 signext %c1, i8 zeroext %c2, i8 zeroext %c3, i8 signext %c4) {95 ; 32BIT-LABEL: name: test_chars_mix96 ; 32BIT: bb.0.entry:97 ; 32BIT-NEXT: liveins: $r3, $r4, $r5, $r698 ; 32BIT-NEXT: {{ $}}99 ; 32BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, killed renamable $r4100 ; 32BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, killed renamable $r5101 ; 32BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, killed renamable $r6102 ; 32BIT-NEXT: renamable $r3 = EXTSB killed renamable $r3103 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm, implicit $r3104 ;105 ; 64BIT-LABEL: name: test_chars_mix106 ; 64BIT: bb.0.entry:107 ; 64BIT-NEXT: liveins: $x3, $x4, $x5, $x6108 ; 64BIT-NEXT: {{ $}}109 ; 64BIT-NEXT: renamable $r3 = nsw ADD4 renamable $r3, renamable $r4, implicit killed $x4, implicit killed $x3110 ; 64BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, renamable $r5, implicit killed $x5111 ; 64BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, renamable $r6, implicit killed $x6, implicit-def $x3112 ; 64BIT-NEXT: renamable $x3 = EXTSB8 killed renamable $x3113 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm, implicit $x3114entry:115 %conv = sext i8 %c1 to i32116 %conv1 = zext i8 %c2 to i32117 %add = add nsw i32 %conv, %conv1118 %conv2 = zext i8 %c3 to i32119 %add3 = add nsw i32 %add, %conv2120 %conv4 = sext i8 %c4 to i32121 %add5 = add nsw i32 %add3, %conv4122 %conv6 = trunc i32 %add5 to i8123 ret i8 %conv6124}125 126@global_i1 = global i8 0, align 1127 128define void @test_i1(i1 %b) {129 ; 32BIT-LABEL: name: test_i1130 ; 32BIT: bb.0.entry:131 ; 32BIT-NEXT: liveins: $r3132 ; 32BIT-NEXT: {{ $}}133 ; 32BIT-NEXT: renamable $r4 = LWZtoc @global_i1, $r2 :: (load (s32) from got)134 ; 32BIT-NEXT: renamable $r3 = RLWINM killed renamable $r3, 0, 31, 31135 ; 32BIT-NEXT: STB killed renamable $r3, 0, killed renamable $r4 :: (store (s8) into @global_i1)136 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm137 ;138 ; 64BIT-LABEL: name: test_i1139 ; 64BIT: bb.0.entry:140 ; 64BIT-NEXT: liveins: $x3141 ; 64BIT-NEXT: {{ $}}142 ; 64BIT-NEXT: renamable $x4 = LDtoc @global_i1, $x2 :: (load (s64) from got)143 ; 64BIT-NEXT: renamable $r3 = RLWINM renamable $r3, 0, 31, 31, implicit killed $x3144 ; 64BIT-NEXT: STB killed renamable $r3, 0, killed renamable $x4 :: (store (s8) into @global_i1)145 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm146 entry:147 %frombool = zext i1 %b to i8148 store i8 %frombool, ptr @global_i1, align 1149 ret void150}151 152define void @call_test_i1() {153 ; 32BIT-LABEL: name: call_test_i1154 ; 32BIT: bb.0.entry:155 ; 32BIT-NEXT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r1156 ; 32BIT-NEXT: $r3 = LI 1157 ; 32BIT-NEXT: BL_NOP <mcsymbol .test_i1>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit killed $r3, implicit $r2, implicit-def $r1158 ; 32BIT-NEXT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r1159 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm160 ;161 ; 64BIT-LABEL: name: call_test_i1162 ; 64BIT: bb.0.entry:163 ; 64BIT-NEXT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r1164 ; 64BIT-NEXT: $x3 = LI8 1165 ; 64BIT-NEXT: BL8_NOP <mcsymbol .test_i1>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit killed $x3, implicit $x2, implicit-def $r1166 ; 64BIT-NEXT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1167 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm168entry:169 call void @test_i1(i1 1)170 ret void171}172 173define void @test_i1zext(i1 zeroext %b) {174 ; 32BIT-LABEL: name: test_i1zext175 ; 32BIT: bb.0.entry:176 ; 32BIT-NEXT: liveins: $r3177 ; 32BIT-NEXT: {{ $}}178 ; 32BIT-NEXT: renamable $r4 = LWZtoc @global_i1, $r2 :: (load (s32) from got)179 ; 32BIT-NEXT: STB killed renamable $r3, 0, killed renamable $r4 :: (store (s8) into @global_i1)180 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm181 ;182 ; 64BIT-LABEL: name: test_i1zext183 ; 64BIT: bb.0.entry:184 ; 64BIT-NEXT: liveins: $x3185 ; 64BIT-NEXT: {{ $}}186 ; 64BIT-NEXT: renamable $x4 = LDtoc @global_i1, $x2 :: (load (s64) from got)187 ; 64BIT-NEXT: STB8 killed renamable $x3, 0, killed renamable $x4 :: (store (s8) into @global_i1)188 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm189 entry:190 %frombool = zext i1 %b to i8191 store i8 %frombool, ptr @global_i1, align 1192 ret void193 }194 195define i32 @test_ints(i32 signext %a, i32 zeroext %b, i32 zeroext %c, i32 signext %d, i32 signext %e, i32 signext %f, i32 signext %g, i32 signext %h) {196 ; 32BIT-LABEL: name: test_ints197 ; 32BIT: bb.0.entry:198 ; 32BIT-NEXT: liveins: $r3, $r4, $r5, $r6, $r7, $r8, $r9, $r10199 ; 32BIT-NEXT: {{ $}}200 ; 32BIT-NEXT: renamable $r3 = ADD4 killed renamable $r3, killed renamable $r4201 ; 32BIT-NEXT: renamable $r3 = ADD4 killed renamable $r3, killed renamable $r5202 ; 32BIT-NEXT: renamable $r3 = ADD4 killed renamable $r3, killed renamable $r6203 ; 32BIT-NEXT: renamable $r3 = ADD4 killed renamable $r3, killed renamable $r7204 ; 32BIT-NEXT: renamable $r3 = ADD4 killed renamable $r3, killed renamable $r8205 ; 32BIT-NEXT: renamable $r3 = ADD4 killed renamable $r3, killed renamable $r9206 ; 32BIT-NEXT: renamable $r3 = ADD4 killed renamable $r3, killed renamable $r10207 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm, implicit $r3208 ;209 ; 64BIT-LABEL: name: test_ints210 ; 64BIT: bb.0.entry:211 ; 64BIT-NEXT: liveins: $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10212 ; 64BIT-NEXT: {{ $}}213 ; 64BIT-NEXT: renamable $r3 = ADD4 renamable $r3, renamable $r4, implicit killed $x4, implicit killed $x3214 ; 64BIT-NEXT: renamable $r3 = ADD4 killed renamable $r3, renamable $r5, implicit killed $x5215 ; 64BIT-NEXT: renamable $r3 = ADD4 killed renamable $r3, renamable $r6, implicit killed $x6216 ; 64BIT-NEXT: renamable $r3 = ADD4 killed renamable $r3, renamable $r7, implicit killed $x7217 ; 64BIT-NEXT: renamable $r3 = ADD4 killed renamable $r3, renamable $r8, implicit killed $x8218 ; 64BIT-NEXT: renamable $r3 = ADD4 killed renamable $r3, renamable $r9, implicit killed $x9219 ; 64BIT-NEXT: renamable $r3 = ADD4 killed renamable $r3, renamable $r10, implicit killed $x10, implicit-def $x3220 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm, implicit $x3221entry:222 %add = add i32 %a, %b223 %add1 = add i32 %add, %c224 %add2 = add i32 %add1, %d225 %add3 = add i32 %add2, %e226 %add4 = add i32 %add3, %f227 %add5 = add i32 %add4, %g228 %add6 = add i32 %add5, %h229 ret i32 %add6230}231 232define void @call_test_ints() {233 ; 32BIT-LABEL: name: call_test_ints234 ; 32BIT: bb.0.entry:235 ; 32BIT-NEXT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r1236 ; 32BIT-NEXT: $r3 = LI 1237 ; 32BIT-NEXT: $r4 = LI 1238 ; 32BIT-NEXT: $r5 = LIS 32768239 ; 32BIT-NEXT: $r6 = LIS 32768240 ; 32BIT-NEXT: $r7 = LI 1241 ; 32BIT-NEXT: $r8 = LI 1242 ; 32BIT-NEXT: $r9 = LI 1243 ; 32BIT-NEXT: $r10 = LI 1244 ; 32BIT-NEXT: BL_NOP <mcsymbol .test_ints>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit killed $r3, implicit killed $r4, implicit killed $r5, implicit killed $r6, implicit killed $r7, implicit killed $r8, implicit killed $r9, implicit killed $r10, implicit $r2, implicit-def $r1, implicit-def dead $r3245 ; 32BIT-NEXT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r1246 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm247 ;248 ; 64BIT-LABEL: name: call_test_ints249 ; 64BIT: bb.0.entry:250 ; 64BIT-NEXT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r1251 ; 64BIT-NEXT: renamable $x3 = LI8 1252 ; 64BIT-NEXT: renamable $x5 = RLDIC killed renamable $x3, 31, 32253 ; 64BIT-NEXT: $x3 = LI8 1254 ; 64BIT-NEXT: $x4 = LI8 1255 ; 64BIT-NEXT: $x6 = LIS8 32768256 ; 64BIT-NEXT: $x7 = LI8 1257 ; 64BIT-NEXT: $x8 = LI8 1258 ; 64BIT-NEXT: $x9 = LI8 1259 ; 64BIT-NEXT: $x10 = LI8 1260 ; 64BIT-NEXT: BL8_NOP <mcsymbol .test_ints>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $x3, implicit killed $x4, implicit $x5, implicit killed $x6, implicit killed $x7, implicit killed $x8, implicit killed $x9, implicit killed $x10, implicit $x2, implicit-def $r1, implicit-def dead $x3261 ; 64BIT-NEXT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1262 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm263entry:264 call i32 @test_ints(i32 signext 1, i32 zeroext 1, i32 zeroext 2147483648, i32 signext -2147483648, i32 signext 1, i32 signext 1, i32 signext 1, i32 signext 1)265 ret void266}267 268define void @call_test_i64() {269 ; 32BIT-LABEL: name: call_test_i64270 ; 32BIT: bb.0.entry:271 ; 32BIT-NEXT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r1272 ; 32BIT-NEXT: $r3 = LI 0273 ; 32BIT-NEXT: $r4 = LI 1274 ; 32BIT-NEXT: $r5 = LI 0275 ; 32BIT-NEXT: $r6 = LI 2276 ; 32BIT-NEXT: $r7 = LI 0277 ; 32BIT-NEXT: $r8 = LI 3278 ; 32BIT-NEXT: $r9 = LI 0279 ; 32BIT-NEXT: $r10 = LI 4280 ; 32BIT-NEXT: BL_NOP <mcsymbol .test_i64>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit killed $r3, implicit killed $r4, implicit killed $r5, implicit killed $r6, implicit killed $r7, implicit killed $r8, implicit killed $r9, implicit killed $r10, implicit $r2, implicit-def $r1, implicit-def dead $r3, implicit-def dead $r4281 ; 32BIT-NEXT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r1282 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm283 ;284 ; 64BIT-LABEL: name: call_test_i64285 ; 64BIT: bb.0.entry:286 ; 64BIT-NEXT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r1287 ; 64BIT-NEXT: $x3 = LI8 1288 ; 64BIT-NEXT: $x4 = LI8 2289 ; 64BIT-NEXT: $x5 = LI8 3290 ; 64BIT-NEXT: $x6 = LI8 4291 ; 64BIT-NEXT: BL8_NOP <mcsymbol .test_i64>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit killed $x3, implicit killed $x4, implicit killed $x5, implicit killed $x6, implicit $x2, implicit-def $r1, implicit-def dead $x3292 ; 64BIT-NEXT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1293 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm294entry:295 call i64 @test_i64(i64 1, i64 2, i64 3, i64 4)296 ret void297}298 299define i64 @test_i64(i64 %a, i64 %b, i64 %c, i64 %d) {300 ; 32BIT-LABEL: name: test_i64301 ; 32BIT: bb.0.entry:302 ; 32BIT-NEXT: liveins: $r3, $r4, $r5, $r6, $r7, $r8, $r9, $r10303 ; 32BIT-NEXT: {{ $}}304 ; 32BIT-NEXT: renamable $r4 = ADDC killed renamable $r4, killed renamable $r6, implicit-def $carry305 ; 32BIT-NEXT: renamable $r3 = ADDE killed renamable $r3, killed renamable $r5, implicit-def dead $carry, implicit killed $carry306 ; 32BIT-NEXT: renamable $r4 = ADDC killed renamable $r4, killed renamable $r8, implicit-def $carry307 ; 32BIT-NEXT: renamable $r3 = ADDE killed renamable $r3, killed renamable $r7, implicit-def dead $carry, implicit killed $carry308 ; 32BIT-NEXT: renamable $r4 = ADDC killed renamable $r4, killed renamable $r10, implicit-def $carry309 ; 32BIT-NEXT: renamable $r3 = ADDE killed renamable $r3, killed renamable $r9, implicit-def dead $carry, implicit killed $carry310 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm, implicit $r3, implicit $r4311 ;312 ; 64BIT-LABEL: name: test_i64313 ; 64BIT: bb.0.entry:314 ; 64BIT-NEXT: liveins: $x3, $x4, $x5, $x6315 ; 64BIT-NEXT: {{ $}}316 ; 64BIT-NEXT: renamable $x3 = nsw ADD8 killed renamable $x3, killed renamable $x4317 ; 64BIT-NEXT: renamable $x3 = nsw ADD8 killed renamable $x3, killed renamable $x5318 ; 64BIT-NEXT: renamable $x3 = nsw ADD8 killed renamable $x3, killed renamable $x6319 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm, implicit $x3320entry:321 %add = add nsw i64 %a, %b322 %add1 = add nsw i64 %add, %c323 %add2 = add nsw i64 %add1, %d324 ret i64 %add2325}326 327define void @call_test_int_ptr() {328 ; 32BIT-LABEL: name: call_test_int_ptr329 ; 32BIT: bb.0.entry:330 ; 32BIT-NEXT: renamable $r3 = LI 0331 ; 32BIT-NEXT: STW killed renamable $r3, 0, %stack.0.b :: (store (s32) into %ir.b)332 ; 32BIT-NEXT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r1333 ; 32BIT-NEXT: renamable $r3 = ADDI %stack.0.b, 0334 ; 32BIT-NEXT: BL_NOP <mcsymbol .test_int_ptr>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r3, implicit $r2, implicit-def $r1335 ; 32BIT-NEXT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r1336 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm337 ;338 ; 64BIT-LABEL: name: call_test_int_ptr339 ; 64BIT: bb.0.entry:340 ; 64BIT-NEXT: renamable $x3 = LI8 0341 ; 64BIT-NEXT: STW8 killed renamable $x3, 0, %stack.0.b :: (store (s32) into %ir.b)342 ; 64BIT-NEXT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r1343 ; 64BIT-NEXT: renamable $x3 = ADDI8 %stack.0.b, 0344 ; 64BIT-NEXT: BL8_NOP <mcsymbol .test_int_ptr>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $x3, implicit $x2, implicit-def $r1345 ; 64BIT-NEXT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1346 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm347entry:348 %b = alloca i32, align 4349 store i32 0, ptr %b, align 4350 call void @test_int_ptr(ptr %b)351 ret void352}353 354define void @test_int_ptr(ptr %a) {355 ; 32BIT-LABEL: name: test_int_ptr356 ; 32BIT: bb.0.entry:357 ; 32BIT-NEXT: liveins: $r3358 ; 32BIT-NEXT: {{ $}}359 ; 32BIT-NEXT: STW killed renamable $r3, 0, %stack.0.a.addr :: (store (s32) into %ir.a.addr, align 8)360 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm361 ;362 ; 64BIT-LABEL: name: test_int_ptr363 ; 64BIT: bb.0.entry:364 ; 64BIT-NEXT: liveins: $x3365 ; 64BIT-NEXT: {{ $}}366 ; 64BIT-NEXT: STD killed renamable $x3, 0, %stack.0.a.addr :: (store (s64) into %ir.a.addr)367 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm368entry:369 %a.addr = alloca ptr, align 8370 store ptr %a, ptr %a.addr, align 8371 ret void372}373 374define i32 @caller(i32 %i) {375 ; 32BIT-LABEL: name: caller376 ; 32BIT: bb.0.entry:377 ; 32BIT-NEXT: liveins: $r3378 ; 32BIT-NEXT: {{ $}}379 ; 32BIT-NEXT: STW renamable $r3, 0, %stack.0.i.addr :: (store (s32) into %ir.i.addr)380 ; 32BIT-NEXT: renamable $r3 = CNTLZW killed renamable $r3381 ; 32BIT-NEXT: renamable $r3 = NOR killed renamable $r3, renamable $r3382 ; 32BIT-NEXT: renamable $r3 = RLWINM killed renamable $r3, 27, 31, 31383 ; 32BIT-NEXT: STB renamable $r3, 0, %stack.1.b :: (store (s8) into %ir.b)384 ; 32BIT-NEXT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r1385 ; 32BIT-NEXT: BL_NOP <mcsymbol .call_test_bool[PR]>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r3, implicit $r2, implicit-def $r1, implicit-def $r3386 ; 32BIT-NEXT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r1387 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm, implicit $r3388 ;389 ; 64BIT-LABEL: name: caller390 ; 64BIT: bb.0.entry:391 ; 64BIT-NEXT: liveins: $x3392 ; 64BIT-NEXT: {{ $}}393 ; 64BIT-NEXT: STW renamable $r3, 0, %stack.0.i.addr :: (store (s32) into %ir.i.addr)394 ; 64BIT-NEXT: renamable $r3 = CNTLZW renamable $r3, implicit killed $x3395 ; 64BIT-NEXT: renamable $r3 = RLWINM killed renamable $r3, 27, 5, 31396 ; 64BIT-NEXT: renamable $r3 = XORI killed renamable $r3, 1, implicit-def $x3397 ; 64BIT-NEXT: STB renamable $r3, 0, %stack.1.b :: (store (s8) into %ir.b)398 ; 64BIT-NEXT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r1399 ; 64BIT-NEXT: BL8_NOP <mcsymbol .call_test_bool[PR]>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $x3, implicit $x2, implicit-def $r1, implicit-def $x3400 ; 64BIT-NEXT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1401 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm, implicit $x3402entry:403 %i.addr = alloca i32, align 4404 %b = alloca i8, align 1405 store i32 %i, ptr %i.addr, align 4406 %0 = load i32, ptr %i.addr, align 4407 %cmp = icmp ne i32 %0, 0408 %frombool = zext i1 %cmp to i8409 store i8 %frombool, ptr %b, align 1410 %1 = load i8, ptr %b, align 1411 %tobool = trunc i8 %1 to i1412 %call = call i32 @call_test_bool(i1 zeroext %tobool)413 ret i32 %call414}415 416declare i32 @call_test_bool(i1 zeroext)417 418@f1 = global float 0.000000e+00, align 4419@d1 = global double 0.000000e+00, align 8420 421define void @call_test_floats() {422 ; 32BIT-LABEL: name: call_test_floats423 ; 32BIT: bb.0.entry:424 ; 32BIT-NEXT: renamable $r3 = LWZtoc @f1, $r2 :: (load (s32) from got)425 ; 32BIT-NEXT: renamable $f1 = LFS 0, killed renamable $r3 :: (dereferenceable load (s32) from @f1)426 ; 32BIT-NEXT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r1427 ; 32BIT-NEXT: $f2 = COPY renamable $f1428 ; 32BIT-NEXT: $f3 = COPY renamable $f1429 ; 32BIT-NEXT: BL_NOP <mcsymbol .test_floats>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $f1, implicit killed $f2, implicit killed $f3, implicit $r2, implicit-def $r1, implicit-def dead $f1430 ; 32BIT-NEXT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r1431 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm432 ;433 ; 64BIT-LABEL: name: call_test_floats434 ; 64BIT: bb.0.entry:435 ; 64BIT-NEXT: renamable $x3 = LDtoc @f1, $x2 :: (load (s64) from got)436 ; 64BIT-NEXT: renamable $f1 = LFS 0, killed renamable $x3 :: (dereferenceable load (s32) from @f1)437 ; 64BIT-NEXT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r1438 ; 64BIT-NEXT: $f2 = COPY renamable $f1439 ; 64BIT-NEXT: $f3 = COPY renamable $f1440 ; 64BIT-NEXT: BL8_NOP <mcsymbol .test_floats>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $f1, implicit killed $f2, implicit killed $f3, implicit $x2, implicit-def $r1, implicit-def dead $f1441 ; 64BIT-NEXT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1442 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm443entry:444 %0 = load float, ptr @f1, align 4445 call float @test_floats(float %0, float %0, float %0)446 ret void447}448 449define float @test_floats(float %f1, float %f2, float %f3) {450 ; 32BIT-LABEL: name: test_floats451 ; 32BIT: bb.0.entry:452 ; 32BIT-NEXT: liveins: $f1, $f2, $f3453 ; 32BIT-NEXT: {{ $}}454 ; 32BIT-NEXT: renamable $f0 = nofpexcept FADDS killed renamable $f1, killed renamable $f2, implicit $rm455 ; 32BIT-NEXT: renamable $f1 = nofpexcept FADDS killed renamable $f0, killed renamable $f3, implicit $rm456 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm, implicit $f1457 ;458 ; 64BIT-LABEL: name: test_floats459 ; 64BIT: bb.0.entry:460 ; 64BIT-NEXT: liveins: $f1, $f2, $f3461 ; 64BIT-NEXT: {{ $}}462 ; 64BIT-NEXT: renamable $f0 = nofpexcept FADDS killed renamable $f1, killed renamable $f2, implicit $rm463 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADDS killed renamable $f0, killed renamable $f3, implicit $rm464 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm, implicit $f1465entry:466 %add = fadd float %f1, %f2467 %add1 = fadd float %add, %f3468 ret float %add1469}470 471define void @call_test_fpr_max() {472 ; 32BIT-LABEL: name: call_test_fpr_max473 ; 32BIT: bb.0.entry:474 ; 32BIT-NEXT: renamable $r3 = LWZtoc @d1, $r2 :: (load (s32) from got)475 ; 32BIT-NEXT: renamable $f1 = LFD 0, killed renamable $r3 :: (dereferenceable load (s64) from @d1)476 ; 32BIT-NEXT: ADJCALLSTACKDOWN 128, 0, implicit-def dead $r1, implicit $r1477 ; 32BIT-NEXT: STFD renamable $f1, 120, $r1 :: (store (s64) into stack + 120, basealign 16)478 ; 32BIT-NEXT: STFD renamable $f1, 112, $r1 :: (store (s64) into stack + 112, align 16)479 ; 32BIT-NEXT: STFD renamable $f1, 104, $r1 :: (store (s64) into stack + 104, basealign 16)480 ; 32BIT-NEXT: STFD renamable $f1, 96, $r1 :: (store (s64) into stack + 96, align 16)481 ; 32BIT-NEXT: STFD renamable $f1, 88, $r1 :: (store (s64) into stack + 88, basealign 16)482 ; 32BIT-NEXT: STFD renamable $f1, 80, $r1 :: (store (s64) into stack + 80, align 16)483 ; 32BIT-NEXT: STFD renamable $f1, 72, $r1 :: (store (s64) into stack + 72, basealign 16)484 ; 32BIT-NEXT: STFD renamable $f1, 64, $r1 :: (store (s64) into stack + 64, align 16)485 ; 32BIT-NEXT: $f2 = COPY renamable $f1486 ; 32BIT-NEXT: $f3 = COPY renamable $f1487 ; 32BIT-NEXT: $f4 = COPY renamable $f1488 ; 32BIT-NEXT: $f5 = COPY renamable $f1489 ; 32BIT-NEXT: $f6 = COPY renamable $f1490 ; 32BIT-NEXT: $f7 = COPY renamable $f1491 ; 32BIT-NEXT: $f8 = COPY renamable $f1492 ; 32BIT-NEXT: $f9 = COPY renamable $f1493 ; 32BIT-NEXT: $f10 = COPY renamable $f1494 ; 32BIT-NEXT: $f11 = COPY renamable $f1495 ; 32BIT-NEXT: $f12 = COPY renamable $f1496 ; 32BIT-NEXT: $f13 = COPY renamable $f1497 ; 32BIT-NEXT: STFD renamable $f1, 56, $r1 :: (store (s64) into stack + 56, basealign 16)498 ; 32BIT-NEXT: BL_NOP <mcsymbol .test_fpr_max>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $f1, implicit killed $f2, implicit killed $f3, implicit killed $f4, implicit killed $f5, implicit killed $f6, implicit killed $f7, implicit killed $f8, implicit killed $f9, implicit killed $f10, implicit killed $f11, implicit killed $f12, implicit killed $f13, implicit $r2, implicit-def $r1, implicit-def dead $f1499 ; 32BIT-NEXT: ADJCALLSTACKUP 128, 0, implicit-def dead $r1, implicit $r1500 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm501 ;502 ; 64BIT-LABEL: name: call_test_fpr_max503 ; 64BIT: bb.0.entry:504 ; 64BIT-NEXT: renamable $x3 = LDtoc @d1, $x2 :: (load (s64) from got)505 ; 64BIT-NEXT: renamable $f1 = LFD 0, killed renamable $x3 :: (dereferenceable load (s64) from @d1)506 ; 64BIT-NEXT: ADJCALLSTACKDOWN 152, 0, implicit-def dead $r1, implicit $r1507 ; 64BIT-NEXT: STFD renamable $f1, 144, $x1 :: (store (s64) into stack + 144, align 16)508 ; 64BIT-NEXT: STFD renamable $f1, 136, $x1 :: (store (s64) into stack + 136, basealign 16)509 ; 64BIT-NEXT: STFD renamable $f1, 128, $x1 :: (store (s64) into stack + 128, align 16)510 ; 64BIT-NEXT: STFD renamable $f1, 120, $x1 :: (store (s64) into stack + 120, basealign 16)511 ; 64BIT-NEXT: $f2 = COPY renamable $f1512 ; 64BIT-NEXT: $f3 = COPY renamable $f1513 ; 64BIT-NEXT: $f4 = COPY renamable $f1514 ; 64BIT-NEXT: $f5 = COPY renamable $f1515 ; 64BIT-NEXT: $f6 = COPY renamable $f1516 ; 64BIT-NEXT: $f7 = COPY renamable $f1517 ; 64BIT-NEXT: $f8 = COPY renamable $f1518 ; 64BIT-NEXT: $f9 = COPY renamable $f1519 ; 64BIT-NEXT: $f10 = COPY renamable $f1520 ; 64BIT-NEXT: $f11 = COPY renamable $f1521 ; 64BIT-NEXT: $f12 = COPY renamable $f1522 ; 64BIT-NEXT: $f13 = COPY renamable $f1523 ; 64BIT-NEXT: STFD renamable $f1, 112, $x1 :: (store (s64) into stack + 112, align 16)524 ; 64BIT-NEXT: BL8_NOP <mcsymbol .test_fpr_max>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $f1, implicit killed $f2, implicit killed $f3, implicit killed $f4, implicit killed $f5, implicit killed $f6, implicit killed $f7, implicit killed $f8, implicit killed $f9, implicit killed $f10, implicit killed $f11, implicit killed $f12, implicit killed $f13, implicit $x2, implicit-def $r1, implicit-def dead $f1525 ; 64BIT-NEXT: ADJCALLSTACKUP 152, 0, implicit-def dead $r1, implicit $r1526 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm527entry:528 %0 = load double, ptr @d1, align 8529 call double @test_fpr_max(double %0, double %0, double %0, double %0, double %0, double %0, double %0, double %0, double %0, double %0, double %0, double %0, double %0)530 ret void531}532 533define double @test_fpr_max(double %d1, double %d2, double %d3, double %d4, double %d5, double %d6, double %d7, double %d8, double %d9, double %d10, double %d11, double %d12, double %d13) {534 ; 32BIT-LABEL: name: test_fpr_max535 ; 32BIT: bb.0.entry:536 ; 32BIT-NEXT: liveins: $f1, $f2, $f3, $f4, $f5, $f6, $f7, $f8, $f9, $f10, $f11, $f12, $f13537 ; 32BIT-NEXT: {{ $}}538 ; 32BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f1, killed renamable $f2, implicit $rm539 ; 32BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f3, implicit $rm540 ; 32BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f4, implicit $rm541 ; 32BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f5, implicit $rm542 ; 32BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f6, implicit $rm543 ; 32BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f7, implicit $rm544 ; 32BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f8, implicit $rm545 ; 32BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f9, implicit $rm546 ; 32BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f10, implicit $rm547 ; 32BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f11, implicit $rm548 ; 32BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f12, implicit $rm549 ; 32BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f0, killed renamable $f13, implicit $rm550 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm, implicit $f1551 ;552 ; 64BIT-LABEL: name: test_fpr_max553 ; 64BIT: bb.0.entry:554 ; 64BIT-NEXT: liveins: $f1, $f2, $f3, $f4, $f5, $f6, $f7, $f8, $f9, $f10, $f11, $f12, $f13555 ; 64BIT-NEXT: {{ $}}556 ; 64BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f1, killed renamable $f2, implicit $rm557 ; 64BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f3, implicit $rm558 ; 64BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f4, implicit $rm559 ; 64BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f5, implicit $rm560 ; 64BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f6, implicit $rm561 ; 64BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f7, implicit $rm562 ; 64BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f8, implicit $rm563 ; 64BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f9, implicit $rm564 ; 64BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f10, implicit $rm565 ; 64BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f11, implicit $rm566 ; 64BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f12, implicit $rm567 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f0, killed renamable $f13, implicit $rm568 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm, implicit $f1569entry:570 %add = fadd double %d1, %d2571 %add1 = fadd double %add, %d3572 %add2 = fadd double %add1, %d4573 %add3 = fadd double %add2, %d5574 %add4 = fadd double %add3, %d6575 %add5 = fadd double %add4, %d7576 %add6 = fadd double %add5, %d8577 %add7 = fadd double %add6, %d9578 %add8 = fadd double %add7, %d10579 %add9 = fadd double %add8, %d11580 %add10 = fadd double %add9, %d12581 %add11 = fadd double %add10, %d13582 ret double %add11583}584 585define void @call_test_mix() {586 ; 32BIT-LABEL: name: call_test_mix587 ; 32BIT: bb.0.entry:588 ; 32BIT-NEXT: renamable $r3 = LWZtoc @f1, $r2 :: (load (s32) from got)589 ; 32BIT-NEXT: renamable $r4 = LWZtoc @d1, $r2 :: (load (s32) from got)590 ; 32BIT-NEXT: renamable $f1 = LFS 0, killed renamable $r3 :: (dereferenceable load (s32) from @f1)591 ; 32BIT-NEXT: renamable $f2 = LFD 0, killed renamable $r4 :: (dereferenceable load (s64) from @d1)592 ; 32BIT-NEXT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r1593 ; 32BIT-NEXT: $r4 = LI 1594 ; 32BIT-NEXT: $r7 = LI 97595 ; 32BIT-NEXT: BL_NOP <mcsymbol .test_mix>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $f1, implicit $r4, implicit $f2, implicit killed $r7, implicit $r2, implicit-def $r1, implicit-def dead $r3596 ; 32BIT-NEXT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r1597 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm598 ;599 ; 64BIT-LABEL: name: call_test_mix600 ; 64BIT: bb.0.entry:601 ; 64BIT-NEXT: renamable $x3 = LDtoc @f1, $x2 :: (load (s64) from got)602 ; 64BIT-NEXT: renamable $x4 = LDtoc @d1, $x2 :: (load (s64) from got)603 ; 64BIT-NEXT: renamable $f1 = LFS 0, killed renamable $x3 :: (dereferenceable load (s32) from @f1)604 ; 64BIT-NEXT: renamable $f2 = LFD 0, killed renamable $x4 :: (dereferenceable load (s64) from @d1)605 ; 64BIT-NEXT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r1606 ; 64BIT-NEXT: $x4 = LI8 1607 ; 64BIT-NEXT: $x6 = LI8 97608 ; 64BIT-NEXT: BL8_NOP <mcsymbol .test_mix>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $f1, implicit $x4, implicit $f2, implicit killed $x6, implicit $x2, implicit-def $r1, implicit-def dead $x3609 ; 64BIT-NEXT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1610 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm611entry:612 %0 = load float, ptr @f1, align 4613 %1 = load double, ptr @d1, align 8614 call i32 @test_mix(float %0, i32 1, double %1, i8 signext 97)615 ret void616}617 618define i32 @test_mix(float %f, i32 signext %i, double %d, i8 signext %c) {619 ; 32BIT-LABEL: name: test_mix620 ; 32BIT: bb.0.entry:621 ; 32BIT-NEXT: liveins: $f1, $f2, $r4, $r7622 ; 32BIT-NEXT: {{ $}}623 ; 32BIT-NEXT: renamable $r3 = LIS 17200624 ; 32BIT-NEXT: STW killed renamable $r3, 0, %stack.1 :: (store (s32) into %stack.1, align 8)625 ; 32BIT-NEXT: renamable $r3 = RLWINM killed renamable $r7, 0, 24, 31626 ; 32BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r4, killed renamable $r3627 ; 32BIT-NEXT: renamable $r4 = LWZtoc %const.0, $r2 :: (load (s32) from got)628 ; 32BIT-NEXT: renamable $r3 = XORIS killed renamable $r3, 32768629 ; 32BIT-NEXT: STW killed renamable $r3, 4, %stack.1 :: (store (s32) into %stack.1 + 4)630 ; 32BIT-NEXT: renamable $f0 = LFS 0, killed renamable $r4 :: (load (s32) from constant-pool)631 ; 32BIT-NEXT: renamable $f3 = LFD 0, %stack.1 :: (load (s64) from %stack.1)632 ; 32BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f2, implicit $rm633 ; 32BIT-NEXT: renamable $f1 = nofpexcept FRSP killed renamable $f1, implicit $rm634 ; 32BIT-NEXT: renamable $f0 = nofpexcept FSUB killed renamable $f3, killed renamable $f0, implicit $rm635 ; 32BIT-NEXT: renamable $f0 = nofpexcept FRSP killed renamable $f0, implicit $rm636 ; 32BIT-NEXT: renamable $f0 = nofpexcept FADDS killed renamable $f0, killed renamable $f1, implicit $rm637 ; 32BIT-NEXT: renamable $f0 = nofpexcept FCTIWZ killed renamable $f0, implicit $rm638 ; 32BIT-NEXT: STFD killed renamable $f0, 0, %stack.0 :: (store (s64) into %stack.0)639 ; 32BIT-NEXT: renamable $r3 = LWZ 4, %stack.0 :: (load (s32) from %stack.0 + 4, basealign 8)640 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm, implicit $r3641 ;642 ; 64BIT-LABEL: name: test_mix643 ; 64BIT: bb.0.entry:644 ; 64BIT-NEXT: liveins: $f1, $f2, $x4, $x6645 ; 64BIT-NEXT: {{ $}}646 ; 64BIT-NEXT: renamable $r3 = RLWINM renamable $r6, 0, 24, 31, implicit killed $x6647 ; 64BIT-NEXT: renamable $r3 = nsw ADD4 renamable $r4, killed renamable $r3, implicit killed $x4648 ; 64BIT-NEXT: renamable $x3 = EXTSW_32_64 killed renamable $r3649 ; 64BIT-NEXT: STD killed renamable $x3, 0, %stack.1 :: (store (s64) into %stack.1)650 ; 64BIT-NEXT: renamable $f0 = LFD 0, %stack.1 :: (load (s64) from %stack.1)651 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f2, implicit $rm652 ; 64BIT-NEXT: renamable $f1 = nofpexcept FRSP killed renamable $f1, implicit $rm653 ; 64BIT-NEXT: renamable $f0 = nofpexcept FCFID killed renamable $f0, implicit $rm654 ; 64BIT-NEXT: renamable $f0 = nofpexcept FRSP killed renamable $f0, implicit $rm655 ; 64BIT-NEXT: renamable $f0 = nofpexcept FADDS killed renamable $f0, killed renamable $f1, implicit $rm656 ; 64BIT-NEXT: renamable $f0 = nofpexcept FCTIWZ killed renamable $f0, implicit $rm657 ; 64BIT-NEXT: STFD killed renamable $f0, 0, %stack.0 :: (store (s64) into %stack.0)658 ; 64BIT-NEXT: renamable $x3 = LWZ8 4, %stack.0 :: (load (s32) from %stack.0 + 4, basealign 8)659 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm, implicit $x3660entry:661 %conv = fpext float %f to double662 %add = fadd double %conv, %d663 %conv1 = fptrunc double %add to float664 %conv2 = zext i8 %c to i32665 %add3 = add nsw i32 %i, %conv2666 %conv4 = sitofp i32 %add3 to float667 %add5 = fadd float %conv4, %conv1668 %conv6 = fptosi float %add5 to i32669 ret i32 %conv6670}671 672define i64 @callee_mixed_ints(i32 %a, i8 signext %b, i32 %c, i16 signext %d, i64 %e) {673 ; 32BIT-LABEL: name: callee_mixed_ints674 ; 32BIT: bb.0.entry:675 ; 32BIT-NEXT: liveins: $r3, $r4, $r5, $r6, $r7, $r8676 ; 32BIT-NEXT: {{ $}}677 ; 32BIT-NEXT: renamable $r4 = RLWINM killed renamable $r4, 0, 24, 31678 ; 32BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, killed renamable $r4679 ; 32BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, killed renamable $r5680 ; 32BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, killed renamable $r6681 ; 32BIT-NEXT: renamable $r5 = SRAWI renamable $r3, 31, implicit-def dead $carry682 ; 32BIT-NEXT: renamable $r4 = ADDC killed renamable $r3, killed renamable $r8, implicit-def $carry683 ; 32BIT-NEXT: renamable $r3 = ADDE killed renamable $r5, killed renamable $r7, implicit-def dead $carry, implicit killed $carry684 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm, implicit $r3, implicit $r4685 ;686 ; 64BIT-LABEL: name: callee_mixed_ints687 ; 64BIT: bb.0.entry:688 ; 64BIT-NEXT: liveins: $x3, $x4, $x5, $x6, $x7689 ; 64BIT-NEXT: {{ $}}690 ; 64BIT-NEXT: renamable $r4 = RLWINM renamable $r4, 0, 24, 31, implicit killed $x4691 ; 64BIT-NEXT: renamable $r3 = nsw ADD4 renamable $r3, killed renamable $r4, implicit killed $x3692 ; 64BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, renamable $r5, implicit killed $x5693 ; 64BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, renamable $r6, implicit killed $x6694 ; 64BIT-NEXT: renamable $x3 = EXTSW_32_64 killed renamable $r3695 ; 64BIT-NEXT: renamable $x3 = nsw ADD8 killed renamable $x3, killed renamable $x7696 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm, implicit $x3697entry:698 %conv = zext i8 %b to i32699 %add = add nsw i32 %a, %conv700 %add1 = add nsw i32 %add, %c701 %conv2 = sext i16 %d to i32702 %add3 = add nsw i32 %add1, %conv2703 %conv4 = sext i32 %add3 to i64704 %add5 = add nsw i64 %conv4, %e705 ret i64 %add5706 }707 708define void @call_test_vararg() {709 ; 32BIT-LABEL: name: call_test_vararg710 ; 32BIT: bb.0.entry:711 ; 32BIT-NEXT: renamable $r3 = LWZtoc @f1, $r2 :: (load (s32) from got)712 ; 32BIT-NEXT: renamable $f1 = LFS 0, killed renamable $r3 :: (dereferenceable load (s32) from @f1)713 ; 32BIT-NEXT: renamable $r3 = LWZtoc @d1, $r2 :: (load (s32) from got)714 ; 32BIT-NEXT: STFD renamable $f1, 0, %stack.1 :: (store (s64) into %stack.1)715 ; 32BIT-NEXT: renamable $r4 = LWZ 0, %stack.1 :: (load (s32) from %stack.1, align 8)716 ; 32BIT-NEXT: renamable $f2 = LFD 0, killed renamable $r3 :: (dereferenceable load (s64) from @d1)717 ; 32BIT-NEXT: renamable $r5 = LWZ 4, %stack.1 :: (load (s32) from %stack.1 + 4)718 ; 32BIT-NEXT: STFD renamable $f2, 0, %stack.0 :: (store (s64) into %stack.0)719 ; 32BIT-NEXT: renamable $r6 = LWZ 0, %stack.0 :: (load (s32) from %stack.0, align 8)720 ; 32BIT-NEXT: renamable $r7 = LWZ 4, %stack.0 :: (load (s32) from %stack.0 + 4)721 ; 32BIT-NEXT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r1722 ; 32BIT-NEXT: $r3 = LI 42723 ; 32BIT-NEXT: BL_NOP <mcsymbol .test_vararg[PR]>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r3, implicit $f1, implicit $r4, implicit $r5, implicit $f2, implicit $r6, implicit $r7, implicit $r2, implicit-def $r1724 ; 32BIT-NEXT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r1725 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm726 ;727 ; 64BIT-LABEL: name: call_test_vararg728 ; 64BIT: bb.0.entry:729 ; 64BIT-NEXT: renamable $x3 = LDtoc @f1, $x2 :: (load (s64) from got)730 ; 64BIT-NEXT: renamable $f1 = LFS 0, killed renamable $x3 :: (dereferenceable load (s32) from @f1)731 ; 64BIT-NEXT: renamable $x3 = LDtoc @d1, $x2 :: (load (s64) from got)732 ; 64BIT-NEXT: STFD renamable $f1, 0, %stack.1 :: (store (s64) into %stack.1)733 ; 64BIT-NEXT: renamable $f2 = LFD 0, killed renamable $x3 :: (dereferenceable load (s64) from @d1)734 ; 64BIT-NEXT: renamable $x4 = LD 0, %stack.1 :: (load (s64) from %stack.1)735 ; 64BIT-NEXT: STFD renamable $f2, 0, %stack.0 :: (store (s64) into %stack.0)736 ; 64BIT-NEXT: renamable $x5 = LD 0, %stack.0 :: (load (s64) from %stack.0)737 ; 64BIT-NEXT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r1738 ; 64BIT-NEXT: $x3 = LI8 42739 ; 64BIT-NEXT: BL8_NOP <mcsymbol .test_vararg[PR]>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $x3, implicit $f1, implicit $x4, implicit $f2, implicit $x5, implicit $x2, implicit-def $r1740 ; 64BIT-NEXT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1741 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm742entry:743 %0 = load float, ptr @f1, align 4744 %conv = fpext float %0 to double745 %1 = load double, ptr @d1, align 8746 call void (i32, ...) @test_vararg(i32 42, double %conv, double %1)747 ret void748}749 750declare void @test_vararg(i32, ...)751 752define void @call_test_vararg2() {753 ; 32BIT-LABEL: name: call_test_vararg2754 ; 32BIT: bb.0.entry:755 ; 32BIT-NEXT: renamable $r3 = LWZtoc @f1, $r2 :: (load (s32) from got)756 ; 32BIT-NEXT: renamable $f1 = LFS 0, killed renamable $r3 :: (dereferenceable load (s32) from @f1)757 ; 32BIT-NEXT: renamable $r3 = LWZtoc @d1, $r2 :: (load (s32) from got)758 ; 32BIT-NEXT: STFD renamable $f1, 0, %stack.1 :: (store (s64) into %stack.1)759 ; 32BIT-NEXT: renamable $r4 = LWZ 0, %stack.1 :: (load (s32) from %stack.1, align 8)760 ; 32BIT-NEXT: renamable $f2 = LFD 0, killed renamable $r3 :: (dereferenceable load (s64) from @d1)761 ; 32BIT-NEXT: renamable $r5 = LWZ 4, %stack.1 :: (load (s32) from %stack.1 + 4)762 ; 32BIT-NEXT: STFD renamable $f2, 0, %stack.0 :: (store (s64) into %stack.0)763 ; 32BIT-NEXT: renamable $r7 = LWZ 0, %stack.0 :: (load (s32) from %stack.0, align 8)764 ; 32BIT-NEXT: renamable $r8 = LWZ 4, %stack.0 :: (load (s32) from %stack.0 + 4)765 ; 32BIT-NEXT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r1766 ; 32BIT-NEXT: $r3 = LI 42767 ; 32BIT-NEXT: $r6 = LI 42768 ; 32BIT-NEXT: BL_NOP <mcsymbol .test_vararg[PR]>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r3, implicit $f1, implicit $r4, implicit $r5, implicit killed $r6, implicit $f2, implicit $r7, implicit $r8, implicit $r2, implicit-def $r1769 ; 32BIT-NEXT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r1770 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm771 ;772 ; 64BIT-LABEL: name: call_test_vararg2773 ; 64BIT: bb.0.entry:774 ; 64BIT-NEXT: renamable $x3 = LDtoc @f1, $x2 :: (load (s64) from got)775 ; 64BIT-NEXT: renamable $f1 = LFS 0, killed renamable $x3 :: (dereferenceable load (s32) from @f1)776 ; 64BIT-NEXT: renamable $x3 = LDtoc @d1, $x2 :: (load (s64) from got)777 ; 64BIT-NEXT: STFD renamable $f1, 0, %stack.1 :: (store (s64) into %stack.1)778 ; 64BIT-NEXT: renamable $f2 = LFD 0, killed renamable $x3 :: (dereferenceable load (s64) from @d1)779 ; 64BIT-NEXT: renamable $x4 = LD 0, %stack.1 :: (load (s64) from %stack.1)780 ; 64BIT-NEXT: STFD renamable $f2, 0, %stack.0 :: (store (s64) into %stack.0)781 ; 64BIT-NEXT: renamable $x6 = LD 0, %stack.0 :: (load (s64) from %stack.0)782 ; 64BIT-NEXT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r1783 ; 64BIT-NEXT: $x3 = LI8 42784 ; 64BIT-NEXT: $x5 = LI8 42785 ; 64BIT-NEXT: BL8_NOP <mcsymbol .test_vararg[PR]>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $x3, implicit $f1, implicit $x4, implicit killed $x5, implicit $f2, implicit $x6, implicit $x2, implicit-def $r1786 ; 64BIT-NEXT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1787 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm788entry:789 %0 = load float, ptr @f1, align 4790 %conv = fpext float %0 to double791 %1 = load double, ptr @d1, align 8792 call void (i32, ...) @test_vararg(i32 42, double %conv, i32 42, double %1)793 ret void794}795 796define void @call_test_vararg3() {797 ; 32BIT-LABEL: name: call_test_vararg3798 ; 32BIT: bb.0.entry:799 ; 32BIT-NEXT: renamable $r3 = LWZtoc @f1, $r2 :: (load (s32) from got)800 ; 32BIT-NEXT: renamable $f1 = LFS 0, killed renamable $r3 :: (dereferenceable load (s32) from @f1)801 ; 32BIT-NEXT: renamable $r3 = LWZtoc @d1, $r2 :: (load (s32) from got)802 ; 32BIT-NEXT: STFD renamable $f1, 0, %stack.1 :: (store (s64) into %stack.1)803 ; 32BIT-NEXT: renamable $r4 = LWZ 0, %stack.1 :: (load (s32) from %stack.1, align 8)804 ; 32BIT-NEXT: renamable $f2 = LFD 0, killed renamable $r3 :: (dereferenceable load (s64) from @d1)805 ; 32BIT-NEXT: renamable $r5 = LWZ 4, %stack.1 :: (load (s32) from %stack.1 + 4)806 ; 32BIT-NEXT: STFD renamable $f2, 0, %stack.0 :: (store (s64) into %stack.0)807 ; 32BIT-NEXT: renamable $r8 = LWZ 0, %stack.0 :: (load (s32) from %stack.0, align 8)808 ; 32BIT-NEXT: renamable $r9 = LWZ 4, %stack.0 :: (load (s32) from %stack.0 + 4)809 ; 32BIT-NEXT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r1810 ; 32BIT-NEXT: $r3 = LI 42811 ; 32BIT-NEXT: $r6 = LI 0812 ; 32BIT-NEXT: $r7 = LI 42813 ; 32BIT-NEXT: BL_NOP <mcsymbol .test_vararg[PR]>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r3, implicit $f1, implicit $r4, implicit $r5, implicit killed $r6, implicit killed $r7, implicit $f2, implicit $r8, implicit $r9, implicit $r2, implicit-def $r1814 ; 32BIT-NEXT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r1815 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm816 ;817 ; 64BIT-LABEL: name: call_test_vararg3818 ; 64BIT: bb.0.entry:819 ; 64BIT-NEXT: renamable $x3 = LDtoc @f1, $x2 :: (load (s64) from got)820 ; 64BIT-NEXT: renamable $f1 = LFS 0, killed renamable $x3 :: (dereferenceable load (s32) from @f1)821 ; 64BIT-NEXT: renamable $x3 = LDtoc @d1, $x2 :: (load (s64) from got)822 ; 64BIT-NEXT: STFD renamable $f1, 0, %stack.1 :: (store (s64) into %stack.1)823 ; 64BIT-NEXT: renamable $f2 = LFD 0, killed renamable $x3 :: (dereferenceable load (s64) from @d1)824 ; 64BIT-NEXT: renamable $x4 = LD 0, %stack.1 :: (load (s64) from %stack.1)825 ; 64BIT-NEXT: STFD renamable $f2, 0, %stack.0 :: (store (s64) into %stack.0)826 ; 64BIT-NEXT: renamable $x6 = LD 0, %stack.0 :: (load (s64) from %stack.0)827 ; 64BIT-NEXT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r1828 ; 64BIT-NEXT: $x3 = LI8 42829 ; 64BIT-NEXT: $x5 = LI8 42830 ; 64BIT-NEXT: BL8_NOP <mcsymbol .test_vararg[PR]>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $x3, implicit $f1, implicit $x4, implicit killed $x5, implicit $f2, implicit $x6, implicit $x2, implicit-def $r1831 ; 64BIT-NEXT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1832 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm833entry:834 %0 = load float, ptr @f1, align 4835 %conv = fpext float %0 to double836 %1 = load double, ptr @d1, align 8837 call void (i32, ...) @test_vararg(i32 42, double %conv, i64 42, double %1)838 ret void839}840 841define void @call_test_vararg4() {842 ; 32BIT-LABEL: name: call_test_vararg4843 ; 32BIT: bb.0.entry:844 ; 32BIT-NEXT: renamable $r3 = LWZtoc @f1, $r2 :: (load (s32) from got)845 ; 32BIT-NEXT: renamable $f1 = LFS 0, killed renamable $r3 :: (dereferenceable load (s32) from @f1)846 ; 32BIT-NEXT: STFS renamable $f1, 0, %stack.0 :: (store (s32) into %stack.0)847 ; 32BIT-NEXT: renamable $r4 = LWZ 0, %stack.0 :: (load (s32) from %stack.0)848 ; 32BIT-NEXT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r1849 ; 32BIT-NEXT: $r3 = LI 42850 ; 32BIT-NEXT: BL_NOP <mcsymbol .test_vararg[PR]>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r3, implicit $f1, implicit $r4, implicit $r2, implicit-def $r1851 ; 32BIT-NEXT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r1852 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm853 ;854 ; 64BIT-LABEL: name: call_test_vararg4855 ; 64BIT: bb.0.entry:856 ; 64BIT-NEXT: renamable $x3 = LDtoc @f1, $x2 :: (load (s64) from got)857 ; 64BIT-NEXT: renamable $f1 = LFS 0, killed renamable $x3 :: (dereferenceable load (s32) from @f1)858 ; 64BIT-NEXT: STFS renamable $f1, 0, %stack.0 :: (store (s32) into %stack.0)859 ; 64BIT-NEXT: renamable $x4 = LWZ8 0, %stack.0 :: (load (s32) from %stack.0)860 ; 64BIT-NEXT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r1861 ; 64BIT-NEXT: $x3 = LI8 42862 ; 64BIT-NEXT: BL8_NOP <mcsymbol .test_vararg[PR]>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $x3, implicit $f1, implicit $x4, implicit $x2, implicit-def $r1863 ; 64BIT-NEXT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1864 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm865entry:866 %0 = load float, ptr @f1, align 4867 call void (i32, ...) @test_vararg(i32 42, float %0)868 ret void869}870 871@c = common global i8 0, align 1872@si = common global i16 0, align 2873@i = common global i32 0, align 4874@lli = common global i64 0, align 8875@f = common global float 0.000000e+00, align 4876@d = common global double 0.000000e+00, align 8877 878; Basic saving of integral type arguments to the parameter save area.879define void @call_test_stackarg_int() {880 ; 32BIT-LABEL: name: call_test_stackarg_int881 ; 32BIT: bb.0.entry:882 ; 32BIT-NEXT: renamable $r3 = LWZtoc @c, $r2 :: (load (s32) from got)883 ; 32BIT-NEXT: renamable $r4 = LWZtoc @si, $r2 :: (load (s32) from got)884 ; 32BIT-NEXT: renamable $r5 = LWZtoc @i, $r2 :: (load (s32) from got)885 ; 32BIT-NEXT: renamable $r11 = LBZ 0, killed renamable $r3 :: (dereferenceable load (s8) from @c)886 ; 32BIT-NEXT: renamable $r3 = LWZtoc @lli, $r2 :: (load (s32) from got)887 ; 32BIT-NEXT: renamable $r4 = LHA 0, killed renamable $r4 :: (dereferenceable load (s16) from @si)888 ; 32BIT-NEXT: renamable $r5 = LWZ 0, killed renamable $r5 :: (dereferenceable load (s32) from @i)889 ; 32BIT-NEXT: renamable $r6 = LWZ 0, renamable $r3 :: (dereferenceable load (s32) from @lli, align 8)890 ; 32BIT-NEXT: renamable $r3 = LWZ 4, killed renamable $r3 :: (dereferenceable load (s32) from @lli + 4, basealign 8)891 ; 32BIT-NEXT: ADJCALLSTACKDOWN 80, 0, implicit-def dead $r1, implicit $r1892 ; 32BIT-NEXT: STW renamable $r5, 76, $r1 :: (store (s32) into stack + 76, basealign 16)893 ; 32BIT-NEXT: STW killed renamable $r3, 72, $r1 :: (store (s32) into stack + 72, align 8, basealign 16)894 ; 32BIT-NEXT: STW killed renamable $r6, 68, $r1 :: (store (s32) into stack + 68, basealign 16)895 ; 32BIT-NEXT: STW killed renamable $r5, 64, $r1 :: (store (s32) into stack + 64, align 16)896 ; 32BIT-NEXT: STW killed renamable $r4, 60, $r1 :: (store (s32) into stack + 60, basealign 16)897 ; 32BIT-NEXT: $r3 = LI 1898 ; 32BIT-NEXT: $r4 = LI 2899 ; 32BIT-NEXT: $r5 = LI 3900 ; 32BIT-NEXT: $r6 = LI 4901 ; 32BIT-NEXT: $r7 = LI 5902 ; 32BIT-NEXT: $r8 = LI 6903 ; 32BIT-NEXT: $r9 = LI 7904 ; 32BIT-NEXT: $r10 = LI 8905 ; 32BIT-NEXT: STW killed renamable $r11, 56, $r1 :: (store (s32) into stack + 56, align 8, basealign 16)906 ; 32BIT-NEXT: BL_NOP <mcsymbol .test_stackarg_int[PR]>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r3, implicit $r4, implicit $r5, implicit $r6, implicit $r7, implicit $r8, implicit $r9, implicit $r10, implicit $r2, implicit-def $r1907 ; 32BIT-NEXT: ADJCALLSTACKUP 80, 0, implicit-def dead $r1, implicit $r1908 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm909 ;910 ; 64BIT-LABEL: name: call_test_stackarg_int911 ; 64BIT: bb.0.entry:912 ; 64BIT-NEXT: renamable $x3 = LDtoc @c, $x2 :: (load (s64) from got)913 ; 64BIT-NEXT: renamable $x4 = LDtoc @si, $x2 :: (load (s64) from got)914 ; 64BIT-NEXT: renamable $x5 = LDtoc @i, $x2 :: (load (s64) from got)915 ; 64BIT-NEXT: renamable $x6 = LDtoc @lli, $x2 :: (load (s64) from got)916 ; 64BIT-NEXT: renamable $x11 = LBZ8 0, killed renamable $x3 :: (dereferenceable load (s8) from @c)917 ; 64BIT-NEXT: renamable $x12 = LHA8 0, killed renamable $x4 :: (dereferenceable load (s16) from @si)918 ; 64BIT-NEXT: renamable $x0 = LWZ8 0, killed renamable $x5 :: (dereferenceable load (s32) from @i)919 ; 64BIT-NEXT: renamable $x31 = LD 0, killed renamable $x6 :: (dereferenceable load (s64) from @lli)920 ; 64BIT-NEXT: ADJCALLSTACKDOWN 152, 0, implicit-def dead $r1, implicit $r1921 ; 64BIT-NEXT: $x3 = LI8 1922 ; 64BIT-NEXT: $x4 = LI8 2923 ; 64BIT-NEXT: $x5 = LI8 3924 ; 64BIT-NEXT: $x6 = LI8 4925 ; 64BIT-NEXT: $x7 = LI8 5926 ; 64BIT-NEXT: $x8 = LI8 6927 ; 64BIT-NEXT: $x9 = LI8 7928 ; 64BIT-NEXT: $x10 = LI8 8929 ; 64BIT-NEXT: STD killed renamable $x31, 136, $x1 :: (store (s64) into stack + 136, basealign 16)930 ; 64BIT-NEXT: STD renamable $x0, 144, $x1 :: (store (s64) into stack + 144, align 16)931 ; 64BIT-NEXT: STD killed renamable $x0, 128, $x1 :: (store (s64) into stack + 128, align 16)932 ; 64BIT-NEXT: STD killed renamable $x12, 120, $x1 :: (store (s64) into stack + 120, basealign 16)933 ; 64BIT-NEXT: STD killed renamable $x11, 112, $x1 :: (store (s64) into stack + 112, align 16)934 ; 64BIT-NEXT: BL8_NOP <mcsymbol .test_stackarg_int[PR]>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $x3, implicit $x4, implicit $x5, implicit $x6, implicit $x7, implicit $x8, implicit $x9, implicit $x10, implicit $x2, implicit-def $r1935 ; 64BIT-NEXT: ADJCALLSTACKUP 152, 0, implicit-def dead $r1, implicit $r1936 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm937entry:938 %0 = load i8, ptr @c, align 1939 %1 = load i16, ptr @si, align 2940 %2 = load i32, ptr @i, align 4941 %3 = load i64, ptr @lli, align 8942 %4 = load i32, ptr @i, align 4943 call void @test_stackarg_int(i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i8 zeroext %0, i16 signext %1, i32 %2, i64 %3, i32 %4)944 ret void945}946 947declare void @test_stackarg_int(i32, i32, i32, i32, i32, i32, i32, i32, i8 zeroext, i16 signext, i32, i64, i32)948 949; Basic saving of floating point type arguments to the parameter save area.950; The float and double arguments will pass in both fpr as well as parameter save area.951define void @call_test_stackarg_float() {952 ; 32BIT-LABEL: name: call_test_stackarg_float953 ; 32BIT: bb.0.entry:954 ; 32BIT-NEXT: renamable $r3 = LWZtoc @f, $r2 :: (load (s32) from got)955 ; 32BIT-NEXT: renamable $r4 = LWZtoc @d, $r2 :: (load (s32) from got)956 ; 32BIT-NEXT: renamable $f1 = LFS 0, killed renamable $r3 :: (dereferenceable load (s32) from @f)957 ; 32BIT-NEXT: renamable $f2 = LFD 0, killed renamable $r4 :: (dereferenceable load (s64) from @d)958 ; 32BIT-NEXT: ADJCALLSTACKDOWN 68, 0, implicit-def dead $r1, implicit $r1959 ; 32BIT-NEXT: STFD renamable $f2, 0, %stack.0 :: (store (s64) into %stack.0)960 ; 32BIT-NEXT: STFS renamable $f1, 56, $r1 :: (store (s32) into stack + 56, align 8, basealign 16)961 ; 32BIT-NEXT: renamable $r3 = LWZ 4, %stack.0 :: (load (s32) from %stack.0 + 4)962 ; 32BIT-NEXT: STW killed renamable $r3, 64, $r1 :: (store (s32) into stack + 64, align 16)963 ; 32BIT-NEXT: renamable $r11 = LWZ 0, %stack.0 :: (load (s32) from %stack.0, align 8)964 ; 32BIT-NEXT: $r3 = LI 1965 ; 32BIT-NEXT: $r4 = LI 2966 ; 32BIT-NEXT: $r5 = LI 3967 ; 32BIT-NEXT: $r6 = LI 4968 ; 32BIT-NEXT: $r7 = LI 5969 ; 32BIT-NEXT: $r8 = LI 6970 ; 32BIT-NEXT: $r9 = LI 7971 ; 32BIT-NEXT: $r10 = LI 8972 ; 32BIT-NEXT: STW killed renamable $r11, 60, $r1 :: (store (s32) into stack + 60, basealign 16)973 ; 32BIT-NEXT: BL_NOP <mcsymbol .test_stackarg_float[PR]>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r3, implicit $r4, implicit $r5, implicit $r6, implicit $r7, implicit $r8, implicit $r9, implicit $r10, implicit $f1, implicit $f2, implicit $r2, implicit-def $r1974 ; 32BIT-NEXT: ADJCALLSTACKUP 68, 0, implicit-def dead $r1, implicit $r1975 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm976 ;977 ; 64BIT-LABEL: name: call_test_stackarg_float978 ; 64BIT: bb.0.entry:979 ; 64BIT-NEXT: renamable $x3 = LDtoc @f, $x2 :: (load (s64) from got)980 ; 64BIT-NEXT: renamable $x4 = LDtoc @d, $x2 :: (load (s64) from got)981 ; 64BIT-NEXT: renamable $f1 = LFS 0, killed renamable $x3 :: (dereferenceable load (s32) from @f)982 ; 64BIT-NEXT: renamable $f2 = LFD 0, killed renamable $x4 :: (dereferenceable load (s64) from @d)983 ; 64BIT-NEXT: ADJCALLSTACKDOWN 128, 0, implicit-def dead $r1, implicit $r1984 ; 64BIT-NEXT: STFD renamable $f2, 120, $x1 :: (store (s64) into stack + 120, basealign 16)985 ; 64BIT-NEXT: $x3 = LI8 1986 ; 64BIT-NEXT: $x4 = LI8 2987 ; 64BIT-NEXT: $x5 = LI8 3988 ; 64BIT-NEXT: $x6 = LI8 4989 ; 64BIT-NEXT: $x7 = LI8 5990 ; 64BIT-NEXT: $x8 = LI8 6991 ; 64BIT-NEXT: $x9 = LI8 7992 ; 64BIT-NEXT: $x10 = LI8 8993 ; 64BIT-NEXT: STFS renamable $f1, 112, $x1 :: (store (s32) into stack + 112, align 16)994 ; 64BIT-NEXT: BL8_NOP <mcsymbol .test_stackarg_float[PR]>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $x3, implicit $x4, implicit killed $x5, implicit killed $x6, implicit killed $x7, implicit killed $x8, implicit killed $x9, implicit killed $x10, implicit $f1, implicit $f2, implicit $x2, implicit-def $r1995 ; 64BIT-NEXT: ADJCALLSTACKUP 128, 0, implicit-def dead $r1, implicit $r1996 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm997entry:998 %0 = load float, ptr @f, align 4999 %1 = load double, ptr @d, align 81000 call void @test_stackarg_float(i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, float %0, double %1)1001 ret void1002}1003 1004declare void @test_stackarg_float(i32, i32, i32, i32, i32, i32, i32, i32, float, double)1005 1006define void @call_test_stackarg_float2() {1007 ; 32BIT-LABEL: name: call_test_stackarg_float21008 ; 32BIT: bb.0.entry:1009 ; 32BIT-NEXT: renamable $r3 = LWZtoc @d, $r2 :: (load (s32) from got)1010 ; 32BIT-NEXT: renamable $f1 = LFD 0, killed renamable $r3 :: (dereferenceable load (s64) from @d)1011 ; 32BIT-NEXT: STFD renamable $f1, 0, %stack.0 :: (store (s64) into %stack.0)1012 ; 32BIT-NEXT: renamable $r9 = LWZ 0, %stack.0 :: (load (s32) from %stack.0, align 8)1013 ; 32BIT-NEXT: renamable $r10 = LWZ 4, %stack.0 :: (load (s32) from %stack.0 + 4)1014 ; 32BIT-NEXT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r11015 ; 32BIT-NEXT: $r3 = LI 11016 ; 32BIT-NEXT: $r4 = LI 21017 ; 32BIT-NEXT: $r5 = LI 31018 ; 32BIT-NEXT: $r6 = LI 41019 ; 32BIT-NEXT: $r7 = LI 51020 ; 32BIT-NEXT: $r8 = LI 61021 ; 32BIT-NEXT: BL_NOP <mcsymbol .test_stackarg_float2[PR]>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r3, implicit killed $r4, implicit killed $r5, implicit killed $r6, implicit killed $r7, implicit killed $r8, implicit $f1, implicit $r9, implicit $r10, implicit $r2, implicit-def $r11022 ; 32BIT-NEXT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r11023 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm1024 ;1025 ; 64BIT-LABEL: name: call_test_stackarg_float21026 ; 64BIT: bb.0.entry:1027 ; 64BIT-NEXT: renamable $x3 = LDtoc @d, $x2 :: (load (s64) from got)1028 ; 64BIT-NEXT: renamable $f1 = LFD 0, killed renamable $x3 :: (dereferenceable load (s64) from @d)1029 ; 64BIT-NEXT: STFD renamable $f1, 0, %stack.0 :: (store (s64) into %stack.0)1030 ; 64BIT-NEXT: renamable $x9 = LD 0, %stack.0 :: (load (s64) from %stack.0)1031 ; 64BIT-NEXT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r11032 ; 64BIT-NEXT: $x3 = LI8 11033 ; 64BIT-NEXT: $x4 = LI8 21034 ; 64BIT-NEXT: $x5 = LI8 31035 ; 64BIT-NEXT: $x6 = LI8 41036 ; 64BIT-NEXT: $x7 = LI8 51037 ; 64BIT-NEXT: $x8 = LI8 61038 ; 64BIT-NEXT: BL8_NOP <mcsymbol .test_stackarg_float2[PR]>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $x3, implicit killed $x4, implicit killed $x5, implicit killed $x6, implicit killed $x7, implicit killed $x8, implicit $f1, implicit $x9, implicit $x2, implicit-def $r11039 ; 64BIT-NEXT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r11040 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm1041entry:1042 %0 = load double, ptr @d, align 81043 call void (i32, i32, i32, i32, i32, i32, ...) @test_stackarg_float2(i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, double %0)1044 ret void1045}1046 1047declare void @test_stackarg_float2(i32, i32, i32, i32, i32, i32, ...)1048 1049; A double arg will pass on the stack in PPC32 if there is only one available GPR.1050define void @call_test_stackarg_float3() {1051 ; 32BIT-LABEL: name: call_test_stackarg_float31052 ; 32BIT: bb.0.entry:1053 ; 32BIT-NEXT: renamable $r3 = LWZtoc @d, $r2 :: (load (s32) from got)1054 ; 32BIT-NEXT: renamable $f1 = LFD 0, killed renamable $r3 :: (dereferenceable load (s64) from @d)1055 ; 32BIT-NEXT: renamable $r3 = LWZtoc @f, $r2 :: (load (s32) from got)1056 ; 32BIT-NEXT: STFD renamable $f1, 0, %stack.0 :: (store (s64) into %stack.0)1057 ; 32BIT-NEXT: renamable $r10 = LWZ 0, %stack.0 :: (load (s32) from %stack.0, align 8)1058 ; 32BIT-NEXT: renamable $f2 = LFS 0, killed renamable $r3 :: (dereferenceable load (s32) from @f)1059 ; 32BIT-NEXT: ADJCALLSTACKDOWN 64, 0, implicit-def dead $r1, implicit $r11060 ; 32BIT-NEXT: STFD renamable $f1, 0, %stack.1 :: (store (s64) into %stack.1)1061 ; 32BIT-NEXT: STFS renamable $f2, 60, $r1 :: (store (s32) into stack + 60, basealign 16)1062 ; 32BIT-NEXT: renamable $r3 = LWZ 4, %stack.1 :: (load (s32) from %stack.1 + 4)1063 ; 32BIT-NEXT: STW killed renamable $r3, 56, $r1 :: (store (s32) into stack + 56, align 8, basealign 16)1064 ; 32BIT-NEXT: renamable $r11 = LWZ 0, %stack.1 :: (load (s32) from %stack.1, align 8)1065 ; 32BIT-NEXT: $r3 = LI 11066 ; 32BIT-NEXT: $r4 = LI 21067 ; 32BIT-NEXT: $r5 = LI 31068 ; 32BIT-NEXT: $r6 = LI 41069 ; 32BIT-NEXT: $r7 = LI 51070 ; 32BIT-NEXT: $r8 = LI 61071 ; 32BIT-NEXT: $r9 = LI 71072 ; 32BIT-NEXT: STW killed renamable $r11, 52, $r1 :: (store (s32) into stack + 52, basealign 16)1073 ; 32BIT-NEXT: BL_NOP <mcsymbol .test_stackarg_float3[PR]>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r3, implicit $r4, implicit $r5, implicit $r6, implicit $r7, implicit $r8, implicit $r9, implicit $f1, implicit $r10, implicit $f2, implicit $r2, implicit-def $r11074 ; 32BIT-NEXT: ADJCALLSTACKUP 64, 0, implicit-def dead $r1, implicit $r11075 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm1076 ;1077 ; 64BIT-LABEL: name: call_test_stackarg_float31078 ; 64BIT: bb.0.entry:1079 ; 64BIT-NEXT: renamable $x3 = LDtoc @d, $x2 :: (load (s64) from got)1080 ; 64BIT-NEXT: renamable $f1 = LFD 0, killed renamable $x3 :: (dereferenceable load (s64) from @d)1081 ; 64BIT-NEXT: renamable $x3 = LDtoc @f, $x2 :: (load (s64) from got)1082 ; 64BIT-NEXT: STFD renamable $f1, 0, %stack.0 :: (store (s64) into %stack.0)1083 ; 64BIT-NEXT: renamable $x10 = LD 0, %stack.0 :: (load (s64) from %stack.0)1084 ; 64BIT-NEXT: renamable $f2 = LFS 0, killed renamable $x3 :: (dereferenceable load (s32) from @f)1085 ; 64BIT-NEXT: ADJCALLSTACKDOWN 120, 0, implicit-def dead $r1, implicit $r11086 ; 64BIT-NEXT: $x3 = LI8 11087 ; 64BIT-NEXT: $x4 = LI8 21088 ; 64BIT-NEXT: $x5 = LI8 31089 ; 64BIT-NEXT: $x6 = LI8 41090 ; 64BIT-NEXT: $x7 = LI8 51091 ; 64BIT-NEXT: $x8 = LI8 61092 ; 64BIT-NEXT: $x9 = LI8 71093 ; 64BIT-NEXT: STFS renamable $f2, 112, $x1 :: (store (s32) into stack + 112, align 16)1094 ; 64BIT-NEXT: BL8_NOP <mcsymbol .test_stackarg_float3[PR]>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $x3, implicit killed $x4, implicit killed $x5, implicit killed $x6, implicit killed $x7, implicit killed $x8, implicit killed $x9, implicit $f1, implicit $x10, implicit $f2, implicit $x2, implicit-def $r11095 ; 64BIT-NEXT: ADJCALLSTACKUP 120, 0, implicit-def dead $r1, implicit $r11096 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm1097entry:1098 %0 = load double, ptr @d, align 81099 %1 = load float, ptr @f, align 41100 call void (i32, i32, i32, i32, i32, i32, i32, ...) @test_stackarg_float3(i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, double %0, float %1)1101 ret void1102}1103 1104declare void @test_stackarg_float3(i32, i32, i32, i32, i32, i32, i32, ...)1105 1106define i64 @test_ints_stack(i32 %i1, i32 %i2, i32 %i3, i32 %i4, i32 %i5, i32 %i6, i32 %i7, i32 %i8, i64 %ll9, i16 signext %s10, i8 zeroext %c11, i32 %ui12, i32 %si13, i64 %ll14, i8 zeroext %uc15, i32 %i16) {1107 ; 32BIT-LABEL: name: test_ints_stack1108 ; 32BIT: bb.0.entry:1109 ; 32BIT-NEXT: liveins: $r3, $r4, $r5, $r6, $r7, $r8, $r9, $r101110 ; 32BIT-NEXT: {{ $}}1111 ; 32BIT-NEXT: renamable $r11 = LWZ 0, %fixed-stack.0 :: (load (s32) from %fixed-stack.0)1112 ; 32BIT-NEXT: renamable $r12 = LWZ 0, %fixed-stack.4 :: (load (s32) from %fixed-stack.4)1113 ; 32BIT-NEXT: renamable $r0 = LBZ 3, %fixed-stack.1 :: (load (s8) from %fixed-stack.1 + 3, basealign 4)1114 ; 32BIT-NEXT: renamable $r31 = LWZ 0, %fixed-stack.3 :: (load (s32) from %fixed-stack.3, align 16)1115 ; 32BIT-NEXT: renamable $r30 = LWZ 4, %fixed-stack.3 :: (load (s32) from %fixed-stack.3 + 4, basealign 16)1116 ; 32BIT-NEXT: renamable $r29 = LWZ 0, %fixed-stack.5 :: (load (s32) from %fixed-stack.5, align 8)1117 ; 32BIT-NEXT: renamable $r28 = LBZ 3, %fixed-stack.6 :: (load (s8) from %fixed-stack.6 + 3, basealign 4)1118 ; 32BIT-NEXT: renamable $r27 = LHA 2, %fixed-stack.7 :: (load (s16) from %fixed-stack.7 + 2, basealign 4)1119 ; 32BIT-NEXT: renamable $r26 = LWZ 0, %fixed-stack.9 :: (load (s32) from %fixed-stack.9, align 8)1120 ; 32BIT-NEXT: renamable $r25 = LWZ 4, %fixed-stack.9 :: (load (s32) from %fixed-stack.9 + 4, basealign 8)1121 ; 32BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, killed renamable $r41122 ; 32BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, killed renamable $r51123 ; 32BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, killed renamable $r61124 ; 32BIT-NEXT: renamable $r5 = SRAWI renamable $r11, 31, implicit-def dead $carry1125 ; 32BIT-NEXT: renamable $r4 = SRAWI renamable $r12, 31, implicit-def dead $carry1126 ; 32BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, killed renamable $r71127 ; 32BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, killed renamable $r81128 ; 32BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, killed renamable $r91129 ; 32BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, killed renamable $r101130 ; 32BIT-NEXT: renamable $r6 = SRAWI renamable $r3, 31, implicit-def dead $carry1131 ; 32BIT-NEXT: renamable $r3 = ADDC killed renamable $r3, killed renamable $r25, implicit-def $carry1132 ; 32BIT-NEXT: renamable $r6 = ADDE killed renamable $r6, killed renamable $r26, implicit-def dead $carry, implicit $carry1133 ; 32BIT-NEXT: renamable $r7 = SRAWI renamable $r27, 31, implicit-def dead $carry1134 ; 32BIT-NEXT: renamable $r3 = ADDC killed renamable $r3, killed renamable $r27, implicit-def $carry1135 ; 32BIT-NEXT: renamable $r6 = ADDE killed renamable $r6, killed renamable $r7, implicit-def dead $carry, implicit $carry1136 ; 32BIT-NEXT: renamable $r3 = ADDC killed renamable $r3, killed renamable $r28, implicit-def $carry1137 ; 32BIT-NEXT: renamable $r6 = ADDZE killed renamable $r6, implicit-def dead $carry, implicit $carry1138 ; 32BIT-NEXT: renamable $r3 = ADDC killed renamable $r3, killed renamable $r29, implicit-def $carry1139 ; 32BIT-NEXT: renamable $r6 = ADDZE killed renamable $r6, implicit-def dead $carry, implicit $carry1140 ; 32BIT-NEXT: renamable $r3 = ADDC killed renamable $r3, killed renamable $r12, implicit-def $carry1141 ; 32BIT-NEXT: renamable $r4 = ADDE killed renamable $r6, killed renamable $r4, implicit-def dead $carry, implicit $carry1142 ; 32BIT-NEXT: renamable $r3 = ADDC killed renamable $r3, killed renamable $r30, implicit-def $carry1143 ; 32BIT-NEXT: renamable $r4 = ADDE killed renamable $r4, killed renamable $r31, implicit-def dead $carry, implicit $carry1144 ; 32BIT-NEXT: renamable $r3 = ADDC killed renamable $r3, killed renamable $r0, implicit-def $carry1145 ; 32BIT-NEXT: renamable $r6 = ADDZE killed renamable $r4, implicit-def dead $carry, implicit $carry1146 ; 32BIT-NEXT: renamable $r4 = ADDC killed renamable $r3, killed renamable $r11, implicit-def $carry1147 ; 32BIT-NEXT: renamable $r3 = ADDE killed renamable $r6, killed renamable $r5, implicit-def dead $carry, implicit $carry1148 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm, implicit $r3, implicit $r41149 ;1150 ; 64BIT-LABEL: name: test_ints_stack1151 ; 64BIT: bb.0.entry:1152 ; 64BIT-NEXT: liveins: $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x101153 ; 64BIT-NEXT: {{ $}}1154 ; 64BIT-NEXT: renamable $r11 = LBZ 3, %fixed-stack.1, implicit-def $x11 :: (load (s8) from %fixed-stack.1 + 3, basealign 4)1155 ; 64BIT-NEXT: renamable $x12 = LWZ8 0, %fixed-stack.4 :: (load (s32) from %fixed-stack.4)1156 ; 64BIT-NEXT: renamable $r0 = LBZ 3, %fixed-stack.5, implicit-def $x0 :: (load (s8) from %fixed-stack.5 + 3, basealign 4)1157 ; 64BIT-NEXT: renamable $x2 = LWA 0, %fixed-stack.0 :: (load (s32) from %fixed-stack.0)1158 ; 64BIT-NEXT: renamable $x31 = LD 0, %fixed-stack.2 :: (load (s64) from %fixed-stack.2)1159 ; 64BIT-NEXT: renamable $x30 = LWA 0, %fixed-stack.3 :: (load (s32) from %fixed-stack.3)1160 ; 64BIT-NEXT: renamable $x29 = LHA8 2, %fixed-stack.61161 ; 64BIT-NEXT: renamable $x28 = LD 0, %fixed-stack.7 :: (load (s64) from %fixed-stack.7, align 16)1162 ; 64BIT-NEXT: renamable $r3 = nsw ADD4 renamable $r3, renamable $r4, implicit killed $x4, implicit killed $x31163 ; 64BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, renamable $r5, implicit killed $x51164 ; 64BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, renamable $r6, implicit killed $x61165 ; 64BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, renamable $r7, implicit killed $x71166 ; 64BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, renamable $r8, implicit killed $x81167 ; 64BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, renamable $r9, implicit killed $x91168 ; 64BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, renamable $r10, implicit killed $x101169 ; 64BIT-NEXT: renamable $x3 = EXTSW_32_64 killed renamable $r31170 ; 64BIT-NEXT: renamable $x3 = nsw ADD8 killed renamable $x3, killed renamable $x281171 ; 64BIT-NEXT: renamable $x3 = nsw ADD8 killed renamable $x3, killed renamable $x291172 ; 64BIT-NEXT: renamable $x3 = nsw ADD8 killed renamable $x3, killed renamable $x01173 ; 64BIT-NEXT: renamable $x3 = nsw ADD8 killed renamable $x3, killed renamable $x121174 ; 64BIT-NEXT: renamable $x3 = nsw ADD8 killed renamable $x3, killed renamable $x301175 ; 64BIT-NEXT: renamable $x3 = nsw ADD8 killed renamable $x3, killed renamable $x311176 ; 64BIT-NEXT: renamable $x3 = nsw ADD8 killed renamable $x3, killed renamable $x111177 ; 64BIT-NEXT: renamable $x3 = nsw ADD8 killed renamable $x3, killed renamable $x21178 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm, implicit $x31179entry:1180 %add = add nsw i32 %i1, %i21181 %add1 = add nsw i32 %add, %i31182 %add2 = add nsw i32 %add1, %i41183 %add3 = add nsw i32 %add2, %i51184 %add4 = add nsw i32 %add3, %i61185 %add5 = add nsw i32 %add4, %i71186 %add6 = add nsw i32 %add5, %i81187 %conv = sext i32 %add6 to i641188 %add7 = add nsw i64 %conv, %ll91189 %conv8 = sext i16 %s10 to i641190 %add9 = add nsw i64 %add7, %conv81191 %conv10 = zext i8 %c11 to i641192 %add11 = add nsw i64 %add9, %conv101193 %conv12 = zext i32 %ui12 to i641194 %add13 = add nsw i64 %add11, %conv121195 %conv14 = sext i32 %si13 to i641196 %add15 = add nsw i64 %add13, %conv141197 %add16 = add nsw i64 %add15, %ll141198 %conv17 = zext i8 %uc15 to i641199 %add18 = add nsw i64 %add16, %conv171200 %conv19 = sext i32 %i16 to i641201 %add20 = add nsw i64 %add18, %conv191202 ret i64 %add201203}1204 1205@ll1 = common global i64 0, align 81206@si1 = common global i16 0, align 21207@ch = common global i8 0, align 11208@ui = common global i32 0, align 41209@sint = common global i32 0, align 41210@ll2 = common global i64 0, align 81211@uc1 = common global i8 0, align 11212@i1 = common global i32 0, align 41213 1214define void @caller_ints_stack() {1215 ; 32BIT-LABEL: name: caller_ints_stack1216 ; 32BIT: bb.0.entry:1217 ; 32BIT-NEXT: renamable $r3 = LWZtoc @ll1, $r2 :: (load (s32) from got)1218 ; 32BIT-NEXT: renamable $r4 = LWZtoc @si1, $r2 :: (load (s32) from got)1219 ; 32BIT-NEXT: renamable $r11 = LWZ 0, renamable $r3 :: (dereferenceable load (s32) from @ll1, align 8)1220 ; 32BIT-NEXT: renamable $r5 = LWZtoc @ch, $r2 :: (load (s32) from got)1221 ; 32BIT-NEXT: renamable $r3 = LWZ 4, killed renamable $r3 :: (dereferenceable load (s32) from @ll1 + 4, basealign 8)1222 ; 32BIT-NEXT: renamable $r6 = LWZtoc @ui, $r2 :: (load (s32) from got)1223 ; 32BIT-NEXT: renamable $r4 = LHA 0, killed renamable $r4 :: (dereferenceable load (s16) from @si1)1224 ; 32BIT-NEXT: renamable $r7 = LWZtoc @sint, $r2 :: (load (s32) from got)1225 ; 32BIT-NEXT: renamable $r5 = LBZ 0, killed renamable $r5 :: (dereferenceable load (s8) from @ch)1226 ; 32BIT-NEXT: renamable $r8 = LWZtoc @ll2, $r2 :: (load (s32) from got)1227 ; 32BIT-NEXT: renamable $r6 = LWZ 0, killed renamable $r6 :: (dereferenceable load (s32) from @ui)1228 ; 32BIT-NEXT: renamable $r7 = LWZ 0, killed renamable $r7 :: (dereferenceable load (s32) from @sint)1229 ; 32BIT-NEXT: renamable $r9 = LWZtoc @uc1, $r2 :: (load (s32) from got)1230 ; 32BIT-NEXT: renamable $r10 = LWZ 0, renamable $r8 :: (dereferenceable load (s32) from @ll2, align 8)1231 ; 32BIT-NEXT: renamable $r12 = LWZtoc @i1, $r2 :: (load (s32) from got)1232 ; 32BIT-NEXT: renamable $r8 = LWZ 4, killed renamable $r8 :: (dereferenceable load (s32) from @ll2 + 4, basealign 8)1233 ; 32BIT-NEXT: renamable $r9 = LBZ 0, killed renamable $r9 :: (dereferenceable load (s8) from @uc1)1234 ; 32BIT-NEXT: renamable $r12 = LWZ 0, killed renamable $r12 :: (dereferenceable load (s32) from @i1)1235 ; 32BIT-NEXT: ADJCALLSTACKDOWN 96, 0, implicit-def dead $r1, implicit $r11236 ; 32BIT-NEXT: STW killed renamable $r12, 92, $r1 :: (store (s32) into stack + 92, basealign 16)1237 ; 32BIT-NEXT: STW killed renamable $r9, 88, $r1 :: (store (s32) into stack + 88, align 8, basealign 16)1238 ; 32BIT-NEXT: STW killed renamable $r8, 84, $r1 :: (store (s32) into stack + 84, basealign 16)1239 ; 32BIT-NEXT: STW killed renamable $r10, 80, $r1 :: (store (s32) into stack + 80, align 16)1240 ; 32BIT-NEXT: STW killed renamable $r7, 76, $r1 :: (store (s32) into stack + 76, basealign 16)1241 ; 32BIT-NEXT: STW killed renamable $r6, 72, $r1 :: (store (s32) into stack + 72, align 8, basealign 16)1242 ; 32BIT-NEXT: STW killed renamable $r5, 68, $r1 :: (store (s32) into stack + 68, basealign 16)1243 ; 32BIT-NEXT: STW killed renamable $r4, 64, $r1 :: (store (s32) into stack + 64, align 16)1244 ; 32BIT-NEXT: STW killed renamable $r3, 60, $r1 :: (store (s32) into stack + 60, basealign 16)1245 ; 32BIT-NEXT: $r3 = LI 11246 ; 32BIT-NEXT: $r4 = LI 21247 ; 32BIT-NEXT: $r5 = LI 31248 ; 32BIT-NEXT: $r6 = LI 41249 ; 32BIT-NEXT: $r7 = LI 51250 ; 32BIT-NEXT: $r8 = LI 61251 ; 32BIT-NEXT: $r9 = LI 71252 ; 32BIT-NEXT: $r10 = LI 81253 ; 32BIT-NEXT: STW killed renamable $r11, 56, $r1 :: (store (s32) into stack + 56, align 8, basealign 16)1254 ; 32BIT-NEXT: BL_NOP <mcsymbol .test_ints_stack>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r3, implicit $r4, implicit $r5, implicit $r6, implicit $r7, implicit $r8, implicit $r9, implicit $r10, implicit $r2, implicit-def $r1, implicit-def dead $r3, implicit-def dead $r41255 ; 32BIT-NEXT: ADJCALLSTACKUP 96, 0, implicit-def dead $r1, implicit $r11256 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm1257 ;1258 ; 64BIT-LABEL: name: caller_ints_stack1259 ; 64BIT: bb.0.entry:1260 ; 64BIT-NEXT: renamable $x3 = LDtoc @si1, $x2 :: (load (s64) from got)1261 ; 64BIT-NEXT: renamable $x4 = LDtoc @ch, $x2 :: (load (s64) from got)1262 ; 64BIT-NEXT: renamable $x5 = LDtoc @ui, $x2 :: (load (s64) from got)1263 ; 64BIT-NEXT: renamable $x11 = LHA8 0, killed renamable $x3 :: (dereferenceable load (s16) from @si1)1264 ; 64BIT-NEXT: renamable $x3 = LDtoc @sint, $x2 :: (load (s64) from got)1265 ; 64BIT-NEXT: renamable $x12 = LBZ8 0, killed renamable $x4 :: (dereferenceable load (s8) from @ch)1266 ; 64BIT-NEXT: renamable $x4 = LDtoc @uc1, $x2 :: (load (s64) from got)1267 ; 64BIT-NEXT: renamable $x0 = LWZ8 0, killed renamable $x5 :: (dereferenceable load (s32) from @ui)1268 ; 64BIT-NEXT: renamable $x5 = LDtoc @ll1, $x2 :: (load (s64) from got)1269 ; 64BIT-NEXT: renamable $x6 = LDtoc @ll2, $x2 :: (load (s64) from got)1270 ; 64BIT-NEXT: renamable $x7 = LDtoc @i1, $x2 :: (load (s64) from got)1271 ; 64BIT-NEXT: renamable $x31 = LWZ8 0, killed renamable $x3 :: (dereferenceable load (s32) from @sint)1272 ; 64BIT-NEXT: renamable $x30 = LBZ8 0, killed renamable $x4 :: (dereferenceable load (s8) from @uc1)1273 ; 64BIT-NEXT: renamable $x29 = LD 0, killed renamable $x5 :: (dereferenceable load (s64) from @ll1)1274 ; 64BIT-NEXT: renamable $x28 = LD 0, killed renamable $x6 :: (dereferenceable load (s64) from @ll2)1275 ; 64BIT-NEXT: renamable $x27 = LWZ8 0, killed renamable $x7 :: (dereferenceable load (s32) from @i1)1276 ; 64BIT-NEXT: ADJCALLSTACKDOWN 176, 0, implicit-def dead $r1, implicit $r11277 ; 64BIT-NEXT: $x3 = LI8 11278 ; 64BIT-NEXT: $x4 = LI8 21279 ; 64BIT-NEXT: $x5 = LI8 31280 ; 64BIT-NEXT: $x6 = LI8 41281 ; 64BIT-NEXT: $x7 = LI8 51282 ; 64BIT-NEXT: $x8 = LI8 61283 ; 64BIT-NEXT: $x9 = LI8 71284 ; 64BIT-NEXT: $x10 = LI8 81285 ; 64BIT-NEXT: STD killed renamable $x27, 168, $x1 :: (store (s64) into stack + 168, basealign 16)1286 ; 64BIT-NEXT: STD killed renamable $x30, 160, $x1 :: (store (s64) into stack + 160, align 16)1287 ; 64BIT-NEXT: STD killed renamable $x28, 152, $x1 :: (store (s64) into stack + 152, basealign 16)1288 ; 64BIT-NEXT: STD killed renamable $x31, 144, $x1 :: (store (s64) into stack + 144, align 16)1289 ; 64BIT-NEXT: STD killed renamable $x0, 136, $x1 :: (store (s64) into stack + 136, basealign 16)1290 ; 64BIT-NEXT: STD killed renamable $x12, 128, $x1 :: (store (s64) into stack + 128, align 16)1291 ; 64BIT-NEXT: STD killed renamable $x11, 120, $x1 :: (store (s64) into stack + 120, basealign 16)1292 ; 64BIT-NEXT: STD killed renamable $x29, 112, $x1 :: (store (s64) into stack + 112, align 16)1293 ; 64BIT-NEXT: BL8_NOP <mcsymbol .test_ints_stack>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $x3, implicit $x4, implicit $x5, implicit $x6, implicit $x7, implicit $x8, implicit $x9, implicit $x10, implicit $x2, implicit-def $r1, implicit-def dead $x31294 ; 64BIT-NEXT: ADJCALLSTACKUP 176, 0, implicit-def dead $r1, implicit $r11295 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm1296entry:1297 %0 = load i64, ptr @ll1, align 81298 %1 = load i16, ptr @si1, align 21299 %2 = load i8, ptr @ch, align 11300 %3 = load i32, ptr @ui, align 41301 %4 = load i32, ptr @sint, align 41302 %5 = load i64, ptr @ll2, align 81303 %6 = load i8, ptr @uc1, align 11304 %7 = load i32, ptr @i1, align 41305 %call = call i64 @test_ints_stack(i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i64 %0, i16 signext %1, i8 zeroext %2, i32 %3, i32 %4, i64 %5, i8 zeroext %6, i32 %7)1306 ret void1307}1308 1309@globali1 = global i8 0, align 11310 1311define void @test_i1_stack(i32 %a, i32 %c, i32 %d, i32 %e, i32 %f, i32 %g, i32 %h, i32 %i, i1 zeroext %b) {1312 ; 32BIT-LABEL: name: test_i1_stack1313 ; 32BIT: bb.0.entry:1314 ; 32BIT-NEXT: renamable $r3 = LBZ 0, %fixed-stack.0 :: (load (s8) from %fixed-stack.0)1315 ; 32BIT-NEXT: renamable $r4 = LWZtoc @globali1, $r2 :: (load (s32) from got)1316 ; 32BIT-NEXT: STB killed renamable $r3, 0, killed renamable $r4 :: (store (s8) into @globali1)1317 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm1318 ;1319 ; 64BIT-LABEL: name: test_i1_stack1320 ; 64BIT: bb.0.entry:1321 ; 64BIT-NEXT: renamable $r3 = LBZ 0, %fixed-stack.0 :: (load (s8) from %fixed-stack.0)1322 ; 64BIT-NEXT: renamable $x4 = LDtoc @globali1, $x2 :: (load (s64) from got)1323 ; 64BIT-NEXT: STB killed renamable $r3, 0, killed renamable $x4 :: (store (s8) into @globali1)1324 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm1325 entry:1326 %frombool = zext i1 %b to i81327 store i8 %frombool, ptr @globali1, align 11328 ret void1329}1330 1331define void @call_test_i1_stack() {1332 ; 32BIT-LABEL: name: call_test_i1_stack1333 ; 32BIT: bb.0.entry:1334 ; 32BIT-NEXT: ADJCALLSTACKDOWN 60, 0, implicit-def dead $r1, implicit $r11335 ; 32BIT-NEXT: renamable $r11 = LI 11336 ; 32BIT-NEXT: $r3 = LI 11337 ; 32BIT-NEXT: $r4 = LI 21338 ; 32BIT-NEXT: $r5 = LI 31339 ; 32BIT-NEXT: $r6 = LI 41340 ; 32BIT-NEXT: $r7 = LI 51341 ; 32BIT-NEXT: $r8 = LI 61342 ; 32BIT-NEXT: $r9 = LI 71343 ; 32BIT-NEXT: $r10 = LI 81344 ; 32BIT-NEXT: STW killed renamable $r11, 56, $r1 :: (store (s32) into stack + 56, align 8, basealign 16)1345 ; 32BIT-NEXT: BL_NOP <mcsymbol .test_i1_stack>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r3, implicit $r4, implicit $r5, implicit $r6, implicit $r7, implicit $r8, implicit $r9, implicit $r10, implicit $r2, implicit-def $r11346 ; 32BIT-NEXT: ADJCALLSTACKUP 60, 0, implicit-def dead $r1, implicit $r11347 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm1348 ;1349 ; 64BIT-LABEL: name: call_test_i1_stack1350 ; 64BIT: bb.0.entry:1351 ; 64BIT-NEXT: ADJCALLSTACKDOWN 120, 0, implicit-def dead $r1, implicit $r11352 ; 64BIT-NEXT: renamable $x11 = LI8 11353 ; 64BIT-NEXT: $x3 = LI8 11354 ; 64BIT-NEXT: $x4 = LI8 21355 ; 64BIT-NEXT: $x5 = LI8 31356 ; 64BIT-NEXT: $x6 = LI8 41357 ; 64BIT-NEXT: $x7 = LI8 51358 ; 64BIT-NEXT: $x8 = LI8 61359 ; 64BIT-NEXT: $x9 = LI8 71360 ; 64BIT-NEXT: $x10 = LI8 81361 ; 64BIT-NEXT: STD killed renamable $x11, 112, $x1 :: (store (s64) into stack + 112, align 16)1362 ; 64BIT-NEXT: BL8_NOP <mcsymbol .test_i1_stack>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $x3, implicit $x4, implicit $x5, implicit $x6, implicit $x7, implicit $x8, implicit $x9, implicit $x10, implicit $x2, implicit-def $r11363 ; 64BIT-NEXT: ADJCALLSTACKUP 120, 0, implicit-def dead $r1, implicit $r11364 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm1365 entry:1366 call void @test_i1_stack(i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i1 true)1367 ret void1368}1369 1370define double @test_fpr_stack(double %d1, double %d2, double %d3, double %d4, double %d5, double %d6, double %d7, double %d8, double %d9, double %s10, double %l11, double %d12, double %d13, float %f14, double %d15, float %f16) {1371 ; 32BIT-LABEL: name: test_fpr_stack1372 ; 32BIT: bb.0.entry:1373 ; 32BIT-NEXT: liveins: $f1, $f2, $f3, $f4, $f5, $f6, $f7, $f8, $f9, $f10, $f11, $f12, $f131374 ; 32BIT-NEXT: {{ $}}1375 ; 32BIT-NEXT: renamable $f0 = LFD 0, %fixed-stack.1 :: (load (s64) from %fixed-stack.1)1376 ; 32BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f2, implicit $rm1377 ; 32BIT-NEXT: renamable $f2 = LFS 0, %fixed-stack.2 :: (load (s32) from %fixed-stack.2, align 16)1378 ; 32BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f3, implicit $rm1379 ; 32BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f4, implicit $rm1380 ; 32BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f5, implicit $rm1381 ; 32BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f6, implicit $rm1382 ; 32BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f7, implicit $rm1383 ; 32BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f8, implicit $rm1384 ; 32BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f9, implicit $rm1385 ; 32BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f10, implicit $rm1386 ; 32BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f11, implicit $rm1387 ; 32BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f12, implicit $rm1388 ; 32BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, renamable $f13, implicit $rm1389 ; 32BIT-NEXT: renamable $f3 = LFS 0, %fixed-stack.0 :: (load (s32) from %fixed-stack.0)1390 ; 32BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f13, implicit $rm1391 ; 32BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f2, implicit $rm1392 ; 32BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f1, killed renamable $f0, implicit $rm1393 ; 32BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f0, killed renamable $f3, implicit $rm1394 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm, implicit $f11395 ;1396 ; 64BIT-LABEL: name: test_fpr_stack1397 ; 64BIT: bb.0.entry:1398 ; 64BIT-NEXT: liveins: $f1, $f2, $f3, $f4, $f5, $f6, $f7, $f8, $f9, $f10, $f11, $f12, $f131399 ; 64BIT-NEXT: {{ $}}1400 ; 64BIT-NEXT: renamable $f0 = LFD 0, %fixed-stack.1 :: (load (s64) from %fixed-stack.1, align 16)1401 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f2, implicit $rm1402 ; 64BIT-NEXT: renamable $f2 = LFS 0, %fixed-stack.2 :: (load (s32) from %fixed-stack.2, align 8)1403 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f3, implicit $rm1404 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f4, implicit $rm1405 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f5, implicit $rm1406 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f6, implicit $rm1407 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f7, implicit $rm1408 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f8, implicit $rm1409 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f9, implicit $rm1410 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f10, implicit $rm1411 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f11, implicit $rm1412 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f12, implicit $rm1413 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, renamable $f13, implicit $rm1414 ; 64BIT-NEXT: renamable $f3 = LFS 0, %fixed-stack.0 :: (load (s32) from %fixed-stack.0, align 8)1415 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f13, implicit $rm1416 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f2, implicit $rm1417 ; 64BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f1, killed renamable $f0, implicit $rm1418 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f0, killed renamable $f3, implicit $rm1419 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm, implicit $f11420 entry:1421 %add = fadd double %d1, %d21422 %add1 = fadd double %add, %d31423 %add2 = fadd double %add1, %d41424 %add3 = fadd double %add2, %d51425 %add4 = fadd double %add3, %d61426 %add5 = fadd double %add4, %d71427 %add6 = fadd double %add5, %d81428 %add7 = fadd double %add6, %d91429 %add8 = fadd double %add7, %s101430 %add9 = fadd double %add8, %l111431 %add10 = fadd double %add9, %d121432 %add11 = fadd double %add10, %d131433 %add12 = fadd double %add11, %d131434 %conv = fpext float %f14 to double1435 %add13 = fadd double %add12, %conv1436 %add14 = fadd double %add13, %d151437 %conv15 = fpext float %f16 to double1438 %add16 = fadd double %add14, %conv151439 ret double %add161440 }1441 1442@f14 = common global float 0.000000e+00, align 41443@d15 = common global double 0.000000e+00, align 81444@f16 = common global float 0.000000e+00, align 41445 1446define void @caller_fpr_stack() {1447 ; 32BIT-LABEL: name: caller_fpr_stack1448 ; 32BIT: bb.0.entry:1449 ; 32BIT-NEXT: renamable $r3 = LWZtoc @d15, $r2 :: (load (s32) from got)1450 ; 32BIT-NEXT: renamable $r4 = LWZtoc @f14, $r2 :: (load (s32) from got)1451 ; 32BIT-NEXT: renamable $f0 = LFD 0, killed renamable $r3 :: (dereferenceable load (s64) from @d15)1452 ; 32BIT-NEXT: renamable $r3 = LWZtoc @f16, $r2 :: (load (s32) from got)1453 ; 32BIT-NEXT: renamable $r4 = LWZ 0, killed renamable $r4 :: (dereferenceable load (s32) from @f14)1454 ; 32BIT-NEXT: renamable $r3 = LWZ 0, killed renamable $r3 :: (dereferenceable load (s32) from @f16)1455 ; 32BIT-NEXT: ADJCALLSTACKDOWN 144, 0, implicit-def dead $r1, implicit $r11456 ; 32BIT-NEXT: STFD killed renamable $f0, 0, %stack.0 :: (store (s64) into %stack.0)1457 ; 32BIT-NEXT: renamable $r5 = LI 01458 ; 32BIT-NEXT: renamable $r6 = LIS 163521459 ; 32BIT-NEXT: STW killed renamable $r3, 140, $r1 :: (store (s32) into stack + 140, basealign 16)1460 ; 32BIT-NEXT: renamable $r3 = LIS 131071461 ; 32BIT-NEXT: STW killed renamable $r4, 128, $r1 :: (store (s32) into stack + 128, align 16)1462 ; 32BIT-NEXT: renamable $r4 = LIS 163551463 ; 32BIT-NEXT: STW killed renamable $r5, 60, $r1 :: (store (s32) into stack + 60, basealign 16)1464 ; 32BIT-NEXT: renamable $r5 = LIS 262141465 ; 32BIT-NEXT: STW killed renamable $r6, 56, $r1 :: (store (s32) into stack + 56, align 8, basealign 16)1466 ; 32BIT-NEXT: renamable $r6 = LIS 163581467 ; 32BIT-NEXT: renamable $r3 = ORI killed renamable $r3, 131071468 ; 32BIT-NEXT: STW killed renamable $r3, 68, $r1 :: (store (s32) into stack + 68, basealign 16)1469 ; 32BIT-NEXT: renamable $r3 = LIS 393211470 ; 32BIT-NEXT: renamable $r4 = ORI killed renamable $r4, 131071471 ; 32BIT-NEXT: STW killed renamable $r4, 64, $r1 :: (store (s32) into stack + 64, align 16)1472 ; 32BIT-NEXT: renamable $r4 = LIS 163611473 ; 32BIT-NEXT: renamable $r5 = ORI killed renamable $r5, 262141474 ; 32BIT-NEXT: STW killed renamable $r5, 76, $r1 :: (store (s32) into stack + 76, basealign 16)1475 ; 32BIT-NEXT: renamable $r5 = LIS 524281476 ; 32BIT-NEXT: renamable $r6 = ORI killed renamable $r6, 262141477 ; 32BIT-NEXT: STW killed renamable $r6, 72, $r1 :: (store (s32) into stack + 72, align 8, basealign 16)1478 ; 32BIT-NEXT: renamable $r6 = LIS 163641479 ; 32BIT-NEXT: renamable $r4 = ORI killed renamable $r4, 393211480 ; 32BIT-NEXT: STW killed renamable $r4, 80, $r1 :: (store (s32) into stack + 80, align 16)1481 ; 32BIT-NEXT: renamable $r4 = LIS 163131482 ; 32BIT-NEXT: renamable $r5 = ORI killed renamable $r5, 524291483 ; 32BIT-NEXT: STW killed renamable $r5, 92, $r1 :: (store (s32) into stack + 92, basealign 16)1484 ; 32BIT-NEXT: renamable $r5 = LIS 498071485 ; 32BIT-NEXT: renamable $r3 = ORI killed renamable $r3, 393221486 ; 32BIT-NEXT: STW renamable $r3, 84, $r1 :: (store (s32) into stack + 84, basealign 16)1487 ; 32BIT-NEXT: renamable $r6 = ORI killed renamable $r6, 524281488 ; 32BIT-NEXT: STW killed renamable $r6, 88, $r1 :: (store (s32) into stack + 88, align 8, basealign 16)1489 ; 32BIT-NEXT: renamable $r6 = LIS 163161490 ; 32BIT-NEXT: STW killed renamable $r3, 100, $r1 :: (store (s32) into stack + 100, basealign 16)1491 ; 32BIT-NEXT: renamable $r3 = LIS 602931492 ; 32BIT-NEXT: renamable $r4 = ORI killed renamable $r4, 393211493 ; 32BIT-NEXT: STW killed renamable $r4, 96, $r1 :: (store (s32) into stack + 96, align 16)1494 ; 32BIT-NEXT: renamable $r4 = LIS 163181495 ; 32BIT-NEXT: renamable $r5 = ORI killed renamable $r5, 235931496 ; 32BIT-NEXT: STW killed renamable $r5, 108, $r1 :: (store (s32) into stack + 108, basealign 16)1497 ; 32BIT-NEXT: renamable $r5 = LIS 26211498 ; 32BIT-NEXT: renamable $r6 = ORI killed renamable $r6, 104851499 ; 32BIT-NEXT: STW killed renamable $r6, 104, $r1 :: (store (s32) into stack + 104, align 8, basealign 16)1500 ; 32BIT-NEXT: renamable $r6 = LIS 163201501 ; 32BIT-NEXT: renamable $r3 = ORI killed renamable $r3, 78641502 ; 32BIT-NEXT: STW killed renamable $r3, 116, $r1 :: (store (s32) into stack + 116, basealign 16)1503 ; 32BIT-NEXT: renamable $r3 = LWZtoc %const.0, $r2 :: (load (s32) from got)1504 ; 32BIT-NEXT: renamable $r4 = ORI killed renamable $r4, 471851505 ; 32BIT-NEXT: STW killed renamable $r4, 112, $r1 :: (store (s32) into stack + 112, align 16)1506 ; 32BIT-NEXT: renamable $r4 = ORI killed renamable $r5, 288361507 ; 32BIT-NEXT: STW killed renamable $r4, 124, $r1 :: (store (s32) into stack + 124, basealign 16)1508 ; 32BIT-NEXT: renamable $r4 = ORI killed renamable $r6, 419431509 ; 32BIT-NEXT: STW killed renamable $r4, 120, $r1 :: (store (s32) into stack + 120, align 8, basealign 16)1510 ; 32BIT-NEXT: renamable $r4 = LWZtoc %const.1, $r2 :: (load (s32) from got)1511 ; 32BIT-NEXT: renamable $r5 = LWZ 4, %stack.0 :: (load (s32) from %stack.0 + 4)1512 ; 32BIT-NEXT: renamable $r6 = LWZtoc %const.2, $r2 :: (load (s32) from got)1513 ; 32BIT-NEXT: renamable $f2 = LFD 0, killed renamable $r3 :: (load (s64) from constant-pool)1514 ; 32BIT-NEXT: renamable $r3 = LWZtoc %const.3, $r2 :: (load (s32) from got)1515 ; 32BIT-NEXT: renamable $f3 = LFD 0, killed renamable $r4 :: (load (s64) from constant-pool)1516 ; 32BIT-NEXT: renamable $r4 = LWZtoc %const.4, $r2 :: (load (s32) from got)1517 ; 32BIT-NEXT: renamable $f4 = LFD 0, killed renamable $r6 :: (load (s64) from constant-pool)1518 ; 32BIT-NEXT: renamable $r6 = LWZtoc %const.5, $r2 :: (load (s32) from got)1519 ; 32BIT-NEXT: renamable $f6 = LFD 0, killed renamable $r3 :: (load (s64) from constant-pool)1520 ; 32BIT-NEXT: renamable $r3 = LWZtoc %const.6, $r2 :: (load (s32) from got)1521 ; 32BIT-NEXT: renamable $f7 = LFD 0, killed renamable $r4 :: (load (s64) from constant-pool)1522 ; 32BIT-NEXT: renamable $r4 = LWZtoc %const.7, $r2 :: (load (s32) from got)1523 ; 32BIT-NEXT: renamable $f8 = LFD 0, killed renamable $r6 :: (load (s64) from constant-pool)1524 ; 32BIT-NEXT: renamable $r6 = LWZtoc %const.8, $r2 :: (load (s32) from got)1525 ; 32BIT-NEXT: renamable $f9 = LFD 0, killed renamable $r3 :: (load (s64) from constant-pool)1526 ; 32BIT-NEXT: renamable $r3 = LWZtoc %const.9, $r2 :: (load (s32) from got)1527 ; 32BIT-NEXT: renamable $f1 = LFD 0, killed renamable $r4 :: (load (s64) from constant-pool)1528 ; 32BIT-NEXT: renamable $r4 = LWZtoc %const.10, $r2 :: (load (s32) from got)1529 ; 32BIT-NEXT: renamable $f11 = LFD 0, killed renamable $r6 :: (load (s64) from constant-pool)1530 ; 32BIT-NEXT: renamable $r6 = LWZtoc %const.11, $r2 :: (load (s32) from got)1531 ; 32BIT-NEXT: renamable $f12 = LFD 0, killed renamable $r3 :: (load (s64) from constant-pool)1532 ; 32BIT-NEXT: renamable $f13 = LFD 0, killed renamable $r4 :: (load (s64) from constant-pool)1533 ; 32BIT-NEXT: renamable $f5 = LFS 0, killed renamable $r6 :: (load (s32) from constant-pool)1534 ; 32BIT-NEXT: STW killed renamable $r5, 136, $r1 :: (store (s32) into stack + 136, align 8, basealign 16)1535 ; 32BIT-NEXT: renamable $r3 = LWZ 0, %stack.0 :: (load (s32) from %stack.0, align 8)1536 ; 32BIT-NEXT: $f10 = COPY renamable $f11537 ; 32BIT-NEXT: STW killed renamable $r3, 132, $r1 :: (store (s32) into stack + 132, basealign 16)1538 ; 32BIT-NEXT: BL_NOP <mcsymbol .test_fpr_stack>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $f1, implicit $f2, implicit $f3, implicit $f4, implicit $f5, implicit $f6, implicit $f7, implicit $f8, implicit $f9, implicit killed $f10, implicit $f11, implicit $f12, implicit $f13, implicit $r2, implicit-def $r1, implicit-def dead $f11539 ; 32BIT-NEXT: ADJCALLSTACKUP 144, 0, implicit-def dead $r1, implicit $r11540 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm1541 ;1542 ; 64BIT-LABEL: name: caller_fpr_stack1543 ; 64BIT: bb.0.entry:1544 ; 64BIT-NEXT: renamable $x3 = LDtoc @f14, $x2 :: (load (s64) from got)1545 ; 64BIT-NEXT: renamable $x4 = LDtoc @d15, $x2 :: (load (s64) from got)1546 ; 64BIT-NEXT: renamable $x5 = LDtoc @f16, $x2 :: (load (s64) from got)1547 ; 64BIT-NEXT: renamable $r3 = LWZ 0, killed renamable $x3 :: (dereferenceable load (s32) from @f14)1548 ; 64BIT-NEXT: renamable $x4 = LD 0, killed renamable $x4 :: (dereferenceable load (s64) from @d15)1549 ; 64BIT-NEXT: renamable $r5 = LWZ 0, killed renamable $x5 :: (dereferenceable load (s32) from @f16)1550 ; 64BIT-NEXT: ADJCALLSTACKDOWN 176, 0, implicit-def dead $r1, implicit $r11551 ; 64BIT-NEXT: renamable $x6 = LDtocCPT %const.0, $x2 :: (load (s64) from got)1552 ; 64BIT-NEXT: STW killed renamable $r5, 168, $x1 :: (store (s32) into stack + 168, align 8, basealign 16)1553 ; 64BIT-NEXT: renamable $x5 = LDtocCPT %const.1, $x2 :: (load (s64) from got)1554 ; 64BIT-NEXT: renamable $x7 = LDtocCPT %const.2, $x2 :: (load (s64) from got)1555 ; 64BIT-NEXT: renamable $f2 = LFD 0, killed renamable $x6 :: (load (s64) from constant-pool)1556 ; 64BIT-NEXT: renamable $x6 = LDtocCPT %const.3, $x2 :: (load (s64) from got)1557 ; 64BIT-NEXT: renamable $f3 = LFD 0, killed renamable $x5 :: (load (s64) from constant-pool)1558 ; 64BIT-NEXT: renamable $x5 = LDtocCPT %const.4, $x2 :: (load (s64) from got)1559 ; 64BIT-NEXT: renamable $f4 = LFD 0, killed renamable $x7 :: (load (s64) from constant-pool)1560 ; 64BIT-NEXT: renamable $x7 = LDtocCPT %const.5, $x2 :: (load (s64) from got)1561 ; 64BIT-NEXT: renamable $f6 = LFD 0, killed renamable $x6 :: (load (s64) from constant-pool)1562 ; 64BIT-NEXT: renamable $x6 = LDtocCPT %const.6, $x2 :: (load (s64) from got)1563 ; 64BIT-NEXT: renamable $f7 = LFD 0, killed renamable $x5 :: (load (s64) from constant-pool)1564 ; 64BIT-NEXT: STD killed renamable $x4, 160, $x1 :: (store (s64) into stack + 160, align 16)1565 ; 64BIT-NEXT: renamable $x4 = LDtocCPT %const.7, $x2 :: (load (s64) from got)1566 ; 64BIT-NEXT: renamable $f8 = LFD 0, killed renamable $x7 :: (load (s64) from constant-pool)1567 ; 64BIT-NEXT: renamable $x5 = LIS8 163201568 ; 64BIT-NEXT: renamable $x7 = LDtocCPT %const.8, $x2 :: (load (s64) from got)1569 ; 64BIT-NEXT: renamable $f9 = LFD 0, killed renamable $x6 :: (load (s64) from constant-pool)1570 ; 64BIT-NEXT: renamable $x6 = LIS8 163181571 ; 64BIT-NEXT: renamable $x8 = LDtocCPT %const.9, $x2 :: (load (s64) from got)1572 ; 64BIT-NEXT: renamable $f1 = LFD 0, killed renamable $x4 :: (load (s64) from constant-pool)1573 ; 64BIT-NEXT: renamable $x4 = LIS8 163161574 ; 64BIT-NEXT: renamable $f11 = LFD 0, killed renamable $x7 :: (load (s64) from constant-pool)1575 ; 64BIT-NEXT: renamable $x7 = LIS8 163131576 ; 64BIT-NEXT: renamable $f12 = LFD 0, killed renamable $x8 :: (load (s64) from constant-pool)1577 ; 64BIT-NEXT: renamable $x8 = LDtocCPT %const.10, $x2 :: (load (s64) from got)1578 ; 64BIT-NEXT: renamable $x5 = ORI8 killed renamable $x5, 419431579 ; 64BIT-NEXT: renamable $x6 = ORI8 killed renamable $x6, 471851580 ; 64BIT-NEXT: renamable $x4 = ORI8 killed renamable $x4, 104851581 ; 64BIT-NEXT: renamable $x7 = ORI8 killed renamable $x7, 393211582 ; 64BIT-NEXT: renamable $f13 = LFD 0, killed renamable $x8 :: (load (s64) from constant-pool)1583 ; 64BIT-NEXT: renamable $x8 = LDtocCPT %const.11, $x2 :: (load (s64) from got)1584 ; 64BIT-NEXT: renamable $x5 = RLDIC killed renamable $x5, 32, 21585 ; 64BIT-NEXT: renamable $x6 = RLDIC killed renamable $x6, 32, 21586 ; 64BIT-NEXT: renamable $x4 = RLDIC killed renamable $x4, 32, 21587 ; 64BIT-NEXT: renamable $x7 = RLDIC killed renamable $x7, 32, 21588 ; 64BIT-NEXT: renamable $x5 = ORIS8 killed renamable $x5, 26211589 ; 64BIT-NEXT: renamable $x6 = ORIS8 killed renamable $x6, 602931590 ; 64BIT-NEXT: renamable $x4 = ORIS8 killed renamable $x4, 498071591 ; 64BIT-NEXT: renamable $x7 = ORIS8 killed renamable $x7, 393211592 ; 64BIT-NEXT: renamable $x5 = ORI8 killed renamable $x5, 288361593 ; 64BIT-NEXT: renamable $x6 = ORI8 killed renamable $x6, 78641594 ; 64BIT-NEXT: renamable $x4 = ORI8 killed renamable $x4, 235931595 ; 64BIT-NEXT: renamable $f5 = LFS 0, killed renamable $x8 :: (load (s32) from constant-pool)1596 ; 64BIT-NEXT: renamable $x8 = LIS8 40911597 ; 64BIT-NEXT: renamable $x8 = ORI8 killed renamable $x8, 131071598 ; 64BIT-NEXT: renamable $x7 = ORI8 killed renamable $x7, 393221599 ; 64BIT-NEXT: renamable $x8 = RLDIC killed renamable $x8, 34, 21600 ; 64BIT-NEXT: renamable $x8 = ORIS8 killed renamable $x8, 524281601 ; 64BIT-NEXT: renamable $x8 = ORI8 killed renamable $x8, 524291602 ; 64BIT-NEXT: $f10 = COPY renamable $f11603 ; 64BIT-NEXT: STW killed renamable $r3, 152, $x1 :: (store (s32) into stack + 152, align 8, basealign 16)1604 ; 64BIT-NEXT: STD killed renamable $x5, 144, $x1 :: (store (s64) into stack + 144, align 16)1605 ; 64BIT-NEXT: STD killed renamable $x6, 136, $x1 :: (store (s64) into stack + 136, basealign 16)1606 ; 64BIT-NEXT: STD killed renamable $x4, 128, $x1 :: (store (s64) into stack + 128, align 16)1607 ; 64BIT-NEXT: STD killed renamable $x7, 120, $x1 :: (store (s64) into stack + 120, basealign 16)1608 ; 64BIT-NEXT: STD killed renamable $x8, 112, $x1 :: (store (s64) into stack + 112, align 16)1609 ; 64BIT-NEXT: BL8_NOP <mcsymbol .test_fpr_stack>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $f1, implicit $f2, implicit $f3, implicit $f4, implicit $f5, implicit $f6, implicit $f7, implicit $f8, implicit $f9, implicit killed $f10, implicit $f11, implicit $f12, implicit $f13, implicit $x2, implicit-def $r1, implicit-def dead $f11610 ; 64BIT-NEXT: ADJCALLSTACKUP 176, 0, implicit-def dead $r1, implicit $r11611 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm1612entry:1613 %0 = load float, ptr @f14, align 41614 %1 = load double, ptr @d15, align 81615 %2 = load float, ptr @f16, align 41616 %call = call double @test_fpr_stack(double 1.000000e-01, double 2.000000e-01, double 3.000000e-01, double 4.000000e-01, double 5.000000e-01, double 6.000000e-01, double 0x3FE6666666666666, double 8.000000e-01, double 9.000000e-01, double 1.000000e-01, double 1.100000e-01, double 1.200000e-01, double 1.300000e-01, float %0, double %1, float %2)1617 ret void1618}1619 1620define i32 @mix_callee(double %d1, double %d2, double %d3, double %d4, i8 zeroext %c1, i16 signext %s1, i64 %ll1, i32 %i1, i32 %i2, i32 %i3) {1621 ; 32BIT-LABEL: name: mix_callee1622 ; 32BIT: bb.0.entry:1623 ; 32BIT-NEXT: liveins: $f1, $f2, $f3, $f41624 ; 32BIT-NEXT: {{ $}}1625 ; 32BIT-NEXT: renamable $r3 = LWZ 0, %fixed-stack.3 :: (load (s32) from %fixed-stack.3)1626 ; 32BIT-NEXT: renamable $r4 = LHA 2, %fixed-stack.5 :: (load (s16) from %fixed-stack.5 + 2, basealign 4)1627 ; 32BIT-NEXT: renamable $r5 = LBZ 3, %fixed-stack.6 :: (load (s8) from %fixed-stack.6 + 3, basealign 4)1628 ; 32BIT-NEXT: renamable $r6 = LWZ 0, %fixed-stack.2 :: (load (s32) from %fixed-stack.2, align 8)1629 ; 32BIT-NEXT: renamable $r7 = LIS 172001630 ; 32BIT-NEXT: STW killed renamable $r7, 0, %stack.1 :: (store (s32) into %stack.1, align 8)1631 ; 32BIT-NEXT: renamable $r7 = LWZ 0, %fixed-stack.1 :: (load (s32) from %fixed-stack.1)1632 ; 32BIT-NEXT: renamable $r4 = nsw ADD4 killed renamable $r5, killed renamable $r41633 ; 32BIT-NEXT: renamable $r5 = LWZtoc %const.0, $r2 :: (load (s32) from got)1634 ; 32BIT-NEXT: renamable $r3 = ADD4 killed renamable $r4, killed renamable $r31635 ; 32BIT-NEXT: renamable $r4 = LWZ 0, %fixed-stack.0 :: (load (s32) from %fixed-stack.0, align 16)1636 ; 32BIT-NEXT: renamable $r3 = ADD4 killed renamable $r3, killed renamable $r61637 ; 32BIT-NEXT: renamable $r3 = ADD4 killed renamable $r3, killed renamable $r71638 ; 32BIT-NEXT: renamable $f0 = LFS 0, killed renamable $r5 :: (load (s32) from constant-pool)1639 ; 32BIT-NEXT: renamable $r3 = ADD4 killed renamable $r3, killed renamable $r41640 ; 32BIT-NEXT: renamable $r3 = XORIS killed renamable $r3, 327681641 ; 32BIT-NEXT: STW killed renamable $r3, 4, %stack.1 :: (store (s32) into %stack.1 + 4)1642 ; 32BIT-NEXT: renamable $f5 = LFD 0, %stack.1 :: (load (s64) from %stack.1)1643 ; 32BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f2, implicit $rm1644 ; 32BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f3, implicit $rm1645 ; 32BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f4, implicit $rm1646 ; 32BIT-NEXT: renamable $f0 = nofpexcept FSUB killed renamable $f5, killed renamable $f0, implicit $rm1647 ; 32BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f1, implicit $rm1648 ; 32BIT-NEXT: renamable $f0 = nofpexcept FCTIWZ killed renamable $f0, implicit $rm1649 ; 32BIT-NEXT: STFD killed renamable $f0, 0, %stack.0 :: (store (s64) into %stack.0)1650 ; 32BIT-NEXT: renamable $r3 = LWZ 4, %stack.0 :: (load (s32) from %stack.0 + 4, basealign 8)1651 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm, implicit $r31652 ;1653 ; 64BIT-LABEL: name: mix_callee1654 ; 64BIT: bb.0.entry:1655 ; 64BIT-NEXT: liveins: $f1, $f2, $f3, $f4, $x7, $x8, $x9, $x101656 ; 64BIT-NEXT: {{ $}}1657 ; 64BIT-NEXT: renamable $x3 = LWZ8 0, %fixed-stack.1 :: (load (s32) from %fixed-stack.1)1658 ; 64BIT-NEXT: renamable $r4 = nsw ADD4 renamable $r7, renamable $r8, implicit killed $x8, implicit killed $x7, implicit-def $x41659 ; 64BIT-NEXT: renamable $x5 = LWZ8 0, %fixed-stack.0 :: (load (s32) from %fixed-stack.0)1660 ; 64BIT-NEXT: renamable $x4 = ADD8 killed renamable $x4, killed renamable $x91661 ; 64BIT-NEXT: renamable $x4 = ADD8 killed renamable $x4, killed renamable $x101662 ; 64BIT-NEXT: renamable $x3 = ADD8 killed renamable $x4, killed renamable $x31663 ; 64BIT-NEXT: renamable $x3 = ADD8 killed renamable $x3, killed renamable $x51664 ; 64BIT-NEXT: renamable $x3 = EXTSW killed renamable $x31665 ; 64BIT-NEXT: STD killed renamable $x3, 0, %stack.1 :: (store (s64) into %stack.1)1666 ; 64BIT-NEXT: renamable $f0 = LFD 0, %stack.1 :: (load (s64) from %stack.1)1667 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f2, implicit $rm1668 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f3, implicit $rm1669 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f4, implicit $rm1670 ; 64BIT-NEXT: renamable $f0 = nofpexcept FCFID killed renamable $f0, implicit $rm1671 ; 64BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f1, implicit $rm1672 ; 64BIT-NEXT: renamable $f0 = nofpexcept FCTIWZ killed renamable $f0, implicit $rm1673 ; 64BIT-NEXT: STFD killed renamable $f0, 0, %stack.0 :: (store (s64) into %stack.0)1674 ; 64BIT-NEXT: renamable $x3 = LWZ8 4, %stack.0 :: (load (s32) from %stack.0 + 4, basealign 8)1675 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm, implicit $x31676 entry:1677 %add = fadd double %d1, %d21678 %add1 = fadd double %add, %d31679 %add2 = fadd double %add1, %d41680 %conv = zext i8 %c1 to i321681 %conv3 = sext i16 %s1 to i321682 %add4 = add nsw i32 %conv, %conv31683 %conv5 = sext i32 %add4 to i641684 %add6 = add nsw i64 %conv5, %ll11685 %conv7 = sext i32 %i1 to i641686 %add8 = add nsw i64 %add6, %conv71687 %conv9 = sext i32 %i2 to i641688 %add10 = add nsw i64 %add8, %conv91689 %conv11 = sext i32 %i3 to i641690 %add12 = add nsw i64 %add10, %conv111691 %conv13 = trunc i64 %add12 to i321692 %conv14 = sitofp i32 %conv13 to double1693 %add15 = fadd double %conv14, %add21694 %conv16 = fptosi double %add15 to i321695 ret i32 %conv161696 }1697 1698define void @caller_mix() {1699 ; 32BIT-LABEL: name: caller_mix1700 ; 32BIT: bb.0.entry:1701 ; 32BIT-NEXT: ADJCALLSTACKDOWN 84, 0, implicit-def dead $r1, implicit $r11702 ; 32BIT-NEXT: renamable $r3 = LI 601703 ; 32BIT-NEXT: STW killed renamable $r3, 80, $r1 :: (store (s32) into stack + 80, align 16)1704 ; 32BIT-NEXT: renamable $r3 = LI 501705 ; 32BIT-NEXT: STW killed renamable $r3, 76, $r1 :: (store (s32) into stack + 76, basealign 16)1706 ; 32BIT-NEXT: renamable $r3 = LI 401707 ; 32BIT-NEXT: STW killed renamable $r3, 72, $r1 :: (store (s32) into stack + 72, align 8, basealign 16)1708 ; 32BIT-NEXT: renamable $r3 = LI 01709 ; 32BIT-NEXT: renamable $r4 = LWZtoc %const.0, $r2 :: (load (s32) from got)1710 ; 32BIT-NEXT: STW killed renamable $r3, 64, $r1 :: (store (s32) into stack + 64, align 16)1711 ; 32BIT-NEXT: renamable $r3 = LI 21712 ; 32BIT-NEXT: STW killed renamable $r3, 60, $r1 :: (store (s32) into stack + 60, basealign 16)1713 ; 32BIT-NEXT: renamable $r3 = LWZtoc %const.1, $r2 :: (load (s32) from got)1714 ; 32BIT-NEXT: renamable $f1 = LFD 0, killed renamable $r4 :: (load (s64) from constant-pool)1715 ; 32BIT-NEXT: renamable $r4 = LWZtoc %const.2, $r2 :: (load (s32) from got)1716 ; 32BIT-NEXT: renamable $f2 = LFD 0, killed renamable $r3 :: (load (s64) from constant-pool)1717 ; 32BIT-NEXT: renamable $r3 = LWZtoc %const.3, $r2 :: (load (s32) from got)1718 ; 32BIT-NEXT: renamable $f3 = LFD 0, killed renamable $r4 :: (load (s64) from constant-pool)1719 ; 32BIT-NEXT: renamable $f4 = LFD 0, killed renamable $r3 :: (load (s64) from constant-pool)1720 ; 32BIT-NEXT: renamable $r3 = LI 11721 ; 32BIT-NEXT: STW killed renamable $r3, 56, $r1 :: (store (s32) into stack + 56, align 8, basealign 16)1722 ; 32BIT-NEXT: renamable $r3 = LIS 4571723 ; 32BIT-NEXT: renamable $r3 = ORI killed renamable $r3, 500481724 ; 32BIT-NEXT: STW killed renamable $r3, 68, $r1 :: (store (s32) into stack + 68, basealign 16)1725 ; 32BIT-NEXT: BL_NOP <mcsymbol .mix_callee>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $f1, implicit $f2, implicit $f3, implicit $f4, implicit $r2, implicit-def $r1, implicit-def dead $r31726 ; 32BIT-NEXT: ADJCALLSTACKUP 84, 0, implicit-def dead $r1, implicit $r11727 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm1728 ;1729 ; 64BIT-LABEL: name: caller_mix1730 ; 64BIT: bb.0.entry:1731 ; 64BIT-NEXT: ADJCALLSTACKDOWN 128, 0, implicit-def dead $r1, implicit $r11732 ; 64BIT-NEXT: renamable $x3 = LDtocCPT %const.0, $x2 :: (load (s64) from got)1733 ; 64BIT-NEXT: renamable $x4 = LDtocCPT %const.1, $x2 :: (load (s64) from got)1734 ; 64BIT-NEXT: renamable $x5 = LDtocCPT %const.2, $x2 :: (load (s64) from got)1735 ; 64BIT-NEXT: renamable $f1 = LFD 0, killed renamable $x3 :: (load (s64) from constant-pool)1736 ; 64BIT-NEXT: renamable $x3 = LDtocCPT %const.3, $x2 :: (load (s64) from got)1737 ; 64BIT-NEXT: renamable $f2 = LFD 0, killed renamable $x4 :: (load (s64) from constant-pool)1738 ; 64BIT-NEXT: renamable $x4 = LI8 601739 ; 64BIT-NEXT: renamable $f3 = LFD 0, killed renamable $x5 :: (load (s64) from constant-pool)1740 ; 64BIT-NEXT: renamable $x5 = LI8 501741 ; 64BIT-NEXT: renamable $f4 = LFD 0, killed renamable $x3 :: (load (s64) from constant-pool)1742 ; 64BIT-NEXT: renamable $x3 = LIS8 4571743 ; 64BIT-NEXT: renamable $x9 = ORI8 killed renamable $x3, 500481744 ; 64BIT-NEXT: $x7 = LI8 11745 ; 64BIT-NEXT: $x8 = LI8 21746 ; 64BIT-NEXT: $x10 = LI8 401747 ; 64BIT-NEXT: STD killed renamable $x4, 120, $x1 :: (store (s64) into stack + 120, basealign 16)1748 ; 64BIT-NEXT: STD killed renamable $x5, 112, $x1 :: (store (s64) into stack + 112, align 16)1749 ; 64BIT-NEXT: BL8_NOP <mcsymbol .mix_callee>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $f1, implicit $f2, implicit $f3, implicit $f4, implicit killed $x7, implicit killed $x8, implicit $x9, implicit killed $x10, implicit $x2, implicit-def $r1, implicit-def dead $x31750 ; 64BIT-NEXT: ADJCALLSTACKUP 128, 0, implicit-def dead $r1, implicit $r11751 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm1752 entry:1753%call = call i32 @mix_callee(double 1.000000e-01, double 2.000000e-01, double 3.000000e-01, double 4.000000e-01, i8 zeroext 1, i16 signext 2, i64 30000000, i32 40, i32 50, i32 60)1754 ret void1755 }1756 1757 define i32 @mix_floats(i32 %i1, i32 %i2, i32 %i3, i32 %i4, i32 %i5, i32 %i6, i32 %i7, i32 %i8, double %d1, double %d2, double %d3, double %d4, double %d5, double %d6, double %d7, double %d8, double %d9, double %d10, double %d11, double %d12, double %d13, double %d14) {1758 ; 32BIT-LABEL: name: mix_floats1759 ; 32BIT: bb.0.entry:1760 ; 32BIT-NEXT: liveins: $f1, $f2, $f3, $f4, $f5, $f6, $f7, $f8, $f9, $f10, $f11, $f12, $f13, $r3, $r4, $r5, $r6, $r7, $r8, $r9, $r101761 ; 32BIT-NEXT: {{ $}}1762 ; 32BIT-NEXT: renamable $r11 = LIS 172001763 ; 32BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, killed renamable $r41764 ; 32BIT-NEXT: STW killed renamable $r11, 0, %stack.1 :: (store (s32) into %stack.1, align 8)1765 ; 32BIT-NEXT: renamable $r4 = LWZtoc %const.0, $r2 :: (load (s32) from got)1766 ; 32BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, killed renamable $r51767 ; 32BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, killed renamable $r61768 ; 32BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, killed renamable $r71769 ; 32BIT-NEXT: renamable $f0 = LFS 0, killed renamable $r4 :: (load (s32) from constant-pool)1770 ; 32BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, killed renamable $r81771 ; 32BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, killed renamable $r91772 ; 32BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, killed renamable $r101773 ; 32BIT-NEXT: renamable $r3 = XORIS killed renamable $r3, 327681774 ; 32BIT-NEXT: STW killed renamable $r3, 4, %stack.1 :: (store (s32) into %stack.1 + 4)1775 ; 32BIT-NEXT: renamable $f31 = LFD 0, %stack.1 :: (load (s64) from %stack.1)1776 ; 32BIT-NEXT: renamable $f30 = LFD 0, %fixed-stack.0 :: (load (s64) from %fixed-stack.0, align 16)1777 ; 32BIT-NEXT: renamable $f0 = nofpexcept FSUB killed renamable $f31, killed renamable $f0, implicit $rm1778 ; 32BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f1, implicit $rm1779 ; 32BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f2, implicit $rm1780 ; 32BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f3, implicit $rm1781 ; 32BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f4, implicit $rm1782 ; 32BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f5, implicit $rm1783 ; 32BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f6, implicit $rm1784 ; 32BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f7, implicit $rm1785 ; 32BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f8, implicit $rm1786 ; 32BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f9, implicit $rm1787 ; 32BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f10, implicit $rm1788 ; 32BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f11, implicit $rm1789 ; 32BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f12, implicit $rm1790 ; 32BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f13, implicit $rm1791 ; 32BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f0, killed renamable $f30, implicit $rm1792 ; 32BIT-NEXT: renamable $f0 = nofpexcept FCTIWZ killed renamable $f0, implicit $rm1793 ; 32BIT-NEXT: STFD killed renamable $f0, 0, %stack.0 :: (store (s64) into %stack.0)1794 ; 32BIT-NEXT: renamable $r3 = LWZ 4, %stack.0 :: (load (s32) from %stack.0 + 4, basealign 8)1795 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm, implicit $r31796 ;1797 ; 64BIT-LABEL: name: mix_floats1798 ; 64BIT: bb.0.entry:1799 ; 64BIT-NEXT: liveins: $f1, $f2, $f3, $f4, $f5, $f6, $f7, $f8, $f9, $f10, $f11, $f12, $f13, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x101800 ; 64BIT-NEXT: {{ $}}1801 ; 64BIT-NEXT: renamable $f0 = LFD 0, %fixed-stack.0 :: (load (s64) from %fixed-stack.0)1802 ; 64BIT-NEXT: renamable $r3 = nsw ADD4 renamable $r3, renamable $r4, implicit killed $x4, implicit killed $x31803 ; 64BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, renamable $r5, implicit killed $x51804 ; 64BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, renamable $r6, implicit killed $x61805 ; 64BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, renamable $r7, implicit killed $x71806 ; 64BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, renamable $r8, implicit killed $x81807 ; 64BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, renamable $r9, implicit killed $x91808 ; 64BIT-NEXT: renamable $r3 = nsw ADD4 killed renamable $r3, renamable $r10, implicit killed $x101809 ; 64BIT-NEXT: renamable $x3 = EXTSW_32_64 killed renamable $r31810 ; 64BIT-NEXT: STD killed renamable $x3, 0, %stack.1 :: (store (s64) into %stack.1)1811 ; 64BIT-NEXT: renamable $f31 = LFD 0, %stack.1 :: (load (s64) from %stack.1)1812 ; 64BIT-NEXT: renamable $f31 = nofpexcept FCFID killed renamable $f31, implicit $rm1813 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f31, killed renamable $f1, implicit $rm1814 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f2, implicit $rm1815 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f3, implicit $rm1816 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f4, implicit $rm1817 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f5, implicit $rm1818 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f6, implicit $rm1819 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f7, implicit $rm1820 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f8, implicit $rm1821 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f9, implicit $rm1822 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f10, implicit $rm1823 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f11, implicit $rm1824 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f12, implicit $rm1825 ; 64BIT-NEXT: renamable $f1 = nofpexcept FADD killed renamable $f1, killed renamable $f13, implicit $rm1826 ; 64BIT-NEXT: renamable $f0 = nofpexcept FADD killed renamable $f1, killed renamable $f0, implicit $rm1827 ; 64BIT-NEXT: renamable $f0 = nofpexcept FCTIWZ killed renamable $f0, implicit $rm1828 ; 64BIT-NEXT: STFD killed renamable $f0, 0, %stack.0 :: (store (s64) into %stack.0)1829 ; 64BIT-NEXT: renamable $x3 = LWZ8 4, %stack.0 :: (load (s32) from %stack.0 + 4, basealign 8)1830 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm, implicit $x31831 entry:1832 %add = add nsw i32 %i1, %i21833 %add1 = add nsw i32 %add, %i31834 %add2 = add nsw i32 %add1, %i41835 %add3 = add nsw i32 %add2, %i51836 %add4 = add nsw i32 %add3, %i61837 %add5 = add nsw i32 %add4, %i71838 %add6 = add nsw i32 %add5, %i81839 %conv = sitofp i32 %add6 to double1840 %add7 = fadd double %conv, %d11841 %add8 = fadd double %add7, %d21842 %add9 = fadd double %add8, %d31843 %add10 = fadd double %add9, %d41844 %add11 = fadd double %add10, %d51845 %add12 = fadd double %add11, %d61846 %add13 = fadd double %add12, %d71847 %add14 = fadd double %add13, %d81848 %add15 = fadd double %add14, %d91849 %add16 = fadd double %add15, %d101850 %add17 = fadd double %add16, %d111851 %add18 = fadd double %add17, %d121852 %add19 = fadd double %add18, %d131853 %add20 = fadd double %add19, %d141854 %conv21 = fptosi double %add20 to i321855 ret i32 %conv211856 }1857 1858 define void @mix_floats_caller() {1859 ; 32BIT-LABEL: name: mix_floats_caller1860 ; 32BIT: bb.0.entry:1861 ; 32BIT-NEXT: ADJCALLSTACKDOWN 168, 0, implicit-def dead $r1, implicit $r11862 ; 32BIT-NEXT: renamable $r3 = LI 01863 ; 32BIT-NEXT: renamable $r4 = LIS 163521864 ; 32BIT-NEXT: renamable $r5 = LIS 163681865 ; 32BIT-NEXT: renamable $r6 = LIS 393211866 ; 32BIT-NEXT: renamable $r7 = LIS 163131867 ; 32BIT-NEXT: renamable $r8 = LIS 163291868 ; 32BIT-NEXT: renamable $r9 = LIS 131071869 ; 32BIT-NEXT: renamable $r10 = LIS 163391870 ; 32BIT-NEXT: STW renamable $r3, 92, $r1 :: (store (s32) into stack + 92, basealign 16)1871 ; 32BIT-NEXT: renamable $r11 = LIS 163451872 ; 32BIT-NEXT: STW killed renamable $r4, 88, $r1 :: (store (s32) into stack + 88, align 8, basealign 16)1873 ; 32BIT-NEXT: renamable $r4 = LIS 163551874 ; 32BIT-NEXT: STW killed renamable $r3, 132, $r1 :: (store (s32) into stack + 132, basealign 16)1875 ; 32BIT-NEXT: renamable $r3 = LIS 262141876 ; 32BIT-NEXT: STW killed renamable $r5, 128, $r1 :: (store (s32) into stack + 128, align 16)1877 ; 32BIT-NEXT: renamable $r5 = ORI killed renamable $r6, 393221878 ; 32BIT-NEXT: STW renamable $r5, 60, $r1 :: (store (s32) into stack + 60, basealign 16)1879 ; 32BIT-NEXT: renamable $r6 = ORI killed renamable $r7, 393211880 ; 32BIT-NEXT: STW killed renamable $r6, 56, $r1 :: (store (s32) into stack + 56, align 8, basealign 16)1881 ; 32BIT-NEXT: renamable $r6 = LIS 163581882 ; 32BIT-NEXT: STW renamable $r5, 68, $r1 :: (store (s32) into stack + 68, basealign 16)1883 ; 32BIT-NEXT: renamable $r7 = ORI killed renamable $r8, 393211884 ; 32BIT-NEXT: STW killed renamable $r7, 64, $r1 :: (store (s32) into stack + 64, align 16)1885 ; 32BIT-NEXT: renamable $r7 = ORI killed renamable $r9, 131071886 ; 32BIT-NEXT: STW renamable $r7, 76, $r1 :: (store (s32) into stack + 76, basealign 16)1887 ; 32BIT-NEXT: renamable $r8 = ORI killed renamable $r10, 131071888 ; 32BIT-NEXT: STW killed renamable $r8, 72, $r1 :: (store (s32) into stack + 72, align 8, basealign 16)1889 ; 32BIT-NEXT: renamable $r8 = LIS 163611890 ; 32BIT-NEXT: STW renamable $r5, 84, $r1 :: (store (s32) into stack + 84, basealign 16)1891 ; 32BIT-NEXT: renamable $r9 = ORI killed renamable $r11, 393211892 ; 32BIT-NEXT: STW killed renamable $r9, 80, $r1 :: (store (s32) into stack + 80, align 16)1893 ; 32BIT-NEXT: renamable $r9 = LIS 524281894 ; 32BIT-NEXT: STW renamable $r7, 100, $r1 :: (store (s32) into stack + 100, basealign 16)1895 ; 32BIT-NEXT: renamable $r4 = ORI killed renamable $r4, 131071896 ; 32BIT-NEXT: STW killed renamable $r4, 96, $r1 :: (store (s32) into stack + 96, align 16)1897 ; 32BIT-NEXT: renamable $r3 = ORI killed renamable $r3, 262141898 ; 32BIT-NEXT: STW renamable $r3, 108, $r1 :: (store (s32) into stack + 108, basealign 16)1899 ; 32BIT-NEXT: renamable $r4 = ORI killed renamable $r6, 262141900 ; 32BIT-NEXT: STW killed renamable $r4, 104, $r1 :: (store (s32) into stack + 104, align 8, basealign 16)1901 ; 32BIT-NEXT: renamable $r4 = LIS 163641902 ; 32BIT-NEXT: STW renamable $r5, 116, $r1 :: (store (s32) into stack + 116, basealign 16)1903 ; 32BIT-NEXT: renamable $r6 = ORI killed renamable $r8, 393211904 ; 32BIT-NEXT: STW killed renamable $r6, 112, $r1 :: (store (s32) into stack + 112, align 16)1905 ; 32BIT-NEXT: renamable $r6 = ORI killed renamable $r9, 524291906 ; 32BIT-NEXT: STW renamable $r6, 124, $r1 :: (store (s32) into stack + 124, basealign 16)1907 ; 32BIT-NEXT: renamable $r4 = ORI killed renamable $r4, 524281908 ; 32BIT-NEXT: STW killed renamable $r4, 120, $r1 :: (store (s32) into stack + 120, align 8, basealign 16)1909 ; 32BIT-NEXT: renamable $r4 = LIS 163691910 ; 32BIT-NEXT: STW killed renamable $r5, 140, $r1 :: (store (s32) into stack + 140, basealign 16)1911 ; 32BIT-NEXT: renamable $r4 = ORI killed renamable $r4, 393211912 ; 32BIT-NEXT: STW killed renamable $r4, 136, $r1 :: (store (s32) into stack + 136, align 8, basealign 16)1913 ; 32BIT-NEXT: renamable $r4 = LIS 163711914 ; 32BIT-NEXT: STW killed renamable $r7, 148, $r1 :: (store (s32) into stack + 148, basealign 16)1915 ; 32BIT-NEXT: renamable $r4 = ORI killed renamable $r4, 131071916 ; 32BIT-NEXT: STW killed renamable $r4, 144, $r1 :: (store (s32) into stack + 144, align 16)1917 ; 32BIT-NEXT: renamable $r4 = LIS 163721918 ; 32BIT-NEXT: renamable $r5 = LWZtoc %const.0, $r2 :: (load (s32) from got)1919 ; 32BIT-NEXT: STW killed renamable $r6, 156, $r1 :: (store (s32) into stack + 156, basealign 16)1920 ; 32BIT-NEXT: renamable $r4 = ORI killed renamable $r4, 524281921 ; 32BIT-NEXT: STW killed renamable $r4, 152, $r1 :: (store (s32) into stack + 152, align 8, basealign 16)1922 ; 32BIT-NEXT: renamable $r4 = LWZtoc %const.1, $r2 :: (load (s32) from got)1923 ; 32BIT-NEXT: STW killed renamable $r3, 164, $r1 :: (store (s32) into stack + 164, basealign 16)1924 ; 32BIT-NEXT: renamable $r3 = LWZtoc %const.2, $r2 :: (load (s32) from got)1925 ; 32BIT-NEXT: renamable $f1 = LFD 0, killed renamable $r5 :: (load (s64) from constant-pool)1926 ; 32BIT-NEXT: renamable $r5 = LWZtoc %const.3, $r2 :: (load (s32) from got)1927 ; 32BIT-NEXT: renamable $f2 = LFD 0, killed renamable $r4 :: (load (s64) from constant-pool)1928 ; 32BIT-NEXT: renamable $r4 = LWZtoc %const.4, $r2 :: (load (s32) from got)1929 ; 32BIT-NEXT: renamable $f3 = LFD 0, killed renamable $r3 :: (load (s64) from constant-pool)1930 ; 32BIT-NEXT: renamable $r3 = LWZtoc %const.5, $r2 :: (load (s32) from got)1931 ; 32BIT-NEXT: renamable $f4 = LFD 0, killed renamable $r5 :: (load (s64) from constant-pool)1932 ; 32BIT-NEXT: renamable $r5 = LWZtoc %const.6, $r2 :: (load (s32) from got)1933 ; 32BIT-NEXT: renamable $f6 = LFD 0, killed renamable $r4 :: (load (s64) from constant-pool)1934 ; 32BIT-NEXT: renamable $r4 = LWZtoc %const.7, $r2 :: (load (s32) from got)1935 ; 32BIT-NEXT: renamable $f7 = LFD 0, killed renamable $r3 :: (load (s64) from constant-pool)1936 ; 32BIT-NEXT: renamable $r3 = LWZtoc %const.8, $r2 :: (load (s32) from got)1937 ; 32BIT-NEXT: renamable $f8 = LFD 0, killed renamable $r5 :: (load (s64) from constant-pool)1938 ; 32BIT-NEXT: renamable $r5 = LWZtoc %const.9, $r2 :: (load (s32) from got)1939 ; 32BIT-NEXT: renamable $f9 = LFD 0, killed renamable $r4 :: (load (s64) from constant-pool)1940 ; 32BIT-NEXT: renamable $r4 = LWZtoc %const.10, $r2 :: (load (s32) from got)1941 ; 32BIT-NEXT: renamable $f11 = LFD 0, killed renamable $r3 :: (load (s64) from constant-pool)1942 ; 32BIT-NEXT: renamable $r3 = LWZtoc %const.11, $r2 :: (load (s32) from got)1943 ; 32BIT-NEXT: renamable $f12 = LFD 0, killed renamable $r5 :: (load (s64) from constant-pool)1944 ; 32BIT-NEXT: renamable $r5 = LWZtoc %const.12, $r2 :: (load (s32) from got)1945 ; 32BIT-NEXT: renamable $f13 = LFD 0, killed renamable $r4 :: (load (s64) from constant-pool)1946 ; 32BIT-NEXT: renamable $r4 = LIS 163741947 ; 32BIT-NEXT: renamable $f5 = LFS 0, killed renamable $r3 :: (load (s32) from constant-pool)1948 ; 32BIT-NEXT: renamable $r11 = ORI killed renamable $r4, 262141949 ; 32BIT-NEXT: renamable $f10 = LFS 0, killed renamable $r5 :: (load (s32) from constant-pool)1950 ; 32BIT-NEXT: $r3 = LI 11951 ; 32BIT-NEXT: $r4 = LI 21952 ; 32BIT-NEXT: $r5 = LI 31953 ; 32BIT-NEXT: $r6 = LI 41954 ; 32BIT-NEXT: $r7 = LI 51955 ; 32BIT-NEXT: $r8 = LI 61956 ; 32BIT-NEXT: $r9 = LI 71957 ; 32BIT-NEXT: $r10 = LI 81958 ; 32BIT-NEXT: STW killed renamable $r11, 160, $r1 :: (store (s32) into stack + 160, align 16)1959 ; 32BIT-NEXT: BL_NOP <mcsymbol .mix_floats>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r3, implicit $r4, implicit $r5, implicit $r6, implicit $r7, implicit $r8, implicit $r9, implicit $r10, implicit $f1, implicit $f2, implicit $f3, implicit $f4, implicit $f5, implicit $f6, implicit $f7, implicit $f8, implicit $f9, implicit $f10, implicit $f11, implicit $f12, implicit $f13, implicit $r2, implicit-def $r1, implicit-def dead $r31960 ; 32BIT-NEXT: ADJCALLSTACKUP 168, 0, implicit-def dead $r1, implicit $r11961 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm1962 ;1963 ; 64BIT-LABEL: name: mix_floats_caller1964 ; 64BIT: bb.0.entry:1965 ; 64BIT-NEXT: ADJCALLSTACKDOWN 224, 0, implicit-def dead $r1, implicit $r11966 ; 64BIT-NEXT: renamable $x3 = LI8 10231967 ; 64BIT-NEXT: renamable $x4 = LI8 5111968 ; 64BIT-NEXT: renamable $x5 = LIS8 163741969 ; 64BIT-NEXT: renamable $x6 = LIS8 163711970 ; 64BIT-NEXT: renamable $x7 = LIS8 163581971 ; 64BIT-NEXT: renamable $x8 = LIS8 163551972 ; 64BIT-NEXT: renamable $x9 = LIS8 163391973 ; 64BIT-NEXT: renamable $x10 = LIS8 40931974 ; 64BIT-NEXT: renamable $x11 = LDtocCPT %const.0, $x2 :: (load (s64) from got)1975 ; 64BIT-NEXT: renamable $x29 = LIS8 163691976 ; 64BIT-NEXT: renamable $x28 = LIS8 40911977 ; 64BIT-NEXT: renamable $x12 = LDtocCPT %const.1, $x2 :: (load (s64) from got)1978 ; 64BIT-NEXT: renamable $x27 = LIS8 163611979 ; 64BIT-NEXT: renamable $x31 = LDtocCPT %const.2, $x2 :: (load (s64) from got)1980 ; 64BIT-NEXT: renamable $f1 = LFD 0, killed renamable $x11 :: (load (s64) from constant-pool)1981 ; 64BIT-NEXT: renamable $x26 = LIS8 163451982 ; 64BIT-NEXT: renamable $x11 = LDtocCPT %const.3, $x2 :: (load (s64) from got)1983 ; 64BIT-NEXT: renamable $f2 = LFD 0, killed renamable $x12 :: (load (s64) from constant-pool)1984 ; 64BIT-NEXT: renamable $x25 = LIS8 163291985 ; 64BIT-NEXT: renamable $f3 = LFD 0, killed renamable $x31 :: (load (s64) from constant-pool)1986 ; 64BIT-NEXT: renamable $x24 = LIS8 163131987 ; 64BIT-NEXT: renamable $x23 = LDtocCPT %const.4, $x2 :: (load (s64) from got)1988 ; 64BIT-NEXT: renamable $x22 = LDtocCPT %const.5, $x2 :: (load (s64) from got)1989 ; 64BIT-NEXT: renamable $x21 = LDtocCPT %const.6, $x2 :: (load (s64) from got)1990 ; 64BIT-NEXT: renamable $x20 = LDtocCPT %const.7, $x2 :: (load (s64) from got)1991 ; 64BIT-NEXT: renamable $x19 = LDtocCPT %const.8, $x2 :: (load (s64) from got)1992 ; 64BIT-NEXT: renamable $x18 = LDtocCPT %const.9, $x2 :: (load (s64) from got)1993 ; 64BIT-NEXT: renamable $x17 = LDtocCPT %const.10, $x2 :: (load (s64) from got)1994 ; 64BIT-NEXT: renamable $f4 = LFD 0, killed renamable $x11 :: (load (s64) from constant-pool)1995 ; 64BIT-NEXT: renamable $x16 = LDtocCPT %const.11, $x2 :: (load (s64) from got)1996 ; 64BIT-NEXT: renamable $x11 = ORI8 killed renamable $x5, 262141997 ; 64BIT-NEXT: renamable $x12 = ORI8 killed renamable $x6, 131071998 ; 64BIT-NEXT: renamable $x0 = ORI8 killed renamable $x7, 262141999 ; 64BIT-NEXT: renamable $x31 = ORI8 killed renamable $x8, 131072000 ; 64BIT-NEXT: renamable $x30 = ORI8 killed renamable $x9, 131072001 ; 64BIT-NEXT: renamable $x5 = ORI8 killed renamable $x10, 131072002 ; 64BIT-NEXT: renamable $x6 = ORI8 killed renamable $x29, 393212003 ; 64BIT-NEXT: renamable $x7 = ORI8 killed renamable $x28, 131072004 ; 64BIT-NEXT: renamable $x8 = ORI8 killed renamable $x27, 393212005 ; 64BIT-NEXT: renamable $x9 = ORI8 killed renamable $x26, 393212006 ; 64BIT-NEXT: renamable $x10 = ORI8 killed renamable $x25, 393212007 ; 64BIT-NEXT: renamable $x27 = ORI8 killed renamable $x24, 393212008 ; 64BIT-NEXT: renamable $f6 = LFD 0, killed renamable $x23 :: (load (s64) from constant-pool)2009 ; 64BIT-NEXT: renamable $x26 = LDtocCPT %const.12, $x2 :: (load (s64) from got)2010 ; 64BIT-NEXT: renamable $x29 = RLDIC killed renamable $x3, 52, 22011 ; 64BIT-NEXT: renamable $x28 = RLDIC killed renamable $x4, 53, 22012 ; 64BIT-NEXT: renamable $x11 = RLDIMI killed renamable $x11, renamable $x11, 32, 02013 ; 64BIT-NEXT: renamable $x12 = RLDIMI killed renamable $x12, renamable $x12, 32, 02014 ; 64BIT-NEXT: renamable $x0 = RLDIMI killed renamable $x0, renamable $x0, 32, 02015 ; 64BIT-NEXT: renamable $x31 = RLDIMI killed renamable $x31, renamable $x31, 32, 02016 ; 64BIT-NEXT: renamable $x30 = RLDIMI killed renamable $x30, renamable $x30, 32, 02017 ; 64BIT-NEXT: renamable $x3 = RLDIC killed renamable $x5, 34, 22018 ; 64BIT-NEXT: renamable $x4 = RLDIC killed renamable $x6, 32, 22019 ; 64BIT-NEXT: renamable $x5 = RLDIC killed renamable $x7, 34, 22020 ; 64BIT-NEXT: renamable $x6 = RLDIC killed renamable $x8, 32, 22021 ; 64BIT-NEXT: renamable $x7 = RLDIC killed renamable $x9, 32, 22022 ; 64BIT-NEXT: renamable $x8 = RLDIC killed renamable $x10, 32, 22023 ; 64BIT-NEXT: renamable $x9 = RLDIC killed renamable $x27, 32, 22024 ; 64BIT-NEXT: renamable $x11 = RLWIMI8 killed renamable $x11, renamable $x11, 16, 0, 152025 ; 64BIT-NEXT: renamable $x12 = RLWIMI8 killed renamable $x12, renamable $x12, 16, 0, 152026 ; 64BIT-NEXT: renamable $x0 = RLWIMI8 killed renamable $x0, renamable $x0, 16, 0, 152027 ; 64BIT-NEXT: renamable $x31 = RLWIMI8 killed renamable $x31, renamable $x31, 16, 0, 152028 ; 64BIT-NEXT: renamable $x30 = RLWIMI8 killed renamable $x30, renamable $x30, 16, 0, 152029 ; 64BIT-NEXT: renamable $x3 = ORIS8 killed renamable $x3, 524282030 ; 64BIT-NEXT: renamable $x4 = ORIS8 killed renamable $x4, 393212031 ; 64BIT-NEXT: renamable $x5 = ORIS8 killed renamable $x5, 524282032 ; 64BIT-NEXT: renamable $x6 = ORIS8 killed renamable $x6, 393212033 ; 64BIT-NEXT: renamable $x7 = ORIS8 killed renamable $x7, 393212034 ; 64BIT-NEXT: renamable $x8 = ORIS8 killed renamable $x8, 393212035 ; 64BIT-NEXT: renamable $x9 = ORIS8 killed renamable $x9, 393212036 ; 64BIT-NEXT: renamable $f7 = LFD 0, killed renamable $x22 :: (load (s64) from constant-pool)2037 ; 64BIT-NEXT: renamable $x27 = ORI8 killed renamable $x3, 524292038 ; 64BIT-NEXT: renamable $f8 = LFD 0, killed renamable $x21 :: (load (s64) from constant-pool)2039 ; 64BIT-NEXT: renamable $x25 = ORI8 killed renamable $x4, 393222040 ; 64BIT-NEXT: renamable $f9 = LFD 0, killed renamable $x20 :: (load (s64) from constant-pool)2041 ; 64BIT-NEXT: renamable $x24 = ORI8 killed renamable $x5, 524292042 ; 64BIT-NEXT: renamable $f11 = LFD 0, killed renamable $x19 :: (load (s64) from constant-pool)2043 ; 64BIT-NEXT: renamable $x23 = ORI8 killed renamable $x6, 393222044 ; 64BIT-NEXT: renamable $f12 = LFD 0, killed renamable $x18 :: (load (s64) from constant-pool)2045 ; 64BIT-NEXT: renamable $x22 = ORI8 killed renamable $x7, 393222046 ; 64BIT-NEXT: renamable $f13 = LFD 0, killed renamable $x17 :: (load (s64) from constant-pool)2047 ; 64BIT-NEXT: renamable $x21 = ORI8 killed renamable $x8, 393222048 ; 64BIT-NEXT: renamable $f5 = LFS 0, killed renamable $x16 :: (load (s32) from constant-pool)2049 ; 64BIT-NEXT: renamable $x20 = ORI8 killed renamable $x9, 393222050 ; 64BIT-NEXT: renamable $f10 = LFS 0, killed renamable $x26 :: (load (s32) from constant-pool)2051 ; 64BIT-NEXT: $x3 = LI8 12052 ; 64BIT-NEXT: $x4 = LI8 22053 ; 64BIT-NEXT: $x5 = LI8 32054 ; 64BIT-NEXT: $x6 = LI8 42055 ; 64BIT-NEXT: $x7 = LI8 52056 ; 64BIT-NEXT: $x8 = LI8 62057 ; 64BIT-NEXT: $x9 = LI8 72058 ; 64BIT-NEXT: $x10 = LI8 82059 ; 64BIT-NEXT: STD killed renamable $x29, 184, $x1 :: (store (s64) into stack + 184, basealign 16)2060 ; 64BIT-NEXT: STD killed renamable $x28, 144, $x1 :: (store (s64) into stack + 144, align 16)2061 ; 64BIT-NEXT: STD killed renamable $x11, 216, $x1 :: (store (s64) into stack + 216, basealign 16)2062 ; 64BIT-NEXT: STD killed renamable $x12, 200, $x1 :: (store (s64) into stack + 200, basealign 16)2063 ; 64BIT-NEXT: STD killed renamable $x0, 160, $x1 :: (store (s64) into stack + 160, align 16)2064 ; 64BIT-NEXT: STD killed renamable $x31, 152, $x1 :: (store (s64) into stack + 152, basealign 16)2065 ; 64BIT-NEXT: STD killed renamable $x30, 128, $x1 :: (store (s64) into stack + 128, align 16)2066 ; 64BIT-NEXT: STD killed renamable $x27, 208, $x1 :: (store (s64) into stack + 208, align 16)2067 ; 64BIT-NEXT: STD killed renamable $x25, 192, $x1 :: (store (s64) into stack + 192, align 16)2068 ; 64BIT-NEXT: STD killed renamable $x24, 176, $x1 :: (store (s64) into stack + 176, align 16)2069 ; 64BIT-NEXT: STD killed renamable $x23, 168, $x1 :: (store (s64) into stack + 168, basealign 16)2070 ; 64BIT-NEXT: STD killed renamable $x22, 136, $x1 :: (store (s64) into stack + 136, basealign 16)2071 ; 64BIT-NEXT: STD killed renamable $x21, 120, $x1 :: (store (s64) into stack + 120, basealign 16)2072 ; 64BIT-NEXT: STD killed renamable $x20, 112, $x1 :: (store (s64) into stack + 112, align 16)2073 ; 64BIT-NEXT: BL8_NOP <mcsymbol .mix_floats>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $x3, implicit $x4, implicit $x5, implicit $x6, implicit $x7, implicit $x8, implicit $x9, implicit $x10, implicit $f1, implicit $f2, implicit $f3, implicit $f4, implicit $f5, implicit $f6, implicit $f7, implicit $f8, implicit $f9, implicit $f10, implicit $f11, implicit $f12, implicit $f13, implicit $x2, implicit-def $r1, implicit-def dead $x32074 ; 64BIT-NEXT: ADJCALLSTACKUP 224, 0, implicit-def dead $r1, implicit $r12075 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm2076 entry:2077 %call = call i32 @mix_floats(i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, double 1.000000e-01, double 2.000000e-01, double 3.000000e-01, double 4.000000e-01, double 5.000000e-01, double 6.000000e-01, double 0x3FE6666666666666, double 8.000000e-01, double 9.000000e-01, double 1.000000e+00, double 1.100000e+00, double 1.200000e+00, double 1.300000e+00, double 1.400000e+00)2078 ret void2079 }2080 2081