1*38a44bdcSYingwei Zheng; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4 2*38a44bdcSYingwei Zheng; RUN: opt -codegenprepare -S -mtriple=x86_64-unknown-unknown < %s | FileCheck %s 3*38a44bdcSYingwei Zheng 4*38a44bdcSYingwei Zhengdefine i1 @test_is_inf_or_nan(double %arg) { 5*38a44bdcSYingwei Zheng; CHECK-LABEL: define i1 @test_is_inf_or_nan( 6*38a44bdcSYingwei Zheng; CHECK-SAME: double [[ARG:%.*]]) { 7*38a44bdcSYingwei Zheng; CHECK-NEXT: [[TMP1:%.*]] = call i1 @llvm.is.fpclass.f64(double [[ARG]], i32 519) 8*38a44bdcSYingwei Zheng; CHECK-NEXT: ret i1 [[TMP1]] 9*38a44bdcSYingwei Zheng; 10*38a44bdcSYingwei Zheng %abs = tail call double @llvm.fabs.f64(double %arg) 11*38a44bdcSYingwei Zheng %ret = fcmp ueq double %abs, 0x7FF0000000000000 12*38a44bdcSYingwei Zheng ret i1 %ret 13*38a44bdcSYingwei Zheng} 14*38a44bdcSYingwei Zheng 15*38a44bdcSYingwei Zhengdefine i1 @test_is_not_inf_or_nan(double %arg) { 16*38a44bdcSYingwei Zheng; CHECK-LABEL: define i1 @test_is_not_inf_or_nan( 17*38a44bdcSYingwei Zheng; CHECK-SAME: double [[ARG:%.*]]) { 18*38a44bdcSYingwei Zheng; CHECK-NEXT: [[TMP1:%.*]] = call i1 @llvm.is.fpclass.f64(double [[ARG]], i32 504) 19*38a44bdcSYingwei Zheng; CHECK-NEXT: ret i1 [[TMP1]] 20*38a44bdcSYingwei Zheng; 21*38a44bdcSYingwei Zheng %abs = tail call double @llvm.fabs.f64(double %arg) 22*38a44bdcSYingwei Zheng %ret = fcmp one double %abs, 0x7FF0000000000000 23*38a44bdcSYingwei Zheng ret i1 %ret 24*38a44bdcSYingwei Zheng} 25*38a44bdcSYingwei Zheng 26*38a44bdcSYingwei Zhengdefine i1 @test_is_inf(double %arg) { 27*38a44bdcSYingwei Zheng; CHECK-LABEL: define i1 @test_is_inf( 28*38a44bdcSYingwei Zheng; CHECK-SAME: double [[ARG:%.*]]) { 29*38a44bdcSYingwei Zheng; CHECK-NEXT: [[TMP1:%.*]] = call i1 @llvm.is.fpclass.f64(double [[ARG]], i32 516) 30*38a44bdcSYingwei Zheng; CHECK-NEXT: ret i1 [[TMP1]] 31*38a44bdcSYingwei Zheng; 32*38a44bdcSYingwei Zheng %abs = tail call double @llvm.fabs.f64(double %arg) 33*38a44bdcSYingwei Zheng %ret = fcmp oeq double %abs, 0x7FF0000000000000 34*38a44bdcSYingwei Zheng ret i1 %ret 35*38a44bdcSYingwei Zheng} 36*38a44bdcSYingwei Zheng 37*38a44bdcSYingwei Zhengdefine i1 @test_is_not_inf(double %arg) { 38*38a44bdcSYingwei Zheng; CHECK-LABEL: define i1 @test_is_not_inf( 39*38a44bdcSYingwei Zheng; CHECK-SAME: double [[ARG:%.*]]) { 40*38a44bdcSYingwei Zheng; CHECK-NEXT: [[TMP1:%.*]] = call i1 @llvm.is.fpclass.f64(double [[ARG]], i32 507) 41*38a44bdcSYingwei Zheng; CHECK-NEXT: ret i1 [[TMP1]] 42*38a44bdcSYingwei Zheng; 43*38a44bdcSYingwei Zheng %abs = tail call double @llvm.fabs.f64(double %arg) 44*38a44bdcSYingwei Zheng %ret = fcmp une double %abs, 0x7FF0000000000000 45*38a44bdcSYingwei Zheng ret i1 %ret 46*38a44bdcSYingwei Zheng} 47*38a44bdcSYingwei Zheng 48*38a44bdcSYingwei Zhengdefine <4 x i1> @test_vec_is_inf_or_nan(<4 x double> %arg) { 49*38a44bdcSYingwei Zheng; CHECK-LABEL: define <4 x i1> @test_vec_is_inf_or_nan( 50*38a44bdcSYingwei Zheng; CHECK-SAME: <4 x double> [[ARG:%.*]]) { 51*38a44bdcSYingwei Zheng; CHECK-NEXT: [[TMP1:%.*]] = call <4 x i1> @llvm.is.fpclass.v4f64(<4 x double> [[ARG]], i32 519) 52*38a44bdcSYingwei Zheng; CHECK-NEXT: ret <4 x i1> [[TMP1]] 53*38a44bdcSYingwei Zheng; 54*38a44bdcSYingwei Zheng %abs = tail call <4 x double> @llvm.fabs.v4f64(<4 x double> %arg) 55*38a44bdcSYingwei Zheng %ret = fcmp ueq <4 x double> %abs, splat (double 0x7FF0000000000000) 56*38a44bdcSYingwei Zheng ret <4 x i1> %ret 57*38a44bdcSYingwei Zheng} 58*38a44bdcSYingwei Zheng 59*38a44bdcSYingwei Zhengdefine <4 x i1> @test_vec_is_not_inf_or_nan(<4 x double> %arg) { 60*38a44bdcSYingwei Zheng; CHECK-LABEL: define <4 x i1> @test_vec_is_not_inf_or_nan( 61*38a44bdcSYingwei Zheng; CHECK-SAME: <4 x double> [[ARG:%.*]]) { 62*38a44bdcSYingwei Zheng; CHECK-NEXT: [[TMP1:%.*]] = call <4 x i1> @llvm.is.fpclass.v4f64(<4 x double> [[ARG]], i32 504) 63*38a44bdcSYingwei Zheng; CHECK-NEXT: ret <4 x i1> [[TMP1]] 64*38a44bdcSYingwei Zheng; 65*38a44bdcSYingwei Zheng %abs = tail call <4 x double> @llvm.fabs.v4f64(<4 x double> %arg) 66*38a44bdcSYingwei Zheng %ret = fcmp one <4 x double> %abs, splat (double 0x7FF0000000000000) 67*38a44bdcSYingwei Zheng ret <4 x i1> %ret 68*38a44bdcSYingwei Zheng} 69*38a44bdcSYingwei Zheng 70*38a44bdcSYingwei Zhengdefine <4 x i1> @test_vec_is_inf(<4 x double> %arg) { 71*38a44bdcSYingwei Zheng; CHECK-LABEL: define <4 x i1> @test_vec_is_inf( 72*38a44bdcSYingwei Zheng; CHECK-SAME: <4 x double> [[ARG:%.*]]) { 73*38a44bdcSYingwei Zheng; CHECK-NEXT: [[TMP1:%.*]] = call <4 x i1> @llvm.is.fpclass.v4f64(<4 x double> [[ARG]], i32 516) 74*38a44bdcSYingwei Zheng; CHECK-NEXT: ret <4 x i1> [[TMP1]] 75*38a44bdcSYingwei Zheng; 76*38a44bdcSYingwei Zheng %abs = tail call <4 x double> @llvm.fabs.v4f64(<4 x double> %arg) 77*38a44bdcSYingwei Zheng %ret = fcmp oeq <4 x double> %abs, splat (double 0x7FF0000000000000) 78*38a44bdcSYingwei Zheng ret <4 x i1> %ret 79*38a44bdcSYingwei Zheng} 80*38a44bdcSYingwei Zheng 81*38a44bdcSYingwei Zhengdefine <4 x i1> @test_vec_is_not_inf(<4 x double> %arg) { 82*38a44bdcSYingwei Zheng; CHECK-LABEL: define <4 x i1> @test_vec_is_not_inf( 83*38a44bdcSYingwei Zheng; CHECK-SAME: <4 x double> [[ARG:%.*]]) { 84*38a44bdcSYingwei Zheng; CHECK-NEXT: [[TMP1:%.*]] = call <4 x i1> @llvm.is.fpclass.v4f64(<4 x double> [[ARG]], i32 507) 85*38a44bdcSYingwei Zheng; CHECK-NEXT: ret <4 x i1> [[TMP1]] 86*38a44bdcSYingwei Zheng; 87*38a44bdcSYingwei Zheng %abs = tail call <4 x double> @llvm.fabs.v4f64(<4 x double> %arg) 88*38a44bdcSYingwei Zheng %ret = fcmp une <4 x double> %abs, splat (double 0x7FF0000000000000) 89*38a44bdcSYingwei Zheng ret <4 x i1> %ret 90*38a44bdcSYingwei Zheng} 91*38a44bdcSYingwei Zheng 92*38a44bdcSYingwei Zhengdefine i1 @test_fp128_is_inf_or_nan(fp128 %arg) { 93*38a44bdcSYingwei Zheng; CHECK-LABEL: define i1 @test_fp128_is_inf_or_nan( 94*38a44bdcSYingwei Zheng; CHECK-SAME: fp128 [[ARG:%.*]]) { 95*38a44bdcSYingwei Zheng; CHECK-NEXT: [[TMP1:%.*]] = call i1 @llvm.is.fpclass.f128(fp128 [[ARG]], i32 519) 96*38a44bdcSYingwei Zheng; CHECK-NEXT: ret i1 [[TMP1]] 97*38a44bdcSYingwei Zheng; 98*38a44bdcSYingwei Zheng %abs = tail call fp128 @llvm.fabs.f128(fp128 %arg) 99*38a44bdcSYingwei Zheng %ret = fcmp ueq fp128 %abs, 0xL00000000000000007FFF000000000000 100*38a44bdcSYingwei Zheng ret i1 %ret 101*38a44bdcSYingwei Zheng} 102*38a44bdcSYingwei Zheng 103*38a44bdcSYingwei Zhengdefine i1 @test_fp128_is_not_inf_or_nan(fp128 %arg) { 104*38a44bdcSYingwei Zheng; CHECK-LABEL: define i1 @test_fp128_is_not_inf_or_nan( 105*38a44bdcSYingwei Zheng; CHECK-SAME: fp128 [[ARG:%.*]]) { 106*38a44bdcSYingwei Zheng; CHECK-NEXT: [[TMP1:%.*]] = call i1 @llvm.is.fpclass.f128(fp128 [[ARG]], i32 504) 107*38a44bdcSYingwei Zheng; CHECK-NEXT: ret i1 [[TMP1]] 108*38a44bdcSYingwei Zheng; 109*38a44bdcSYingwei Zheng %abs = tail call fp128 @llvm.fabs.f128(fp128 %arg) 110*38a44bdcSYingwei Zheng %ret = fcmp one fp128 %abs, 0xL00000000000000007FFF000000000000 111*38a44bdcSYingwei Zheng ret i1 %ret 112*38a44bdcSYingwei Zheng} 113*38a44bdcSYingwei Zheng 114*38a44bdcSYingwei Zhengdefine i1 @test_fp128_is_inf(fp128 %arg) { 115*38a44bdcSYingwei Zheng; CHECK-LABEL: define i1 @test_fp128_is_inf( 116*38a44bdcSYingwei Zheng; CHECK-SAME: fp128 [[ARG:%.*]]) { 117*38a44bdcSYingwei Zheng; CHECK-NEXT: [[TMP1:%.*]] = call i1 @llvm.is.fpclass.f128(fp128 [[ARG]], i32 516) 118*38a44bdcSYingwei Zheng; CHECK-NEXT: ret i1 [[TMP1]] 119*38a44bdcSYingwei Zheng; 120*38a44bdcSYingwei Zheng %abs = tail call fp128 @llvm.fabs.f128(fp128 %arg) 121*38a44bdcSYingwei Zheng %ret = fcmp oeq fp128 %abs, 0xL00000000000000007FFF000000000000 122*38a44bdcSYingwei Zheng ret i1 %ret 123*38a44bdcSYingwei Zheng} 124*38a44bdcSYingwei Zheng 125*38a44bdcSYingwei Zhengdefine i1 @test_fp128_is_not_inf(fp128 %arg) { 126*38a44bdcSYingwei Zheng; CHECK-LABEL: define i1 @test_fp128_is_not_inf( 127*38a44bdcSYingwei Zheng; CHECK-SAME: fp128 [[ARG:%.*]]) { 128*38a44bdcSYingwei Zheng; CHECK-NEXT: [[TMP1:%.*]] = call i1 @llvm.is.fpclass.f128(fp128 [[ARG]], i32 507) 129*38a44bdcSYingwei Zheng; CHECK-NEXT: ret i1 [[TMP1]] 130*38a44bdcSYingwei Zheng; 131*38a44bdcSYingwei Zheng %abs = tail call fp128 @llvm.fabs.f128(fp128 %arg) 132*38a44bdcSYingwei Zheng %ret = fcmp une fp128 %abs, 0xL00000000000000007FFF000000000000 133*38a44bdcSYingwei Zheng ret i1 %ret 134*38a44bdcSYingwei Zheng} 135*38a44bdcSYingwei Zheng 136*38a44bdcSYingwei Zhengdefine i1 @test_x86_fp80_is_inf_or_nan(x86_fp80 %arg) { 137*38a44bdcSYingwei Zheng; CHECK-LABEL: define i1 @test_x86_fp80_is_inf_or_nan( 138*38a44bdcSYingwei Zheng; CHECK-SAME: x86_fp80 [[ARG:%.*]]) { 139*38a44bdcSYingwei Zheng; CHECK-NEXT: [[TMP1:%.*]] = call i1 @llvm.is.fpclass.f80(x86_fp80 [[ARG]], i32 519) 140*38a44bdcSYingwei Zheng; CHECK-NEXT: ret i1 [[TMP1]] 141*38a44bdcSYingwei Zheng; 142*38a44bdcSYingwei Zheng %abs = tail call x86_fp80 @llvm.fabs.f80(x86_fp80 %arg) 143*38a44bdcSYingwei Zheng %ret = fcmp ueq x86_fp80 %abs, 0xK7FFF8000000000000000 144*38a44bdcSYingwei Zheng ret i1 %ret 145*38a44bdcSYingwei Zheng} 146*38a44bdcSYingwei Zheng 147*38a44bdcSYingwei Zhengdefine i1 @test_x86_fp80_is_not_inf_or_nan(x86_fp80 %arg) { 148*38a44bdcSYingwei Zheng; CHECK-LABEL: define i1 @test_x86_fp80_is_not_inf_or_nan( 149*38a44bdcSYingwei Zheng; CHECK-SAME: x86_fp80 [[ARG:%.*]]) { 150*38a44bdcSYingwei Zheng; CHECK-NEXT: [[TMP1:%.*]] = call i1 @llvm.is.fpclass.f80(x86_fp80 [[ARG]], i32 504) 151*38a44bdcSYingwei Zheng; CHECK-NEXT: ret i1 [[TMP1]] 152*38a44bdcSYingwei Zheng; 153*38a44bdcSYingwei Zheng %abs = tail call x86_fp80 @llvm.fabs.f80(x86_fp80 %arg) 154*38a44bdcSYingwei Zheng %ret = fcmp one x86_fp80 %abs, 0xK7FFF8000000000000000 155*38a44bdcSYingwei Zheng ret i1 %ret 156*38a44bdcSYingwei Zheng} 157*38a44bdcSYingwei Zheng 158*38a44bdcSYingwei Zhengdefine i1 @test_x86_fp80_is_inf(x86_fp80 %arg) { 159*38a44bdcSYingwei Zheng; CHECK-LABEL: define i1 @test_x86_fp80_is_inf( 160*38a44bdcSYingwei Zheng; CHECK-SAME: x86_fp80 [[ARG:%.*]]) { 161*38a44bdcSYingwei Zheng; CHECK-NEXT: [[TMP1:%.*]] = call i1 @llvm.is.fpclass.f80(x86_fp80 [[ARG]], i32 516) 162*38a44bdcSYingwei Zheng; CHECK-NEXT: ret i1 [[TMP1]] 163*38a44bdcSYingwei Zheng; 164*38a44bdcSYingwei Zheng %abs = tail call x86_fp80 @llvm.fabs.f80(x86_fp80 %arg) 165*38a44bdcSYingwei Zheng %ret = fcmp oeq x86_fp80 %abs, 0xK7FFF8000000000000000 166*38a44bdcSYingwei Zheng ret i1 %ret 167*38a44bdcSYingwei Zheng} 168*38a44bdcSYingwei Zheng 169*38a44bdcSYingwei Zhengdefine i1 @test_x86_fp80_is_not_inf(x86_fp80 %arg) { 170*38a44bdcSYingwei Zheng; CHECK-LABEL: define i1 @test_x86_fp80_is_not_inf( 171*38a44bdcSYingwei Zheng; CHECK-SAME: x86_fp80 [[ARG:%.*]]) { 172*38a44bdcSYingwei Zheng; CHECK-NEXT: [[TMP1:%.*]] = call i1 @llvm.is.fpclass.f80(x86_fp80 [[ARG]], i32 507) 173*38a44bdcSYingwei Zheng; CHECK-NEXT: ret i1 [[TMP1]] 174*38a44bdcSYingwei Zheng; 175*38a44bdcSYingwei Zheng %abs = tail call x86_fp80 @llvm.fabs.f80(x86_fp80 %arg) 176*38a44bdcSYingwei Zheng %ret = fcmp une x86_fp80 %abs, 0xK7FFF8000000000000000 177*38a44bdcSYingwei Zheng ret i1 %ret 178*38a44bdcSYingwei Zheng} 179