xref: /aosp_15_r20/external/llvm/test/Transforms/InstCombine/2006-12-05-fp-to-int-ext.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -instcombine -S | grep zext
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker; Never merge these two conversions, even though it's possible: this is
4*9880d681SAndroid Build Coastguard Worker; significantly more expensive than the two conversions on some targets
5*9880d681SAndroid Build Coastguard Worker; and it causes libgcc to be compile __fixunsdfdi into a recursive
6*9880d681SAndroid Build Coastguard Worker; function.
7*9880d681SAndroid Build Coastguard Workerdefine i64 @test(double %D) {
8*9880d681SAndroid Build Coastguard Worker        %A = fptoui double %D to i32            ; <i32> [#uses=1]
9*9880d681SAndroid Build Coastguard Worker        %B = zext i32 %A to i64         ; <i64> [#uses=1]
10*9880d681SAndroid Build Coastguard Worker        ret i64 %B
11*9880d681SAndroid Build Coastguard Worker}
12*9880d681SAndroid Build Coastguard Worker
13