https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95818
--- Comment #2 from Ferruh YIGIT <ferruh.yigit at intel dot com> --- .i output [1] and .s output [2] below, please let me know if the request was something else. [1] int iavf_dev_link_update(struct rte_eth_dev *dev, __attribute__((__unused__)) int wait_to_complete) { struct rte_eth_link new_link; struct iavf_info *vf = (&((struct iavf_adapter *)dev->data->dev_private)->vf); switch (vf->link_speed) { case 10: new_link.link_speed = 10; break; case 100: new_link.link_speed = 100; break; case 1000: new_link.link_speed = 1000; break; case 10000: new_link.link_speed = 10000; break; case 20000: new_link.link_speed = 20000; break; case 25000: new_link.link_speed = 25000; break; case 40000: new_link.link_speed = 40000; break; case 50000: new_link.link_speed = 50000; break; case 100000: new_link.link_speed = 100000; break; default: new_link.link_speed = 0; break; } new_link.link_duplex = 1; new_link.link_status = vf->link_up ? 1 : 0; new_link.link_autoneg = !(dev->data->dev_conf.link_speeds & (1 << 0)); if (rte_atomic64_cmpset((uint64_t *)&dev->data->dev_link, *(uint64_t *)&dev->data->dev_link, *(uint64_t *)&new_link) == 0) return -1; return 0; } [2] .globl iavf_dev_link_update .type iavf_dev_link_update, @function iavf_dev_link_update: .LFB6034: .cfi_startproc movq 24(%rdi), %rcx movq 96(%rcx), %rsi movl 476(%rsi), %edx cmpl $20000, %edx je .L5 jbe .L28 cmpl $50000, %edx je .L5 jbe .L29 cmpl $100000, %edx movl $0, %eax cmovne %rax, %rdx .L5: movl 112(%rcx), %eax movzbl 473(%rsi), %esi notl %eax andl $1, %eax sall $2, %esi leal 1(%rax,%rax), %eax orl %esi, %eax andl $7, %eax salq $32, %rax orq %rax, %rdx movq 104(%rcx), %rax #APP # 33 "/root/development/dpdk-next-net/build/include/rte_atomic_64.h" 1 lock ; cmpxchgq %rdx, 104(%rcx);sete %al; # 0 "" 2 #NO_APP cmpb $1, %al sbbl %eax, %eax ret .p2align 4,,10 .p2align 3 .L29: cmpl $25000, %edx je .L5 cmpl $40000, %edx je .L5 .L11: xorl %edx, %edx jmp .L5 .p2align 4,,10 .p2align 3 .L28: cmpl $1000, %edx je .L5 jbe .L30 cmpl $10000, %edx movl $0, %eax cmovne %rax, %rdx jmp .L5 .p2align 4,,10 .p2align 3 .L30: cmpl $10, %edx je .L5 cmpl $100, %edx je .L5 jmp .L11 .cfi_endproc .LFE6034: .size iavf_dev_link_update, .-iavf_dev_link_update .p2align 4