101 lines · plain
1; Test the Test Data Class instruction logic operation conversion from2; signbit extraction.3;4; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s --check-prefixes=CHECK,Z105; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s \6; RUN: --check-prefixes=CHECK,Z137;8 9; Extract sign bit.10define i32 @f0(half %x) {11; CHECK-LABEL: f012; Z10: lgdr %r0, %f013; Z10: srlg %r2, %r0, 6314; Z13: vlgvh %r0, %v0, 015; Z13: risblg %r2, %r0, 31, 159, 4916 %cast = bitcast half %x to i1617 %res = icmp slt i16 %cast, 018 %xres = zext i1 %res to i3219 ret i32 %xres20}21 22; Extract sign bit.23define i32 @f1(float %x) {24; CHECK-LABEL: f125; CHECK: tceb %f0, 136526 %cast = bitcast float %x to i3227 %res = icmp slt i32 %cast, 028 %xres = zext i1 %res to i3229 ret i32 %xres30}31 32; Extract negated sign bit.33define i32 @f2(float %x) {34; CHECK-LABEL: f235; CHECK: tceb %f0, 273036 %cast = bitcast float %x to i3237 %res = icmp sgt i32 %cast, -138 %xres = zext i1 %res to i3239 ret i32 %xres40}41 42; Extract sign bit.43define i32 @f3(double %x) {44; CHECK-LABEL: f345; CHECK: tcdb %f0, 136546 %cast = bitcast double %x to i6447 %res = icmp slt i64 %cast, 048 %xres = zext i1 %res to i3249 ret i32 %xres50}51 52; Extract negated sign bit.53define i32 @f4(double %x) {54; CHECK-LABEL: f455; CHECK: tcdb %f0, 273056 %cast = bitcast double %x to i6457 %res = icmp sgt i64 %cast, -158 %xres = zext i1 %res to i3259 ret i32 %xres60}61 62; Extract sign bit.63define i32 @f5(fp128 %x) {64; CHECK-LABEL: f565; CHECK: tcxb %f0, 136566 %cast = bitcast fp128 %x to i12867 %res = icmp slt i128 %cast, 068 %xres = zext i1 %res to i3269 ret i32 %xres70}71 72; Extract negated sign bit.73define i32 @f6(fp128 %x) {74; CHECK-LABEL: f675; CHECK: tcxb %f0, 273076 %cast = bitcast fp128 %x to i12877 %res = icmp sgt i128 %cast, -178 %xres = zext i1 %res to i3279 ret i32 %xres80}81 82; Wrong const.83define i32 @f7(float %x) {84; CHECK-LABEL: f785; CHECK-NOT: tceb86 %cast = bitcast float %x to i3287 %res = icmp slt i32 %cast, -188 %xres = zext i1 %res to i3289 ret i32 %xres90}91 92; Wrong pred.93define i32 @f8(float %x) {94; CHECK-LABEL: f895; CHECK-NOT: tceb96 %cast = bitcast float %x to i3297 %res = icmp eq i32 %cast, 098 %xres = zext i1 %res to i3299 ret i32 %xres100}101