91 lines · plain
1; RUN: llc %s -o - -O1 -debug-only=consthoist 2>&1 | FileCheck %s2; REQUIRES: asserts3 4target datalayout = "e-m:o-p:32:32-f64:32:64-v64:32:64-v128:32:128-a:0:32-n32-S32"5target triple = "thumbv6m-apple-ios8.0.0"6 7declare void @g(i32)8 9; CHECK: Collect constant i32 -3 from call void @g(i32 -3) with cost 210define void @f(i1 %cond) {11entry:12 call void @g(i32 -3)13 br i1 %cond, label %true, label %ret14 15true:16 call void @g(i32 -3)17 br label %ret18 19ret:20 ret void21}22 23; CHECK: Function: h24; CHECK-NOT: Collect constant i32 -193 from25define void @h(i1 %cond, i32 %p, i32 %q) {26entry:27 %a = and i32 %p, 429496710328 call void @g(i32 %a)29 br i1 %cond, label %true, label %ret30 31true:32 %b = and i32 %q, 429496710333 call void @g(i32 %b)34 br label %ret35 36ret:37 ret void38}39 40; CHECK: Function: test_icmp_neg41; CHECK-NOT: Collect constant42define void @test_icmp_neg(i1 %cond, i32 %arg, i32 %arg2) {43entry:44 %a = icmp ne i32 %arg, -545 call void @g2(i1 %a)46 br i1 %cond, label %true, label %ret47 48true:49 %b = icmp ne i32 %arg2, -550 call void @g2(i1 %b)51 br label %ret52 53ret:54 ret void55}56declare void @g2(i1)57 58; CHECK: Function: test_icmp_neg259; CHECK: Hoist constant (i32 -500) to BB entry60define void @test_icmp_neg2(i1 %cond, i32 %arg, i32 %arg2) {61entry:62 %a = icmp ne i32 %arg, -50063 call void @g2(i1 %a)64 br i1 %cond, label %true, label %ret65 66true:67 %b = icmp ne i32 %arg2, -50068 call void @g2(i1 %b)69 br label %ret70 71ret:72 ret void73}74 75; CHECK: Function: test_add_neg76; CHECK-NOT: Collect constant i32 -577define void @test_add_neg(i1 %cond, i32 %arg, i32 %arg2) {78entry:79 %a = add i32 %arg, -580 call void @g(i32 %a)81 br i1 %cond, label %true, label %ret82 83true:84 %b = add i32 %arg2, -585 call void @g(i32 %b)86 br label %ret87 88ret:89 ret void90}91