@@ -42,9 +42,99 @@ define double @sqrt_div_reassoc_arcp(double %x, double %y, double %z) {
42
42
; CHECK-NEXT: ret double [[DIV1]]
43
43
;
44
44
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
48
138
ret double %div1
49
139
}
50
140
0 commit comments