@@ -1168,11 +1168,33 @@ define float @v_exp2_fneg_f32(float %in) {
1168
1168
}
1169
1169
1170
1170
define float @v_exp2_f32_fast (float %in ) {
1171
- ; GCN-LABEL: v_exp2_f32_fast:
1172
- ; GCN: ; %bb.0:
1173
- ; GCN-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1174
- ; GCN-NEXT: v_exp_f32_e32 v0, v0
1175
- ; GCN-NEXT: s_setpc_b64 s[30:31]
1171
+ ; GCN-SDAG-LABEL: v_exp2_f32_fast:
1172
+ ; GCN-SDAG: ; %bb.0:
1173
+ ; GCN-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1174
+ ; GCN-SDAG-NEXT: s_mov_b32 s4, 0xc2fc0000
1175
+ ; GCN-SDAG-NEXT: v_cmp_gt_f32_e32 vcc, s4, v0
1176
+ ; GCN-SDAG-NEXT: v_mov_b32_e32 v2, 0x42800000
1177
+ ; GCN-SDAG-NEXT: v_cndmask_b32_e32 v2, 0, v2, vcc
1178
+ ; GCN-SDAG-NEXT: v_add_f32_e32 v0, v0, v2
1179
+ ; GCN-SDAG-NEXT: v_exp_f32_e32 v0, v0
1180
+ ; GCN-SDAG-NEXT: v_mov_b32_e32 v1, 0x1f800000
1181
+ ; GCN-SDAG-NEXT: v_cndmask_b32_e32 v1, 1.0, v1, vcc
1182
+ ; GCN-SDAG-NEXT: v_mul_f32_e32 v0, v0, v1
1183
+ ; GCN-SDAG-NEXT: s_setpc_b64 s[30:31]
1184
+ ;
1185
+ ; GCN-GISEL-LABEL: v_exp2_f32_fast:
1186
+ ; GCN-GISEL: ; %bb.0:
1187
+ ; GCN-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1188
+ ; GCN-GISEL-NEXT: v_mov_b32_e32 v1, 0xc2fc0000
1189
+ ; GCN-GISEL-NEXT: v_mov_b32_e32 v2, 0x42800000
1190
+ ; GCN-GISEL-NEXT: v_cmp_lt_f32_e32 vcc, v0, v1
1191
+ ; GCN-GISEL-NEXT: v_cndmask_b32_e32 v1, 0, v2, vcc
1192
+ ; GCN-GISEL-NEXT: v_add_f32_e32 v0, v0, v1
1193
+ ; GCN-GISEL-NEXT: v_exp_f32_e32 v0, v0
1194
+ ; GCN-GISEL-NEXT: v_mov_b32_e32 v1, 0x1f800000
1195
+ ; GCN-GISEL-NEXT: v_cndmask_b32_e32 v1, 1.0, v1, vcc
1196
+ ; GCN-GISEL-NEXT: v_mul_f32_e32 v0, v0, v1
1197
+ ; GCN-GISEL-NEXT: s_setpc_b64 s[30:31]
1176
1198
;
1177
1199
; R600-LABEL: v_exp2_f32_fast:
1178
1200
; R600: ; %bb.0:
@@ -1188,11 +1210,33 @@ define float @v_exp2_f32_fast(float %in) {
1188
1210
}
1189
1211
1190
1212
define float @v_exp2_f32_unsafe_math_attr (float %in ) "unsafe-fp-math" ="true" {
1191
- ; GCN-LABEL: v_exp2_f32_unsafe_math_attr:
1192
- ; GCN: ; %bb.0:
1193
- ; GCN-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1194
- ; GCN-NEXT: v_exp_f32_e32 v0, v0
1195
- ; GCN-NEXT: s_setpc_b64 s[30:31]
1213
+ ; GCN-SDAG-LABEL: v_exp2_f32_unsafe_math_attr:
1214
+ ; GCN-SDAG: ; %bb.0:
1215
+ ; GCN-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1216
+ ; GCN-SDAG-NEXT: s_mov_b32 s4, 0xc2fc0000
1217
+ ; GCN-SDAG-NEXT: v_cmp_gt_f32_e32 vcc, s4, v0
1218
+ ; GCN-SDAG-NEXT: v_mov_b32_e32 v2, 0x42800000
1219
+ ; GCN-SDAG-NEXT: v_cndmask_b32_e32 v2, 0, v2, vcc
1220
+ ; GCN-SDAG-NEXT: v_add_f32_e32 v0, v0, v2
1221
+ ; GCN-SDAG-NEXT: v_exp_f32_e32 v0, v0
1222
+ ; GCN-SDAG-NEXT: v_mov_b32_e32 v1, 0x1f800000
1223
+ ; GCN-SDAG-NEXT: v_cndmask_b32_e32 v1, 1.0, v1, vcc
1224
+ ; GCN-SDAG-NEXT: v_mul_f32_e32 v0, v0, v1
1225
+ ; GCN-SDAG-NEXT: s_setpc_b64 s[30:31]
1226
+ ;
1227
+ ; GCN-GISEL-LABEL: v_exp2_f32_unsafe_math_attr:
1228
+ ; GCN-GISEL: ; %bb.0:
1229
+ ; GCN-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1230
+ ; GCN-GISEL-NEXT: v_mov_b32_e32 v1, 0xc2fc0000
1231
+ ; GCN-GISEL-NEXT: v_mov_b32_e32 v2, 0x42800000
1232
+ ; GCN-GISEL-NEXT: v_cmp_lt_f32_e32 vcc, v0, v1
1233
+ ; GCN-GISEL-NEXT: v_cndmask_b32_e32 v1, 0, v2, vcc
1234
+ ; GCN-GISEL-NEXT: v_add_f32_e32 v0, v0, v1
1235
+ ; GCN-GISEL-NEXT: v_exp_f32_e32 v0, v0
1236
+ ; GCN-GISEL-NEXT: v_mov_b32_e32 v1, 0x1f800000
1237
+ ; GCN-GISEL-NEXT: v_cndmask_b32_e32 v1, 1.0, v1, vcc
1238
+ ; GCN-GISEL-NEXT: v_mul_f32_e32 v0, v0, v1
1239
+ ; GCN-GISEL-NEXT: s_setpc_b64 s[30:31]
1196
1240
;
1197
1241
; R600-LABEL: v_exp2_f32_unsafe_math_attr:
1198
1242
; R600: ; %bb.0:
@@ -1208,11 +1252,33 @@ define float @v_exp2_f32_unsafe_math_attr(float %in) "unsafe-fp-math"="true" {
1208
1252
}
1209
1253
1210
1254
define float @v_exp2_f32_approx_fn_attr (float %in ) "approx-func-fp-math" ="true" {
1211
- ; GCN-LABEL: v_exp2_f32_approx_fn_attr:
1212
- ; GCN: ; %bb.0:
1213
- ; GCN-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1214
- ; GCN-NEXT: v_exp_f32_e32 v0, v0
1215
- ; GCN-NEXT: s_setpc_b64 s[30:31]
1255
+ ; GCN-SDAG-LABEL: v_exp2_f32_approx_fn_attr:
1256
+ ; GCN-SDAG: ; %bb.0:
1257
+ ; GCN-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1258
+ ; GCN-SDAG-NEXT: s_mov_b32 s4, 0xc2fc0000
1259
+ ; GCN-SDAG-NEXT: v_cmp_gt_f32_e32 vcc, s4, v0
1260
+ ; GCN-SDAG-NEXT: v_mov_b32_e32 v2, 0x42800000
1261
+ ; GCN-SDAG-NEXT: v_cndmask_b32_e32 v2, 0, v2, vcc
1262
+ ; GCN-SDAG-NEXT: v_add_f32_e32 v0, v0, v2
1263
+ ; GCN-SDAG-NEXT: v_exp_f32_e32 v0, v0
1264
+ ; GCN-SDAG-NEXT: v_mov_b32_e32 v1, 0x1f800000
1265
+ ; GCN-SDAG-NEXT: v_cndmask_b32_e32 v1, 1.0, v1, vcc
1266
+ ; GCN-SDAG-NEXT: v_mul_f32_e32 v0, v0, v1
1267
+ ; GCN-SDAG-NEXT: s_setpc_b64 s[30:31]
1268
+ ;
1269
+ ; GCN-GISEL-LABEL: v_exp2_f32_approx_fn_attr:
1270
+ ; GCN-GISEL: ; %bb.0:
1271
+ ; GCN-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1272
+ ; GCN-GISEL-NEXT: v_mov_b32_e32 v1, 0xc2fc0000
1273
+ ; GCN-GISEL-NEXT: v_mov_b32_e32 v2, 0x42800000
1274
+ ; GCN-GISEL-NEXT: v_cmp_lt_f32_e32 vcc, v0, v1
1275
+ ; GCN-GISEL-NEXT: v_cndmask_b32_e32 v1, 0, v2, vcc
1276
+ ; GCN-GISEL-NEXT: v_add_f32_e32 v0, v0, v1
1277
+ ; GCN-GISEL-NEXT: v_exp_f32_e32 v0, v0
1278
+ ; GCN-GISEL-NEXT: v_mov_b32_e32 v1, 0x1f800000
1279
+ ; GCN-GISEL-NEXT: v_cndmask_b32_e32 v1, 1.0, v1, vcc
1280
+ ; GCN-GISEL-NEXT: v_mul_f32_e32 v0, v0, v1
1281
+ ; GCN-GISEL-NEXT: s_setpc_b64 s[30:31]
1216
1282
;
1217
1283
; R600-LABEL: v_exp2_f32_approx_fn_attr:
1218
1284
; R600: ; %bb.0:
@@ -1270,11 +1336,33 @@ define float @v_exp2_f32_ninf(float %in) {
1270
1336
}
1271
1337
1272
1338
define float @v_exp2_f32_afn (float %in ) {
1273
- ; GCN-LABEL: v_exp2_f32_afn:
1274
- ; GCN: ; %bb.0:
1275
- ; GCN-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1276
- ; GCN-NEXT: v_exp_f32_e32 v0, v0
1277
- ; GCN-NEXT: s_setpc_b64 s[30:31]
1339
+ ; GCN-SDAG-LABEL: v_exp2_f32_afn:
1340
+ ; GCN-SDAG: ; %bb.0:
1341
+ ; GCN-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1342
+ ; GCN-SDAG-NEXT: s_mov_b32 s4, 0xc2fc0000
1343
+ ; GCN-SDAG-NEXT: v_cmp_gt_f32_e32 vcc, s4, v0
1344
+ ; GCN-SDAG-NEXT: v_mov_b32_e32 v2, 0x42800000
1345
+ ; GCN-SDAG-NEXT: v_cndmask_b32_e32 v2, 0, v2, vcc
1346
+ ; GCN-SDAG-NEXT: v_add_f32_e32 v0, v0, v2
1347
+ ; GCN-SDAG-NEXT: v_exp_f32_e32 v0, v0
1348
+ ; GCN-SDAG-NEXT: v_mov_b32_e32 v1, 0x1f800000
1349
+ ; GCN-SDAG-NEXT: v_cndmask_b32_e32 v1, 1.0, v1, vcc
1350
+ ; GCN-SDAG-NEXT: v_mul_f32_e32 v0, v0, v1
1351
+ ; GCN-SDAG-NEXT: s_setpc_b64 s[30:31]
1352
+ ;
1353
+ ; GCN-GISEL-LABEL: v_exp2_f32_afn:
1354
+ ; GCN-GISEL: ; %bb.0:
1355
+ ; GCN-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1356
+ ; GCN-GISEL-NEXT: v_mov_b32_e32 v1, 0xc2fc0000
1357
+ ; GCN-GISEL-NEXT: v_mov_b32_e32 v2, 0x42800000
1358
+ ; GCN-GISEL-NEXT: v_cmp_lt_f32_e32 vcc, v0, v1
1359
+ ; GCN-GISEL-NEXT: v_cndmask_b32_e32 v1, 0, v2, vcc
1360
+ ; GCN-GISEL-NEXT: v_add_f32_e32 v0, v0, v1
1361
+ ; GCN-GISEL-NEXT: v_exp_f32_e32 v0, v0
1362
+ ; GCN-GISEL-NEXT: v_mov_b32_e32 v1, 0x1f800000
1363
+ ; GCN-GISEL-NEXT: v_cndmask_b32_e32 v1, 1.0, v1, vcc
1364
+ ; GCN-GISEL-NEXT: v_mul_f32_e32 v0, v0, v1
1365
+ ; GCN-GISEL-NEXT: s_setpc_b64 s[30:31]
1278
1366
;
1279
1367
; R600-LABEL: v_exp2_f32_afn:
1280
1368
; R600: ; %bb.0:
@@ -1310,11 +1398,33 @@ define float @v_exp2_f32_afn_daz(float %in) #0 {
1310
1398
}
1311
1399
1312
1400
define float @v_exp2_f32_afn_dynamic (float %in ) #1 {
1313
- ; GCN-LABEL: v_exp2_f32_afn_dynamic:
1314
- ; GCN: ; %bb.0:
1315
- ; GCN-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1316
- ; GCN-NEXT: v_exp_f32_e32 v0, v0
1317
- ; GCN-NEXT: s_setpc_b64 s[30:31]
1401
+ ; GCN-SDAG-LABEL: v_exp2_f32_afn_dynamic:
1402
+ ; GCN-SDAG: ; %bb.0:
1403
+ ; GCN-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1404
+ ; GCN-SDAG-NEXT: s_mov_b32 s4, 0xc2fc0000
1405
+ ; GCN-SDAG-NEXT: v_cmp_gt_f32_e32 vcc, s4, v0
1406
+ ; GCN-SDAG-NEXT: v_mov_b32_e32 v2, 0x42800000
1407
+ ; GCN-SDAG-NEXT: v_cndmask_b32_e32 v2, 0, v2, vcc
1408
+ ; GCN-SDAG-NEXT: v_add_f32_e32 v0, v0, v2
1409
+ ; GCN-SDAG-NEXT: v_exp_f32_e32 v0, v0
1410
+ ; GCN-SDAG-NEXT: v_mov_b32_e32 v1, 0x1f800000
1411
+ ; GCN-SDAG-NEXT: v_cndmask_b32_e32 v1, 1.0, v1, vcc
1412
+ ; GCN-SDAG-NEXT: v_mul_f32_e32 v0, v0, v1
1413
+ ; GCN-SDAG-NEXT: s_setpc_b64 s[30:31]
1414
+ ;
1415
+ ; GCN-GISEL-LABEL: v_exp2_f32_afn_dynamic:
1416
+ ; GCN-GISEL: ; %bb.0:
1417
+ ; GCN-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1418
+ ; GCN-GISEL-NEXT: v_mov_b32_e32 v1, 0xc2fc0000
1419
+ ; GCN-GISEL-NEXT: v_mov_b32_e32 v2, 0x42800000
1420
+ ; GCN-GISEL-NEXT: v_cmp_lt_f32_e32 vcc, v0, v1
1421
+ ; GCN-GISEL-NEXT: v_cndmask_b32_e32 v1, 0, v2, vcc
1422
+ ; GCN-GISEL-NEXT: v_add_f32_e32 v0, v0, v1
1423
+ ; GCN-GISEL-NEXT: v_exp_f32_e32 v0, v0
1424
+ ; GCN-GISEL-NEXT: v_mov_b32_e32 v1, 0x1f800000
1425
+ ; GCN-GISEL-NEXT: v_cndmask_b32_e32 v1, 1.0, v1, vcc
1426
+ ; GCN-GISEL-NEXT: v_mul_f32_e32 v0, v0, v1
1427
+ ; GCN-GISEL-NEXT: s_setpc_b64 s[30:31]
1318
1428
;
1319
1429
; R600-LABEL: v_exp2_f32_afn_dynamic:
1320
1430
; R600: ; %bb.0:
@@ -1330,11 +1440,33 @@ define float @v_exp2_f32_afn_dynamic(float %in) #1 {
1330
1440
}
1331
1441
1332
1442
define float @v_fabs_exp2_f32_afn (float %in ) {
1333
- ; GCN-LABEL: v_fabs_exp2_f32_afn:
1334
- ; GCN: ; %bb.0:
1335
- ; GCN-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1336
- ; GCN-NEXT: v_exp_f32_e64 v0, |v0|
1337
- ; GCN-NEXT: s_setpc_b64 s[30:31]
1443
+ ; GCN-SDAG-LABEL: v_fabs_exp2_f32_afn:
1444
+ ; GCN-SDAG: ; %bb.0:
1445
+ ; GCN-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1446
+ ; GCN-SDAG-NEXT: s_mov_b32 s4, 0xc2fc0000
1447
+ ; GCN-SDAG-NEXT: v_cmp_lt_f32_e64 vcc, |v0|, s4
1448
+ ; GCN-SDAG-NEXT: v_mov_b32_e32 v2, 0x42800000
1449
+ ; GCN-SDAG-NEXT: v_cndmask_b32_e32 v2, 0, v2, vcc
1450
+ ; GCN-SDAG-NEXT: v_add_f32_e64 v0, |v0|, v2
1451
+ ; GCN-SDAG-NEXT: v_exp_f32_e32 v0, v0
1452
+ ; GCN-SDAG-NEXT: v_mov_b32_e32 v1, 0x1f800000
1453
+ ; GCN-SDAG-NEXT: v_cndmask_b32_e32 v1, 1.0, v1, vcc
1454
+ ; GCN-SDAG-NEXT: v_mul_f32_e32 v0, v0, v1
1455
+ ; GCN-SDAG-NEXT: s_setpc_b64 s[30:31]
1456
+ ;
1457
+ ; GCN-GISEL-LABEL: v_fabs_exp2_f32_afn:
1458
+ ; GCN-GISEL: ; %bb.0:
1459
+ ; GCN-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1460
+ ; GCN-GISEL-NEXT: v_mov_b32_e32 v1, 0xc2fc0000
1461
+ ; GCN-GISEL-NEXT: v_mov_b32_e32 v2, 0x42800000
1462
+ ; GCN-GISEL-NEXT: v_cmp_lt_f32_e64 vcc, |v0|, v1
1463
+ ; GCN-GISEL-NEXT: v_cndmask_b32_e32 v1, 0, v2, vcc
1464
+ ; GCN-GISEL-NEXT: v_add_f32_e64 v0, |v0|, v1
1465
+ ; GCN-GISEL-NEXT: v_exp_f32_e32 v0, v0
1466
+ ; GCN-GISEL-NEXT: v_mov_b32_e32 v1, 0x1f800000
1467
+ ; GCN-GISEL-NEXT: v_cndmask_b32_e32 v1, 1.0, v1, vcc
1468
+ ; GCN-GISEL-NEXT: v_mul_f32_e32 v0, v0, v1
1469
+ ; GCN-GISEL-NEXT: s_setpc_b64 s[30:31]
1338
1470
;
1339
1471
; R600-LABEL: v_fabs_exp2_f32_afn:
1340
1472
; R600: ; %bb.0:
0 commit comments