brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.2 KiB · 9ceec51 Raw
164 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --include-generated-funcs2; RUN: opt -S -passes=verify,iroutliner -ir-outlining-no-cost < %s | FileCheck %s3 4declare void @foo();5 6define void @atomicrmw_base(ptr %p) {7entry:8  %1 = atomicrmw add ptr %p, i32 1 acquire, align 89  call void @foo()10  ret void11}12 13define void @atomicrmw_copy(ptr %p) {14entry:15  %1 = atomicrmw add ptr %p, i32 1 acquire, align 816  call void @foo()17  ret void18}19 20define void @atomicrmw_wrong_type(ptr %p) {21entry:22  %1 = atomicrmw add ptr %p, i64 1 acquire, align 823  call void @foo()24  ret void25}26 27define void @atomicrmw_wrong_align(ptr %p) {28entry:29  %1 = atomicrmw add ptr %p, i32 1 acquire, align 430  call void @foo()31  ret void32}33 34define void @atomicrmw_wrong_volatile(ptr %p) {35entry:36  %1 = atomicrmw volatile add ptr %p, i32 1 acquire, align 837  call void @foo()38  ret void39}40 41define void @cmpxchg_base(ptr %p) {42entry:43  %1 = cmpxchg ptr %p, i32 0, i32 1 monotonic monotonic, align 844  call void @foo()45  ret void46}47 48define void @cmpxchg_copy(ptr %p) {49entry:50  %1 = cmpxchg ptr %p, i32 0, i32 1 monotonic monotonic, align 851  call void @foo()52  ret void53}54 55define void @cmpxchg_wrong_type(ptr %p) {56entry:57  %1 = cmpxchg ptr %p, i64 0, i64 1 monotonic monotonic, align 858  call void @foo()59  ret void60}61 62define void @cmpxchg_wrong_align(ptr %p) {63entry:64  %1 = cmpxchg ptr %p, i32 0, i32 1 monotonic monotonic, align 465  call void @foo()66  ret void67}68 69define void @cmpxchg_wrong_volatile(ptr %p) {70entry:71  %1 = cmpxchg volatile ptr %p, i32 0, i32 1 monotonic monotonic, align 872  call void @foo()73  ret void74}75 76 77; CHECK-LABEL: @atomicrmw_base(78; CHECK-NEXT:  entry:79; CHECK-NEXT:    call void @outlined_ir_func_1(ptr [[P:%.*]])80; CHECK-NEXT:    ret void81;82;83; CHECK-LABEL: @atomicrmw_copy(84; CHECK-NEXT:  entry:85; CHECK-NEXT:    call void @outlined_ir_func_1(ptr [[P:%.*]])86; CHECK-NEXT:    ret void87;88;89; CHECK-LABEL: @atomicrmw_wrong_type(90; CHECK-NEXT:  entry:91; CHECK-NEXT:    [[TMP0:%.*]] = atomicrmw add ptr [[P:%.*]], i64 1 acquire, align 892; CHECK-NEXT:    call void @foo()93; CHECK-NEXT:    ret void94;95;96; CHECK-LABEL: @atomicrmw_wrong_align(97; CHECK-NEXT:  entry:98; CHECK-NEXT:    [[TMP0:%.*]] = atomicrmw add ptr [[P:%.*]], i32 1 acquire, align 499; CHECK-NEXT:    call void @foo()100; CHECK-NEXT:    ret void101;102;103; CHECK-LABEL: @atomicrmw_wrong_volatile(104; CHECK-NEXT:  entry:105; CHECK-NEXT:    [[TMP0:%.*]] = atomicrmw volatile add ptr [[P:%.*]], i32 1 acquire, align 8106; CHECK-NEXT:    call void @foo()107; CHECK-NEXT:    ret void108;109;110; CHECK-LABEL: @cmpxchg_base(111; CHECK-NEXT:  entry:112; CHECK-NEXT:    call void @outlined_ir_func_0(ptr [[P:%.*]])113; CHECK-NEXT:    ret void114;115;116; CHECK-LABEL: @cmpxchg_copy(117; CHECK-NEXT:  entry:118; CHECK-NEXT:    call void @outlined_ir_func_0(ptr [[P:%.*]])119; CHECK-NEXT:    ret void120;121;122; CHECK-LABEL: @cmpxchg_wrong_type(123; CHECK-NEXT:  entry:124; CHECK-NEXT:    [[TMP0:%.*]] = cmpxchg ptr [[P:%.*]], i64 0, i64 1 monotonic monotonic, align 8125; CHECK-NEXT:    call void @foo()126; CHECK-NEXT:    ret void127;128;129; CHECK-LABEL: @cmpxchg_wrong_align(130; CHECK-NEXT:  entry:131; CHECK-NEXT:    [[TMP0:%.*]] = cmpxchg ptr [[P:%.*]], i32 0, i32 1 monotonic monotonic, align 4132; CHECK-NEXT:    call void @foo()133; CHECK-NEXT:    ret void134;135;136; CHECK-LABEL: @cmpxchg_wrong_volatile(137; CHECK-NEXT:  entry:138; CHECK-NEXT:    [[TMP0:%.*]] = cmpxchg volatile ptr [[P:%.*]], i32 0, i32 1 monotonic monotonic, align 8139; CHECK-NEXT:    call void @foo()140; CHECK-NEXT:    ret void141;142;143; CHECK-LABEL: @outlined_ir_func_0(144; CHECK-NEXT:  newFuncRoot:145; CHECK-NEXT:    br label [[ENTRY_TO_OUTLINE:%.*]]146; CHECK:       entry_to_outline:147; CHECK-NEXT:    [[TMP1:%.*]] = cmpxchg ptr [[TMP0:%.*]], i32 0, i32 1 monotonic monotonic, align 8148; CHECK-NEXT:    call void @foo()149; CHECK-NEXT:    br label [[ENTRY_AFTER_OUTLINE_EXITSTUB:%.*]]150; CHECK:       entry_after_outline.exitStub:151; CHECK-NEXT:    ret void152;153;154; CHECK-LABEL: @outlined_ir_func_1(155; CHECK-NEXT:  newFuncRoot:156; CHECK-NEXT:    br label [[ENTRY_TO_OUTLINE:%.*]]157; CHECK:       entry_to_outline:158; CHECK-NEXT:    [[TMP1:%.*]] = atomicrmw add ptr [[TMP0:%.*]], i32 1 acquire, align 8159; CHECK-NEXT:    call void @foo()160; CHECK-NEXT:    br label [[ENTRY_AFTER_OUTLINE_EXITSTUB:%.*]]161; CHECK:       entry_after_outline.exitStub:162; CHECK-NEXT:    ret void163;164