brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.7 KiB · 87a30d5 Raw
183 lines · plain
1; Test 64-bit ORs in which the second operand is constant.2;3; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s4 5; Check the lowest useful OILL value.6define i64 @f1(i64 %a) {7; CHECK-LABEL: f1:8; CHECK: oill %r2, 19; CHECK: br %r1410  %or = or i64 %a, 111  ret i64 %or12}13 14; Check the high end of the OILL range.15define i64 @f2(i64 %a) {16; CHECK-LABEL: f2:17; CHECK: oill %r2, 6553518; CHECK: br %r1419  %or = or i64 %a, 6553520  ret i64 %or21}22 23; Check the lowest useful OILH value, which is the next value up.24define i64 @f3(i64 %a) {25; CHECK-LABEL: f3:26; CHECK: oilh %r2, 127; CHECK: br %r1428  %or = or i64 %a, 6553629  ret i64 %or30}31 32; Check the lowest useful OILF value, which is the next value up again.33define i64 @f4(i64 %a) {34; CHECK-LABEL: f4:35; CHECK: oilf %r2, 429490175936; CHECK: br %r1437  %or = or i64 %a, 429490175938  ret i64 %or39}40 41; Check the high end of the OILH range.42define i64 @f5(i64 %a) {43; CHECK-LABEL: f5:44; CHECK: oilh %r2, 6553545; CHECK: br %r1446  %or = or i64 %a, 429490176047  ret i64 %or48}49 50; Check the high end of the OILF range.51define i64 @f6(i64 %a) {52; CHECK-LABEL: f6:53; CHECK: oilf %r2, 429496729554; CHECK: br %r1455  %or = or i64 %a, 429496729556  ret i64 %or57}58 59; Check the lowest useful OIHL value, which is the next value up.60define i64 @f7(i64 %a) {61; CHECK-LABEL: f7:62; CHECK: oihl %r2, 163; CHECK: br %r1464  %or = or i64 %a, 429496729665  ret i64 %or66}67 68; Check the next value up again, which must use two ORs.69define i64 @f8(i64 %a) {70; CHECK-LABEL: f8:71; CHECK: oihl %r2, 172; CHECK: oill %r2, 173; CHECK: br %r1474  %or = or i64 %a, 429496729775  ret i64 %or76}77 78; Check the high end of the OILL range.79define i64 @f9(i64 %a) {80; CHECK-LABEL: f9:81; CHECK: oihl %r2, 182; CHECK: oill %r2, 6553583; CHECK: br %r1484  %or = or i64 %a, 429503283185  ret i64 %or86}87 88; Check the next value up, which must use OILH89define i64 @f10(i64 %a) {90; CHECK-LABEL: f10:91; CHECK: oihl %r2, 192; CHECK: oilh %r2, 193; CHECK: br %r1494  %or = or i64 %a, 429503283295  ret i64 %or96}97 98; Check the next value up again, which must use OILF99define i64 @f11(i64 %a) {100; CHECK-LABEL: f11:101; CHECK: oihl %r2, 1102; CHECK: oilf %r2, 65537103; CHECK: br %r14104  %or = or i64 %a, 4295032833105  ret i64 %or106}107 108; Check the high end of the OIHL range.109define i64 @f12(i64 %a) {110; CHECK-LABEL: f12:111; CHECK: oihl %r2, 65535112; CHECK: br %r14113  %or = or i64 %a, 281470681743360114  ret i64 %or115}116 117; Check a combination of the high end of the OIHL range and the high end118; of the OILF range.119define i64 @f13(i64 %a) {120; CHECK-LABEL: f13:121; CHECK: oihl %r2, 65535122; CHECK: oilf %r2, 4294967295123; CHECK: br %r14124  %or = or i64 %a, 281474976710655125  ret i64 %or126}127 128; Check the lowest useful OIHH value.129define i64 @f14(i64 %a) {130; CHECK-LABEL: f14:131; CHECK: oihh %r2, 1132; CHECK: br %r14133  %or = or i64 %a, 281474976710656134  ret i64 %or135}136 137; Check the next value up, which needs two ORs.138define i64 @f15(i64 %a) {139; CHECK-LABEL: f15:140; CHECK: oihh %r2, 1141; CHECK: oill %r2, 1142; CHECK: br %r14143  %or = or i64 %a, 281474976710657144  ret i64 %or145}146 147; Check the lowest useful OIHF value.148define i64 @f16(i64 %a) {149; CHECK-LABEL: f16:150; CHECK: oihf %r2, 65537151; CHECK: br %r14152  %or = or i64 %a, 281479271677952153  ret i64 %or154}155 156; Check the high end of the OIHH range.157define i64 @f17(i64 %a) {158; CHECK-LABEL: f17:159; CHECK: oihh %r2, 65535160; CHECK: br %r14161  %or = or i64 %a, 18446462598732840960162  ret i64 %or163}164 165; Check the high end of the OIHF range.166define i64 @f18(i64 %a) {167; CHECK-LABEL: f18:168; CHECK: oihf %r2, 4294967295169; CHECK: br %r14170  %or = or i64 %a, -4294967296171  ret i64 %or172}173 174; Check the highest useful OR value.175define i64 @f19(i64 %a) {176; CHECK-LABEL: f19:177; CHECK: oihf %r2, 4294967295178; CHECK: oilf %r2, 4294967294179; CHECK: br %r14180  %or = or i64 %a, -2181  ret i64 %or182}183