[SLP] Add cost model for `llvm.powi.*` intrinsics
[llvm-project.git] / llvm / test / Transforms / PhaseOrdering / X86 / pr52289.ll
blobc98dba81a14eae16d6dcdad94f5e1808fb1a1064
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt -O3 -S < %s | FileCheck %s
4 target datalayout = "n8:16:32:64"
6 define i32 @main(i32 %a) {
7 ; CHECK-LABEL: @main(
8 ; CHECK-NEXT:  if.end:
9 ; CHECK-NEXT:    ret i32 0
11   %inc = add nsw i32 %a, 1
12   %and = and i32 %inc, 8
13   %conv = trunc i32 %and to i8
14   %call = call fastcc i8 @a(i8 %conv, i32 7)
15   %conv1 = sext i8 %call to i64
16   %call2 = call fastcc i64 @d(i64 %conv1)
17   %mul = mul nsw i64 %call2, 20681
18   %conv3 = trunc i64 %mul to i16
19   %conv4 = sext i16 %conv3 to i32
20   %xor = xor i32 %conv4, 1
21   %tobool = icmp ne i32 %xor, 0
22   br i1 %tobool, label %if.end, label %if.then
24 if.then:
25   call void undef()
26   br label %if.end
28 if.end:
29   %call5 = call fastcc i8 @a(i8 0, i32 0)
30   ret i32 0
33 define internal fastcc i8 @a(i8 %h, i32 %i) {
34   %t0 = zext i8 %h to i32
35   %cmp = icmp sgt i32 %t0, %i
36   %shl = shl i32 %t0, %i
37   %cond = select i1 %cmp, i32 %t0, i32 %shl
38   %conv4 = trunc i32 %cond to i8
39   ret i8 %conv4
42 define internal fastcc i64 @d(i64 %h) {
43   ret i64 %h