brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.8 KiB · 2f09cbc Raw
136 lines · plain
1; RUN: llvm-reduce --abort-on-invalid-reduction --delta-passes=volatile --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_volatile_keep(5; INTERESTING: load volatile6; RESULT: %op = load volatile i32,7define i32 @load_volatile_keep(ptr %ptr) {8  %op = load volatile i32, ptr %ptr9  ret i32 %op10}11 12; CHECK-LABEL: @load_volatile_drop(13; INTERESTING: load14; RESULT: %op = load i32,15define i32 @load_volatile_drop(ptr %ptr) {16  %op = load volatile i32, ptr %ptr17  ret i32 %op18}19 20; CHECK-LABEL: @store_volatile_keep(21; INTERESTING: store volatile22; RESULT: store volatile i32 0,23define void @store_volatile_keep(ptr %ptr) {24  store volatile i32 0, ptr %ptr25  ret void26}27 28; CHECK-LABEL: @store_volatile_drop(29; INTERESTING: store30; RESULT: store i32 0,31define void @store_volatile_drop(ptr %ptr) {32  store volatile i32 0, ptr %ptr33  ret void34}35 36; CHECK-LABEL: @atomicrmw_volatile_keep(37; INTERESTING: atomicrmw volatile38; RESULT: atomicrmw volatile add ptr %ptr39define i32 @atomicrmw_volatile_keep(ptr %ptr) {40  %val = atomicrmw volatile add ptr %ptr, i32 3 seq_cst41  ret i32 %val42}43 44; CHECK-LABEL: @atomicrmw_volatile_drop(45; INTERESTING: atomicrmw46; RESULT: atomicrmw add ptr %ptr47define i32 @atomicrmw_volatile_drop(ptr %ptr) {48  %val = atomicrmw volatile add ptr %ptr, i32 3 seq_cst49  ret i32 %val50}51 52; CHECK-LABEL: @cmpxchg_volatile_keep(53; INTERESTING: cmpxchg volatile54; RESULT: cmpxchg volatile ptr %ptr, i32 %old, i32 %in seq_cst seq_cst55define { i32, i1 } @cmpxchg_volatile_keep(ptr %ptr, i32 %old, i32 %in) {56  %val = cmpxchg volatile ptr %ptr, i32 %old, i32 %in seq_cst seq_cst57  ret { i32, i1 } %val58}59 60; CHECK-LABEL: @cmpxchg_volatile_drop(61; INTERESTING: cmpxchg62; RESULT: cmpxchg ptr %ptr, i32 %old, i32 %in seq_cst seq_cst63define { i32, i1 } @cmpxchg_volatile_drop(ptr %ptr, i32 %old, i32 %in) {64  %val = cmpxchg volatile ptr %ptr, i32 %old, i32 %in seq_cst seq_cst65  ret { i32, i1 } %val66}67 68; CHECK-LABEL: @memcpy_volatile_keep(69; INTERESTING: i1 true70; RESULT: call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %size, i1 true)71define void @memcpy_volatile_keep(ptr %dst, ptr %src, i64 %size) {72  call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %size, i1 true)73  ret void74}75 76; CHECK-LABEL: @memcpy_volatile_drop(77; INTERESTING: llvm.memcpy78; RESULT: call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %size, i1 false)79define void @memcpy_volatile_drop(ptr %dst, ptr %src, i64 %size) {80  call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %size, i1 true)81  ret void82}83 84; CHECK-LABEL: @memcpy_inline_volatile_keep(85; INTERESTING: i1 true86; RESULT: call void @llvm.memcpy.inline.p0.p0.i64(ptr %dst, ptr %src, i64 256, i1 true)87define void @memcpy_inline_volatile_keep(ptr %dst, ptr %src) {88  call void @llvm.memcpy.inline.p0.p0.i64(ptr %dst, ptr %src, i64 256, i1 true)89  ret void90}91 92; CHECK-LABEL: @memcpy_inline_volatile_drop(93; INTERESTING: llvm.memcpy94; RESULT: call void @llvm.memcpy.inline.p0.p0.i64(ptr %dst, ptr %src, i64 256, i1 false)95define void @memcpy_inline_volatile_drop(ptr %dst, ptr %src) {96  call void @llvm.memcpy.inline.p0.p0.i64(ptr %dst, ptr %src, i64 256, i1 true)97  ret void98}99 100; CHECK-LABEL: @memmove_volatile_keep(101; INTERESTING: i1 true102; RESULT: call void @llvm.memmove.p0.p0.i64(ptr %dst, ptr %src, i64 256, i1 true)103define void @memmove_volatile_keep(ptr %dst, ptr %src) {104  call void @llvm.memmove.p0.p0.i64(ptr %dst, ptr %src, i64 256, i1 true)105  ret void106}107 108; CHECK-LABEL: @memmove_volatile_drop(109; INTERESTING: llvm.memmove110; RESULT: call void @llvm.memmove.p0.p0.i64(ptr %dst, ptr %src, i64 %size, i1 false)111define void @memmove_volatile_drop(ptr %dst, ptr %src, i64 %size) {112  call void @llvm.memmove.p0.p0.i64(ptr %dst, ptr %src, i64 %size, i1 true)113  ret void114}115 116; CHECK-LABEL: @memset_volatile_keep(117; INTERESTING: i1 true118; RESULT: call void @llvm.memset.p0.i64(ptr %ptr, i8 %val, i64 %size, i1 true)119define void @memset_volatile_keep(ptr %ptr, i8 %val, i64 %size) {120  call void @llvm.memset.p0.i64(ptr %ptr, i8 %val, i64 %size, i1 true)121  ret void122}123 124; CHECK-LABEL: @memset_volatile_drop(125; INTERESTING: llvm.memset126; RESULT: call void @llvm.memset.p0.i64(ptr %ptr, i8 %val, i64 %size, i1 false)127define void @memset_volatile_drop(ptr %ptr, i8 %val, i64 %size) {128  call void @llvm.memset.p0.i64(ptr %ptr, i8 %val, i64 %size, i1 true)129  ret void130}131 132declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg)133declare void @llvm.memmove.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg)134declare void @llvm.memcpy.inline.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64 immarg, i1 immarg)135declare void @llvm.memset.p0.i64(ptr noalias nocapture readonly, i8, i64, i1 immarg)136