brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.8 KiB · a85d793 Raw
287 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 42; RUN: opt < %s -passes=instcombine -S | FileCheck %s3 4define i1 @olt_pinf(half %x) {5; CHECK-LABEL: define i1 @olt_pinf(6; CHECK-SAME: half [[X:%.*]]) {7; CHECK-NEXT:    [[CMP:%.*]] = fcmp one half [[X]], 0xH7C008; CHECK-NEXT:    ret i1 [[CMP]]9;10  %cmp = fcmp olt half %x, 0xH7c0011  ret i1 %cmp12}13 14define i1 @ole_pinf(half %x) {15; CHECK-LABEL: define i1 @ole_pinf(16; CHECK-SAME: half [[X:%.*]]) {17; CHECK-NEXT:    [[CMP:%.*]] = fcmp ord half [[X]], 0xH000018; CHECK-NEXT:    ret i1 [[CMP]]19;20  %cmp = fcmp ole half %x, 0xH7c0021  ret i1 %cmp22}23 24define i1 @ogt_pinf(half %x) {25; CHECK-LABEL: define i1 @ogt_pinf(26; CHECK-SAME: half [[X:%.*]]) {27; CHECK-NEXT:    ret i1 false28;29  %cmp = fcmp ogt half %x, 0xH7c0030  ret i1 %cmp31}32 33define i1 @oge_pinf(half %x) {34; CHECK-LABEL: define i1 @oge_pinf(35; CHECK-SAME: half [[X:%.*]]) {36; CHECK-NEXT:    [[CMP:%.*]] = fcmp oeq half [[X]], 0xH7C0037; CHECK-NEXT:    ret i1 [[CMP]]38;39  %cmp = fcmp oge half %x, 0xH7c0040  ret i1 %cmp41}42 43define i1 @ult_pinf(half %x) {44; CHECK-LABEL: define i1 @ult_pinf(45; CHECK-SAME: half [[X:%.*]]) {46; CHECK-NEXT:    [[CMP:%.*]] = fcmp une half [[X]], 0xH7C0047; CHECK-NEXT:    ret i1 [[CMP]]48;49  %cmp = fcmp ult half %x, 0xH7c0050  ret i1 %cmp51}52 53define i1 @ule_pinf(half %x) {54; CHECK-LABEL: define i1 @ule_pinf(55; CHECK-SAME: half [[X:%.*]]) {56; CHECK-NEXT:    ret i1 true57;58  %cmp = fcmp ule half %x, 0xH7c0059  ret i1 %cmp60}61 62define i1 @ugt_pinf(half %x) {63; CHECK-LABEL: define i1 @ugt_pinf(64; CHECK-SAME: half [[X:%.*]]) {65; CHECK-NEXT:    [[CMP:%.*]] = fcmp uno half [[X]], 0xH000066; CHECK-NEXT:    ret i1 [[CMP]]67;68  %cmp = fcmp ugt half %x, 0xH7c0069  ret i1 %cmp70}71 72define i1 @uge_pinf(half %x) {73; CHECK-LABEL: define i1 @uge_pinf(74; CHECK-SAME: half [[X:%.*]]) {75; CHECK-NEXT:    [[CMP:%.*]] = fcmp ueq half [[X]], 0xH7C0076; CHECK-NEXT:    ret i1 [[CMP]]77;78  %cmp = fcmp uge half %x, 0xH7c0079  ret i1 %cmp80}81 82define i1 @olt_ninf(half %x) {83; CHECK-LABEL: define i1 @olt_ninf(84; CHECK-SAME: half [[X:%.*]]) {85; CHECK-NEXT:    ret i1 false86;87  %cmp = fcmp olt half %x, 0xHfc0088  ret i1 %cmp89}90 91define i1 @ole_ninf(half %x) {92; CHECK-LABEL: define i1 @ole_ninf(93; CHECK-SAME: half [[X:%.*]]) {94; CHECK-NEXT:    [[CMP:%.*]] = fcmp oeq half [[X]], 0xHFC0095; CHECK-NEXT:    ret i1 [[CMP]]96;97  %cmp = fcmp ole half %x, 0xHfc0098  ret i1 %cmp99}100 101define i1 @ogt_ninf(half %x) {102; CHECK-LABEL: define i1 @ogt_ninf(103; CHECK-SAME: half [[X:%.*]]) {104; CHECK-NEXT:    [[CMP:%.*]] = fcmp one half [[X]], 0xHFC00105; CHECK-NEXT:    ret i1 [[CMP]]106;107  %cmp = fcmp ogt half %x, 0xHfc00108  ret i1 %cmp109}110 111define i1 @oge_ninf(half %x) {112; CHECK-LABEL: define i1 @oge_ninf(113; CHECK-SAME: half [[X:%.*]]) {114; CHECK-NEXT:    [[CMP:%.*]] = fcmp ord half [[X]], 0xH0000115; CHECK-NEXT:    ret i1 [[CMP]]116;117  %cmp = fcmp oge half %x, 0xHfc00118  ret i1 %cmp119}120 121define i1 @ult_ninf(half %x) {122; CHECK-LABEL: define i1 @ult_ninf(123; CHECK-SAME: half [[X:%.*]]) {124; CHECK-NEXT:    [[CMP:%.*]] = fcmp uno half [[X]], 0xH0000125; CHECK-NEXT:    ret i1 [[CMP]]126;127  %cmp = fcmp ult half %x, 0xHfc00128  ret i1 %cmp129}130 131define i1 @ule_ninf(half %x) {132; CHECK-LABEL: define i1 @ule_ninf(133; CHECK-SAME: half [[X:%.*]]) {134; CHECK-NEXT:    [[CMP:%.*]] = fcmp ueq half [[X]], 0xHFC00135; CHECK-NEXT:    ret i1 [[CMP]]136;137  %cmp = fcmp ule half %x, 0xHfc00138  ret i1 %cmp139}140 141define i1 @ugt_ninf(half %x) {142; CHECK-LABEL: define i1 @ugt_ninf(143; CHECK-SAME: half [[X:%.*]]) {144; CHECK-NEXT:    [[CMP:%.*]] = fcmp une half [[X]], 0xHFC00145; CHECK-NEXT:    ret i1 [[CMP]]146;147  %cmp = fcmp ugt half %x, 0xHfc00148  ret i1 %cmp149}150 151define i1 @uge_ninf(half %x) {152; CHECK-LABEL: define i1 @uge_ninf(153; CHECK-SAME: half [[X:%.*]]) {154; CHECK-NEXT:    ret i1 true155;156  %cmp = fcmp uge half %x, 0xHfc00157  ret i1 %cmp158}159 160define i1 @olt_pinf_fmf(half %x) {161; CHECK-LABEL: define i1 @olt_pinf_fmf(162; CHECK-SAME: half [[X:%.*]]) {163; CHECK-NEXT:    [[CMP:%.*]] = fcmp nsz one half [[X]], 0xH7C00164; CHECK-NEXT:    ret i1 [[CMP]]165;166  %cmp = fcmp nsz olt half %x, 0xH7c00167  ret i1 %cmp168}169 170define i1 @oge_pinf_fmf(half %x) {171; CHECK-LABEL: define i1 @oge_pinf_fmf(172; CHECK-SAME: half [[X:%.*]]) {173; CHECK-NEXT:    [[CMP:%.*]] = fcmp nnan oeq half [[X]], 0xH7C00174; CHECK-NEXT:    ret i1 [[CMP]]175;176  %cmp = fcmp nnan oge half %x, 0xH7c00177  ret i1 %cmp178}179 180define <2 x i1> @olt_pinf_vec(<2 x half> %x) {181; CHECK-LABEL: define <2 x i1> @olt_pinf_vec(182; CHECK-SAME: <2 x half> [[X:%.*]]) {183; CHECK-NEXT:    [[CMP:%.*]] = fcmp one <2 x half> [[X]], splat (half 0xH7C00)184; CHECK-NEXT:    ret <2 x i1> [[CMP]]185;186  %cmp = fcmp olt <2 x half> %x, <half 0xH7c00, half 0xH7c00>187  ret <2 x i1> %cmp188}189 190define <2 x i1> @oge_ninf_vec(<2 x half> %x) {191; CHECK-LABEL: define <2 x i1> @oge_ninf_vec(192; CHECK-SAME: <2 x half> [[X:%.*]]) {193; CHECK-NEXT:    [[CMP:%.*]] = fcmp ord <2 x half> [[X]], zeroinitializer194; CHECK-NEXT:    ret <2 x i1> [[CMP]]195;196  %cmp = fcmp oge <2 x half> %x, <half 0xHfc00, half 0xHfc00>197  ret <2 x i1> %cmp198}199 200; Negative tests201 202define i1 @ord_pinf(half %x) {203; CHECK-LABEL: define i1 @ord_pinf(204; CHECK-SAME: half [[X:%.*]]) {205; CHECK-NEXT:    [[CMP:%.*]] = fcmp ord half [[X]], 0xH0000206; CHECK-NEXT:    ret i1 [[CMP]]207;208  %cmp = fcmp ord half %x, 0xH7c00209  ret i1 %cmp210}211 212define i1 @uno_pinf(half %x) {213; CHECK-LABEL: define i1 @uno_pinf(214; CHECK-SAME: half [[X:%.*]]) {215; CHECK-NEXT:    [[CMP:%.*]] = fcmp uno half [[X]], 0xH0000216; CHECK-NEXT:    ret i1 [[CMP]]217;218  %cmp = fcmp uno half %x, 0xH7c00219  ret i1 %cmp220}221 222define i1 @true_pinf(half %x) {223; CHECK-LABEL: define i1 @true_pinf(224; CHECK-SAME: half [[X:%.*]]) {225; CHECK-NEXT:    ret i1 true226;227  %cmp = fcmp true half %x, 0xH7c00228  ret i1 %cmp229}230 231define i1 @false_pinf(half %x) {232; CHECK-LABEL: define i1 @false_pinf(233; CHECK-SAME: half [[X:%.*]]) {234; CHECK-NEXT:    ret i1 false235;236  %cmp = fcmp false half %x, 0xH7c00237  ret i1 %cmp238}239 240define i1 @ord_ninf(half %x) {241; CHECK-LABEL: define i1 @ord_ninf(242; CHECK-SAME: half [[X:%.*]]) {243; CHECK-NEXT:    [[CMP:%.*]] = fcmp ord half [[X]], 0xH0000244; CHECK-NEXT:    ret i1 [[CMP]]245;246  %cmp = fcmp ord half %x, 0xHfc00247  ret i1 %cmp248}249 250define i1 @uno_ninf(half %x) {251; CHECK-LABEL: define i1 @uno_ninf(252; CHECK-SAME: half [[X:%.*]]) {253; CHECK-NEXT:    [[CMP:%.*]] = fcmp uno half [[X]], 0xH0000254; CHECK-NEXT:    ret i1 [[CMP]]255;256  %cmp = fcmp uno half %x, 0xHfc00257  ret i1 %cmp258}259 260define i1 @true_ninf(half %x) {261; CHECK-LABEL: define i1 @true_ninf(262; CHECK-SAME: half [[X:%.*]]) {263; CHECK-NEXT:    ret i1 true264;265  %cmp = fcmp true half %x, 0xHfc00266  ret i1 %cmp267}268 269define i1 @false_ninf(half %x) {270; CHECK-LABEL: define i1 @false_ninf(271; CHECK-SAME: half [[X:%.*]]) {272; CHECK-NEXT:    ret i1 false273;274  %cmp = fcmp false half %x, 0xHfc00275  ret i1 %cmp276}277 278define i1 @olt_one(half %x) {279; CHECK-LABEL: define i1 @olt_one(280; CHECK-SAME: half [[X:%.*]]) {281; CHECK-NEXT:    [[CMP:%.*]] = fcmp olt half [[X]], 0xH3C00282; CHECK-NEXT:    ret i1 [[CMP]]283;284  %cmp = fcmp olt half %x, 1.0285  ret i1 %cmp286}287