brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · 29745ed Raw
112 lines · plain
1; Test moves of integers to 2-byte memory locations.2;3; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s4 5; Check the low end of the unsigned range.6define void @f1(ptr %ptr) {7; CHECK-LABEL: f1:8; CHECK: mvhhi 0(%r2), 09; CHECK: br %r1410  store i16 0, ptr %ptr11  ret void12}13 14; Check the high end of the signed range.15define void @f2(ptr %ptr) {16; CHECK-LABEL: f2:17; CHECK: mvhhi 0(%r2), 3276718; CHECK: br %r1419  store i16 32767, ptr %ptr20  ret void21}22 23; Check the next value up.24define void @f3(ptr %ptr) {25; CHECK-LABEL: f3:26; CHECK: mvhhi 0(%r2), -3276827; CHECK: br %r1428  store i16 -32768, ptr %ptr29  ret void30}31 32; Check the high end of the unsigned range.33define void @f4(ptr %ptr) {34; CHECK-LABEL: f4:35; CHECK: mvhhi 0(%r2), -136; CHECK: br %r1437  store i16 65535, ptr %ptr38  ret void39}40 41; Check -1.42define void @f5(ptr %ptr) {43; CHECK-LABEL: f5:44; CHECK: mvhhi 0(%r2), -145; CHECK: br %r1446  store i16 -1, ptr %ptr47  ret void48}49 50; Check the low end of the signed range.51define void @f6(ptr %ptr) {52; CHECK-LABEL: f6:53; CHECK: mvhhi 0(%r2), -3276854; CHECK: br %r1455  store i16 -32768, ptr %ptr56  ret void57}58 59; Check the next value down.60define void @f7(ptr %ptr) {61; CHECK-LABEL: f7:62; CHECK: mvhhi 0(%r2), 3276763; CHECK: br %r1464  store i16 -32769, ptr %ptr65  ret void66}67 68; Check the high end of the MVHHI range.69define void @f8(ptr %a) {70; CHECK-LABEL: f8:71; CHECK: mvhhi 4094(%r2), 4272; CHECK: br %r1473  %ptr = getelementptr i16, ptr %a, i64 204774  store i16 42, ptr %ptr75  ret void76}77 78; Check the next halfword up, which is out of range.  We prefer STHY79; in that case.80define void @f9(ptr %a) {81; CHECK-LABEL: f9:82; CHECK: lhi [[TMP:%r[0-5]]], 4283; CHECK: sthy [[TMP]], 4096(%r2)84; CHECK: br %r1485  %ptr = getelementptr i16, ptr %a, i64 204886  store i16 42, ptr %ptr87  ret void88}89 90; Check negative displacements, for which we again prefer STHY.91define void @f10(ptr %a) {92; CHECK-LABEL: f10:93; CHECK: lhi [[TMP:%r[0-5]]], 4294; CHECK: sthy [[TMP]], -2(%r2)95; CHECK: br %r1496  %ptr = getelementptr i16, ptr %a, i64 -197  store i16 42, ptr %ptr98  ret void99}100 101; Check that MVHHI does not allow an index.102define void @f11(i64 %src, i64 %index) {103; CHECK-LABEL: f11:104; CHECK: lhi [[TMP:%r[0-5]]], 42105; CHECK: sth [[TMP]], 0({{%r2,%r3|%r3,%r2}})106; CHECK: br %r14107  %add = add i64 %src, %index108  %ptr = inttoptr i64 %add to ptr109  store i16 42, ptr %ptr110  ret void111}112