brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.9 KiB · b1081a0 Raw
179 lines · plain
1; Test an i32 0/-1 SELECTCCC for every floating-point condition.2;3; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s4 5; Test CC in { 1, 2, 3 }6define i32 @f1(float %a, float %b) {7; CHECK-LABEL: f1:8; CHECK: ipm %r29; CHECK-NEXT: afi %r2, 187904819210; CHECK-NEXT: sra %r2, 3111; CHECK: br %r1412  %cond = fcmp oeq float %a, %b13  %res = select i1 %cond, i32 0, i32 -114  ret i32 %res15}16 17; Test CC in { 0, 2, 3 }18define i32 @f2(float %a, float %b) {19; CHECK-LABEL: f2:20; CHECK: ipm %r221; CHECK-NEXT: xilf %r2, 26843545622; CHECK-NEXT: afi %r2, 187904819223; CHECK-NEXT: sra %r2, 3124; CHECK: br %r1425  %cond = fcmp olt float %a, %b26  %res = select i1 %cond, i32 0, i32 -127  ret i32 %res28}29 30; Test CC in { 2, 3 }31define i32 @f3(float %a, float %b) {32; CHECK-LABEL: f3:33; CHECK: ipm %r234; CHECK-NEXT: sll %r2, 235; CHECK-NEXT: sra %r2, 3136; CHECK: br %r1437  %cond = fcmp ole float %a, %b38  %res = select i1 %cond, i32 0, i32 -139  ret i32 %res40}41 42; Test CC in { 0, 1, 3 }43define i32 @f4(float %a, float %b) {44; CHECK-LABEL: f4:45; CHECK: ipm %r246; CHECK-NEXT: xilf %r2, 26843545647; CHECK-NEXT: afi %r2, -80530636848; CHECK-NEXT: sra %r2, 3149; CHECK: br %r1450  %cond = fcmp ogt float %a, %b51  %res = select i1 %cond, i32 0, i32 -152  ret i32 %res53}54 55; Test CC in { 1, 3 }56define i32 @f5(float %a, float %b) {57; CHECK-LABEL: f5:58; CHECK: ipm %r259; CHECK-NEXT: sll %r2, 360; CHECK-NEXT: sra %r2, 3161; CHECK: br %r1462  %cond = fcmp oge float %a, %b63  %res = select i1 %cond, i32 0, i32 -164  ret i32 %res65}66 67; Test CC in { 0, 3 }68define i32 @f6(float %a, float %b) {69; CHECK-LABEL: f6:70; CHECK: ipm %r271; CHECK-NEXT: afi %r2, -26843545672; CHECK-NEXT: sll %r2, 273; CHECK-NEXT: sra %r2, 3174; CHECK: br %r1475  %cond = fcmp one float %a, %b76  %res = select i1 %cond, i32 0, i32 -177  ret i32 %res78}79 80; Test CC in { 3 }81define i32 @f7(float %a, float %b) {82; CHECK-LABEL: f7:83; CHECK: ipm %r284; CHECK-NEXT: afi %r2, 134217728085; CHECK-NEXT: sra %r2, 3186; CHECK: br %r1487  %cond = fcmp ord float %a, %b88  %res = select i1 %cond, i32 0, i32 -189  ret i32 %res90}91 92; Test CC in { 0, 1, 2 }93define i32 @f8(float %a, float %b) {94; CHECK-LABEL: f8:95; CHECK: ipm %r296; CHECK-NEXT: afi %r2, -80530636897; CHECK-NEXT: sra %r2, 3198; CHECK: br %r1499  %cond = fcmp uno float %a, %b100  %res = select i1 %cond, i32 0, i32 -1101  ret i32 %res102}103 104; Test CC in { 1, 2 }105define i32 @f9(float %a, float %b) {106; CHECK-LABEL: f9:107; CHECK: ipm %r2108; CHECK-NEXT: afi %r2, 268435456109; CHECK-NEXT: sll %r2, 2110; CHECK-NEXT: sra %r2, 31111; CHECK: br %r14112  %cond = fcmp ueq float %a, %b113  %res = select i1 %cond, i32 0, i32 -1114  ret i32 %res115}116 117; Test CC in { 0, 2 }118define i32 @f10(float %a, float %b) {119; CHECK-LABEL: f10:120; CHECK: ipm %r2121; CHECK-NEXT: xilf %r2, 4294967295122; CHECK-NEXT: sll %r2, 3123; CHECK-NEXT: sra %r2, 31124; CHECK: br %r14125  %cond = fcmp ult float %a, %b126  %res = select i1 %cond, i32 0, i32 -1127  ret i32 %res128}129 130; Test CC in { 2 }131define i32 @f11(float %a, float %b) {132; CHECK-LABEL: f11:133; CHECK: ipm %r2134; CHECK-NEXT: xilf %r2, 268435456135; CHECK-NEXT: afi %r2, 1342177280136; CHECK-NEXT: sra %r2, 31137; CHECK: br %r14138  %cond = fcmp ule float %a, %b139  %res = select i1 %cond, i32 0, i32 -1140  ret i32 %res141}142 143; Test CC in { 0, 1 }144define i32 @f12(float %a, float %b) {145; CHECK-LABEL: f12:146; CHECK: ipm %r2147; CHECK-NEXT: afi %r2, -536870912148; CHECK-NEXT: sra %r2, 31149; CHECK: br %r14150  %cond = fcmp ugt float %a, %b151  %res = select i1 %cond, i32 0, i32 -1152  ret i32 %res153}154 155; Test CC in { 1 }156define i32 @f13(float %a, float %b) {157; CHECK-LABEL: f13:158; CHECK: ipm %r2159; CHECK-NEXT: xilf %r2, 268435456160; CHECK-NEXT: afi %r2, -268435456161; CHECK-NEXT: sra %r2, 31162; CHECK: br %r14163  %cond = fcmp uge float %a, %b164  %res = select i1 %cond, i32 0, i32 -1165  ret i32 %res166}167 168; Test CC in { 0 }169define i32 @f14(float %a, float %b) {170; CHECK-LABEL: f14:171; CHECK: ipm %r2172; CHECK-NEXT: afi %r2, -268435456173; CHECK-NEXT: sra %r2, 31174; CHECK: br %r14175  %cond = fcmp une float %a, %b176  %res = select i1 %cond, i32 0, i32 -1177  ret i32 %res178}179