Skip to content

Commit 82cdc30

Browse files
authored
ValueTracking: Handle amdgcn_log in computeKnownFPClass (#172492)
1 parent e7892d7 commit 82cdc30

File tree

2 files changed

+55
-52
lines changed

2 files changed

+55
-52
lines changed

llvm/lib/Analysis/ValueTracking.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5399,7 +5399,12 @@ void computeKnownFPClass(const Value *V, const APInt &DemandedElts,
53995399
case Intrinsic::log2:
54005400
case Intrinsic::experimental_constrained_log:
54015401
case Intrinsic::experimental_constrained_log10:
5402-
case Intrinsic::experimental_constrained_log2: {
5402+
case Intrinsic::experimental_constrained_log2:
5403+
case Intrinsic::amdgcn_log: {
5404+
Type *EltTy = II->getType()->getScalarType();
5405+
if (IID == Intrinsic::amdgcn_log && EltTy->isFloatTy())
5406+
Known.knownNot(fcSubnormal);
5407+
54035408
// log(+inf) -> +inf
54045409
// log([+-]0.0) -> -inf
54055410
// log(-inf) -> nan
@@ -5424,12 +5429,10 @@ void computeKnownFPClass(const Value *V, const APInt &DemandedElts,
54245429
Known.knownNot(fcNan);
54255430

54265431
const Function *F = II->getFunction();
5427-
54285432
if (!F)
54295433
break;
54305434

5431-
const fltSemantics &FltSem =
5432-
II->getType()->getScalarType()->getFltSemantics();
5435+
const fltSemantics &FltSem = EltTy->getFltSemantics();
54335436
DenormalMode Mode = F->getDenormalMode(FltSem);
54345437

54355438
if (KnownSrc.isKnownNeverLogicalZero(Mode))

llvm/test/Transforms/Attributor/AMDGPU/nofpclass-amdgcn-log.ll

Lines changed: 48 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -12,140 +12,140 @@ define half @ret_log_f16(half %arg) #1 {
1212
}
1313

1414
define float @ret_log_f32(float %arg) #1 {
15-
; CHECK-LABEL: define float @ret_log_f32(
15+
; CHECK-LABEL: define nofpclass(sub) float @ret_log_f32(
1616
; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR0]] {
17-
; CHECK-NEXT: [[CALL:%.*]] = call float @llvm.amdgcn.log.f32(float [[ARG]]) #[[ATTR7]]
17+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(sub) float @llvm.amdgcn.log.f32(float [[ARG]]) #[[ATTR7]]
1818
; CHECK-NEXT: ret float [[CALL]]
1919
;
2020
%call = call float @llvm.amdgcn.log.f32(float %arg)
2121
ret float %call
2222
}
2323

2424
define float @ret_log_noinf(float nofpclass(inf) %arg) #1 {
25-
; CHECK-LABEL: define float @ret_log_noinf(
25+
; CHECK-LABEL: define nofpclass(pinf sub) float @ret_log_noinf(
2626
; CHECK-SAME: float nofpclass(inf) [[ARG:%.*]]) #[[ATTR0]] {
27-
; CHECK-NEXT: [[CALL:%.*]] = call float @llvm.amdgcn.log.f32(float nofpclass(inf) [[ARG]]) #[[ATTR7]]
27+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(pinf sub) float @llvm.amdgcn.log.f32(float nofpclass(inf) [[ARG]]) #[[ATTR7]]
2828
; CHECK-NEXT: ret float [[CALL]]
2929
;
3030
%call = call float @llvm.amdgcn.log.f32(float %arg)
3131
ret float %call
3232
}
3333

3434
define float @ret_log_noneg(float nofpclass(ninf nsub nnorm) %arg) #1 {
35-
; CHECK-LABEL: define float @ret_log_noneg(
35+
; CHECK-LABEL: define nofpclass(sub) float @ret_log_noneg(
3636
; CHECK-SAME: float nofpclass(ninf nsub nnorm) [[ARG:%.*]]) #[[ATTR0]] {
37-
; CHECK-NEXT: [[CALL:%.*]] = call float @llvm.amdgcn.log.f32(float nofpclass(ninf nsub nnorm) [[ARG]]) #[[ATTR7]]
37+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(sub) float @llvm.amdgcn.log.f32(float nofpclass(ninf nsub nnorm) [[ARG]]) #[[ATTR7]]
3838
; CHECK-NEXT: ret float [[CALL]]
3939
;
4040
%call = call float @llvm.amdgcn.log.f32(float %arg)
4141
ret float %call
4242
}
4343

4444
define float @ret_log_noneg_nonan(float nofpclass(nan ninf nsub nnorm) %arg) #1 {
45-
; CHECK-LABEL: define float @ret_log_noneg_nonan(
45+
; CHECK-LABEL: define nofpclass(nan sub) float @ret_log_noneg_nonan(
4646
; CHECK-SAME: float nofpclass(nan ninf nsub nnorm) [[ARG:%.*]]) #[[ATTR0]] {
47-
; CHECK-NEXT: [[CALL:%.*]] = call float @llvm.amdgcn.log.f32(float nofpclass(nan ninf nsub nnorm) [[ARG]]) #[[ATTR7]]
47+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(nan sub) float @llvm.amdgcn.log.f32(float nofpclass(nan ninf nsub nnorm) [[ARG]]) #[[ATTR7]]
4848
; CHECK-NEXT: ret float [[CALL]]
4949
;
5050
%call = call float @llvm.amdgcn.log.f32(float %arg)
5151
ret float %call
5252
}
5353

5454
define float @ret_log_noinf_noneg(float nofpclass(inf nsub nnorm) %arg) #1 {
55-
; CHECK-LABEL: define float @ret_log_noinf_noneg(
55+
; CHECK-LABEL: define nofpclass(pinf sub) float @ret_log_noinf_noneg(
5656
; CHECK-SAME: float nofpclass(inf nsub nnorm) [[ARG:%.*]]) #[[ATTR0]] {
57-
; CHECK-NEXT: [[CALL:%.*]] = call float @llvm.amdgcn.log.f32(float nofpclass(inf nsub nnorm) [[ARG]]) #[[ATTR7]]
57+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(pinf sub) float @llvm.amdgcn.log.f32(float nofpclass(inf nsub nnorm) [[ARG]]) #[[ATTR7]]
5858
; CHECK-NEXT: ret float [[CALL]]
5959
;
6060
%call = call float @llvm.amdgcn.log.f32(float %arg)
6161
ret float %call
6262
}
6363

6464
define float @ret_log_noinf_noneg_nonan(float nofpclass(nan inf nsub nnorm) %arg) #1 {
65-
; CHECK-LABEL: define float @ret_log_noinf_noneg_nonan(
65+
; CHECK-LABEL: define nofpclass(nan pinf sub) float @ret_log_noinf_noneg_nonan(
6666
; CHECK-SAME: float nofpclass(nan inf nsub nnorm) [[ARG:%.*]]) #[[ATTR0]] {
67-
; CHECK-NEXT: [[CALL:%.*]] = call float @llvm.amdgcn.log.f32(float nofpclass(nan inf nsub nnorm) [[ARG]]) #[[ATTR7]]
67+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(nan pinf sub) float @llvm.amdgcn.log.f32(float nofpclass(nan inf nsub nnorm) [[ARG]]) #[[ATTR7]]
6868
; CHECK-NEXT: ret float [[CALL]]
6969
;
7070
%call = call float @llvm.amdgcn.log.f32(float %arg)
7171
ret float %call
7272
}
7373

7474
define float @ret_log_nopinf(float nofpclass(pinf) %arg) #1 {
75-
; CHECK-LABEL: define float @ret_log_nopinf(
75+
; CHECK-LABEL: define nofpclass(pinf sub) float @ret_log_nopinf(
7676
; CHECK-SAME: float nofpclass(pinf) [[ARG:%.*]]) #[[ATTR0]] {
77-
; CHECK-NEXT: [[CALL:%.*]] = call float @llvm.amdgcn.log.f32(float nofpclass(pinf) [[ARG]]) #[[ATTR7]]
77+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(pinf sub) float @llvm.amdgcn.log.f32(float nofpclass(pinf) [[ARG]]) #[[ATTR7]]
7878
; CHECK-NEXT: ret float [[CALL]]
7979
;
8080
%call = call float @llvm.amdgcn.log.f32(float %arg)
8181
ret float %call
8282
}
8383

8484
define float @ret_log_noninf(float nofpclass(ninf) %arg) #1 {
85-
; CHECK-LABEL: define float @ret_log_noninf(
85+
; CHECK-LABEL: define nofpclass(sub) float @ret_log_noninf(
8686
; CHECK-SAME: float nofpclass(ninf) [[ARG:%.*]]) #[[ATTR0]] {
87-
; CHECK-NEXT: [[CALL:%.*]] = call float @llvm.amdgcn.log.f32(float nofpclass(ninf) [[ARG]]) #[[ATTR7]]
87+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(sub) float @llvm.amdgcn.log.f32(float nofpclass(ninf) [[ARG]]) #[[ATTR7]]
8888
; CHECK-NEXT: ret float [[CALL]]
8989
;
9090
%call = call float @llvm.amdgcn.log.f32(float %arg)
9191
ret float %call
9292
}
9393

9494
define float @ret_log_nonan(float nofpclass(nan) %arg) #1 {
95-
; CHECK-LABEL: define float @ret_log_nonan(
95+
; CHECK-LABEL: define nofpclass(sub) float @ret_log_nonan(
9696
; CHECK-SAME: float nofpclass(nan) [[ARG:%.*]]) #[[ATTR0]] {
97-
; CHECK-NEXT: [[CALL:%.*]] = call float @llvm.amdgcn.log.f32(float nofpclass(nan) [[ARG]]) #[[ATTR7]]
97+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(sub) float @llvm.amdgcn.log.f32(float nofpclass(nan) [[ARG]]) #[[ATTR7]]
9898
; CHECK-NEXT: ret float [[CALL]]
9999
;
100100
%call = call float @llvm.amdgcn.log.f32(float %arg)
101101
ret float %call
102102
}
103103

104104
define float @ret_log_nonan_noinf(float nofpclass(nan inf) %arg) #1 {
105-
; CHECK-LABEL: define float @ret_log_nonan_noinf(
105+
; CHECK-LABEL: define nofpclass(pinf sub) float @ret_log_nonan_noinf(
106106
; CHECK-SAME: float nofpclass(nan inf) [[ARG:%.*]]) #[[ATTR0]] {
107-
; CHECK-NEXT: [[CALL:%.*]] = call float @llvm.amdgcn.log.f32(float nofpclass(nan inf) [[ARG]]) #[[ATTR7]]
107+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(pinf sub) float @llvm.amdgcn.log.f32(float nofpclass(nan inf) [[ARG]]) #[[ATTR7]]
108108
; CHECK-NEXT: ret float [[CALL]]
109109
;
110110
%call = call float @llvm.amdgcn.log.f32(float %arg)
111111
ret float %call
112112
}
113113

114114
define float @ret_log_nonan_noinf_nozero(float nofpclass(nan inf zero) %arg) #1 {
115-
; CHECK-LABEL: define float @ret_log_nonan_noinf_nozero(
115+
; CHECK-LABEL: define nofpclass(inf sub) float @ret_log_nonan_noinf_nozero(
116116
; CHECK-SAME: float nofpclass(nan inf zero) [[ARG:%.*]]) #[[ATTR0]] {
117-
; CHECK-NEXT: [[CALL:%.*]] = call float @llvm.amdgcn.log.f32(float nofpclass(nan inf zero) [[ARG]]) #[[ATTR7]]
117+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(inf sub) float @llvm.amdgcn.log.f32(float nofpclass(nan inf zero) [[ARG]]) #[[ATTR7]]
118118
; CHECK-NEXT: ret float [[CALL]]
119119
;
120120
%call = call float @llvm.amdgcn.log.f32(float %arg)
121121
ret float %call
122122
}
123123

124124
define float @ret_log_noinf_nozero(float nofpclass(inf zero) %arg) #1 {
125-
; CHECK-LABEL: define float @ret_log_noinf_nozero(
125+
; CHECK-LABEL: define nofpclass(inf sub) float @ret_log_noinf_nozero(
126126
; CHECK-SAME: float nofpclass(inf zero) [[ARG:%.*]]) #[[ATTR0]] {
127-
; CHECK-NEXT: [[CALL:%.*]] = call float @llvm.amdgcn.log.f32(float nofpclass(inf zero) [[ARG]]) #[[ATTR7]]
127+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(inf sub) float @llvm.amdgcn.log.f32(float nofpclass(inf zero) [[ARG]]) #[[ATTR7]]
128128
; CHECK-NEXT: ret float [[CALL]]
129129
;
130130
%call = call float @llvm.amdgcn.log.f32(float %arg)
131131
ret float %call
132132
}
133133

134134
define float @ret_log_noinf_nonegzero(float nofpclass(inf nzero) %arg) #1 {
135-
; CHECK-LABEL: define float @ret_log_noinf_nonegzero(
135+
; CHECK-LABEL: define nofpclass(pinf sub) float @ret_log_noinf_nonegzero(
136136
; CHECK-SAME: float nofpclass(inf nzero) [[ARG:%.*]]) #[[ATTR0]] {
137-
; CHECK-NEXT: [[CALL:%.*]] = call float @llvm.amdgcn.log.f32(float nofpclass(inf nzero) [[ARG]]) #[[ATTR7]]
137+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(pinf sub) float @llvm.amdgcn.log.f32(float nofpclass(inf nzero) [[ARG]]) #[[ATTR7]]
138138
; CHECK-NEXT: ret float [[CALL]]
139139
;
140140
%call = call float @llvm.amdgcn.log.f32(float %arg)
141141
ret float %call
142142
}
143143

144144
define float @ret_log_positive_source(i32 %arg) #1 {
145-
; CHECK-LABEL: define float @ret_log_positive_source(
145+
; CHECK-LABEL: define nofpclass(nan pinf sub) float @ret_log_positive_source(
146146
; CHECK-SAME: i32 [[ARG:%.*]]) #[[ATTR0]] {
147147
; CHECK-NEXT: [[UITOFP:%.*]] = uitofp i32 [[ARG]] to float
148-
; CHECK-NEXT: [[CALL:%.*]] = call float @llvm.amdgcn.log.f32(float [[UITOFP]]) #[[ATTR7]]
148+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(nan pinf sub) float @llvm.amdgcn.log.f32(float [[UITOFP]]) #[[ATTR7]]
149149
; CHECK-NEXT: ret float [[CALL]]
150150
;
151151
%uitofp = uitofp i32 %arg to float
@@ -154,10 +154,10 @@ define float @ret_log_positive_source(i32 %arg) #1 {
154154
}
155155

156156
define float @ret_log_unknown_sign(float nofpclass(nan) %arg, float nofpclass(nan) %arg1) #1 {
157-
; CHECK-LABEL: define float @ret_log_unknown_sign(
157+
; CHECK-LABEL: define nofpclass(sub) float @ret_log_unknown_sign(
158158
; CHECK-SAME: float nofpclass(nan) [[ARG:%.*]], float nofpclass(nan) [[ARG1:%.*]]) #[[ATTR0]] {
159159
; CHECK-NEXT: [[UNKNOWN_SIGN_NOT_NAN:%.*]] = fmul nnan float [[ARG]], [[ARG1]]
160-
; CHECK-NEXT: [[CALL:%.*]] = call float @llvm.amdgcn.log.f32(float [[UNKNOWN_SIGN_NOT_NAN]]) #[[ATTR7]]
160+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(sub) float @llvm.amdgcn.log.f32(float [[UNKNOWN_SIGN_NOT_NAN]]) #[[ATTR7]]
161161
; CHECK-NEXT: ret float [[CALL]]
162162
;
163163
%unknown.sign.not.nan = fmul nnan float %arg, %arg1
@@ -166,9 +166,9 @@ define float @ret_log_unknown_sign(float nofpclass(nan) %arg, float nofpclass(na
166166
}
167167

168168
define float @ret_log_daz_noinf_nozero(float nofpclass(inf zero) %arg) #2 {
169-
; CHECK-LABEL: define float @ret_log_daz_noinf_nozero(
169+
; CHECK-LABEL: define nofpclass(pinf sub) float @ret_log_daz_noinf_nozero(
170170
; CHECK-SAME: float nofpclass(inf zero) [[ARG:%.*]]) #[[ATTR1:[0-9]+]] {
171-
; CHECK-NEXT: [[CALL:%.*]] = call float @llvm.amdgcn.log.f32(float nofpclass(inf zero) [[ARG]]) #[[ATTR7]]
171+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(pinf sub) float @llvm.amdgcn.log.f32(float nofpclass(inf zero) [[ARG]]) #[[ATTR7]]
172172
; CHECK-NEXT: ret float [[CALL]]
173173
;
174174
%call = call float @llvm.amdgcn.log.f32(float %arg)
@@ -186,79 +186,79 @@ define <2 x float> @ret_log_daz_noinf_nozero_v2f32(<2 x float> nofpclass(inf zer
186186
}
187187

188188
define float @ret_log_daz_noinf_nonegzero(float nofpclass(inf nzero) %arg) #2 {
189-
; CHECK-LABEL: define float @ret_log_daz_noinf_nonegzero(
189+
; CHECK-LABEL: define nofpclass(pinf sub) float @ret_log_daz_noinf_nonegzero(
190190
; CHECK-SAME: float nofpclass(inf nzero) [[ARG:%.*]]) #[[ATTR1]] {
191-
; CHECK-NEXT: [[CALL:%.*]] = call float @llvm.amdgcn.log.f32(float nofpclass(inf nzero) [[ARG]]) #[[ATTR7]]
191+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(pinf sub) float @llvm.amdgcn.log.f32(float nofpclass(inf nzero) [[ARG]]) #[[ATTR7]]
192192
; CHECK-NEXT: ret float [[CALL]]
193193
;
194194
%call = call float @llvm.amdgcn.log.f32(float %arg)
195195
ret float %call
196196
}
197197

198198
define float @ret_log_dynamic_noinf_nozero(float nofpclass(inf zero) %arg) #3 {
199-
; CHECK-LABEL: define float @ret_log_dynamic_noinf_nozero(
199+
; CHECK-LABEL: define nofpclass(pinf sub) float @ret_log_dynamic_noinf_nozero(
200200
; CHECK-SAME: float nofpclass(inf zero) [[ARG:%.*]]) #[[ATTR2:[0-9]+]] {
201-
; CHECK-NEXT: [[CALL:%.*]] = call float @llvm.amdgcn.log.f32(float nofpclass(inf zero) [[ARG]]) #[[ATTR7]]
201+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(pinf sub) float @llvm.amdgcn.log.f32(float nofpclass(inf zero) [[ARG]]) #[[ATTR7]]
202202
; CHECK-NEXT: ret float [[CALL]]
203203
;
204204
%call = call float @llvm.amdgcn.log.f32(float %arg)
205205
ret float %call
206206
}
207207

208208
define float @ret_log_dynamic_noinf_nonegzero(float nofpclass(inf nzero) %arg) #3 {
209-
; CHECK-LABEL: define float @ret_log_dynamic_noinf_nonegzero(
209+
; CHECK-LABEL: define nofpclass(pinf sub) float @ret_log_dynamic_noinf_nonegzero(
210210
; CHECK-SAME: float nofpclass(inf nzero) [[ARG:%.*]]) #[[ATTR2]] {
211-
; CHECK-NEXT: [[CALL:%.*]] = call float @llvm.amdgcn.log.f32(float nofpclass(inf nzero) [[ARG]]) #[[ATTR7]]
211+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(pinf sub) float @llvm.amdgcn.log.f32(float nofpclass(inf nzero) [[ARG]]) #[[ATTR7]]
212212
; CHECK-NEXT: ret float [[CALL]]
213213
;
214214
%call = call float @llvm.amdgcn.log.f32(float %arg)
215215
ret float %call
216216
}
217217

218218
define float @ret_log_ftz_noinf_nonegzero(float nofpclass(inf nzero) %arg) #4 {
219-
; CHECK-LABEL: define float @ret_log_ftz_noinf_nonegzero(
219+
; CHECK-LABEL: define nofpclass(pinf sub) float @ret_log_ftz_noinf_nonegzero(
220220
; CHECK-SAME: float nofpclass(inf nzero) [[ARG:%.*]]) #[[ATTR3:[0-9]+]] {
221-
; CHECK-NEXT: [[CALL:%.*]] = call float @llvm.amdgcn.log.f32(float nofpclass(inf nzero) [[ARG]]) #[[ATTR7]]
221+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(pinf sub) float @llvm.amdgcn.log.f32(float nofpclass(inf nzero) [[ARG]]) #[[ATTR7]]
222222
; CHECK-NEXT: ret float [[CALL]]
223223
;
224224
%call = call float @llvm.amdgcn.log.f32(float %arg)
225225
ret float %call
226226
}
227227

228228
define float @ret_log_ftz_dynamic_noinf_nonegzero(float nofpclass(inf nzero) %arg) #5 {
229-
; CHECK-LABEL: define float @ret_log_ftz_dynamic_noinf_nonegzero(
229+
; CHECK-LABEL: define nofpclass(pinf sub) float @ret_log_ftz_dynamic_noinf_nonegzero(
230230
; CHECK-SAME: float nofpclass(inf nzero) [[ARG:%.*]]) #[[ATTR4:[0-9]+]] {
231-
; CHECK-NEXT: [[CALL:%.*]] = call float @llvm.amdgcn.log.f32(float nofpclass(inf nzero) [[ARG]]) #[[ATTR7]]
231+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(pinf sub) float @llvm.amdgcn.log.f32(float nofpclass(inf nzero) [[ARG]]) #[[ATTR7]]
232232
; CHECK-NEXT: ret float [[CALL]]
233233
;
234234
%call = call float @llvm.amdgcn.log.f32(float %arg)
235235
ret float %call
236236
}
237237

238238
define float @ret_log_dynamic_noinf_nozero_nosub(float nofpclass(inf zero sub) %arg) #3 {
239-
; CHECK-LABEL: define float @ret_log_dynamic_noinf_nozero_nosub(
239+
; CHECK-LABEL: define nofpclass(inf sub) float @ret_log_dynamic_noinf_nozero_nosub(
240240
; CHECK-SAME: float nofpclass(inf zero sub) [[ARG:%.*]]) #[[ATTR2]] {
241-
; CHECK-NEXT: [[CALL:%.*]] = call float @llvm.amdgcn.log.f32(float nofpclass(inf zero sub) [[ARG]]) #[[ATTR7]]
241+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(inf sub) float @llvm.amdgcn.log.f32(float nofpclass(inf zero sub) [[ARG]]) #[[ATTR7]]
242242
; CHECK-NEXT: ret float [[CALL]]
243243
;
244244
%call = call float @llvm.amdgcn.log.f32(float %arg)
245245
ret float %call
246246
}
247247

248248
define float @ret_log_dynamic_noinf_nopzero_nopsub(float nofpclass(inf pzero psub) %arg) #3 {
249-
; CHECK-LABEL: define float @ret_log_dynamic_noinf_nopzero_nopsub(
249+
; CHECK-LABEL: define nofpclass(pinf sub) float @ret_log_dynamic_noinf_nopzero_nopsub(
250250
; CHECK-SAME: float nofpclass(inf pzero psub) [[ARG:%.*]]) #[[ATTR2]] {
251-
; CHECK-NEXT: [[CALL:%.*]] = call float @llvm.amdgcn.log.f32(float nofpclass(inf pzero psub) [[ARG]]) #[[ATTR7]]
251+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(pinf sub) float @llvm.amdgcn.log.f32(float nofpclass(inf pzero psub) [[ARG]]) #[[ATTR7]]
252252
; CHECK-NEXT: ret float [[CALL]]
253253
;
254254
%call = call float @llvm.amdgcn.log.f32(float %arg)
255255
ret float %call
256256
}
257257

258258
define float @ret_log_dynamic_noinf_nonzero_nonsub(float nofpclass(inf nzero nsub) %arg) #3 {
259-
; CHECK-LABEL: define float @ret_log_dynamic_noinf_nonzero_nonsub(
259+
; CHECK-LABEL: define nofpclass(pinf sub) float @ret_log_dynamic_noinf_nonzero_nonsub(
260260
; CHECK-SAME: float nofpclass(inf nzero nsub) [[ARG:%.*]]) #[[ATTR2]] {
261-
; CHECK-NEXT: [[CALL:%.*]] = call float @llvm.amdgcn.log.f32(float nofpclass(inf nzero nsub) [[ARG]]) #[[ATTR7]]
261+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(pinf sub) float @llvm.amdgcn.log.f32(float nofpclass(inf nzero nsub) [[ARG]]) #[[ATTR7]]
262262
; CHECK-NEXT: ret float [[CALL]]
263263
;
264264
%call = call float @llvm.amdgcn.log.f32(float %arg)

0 commit comments

Comments
 (0)