brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · 811fc72 Raw
107 lines · plain
1; RUN: llc -mtriple=aarch64-none-linux-gnu %s -o - -O1 -debug-only=consthoist 2>&1 | FileCheck %s2; REQUIRES: asserts3 4declare void @g(i64)5 6; Single ORR.7; CHECK:     Function: f18; CHECK-NOT: Collect constant9define void @f1(i1 %cond) {10entry:11  call void @g(i64 -3)12  br i1 %cond, label %true, label %ret13 14true:15  call void @g(i64 -3)16  br label %ret17 18ret:19  ret void20}21 22; Constant is 0xBEEF000000000000, single MOVZ with shift.23; CHECK:     Function: f224; CHECK-NOT: Collect constant25define void @f2(i1 %cond, i64 %p, i64 %q) {26entry:27  %a = and i64 %p, 1375821538664015462428  call void @g(i64 %a)29  br i1 %cond, label %true, label %ret30 31true:32  %b = and i64 %q, 1375821538664015462433  call void @g(i64 %b)34  br label %ret35 36ret:37  ret void38}39 40; CHECK:     Function: f341; CHECK:     Collect constant i64 4294967103 from   %a = and i64 %p, 4294967103 with cost 242define void @f3(i1 %cond, i64 %p, i64 %q) {43entry:44  %a = and i64 %p, 429496710345  call void @g(i64 %a)46  br i1 %cond, label %true, label %ret47 48true:49  %b = and i64 %q, 429496710350  call void @g(i64 %b)51  br label %ret52 53ret:54  ret void55}56 57; CHECK:     Function: f458; Collect constant i64 -4688528683866062848 from   %a = and i64 %p, -4688528683866062848 with cost 259define void @f4(i1 %cond, i64 %p, i64 %q) {60entry:61  %a = and i64 %p, 1375821538984348876862  call void @g(i64 %a)63  br i1 %cond, label %true, label %ret64 65true:66  %b = and i64 %q, 1375821538984348876867  call void @g(i64 %b)68  br label %ret69 70ret:71  ret void72}73 74; CHECK:     Function: f575; Collect constant i64 88994925642865 from   %a = and i64 %p, 88994925642865 with cost 376define void @f5(i1 %cond, i64 %p, i64 %q) {77entry:78  %a = and i64 %p, 8899492564286579  call void @g(i64 %a)80  br i1 %cond, label %true, label %ret81 82true:83  %b = and i64 %q, 8899492564286584  call void @g(i64 %b)85  br label %ret86 87ret:88  ret void89}90 91; CHECK:     Function: f692; Collect constant i64 -4688439692143754127 from   %b = and i64 %q, -4688439692143754127 with cost 493define void @f6(i1 %cond, i64 %p, i64 %q) {94entry:95  %a = and i64 %p, 1375830438156579748996  call void @g(i64 %a)97  br i1 %cond, label %true, label %ret98 99true:100  %b = and i64 %q, 13758304381565797489101  call void @g(i64 %b)102  br label %ret103 104ret:105  ret void106}107