88 lines · plain
1; Test 32-bit atomic NANDs.2;3; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 | FileCheck %s4 5; Check NANDs 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: nr %r0, %r412; CHECK: xilf %r0, 429496729513; CHECK: cs %r2, %r0, 0(%r3)14; CHECK: jl [[LABEL]]15; CHECK: br %r1416 %res = atomicrmw nand ptr %src, i32 %b seq_cst17 ret i32 %res18}19 20; Check NANDs with different constant operands.21define i32 @f2(i32 %dummy, ptr %src) {22; CHECK-LABEL: f2:23; CHECK: l %r2, 0(%r3)24; CHECK: [[LABEL:\.[^ ]*]]:25; CHECK: lr %r0, %r226; CHECK: xilf %r0, 429496729527; CHECK: oilf %r0, 429496729428; CHECK: cs %r2, %r0, 0(%r3)29; CHECK: jl [[LABEL]]30; CHECK: br %r1431 %res = atomicrmw nand ptr %src, i32 1 seq_cst32 ret i32 %res33}34 35define i32 @f3(i32 %dummy, ptr %src) {36; CHECK-LABEL: f3:37; CHECK: xilf %r0, 429496729538; CHECK: oilh %r0, 6553539; CHECK: br %r1440 %res = atomicrmw nand ptr %src, i32 65535 seq_cst41 ret i32 %res42}43 44define i32 @f4(i32 %dummy, ptr %src) {45; CHECK-LABEL: f4:46; CHECK: xilf %r0, 429496729547; CHECK: oilf %r0, 429490175948; CHECK: br %r1449 %res = atomicrmw nand ptr %src, i32 65536 seq_cst50 ret i32 %res51}52 53define i32 @f5(i32 %dummy, ptr %src) {54; CHECK-LABEL: f5:55; CHECK: xilf %r0, 429496729556; CHECK: oill %r0, 157; CHECK: br %r1458 %res = atomicrmw nand ptr %src, i32 -2 seq_cst59 ret i32 %res60}61 62define i32 @f6(i32 %dummy, ptr %src) {63; CHECK-LABEL: f6:64; CHECK: xilf %r0, 429496729565; CHECK: oill %r0, 6553566; CHECK: br %r1467 %res = atomicrmw nand ptr %src, i32 -65536 seq_cst68 ret i32 %res69}70 71define i32 @f7(i32 %dummy, ptr %src) {72; CHECK-LABEL: f7:73; CHECK: xilf %r0, 429496729574; CHECK: oilh %r0, 175; CHECK: br %r1476 %res = atomicrmw nand ptr %src, i32 -65537 seq_cst77 ret i32 %res78}79 80define i32 @f8(i32 %dummy, ptr %src) {81; CHECK-LABEL: f8:82; CHECK: xilf %r0, 429496729583; CHECK: oilf %r0, 6553784; CHECK: br %r1485 %res = atomicrmw nand ptr %src, i32 -65538 seq_cst86 ret i32 %res87}88