brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · bc71964 Raw
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