unsigned long one_bit_repeat_ulong(unsigned long num) {
  return (
      (((((((num & 1) | (!!(num)) | (num & 1)))
          << ((((num)) - (((((num)) & 1) | (!!(((num)))) | (((num)) & 1))))))) -
        ((((((((num & 1) | (!!(num)) | (num & 1)))
             << ((((num)) -
                  (((((num)) & 1) | (!!(((num)))) | (((num)) & 1))))))) &
           1) |
          (!!((((((num & 1) | (!!(num)) | (num & 1)))
                << ((((num)) -
                     (((((num)) & 1) | (!!(((num)))) | (((num)) & 1))))))))) |
          ((((((num & 1) | (!!(num)) | (num & 1)))
             << ((((num)) -
                  (((((num)) & 1) | (!!(((num)))) | (((num)) & 1))))))) &
           1))))) |
      (((((num)&1) | (!!((num))) | ((num)&1)))
       << ((((num)) - (((((num)) & 1) | (!!(((num)))) | (((num)) & 1)))))));
}


x86 assembly (clang, -O0):
<one_bit_repeat_ulong>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rax
and    $0x1,%rax
cmpq   $0x0,-0x8(%rbp)
setne  %cl
xor    $0xff,%cl
xor    $0xff,%cl
and    $0x1,%cl
movzbl %cl,%ecx
movslq %ecx,%rcx
or     %rcx,%rax
mov    -0x8(%rbp),%rcx
and    $0x1,%rcx
or     %rcx,%rax
mov    -0x8(%rbp),%rcx
mov    -0x8(%rbp),%rdx
and    $0x1,%rdx
cmpq   $0x0,-0x8(%rbp)
setne  %sil
xor    $0xff,%sil
xor    $0xff,%sil
and    $0x1,%sil
movzbl %sil,%esi
movslq %esi,%rsi
or     %rsi,%rdx
mov    -0x8(%rbp),%rsi
and    $0x1,%rsi
or     %rsi,%rdx
sub    %rdx,%rcx
shl    %cl,%rax
mov    -0x8(%rbp),%rdx
and    $0x1,%rdx
cmpq   $0x0,-0x8(%rbp)
setne  %cl
xor    $0xff,%cl
xor    $0xff,%cl
and    $0x1,%cl
movzbl %cl,%ecx
movslq %ecx,%rcx
or     %rcx,%rdx
mov    -0x8(%rbp),%rcx
and    $0x1,%rcx
or     %rcx,%rdx
mov    -0x8(%rbp),%rcx
mov    -0x8(%rbp),%rsi
and    $0x1,%rsi
cmpq   $0x0,-0x8(%rbp)
setne  %dil
xor    $0xff,%dil
xor    $0xff,%dil
and    $0x1,%dil
movzbl %dil,%edi
movslq %edi,%rdi
or     %rdi,%rsi
mov    -0x8(%rbp),%rdi
and    $0x1,%rdi
or     %rdi,%rsi
sub    %rsi,%rcx
shl    %cl,%rdx
mov    %rdx,%rcx
and    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
mov    -0x8(%rbp),%rdx
and    $0x1,%rdx
cmpq   $0x0,-0x8(%rbp)
setne  %cl
xor    $0xff,%cl
xor    $0xff,%cl
and    $0x1,%cl
movzbl %cl,%ecx
movslq %ecx,%rcx
or     %rcx,%rdx
mov    -0x8(%rbp),%rcx
and    $0x1,%rcx
or     %rcx,%rdx
mov    -0x8(%rbp),%rcx
mov    -0x8(%rbp),%rsi
and    $0x1,%rsi
cmpq   $0x0,-0x8(%rbp)
setne  %dil
xor    $0xff,%dil
xor    $0xff,%dil
and    $0x1,%dil
movzbl %dil,%edi
movslq %edi,%rdi
or     %rdi,%rsi
mov    -0x8(%rbp),%rdi
and    $0x1,%rdi
or     %rdi,%rsi
sub    %rsi,%rcx
shl    %cl,%rdx
mov    -0x18(%rbp),%rcx
cmp    $0x0,%rdx
setne  %dl
xor    $0xff,%dl
xor    $0xff,%dl
and    $0x1,%dl
movzbl %dl,%edx
movslq %edx,%rdx
or     %rdx,%rcx
mov    %rcx,-0x10(%rbp)
mov    -0x8(%rbp),%rdx
and    $0x1,%rdx
cmpq   $0x0,-0x8(%rbp)
setne  %cl
xor    $0xff,%cl
xor    $0xff,%cl
and    $0x1,%cl
movzbl %cl,%ecx
movslq %ecx,%rcx
or     %rcx,%rdx
mov    -0x8(%rbp),%rcx
and    $0x1,%rcx
or     %rcx,%rdx
mov    -0x8(%rbp),%rcx
mov    -0x8(%rbp),%rsi
and    $0x1,%rsi
cmpq   $0x0,-0x8(%rbp)
setne  %dil
xor    $0xff,%dil
xor    $0xff,%dil
and    $0x1,%dil
movzbl %dil,%edi
movslq %edi,%rdi
or     %rdi,%rsi
mov    -0x8(%rbp),%rdi
and    $0x1,%rdi
or     %rdi,%rsi
sub    %rsi,%rcx
shl    %cl,%rdx
mov    -0x10(%rbp),%rcx
and    $0x1,%rdx
or     %rdx,%rcx
sub    %rcx,%rax
mov    -0x8(%rbp),%rdx
and    $0x1,%rdx
cmpq   $0x0,-0x8(%rbp)
setne  %cl
xor    $0xff,%cl
xor    $0xff,%cl
and    $0x1,%cl
movzbl %cl,%ecx
movslq %ecx,%rcx
or     %rcx,%rdx
mov    -0x8(%rbp),%rcx
and    $0x1,%rcx
or     %rcx,%rdx
mov    -0x8(%rbp),%rcx
mov    -0x8(%rbp),%rsi
and    $0x1,%rsi
cmpq   $0x0,-0x8(%rbp)
setne  %dil
xor    $0xff,%dil
xor    $0xff,%dil
and    $0x1,%dil
movzbl %dil,%edi
movslq %edi,%rdi
or     %rdi,%rsi
mov    -0x8(%rbp),%rdi
and    $0x1,%rdi
or     %rdi,%rsi
sub    %rsi,%rcx
shl    %cl,%rdx
mov    %rdx,%rcx
or     %rcx,%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<one_bit_repeat_ulong>:
mov    %rdi,%rcx
mov    %ecx,%eax
and    $0x1,%eax
xor    %edx,%edx
test   %rdi,%rdi
setne  %dl
or     %rax,%rdx
sub    %edx,%ecx
shl    %cl,%rdx
mov    %edx,%eax
and    $0x1,%eax
xor    %ecx,%ecx
test   %rdx,%rdx
setne  %cl
or     %rax,%rcx
mov    %rdx,%rax
sub    %rcx,%rax
or     %rdx,%rax
ret

