brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.6 KiB · 1a2e517 Raw
134 lines · plain
1; Test 32-bit equality comparisons that are really between a memory byte2; and a constant.3;4; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s5 6; Check the low end of the 8-bit unsigned range, with zero extension.7define double @f1(double %a, double %b, ptr %ptr) {8; CHECK-LABEL: f1:9; CHECK: cli 0(%r2), 010; CHECK-NEXT: ber %r1411; CHECK: br %r1412  %val = load i8, ptr %ptr13  %ext = zext i8 %val to i3214  %cond = icmp eq i32 %ext, 015  %res = select i1 %cond, double %a, double %b16  ret double %res17}18 19; Check the high end of the 8-bit unsigned range, with zero extension.20define double @f2(double %a, double %b, ptr %ptr) {21; CHECK-LABEL: f2:22; CHECK: cli 0(%r2), 25523; CHECK-NEXT: ber %r1424; CHECK: br %r1425  %val = load i8, ptr %ptr26  %ext = zext i8 %val to i3227  %cond = icmp eq i32 %ext, 25528  %res = select i1 %cond, double %a, double %b29  ret double %res30}31 32; Check the next value up, with zero extension.  The condition is always false.33define double @f3(double %a, double %b, ptr %ptr) {34; CHECK-LABEL: f3:35; CHECK-NOT: cli36; CHECK: br %r1437  %val = load i8, ptr %ptr38  %ext = zext i8 %val to i3239  %cond = icmp eq i32 %ext, 25640  %res = select i1 %cond, double %a, double %b41  ret double %res42}43 44; Check comparisons with -1, with zero extension.45; This condition is also always false.46define double @f4(double %a, double %b, ptr %ptr) {47; CHECK-LABEL: f4:48; CHECK-NOT: cli49; CHECK: br %r1450  %val = load i8, ptr %ptr51  %ext = zext i8 %val to i3252  %cond = icmp eq i32 %ext, -153  %res = select i1 %cond, double %a, double %b54  ret double %res55}56 57; Check comparisons with 0, using sign extension.58define double @f5(double %a, double %b, ptr %ptr) {59; CHECK-LABEL: f5:60; CHECK: cli 0(%r2), 061; CHECK-NEXT: ber %r1462; CHECK: br %r1463  %val = load i8, ptr %ptr64  %ext = sext i8 %val to i3265  %cond = icmp eq i32 %ext, 066  %res = select i1 %cond, double %a, double %b67  ret double %res68}69 70; Check the high end of the signed 8-bit range, using sign extension.71define double @f6(double %a, double %b, ptr %ptr) {72; CHECK-LABEL: f6:73; CHECK: cli 0(%r2), 12774; CHECK-NEXT: ber %r1475; CHECK: br %r1476  %val = load i8, ptr %ptr77  %ext = sext i8 %val to i3278  %cond = icmp eq i32 %ext, 12779  %res = select i1 %cond, double %a, double %b80  ret double %res81}82 83; Check the next value up, using sign extension.84; The condition is always false.85define double @f7(double %a, double %b, ptr %ptr) {86; CHECK-LABEL: f7:87; CHECK-NOT: cli88; CHECK: br %r1489  %val = load i8, ptr %ptr90  %ext = sext i8 %val to i3291  %cond = icmp eq i32 %ext, 12892  %res = select i1 %cond, double %a, double %b93  ret double %res94}95 96; Check comparisons with -1, using sign extension.97define double @f8(double %a, double %b, ptr %ptr) {98; CHECK-LABEL: f8:99; CHECK: cli 0(%r2), 255100; CHECK-NEXT: ber %r14101; CHECK: br %r14102  %val = load i8, ptr %ptr103  %ext = sext i8 %val to i32104  %cond = icmp eq i32 %ext, -1105  %res = select i1 %cond, double %a, double %b106  ret double %res107}108 109; Check the low end of the signed 8-bit range, using sign extension.110define double @f9(double %a, double %b, ptr %ptr) {111; CHECK-LABEL: f9:112; CHECK: cli 0(%r2), 128113; CHECK-NEXT: ber %r14114; CHECK: br %r14115  %val = load i8, ptr %ptr116  %ext = sext i8 %val to i32117  %cond = icmp eq i32 %ext, -128118  %res = select i1 %cond, double %a, double %b119  ret double %res120}121 122; Check the next value down, using sign extension.123; The condition is always false.124define double @f10(double %a, double %b, ptr %ptr) {125; CHECK-LABEL: f10:126; CHECK-NOT: cli127; CHECK: br %r14128  %val = load i8, ptr %ptr129  %ext = sext i8 %val to i32130  %cond = icmp eq i32 %ext, -129131  %res = select i1 %cond, double %a, double %b132  ret double %res133}134