brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 9606e2d Raw
57 lines · plain
1; Test 128-bit addition in which the second operand is constant.2;3; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 | FileCheck %s4 5; Check additions of 1.  The XOR ensures that we don't instead load the6; constant into a register and use memory addition.7define void @f1(ptr %aptr) {8; CHECK-LABEL: f1:9; CHECK: algfi {{%r[0-5]}}, 110; CHECK: alcg11; CHECK: br %r1412  %a = load i128, ptr %aptr13  %xor = xor i128 %a, 12814  %add = add i128 %xor, 115  store i128 %add, ptr %aptr16  ret void17}18 19; Check the high end of the ALGFI range.20define void @f2(ptr %aptr) {21; CHECK-LABEL: f2:22; CHECK: algfi {{%r[0-5]}}, 429496729523; CHECK: alcg24; CHECK: br %r1425  %a = load i128, ptr %aptr26  %xor = xor i128 %a, 12827  %add = add i128 %xor, 429496729528  store i128 %add, ptr %aptr29  ret void30}31 32; Check the next value up, which must use register addition.33define void @f3(ptr %aptr) {34; CHECK-LABEL: f3:35; CHECK: algr36; CHECK: alcg37; CHECK: br %r1438  %a = load i128, ptr %aptr39  %xor = xor i128 %a, 12840  %add = add i128 %xor, 429496729641  store i128 %add, ptr %aptr42  ret void43}44 45; Check addition of -1, which must also use register addition.46define void @f4(ptr %aptr) {47; CHECK-LABEL: f4:48; CHECK: algr49; CHECK: alcg50; CHECK: br %r1451  %a = load i128, ptr %aptr52  %xor = xor i128 %a, 12853  %add = add i128 %xor, -154  store i128 %add, ptr %aptr55  ret void56}57