86 lines · plain
1; Test 32-bit atomic ORs.2;3; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 | FileCheck %s4 5; Check ORs of a variable.6define i32 @f1(i32 %dummy, ptr %src, i32 %b) {7; CHECK-LABEL: f1:8; CHECK: l %r2, 0(%r3)9; CHECK: [[LABEL:\.[^ ]*]]:10; CHECK: lr %r0, %r211; CHECK: or %r0, %r412; CHECK: cs %r2, %r0, 0(%r3)13; CHECK: jl [[LABEL]]14; CHECK: br %r1415 %res = atomicrmw or ptr %src, i32 %b seq_cst16 ret i32 %res17}18 19; Check the lowest useful OILL value.20define i32 @f2(i32 %dummy, ptr %src) {21; CHECK-LABEL: f2:22; CHECK: l %r2, 0(%r3)23; CHECK: [[LABEL:\.[^ ]*]]:24; CHECK: lr %r0, %r225; CHECK: oill %r0, 126; CHECK: cs %r2, %r0, 0(%r3)27; CHECK: jl [[LABEL]]28; CHECK: br %r1429 %res = atomicrmw or ptr %src, i32 1 seq_cst30 ret i32 %res31}32 33; Check the high end of the OILL range.34define i32 @f3(i32 %dummy, ptr %src) {35; CHECK-LABEL: f3:36; CHECK: oill %r0, 6553537; CHECK: br %r1438 %res = atomicrmw or ptr %src, i32 65535 seq_cst39 ret i32 %res40}41 42; Check the lowest useful OILH value, which is the next value up.43define i32 @f4(i32 %dummy, ptr %src) {44; CHECK-LABEL: f4:45; CHECK: oilh %r0, 146; CHECK: br %r1447 %res = atomicrmw or ptr %src, i32 65536 seq_cst48 ret i32 %res49}50 51; Check the lowest useful OILF value, which is the next value up.52define i32 @f5(i32 %dummy, ptr %src) {53; CHECK-LABEL: f5:54; CHECK: oilf %r0, 6553755; CHECK: br %r1456 %res = atomicrmw or ptr %src, i32 65537 seq_cst57 ret i32 %res58}59 60; Check the high end of the OILH range.61define i32 @f6(i32 %dummy, ptr %src) {62; CHECK-LABEL: f6:63; CHECK: oilh %r0, 6553564; CHECK: br %r1465 %res = atomicrmw or ptr %src, i32 -65536 seq_cst66 ret i32 %res67}68 69; Check the next value up, which must use OILF.70define i32 @f7(i32 %dummy, ptr %src) {71; CHECK-LABEL: f7:72; CHECK: oilf %r0, 429490176173; CHECK: br %r1474 %res = atomicrmw or ptr %src, i32 -65535 seq_cst75 ret i32 %res76}77 78; Check the largest useful OILF value.79define i32 @f8(i32 %dummy, ptr %src) {80; CHECK-LABEL: f8:81; CHECK: oilf %r0, 429496729482; CHECK: br %r1483 %res = atomicrmw or ptr %src, i32 -2 seq_cst84 ret i32 %res85}86