brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.5 KiB · cc4104d Raw
50 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -S -mtriple=armv7-apple-ios7.0 -passes=atomic-expand %s | FileCheck %s3 4define float @test_atomicrmw_fadd_f32(ptr %ptr, float %value) {5; CHECK-LABEL: @test_atomicrmw_fadd_f32(6; CHECK-NEXT:    call void @llvm.arm.dmb(i32 11)7; CHECK-NEXT:    [[TMP1:%.*]] = load float, ptr [[PTR:%.*]], align 48; CHECK-NEXT:    br label [[ATOMICRMW_START:%.*]]9; CHECK:       atomicrmw.start:10; CHECK-NEXT:    [[LOADED:%.*]] = phi float [ [[TMP1]], [[TMP0:%.*]] ], [ [[TMP5:%.*]], [[ATOMICRMW_START]] ]11; CHECK-NEXT:    [[NEW:%.*]] = fadd float [[LOADED]], [[VALUE:%.*]]12; CHECK-NEXT:    [[TMP2:%.*]] = bitcast float [[NEW]] to i3213; CHECK-NEXT:    [[TMP3:%.*]] = bitcast float [[LOADED]] to i3214; CHECK-NEXT:    [[TMP4:%.*]] = cmpxchg ptr [[PTR]], i32 [[TMP3]], i32 [[TMP2]] monotonic monotonic, align 415; CHECK-NEXT:    [[SUCCESS:%.*]] = extractvalue { i32, i1 } [[TMP4]], 116; CHECK-NEXT:    [[NEWLOADED:%.*]] = extractvalue { i32, i1 } [[TMP4]], 017; CHECK-NEXT:    [[TMP5]] = bitcast i32 [[NEWLOADED]] to float18; CHECK-NEXT:    br i1 [[SUCCESS]], label [[ATOMICRMW_END:%.*]], label [[ATOMICRMW_START]]19; CHECK:       atomicrmw.end:20; CHECK-NEXT:    call void @llvm.arm.dmb(i32 11)21; CHECK-NEXT:    ret float [[TMP5]]22;23  %res = atomicrmw fadd ptr %ptr, float %value seq_cst24  ret float %res25}26 27define float @test_atomicrmw_fsub_f32(ptr %ptr, float %value) {28; CHECK-LABEL: @test_atomicrmw_fsub_f32(29; CHECK-NEXT:    call void @llvm.arm.dmb(i32 11)30; CHECK-NEXT:    [[TMP1:%.*]] = load float, ptr [[PTR:%.*]], align 431; CHECK-NEXT:    br label [[ATOMICRMW_START:%.*]]32; CHECK:       atomicrmw.start:33; CHECK-NEXT:    [[LOADED:%.*]] = phi float [ [[TMP1]], [[TMP0:%.*]] ], [ [[TMP5:%.*]], [[ATOMICRMW_START]] ]34; CHECK-NEXT:    [[NEW:%.*]] = fsub float [[LOADED]], [[VALUE:%.*]]35; CHECK-NEXT:    [[TMP2:%.*]] = bitcast float [[NEW]] to i3236; CHECK-NEXT:    [[TMP3:%.*]] = bitcast float [[LOADED]] to i3237; CHECK-NEXT:    [[TMP4:%.*]] = cmpxchg ptr [[PTR]], i32 [[TMP3]], i32 [[TMP2]] monotonic monotonic, align 438; CHECK-NEXT:    [[SUCCESS:%.*]] = extractvalue { i32, i1 } [[TMP4]], 139; CHECK-NEXT:    [[NEWLOADED:%.*]] = extractvalue { i32, i1 } [[TMP4]], 040; CHECK-NEXT:    [[TMP5]] = bitcast i32 [[NEWLOADED]] to float41; CHECK-NEXT:    br i1 [[SUCCESS]], label [[ATOMICRMW_END:%.*]], label [[ATOMICRMW_START]]42; CHECK:       atomicrmw.end:43; CHECK-NEXT:    call void @llvm.arm.dmb(i32 11)44; CHECK-NEXT:    ret float [[TMP5]]45;46  %res = atomicrmw fsub ptr %ptr, float %value seq_cst47  ret float %res48}49 50