Skip to content

Commit e50189b

Browse files
committed
[InstCombine] Add additional tests for fdiv-sqrt
Add more tests where some of the instructions have missing flags.
1 parent 42902d2 commit e50189b

File tree

1 file changed

+93
-3
lines changed

1 file changed

+93
-3
lines changed

llvm/test/Transforms/InstCombine/fdiv-sqrt.ll

Lines changed: 93 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,99 @@ define double @sqrt_div_reassoc_arcp(double %x, double %y, double %z) {
4242
; CHECK-NEXT: ret double [[DIV1]]
4343
;
4444
entry:
45-
%div = fdiv reassoc arcp double %y, %z
46-
%sqrt = call reassoc arcp double @llvm.sqrt.f64(double %div)
47-
%div1 = fdiv reassoc arcp double %x, %sqrt
45+
%div = fdiv arcp reassoc double %y, %z
46+
%sqrt = call arcp reassoc double @llvm.sqrt.f64(double %div)
47+
%div1 = fdiv arcp reassoc double %x, %sqrt
48+
ret double %div1
49+
}
50+
51+
define double @sqrt_div_reassoc_missing(double %x, double %y, double %z) {
52+
; CHECK-LABEL: @sqrt_div_reassoc_missing(
53+
; CHECK-NEXT: entry:
54+
; CHECK-NEXT: [[DIV:%.*]] = fdiv arcp double [[Y:%.*]], [[Z:%.*]]
55+
; CHECK-NEXT: [[SQRT:%.*]] = call reassoc arcp double @llvm.sqrt.f64(double [[DIV]])
56+
; CHECK-NEXT: [[DIV1:%.*]] = fdiv reassoc arcp double [[X:%.*]], [[SQRT]]
57+
; CHECK-NEXT: ret double [[DIV1]]
58+
;
59+
entry:
60+
%div = fdiv arcp double %y, %z
61+
%sqrt = call arcp reassoc double @llvm.sqrt.f64(double %div)
62+
%div1 = fdiv arcp reassoc double %x, %sqrt
63+
ret double %div1
64+
}
65+
66+
define double @sqrt_div_reassoc_missing2(double %x, double %y, double %z) {
67+
; CHECK-LABEL: @sqrt_div_reassoc_missing2(
68+
; CHECK-NEXT: entry:
69+
; CHECK-NEXT: [[DIV:%.*]] = fdiv reassoc arcp double [[Y:%.*]], [[Z:%.*]]
70+
; CHECK-NEXT: [[SQRT:%.*]] = call arcp double @llvm.sqrt.f64(double [[DIV]])
71+
; CHECK-NEXT: [[DIV1:%.*]] = fdiv reassoc arcp double [[X:%.*]], [[SQRT]]
72+
; CHECK-NEXT: ret double [[DIV1]]
73+
;
74+
entry:
75+
%div = fdiv arcp reassoc double %y, %z
76+
%sqrt = call arcp double @llvm.sqrt.f64(double %div)
77+
%div1 = fdiv arcp reassoc double %x, %sqrt
78+
ret double %div1
79+
}
80+
81+
define double @sqrt_div_reassoc_missing3(double %x, double %y, double %z) {
82+
; CHECK-LABEL: @sqrt_div_reassoc_missing3(
83+
; CHECK-NEXT: entry:
84+
; CHECK-NEXT: [[DIV:%.*]] = fdiv reassoc arcp double [[Y:%.*]], [[Z:%.*]]
85+
; CHECK-NEXT: [[SQRT:%.*]] = call reassoc arcp double @llvm.sqrt.f64(double [[DIV]])
86+
; CHECK-NEXT: [[DIV1:%.*]] = fdiv arcp double [[X:%.*]], [[SQRT]]
87+
; CHECK-NEXT: ret double [[DIV1]]
88+
;
89+
entry:
90+
%div = fdiv arcp reassoc double %y, %z
91+
%sqrt = call arcp reassoc double @llvm.sqrt.f64(double %div)
92+
%div1 = fdiv arcp double %x, %sqrt
93+
ret double %div1
94+
}
95+
96+
define double @sqrt_div_arcp_missing(double %x, double %y, double %z) {
97+
; CHECK-LABEL: @sqrt_div_arcp_missing(
98+
; CHECK-NEXT: entry:
99+
; CHECK-NEXT: [[DIV:%.*]] = fdiv reassoc double [[Y:%.*]], [[Z:%.*]]
100+
; CHECK-NEXT: [[SQRT:%.*]] = call reassoc arcp double @llvm.sqrt.f64(double [[DIV]])
101+
; CHECK-NEXT: [[DIV1:%.*]] = fdiv reassoc arcp double [[X:%.*]], [[SQRT]]
102+
; CHECK-NEXT: ret double [[DIV1]]
103+
;
104+
entry:
105+
%div = fdiv reassoc double %y, %z
106+
%sqrt = call arcp reassoc double @llvm.sqrt.f64(double %div)
107+
%div1 = fdiv arcp reassoc double %x, %sqrt
108+
ret double %div1
109+
}
110+
111+
define double @sqrt_div_arcp_missing2(double %x, double %y, double %z) {
112+
; CHECK-LABEL: @sqrt_div_arcp_missing2(
113+
; CHECK-NEXT: entry:
114+
; CHECK-NEXT: [[DIV:%.*]] = fdiv reassoc arcp double [[Y:%.*]], [[Z:%.*]]
115+
; CHECK-NEXT: [[SQRT:%.*]] = call reassoc double @llvm.sqrt.f64(double [[DIV]])
116+
; CHECK-NEXT: [[DIV1:%.*]] = fdiv reassoc arcp double [[X:%.*]], [[SQRT]]
117+
; CHECK-NEXT: ret double [[DIV1]]
118+
;
119+
entry:
120+
%div = fdiv arcp reassoc double %y, %z
121+
%sqrt = call reassoc double @llvm.sqrt.f64(double %div)
122+
%div1 = fdiv arcp reassoc double %x, %sqrt
123+
ret double %div1
124+
}
125+
126+
define double @sqrt_div_arcp_missing3(double %x, double %y, double %z) {
127+
; CHECK-LABEL: @sqrt_div_arcp_missing3(
128+
; CHECK-NEXT: entry:
129+
; CHECK-NEXT: [[DIV:%.*]] = fdiv reassoc arcp double [[Y:%.*]], [[Z:%.*]]
130+
; CHECK-NEXT: [[SQRT:%.*]] = call reassoc arcp double @llvm.sqrt.f64(double [[DIV]])
131+
; CHECK-NEXT: [[DIV1:%.*]] = fdiv reassoc double [[X:%.*]], [[SQRT]]
132+
; CHECK-NEXT: ret double [[DIV1]]
133+
;
134+
entry:
135+
%div = fdiv arcp reassoc double %y, %z
136+
%sqrt = call arcp reassoc double @llvm.sqrt.f64(double %div)
137+
%div1 = fdiv reassoc double %x, %sqrt
48138
ret double %div1
49139
}
50140

0 commit comments

Comments
 (0)