brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.2 KiB · dd12c78 Raw
83 lines · plain
1; RUN: llvm-reduce --abort-on-invalid-reduction --delta-passes=atomic-ordering --test FileCheck --test-arg --check-prefixes=INTERESTING,CHECK --test-arg %s --test-arg --input-file %s -o %t2; RUN: FileCheck -check-prefixes=RESULT,CHECK %s < %t3 4; CHECK-LABEL: @load_atomic_keep(5; INTERESTING: seq_cst6; RESULT: %op = load atomic i32, ptr %ptr syncscope("agent") seq_cst, align 47define i32 @load_atomic_keep(ptr %ptr) {8  %op = load atomic i32, ptr %ptr syncscope("agent") seq_cst, align 49  ret i32 %op10}11 12; CHECK-LABEL: @load_atomic_drop(13; INTERESTING: load14; RESULT: %op = load i32, ptr %ptr, align 415define i32 @load_atomic_drop(ptr %ptr) {16  %op = load atomic i32, ptr %ptr syncscope("agent") seq_cst, align 417  ret i32 %op18}19 20; CHECK-LABEL: @store_atomic_keep(21; INTERESTING: syncscope("agent")22; RESULT: store atomic i32 0, ptr %ptr syncscope("agent") seq_cst, align 423define void @store_atomic_keep(ptr %ptr) {24  store atomic i32 0, ptr %ptr syncscope("agent") seq_cst, align 425  ret void26}27 28; CHECK-LABEL: @store_atomic_drop(29; INTERESTING: store30; RESULT: store i32 0, ptr %ptr, align 431define void @store_atomic_drop(ptr %ptr) {32  store atomic i32 0, ptr %ptr syncscope("agent") seq_cst, align 433  ret void34}35 36; CHECK-LABEL: @atomicrmw_atomic_seq_cst_keep(37; INTERESTING: seq_cst38; RESULT: %val = atomicrmw add ptr %ptr, i32 3 syncscope("agent") seq_cst, align 439define i32 @atomicrmw_atomic_seq_cst_keep(ptr %ptr) {40  %val = atomicrmw add ptr %ptr, i32 3 syncscope("agent") seq_cst, align 441  ret i32 %val42}43 44; CHECK-LABEL: @atomicrmw_atomic_seq_cst_drop(45; INTERESTING: atomicrmw46; RESULT: %val = atomicrmw add ptr %ptr, i32 3 monotonic, align 447define i32 @atomicrmw_atomic_seq_cst_drop(ptr %ptr) {48  %val = atomicrmw add ptr %ptr, i32 3 seq_cst49  ret i32 %val50}51 52; CHECK-LABEL: @cmpxchg_atomic_seq_cst_seq_cst_keep(53; INTERESTING: seq_cst seq_cst54; RESULT: %val = cmpxchg ptr %ptr, i32 %old, i32 %in syncscope("agent") seq_cst seq_cst, align 455define { i32, i1 } @cmpxchg_atomic_seq_cst_seq_cst_keep(ptr %ptr, i32 %old, i32 %in) {56  %val = cmpxchg ptr %ptr, i32 %old, i32 %in syncscope("agent") seq_cst seq_cst57  ret { i32, i1 } %val58}59 60; CHECK-LABEL: @cmpxchg_seq_cst_seq_cst_keep_left(61; INTERESTING: syncscope("agent") seq_cst62; RESULT: %val = cmpxchg ptr %ptr, i32 %old, i32 %in syncscope("agent") seq_cst monotonic, align 463define { i32, i1 } @cmpxchg_seq_cst_seq_cst_keep_left(ptr %ptr, i32 %old, i32 %in) {64  %val = cmpxchg ptr %ptr, i32 %old, i32 %in syncscope("agent") seq_cst seq_cst65  ret { i32, i1 } %val66}67 68; CHECK-LABEL: @cmpxchg_seq_cst_seq_cst_keep_right(69; INTERESTING: seq_cst, align 470; RESULT: %val = cmpxchg ptr %ptr, i32 %old, i32 %in syncscope("agent") monotonic seq_cst, align 471define { i32, i1 } @cmpxchg_seq_cst_seq_cst_keep_right(ptr %ptr, i32 %old, i32 %in) {72  %val = cmpxchg ptr %ptr, i32 %old, i32 %in syncscope("agent") seq_cst seq_cst, align 473  ret { i32, i1 } %val74}75 76; CHECK-LABEL: @cmpxchg_seq_cst_seq_cst_drop(77; INTERESTING: = cmpxchg ptr78; RESULT: %val = cmpxchg ptr %ptr, i32 %old, i32 %in syncscope("agent") monotonic monotonic, align 479define { i32, i1 } @cmpxchg_seq_cst_seq_cst_drop(ptr %ptr, i32 %old, i32 %in) {80  %val = cmpxchg ptr %ptr, i32 %old, i32 %in syncscope("agent") seq_cst seq_cst81  ret { i32, i1 } %val82}83