@@ -1396,42 +1396,35 @@ llvm.func @omp_atomic_read_implicit_cast () {
1396
1396
1397
1397
//CHECK: call void @__atomic_load(i64 8, ptr %[[X_ELEMENT]], ptr %[[ATOMIC_LOAD_TEMP]], i32 0)
1398
1398
//CHECK: %[[LOAD:.*]] = load { float, float }, ptr %[[ATOMIC_LOAD_TEMP]], align 8
1399
- //CHECK: %[[EXT:.*]] = extractvalue { float, float } %[[LOAD]], 0
1400
- //CHECK: store float %[[EXT]], ptr %[[Y]], align 4
1399
+ //CHECK: store { float, float } %[[LOAD]], ptr %[[Y]], align 4
1401
1400
omp.atomic.read %3 = %17 : !llvm.ptr , !llvm.ptr , !llvm.struct <(f32 , f32 )>
1402
1401
1403
1402
//CHECK: %[[ATOMIC_LOAD_TEMP:.*]] = load atomic i32, ptr %[[Z]] monotonic, align 4
1404
1403
//CHECK: %[[CAST:.*]] = bitcast i32 %[[ATOMIC_LOAD_TEMP]] to float
1405
- //CHECK: %[[LOAD:.*]] = fpext float %[[CAST]] to double
1406
- //CHECK: store double %[[LOAD]], ptr %[[Y]], align 8
1404
+ //CHECK: store float %[[CAST]], ptr %[[Y]], align 4
1407
1405
omp.atomic.read %3 = %1 : !llvm.ptr , !llvm.ptr , f32
1408
1406
1409
1407
//CHECK: %[[ATOMIC_LOAD_TEMP:.*]] = load atomic i32, ptr %[[W]] monotonic, align 4
1410
- //CHECK: %[[LOAD:.*]] = sitofp i32 %[[ATOMIC_LOAD_TEMP]] to double
1411
- //CHECK: store double %[[LOAD]], ptr %[[Y]], align 8
1408
+ //CHECK: store i32 %[[ATOMIC_LOAD_TEMP]], ptr %[[Y]], align 4
1412
1409
omp.atomic.read %3 = %7 : !llvm.ptr , !llvm.ptr , i32
1413
1410
1414
1411
//CHECK: %[[ATOMIC_LOAD_TEMP:.*]] = load atomic i64, ptr %[[Y]] monotonic, align 4
1415
1412
//CHECK: %[[CAST:.*]] = bitcast i64 %[[ATOMIC_LOAD_TEMP]] to double
1416
- //CHECK: %[[LOAD:.*]] = fptrunc double %[[CAST]] to float
1417
- //CHECK: store float %[[LOAD]], ptr %[[Z]], align 4
1413
+ //CHECK: store double %[[CAST]], ptr %[[Z]], align 8
1418
1414
omp.atomic.read %1 = %3 : !llvm.ptr , !llvm.ptr , f64
1419
1415
1420
1416
//CHECK: %[[ATOMIC_LOAD_TEMP:.*]] = load atomic i32, ptr %[[W]] monotonic, align 4
1421
- //CHECK: %[[LOAD:.*]] = sitofp i32 %[[ATOMIC_LOAD_TEMP]] to float
1422
- //CHECK: store float %[[LOAD]], ptr %[[Z]], align 4
1417
+ //CHECK: store i32 %[[ATOMIC_LOAD_TEMP]], ptr %[[Z]], align 4
1423
1418
omp.atomic.read %1 = %7 : !llvm.ptr , !llvm.ptr , i32
1424
1419
1425
1420
//CHECK: %[[ATOMIC_LOAD_TEMP:.*]] = load atomic i64, ptr %[[Y]] monotonic, align 4
1426
1421
//CHECK: %[[CAST:.*]] = bitcast i64 %[[ATOMIC_LOAD_TEMP]] to double
1427
- //CHECK: %[[LOAD:.*]] = fptosi double %[[CAST]] to i32
1428
- //CHECK: store i32 %[[LOAD]], ptr %[[W]], align 4
1422
+ //CHECK: store double %[[CAST]], ptr %[[W]], align 8
1429
1423
omp.atomic.read %7 = %3 : !llvm.ptr , !llvm.ptr , f64
1430
1424
1431
1425
//CHECK: %[[ATOMIC_LOAD_TEMP:.*]] = load atomic i32, ptr %[[Z]] monotonic, align 4
1432
1426
//CHECK: %[[CAST:.*]] = bitcast i32 %[[ATOMIC_LOAD_TEMP]] to float
1433
- //CHECK: %[[LOAD:.*]] = fptosi float %[[CAST]] to i32
1434
- //CHECK: store i32 %[[LOAD]], ptr %[[W]], align 4
1427
+ //CHECK: store float %[[CAST]], ptr %[[W]], align 4
1435
1428
omp.atomic.read %7 = %1 : !llvm.ptr , !llvm.ptr , f32
1436
1429
llvm.return
1437
1430
}
0 commit comments