LLVM IR与否相比等于或小于

时间:2018-07-23 10:03:49

标签: x86 llvm llvm-ir

我想用两个整数进行小于或等于比较运算:op1 <= -op2。但是两个操作数都可以是最小值(0x80 ... 0),因此'neg'可以产生有毒值。如果我使用x86 asm,我会写:

add r8,r9
jle SOME_LABEL

但是在LLVM IR中,我只能编写以下结构:

%neg_op2 = sub i64 0, %op2
%cmp_sle = icmp sle i64 %op1, %neg_op2

如果op2 = MIN_VALUE将不起作用。当然,我可以添加其他比较,但是生成的x86代码比add + jle差得多。宝贵的性能将会丢失。

是否有任何方法可以通过add + jle的代价使LLVM执行相同的操作?我的目标平台是x86,所以我可以牺牲与平台无关的功能。

0 个答案:

没有答案