Issue 181106
Summary [BMI] Don't turn `ror(x | 1, 1)` into SHLD
Labels new issue
Assignees
Reporter Validark
    [Zig Godbolt](https://zig.godbo.lt/#g:!((g:!((g:!((h:codeEditor,i:(filename:'1',fontScale:14,fontUsePx:'0',j:1,lang:zig,selection:(endColumn:2,endLineNumber:7,positionColumn:2,positionLineNumber:7,selectionStartColumn:2,selectionStartLineNumber:7,startColumn:2,startLineNumber:7),source:'fn+ror(x:+u32,+comptime+amt:+u5)+u32+%7B%0A++++return+(x+%3E%3E+amt)+%7C+(x+%3C%3C+-%25amt)%3B%0A%7D%0A%0Aexport+fn+ror1(x:+u32)+u32+%7B%0A++++return+ror(x+%7C+1,+1)%3B%0A%7D'),l:'5',n:'0',o:'Zig+source+%231',t:'0')),k:51.68820018845817,l:'4',m:100,n:'0',o:'',s:0,t:'0'),(g:!((h:compiler,i:(compiler:ztrunk,filters:(b:'0',binary:'1',binaryObject:'1',commentOnly:'0',debugCalls:'1',demangle:'0',directives:'0',execute:'1',intel:'0',libraryCode:'0',trim:'1',verboseDemangling:'0'),flagsViewOpen:'1',fontScale:20,fontUsePx:'0',j:2,lang:zig,libs:!(),options:'-O+ReleaseFast+-target+x86_64-linux+-mcpu%3Dznver5+-fomit-frame-pointer',overrides:!(),selection:(endColumn:1,endLineNumber:1,positionColumn:1,positionLineNumber:1,selectionStartColumn:1,selectionStartLineNumber:1,startColumn:1,startLineNumber:1),source:1),l:'5',n:'0',o:'+zig+trunk+(Editor+%231)',t:'0')),header:(),k:48.311799811541846,l:'4',m:100,n:'0',o:'',s:0,t:'0')),l:'2',m:100,n:'0',o:'',t:'0')),version:4)
[C Godbolt](https://c.godbo.lt/#z:OYLghAFBqd5QCxAYwPYBMCmBRdBLAF1QCcAaPECAMzwBtMA7AQwFtMQByARg9KtQYEAysib0QXACx8BBAKoBnTAAUAHpwAMvAFYTStJg1AB9U8lJL6yAngGVG6AMKpaAVxYM9DgDJ4GmADl3ACNMYgkNUgAHVAVCWwZnNw89GLibAV9/IJZQ8K5Iy0xrBKECJmICJPdPLgtMKwyGMoqCLMCQsIiLcsrqlLqFXra/DtyugoBKC1RXYmR2DgBSACYAZj9kNywAaiW1xyH8QQA6BH3sJY0AQSvroaYbZB2/WlGd1z8CNZXjAh3iCQIJ9BD8/jtVKQPgw4sB/OgdqwCJM9gB2ABCdx22IBmAIcwYOwgqj2a0uZMRLGRaMcRJJ%2B0cDKJPx2AFpKcjJvtMTclqiACJ3O4g76/f6A4hcYFfMH/VQovk86443H44iEiXEmk7LiuKFcLlrJV8wU3DjTWicACsvE8HC0pFQnFpClm80we3WPFIBE05umAGsQFbIpaOJJbX7HZxeAoQJFffbzaQ4LAYIgUKgWFE6GFyJQ0Nnc%2BFkFtDMA/sRXAwA3w6AQwnGIMEo8E/BUAJ6cb1t5jEDsAeWC2mKie9hbYggHDFoXaTpCwwVcwEcYloce4vCwLHL4nn%2BGIo7wADdMBuHZhVMVXA3u7wvg0o29gsRO84sFGCMQ8Cw76RT8QwSxJg/KYDuRhvEYfrTFQBjAAoABqeCYAA7gOUSMH%2B/CCCIYjsFIMiCIoKjqPOugrPo5YgKYxjmM%2BcaQNMqBRE0G6sgOaxsju8znGs/IAF4MABNqOgB35YAxEDTEUJR2BADj9LUpA%2BKMOR5KksTxAIikaekCTtGpEz1I0pTDDpgwNEeAgtJUBmdPkPStOZjm2ap9kSNJboLB5%2BjWpG85OhwEIABwAGysqFkg7GWRhEl%2B1YBiiEC4IQJCemsBq8ImWiTNMCCYEwWDhFJpBBiGvnhrwv5WmsJxcDVKwaAAnE1oWoqikiolwoWhaQdoOoFsbxj60EpumEBIIWOb0GQFAQFNxYoPBzBRAoCCoAQda0A2xBNi2869p2f6Hf2Q4jtYf4TowBDTrOUaLsuq60Ouf7bruiwOgeR6nuevCXtet6buQgiPvOz6vv274fVl36/kDAFAUooHgcAkGgEmMFwYhyFoRhdrethwiiOIBGE8RahRrodQGFBNF0XgwSSUxLEJGxHFcRUyC8QJQlhCJqBiXgEnwNJlmyZ48kME4Lg1F4Ut2eMDlpFpiQywM0SaU0CvqRZJnWWZatKTJTQ2SM2TuYMBvJEbwzaxMnlzN5BoVSJ/W8IFIXhZFOzAKWcVVjWSUpUQxDpZlI0Y3lBVFZQFqcBGpC/pIoUnMFyeok1GgaD8KxWiswVrH1UaDRYw3Zf6pXBqGnBrP5A0xhHOVxxwKxVREkRu9GHBZdB0wAXEdiSEAA)
[LLVM Godbolt](https://llvm.godbo.lt/#g:!((g:!((g:!((h:codeEditor,i:(filename:'1',fontScale:14,fontUsePx:'0',j:1,lang:llvm,selection:(endColumn:1,endLineNumber:8,positionColumn:1,positionLineNumber:8,selectionStartColumn:1,selectionStartLineNumber:8,startColumn:1,startLineNumber:8),source:'define+dso_local+i32+@ror1(i32+%250)+local_unnamed_addr+%7B%0AEntry:%0a++%251+%[email protected](i32+range(i32+1,+0)+1,+i32+range(i32+1,+0)+%250,+i32+31)%0a++ret+i32+%251%0a%7d%0a%[email protected](i32,+i32,+i32)+%231%0A'),l:'5',n:'0',o:'LLVM+IR+source+%231',t:'0')),k:50.76820307281229,l:'4',n:'0',o:'',s:0,t:'0'),(g:!((h:compiler,i:(compiler:llctrunk,filters:(b:'0',binary:'1',binaryObject:'1',commentOnly:'0',debugCalls:'1',demangle:'0',directives:'0',execute:'1',intel:'0',libraryCode:'0',trim:'1',verboseDemangling:'0'),flagsViewOpen:'1',fontScale:14,fontUsePx:'0',j:1,lang:llvm,libs:!(),options:'-O3+-mcpu%3Dznver5',overrides:!(),selection:(endColumn:1,endLineNumber:1,positionColumn:1,positionLineNumber:1,selectionStartColumn:1,selectionStartLineNumber:1,startColumn:1,startLineNumber:1),source:1),l:'5',n:'0',o:'+llc+(trunk)+(Editor+%231)',t:'0')),k:49.23179692718771,l:'4',m:100,n:'0',o:'',s:0,t:'0')),l:'2',n:'0',o:'',t:'0')),version:4)
This:
```zig
fn ror(x: u32, comptime amt: u5) u32 {
    return (x >> amt) | (x << -%amt);
}

export fn ror1(x: u32) u32 {
    return ror(x | 1, 1);
}
```
Results in:
```asm
ror1:
        mov     eax, 1
        shld eax, edi, 31
        ret
```

Could be:
```asm
ror1:
        or edi, 1
        rorx    eax, edi, 1
        ret
```
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to