brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.5 KiB · 1082c6d Raw
184 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; RUN: opt -S -mtriple=amdgcn-amd-amdhsa -passes=instcombine < %s | FileCheck %s3 4@gv = constant i32 05 6define float @cvt_var(i32 %a) {7; CHECK-LABEL: define float @cvt_var(8; CHECK-SAME: i32 [[A:%.*]]) {9; CHECK-NEXT:    [[RET:%.*]] = call float @llvm.amdgcn.cvt.off.f32.i4(i32 [[A]])10; CHECK-NEXT:    ret float [[RET]]11;12  %ret = call float @llvm.amdgcn.cvt.off.f32.i4(i32 %a)13  ret float %ret14}15 16define float @cvt_imm_0() {17; CHECK-LABEL: define float @cvt_imm_0() {18; CHECK-NEXT:    ret float 0.000000e+0019;20  %ret = call float @llvm.amdgcn.cvt.off.f32.i4(i32 0)21  ret float %ret22}23 24define float @cvt_imm_1() {25; CHECK-LABEL: define float @cvt_imm_1() {26; CHECK-NEXT:    ret float 6.250000e-0227;28  %ret = call float @llvm.amdgcn.cvt.off.f32.i4(i32 1)29  ret float %ret30}31 32define float @cvt_imm_2() {33; CHECK-LABEL: define float @cvt_imm_2() {34; CHECK-NEXT:    ret float 1.250000e-0135;36  %ret = call float @llvm.amdgcn.cvt.off.f32.i4(i32 2)37  ret float %ret38}39 40define float @cvt_imm_3() {41; CHECK-LABEL: define float @cvt_imm_3() {42; CHECK-NEXT:    ret float 1.875000e-0143;44  %ret = call float @llvm.amdgcn.cvt.off.f32.i4(i32 3)45  ret float %ret46}47 48define float @cvt_imm_4() {49; CHECK-LABEL: define float @cvt_imm_4() {50; CHECK-NEXT:    ret float 2.500000e-0151;52  %ret = call float @llvm.amdgcn.cvt.off.f32.i4(i32 4)53  ret float %ret54}55 56define float @cvt_imm_5() {57; CHECK-LABEL: define float @cvt_imm_5() {58; CHECK-NEXT:    ret float 3.125000e-0159;60  %ret = call float @llvm.amdgcn.cvt.off.f32.i4(i32 5)61  ret float %ret62}63 64define float @cvt_imm_6() {65; CHECK-LABEL: define float @cvt_imm_6() {66; CHECK-NEXT:    ret float 3.750000e-0167;68  %ret = call float @llvm.amdgcn.cvt.off.f32.i4(i32 6)69  ret float %ret70}71 72define float @cvt_imm_7() {73; CHECK-LABEL: define float @cvt_imm_7() {74; CHECK-NEXT:    ret float 4.375000e-0175;76  %ret = call float @llvm.amdgcn.cvt.off.f32.i4(i32 7)77  ret float %ret78}79 80define float @cvt_imm_8() {81; CHECK-LABEL: define float @cvt_imm_8() {82; CHECK-NEXT:    ret float -5.000000e-0183;84  %ret = call float @llvm.amdgcn.cvt.off.f32.i4(i32 8)85  ret float %ret86}87 88define float @cvt_imm_9() {89; CHECK-LABEL: define float @cvt_imm_9() {90; CHECK-NEXT:    ret float -4.375000e-0191;92  %ret = call float @llvm.amdgcn.cvt.off.f32.i4(i32 9)93  ret float %ret94}95 96define float @cvt_imm_10() {97; CHECK-LABEL: define float @cvt_imm_10() {98; CHECK-NEXT:    ret float -3.750000e-0199;100  %ret = call float @llvm.amdgcn.cvt.off.f32.i4(i32 10)101  ret float %ret102}103 104define float @cvt_imm_11() {105; CHECK-LABEL: define float @cvt_imm_11() {106; CHECK-NEXT:    ret float -3.125000e-01107;108  %ret = call float @llvm.amdgcn.cvt.off.f32.i4(i32 11)109  ret float %ret110}111 112define float @cvt_imm_12() {113; CHECK-LABEL: define float @cvt_imm_12() {114; CHECK-NEXT:    ret float -2.500000e-01115;116  %ret = call float @llvm.amdgcn.cvt.off.f32.i4(i32 12)117  ret float %ret118}119 120define float @cvt_imm_13() {121; CHECK-LABEL: define float @cvt_imm_13() {122; CHECK-NEXT:    ret float -1.875000e-01123;124  %ret = call float @llvm.amdgcn.cvt.off.f32.i4(i32 13)125  ret float %ret126}127 128define float @cvt_imm_14() {129; CHECK-LABEL: define float @cvt_imm_14() {130; CHECK-NEXT:    ret float -1.250000e-01131;132  %ret = call float @llvm.amdgcn.cvt.off.f32.i4(i32 14)133  ret float %ret134}135 136define float @cvt_imm_15() {137; CHECK-LABEL: define float @cvt_imm_15() {138; CHECK-NEXT:    ret float -6.250000e-02139;140  %ret = call float @llvm.amdgcn.cvt.off.f32.i4(i32 15)141  ret float %ret142}143 144define float @cvt_imm_underflow() {145; CHECK-LABEL: define float @cvt_imm_underflow() {146; CHECK-NEXT:    ret float -6.250000e-02147;148  %ret = call float @llvm.amdgcn.cvt.off.f32.i4(i32 -1)149  ret float %ret150}151 152define float @cvt_imm_overflow() {153; CHECK-LABEL: define float @cvt_imm_overflow() {154; CHECK-NEXT:    ret float 0.000000e+00155;156  %ret = call float @llvm.amdgcn.cvt.off.f32.i4(i32 16)157  ret float %ret158}159 160define float @cvt_poison() {161; CHECK-LABEL: define float @cvt_poison() {162; CHECK-NEXT:    ret float poison163;164  %ret = call float @llvm.amdgcn.cvt.off.f32.i4(i32 poison)165  ret float %ret166}167 168define float @cvt_undef() {169; CHECK-LABEL: define float @cvt_undef() {170; CHECK-NEXT:    ret float 0.000000e+00171;172  %ret = call float @llvm.amdgcn.cvt.off.f32.i4(i32 undef)173  ret float %ret174}175 176define float @cvt_constexpr() {177; CHECK-LABEL: define float @cvt_constexpr() {178; CHECK-NEXT:    [[RET:%.*]] = call float @llvm.amdgcn.cvt.off.f32.i4(i32 ptrtoint (ptr @gv to i32))179; CHECK-NEXT:    ret float [[RET]]180;181  %ret = call float @llvm.amdgcn.cvt.off.f32.i4(i32 ptrtoint (ptr @gv to i32))182  ret float %ret183}184