Closed
Description
define i1 @test(ptr %a0, ptr %a1, ptr %a2, ptr %a3, ptr %a4, ptr %a5, i128 %x) {
%alloca = alloca i128
store i128 %x, ptr %alloca
store i128 0, ptr %alloca
%cmp = icmp eq i128 %x, -1
ret i1 %cmp
}
Results in:
movq 8(%rsp), %rax
xorps %xmm0, %xmm0
movaps %xmm0, 8(%rsp)
andq 16(%rsp), %rax
cmpq $-1, %rax
sete %al
retq
The final argument is passed in 8(%rsp)
and 16(%rsp)
. The zero store writes 128 bits to 8(%rsp)
, clobbering the argument before it is read.