brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.2 KiB · f55a3b2 Raw
51 lines · plain
1; Test the "S" asm constraint, which accepts addresses that have a base2; and a 20-bit displacement.3;4; RUN: llc < %s -mtriple=s390x-linux-gnu -no-integrated-as | FileCheck %s5 6; Check the lowest range.7define void @f1(i64 %base) {8; CHECK-LABEL: f1:9; CHECK: blah -524288(%r2)10; CHECK: br %r1411  %add = add i64 %base, -52428812  %addr = inttoptr i64 %add to ptr13  call void asm "blah $0", "=*S" (ptr elementtype(i64) %addr)14  ret void15}16 17; Check the next lowest byte.18define void @f2(i64 %base) {19; CHECK-LABEL: f2:20; CHECK: agfi %r2, -52428921; CHECK: blah 0(%r2)22; CHECK: br %r1423  %add = add i64 %base, -52428924  %addr = inttoptr i64 %add to ptr25  call void asm "blah $0", "=*S" (ptr elementtype(i64) %addr)26  ret void27}28 29; Check the highest range.30define void @f3(i64 %base) {31; CHECK-LABEL: f3:32; CHECK: blah 524287(%r2)33; CHECK: br %r1434  %add = add i64 %base, 52428735  %addr = inttoptr i64 %add to ptr36  call void asm "blah $0", "=*S" (ptr elementtype(i64) %addr)37  ret void38}39 40; Check the next highest byte.41define void @f4(i64 %base) {42; CHECK-LABEL: f4:43; CHECK: agfi %r2, 52428844; CHECK: blah 0(%r2)45; CHECK: br %r1446  %add = add i64 %base, 52428847  %addr = inttoptr i64 %add to ptr48  call void asm "blah $0", "=*S" (ptr elementtype(i64) %addr)49  ret void50}51