-
Notifications
You must be signed in to change notification settings - Fork 2.7k
[RyuJIT/ARM32] Enabling fast tail call feature #16419
Conversation
- Not use fasttailcall when callee use floating point register argument (difficult to calculate stack size) - Not use fasttailcall when callee use split struct argument - Fix importer to compare return type when we check tail call - Fix codegen bug: ARM32 not support INS_br (use INS_bx)
Add comment in fgCanFastTailCall for ARM32
@dotnet-bot test Windows_NT arm Cross Checked jitstress1 Build and Test |
@dotnet-bot help |
Welcome to the dotnet/coreclr Repository The following is a list of valid commands on this PR. To invoke a command, comment the indicated phrase on the PR The following commands are valid for all PRs and repositories. Click to expand
The following jobs are launched by default for each PR against dotnet/coreclr:master. Click to expand
The following optional jobs are available in PRs against dotnet/coreclr:master. Click to expand
Have a nice day! |
Welcome to the dotnet/coreclr Perf help The following is a list of valid commands on this PR. To invoke a command, comment the indicated phrase on the PR The following commands are valid for all PRs and repositories. Click to expand
The following optional jobs are available in PRs against dotnet/coreclr:master. Click to expand
Have a nice day! |
Welcome to the dotnet/coreclr Repository The following is a list of valid commands on this PR. To invoke a command, comment the indicated phrase on the PR The following commands are valid for all PRs and repositories. Click to expand
The following jobs are launched by default for each PR against dotnet/coreclr:master. Click to expand
The following optional jobs are available in PRs against dotnet/coreclr:master. Click to expand
Have a nice day! |
@dotnet-bot test Windows_NT arm Cross Checked jitstress1 Build and Test |
1 similar comment
@dotnet-bot test Windows_NT arm Cross Checked jitstress1 Build and Test |
@dotnet-bot test Windows_NT arm Cross Checked jitstress1 Build and Test |
Someone from Microsoft needs to trigger the Windows ARM jobs for you. @dotnet-bot test Windows_NT arm Cross Checked jitstress1 Build and Test |
@BruceForstall I can't see any details about failed tests |
One more question. I'm trying to check tail call optimization on IL: IL_0000 02 ldarg.0
IL_0001 17 ldc.i4.1
IL_0002 58 add
IL_0003 10 00 starg.s 0x0
IL_0005 02 ldarg.0
IL_0006 1f 64 ldc.i4.s 0x64
IL_0008 33 02 bne.un.s 2 (IL_000c)
IL_000a 02 ldarg.0
IL_000b 2a ret
IL_000c 02 ldarg.0
IL_000d 28 03 00 00 06 call 0x6000003
IL_0012 2a ret Generated code: ; Assembly listing for method FastTailCallCandidates:SimpleTestCase(int):int
; Emitting BLENDED_CODE for generic ARM CPU
; optimized code
; r11 based frame
; partially interruptible
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 6, 5.50) int -> r0
; V01 tmp0 [V01,T02] ( 4, 2 ) int -> r0
; V02 tmp1 [V02,T01] ( 5, 5 ) int -> r0
;# V03 OutArgs [V03 ] ( 1, 1 ) lclBlk ( 0) [sp+0x00]
;
; Lcl frame size = 0
G_M24343_IG01:
000000 E92D 4800 push {r11,lr}
000004 46EB mov r11, sp
G_M24343_IG02:
000006 1C40 adds r0, r0, 1
000008 2864 cmp r0, 100
00000A D102 bne SHORT G_M24343_IG04
00000C 2064 movs r0, 100
G_M24343_IG03:
00000E E8BD 8800 pop {r11,pc}
G_M24343_IG04:
000012 1C40 adds r0, r0, 1
000014 2864 cmp r0, 100
000016 D101 bne SHORT G_M24343_IG05
000018 2064 movs r0, 100
00001A E005 b SHORT G_M24343_IG06
G_M24343_IG05:
00001C F24B 3304 movw r3, 0xb304
000020 F2CB 53B6 movt r3, 0xb5b6
000024 681B ldr r3, [r3]
000026 4798 blx r3 // FastTailCallCandidates:SimpleTestCase(int):int
G_M24343_IG06:
000028 E8BD 8800 pop {r11,pc} |
The failures are: You should be able to click on the "Smarty.0.fail.smrt" link in the "Build Artifacts" section, to see the results. E.g., for tailcall stress:
There is also a "Smarty.run.0.zip" link that downloads the entire Windows arm test run output (it's big). This archive contains a couple output files (one HTML, one TXT) for each test run. E.g., for ComparerCompare2.cmd_80, which failed:
|
For your example, without looking too carefully, I don't see anything obviously wrong, but it obviously is not generating a fast tail call. |
No update for 1+ year. I recommend to close the PR until it is ready to be worked on again ... thoughts @RussKeldorph? |
Rebased version of #14056