brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · 4a73b75 Raw
101 lines · plain
1; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s2; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z15 | FileCheck %s3;4; Test that a reload of a LOCGR/SELGR operand can be folded into a LOC5; instruction.6 7declare i64 @foo()8declare i32 @foo32()9 10; Check that conditional loads of spilled values can use LOCG rather than LOCGR.11define void @f0(ptr %ptr0, ptr %dstPtr) {12; CHECK-LABEL: f0:13; CHECK: brasl %r14, foo@PLT14; CHECK: locglh {{.*}}           # 8-byte Folded Reload15; CHECK: br %r1416  %ptr1 = getelementptr i64, ptr %ptr0, i64 217  %ptr2 = getelementptr i64, ptr %ptr0, i64 418  %ptr3 = getelementptr i64, ptr %ptr0, i64 619  %ptr4 = getelementptr i64, ptr %ptr0, i64 820  %ptr5 = getelementptr i64, ptr %ptr0, i64 1021  %ptr6 = getelementptr i64, ptr %ptr0, i64 1222  %ptr7 = getelementptr i64, ptr %ptr0, i64 1423  %ptr8 = getelementptr i64, ptr %ptr0, i64 1624  %ptr9 = getelementptr i64, ptr %ptr0, i64 1825 26  %val0 = load i64, ptr %ptr027  %val1 = load i64, ptr %ptr128  %val2 = load i64, ptr %ptr229  %val3 = load i64, ptr %ptr330  %val4 = load i64, ptr %ptr431  %val5 = load i64, ptr %ptr532  %val6 = load i64, ptr %ptr633  %val7 = load i64, ptr %ptr734  %val8 = load i64, ptr %ptr835  %val9 = load i64, ptr %ptr936 37  %ret = call i64 @foo()38 39  %add0 = add i64 %ret, %val040  %add1 = add i64 %add0, %val141  %add2 = add i64 %add1, %val242  %add3 = add i64 %add2, %val343  %add4 = add i64 %add3, %val444  %add5 = add i64 %add4, %val545  %add6 = add i64 %add5, %val646  %add7 = add i64 %add6, %val747  %add8 = add i64 %add7, %val848 49  %cond = icmp eq i64 %add7, %add850  %res = select i1 %cond, i64 %add8, i64 %val951 52  store i64 %res, ptr %dstPtr53  ret void54}55 56; Check that conditional loads of spilled values can use LOC rather than LOCR.57define void @f1(ptr %ptr0, ptr %dstPtr) {58; CHECK-LABEL: f1:59; CHECK: brasl %r14, foo32@PLT60; CHECK: loclh {{.*}}            # 4-byte Folded Reload61; CHECK: br %r1462  %ptr1 = getelementptr i32, ptr %ptr0, i32 263  %ptr2 = getelementptr i32, ptr %ptr0, i32 464  %ptr3 = getelementptr i32, ptr %ptr0, i32 665  %ptr4 = getelementptr i32, ptr %ptr0, i32 866  %ptr5 = getelementptr i32, ptr %ptr0, i32 1067  %ptr6 = getelementptr i32, ptr %ptr0, i32 1268  %ptr7 = getelementptr i32, ptr %ptr0, i32 1469  %ptr8 = getelementptr i32, ptr %ptr0, i32 1670  %ptr9 = getelementptr i32, ptr %ptr0, i32 1871 72  %val0 = load i32, ptr %ptr073  %val1 = load i32, ptr %ptr174  %val2 = load i32, ptr %ptr275  %val3 = load i32, ptr %ptr376  %val4 = load i32, ptr %ptr477  %val5 = load i32, ptr %ptr578  %val6 = load i32, ptr %ptr679  %val7 = load i32, ptr %ptr780  %val8 = load i32, ptr %ptr881  %val9 = load i32, ptr %ptr982 83  %ret = call i32 @foo32()84 85  %add0 = add i32 %ret, %val086  %add1 = add i32 %add0, %val187  %add2 = add i32 %add1, %val288  %add3 = add i32 %add2, %val389  %add4 = add i32 %add3, %val490  %add5 = add i32 %add4, %val591  %add6 = add i32 %add5, %val692  %add7 = add i32 %add6, %val793  %add8 = add i32 %add7, %val894 95  %cond = icmp eq i32 %add7, %add896  %res = select i1 %cond, i32 %add8, i32 %val997 98  store i32 %res, ptr %dstPtr99  ret void100}101