http://d.puremagic.com/issues/show_bug.cgi?id=6829
--- Comment #25 from [email protected] 2013-07-12 08:13:16 PDT --- Nope, it's still not working. I copied-n-pasted exactly the code posted above, and compiled with gdc -frelease -O3 test.d, and here is the disassembly output: 00000000004042d0 <_D4test10__T3rolThZ3rolFNaNbNfxhxkZh>: 4042d0: 40 0f b6 ff movzbl %dil,%edi 4042d4: b9 08 00 00 00 mov $0x8,%ecx 4042d9: 29 f1 sub %esi,%ecx 4042db: 89 f8 mov %edi,%eax 4042dd: d3 f8 sar %cl,%eax 4042df: 89 f1 mov %esi,%ecx 4042e1: d3 e7 shl %cl,%edi 4042e3: 09 f8 or %edi,%eax 4042e5: c3 retq 4042e6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 4042ed: 00 00 00 00000000004042f0 <_D4test10__T3rorThZ3rorFNaNbNfxhxkZh>: 4042f0: 40 0f b6 ff movzbl %dil,%edi 4042f4: b9 08 00 00 00 mov $0x8,%ecx 4042f9: 29 f1 sub %esi,%ecx 4042fb: 89 f8 mov %edi,%eax 4042fd: d3 e0 shl %cl,%eax 4042ff: 89 f1 mov %esi,%ecx 404301: d3 ff sar %cl,%edi 404303: 09 f8 or %edi,%eax 404305: c3 retq 404306: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 40430d: 00 00 00 0000000000404310 <_D4test10__T3rolTtZ3rolFNaNbNfxtxkZt>: 404310: 0f b7 ff movzwl %di,%edi 404313: b9 10 00 00 00 mov $0x10,%ecx 404318: 29 f1 sub %esi,%ecx 40431a: 89 f8 mov %edi,%eax 40431c: d3 f8 sar %cl,%eax 40431e: 89 f1 mov %esi,%ecx 404320: d3 e7 shl %cl,%edi 404322: 09 f8 or %edi,%eax 404324: c3 retq 404325: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 40432c: 00 00 00 40432f: 90 nop 0000000000404330 <_D4test10__T3rorTtZ3rorFNaNbNfxtxkZt>: 404330: 0f b7 ff movzwl %di,%edi 404333: b9 10 00 00 00 mov $0x10,%ecx 404338: 29 f1 sub %esi,%ecx 40433a: 89 f8 mov %edi,%eax 40433c: d3 e0 shl %cl,%eax 40433e: 89 f1 mov %esi,%ecx 404340: d3 ff sar %cl,%edi 404342: 09 f8 or %edi,%eax 404344: c3 retq 404345: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 40434c: 00 00 00 40434f: 90 nop 0000000000404350 <_D4test10__T3rolTkZ3rolFNaNbNfxkxkZk>: 404350: b9 20 00 00 00 mov $0x20,%ecx 404355: 89 f8 mov %edi,%eax 404357: 29 f1 sub %esi,%ecx 404359: d3 e8 shr %cl,%eax 40435b: 89 f1 mov %esi,%ecx 40435d: d3 e7 shl %cl,%edi 40435f: 09 f8 or %edi,%eax 404361: c3 retq 404362: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 404369: 00 00 00 40436c: 0f 1f 40 00 nopl 0x0(%rax) 0000000000404370 <_D4test10__T3rorTkZ3rorFNaNbNfxkxkZk>: 404370: b9 20 00 00 00 mov $0x20,%ecx 404375: 89 f8 mov %edi,%eax 404377: 29 f1 sub %esi,%ecx 404379: d3 e0 shl %cl,%eax 40437b: 89 f1 mov %esi,%ecx 40437d: d3 ef shr %cl,%edi 40437f: 09 f8 or %edi,%eax 404381: c3 retq 404382: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 404389: 00 00 00 40438c: 0f 1f 40 00 nopl 0x0(%rax) 0000000000404390 <_D4test10__T3rolTmZ3rolFNaNbNfxmxkZm>: 404390: b9 40 00 00 00 mov $0x40,%ecx 404395: 48 89 f8 mov %rdi,%rax 404398: 29 f1 sub %esi,%ecx 40439a: 48 d3 e8 shr %cl,%rax 40439d: 89 f1 mov %esi,%ecx 40439f: 48 d3 e7 shl %cl,%rdi 4043a2: 48 09 f8 or %rdi,%rax 4043a5: c3 retq 4043a6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 4043ad: 00 00 00 00000000004043b0 <_D4test10__T3rorTmZ3rorFNaNbNfxmxkZm>: 4043b0: b9 40 00 00 00 mov $0x40,%ecx 4043b5: 48 89 f8 mov %rdi,%rax 4043b8: 29 f1 sub %esi,%ecx 4043ba: 48 d3 e0 shl %cl,%rax 4043bd: 89 f1 mov %esi,%ecx 4043bf: 48 d3 ef shr %cl,%rdi 4043c2: 48 09 f8 or %rdi,%rax 4043c5: c3 retq 4043c6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 4043cd: 00 00 00 It's still using shift + bitwise OR instead of substituting a rotate instruction. I'm also on Linux x86_64 (so says uname -m), so I've no idea what I'm doing wrong. And gdc --version says it's gdc (GCC) 4.8.1. Did something go wrong/missing in my gdc build?? -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
