forked from OSchip/llvm-project
38 lines
1.4 KiB
LLVM
38 lines
1.4 KiB
LLVM
|
; RUN: opt < %s -reassociate -stats -S 2>&1 | FileCheck %s
|
||
|
; REQUIRES: asserts
|
||
|
|
||
|
define i8 @longchain(i8 %in1, i8 %in2, i8 %in3, i8 %in4, i8 %in5, i8 %in6, i8 %in7, i8 %in8, i8 %in9, i8 %in10, i8 %in11, i8 %in12, i8 %in13, i8 %in14, i8 %in15, i8 %in16, i8 %in17, i8 %in18, i8 %in19, i8 %in20) {
|
||
|
%tmp1 = add i8 %in1, %in2
|
||
|
%tmp2 = add i8 %tmp1, %in3
|
||
|
%tmp3 = add i8 %tmp2, %in4
|
||
|
%tmp4 = add i8 %tmp3, %in3
|
||
|
%tmp5 = add i8 %tmp4, %in4
|
||
|
%tmp6 = add i8 %tmp5, %in5
|
||
|
%tmp7 = add i8 %tmp6, %in6
|
||
|
%tmp8 = add i8 %tmp7, %in7
|
||
|
%tmp9 = add i8 %tmp8, %in8
|
||
|
%tmp10 = add i8 %tmp9, %in9
|
||
|
%tmp11 = add i8 %tmp10, %in10
|
||
|
%tmp12 = add i8 %tmp11, %in11
|
||
|
%tmp13 = add i8 %tmp12, %in12
|
||
|
%tmp14 = add i8 %tmp13, %in13
|
||
|
%tmp15 = add i8 %tmp14, %in14
|
||
|
%tmp16 = add i8 %tmp15, %in15
|
||
|
%tmp17 = add i8 %tmp16, %in16
|
||
|
%tmp18 = add i8 %tmp17, %in17
|
||
|
%tmp19 = add i8 %tmp18, %in18
|
||
|
%tmp20 = add i8 %tmp19, %in19
|
||
|
%tmp21 = add i8 %tmp20, %in20
|
||
|
ret i8 %tmp20
|
||
|
}
|
||
|
|
||
|
; Check the number of instructions reassociated is in the tens not the hundreds.
|
||
|
; At the time of writing, the exact numbers were:
|
||
|
; Bad order: 220 reassociate - Number of insts reassociated
|
||
|
; Good order: 55 reassociate - Number of insts reassociated
|
||
|
;
|
||
|
; CHECK: {{^[1-9][0-9]}} reassociate - Number of insts reassociated
|
||
|
|
||
|
; Additionally check that we made at least three changes.
|
||
|
; CHECK: {{^ *[3-9]}} reassociate - Number of multiplies factored
|