llvm.org GIT mirror llvm / b931375
[MIR] Repurposing '$' sigil used by external symbols. Replacing with '&'. Planning to add support for named vregs. This puts is in a conundrum since physregs are named as well. To rectify this we need to use a sigil other than '%' for physregs in MIR. We've settled on using '$' for physregs but first we must repurpose it from external symbols using it, which is what this commit is all about. We think '&' will have familiar semantics for C/C++ users. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@322146 91177308-0d34-0410-b5e6-96231b3b80d8 Puyan Lotfi 2 years ago
40 changed file(s) with 198 addition(s) and 198 deletion(s). Raw diff Collapse all Expand all
441441
442442 static Cursor maybeLexExternalSymbol(Cursor C, MIToken &Token,
443443 ErrorCallbackType ErrorCallback) {
444 if (C.peek() != '$')
444 if (C.peek() != '&')
445445 return None;
446446 return lexName(C, Token, MIToken::ExternalSymbol, /*PrefixLength=*/1,
447447 ErrorCallback);
862862 OS, /*PrintType=*/false, MST);
863863 break;
864864 case PseudoSourceValue::ExternalSymbolCallEntry:
865 OS << "call-entry $";
865 OS << "call-entry &";
866866 printLLVMNameWithoutPrefix(
867867 OS, cast(PVal)->getSymbol());
868868 break;
751751 break;
752752 case MachineOperand::MO_ExternalSymbol: {
753753 StringRef Name = getSymbolName();
754 OS << '$';
754 OS << '&';
755755 if (Name.empty()) {
756756 OS << "\"\"";
757757 } else {
11551155 ; CHECK: %x0 = COPY [[DST]]
11561156 ; CHECK: %x1 = COPY [[SRC]]
11571157 ; CHECK: %x2 = COPY [[SIZE]]
1158 ; CHECK: BL $memcpy, csr_aarch64_aapcs, implicit-def %lr, implicit %sp, implicit %x0, implicit %x1, implicit %x2
1158 ; CHECK: BL &memcpy, csr_aarch64_aapcs, implicit-def %lr, implicit %sp, implicit %x0, implicit %x1, implicit %x2
11591159 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %size, i32 1, i1 0)
11601160 ret void
11611161 }
11691169 ; CHECK: %x0 = COPY [[DST]]
11701170 ; CHECK: %x1 = COPY [[SRC]]
11711171 ; CHECK: %x2 = COPY [[SIZE]]
1172 ; CHECK: BL $memmove, csr_aarch64_aapcs, implicit-def %lr, implicit %sp, implicit %x0, implicit %x1, implicit %x2
1172 ; CHECK: BL &memmove, csr_aarch64_aapcs, implicit-def %lr, implicit %sp, implicit %x0, implicit %x1, implicit %x2
11731173 call void @llvm.memmove.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %size, i32 1, i1 0)
11741174 ret void
11751175 }
11851185 ; CHECK: [[SRC_TMP:%[0-9]+]]:_(s32) = G_ANYEXT [[SRC]]
11861186 ; CHECK: %w1 = COPY [[SRC_TMP]]
11871187 ; CHECK: %x2 = COPY [[SIZE]]
1188 ; CHECK: BL $memset, csr_aarch64_aapcs, implicit-def %lr, implicit %sp, implicit %x0, implicit %w1, implicit %x2
1188 ; CHECK: BL &memset, csr_aarch64_aapcs, implicit-def %lr, implicit %sp, implicit %x0, implicit %w1, implicit %x2
11891189 call void @llvm.memset.p0i8.i64(i8* %dst, i8 %val, i64 %size, i32 1, i1 0)
11901190 ret void
11911191 }
13691369
13701370 define void @test_trivial_inlineasm() {
13711371 ; CHECK-LABEL: name: test_trivial_inlineasm
1372 ; CHECK: INLINEASM $wibble, 1
1373 ; CHECK: INLINEASM $wibble, 0
1372 ; CHECK: INLINEASM &wibble, 1
1373 ; CHECK: INLINEASM &wibble, 0
13741374 call void asm sideeffect "wibble", ""()
13751375 call void asm "wibble", ""()
13761376 ret void
2424
2525 ; CHECK: %d0 = COPY %0
2626 ; CHECK: %d1 = COPY %1
27 ; CHECK: BL $pow, csr_aarch64_aapcs, implicit-def %lr, implicit %sp, implicit %d0, implicit %d1, implicit-def %d0
27 ; CHECK: BL &pow, csr_aarch64_aapcs, implicit-def %lr, implicit %sp, implicit %d0, implicit %d1, implicit-def %d0
2828 ; CHECK: %4:_(s64) = COPY %d0
2929 %4:_(s64) = G_FPOW %0, %1
3030 %x0 = COPY %4
3131
3232 ; CHECK: %s0 = COPY %2
3333 ; CHECK: %s1 = COPY %3
34 ; CHECK: BL $powf, csr_aarch64_aapcs, implicit-def %lr, implicit %sp, implicit %s0, implicit %s1, implicit-def %s0
34 ; CHECK: BL &powf, csr_aarch64_aapcs, implicit-def %lr, implicit %sp, implicit %s0, implicit %s1, implicit-def %s0
3535 ; CHECK: %5:_(s32) = COPY %s0
3636 %5:_(s32) = G_FPOW %2, %3
3737 %w0 = COPY %5
134134 ; CHECK: ADJCALLSTACKDOWN 0, 0, implicit-def %sp, implicit %sp
135135 ; CHECK: %d0 = COPY [[COPY]](s64)
136136 ; CHECK: %d1 = COPY [[COPY1]](s64)
137 ; CHECK: BL $fmod, csr_aarch64_aapcs, implicit-def %lr, implicit %sp, implicit %d0, implicit %d1, implicit-def %d0
137 ; CHECK: BL &fmod, csr_aarch64_aapcs, implicit-def %lr, implicit %sp, implicit %d0, implicit %d1, implicit-def %d0
138138 ; CHECK: [[COPY2:%[0-9]+]]:_(s64) = COPY %d0
139139 ; CHECK: ADJCALLSTACKUP 0, 0, implicit-def %sp, implicit %sp
140140 ; CHECK: %x0 = COPY [[COPY2]](s64)
143143 ; CHECK: ADJCALLSTACKDOWN 0, 0, implicit-def %sp, implicit %sp
144144 ; CHECK: %s0 = COPY [[TRUNC]](s32)
145145 ; CHECK: %s1 = COPY [[TRUNC1]](s32)
146 ; CHECK: BL $fmodf, csr_aarch64_aapcs, implicit-def %lr, implicit %sp, implicit %s0, implicit %s1, implicit-def %s0
146 ; CHECK: BL &fmodf, csr_aarch64_aapcs, implicit-def %lr, implicit %sp, implicit %s0, implicit %s1, implicit-def %s0
147147 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY %s0
148148 ; CHECK: ADJCALLSTACKUP 0, 0, implicit-def %sp, implicit %sp
149149 ; CHECK: %w0 = COPY [[COPY3]](s32)
171171 STRXui %x0, %sp, 0 :: (store 8)
172172 STRXui killed %x0, %sp, 2 :: (store 8)
173173 %x0 = LDRXui %sp, 0 :: (load 8)
174 BL $bar, csr_aarch64_aapcs, implicit-def %lr, implicit %sp, implicit %x0, implicit-def %sp
174 BL &bar, csr_aarch64_aapcs, implicit-def %lr, implicit %sp, implicit %x0, implicit-def %sp
175175 RET %lr
176176 ...
177177 # CHECK-LABEL: name: promote-load-from-store-trivial-kills
179179 # CHECK: STRXui %x0, %sp, 2
180180 # CHECK-NOT: LDRXui
181181 # CHECK-NOT: ORR
182 # CHECK: BL $bar, csr_aarch64_aapcs, implicit-def %lr, implicit %sp, implicit %x0, implicit-def %sp
182 # CHECK: BL &bar, csr_aarch64_aapcs, implicit-def %lr, implicit %sp, implicit %x0, implicit-def %sp
5353 bb.1:
5454 %4 = ADRP target-flags(aarch64-page) @g
5555 %8 = LDRWui %4, target-flags(aarch64-pageoff, aarch64-nc) @g :: (volatile dereferenceable load 4 from @g)
56 INLINEASM $nop, 1, 12, implicit-def dead early-clobber %x0, 12, implicit-def dead early-clobber %x1, 12, implicit-def dead early-clobber %x2, 12, implicit-def dead early-clobber %x3, 12, implicit-def dead early-clobber %x4, 12, implicit-def dead early-clobber %x5, 12, implicit-def dead early-clobber %x6, 12, implicit-def dead early-clobber %x7, 12, implicit-def dead early-clobber %x8, 12, implicit-def dead early-clobber %x9, 12, implicit-def dead early-clobber %x10, 12, implicit-def dead early-clobber %x11, 12, implicit-def dead early-clobber %x12, 12, implicit-def dead early-clobber %x13, 12, implicit-def dead early-clobber %x14, 12, implicit-def dead early-clobber %x15, 12, implicit-def dead early-clobber %x16, 12, implicit-def dead early-clobber %x17, 12, implicit-def dead early-clobber %x18, 12, implicit-def dead early-clobber %x19, 12, implicit-def dead early-clobber %x20, 12, implicit-def dead early-clobber %x21, 12, implicit-def dead early-clobber %x22, 12, implicit-def dead early-clobber %x23, 12, implicit-def dead early-clobber %x24, 12, implicit-def dead early-clobber %x25, 12, implicit-def dead early-clobber %x26, 12, implicit-def dead early-clobber %x27, 12, implicit-def dead early-clobber %x28, 12, implicit-def dead early-clobber %fp, 12, implicit-def dead early-clobber %lr
56 INLINEASM &nop, 1, 12, implicit-def dead early-clobber %x0, 12, implicit-def dead early-clobber %x1, 12, implicit-def dead early-clobber %x2, 12, implicit-def dead early-clobber %x3, 12, implicit-def dead early-clobber %x4, 12, implicit-def dead early-clobber %x5, 12, implicit-def dead early-clobber %x6, 12, implicit-def dead early-clobber %x7, 12, implicit-def dead early-clobber %x8, 12, implicit-def dead early-clobber %x9, 12, implicit-def dead early-clobber %x10, 12, implicit-def dead early-clobber %x11, 12, implicit-def dead early-clobber %x12, 12, implicit-def dead early-clobber %x13, 12, implicit-def dead early-clobber %x14, 12, implicit-def dead early-clobber %x15, 12, implicit-def dead early-clobber %x16, 12, implicit-def dead early-clobber %x17, 12, implicit-def dead early-clobber %x18, 12, implicit-def dead early-clobber %x19, 12, implicit-def dead early-clobber %x20, 12, implicit-def dead early-clobber %x21, 12, implicit-def dead early-clobber %x22, 12, implicit-def dead early-clobber %x23, 12, implicit-def dead early-clobber %x24, 12, implicit-def dead early-clobber %x25, 12, implicit-def dead early-clobber %x26, 12, implicit-def dead early-clobber %x27, 12, implicit-def dead early-clobber %x28, 12, implicit-def dead early-clobber %fp, 12, implicit-def dead early-clobber %lr
5757
5858 bb.2:
59 INLINEASM $nop, 1, 12, implicit-def dead early-clobber %x0, 12, implicit-def dead early-clobber %x1, 12, implicit-def dead early-clobber %x2, 12, implicit-def dead early-clobber %x3, 12, implicit-def dead early-clobber %x4, 12, implicit-def dead early-clobber %x5, 12, implicit-def dead early-clobber %x6, 12, implicit-def dead early-clobber %x7, 12, implicit-def dead early-clobber %x8, 12, implicit-def dead early-clobber %x9, 12, implicit-def dead early-clobber %x10, 12, implicit-def dead early-clobber %x11, 12, implicit-def dead early-clobber %x12, 12, implicit-def dead early-clobber %x13, 12, implicit-def dead early-clobber %x14, 12, implicit-def dead early-clobber %x15, 12, implicit-def dead early-clobber %x16, 12, implicit-def dead early-clobber %x17, 12, implicit-def dead early-clobber %x18, 12, implicit-def dead early-clobber %x19, 12, implicit-def dead early-clobber %x20, 12, implicit-def dead early-clobber %x21, 12, implicit-def dead early-clobber %x22, 12, implicit-def dead early-clobber %x23, 12, implicit-def dead early-clobber %x24, 12, implicit-def dead early-clobber %x25, 12, implicit-def dead early-clobber %x26, 12, implicit-def dead early-clobber %x27, 12, implicit-def dead early-clobber %x28, 12, implicit-def dead early-clobber %fp, 12, implicit-def dead early-clobber %lr
59 INLINEASM &nop, 1, 12, implicit-def dead early-clobber %x0, 12, implicit-def dead early-clobber %x1, 12, implicit-def dead early-clobber %x2, 12, implicit-def dead early-clobber %x3, 12, implicit-def dead early-clobber %x4, 12, implicit-def dead early-clobber %x5, 12, implicit-def dead early-clobber %x6, 12, implicit-def dead early-clobber %x7, 12, implicit-def dead early-clobber %x8, 12, implicit-def dead early-clobber %x9, 12, implicit-def dead early-clobber %x10, 12, implicit-def dead early-clobber %x11, 12, implicit-def dead early-clobber %x12, 12, implicit-def dead early-clobber %x13, 12, implicit-def dead early-clobber %x14, 12, implicit-def dead early-clobber %x15, 12, implicit-def dead early-clobber %x16, 12, implicit-def dead early-clobber %x17, 12, implicit-def dead early-clobber %x18, 12, implicit-def dead early-clobber %x19, 12, implicit-def dead early-clobber %x20, 12, implicit-def dead early-clobber %x21, 12, implicit-def dead early-clobber %x22, 12, implicit-def dead early-clobber %x23, 12, implicit-def dead early-clobber %x24, 12, implicit-def dead early-clobber %x25, 12, implicit-def dead early-clobber %x26, 12, implicit-def dead early-clobber %x27, 12, implicit-def dead early-clobber %x28, 12, implicit-def dead early-clobber %fp, 12, implicit-def dead early-clobber %lr
6060 %6 = ADRP target-flags(aarch64-page) @g
6161 %w0 = MOVi32imm 42
6262 STRWui %8, %6, target-flags(aarch64-pageoff, aarch64-nc) @g :: (volatile store 4 into @g)
1616 body: |
1717 bb.0:
1818 FLAT_STORE_DWORDX4 %vgpr49_vgpr50, %vgpr26_vgpr27_vgpr28_vgpr29, 0, 0, 0, implicit %exec, implicit %flat_scr
19 INLINEASM $"v_mad_u64_u32 $0, $1, $2, $3, $4", 0, 2621450, def %vgpr26_vgpr27, 2818058, def dead %sgpr14_sgpr15, 589833, %sgpr12, 327689, killed %vgpr51, 2621449, %vgpr46_vgpr47
19 INLINEASM &"v_mad_u64_u32 $0, $1, $2, $3, $4", 0, 2621450, def %vgpr26_vgpr27, 2818058, def dead %sgpr14_sgpr15, 589833, %sgpr12, 327689, killed %vgpr51, 2621449, %vgpr46_vgpr47
2020 S_ENDPGM
2121 ...
2222
5353 liveins: %sgpr7, %vgpr4
5454
5555 %m0 = S_MOV_B32 killed %sgpr7
56 INLINEASM $"; no-op", 1, 327690, def %vgpr5
56 INLINEASM &"; no-op", 1, 327690, def %vgpr5
5757 %vgpr0 = V_INTERP_P1_F32 killed %vgpr4, 0, 0, implicit %m0, implicit %exec
5858 SI_RETURN_TO_EPILOG killed %vgpr5, killed %vgpr0
5959 ...
4545 ; SOFT: ADJCALLSTACKDOWN
4646 ; SOFT-DAG: %r0 = COPY [[X]]
4747 ; SOFT-DAG: %r1 = COPY [[Y]]
48 ; SOFT-AEABI: BL $__aeabi_idiv, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
48 ; SOFT-AEABI: BL &__aeabi_idiv, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
4949 ; SOFT-AEABI: [[R:%[0-9]+]]:_(s32) = COPY %r0
50 ; SOFT-DEFAULT: BL $__divsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
50 ; SOFT-DEFAULT: BL &__divsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
5151 ; SOFT-DEFAULT: [[R:%[0-9]+]]:_(s32) = COPY %r0
5252 ; SOFT: ADJCALLSTACKUP
5353 ; SOFT-NOT: G_SDIV
8181 ; SOFT: ADJCALLSTACKDOWN
8282 ; SOFT-DAG: %r0 = COPY [[X]]
8383 ; SOFT-DAG: %r1 = COPY [[Y]]
84 ; SOFT-AEABI: BL $__aeabi_uidiv, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
84 ; SOFT-AEABI: BL &__aeabi_uidiv, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
8585 ; SOFT-AEABI: [[R:%[0-9]+]]:_(s32) = COPY %r0
86 ; SOFT-DEFAULT: BL $__udivsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
86 ; SOFT-DEFAULT: BL &__udivsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
8787 ; SOFT-DEFAULT: [[R:%[0-9]+]]:_(s32) = COPY %r0
8888 ; SOFT: ADJCALLSTACKUP
8989 ; SOFT-NOT: G_UDIV
132132 ; SOFT: ADJCALLSTACKDOWN
133133 ; SOFT-DAG: %r0 = COPY [[X32]]
134134 ; SOFT-DAG: %r1 = COPY [[Y32]]
135 ; SOFT-AEABI: BL $__aeabi_idiv, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
135 ; SOFT-AEABI: BL &__aeabi_idiv, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
136136 ; SOFT-AEABI: [[R32:%[0-9]+]]:_(s32) = COPY %r0
137 ; SOFT-DEFAULT: BL $__divsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
137 ; SOFT-DEFAULT: BL &__divsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
138138 ; SOFT-DEFAULT: [[R32:%[0-9]+]]:_(s32) = COPY %r0
139139 ; SOFT: ADJCALLSTACKUP
140140 ; SOFT-NOT: G_SDIV
184184 ; SOFT: ADJCALLSTACKDOWN
185185 ; SOFT-DAG: %r0 = COPY [[X32]]
186186 ; SOFT-DAG: %r1 = COPY [[Y32]]
187 ; SOFT-AEABI: BL $__aeabi_uidiv, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
187 ; SOFT-AEABI: BL &__aeabi_uidiv, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
188188 ; SOFT-AEABI: [[R32:%[0-9]+]]:_(s32) = COPY %r0
189 ; SOFT-DEFAULT: BL $__udivsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
189 ; SOFT-DEFAULT: BL &__udivsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
190190 ; SOFT-DEFAULT: [[R32:%[0-9]+]]:_(s32) = COPY %r0
191191 ; SOFT: ADJCALLSTACKUP
192192 ; SOFT-NOT: G_UDIV
238238 ; SOFT: ADJCALLSTACKDOWN
239239 ; SOFT-DAG: %r0 = COPY [[X32]]
240240 ; SOFT-DAG: %r1 = COPY [[Y32]]
241 ; SOFT-AEABI: BL $__aeabi_idiv, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
241 ; SOFT-AEABI: BL &__aeabi_idiv, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
242242 ; SOFT-AEABI: [[R32:%[0-9]+]]:_(s32) = COPY %r0
243 ; SOFT-DEFAULT: BL $__divsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
243 ; SOFT-DEFAULT: BL &__divsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
244244 ; SOFT-DEFAULT: [[R32:%[0-9]+]]:_(s32) = COPY %r0
245245 ; SOFT: ADJCALLSTACKUP
246246 ; SOFT-NOT: G_SDIV
290290 ; SOFT: ADJCALLSTACKDOWN
291291 ; SOFT-DAG: %r0 = COPY [[X32]]
292292 ; SOFT-DAG: %r1 = COPY [[Y32]]
293 ; SOFT-AEABI: BL $__aeabi_uidiv, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
293 ; SOFT-AEABI: BL &__aeabi_uidiv, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
294294 ; SOFT-AEABI: [[R32:%[0-9]+]]:_(s32) = COPY %r0
295 ; SOFT-DEFAULT: BL $__udivsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
295 ; SOFT-DEFAULT: BL &__udivsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
296296 ; SOFT-DEFAULT: [[R32:%[0-9]+]]:_(s32) = COPY %r0
297297 ; SOFT: ADJCALLSTACKUP
298298 ; SOFT-NOT: G_UDIV
331331 ; SOFT: ADJCALLSTACKDOWN
332332 ; SOFT-DAG: %r0 = COPY [[X]]
333333 ; SOFT-DAG: %r1 = COPY [[Y]]
334 ; SOFT-AEABI: BL $__aeabi_idivmod, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0, implicit-def %r1
334 ; SOFT-AEABI: BL &__aeabi_idivmod, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0, implicit-def %r1
335335 ; SOFT-AEABI: [[R:%[0-9]+]]:_(s32) = COPY %r1
336 ; SOFT-DEFAULT: BL $__modsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
336 ; SOFT-DEFAULT: BL &__modsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
337337 ; SOFT-DEFAULT: [[R:%[0-9]+]]:_(s32) = COPY %r0
338338 ; SOFT: ADJCALLSTACKUP
339339 ; SOFT-NOT: G_SREM
369369 ; SOFT: ADJCALLSTACKDOWN
370370 ; SOFT-DAG: %r0 = COPY [[X]]
371371 ; SOFT-DAG: %r1 = COPY [[Y]]
372 ; SOFT-AEABI: BL $__aeabi_uidivmod, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0, implicit-def %r1
372 ; SOFT-AEABI: BL &__aeabi_uidivmod, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0, implicit-def %r1
373373 ; SOFT-AEABI: [[R:%[0-9]+]]:_(s32) = COPY %r1
374 ; SOFT-DEFAULT: BL $__umodsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
374 ; SOFT-DEFAULT: BL &__umodsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
375375 ; SOFT-DEFAULT: [[R:%[0-9]+]]:_(s32) = COPY %r0
376376 ; SOFT: ADJCALLSTACKUP
377377 ; SOFT-NOT: G_UREM
422422 ; SOFT: ADJCALLSTACKDOWN
423423 ; SOFT-DAG: %r0 = COPY [[X32]]
424424 ; SOFT-DAG: %r1 = COPY [[Y32]]
425 ; SOFT-AEABI: BL $__aeabi_idivmod, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
425 ; SOFT-AEABI: BL &__aeabi_idivmod, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
426426 ; SOFT-AEABI: [[R32:%[0-9]+]]:_(s32) = COPY %r1
427 ; SOFT-DEFAULT: BL $__modsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
427 ; SOFT-DEFAULT: BL &__modsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
428428 ; SOFT-DEFAULT: [[R32:%[0-9]+]]:_(s32) = COPY %r0
429429 ; SOFT: ADJCALLSTACKUP
430430 ; SOFT-NOT: G_SREM
476476 ; SOFT: ADJCALLSTACKDOWN
477477 ; SOFT-DAG: %r0 = COPY [[X32]]
478478 ; SOFT-DAG: %r1 = COPY [[Y32]]
479 ; SOFT-AEABI: BL $__aeabi_uidivmod, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
479 ; SOFT-AEABI: BL &__aeabi_uidivmod, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
480480 ; SOFT-AEABI: [[R32:%[0-9]+]]:_(s32) = COPY %r1
481 ; SOFT-DEFAULT: BL $__umodsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
481 ; SOFT-DEFAULT: BL &__umodsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
482482 ; SOFT-DEFAULT: [[R32:%[0-9]+]]:_(s32) = COPY %r0
483483 ; SOFT: ADJCALLSTACKUP
484484 ; SOFT-NOT: G_UREM
532532 ; SOFT: ADJCALLSTACKDOWN
533533 ; SOFT-DAG: %r0 = COPY [[X32]]
534534 ; SOFT-DAG: %r1 = COPY [[Y32]]
535 ; SOFT-AEABI: BL $__aeabi_idivmod, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
535 ; SOFT-AEABI: BL &__aeabi_idivmod, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
536536 ; SOFT-AEABI: [[R32:%[0-9]+]]:_(s32) = COPY %r1
537 ; SOFT-DEFAULT: BL $__modsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
537 ; SOFT-DEFAULT: BL &__modsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
538538 ; SOFT-DEFAULT: [[R32:%[0-9]+]]:_(s32) = COPY %r0
539539 ; SOFT: ADJCALLSTACKUP
540540 ; SOFT-NOT: G_SREM
586586 ; SOFT: ADJCALLSTACKDOWN
587587 ; SOFT-DAG: %r0 = COPY [[X32]]
588588 ; SOFT-DAG: %r1 = COPY [[Y32]]
589 ; SOFT-AEABI: BL $__aeabi_uidivmod, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
589 ; SOFT-AEABI: BL &__aeabi_uidivmod, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
590590 ; SOFT-AEABI: [[R32:%[0-9]+]]:_(s32) = COPY %r1
591 ; SOFT-DEFAULT: BL $__umodsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
591 ; SOFT-DEFAULT: BL &__umodsi3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
592592 ; SOFT-DEFAULT: [[R32:%[0-9]+]]:_(s32) = COPY %r0
593593 ; SOFT: ADJCALLSTACKUP
594594 ; SOFT-NOT: G_UREM
8383 ; SOFT-DAG: %r1 = COPY [[Y]]
8484 ; HARD-DAG: %s0 = COPY [[X]]
8585 ; HARD-DAG: %s1 = COPY [[Y]]
86 ; SOFT: BL $fmodf, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
87 ; HARD: BL $fmodf, {{.*}}, implicit %s0, implicit %s1, implicit-def %s0
86 ; SOFT: BL &fmodf, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
87 ; HARD: BL &fmodf, {{.*}}, implicit %s0, implicit %s1, implicit-def %s0
8888 ; SOFT: [[R:%[0-9]+]]:_(s32) = COPY %r0
8989 ; HARD: [[R:%[0-9]+]]:_(s32) = COPY %s0
9090 ; CHECK: ADJCALLSTACKUP
142142 ; SOFT-DAG: %r{{[2-3]}} = COPY [[Y1]]
143143 ; HARD-DAG: %d0 = COPY [[X]]
144144 ; HARD-DAG: %d1 = COPY [[Y]]
145 ; SOFT: BL $fmod, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0, implicit-def %r1
146 ; HARD: BL $fmod, {{.*}}, implicit %d0, implicit %d1, implicit-def %d0
145 ; SOFT: BL &fmod, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0, implicit-def %r1
146 ; HARD: BL &fmod, {{.*}}, implicit %d0, implicit %d1, implicit-def %d0
147147 ; CHECK: ADJCALLSTACKUP
148148 ; CHECK-NOT: G_FREM
149149 %6(s64) = G_FREM %4, %5
178178 ; SOFT-DAG: %r1 = COPY [[Y]]
179179 ; HARD-DAG: %s0 = COPY [[X]]
180180 ; HARD-DAG: %s1 = COPY [[Y]]
181 ; SOFT: BL $powf, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
182 ; HARD: BL $powf, {{.*}}, implicit %s0, implicit %s1, implicit-def %s0
181 ; SOFT: BL &powf, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
182 ; HARD: BL &powf, {{.*}}, implicit %s0, implicit %s1, implicit-def %s0
183183 ; SOFT: [[R:%[0-9]+]]:_(s32) = COPY %r0
184184 ; HARD: [[R:%[0-9]+]]:_(s32) = COPY %s0
185185 ; CHECK: ADJCALLSTACKUP
237237 ; SOFT-DAG: %r{{[2-3]}} = COPY [[Y1]]
238238 ; HARD-DAG: %d0 = COPY [[X]]
239239 ; HARD-DAG: %d1 = COPY [[Y]]
240 ; SOFT: BL $pow, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0, implicit-def %r1
241 ; HARD: BL $pow, {{.*}}, implicit %d0, implicit %d1, implicit-def %d0
240 ; SOFT: BL &pow, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0, implicit-def %r1
241 ; HARD: BL &pow, {{.*}}, implicit %d0, implicit %d1, implicit-def %d0
242242 ; CHECK: ADJCALLSTACKUP
243243 ; CHECK-NOT: G_FPOW
244244 %6(s64) = G_FPOW %4, %5
272272 ; SOFT: ADJCALLSTACKDOWN
273273 ; SOFT-DAG: %r0 = COPY [[X]]
274274 ; SOFT-DAG: %r1 = COPY [[Y]]
275 ; SOFT-AEABI: BL $__aeabi_fadd, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
276 ; SOFT-DEFAULT: BL $__addsf3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
275 ; SOFT-AEABI: BL &__aeabi_fadd, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
276 ; SOFT-DEFAULT: BL &__addsf3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
277277 ; SOFT: [[R:%[0-9]+]]:_(s32) = COPY %r0
278278 ; SOFT: ADJCALLSTACKUP
279279 ; SOFT-NOT: G_FADD
323323 ; SOFT-DAG: %r{{[0-1]}} = COPY [[X1]]
324324 ; SOFT-DAG: %r{{[2-3]}} = COPY [[Y0]]
325325 ; SOFT-DAG: %r{{[2-3]}} = COPY [[Y1]]
326 ; SOFT-AEABI: BL $__aeabi_dadd, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0, implicit-def %r1
327 ; SOFT-DEFAULT: BL $__adddf3, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0, implicit-def %r1
326 ; SOFT-AEABI: BL &__aeabi_dadd, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0, implicit-def %r1
327 ; SOFT-DEFAULT: BL &__adddf3, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0, implicit-def %r1
328328 ; SOFT: ADJCALLSTACKUP
329329 ; SOFT-NOT: G_FADD
330330 %6(s64) = G_FADD %4, %5
359359 ; SOFT: ADJCALLSTACKDOWN
360360 ; SOFT-DAG: %r0 = COPY [[X]]
361361 ; SOFT-DAG: %r1 = COPY [[Y]]
362 ; SOFT-AEABI: BL $__aeabi_fsub, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
363 ; SOFT-DEFAULT: BL $__subsf3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
362 ; SOFT-AEABI: BL &__aeabi_fsub, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
363 ; SOFT-DEFAULT: BL &__subsf3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
364364 ; SOFT: [[R:%[0-9]+]]:_(s32) = COPY %r0
365365 ; SOFT: ADJCALLSTACKUP
366366 ; SOFT-NOT: G_FSUB
410410 ; SOFT-DAG: %r{{[0-1]}} = COPY [[X1]]
411411 ; SOFT-DAG: %r{{[2-3]}} = COPY [[Y0]]
412412 ; SOFT-DAG: %r{{[2-3]}} = COPY [[Y1]]
413 ; SOFT-AEABI: BL $__aeabi_dsub, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0, implicit-def %r1
414 ; SOFT-DEFAULT: BL $__subdf3, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0, implicit-def %r1
413 ; SOFT-AEABI: BL &__aeabi_dsub, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0, implicit-def %r1
414 ; SOFT-DEFAULT: BL &__subdf3, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0, implicit-def %r1
415415 ; SOFT: ADJCALLSTACKUP
416416 ; SOFT-NOT: G_FSUB
417417 %6(s64) = G_FSUB %4, %5
446446 ; SOFT: ADJCALLSTACKDOWN
447447 ; SOFT-DAG: %r0 = COPY [[X]]
448448 ; SOFT-DAG: %r1 = COPY [[Y]]
449 ; SOFT-AEABI: BL $__aeabi_fmul, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
450 ; SOFT-DEFAULT: BL $__mulsf3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
449 ; SOFT-AEABI: BL &__aeabi_fmul, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
450 ; SOFT-DEFAULT: BL &__mulsf3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
451451 ; SOFT: [[R:%[0-9]+]]:_(s32) = COPY %r0
452452 ; SOFT: ADJCALLSTACKUP
453453 ; SOFT-NOT: G_FMUL
497497 ; SOFT-DAG: %r{{[0-1]}} = COPY [[X1]]
498498 ; SOFT-DAG: %r{{[2-3]}} = COPY [[Y0]]
499499 ; SOFT-DAG: %r{{[2-3]}} = COPY [[Y1]]
500 ; SOFT-AEABI: BL $__aeabi_dmul, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0, implicit-def %r1
501 ; SOFT-DEFAULT: BL $__muldf3, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0, implicit-def %r1
500 ; SOFT-AEABI: BL &__aeabi_dmul, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0, implicit-def %r1
501 ; SOFT-DEFAULT: BL &__muldf3, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0, implicit-def %r1
502502 ; SOFT: ADJCALLSTACKUP
503503 ; SOFT-NOT: G_FMUL
504504 %6(s64) = G_FMUL %4, %5
533533 ; SOFT: ADJCALLSTACKDOWN
534534 ; SOFT-DAG: %r0 = COPY [[X]]
535535 ; SOFT-DAG: %r1 = COPY [[Y]]
536 ; SOFT-AEABI: BL $__aeabi_fdiv, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
537 ; SOFT-DEFAULT: BL $__divsf3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
536 ; SOFT-AEABI: BL &__aeabi_fdiv, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
537 ; SOFT-DEFAULT: BL &__divsf3, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
538538 ; SOFT: [[R:%[0-9]+]]:_(s32) = COPY %r0
539539 ; SOFT: ADJCALLSTACKUP
540540 ; SOFT-NOT: G_FDIV
584584 ; SOFT-DAG: %r{{[0-1]}} = COPY [[X1]]
585585 ; SOFT-DAG: %r{{[2-3]}} = COPY [[Y0]]
586586 ; SOFT-DAG: %r{{[2-3]}} = COPY [[Y1]]
587 ; SOFT-AEABI: BL $__aeabi_ddiv, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0, implicit-def %r1
588 ; SOFT-DEFAULT: BL $__divdf3, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0, implicit-def %r1
587 ; SOFT-AEABI: BL &__aeabi_ddiv, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0, implicit-def %r1
588 ; SOFT-DEFAULT: BL &__divdf3, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0, implicit-def %r1
589589 ; SOFT: ADJCALLSTACKUP
590590 ; SOFT-NOT: G_FDIV
591591 %6(s64) = G_FDIV %4, %5
697697 ; SOFT: ADJCALLSTACKDOWN
698698 ; SOFT-DAG: %r0 = COPY [[X]]
699699 ; SOFT-DAG: %r1 = COPY [[Y]]
700 ; SOFT-AEABI: BL $__aeabi_fcmpeq, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
701 ; SOFT-DEFAULT: BL $__eqsf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
700 ; SOFT-AEABI: BL &__aeabi_fcmpeq, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
701 ; SOFT-DEFAULT: BL &__eqsf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
702702 ; SOFT: [[RET:%[0-9]+]]:_(s32) = COPY %r0
703703 ; SOFT: ADJCALLSTACKUP
704704 ; For aeabi, we just need to truncate the result. The combiner changes the
743743 ; SOFT: ADJCALLSTACKDOWN
744744 ; SOFT-DAG: %r0 = COPY [[X]]
745745 ; SOFT-DAG: %r1 = COPY [[Y]]
746 ; SOFT-AEABI: BL $__aeabi_fcmpgt, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
747 ; SOFT-DEFAULT: BL $__gtsf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
746 ; SOFT-AEABI: BL &__aeabi_fcmpgt, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
747 ; SOFT-DEFAULT: BL &__gtsf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
748748 ; SOFT: [[RET:%[0-9]+]]:_(s32) = COPY %r0
749749 ; SOFT: ADJCALLSTACKUP
750750 ; For aeabi, we just need to truncate the result. The combiner changes the
789789 ; SOFT: ADJCALLSTACKDOWN
790790 ; SOFT-DAG: %r0 = COPY [[X]]
791791 ; SOFT-DAG: %r1 = COPY [[Y]]
792 ; SOFT-AEABI: BL $__aeabi_fcmpge, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
793 ; SOFT-DEFAULT: BL $__gesf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
792 ; SOFT-AEABI: BL &__aeabi_fcmpge, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
793 ; SOFT-DEFAULT: BL &__gesf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
794794 ; SOFT: [[RET:%[0-9]+]]:_(s32) = COPY %r0
795795 ; SOFT: ADJCALLSTACKUP
796796 ; For aeabi, we just need to truncate the result. The combiner changes the
835835 ; SOFT: ADJCALLSTACKDOWN
836836 ; SOFT-DAG: %r0 = COPY [[X]]
837837 ; SOFT-DAG: %r1 = COPY [[Y]]
838 ; SOFT-AEABI: BL $__aeabi_fcmplt, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
839 ; SOFT-DEFAULT: BL $__ltsf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
838 ; SOFT-AEABI: BL &__aeabi_fcmplt, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
839 ; SOFT-DEFAULT: BL &__ltsf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
840840 ; SOFT: [[RET:%[0-9]+]]:_(s32) = COPY %r0
841841 ; SOFT: ADJCALLSTACKUP
842842 ; For aeabi, we just need to truncate the result. The combiner changes the
881881 ; SOFT: ADJCALLSTACKDOWN
882882 ; SOFT-DAG: %r0 = COPY [[X]]
883883 ; SOFT-DAG: %r1 = COPY [[Y]]
884 ; SOFT-AEABI: BL $__aeabi_fcmple, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
885 ; SOFT-DEFAULT: BL $__lesf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
884 ; SOFT-AEABI: BL &__aeabi_fcmple, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
885 ; SOFT-DEFAULT: BL &__lesf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
886886 ; SOFT: [[RET:%[0-9]+]]:_(s32) = COPY %r0
887887 ; SOFT: ADJCALLSTACKUP
888888 ; For aeabi, we just need to truncate the result. The combiner changes the
926926 ; SOFT: ADJCALLSTACKDOWN
927927 ; SOFT-DAG: %r0 = COPY [[X]]
928928 ; SOFT-DAG: %r1 = COPY [[Y]]
929 ; SOFT-AEABI: BL $__aeabi_fcmpun, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
930 ; SOFT-DEFAULT: BL $__unordsf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
929 ; SOFT-AEABI: BL &__aeabi_fcmpun, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
930 ; SOFT-DEFAULT: BL &__unordsf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
931931 ; SOFT: [[RET:%[0-9]+]]:_(s32) = COPY %r0
932932 ; SOFT: ADJCALLSTACKUP
933933 ; SOFT: [[ZERO:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
966966 ; SOFT: ADJCALLSTACKDOWN
967967 ; SOFT-DAG: %r0 = COPY [[X]]
968968 ; SOFT-DAG: %r1 = COPY [[Y]]
969 ; SOFT-AEABI: BL $__aeabi_fcmple, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
970 ; SOFT-DEFAULT: BL $__lesf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
969 ; SOFT-AEABI: BL &__aeabi_fcmple, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
970 ; SOFT-DEFAULT: BL &__lesf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
971971 ; SOFT: [[RET:%[0-9]+]]:_(s32) = COPY %r0
972972 ; SOFT: ADJCALLSTACKUP
973973 ; SOFT: [[ZERO:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
10071007 ; SOFT: ADJCALLSTACKDOWN
10081008 ; SOFT-DAG: %r0 = COPY [[X]]
10091009 ; SOFT-DAG: %r1 = COPY [[Y]]
1010 ; SOFT-AEABI: BL $__aeabi_fcmplt, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
1011 ; SOFT-DEFAULT: BL $__ltsf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
1010 ; SOFT-AEABI: BL &__aeabi_fcmplt, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
1011 ; SOFT-DEFAULT: BL &__ltsf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
10121012 ; SOFT: [[RET:%[0-9]+]]:_(s32) = COPY %r0
10131013 ; SOFT: ADJCALLSTACKUP
10141014 ; SOFT: [[ZERO:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
10481048 ; SOFT: ADJCALLSTACKDOWN
10491049 ; SOFT-DAG: %r0 = COPY [[X]]
10501050 ; SOFT-DAG: %r1 = COPY [[Y]]
1051 ; SOFT-AEABI: BL $__aeabi_fcmpge, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
1052 ; SOFT-DEFAULT: BL $__gesf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
1051 ; SOFT-AEABI: BL &__aeabi_fcmpge, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
1052 ; SOFT-DEFAULT: BL &__gesf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
10531053 ; SOFT: [[RET:%[0-9]+]]:_(s32) = COPY %r0
10541054 ; SOFT: ADJCALLSTACKUP
10551055 ; SOFT: [[ZERO:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
10891089 ; SOFT: ADJCALLSTACKDOWN
10901090 ; SOFT-DAG: %r0 = COPY [[X]]
10911091 ; SOFT-DAG: %r1 = COPY [[Y]]
1092 ; SOFT-AEABI: BL $__aeabi_fcmpgt, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
1093 ; SOFT-DEFAULT: BL $__gtsf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
1092 ; SOFT-AEABI: BL &__aeabi_fcmpgt, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
1093 ; SOFT-DEFAULT: BL &__gtsf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
10941094 ; SOFT: [[RET:%[0-9]+]]:_(s32) = COPY %r0
10951095 ; SOFT: ADJCALLSTACKUP
10961096 ; SOFT: [[ZERO:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
11301130 ; SOFT: ADJCALLSTACKDOWN
11311131 ; SOFT-DAG: %r0 = COPY [[X]]
11321132 ; SOFT-DAG: %r1 = COPY [[Y]]
1133 ; SOFT-AEABI: BL $__aeabi_fcmpeq, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
1134 ; SOFT-DEFAULT: BL $__nesf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
1133 ; SOFT-AEABI: BL &__aeabi_fcmpeq, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
1134 ; SOFT-DEFAULT: BL &__nesf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
11351135 ; SOFT: [[RET:%[0-9]+]]:_(s32) = COPY %r0
11361136 ; SOFT: ADJCALLSTACKUP
11371137 ; SOFT: [[ZERO:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
11721172 ; SOFT: ADJCALLSTACKDOWN
11731173 ; SOFT-DAG: %r0 = COPY [[X]]
11741174 ; SOFT-DAG: %r1 = COPY [[Y]]
1175 ; SOFT-AEABI: BL $__aeabi_fcmpun, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
1176 ; SOFT-DEFAULT: BL $__unordsf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
1175 ; SOFT-AEABI: BL &__aeabi_fcmpun, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
1176 ; SOFT-DEFAULT: BL &__unordsf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
11771177 ; SOFT: [[RET:%[0-9]+]]:_(s32) = COPY %r0
11781178 ; SOFT: ADJCALLSTACKUP
11791179 ; For aeabi, we just need to truncate the result. The combiner changes the
12181218 ; SOFT: ADJCALLSTACKDOWN
12191219 ; SOFT-DAG: %r0 = COPY [[X]]
12201220 ; SOFT-DAG: %r1 = COPY [[Y]]
1221 ; SOFT-AEABI: BL $__aeabi_fcmpgt, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
1222 ; SOFT-DEFAULT: BL $__gtsf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
1221 ; SOFT-AEABI: BL &__aeabi_fcmpgt, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
1222 ; SOFT-DEFAULT: BL &__gtsf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
12231223 ; SOFT: [[RET1:%[0-9]+]]:_(s32) = COPY %r0
12241224 ; SOFT: ADJCALLSTACKUP
12251225 ; SOFT-DEFAULT: [[ZERO:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
12281228 ; SOFT: ADJCALLSTACKDOWN
12291229 ; SOFT-DAG: %r0 = COPY [[X]]
12301230 ; SOFT-DAG: %r1 = COPY [[Y]]
1231 ; SOFT-AEABI: BL $__aeabi_fcmplt, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
1232 ; SOFT-DEFAULT: BL $__ltsf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
1231 ; SOFT-AEABI: BL &__aeabi_fcmplt, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
1232 ; SOFT-DEFAULT: BL &__ltsf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
12331233 ; SOFT: [[RET2:%[0-9]+]]:_(s32) = COPY %r0
12341234 ; SOFT: ADJCALLSTACKUP
12351235 ; SOFT-DEFAULT: [[ZERO:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
12781278 ; SOFT: ADJCALLSTACKDOWN
12791279 ; SOFT-DAG: %r0 = COPY [[X]]
12801280 ; SOFT-DAG: %r1 = COPY [[Y]]
1281 ; SOFT-AEABI: BL $__aeabi_fcmpeq, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
1282 ; SOFT-DEFAULT: BL $__eqsf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
1281 ; SOFT-AEABI: BL &__aeabi_fcmpeq, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
1282 ; SOFT-DEFAULT: BL &__eqsf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
12831283 ; SOFT: [[RET1:%[0-9]+]]:_(s32) = COPY %r0
12841284 ; SOFT: ADJCALLSTACKUP
12851285 ; SOFT-DEFAULT: [[ZERO:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
12881288 ; SOFT: ADJCALLSTACKDOWN
12891289 ; SOFT-DAG: %r0 = COPY [[X]]
12901290 ; SOFT-DAG: %r1 = COPY [[Y]]
1291 ; SOFT-AEABI: BL $__aeabi_fcmpun, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
1292 ; SOFT-DEFAULT: BL $__unordsf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
1291 ; SOFT-AEABI: BL &__aeabi_fcmpun, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
1292 ; SOFT-DEFAULT: BL &__unordsf2, {{.*}}, implicit %r0, implicit %r1, implicit-def %r0
12931293 ; SOFT: [[RET2:%[0-9]+]]:_(s32) = COPY %r0
12941294 ; SOFT: ADJCALLSTACKUP
12951295 ; SOFT-DEFAULT: [[ZERO:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
14511451 ; SOFT-DAG: %r1 = COPY [[X1]]
14521452 ; SOFT-DAG: %r2 = COPY [[Y0]]
14531453 ; SOFT-DAG: %r3 = COPY [[Y1]]
1454 ; SOFT-AEABI: BL $__aeabi_dcmpeq, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
1455 ; SOFT-DEFAULT: BL $__eqdf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
1454 ; SOFT-AEABI: BL &__aeabi_dcmpeq, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
1455 ; SOFT-DEFAULT: BL &__eqdf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
14561456 ; SOFT: [[RET:%[0-9]+]]:_(s32) = COPY %r0
14571457 ; SOFT: ADJCALLSTACKUP
14581458 ; For aeabi, we just need to truncate the result. The combiner changes the
15111511 ; SOFT-DAG: %r1 = COPY [[X1]]
15121512 ; SOFT-DAG: %r2 = COPY [[Y0]]
15131513 ; SOFT-DAG: %r3 = COPY [[Y1]]
1514 ; SOFT-AEABI: BL $__aeabi_dcmpgt, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
1515 ; SOFT-DEFAULT: BL $__gtdf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
1514 ; SOFT-AEABI: BL &__aeabi_dcmpgt, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
1515 ; SOFT-DEFAULT: BL &__gtdf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
15161516 ; SOFT: [[RET:%[0-9]+]]:_(s32) = COPY %r0
15171517 ; SOFT: ADJCALLSTACKUP
15181518 ; For aeabi, we just need to truncate the result. The combiner changes the
15711571 ; SOFT-DAG: %r1 = COPY [[X1]]
15721572 ; SOFT-DAG: %r2 = COPY [[Y0]]
15731573 ; SOFT-DAG: %r3 = COPY [[Y1]]
1574 ; SOFT-AEABI: BL $__aeabi_dcmpge, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
1575 ; SOFT-DEFAULT: BL $__gedf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
1574 ; SOFT-AEABI: BL &__aeabi_dcmpge, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
1575 ; SOFT-DEFAULT: BL &__gedf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
15761576 ; SOFT: [[RET:%[0-9]+]]:_(s32) = COPY %r0
15771577 ; SOFT: ADJCALLSTACKUP
15781578 ; For aeabi, we just need to truncate the result. The combiner changes the
16311631 ; SOFT-DAG: %r1 = COPY [[X1]]
16321632 ; SOFT-DAG: %r2 = COPY [[Y0]]
16331633 ; SOFT-DAG: %r3 = COPY [[Y1]]
1634 ; SOFT-AEABI: BL $__aeabi_dcmplt, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
1635 ; SOFT-DEFAULT: BL $__ltdf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
1634 ; SOFT-AEABI: BL &__aeabi_dcmplt, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
1635 ; SOFT-DEFAULT: BL &__ltdf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
16361636 ; SOFT: [[RET:%[0-9]+]]:_(s32) = COPY %r0
16371637 ; SOFT: ADJCALLSTACKUP
16381638 ; For aeabi, we just need to truncate the result. The combiner changes the
16911691 ; SOFT-DAG: %r1 = COPY [[X1]]
16921692 ; SOFT-DAG: %r2 = COPY [[Y0]]
16931693 ; SOFT-DAG: %r3 = COPY [[Y1]]
1694 ; SOFT-AEABI: BL $__aeabi_dcmple, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
1695 ; SOFT-DEFAULT: BL $__ledf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
1694 ; SOFT-AEABI: BL &__aeabi_dcmple, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
1695 ; SOFT-DEFAULT: BL &__ledf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
16961696 ; SOFT: [[RET:%[0-9]+]]:_(s32) = COPY %r0
16971697 ; SOFT: ADJCALLSTACKUP
16981698 ; For aeabi, we just need to truncate the result. The combiner changes the
17501750 ; SOFT-DAG: %r1 = COPY [[X1]]
17511751 ; SOFT-DAG: %r2 = COPY [[Y0]]
17521752 ; SOFT-DAG: %r3 = COPY [[Y1]]
1753 ; SOFT-AEABI: BL $__aeabi_dcmpun, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
1754 ; SOFT-DEFAULT: BL $__unorddf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
1753 ; SOFT-AEABI: BL &__aeabi_dcmpun, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
1754 ; SOFT-DEFAULT: BL &__unorddf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
17551755 ; SOFT: [[RET:%[0-9]+]]:_(s32) = COPY %r0
17561756 ; SOFT: ADJCALLSTACKUP
17571757 ; SOFT: [[ZERO:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
18041804 ; SOFT-DAG: %r1 = COPY [[X1]]
18051805 ; SOFT-DAG: %r2 = COPY [[Y0]]
18061806 ; SOFT-DAG: %r3 = COPY [[Y1]]
1807 ; SOFT-AEABI: BL $__aeabi_dcmple, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
1808 ; SOFT-DEFAULT: BL $__ledf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
1807 ; SOFT-AEABI: BL &__aeabi_dcmple, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
1808 ; SOFT-DEFAULT: BL &__ledf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
18091809 ; SOFT: [[RET:%[0-9]+]]:_(s32) = COPY %r0
18101810 ; SOFT: ADJCALLSTACKUP
18111811 ; SOFT: [[ZERO:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
18591859 ; SOFT-DAG: %r1 = COPY [[X1]]
18601860 ; SOFT-DAG: %r2 = COPY [[Y0]]
18611861 ; SOFT-DAG: %r3 = COPY [[Y1]]
1862 ; SOFT-AEABI: BL $__aeabi_dcmplt, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
1863 ; SOFT-DEFAULT: BL $__ltdf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
1862 ; SOFT-AEABI: BL &__aeabi_dcmplt, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
1863 ; SOFT-DEFAULT: BL &__ltdf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
18641864 ; SOFT: [[RET:%[0-9]+]]:_(s32) = COPY %r0
18651865 ; SOFT: ADJCALLSTACKUP
18661866 ; SOFT: [[ZERO:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
19141914 ; SOFT-DAG: %r1 = COPY [[X1]]
19151915 ; SOFT-DAG: %r2 = COPY [[Y0]]
19161916 ; SOFT-DAG: %r3 = COPY [[Y1]]
1917 ; SOFT-AEABI: BL $__aeabi_dcmpge, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
1918 ; SOFT-DEFAULT: BL $__gedf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
1917 ; SOFT-AEABI: BL &__aeabi_dcmpge, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
1918 ; SOFT-DEFAULT: BL &__gedf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
19191919 ; SOFT: [[RET:%[0-9]+]]:_(s32) = COPY %r0
19201920 ; SOFT: ADJCALLSTACKUP
19211921 ; SOFT: [[ZERO:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
19691969 ; SOFT-DAG: %r1 = COPY [[X1]]
19701970 ; SOFT-DAG: %r2 = COPY [[Y0]]
19711971 ; SOFT-DAG: %r3 = COPY [[Y1]]
1972 ; SOFT-AEABI: BL $__aeabi_dcmpgt, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
1973 ; SOFT-DEFAULT: BL $__gtdf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
1972 ; SOFT-AEABI: BL &__aeabi_dcmpgt, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
1973 ; SOFT-DEFAULT: BL &__gtdf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
19741974 ; SOFT: [[RET:%[0-9]+]]:_(s32) = COPY %r0
19751975 ; SOFT: ADJCALLSTACKUP
19761976 ; SOFT: [[ZERO:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
20242024 ; SOFT-DAG: %r1 = COPY [[X1]]
20252025 ; SOFT-DAG: %r2 = COPY [[Y0]]
20262026 ; SOFT-DAG: %r3 = COPY [[Y1]]
2027 ; SOFT-AEABI: BL $__aeabi_dcmpeq, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
2028 ; SOFT-DEFAULT: BL $__nedf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
2027 ; SOFT-AEABI: BL &__aeabi_dcmpeq, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
2028 ; SOFT-DEFAULT: BL &__nedf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
20292029 ; SOFT: [[RET:%[0-9]+]]:_(s32) = COPY %r0
20302030 ; SOFT: ADJCALLSTACKUP
20312031 ; SOFT: [[ZERO:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
20802080 ; SOFT-DAG: %r1 = COPY [[X1]]
20812081 ; SOFT-DAG: %r2 = COPY [[Y0]]
20822082 ; SOFT-DAG: %r3 = COPY [[Y1]]
2083 ; SOFT-AEABI: BL $__aeabi_dcmpun, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
2084 ; SOFT-DEFAULT: BL $__unorddf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
2083 ; SOFT-AEABI: BL &__aeabi_dcmpun, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
2084 ; SOFT-DEFAULT: BL &__unorddf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
20852085 ; SOFT: [[RET:%[0-9]+]]:_(s32) = COPY %r0
20862086 ; SOFT: ADJCALLSTACKUP
20872087 ; For aeabi, we just need to truncate the result. The combiner changes the
21402140 ; SOFT-DAG: %r1 = COPY [[X1]]
21412141 ; SOFT-DAG: %r2 = COPY [[Y0]]
21422142 ; SOFT-DAG: %r3 = COPY [[Y1]]
2143 ; SOFT-AEABI: BL $__aeabi_dcmpgt, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
2144 ; SOFT-DEFAULT: BL $__gtdf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
2143 ; SOFT-AEABI: BL &__aeabi_dcmpgt, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
2144 ; SOFT-DEFAULT: BL &__gtdf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
21452145 ; SOFT: [[RET1:%[0-9]+]]:_(s32) = COPY %r0
21462146 ; SOFT: ADJCALLSTACKUP
21472147 ; SOFT-DEFAULT: [[ZERO:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
21522152 ; SOFT-DAG: %r1 = COPY [[X1]]
21532153 ; SOFT-DAG: %r2 = COPY [[Y0]]
21542154 ; SOFT-DAG: %r3 = COPY [[Y1]]
2155 ; SOFT-AEABI: BL $__aeabi_dcmplt, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
2156 ; SOFT-DEFAULT: BL $__ltdf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
2155 ; SOFT-AEABI: BL &__aeabi_dcmplt, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
2156 ; SOFT-DEFAULT: BL &__ltdf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
21572157 ; SOFT: [[RET2:%[0-9]+]]:_(s32) = COPY %r0
21582158 ; SOFT: ADJCALLSTACKUP
21592159 ; SOFT-DEFAULT: [[ZERO:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
22162216 ; SOFT-DAG: %r1 = COPY [[X1]]
22172217 ; SOFT-DAG: %r2 = COPY [[Y0]]
22182218 ; SOFT-DAG: %r3 = COPY [[Y1]]
2219 ; SOFT-AEABI: BL $__aeabi_dcmpeq, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
2220 ; SOFT-DEFAULT: BL $__eqdf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
2219 ; SOFT-AEABI: BL &__aeabi_dcmpeq, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
2220 ; SOFT-DEFAULT: BL &__eqdf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
22212221 ; SOFT: [[RET1:%[0-9]+]]:_(s32) = COPY %r0
22222222 ; SOFT: ADJCALLSTACKUP
22232223 ; SOFT-DEFAULT: [[ZERO:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
22282228 ; SOFT-DAG: %r1 = COPY [[X1]]
22292229 ; SOFT-DAG: %r2 = COPY [[Y0]]
22302230 ; SOFT-DAG: %r3 = COPY [[Y1]]
2231 ; SOFT-AEABI: BL $__aeabi_dcmpun, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
2232 ; SOFT-DEFAULT: BL $__unorddf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
2231 ; SOFT-AEABI: BL &__aeabi_dcmpun, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
2232 ; SOFT-DEFAULT: BL &__unorddf2, {{.*}}, implicit %r0, implicit %r1, implicit %r2, implicit %r3, implicit-def %r0
22332233 ; SOFT: [[RET2:%[0-9]+]]:_(s32) = COPY %r0
22342234 ; SOFT: ADJCALLSTACKUP
22352235 ; SOFT-DEFAULT: [[ZERO:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
88 ret void
99 }
1010
11 ; CHECK: tBL 14, %noreg, $__chkstk, implicit-def %lr, implicit %sp, implicit killed %r4, implicit-def %r4, implicit-def dead %r12, implicit-def dead %cpsr
11 ; CHECK: tBL 14, %noreg, &__chkstk, implicit-def %lr, implicit %sp, implicit killed %r4, implicit-def %r4, implicit-def dead %r12, implicit-def dead %cpsr
1212
1515 bb.0:
1616 ; CHECK: STRXui %xzr, %stack.0, 0 :: (store 8 into %stack.0)
1717 undef %0.sub_32 = COPY %wzr
18 INLINEASM $nop, 1, 12, implicit-def dead %x0, 12, implicit-def dead %x1, 12, implicit-def dead %x2, 12, implicit-def dead %x3, 12, implicit-def dead %x4, 12, implicit-def dead %x5, 12, implicit-def dead %x6, 12, implicit-def dead %x7, 12, implicit-def dead %x8, 12, implicit-def dead %x9, 12, implicit-def dead %x10, 12, implicit-def dead %x11, 12, implicit-def dead %x12, 12, implicit-def dead %x13, 12, implicit-def dead %x14, 12, implicit-def dead %x15, 12, implicit-def dead %x16, 12, implicit-def dead %x17, 12, implicit-def dead %x18, 12, implicit-def dead %x19, 12, implicit-def dead %x20, 12, implicit-def dead %x21, 12, implicit-def dead %x22, 12, implicit-def dead %x23, 12, implicit-def dead %x24, 12, implicit-def dead %x25, 12, implicit-def dead %x26, 12, implicit-def dead %x27, 12, implicit-def dead %x28, 12, implicit-def dead %fp, 12, implicit-def dead %lr, 12, implicit-def %sp
18 INLINEASM &nop, 1, 12, implicit-def dead %x0, 12, implicit-def dead %x1, 12, implicit-def dead %x2, 12, implicit-def dead %x3, 12, implicit-def dead %x4, 12, implicit-def dead %x5, 12, implicit-def dead %x6, 12, implicit-def dead %x7, 12, implicit-def dead %x8, 12, implicit-def dead %x9, 12, implicit-def dead %x10, 12, implicit-def dead %x11, 12, implicit-def dead %x12, 12, implicit-def dead %x13, 12, implicit-def dead %x14, 12, implicit-def dead %x15, 12, implicit-def dead %x16, 12, implicit-def dead %x17, 12, implicit-def dead %x18, 12, implicit-def dead %x19, 12, implicit-def dead %x20, 12, implicit-def dead %x21, 12, implicit-def dead %x22, 12, implicit-def dead %x23, 12, implicit-def dead %x24, 12, implicit-def dead %x25, 12, implicit-def dead %x26, 12, implicit-def dead %x27, 12, implicit-def dead %x28, 12, implicit-def dead %fp, 12, implicit-def dead %lr, 12, implicit-def %sp
1919 %x0 = COPY %0
2020 RET_ReallyLR implicit %x0
2121 ...
2929 bb.0:
3030 ; CHECK: STRXui %xzr, %stack.0, 0 :: (store 8 into %stack.0)
3131 undef %0.sub_32 = COPY %wzr
32 INLINEASM $nop, 1, 12, implicit-def dead %x0, 12, implicit-def dead %x1, 12, implicit-def dead %x2, 12, implicit-def dead %x3, 12, implicit-def dead %x4, 12, implicit-def dead %x5, 12, implicit-def dead %x6, 12, implicit-def dead %x7, 12, implicit-def dead %x8, 12, implicit-def dead %x9, 12, implicit-def dead %x10, 12, implicit-def dead %x11, 12, implicit-def dead %x12, 12, implicit-def dead %x13, 12, implicit-def dead %x14, 12, implicit-def dead %x15, 12, implicit-def dead %x16, 12, implicit-def dead %x17, 12, implicit-def dead %x18, 12, implicit-def dead %x19, 12, implicit-def dead %x20, 12, implicit-def dead %x21, 12, implicit-def dead %x22, 12, implicit-def dead %x23, 12, implicit-def dead %x24, 12, implicit-def dead %x25, 12, implicit-def dead %x26, 12, implicit-def dead %x27, 12, implicit-def dead %x28, 12, implicit-def dead %fp, 12, implicit-def dead %lr, 12, implicit-def %sp
32 INLINEASM &nop, 1, 12, implicit-def dead %x0, 12, implicit-def dead %x1, 12, implicit-def dead %x2, 12, implicit-def dead %x3, 12, implicit-def dead %x4, 12, implicit-def dead %x5, 12, implicit-def dead %x6, 12, implicit-def dead %x7, 12, implicit-def dead %x8, 12, implicit-def dead %x9, 12, implicit-def dead %x10, 12, implicit-def dead %x11, 12, implicit-def dead %x12, 12, implicit-def dead %x13, 12, implicit-def dead %x14, 12, implicit-def dead %x15, 12, implicit-def dead %x16, 12, implicit-def dead %x17, 12, implicit-def dead %x18, 12, implicit-def dead %x19, 12, implicit-def dead %x20, 12, implicit-def dead %x21, 12, implicit-def dead %x22, 12, implicit-def dead %x23, 12, implicit-def dead %x24, 12, implicit-def dead %x25, 12, implicit-def dead %x26, 12, implicit-def dead %x27, 12, implicit-def dead %x28, 12, implicit-def dead %fp, 12, implicit-def dead %lr, 12, implicit-def %sp
3333 %x0 = ADDXri %0, 1, 0
3434 RET_ReallyLR implicit %x0
3535 ...
4343 bb.0:
4444 ; CHECK: STRXui %xzr, %stack.0, 0 :: (store 8 into %stack.0)
4545 undef %0.ssub = COPY %wzr
46 INLINEASM $nop, 1, 12, implicit-def dead %d0, 12, implicit-def dead %d1, 12, implicit-def dead %d2, 12, implicit-def dead %d3, 12, implicit-def dead %d4, 12, implicit-def dead %d5, 12, implicit-def dead %d6, 12, implicit-def dead %d7, 12, implicit-def dead %d8, 12, implicit-def dead %d9, 12, implicit-def dead %d10, 12, implicit-def dead %d11, 12, implicit-def dead %d12, 12, implicit-def dead %d13, 12, implicit-def dead %d14, 12, implicit-def dead %d15, 12, implicit-def dead %d16, 12, implicit-def dead %d17, 12, implicit-def dead %d18, 12, implicit-def dead %d19, 12, implicit-def dead %d20, 12, implicit-def dead %d21, 12, implicit-def dead %d22, 12, implicit-def dead %d23, 12, implicit-def dead %d24, 12, implicit-def dead %d25, 12, implicit-def dead %d26, 12, implicit-def dead %d27, 12, implicit-def dead %d28, 12, implicit-def dead %d29, 12, implicit-def dead %d30, 12, implicit-def %d31
46 INLINEASM &nop, 1, 12, implicit-def dead %d0, 12, implicit-def dead %d1, 12, implicit-def dead %d2, 12, implicit-def dead %d3, 12, implicit-def dead %d4, 12, implicit-def dead %d5, 12, implicit-def dead %d6, 12, implicit-def dead %d7, 12, implicit-def dead %d8, 12, implicit-def dead %d9, 12, implicit-def dead %d10, 12, implicit-def dead %d11, 12, implicit-def dead %d12, 12, implicit-def dead %d13, 12, implicit-def dead %d14, 12, implicit-def dead %d15, 12, implicit-def dead %d16, 12, implicit-def dead %d17, 12, implicit-def dead %d18, 12, implicit-def dead %d19, 12, implicit-def dead %d20, 12, implicit-def dead %d21, 12, implicit-def dead %d22, 12, implicit-def dead %d23, 12, implicit-def dead %d24, 12, implicit-def dead %d25, 12, implicit-def dead %d26, 12, implicit-def dead %d27, 12, implicit-def dead %d28, 12, implicit-def dead %d29, 12, implicit-def dead %d30, 12, implicit-def %d31
4747 %x0 = COPY %0
4848 RET_ReallyLR implicit %x0
4949 ...
5757 body: |
5858 bb.0:
5959 %0 = COPY %wzr
60 INLINEASM $nop, 1, 12, implicit-def dead %x0, 12, implicit-def dead %x1, 12, implicit-def dead %x2, 12, implicit-def dead %x3, 12, implicit-def dead %x4, 12, implicit-def dead %x5, 12, implicit-def dead %x6, 12, implicit-def dead %x7, 12, implicit-def dead %x8, 12, implicit-def dead %x9, 12, implicit-def dead %x10, 12, implicit-def dead %x11, 12, implicit-def dead %x12, 12, implicit-def dead %x13, 12, implicit-def dead %x14, 12, implicit-def dead %x15, 12, implicit-def dead %x16, 12, implicit-def dead %x17, 12, implicit-def dead %x18, 12, implicit-def dead %x19, 12, implicit-def dead %x20, 12, implicit-def dead %x21, 12, implicit-def dead %x22, 12, implicit-def dead %x23, 12, implicit-def dead %x24, 12, implicit-def dead %x25, 12, implicit-def dead %x26, 12, implicit-def dead %x27, 12, implicit-def dead %x28, 12, implicit-def dead %fp, 12, implicit-def dead %lr, 12, implicit-def %sp
60 INLINEASM &nop, 1, 12, implicit-def dead %x0, 12, implicit-def dead %x1, 12, implicit-def dead %x2, 12, implicit-def dead %x3, 12, implicit-def dead %x4, 12, implicit-def dead %x5, 12, implicit-def dead %x6, 12, implicit-def dead %x7, 12, implicit-def dead %x8, 12, implicit-def dead %x9, 12, implicit-def dead %x10, 12, implicit-def dead %x11, 12, implicit-def dead %x12, 12, implicit-def dead %x13, 12, implicit-def dead %x14, 12, implicit-def dead %x15, 12, implicit-def dead %x16, 12, implicit-def dead %x17, 12, implicit-def dead %x18, 12, implicit-def dead %x19, 12, implicit-def dead %x20, 12, implicit-def dead %x21, 12, implicit-def dead %x22, 12, implicit-def dead %x23, 12, implicit-def dead %x24, 12, implicit-def dead %x25, 12, implicit-def dead %x26, 12, implicit-def dead %x27, 12, implicit-def dead %x28, 12, implicit-def dead %fp, 12, implicit-def dead %lr, 12, implicit-def %sp
6161 ; CHECK: undef %1.sub_32:gpr64 = LDRWui %stack.0, 0 :: (load 4 from %stack.0)
6262 undef %1.sub_32 = COPY %0
6363 %x0 = COPY %1
7373 body: |
7474 bb.0:
7575 %0 = COPY %wzr
76 INLINEASM $nop, 1, 12, implicit-def dead %x0, 12, implicit-def dead %x1, 12, implicit-def dead %x2, 12, implicit-def dead %x3, 12, implicit-def dead %x4, 12, implicit-def dead %x5, 12, implicit-def dead %x6, 12, implicit-def dead %x7, 12, implicit-def dead %x8, 12, implicit-def dead %x9, 12, implicit-def dead %x10, 12, implicit-def dead %x11, 12, implicit-def dead %x12, 12, implicit-def dead %x13, 12, implicit-def dead %x14, 12, implicit-def dead %x15, 12, implicit-def dead %x16, 12, implicit-def dead %x17, 12, implicit-def dead %x18, 12, implicit-def dead %x19, 12, implicit-def dead %x20, 12, implicit-def dead %x21, 12, implicit-def dead %x22, 12, implicit-def dead %x23, 12, implicit-def dead %x24, 12, implicit-def dead %x25, 12, implicit-def dead %x26, 12, implicit-def dead %x27, 12, implicit-def dead %x28, 12, implicit-def dead %fp, 12, implicit-def dead %lr, 12, implicit-def %sp
76 INLINEASM &nop, 1, 12, implicit-def dead %x0, 12, implicit-def dead %x1, 12, implicit-def dead %x2, 12, implicit-def dead %x3, 12, implicit-def dead %x4, 12, implicit-def dead %x5, 12, implicit-def dead %x6, 12, implicit-def dead %x7, 12, implicit-def dead %x8, 12, implicit-def dead %x9, 12, implicit-def dead %x10, 12, implicit-def dead %x11, 12, implicit-def dead %x12, 12, implicit-def dead %x13, 12, implicit-def dead %x14, 12, implicit-def dead %x15, 12, implicit-def dead %x16, 12, implicit-def dead %x17, 12, implicit-def dead %x18, 12, implicit-def dead %x19, 12, implicit-def dead %x20, 12, implicit-def dead %x21, 12, implicit-def dead %x22, 12, implicit-def dead %x23, 12, implicit-def dead %x24, 12, implicit-def dead %x25, 12, implicit-def dead %x26, 12, implicit-def dead %x27, 12, implicit-def dead %x28, 12, implicit-def dead %fp, 12, implicit-def dead %lr, 12, implicit-def %sp
7777 ; CHECK: undef %1.ssub:fpr64 = LDRSui %stack.0, 0 :: (load 4 from %stack.0)
7878 undef %1.ssub = COPY %0
7979 %d0 = COPY %1
114114 liveins: %sgpr0_sgpr1, %sgpr3
115115
116116 %sgpr2 = S_LOAD_DWORD_IMM %sgpr0_sgpr1, 44, 0 :: (non-temporal dereferenceable invariant load 4 from `i32 addrspace(2)* undef`)
117 %sgpr8 = S_MOV_B32 $SCRATCH_RSRC_DWORD0, implicit-def %sgpr8_sgpr9_sgpr10_sgpr11
117 %sgpr8 = S_MOV_B32 &SCRATCH_RSRC_DWORD0, implicit-def %sgpr8_sgpr9_sgpr10_sgpr11
118118 %sgpr4_sgpr5 = S_LOAD_DWORDX2_IMM %sgpr0_sgpr1, 36, 0 :: (non-temporal dereferenceable invariant load 8 from `i64 addrspace(2)* undef`)
119 %sgpr9 = S_MOV_B32 $SCRATCH_RSRC_DWORD1, implicit-def %sgpr8_sgpr9_sgpr10_sgpr11
119 %sgpr9 = S_MOV_B32 &SCRATCH_RSRC_DWORD1, implicit-def %sgpr8_sgpr9_sgpr10_sgpr11
120120 %sgpr10 = S_MOV_B32 4294967295, implicit-def %sgpr8_sgpr9_sgpr10_sgpr11
121121 %sgpr11 = S_MOV_B32 15204352, implicit-def %sgpr8_sgpr9_sgpr10_sgpr11
122122 %vgpr0 = V_MOV_B32_e32 1, implicit %exec
112112 liveins: %sgpr0_sgpr1, %sgpr3
113113
114114 %sgpr2 = S_LOAD_DWORD_IMM %sgpr0_sgpr1, 44, 0 :: (non-temporal dereferenceable invariant load 4 from `i32 addrspace(2)* undef`)
115 %sgpr8 = S_MOV_B32 $SCRATCH_RSRC_DWORD0, implicit-def %sgpr8_sgpr9_sgpr10_sgpr11
115 %sgpr8 = S_MOV_B32 &SCRATCH_RSRC_DWORD0, implicit-def %sgpr8_sgpr9_sgpr10_sgpr11
116116 %sgpr4_sgpr5 = S_LOAD_DWORDX2_IMM %sgpr0_sgpr1, 36, 0 :: (non-temporal dereferenceable invariant load 8 from `i64 addrspace(2)* undef`)
117 %sgpr9 = S_MOV_B32 $SCRATCH_RSRC_DWORD1, implicit-def %sgpr8_sgpr9_sgpr10_sgpr11
117 %sgpr9 = S_MOV_B32 &SCRATCH_RSRC_DWORD1, implicit-def %sgpr8_sgpr9_sgpr10_sgpr11
118118 %sgpr10 = S_MOV_B32 4294967295, implicit-def %sgpr8_sgpr9_sgpr10_sgpr11
119119 %sgpr11 = S_MOV_B32 15204352, implicit-def %sgpr8_sgpr9_sgpr10_sgpr11
120120 %vgpr0 = V_MOV_B32_e32 1, implicit %exec
112112 liveins: %sgpr0_sgpr1, %sgpr3
113113
114114 %sgpr2 = S_LOAD_DWORD_IMM %sgpr0_sgpr1, 44, 0 :: (non-temporal dereferenceable invariant load 4 from `i32 addrspace(2)* undef`)
115 %sgpr8 = S_MOV_B32 $SCRATCH_RSRC_DWORD0, implicit-def %sgpr8_sgpr9_sgpr10_sgpr11
115 %sgpr8 = S_MOV_B32 &SCRATCH_RSRC_DWORD0, implicit-def %sgpr8_sgpr9_sgpr10_sgpr11
116116 %sgpr4_sgpr5 = S_LOAD_DWORDX2_IMM %sgpr0_sgpr1, 36, 0 :: (non-temporal dereferenceable invariant load 8 from `i64 addrspace(2)* undef`)
117 %sgpr9 = S_MOV_B32 $SCRATCH_RSRC_DWORD1, implicit-def %sgpr8_sgpr9_sgpr10_sgpr11
117 %sgpr9 = S_MOV_B32 &SCRATCH_RSRC_DWORD1, implicit-def %sgpr8_sgpr9_sgpr10_sgpr11
118118 %sgpr10 = S_MOV_B32 4294967295, implicit-def %sgpr8_sgpr9_sgpr10_sgpr11
119119 %sgpr11 = S_MOV_B32 15204352, implicit-def %sgpr8_sgpr9_sgpr10_sgpr11
120120 %vgpr0 = V_MOV_B32_e32 1, implicit %exec
4949 %sp = STMDB_UPD %sp, 14, _, %lr
5050 CFI_INSTRUCTION def_cfa_offset 12
5151 CFI_INSTRUCTION offset %lr, -12
52 BL $__morestack, implicit-def %lr, implicit %sp
52 BL &__morestack, implicit-def %lr, implicit %sp
5353 %sp = LDMIA_UPD %sp, 14, _, %lr
5454 %sp = LDMIA_UPD %sp, 14, _, %r4, %r5
5555 CFI_INSTRUCTION def_cfa_offset 0
2626 liveins: %a0, %ra
2727
2828 Save16 %ra, 24, implicit-def %sp, implicit %sp
29 %v0, %v1 = GotPrologue16 $_gp_disp, $_gp_disp
29 %v0, %v1 = GotPrologue16 &_gp_disp, &_gp_disp
3030 %v0 = SllX16 killed %v0, 16
3131 %v0 = AdduRxRyRz16 killed %v1, killed %v0
3232 ; CHECK: [[@LINE+1]]:67: expected a global value or an external symbol after 'call-entry'
4545 Save16 %ra, 24, implicit-def %sp, implicit %sp
4646 CFI_INSTRUCTION def_cfa_offset 24
4747 CFI_INSTRUCTION offset %ra_64, -4
48 %v0, %v1 = GotPrologue16 $_gp_disp, $_gp_disp
48 %v0, %v1 = GotPrologue16 &_gp_disp, &_gp_disp
4949 %v0 = SllX16 killed %v0, 16
5050 %v0 = AdduRxRyRz16 killed %v1, killed %v0
5151 ; CHECK-LABEL: name: test
8383 CFI_INSTRUCTION offset %ra_64, -4
8484 CFI_INSTRUCTION offset %s2_64, -8
8585 CFI_INSTRUCTION offset %s0_64, -12
86 %v0, %v1 = GotPrologue16 $_gp_disp, $_gp_disp
86 %v0, %v1 = GotPrologue16 &_gp_disp, &_gp_disp
8787 %v0 = SllX16 killed %v0, 16
8888 %s0 = AdduRxRyRz16 killed %v1, killed %v0
8989 %v0 = LwRxRyOffMemX16 %s0, @g :: (load 4 from call-entry @g)
9090 ; CHECK-LABEL: test2
91 ; CHECK: %v1 = LwRxRyOffMemX16 %s0, $__mips16_call_stub_sf_0 :: (load 4 from call-entry $__mips16_call_stub_sf_0)
92 %v1 = LwRxRyOffMemX16 %s0, $__mips16_call_stub_sf_0 :: (load 4 from call-entry $__mips16_call_stub_sf_0)
91 ; CHECK: %v1 = LwRxRyOffMemX16 %s0, &__mips16_call_stub_sf_0 :: (load 4 from call-entry &__mips16_call_stub_sf_0)
92 %v1 = LwRxRyOffMemX16 %s0, &__mips16_call_stub_sf_0 :: (load 4 from call-entry &__mips16_call_stub_sf_0)
9393 %gp = COPY %s0
9494 JumpLinkReg16 killed %v1, csr_o32, implicit-def %ra, implicit %v0, implicit killed %gp, implicit-def %sp, implicit-def %v0
9595 %v1 = LwRxRyOffMemX16 %s0, @__mips16_ret_sf :: (load 4 from call-entry @__mips16_ret_sf)
1515 - { id: 1, class: float32regs }
1616 body: |
1717 bb.0.entry:
18 %0 = LD_f32_avar 0, 4, 1, 2, 32, $test_param_0
18 %0 = LD_f32_avar 0, 4, 1, 2, 32, &test_param_0
1919 ; CHECK: [[@LINE+1]]:33: expected a floating point literal
2020 %1 = FADD_rnf32ri %0, float 3
2121 StoreRetvalF32 %1, 0
3939 - { id: 7, class: float32regs }
4040 body: |
4141 bb.0.entry:
42 %0 = LD_f32_avar 0, 4, 1, 2, 32, $test_param_0
42 %0 = LD_f32_avar 0, 4, 1, 2, 32, &test_param_0
4343 %1 = CVT_f64_f32 %0, 0
44 %2 = LD_i32_avar 0, 4, 1, 0, 32, $test_param_1
44 %2 = LD_i32_avar 0, 4, 1, 0, 32, &test_param_1
4545 ; CHECK: %3:float64regs = FADD_rnf64ri %1, double 3.250000e+00
4646 %3 = FADD_rnf64ri %1, double 3.250000e+00
4747 %4 = CVT_f32_f64 %3, 5
6565 - { id: 7, class: float32regs }
6666 body: |
6767 bb.0.entry:
68 %0 = LD_f32_avar 0, 4, 1, 2, 32, $test2_param_0
68 %0 = LD_f32_avar 0, 4, 1, 2, 32, &test2_param_0
6969 %1 = CVT_f64_f32 %0, 0
70 %2 = LD_i32_avar 0, 4, 1, 0, 32, $test2_param_1
70 %2 = LD_i32_avar 0, 4, 1, 0, 32, &test2_param_1
7171 ; CHECK: %3:float64regs = FADD_rnf64ri %1, double 0x7FF8000000000000
7272 %3 = FADD_rnf64ri %1, double 0x7FF8000000000000
7373 %4 = CVT_f32_f64 %3, 5
1515 - { id: 1, class: float32regs }
1616 body: |
1717 bb.0.entry:
18 %0 = LD_f32_avar 0, 4, 1, 2, 32, $test_param_0
18 %0 = LD_f32_avar 0, 4, 1, 2, 32, &test_param_0
1919 ; CHECK: [[@LINE+1]]:33: floating point constant does not have type 'float'
2020 %1 = FADD_rnf32ri %0, float 0xH3C00
2121 StoreRetvalF32 %1, 0
1717 liveins: %rdi
1818
1919 ; CHECK: [[@LINE+1]]:83: the tied-def operand #3 is already tied with another register operand
20 INLINEASM $"$foo", 1, 2818058, def %rdi, 2147483657, killed %rdi(tied-def 3), killed %rdi(tied-def 3)
20 INLINEASM &"$foo", 1, 2818058, def %rdi, 2147483657, killed %rdi(tied-def 3), killed %rdi(tied-def 3)
2121 %rax = COPY killed %rdi
2222 RETQ killed %rax
2323 ...
3434 CFI_INSTRUCTION def_cfa_offset 16
3535 %ecx = COPY %edi
3636 %ecx = ADD32rr killed %ecx, killed %esi, implicit-def dead %eflags
37 ; CHECK: INLINEASM $nop, 1, 12, implicit-def dead early-clobber %ax, 12, implicit-def dead early-clobber %di
38 INLINEASM $nop, 1, 12, implicit-def dead early-clobber %ax, 12, implicit-def dead early-clobber %di
37 ; CHECK: INLINEASM &nop, 1, 12, implicit-def dead early-clobber %ax, 12, implicit-def dead early-clobber %di
38 INLINEASM &nop, 1, 12, implicit-def dead early-clobber %ax, 12, implicit-def dead early-clobber %di
3939 %edi = COPY killed %ecx
4040 CALL64pcrel32 @foo, csr_64, implicit %rsp, implicit %edi, implicit-def %rsp
4141 %rax = POP64r implicit-def %rsp, implicit %rsp
1717 liveins: %rdi
1818
1919 ; CHECK: [[@LINE+1]]:78: expected tied-def or low-level type after '('
20 INLINEASM $"$foo", 1, 2818058, def %rdi, 2147483657, killed %rdi(tied-def)
20 INLINEASM &"$foo", 1, 2818058, def %rdi, 2147483657, killed %rdi(tied-def)
2121 %rax = COPY killed %rdi
2222 RETQ killed %rax
2323 ...
1717 liveins: %rdi
1818
1919 ; CHECK: [[@LINE+1]]:70: expected tied-def or low-level type after '('
20 INLINEASM $"$foo", 1, 2818058, def %rdi, 2147483657, killed %rdi(3)
20 INLINEASM &"$foo", 1, 2818058, def %rdi, 2147483657, killed %rdi(3)
2121 %rax = COPY killed %rdi
2222 RETQ killed %rax
2323 ...
4848 RETQ %eax
4949
5050 bb.2.entry:
51 ; CHECK: CALL64pcrel32 $__stack_chk_fail,
52 ; CHECK-NEXT: CALL64pcrel32 $__stack_chk_fail.09-_,
53 ; CHECK-NEXT: CALL64pcrel32 $"__stack_chk_fail$",
54 ; CHECK-NEXT: CALL64pcrel32 $"$Quoted \09 External symbol \11 ",
55 ; CHECK-NEXT: CALL64pcrel32 $__stack_chk_fail + 2,
56 ; CHECK-NEXT: CALL64pcrel32 $" check stack - 20" - 20,
57 CALL64pcrel32 $__stack_chk_fail, csr_64, implicit %rsp, implicit-def %rsp
58 CALL64pcrel32 $__stack_chk_fail.09-_, csr_64, implicit %rsp, implicit-def %rsp
59 CALL64pcrel32 $__stack_chk_fail$, csr_64, implicit %rsp, implicit-def %rsp
60 CALL64pcrel32 $"$Quoted \09 External symbol \11 ", csr_64, implicit %rsp, implicit-def %rsp
61 CALL64pcrel32 $__stack_chk_fail + 2, csr_64, implicit %rsp, implicit-def %rsp
62 CALL64pcrel32 $" check stack - 20" - 20, csr_64, implicit %rsp, implicit-def %rsp
51 ; CHECK: CALL64pcrel32 &__stack_chk_fail,
52 ; CHECK-NEXT: CALL64pcrel32 &__stack_chk_fail.09-_,
53 ; CHECK-NEXT: CALL64pcrel32 &"__stack_chk_fail$",
54 ; CHECK-NEXT: CALL64pcrel32 &"$Quoted \09 External symbol \11 ",
55 ; CHECK-NEXT: CALL64pcrel32 &__stack_chk_fail + 2,
56 ; CHECK-NEXT: CALL64pcrel32 &" check stack - 20" - 20,
57 CALL64pcrel32 &__stack_chk_fail, csr_64, implicit %rsp, implicit-def %rsp
58 CALL64pcrel32 &__stack_chk_fail.09-_, csr_64, implicit %rsp, implicit-def %rsp
59 CALL64pcrel32 &__stack_chk_fail$, csr_64, implicit %rsp, implicit-def %rsp
60 CALL64pcrel32 &"$Quoted \09 External symbol \11 ", csr_64, implicit %rsp, implicit-def %rsp
61 CALL64pcrel32 &__stack_chk_fail + 2, csr_64, implicit %rsp, implicit-def %rsp
62 CALL64pcrel32 &" check stack - 20" - 20, csr_64, implicit %rsp, implicit-def %rsp
6363 ...
7474 RETQ %eax
7575
7676 bb.2.entry:
77 CALL64pcrel32 $__stack_chk_fail, csr_64, implicit %rsp, implicit-def %rsp
77 CALL64pcrel32 &__stack_chk_fail, csr_64, implicit %rsp, implicit-def %rsp
7878 ...
2727 liveins: %rdi, %rsi
2828
2929 ; CHECK-LABEL: name: test
30 ; CHECK: INLINEASM $foo, 0, 2818058, def %rsi, 2818058, def dead %rdi,
31 INLINEASM $foo, 0, 2818058, def %rsi, 2818058, def dead %rdi, 2147549193, killed %rdi, 2147483657, killed %rsi, 12, implicit-def dead early-clobber %eflags
30 ; CHECK: INLINEASM &foo, 0, 2818058, def %rsi, 2818058, def dead %rdi,
31 INLINEASM &foo, 0, 2818058, def %rsi, 2818058, def dead %rdi, 2147549193, killed %rdi, 2147483657, killed %rsi, 12, implicit-def dead early-clobber %eflags
3232 %rax = MOV64rr killed %rsi
3333 RETQ killed %rax
3434 ...
4444
4545 ; Verify that the register ties are preserved.
4646 ; CHECK-LABEL: name: test2
47 ; CHECK: INLINEASM $foo, 0, 2818058, def %rsi, 2818058, def dead %rdi, 2147549193, killed %rdi(tied-def 5), 2147483657, killed %rsi(tied-def 3), 12, implicit-def dead early-clobber %eflags
48 INLINEASM $foo, 0, 2818058, def %rsi, 2818058, def dead %rdi, 2147549193, killed %rdi(tied-def 5), 2147483657, killed %rsi(tied-def 3), 12, implicit-def dead early-clobber %eflags
47 ; CHECK: INLINEASM &foo, 0, 2818058, def %rsi, 2818058, def dead %rdi, 2147549193, killed %rdi(tied-def 5), 2147483657, killed %rsi(tied-def 3), 12, implicit-def dead early-clobber %eflags
48 INLINEASM &foo, 0, 2818058, def %rsi, 2818058, def dead %rdi, 2147549193, killed %rdi(tied-def 5), 2147483657, killed %rsi(tied-def 3), 12, implicit-def dead early-clobber %eflags
4949 %rax = MOV64rr killed %rsi
5050 RETQ killed %rax
5151 ...
22 # Avoid crash/assert when using an emptystring in an INLINEASM.
33 # CHECK-LABEL: name: emptystring
44 # CHECK: bb.0:
5 # CHECK: INLINEASM $"", 1
5 # CHECK: INLINEASM &"", 1
66 # CHECK: RET 0
77 name: emptystring
88 body: |
99 bb.0:
10 INLINEASM $"", 1
10 INLINEASM &"", 1
1111 RET 0
1717 liveins: %rdi
1818
1919 ; CHECK: [[@LINE+1]]:58: use of invalid tied-def operand index '300'; instruction has only 6 operands
20 INLINEASM $"$foo", 1, 2818058, def %rdi, 2147483657, killed %rdi(tied-def 300)
20 INLINEASM &"$foo", 1, 2818058, def %rdi, 2147483657, killed %rdi(tied-def 300)
2121 %rax = COPY killed %rdi
2222 RETQ killed %rax
2323 ...
358358 ; CHECK: name: stack_psv
359359 ; CHECK: ST_FP80m %rsp, 1, %noreg, 0, %noreg, implicit-def dead %fpsw :: (store 10 into stack, align 16)
360360 ST_FP80m %rsp, 1, _, 0, _, implicit-def dead %fpsw :: (store 10 into stack, align 16)
361 CALL64pcrel32 $cosl, csr_64, implicit %rsp, implicit-def %rsp, implicit-def %fp0
361 CALL64pcrel32 &cosl, csr_64, implicit %rsp, implicit-def %rsp, implicit-def %fp0
362362 %rsp = ADD64ri8 %rsp, 24, implicit-def dead %eflags
363363 RETQ
364364 ...
1717 liveins: %rdi
1818
1919 ; CHECK: [[@LINE+1]]:58: use of invalid tied-def operand index '0'; the operand #0 isn't a defined register
20 INLINEASM $"$foo", 1, 2818058, def %rdi, 2147483657, killed %rdi(tied-def 0)
20 INLINEASM &"$foo", 1, 2818058, def %rdi, 2147483657, killed %rdi(tied-def 0)
2121 %rax = COPY killed %rdi
2222 RETQ killed %rax
2323 ...
165165 %16 = LW killed %15, 0 :: (dereferenceable load 4 from @v)
166166 %0 = ADDu killed %12, killed %16
167167 ADJCALLSTACKDOWN 0, 0, implicit-def dead %sp, implicit %sp
168 %17 = LUi64 target-flags(mips-call-hi16) $__tls_get_addr
168 %17 = LUi64 target-flags(mips-call-hi16) &__tls_get_addr
169169 %18 = DADDu killed %17, %6
170 %19 = LD killed %18, target-flags(mips-call-lo16) $__tls_get_addr :: (load 8 from call-entry $__tls_get_addr)
170 %19 = LD killed %18, target-flags(mips-call-lo16) &__tls_get_addr :: (load 8 from call-entry &__tls_get_addr)
171171 %20 = DADDiu %6, target-flags(mips-tlsldm) @__tls_guard
172172 %a0_64 = COPY %20
173173 %gp_64 = COPY %6
183183 successors: %bb.3._ZTW1k.exit(0x80000000)
184184
185185 ADJCALLSTACKDOWN 0, 0, implicit-def dead %sp, implicit %sp
186 %39 = LUi64 target-flags(mips-call-hi16) $__tls_get_addr
186 %39 = LUi64 target-flags(mips-call-hi16) &__tls_get_addr
187187 %40 = DADDu killed %39, %6
188 %41 = LD killed %40, target-flags(mips-call-lo16) $__tls_get_addr :: (load 8 from call-entry $__tls_get_addr)
188 %41 = LD killed %40, target-flags(mips-call-lo16) &__tls_get_addr :: (load 8 from call-entry &__tls_get_addr)
189189 %42 = DADDiu %6, target-flags(mips-tlsgd) @k
190190 %a0_64 = COPY %42
191191 %gp_64 = COPY %6
199199 successors: %bb.3._ZTW1k.exit(0x80000000)
200200
201201 ADJCALLSTACKDOWN 0, 0, implicit-def dead %sp, implicit %sp
202 %24 = LUi64 target-flags(mips-call-hi16) $__tls_get_addr
202 %24 = LUi64 target-flags(mips-call-hi16) &__tls_get_addr
203203 %25 = DADDu killed %24, %6
204 %26 = LD %25, target-flags(mips-call-lo16) $__tls_get_addr :: (load 8 from call-entry $__tls_get_addr)
204 %26 = LD %25, target-flags(mips-call-lo16) &__tls_get_addr :: (load 8 from call-entry &__tls_get_addr)
205205 %27 = DADDiu %6, target-flags(mips-tlsldm) @__tls_guard
206206 %a0_64 = COPY %27
207207 %gp_64 = COPY %6
222222 ADJCALLSTACKUP 0, 0, implicit-def dead %sp, implicit %sp
223223 %35 = COPY %v0
224224 ADJCALLSTACKDOWN 0, 0, implicit-def dead %sp, implicit %sp
225 %36 = LD %25, target-flags(mips-call-lo16) $__tls_get_addr :: (load 8 from call-entry $__tls_get_addr)
225 %36 = LD %25, target-flags(mips-call-lo16) &__tls_get_addr :: (load 8 from call-entry &__tls_get_addr)
226226 %37 = DADDiu %6, target-flags(mips-tlsgd) @k
227227 %a0_64 = COPY %37
228228 %gp_64 = COPY %6
256256
257257 bb.5._ZTW1j.exit:
258258 ADJCALLSTACKDOWN 0, 0, implicit-def dead %sp, implicit %sp
259 %50 = LUi64 target-flags(mips-call-hi16) $__tls_get_addr
259 %50 = LUi64 target-flags(mips-call-hi16) &__tls_get_addr
260260 %51 = DADDu killed %50, %6
261 %52 = LD killed %51, target-flags(mips-call-lo16) $__tls_get_addr :: (load 8 from call-entry $__tls_get_addr)
261 %52 = LD killed %51, target-flags(mips-call-lo16) &__tls_get_addr :: (load 8 from call-entry &__tls_get_addr)
262262 %53 = DADDiu %6, target-flags(mips-tlsgd) @j
263263 %a0_64 = COPY %53
264264 %gp_64 = COPY %6
8181 BL8_NOP @__raw_read_unlock, csr_svr464_altivec, implicit-def %lr8, implicit %rm, implicit %x3, implicit %x2, implicit-def %r1, implicit-def dead %x3
8282 %r3 = LI 0
8383 STW killed %r3, 0, killed %x30 :: (volatile store 4 into %ir.p2)
84 INLINEASM $"#compiler barrier", 25
85 INLINEASM $"\0Alwsync \0A1:\09lwarx\09$0,0,$1\09\09# atomic_dec_return\0A\09addic\09$0,$0,-1\0A\09stwcx.\09$0,0,$1\0A\09bne-\091b\0Async \0A", 25, 131083, def early-clobber %r3, 851977, killed %x29, 12, implicit-def dead early-clobber %cr0
84 INLINEASM &"#compiler barrier", 25
85 INLINEASM &"\0Alwsync \0A1:\09lwarx\09$0,0,$1\09\09# atomic_dec_return\0A\09addic\09$0,$0,-1\0A\09stwcx.\09$0,0,$1\0A\09bne-\091b\0Async \0A", 25, 131083, def early-clobber %r3, 851977, killed %x29, 12, implicit-def dead early-clobber %cr0
8686 ; CHECK-LABEL: @mm_update_next_owner
8787 ; CHECK-NOT: lwarx 29, 0, 29
8888 ; CHECK-NOT: stwcx. 29, 0, 29
154154 ADJCALLSTACKDOWN 0, 0
155155 %12 = LZDR
156156 %f0d = COPY %12
157 CallBRASL $fmod, killed %f0d, undef %f2d, csr_systemz, implicit-def dead %r14d, implicit-def dead %cc, implicit-def %f0d
157 CallBRASL &fmod, killed %f0d, undef %f2d, csr_systemz, implicit-def dead %r14d, implicit-def dead %cc, implicit-def %f0d
158158 ADJCALLSTACKUP 0, 0
159159 KILL killed %f0d
160160
3131
3232 LTEBRCompare %f0s, %f0s, implicit-def %cc
3333 %f2s = LER %f0s
34 INLINEASM $"blah $0", 1, 9, %f2s
34 INLINEASM &"blah $0", 1, 9, %f2s
3535 CondReturn 15, 4, implicit %f0s, implicit %cc
3636
3737 bb.1.store:
55 ; DARWIN-SELDAG: # Machine code for function test_branch_weights:
66 ; DARWIN-SELDAG: Successors according to CFG: %bb.[[SUCCESS:[0-9]+]]({{[0-9a-fx/= ]+}}100.00%) %bb.[[FAILURE:[0-9]+]]
77 ; DARWIN-SELDAG: %bb.[[FAILURE]]:
8 ; DARWIN-SELDAG: CALL64pcrel32 $__stack_chk_fail
8 ; DARWIN-SELDAG: CALL64pcrel32 &__stack_chk_fail
99 ; DARWIN-SELDAG: %bb.[[SUCCESS]]:
1010
1111 ; DARWIN-IR: # Machine code for function test_branch_weights:
214214 {
215215 raw_string_ostream OS(str);
216216 MO.print(OS, /*TRI=*/nullptr, /*IntrinsicInfo=*/nullptr);
217 ASSERT_TRUE(OS.str() == "$foo");
217 ASSERT_TRUE(OS.str() == "&foo");
218218 }
219219
220220 str.clear();
224224 {
225225 raw_string_ostream OS(str);
226226 MO.print(OS, /*TRI=*/nullptr, /*IntrinsicInfo=*/nullptr);
227 ASSERT_TRUE(OS.str() == "$foo + 12");
227 ASSERT_TRUE(OS.str() == "&foo + 12");
228228 }
229229
230230 str.clear();
234234 {
235235 raw_string_ostream OS(str);
236236 MO.print(OS, /*TRI=*/nullptr, /*IntrinsicInfo=*/nullptr);
237 ASSERT_TRUE(OS.str() == "$foo - 12");
237 ASSERT_TRUE(OS.str() == "&foo - 12");
238238 }
239239 }
240240