LLVM IR (-O0):
define i64 @one_bit_repeat_ulong(i64 %0) {
%2 = alloca i64
store i64 %0, i64* %2
%3 = load i64, i64* %2
%4 = and i64 %3, 1
%5 = load i64, i64* %2
%6 = icmp ne i64 %5, 0
%7 = xor i1 %6, true
%8 = xor i1 %7, true
%9 = zext i1 %8 to i32
%10 = sext i32 %9 to i64
%11 = or i64 %4, %10
%12 = load i64, i64* %2
%13 = and i64 %12, 1
%14 = or i64 %11, %13
%15 = load i64, i64* %2
%16 = load i64, i64* %2
%17 = and i64 %16, 1
%18 = load i64, i64* %2
%19 = icmp ne i64 %18, 0
%20 = xor i1 %19, true
%21 = xor i1 %20, true
%22 = zext i1 %21 to i32
%23 = sext i32 %22 to i64
%24 = or i64 %17, %23
%25 = load i64, i64* %2
%26 = and i64 %25, 1
%27 = or i64 %24, %26
%28 = sub i64 %15, %27
%29 = shl i64 %14, %28
%30 = load i64, i64* %2
%31 = and i64 %30, 1
%32 = load i64, i64* %2
%33 = icmp ne i64 %32, 0
%34 = xor i1 %33, true
%35 = xor i1 %34, true
%36 = zext i1 %35 to i32
%37 = sext i32 %36 to i64
%38 = or i64 %31, %37
%39 = load i64, i64* %2
%40 = and i64 %39, 1
%41 = or i64 %38, %40
%42 = load i64, i64* %2
%43 = load i64, i64* %2
%44 = and i64 %43, 1
%45 = load i64, i64* %2
%46 = icmp ne i64 %45, 0
%47 = xor i1 %46, true
%48 = xor i1 %47, true
%49 = zext i1 %48 to i32
%50 = sext i32 %49 to i64
%51 = or i64 %44, %50
%52 = load i64, i64* %2
%53 = and i64 %52, 1
%54 = or i64 %51, %53
%55 = sub i64 %42, %54
%56 = shl i64 %41, %55
%57 = and i64 %56, 1
%58 = load i64, i64* %2
%59 = and i64 %58, 1
%60 = load i64, i64* %2
%61 = icmp ne i64 %60, 0
%62 = xor i1 %61, true
%63 = xor i1 %62, true
%64 = zext i1 %63 to i32
%65 = sext i32 %64 to i64
%66 = or i64 %59, %65
%67 = load i64, i64* %2
%68 = and i64 %67, 1
%69 = or i64 %66, %68
%70 = load i64, i64* %2
%71 = load i64, i64* %2
%72 = and i64 %71, 1
%73 = load i64, i64* %2
%74 = icmp ne i64 %73, 0
%75 = xor i1 %74, true
%76 = xor i1 %75, true
%77 = zext i1 %76 to i32
%78 = sext i32 %77 to i64
%79 = or i64 %72, %78
%80 = load i64, i64* %2
%81 = and i64 %80, 1
%82 = or i64 %79, %81
%83 = sub i64 %70, %82
%84 = shl i64 %69, %83
%85 = icmp ne i64 %84, 0
%86 = xor i1 %85, true
%87 = xor i1 %86, true
%88 = zext i1 %87 to i32
%89 = sext i32 %88 to i64
%90 = or i64 %57, %89
%91 = load i64, i64* %2
%92 = and i64 %91, 1
%93 = load i64, i64* %2
%94 = icmp ne i64 %93, 0
%95 = xor i1 %94, true
%96 = xor i1 %95, true
%97 = zext i1 %96 to i32
%98 = sext i32 %97 to i64
%99 = or i64 %92, %98
%100 = load i64, i64* %2
%101 = and i64 %100, 1
%102 = or i64 %99, %101
%103 = load i64, i64* %2
%104 = load i64, i64* %2
%105 = and i64 %104, 1
%106 = load i64, i64* %2
%107 = icmp ne i64 %106, 0
%108 = xor i1 %107, true
%109 = xor i1 %108, true
%110 = zext i1 %109 to i32
%111 = sext i32 %110 to i64
%112 = or i64 %105, %111
%113 = load i64, i64* %2
%114 = and i64 %113, 1
%115 = or i64 %112, %114
%116 = sub i64 %103, %115
%117 = shl i64 %102, %116
%118 = and i64 %117, 1
%119 = or i64 %90, %118
%120 = sub i64 %29, %119
%121 = load i64, i64* %2
%122 = and i64 %121, 1
%123 = load i64, i64* %2
%124 = icmp ne i64 %123, 0
%125 = xor i1 %124, true
%126 = xor i1 %125, true
%127 = zext i1 %126 to i32
%128 = sext i32 %127 to i64
%129 = or i64 %122, %128
%130 = load i64, i64* %2
%131 = and i64 %130, 1
%132 = or i64 %129, %131
%133 = load i64, i64* %2
%134 = load i64, i64* %2
%135 = and i64 %134, 1
%136 = load i64, i64* %2
%137 = icmp ne i64 %136, 0
%138 = xor i1 %137, true
%139 = xor i1 %138, true
%140 = zext i1 %139 to i32
%141 = sext i32 %140 to i64
%142 = or i64 %135, %141
%143 = load i64, i64* %2
%144 = and i64 %143, 1
%145 = or i64 %142, %144
%146 = sub i64 %133, %145
%147 = shl i64 %132, %146
%148 = or i64 %120, %147
ret i64 %148
}

LLVM IR (-O2):
define i64 @one_bit_repeat_ulong(i64 %0) {
%2 = and i64 %0, 1
%3 = icmp ne i64 %0, 0
%4 = zext i1 %3 to i64
%5 = or i64 %2, %4
%6 = sub i64 %0, %5
%7 = shl i64 %5, %6
%8 = and i64 %7, 1
%9 = icmp ne i64 %7, 0
%10 = zext i1 %9 to i64
%11 = or i64 %8, %10
%12 = sub i64 %7, %11
%13 = or i64 %12, %7
ret i64 %13
}