https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25671
--- Comment #10 from Andrew Pinski <pinskia at gcc dot gnu.org> --- With the fixed testcase we get: movq %rsi, %rax movq %rsi, %rcx shrq $6, %rax andl $63, %ecx movq (%rdi,%rax,8), %rax shrq %cl, %rax andl $1, %eax ICC can produce the btq but with extra instructions still: movq %rsi, %rax #5.25 shrq $6, %rax #5.25 movq (%rdi,%rax,8), %rdx #5.13 xorl %eax, %eax #5.61 btq %rsi, %rdx #5.61 setc %al