brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.2 KiB · 9c08e9d Raw
269 lines · plain
1; RUN: llvm-as < %s | llvm-dis | FileCheck -strict-whitespace %s2; RUN: opt -S < %s | FileCheck -strict-whitespace %s3; RUN: verify-uselistorder %s4 5@addr   = external global i646@select = external global i17@vec    = external global <3 x float>8@arr    = external global [3 x float]9 10declare float @foo(float)11 12define float @none(float %x, float %y) {13entry:14; CHECK:  %vec = load <3 x float>, ptr @vec15  %vec    = load <3 x float>, ptr @vec16; CHECK:  %select = load i1, ptr @select17  %select = load i1, ptr @select18; CHECK:  %arr = load [3 x float], ptr @arr19  %arr    = load [3 x float], ptr @arr20; CHECK:  %scalable = load <vscale x 3 x float>, ptr @vec21  %scalable = load <vscale x 3 x float>, ptr @vec22 23; CHECK:  %a = fadd float %x, %y24  %a = fadd float %x, %y25; CHECK:  %a_vec = fadd <3 x float> %vec, %vec26  %a_vec = fadd <3 x float> %vec, %vec27; CHECK:  %b = fsub float %x, %y28  %b = fsub float %x, %y29; CHECK:  %b_vec = fsub <3 x float> %vec, %vec30  %b_vec = fsub <3 x float> %vec, %vec31; CHECK:  %c = fmul float %x, %y32  %c = fmul float %x, %y33; CHECK:  %c_vec = fmul <3 x float> %vec, %vec34  %c_vec = fmul <3 x float> %vec, %vec35; CHECK:  %d = fdiv float %x, %y36  %d = fdiv float %x, %y37; CHECK:  %d_vec = fdiv <3 x float> %vec, %vec38  %d_vec = fdiv <3 x float> %vec, %vec39; CHECK:  %e = frem float %x, %y40  %e = frem float %x, %y41; CHECK:  %e_vec = frem <3 x float> %vec, %vec42  %e_vec = frem <3 x float> %vec, %vec43; CHECK:  %f = fneg float %x44  %f = fneg float %x45; CHECK:  %f_vec = fneg <3 x float> %vec46  %f_vec = fneg <3 x float> %vec47; CHECK: %g = fpext float %x to double48  %g = fpext float %x to double49; CHECK: %g_vec = fpext <3 x float> %vec to <3 x double>50  %g_vec = fpext <3 x float> %vec to <3 x double>51; CHECK: %g_scalable = fpext <vscale x 3 x float> %scalable to <vscale x 3 x double>52  %g_scalable = fpext <vscale x 3 x float> %scalable to <vscale x 3 x double>53; CHECK: %h = fptrunc float %x to half54  %h = fptrunc float %x to half55; CHECK: %h_vec = fptrunc <3 x float> %vec to <3 x half>56  %h_vec = fptrunc <3 x float> %vec to <3 x half>57; CHECK: %h_scalable = fptrunc <vscale x 3 x float> %scalable to <vscale x 3 x half>58  %h_scalable = fptrunc <vscale x 3 x float> %scalable to <vscale x 3 x half>59; CHECK:  ret float %f60  ret  float %f61}62 63; CHECK: no_nan64define float @no_nan(float %x, float %y) {65entry:66; CHECK:  %vec = load <3 x float>, ptr @vec67  %vec    = load <3 x float>, ptr @vec68; CHECK:  %select = load i1, ptr @select69  %select = load i1, ptr @select70; CHECK:  %arr = load [3 x float], ptr @arr71  %arr    = load [3 x float], ptr @arr72; CHECK:  %scalable = load <vscale x 3 x float>, ptr @vec73  %scalable = load <vscale x 3 x float>, ptr @vec74 75; CHECK:  %a = fadd nnan float %x, %y76  %a = fadd nnan float %x, %y77; CHECK:  %a_vec = fadd nnan <3 x float> %vec, %vec78  %a_vec = fadd nnan <3 x float> %vec, %vec79; CHECK:  %b = fsub nnan float %x, %y80  %b = fsub nnan float %x, %y81; CHECK:  %b_vec = fsub nnan <3 x float> %vec, %vec82  %b_vec = fsub nnan <3 x float> %vec, %vec83; CHECK:  %c = fmul nnan float %x, %y84  %c = fmul nnan float %x, %y85; CHECK:  %c_vec = fmul nnan <3 x float> %vec, %vec86  %c_vec = fmul nnan <3 x float> %vec, %vec87; CHECK:  %d = fdiv nnan float %x, %y88  %d = fdiv nnan float %x, %y89; CHECK:  %d_vec = fdiv nnan <3 x float> %vec, %vec90  %d_vec = fdiv nnan <3 x float> %vec, %vec91; CHECK:  %e = frem nnan float %x, %y92  %e = frem nnan float %x, %y93; CHECK:  %e_vec = frem nnan <3 x float> %vec, %vec94  %e_vec = frem nnan <3 x float> %vec, %vec95; CHECK:  %f = fneg nnan float %x96  %f = fneg nnan float %x97; CHECK:  %f_vec = fneg nnan <3 x float> %vec98  %f_vec = fneg nnan <3 x float> %vec99; CHECK: %g = fpext nnan float %x to double100  %g = fpext nnan float %x to double101; CHECK: %g_vec = fpext nnan <3 x float> %vec to <3 x double>102  %g_vec = fpext nnan <3 x float> %vec to <3 x double>103; CHECK: %g_scalable = fpext nnan <vscale x 3 x float> %scalable to <vscale x 3 x double>104  %g_scalable = fpext nnan <vscale x 3 x float> %scalable to <vscale x 3 x double>105; CHECK: %h = fptrunc nnan float %x to half106  %h = fptrunc nnan float %x to half107; CHECK: %h_vec = fptrunc nnan <3 x float> %vec to <3 x half>108  %h_vec = fptrunc nnan <3 x float> %vec to <3 x half>109; CHECK: %h_scalable = fptrunc nnan <vscale x 3 x float> %scalable to <vscale x 3 x half>110  %h_scalable = fptrunc nnan <vscale x 3 x float> %scalable to <vscale x 3 x half>111; CHECK:  ret float %f112  ret float %f113}114 115; CHECK: @contract(116define float @contract(float %x, float %y) {117entry:118; CHECK: %a = fsub contract float %x, %y119  %a = fsub contract float %x, %y120; CHECK: %b = fadd contract float %x, %y121  %b = fadd contract float %x, %y122; CHECK: %c = fmul contract float %a, %b123  %c = fmul contract float %a, %b124; CHECK: %d = fpext contract float %x to double125  %d = fpext contract float %x to double126; CHECK: %e = fptrunc contract float %x to half127  %e = fptrunc contract float %x to half128  ret float %c129}130 131; CHECK: @reassoc(132define float @reassoc(float %x, float %y) {133; CHECK: %a = fsub reassoc float %x, %y134  %a = fsub reassoc float %x, %y135; CHECK: %b = fmul reassoc float %x, %y136  %b = fmul reassoc float %x, %y137; CHECK: %c = call reassoc float @foo(float %b)138  %c = call reassoc float @foo(float %b)139; CHECK: %d = fpext reassoc float %x to double140  %d = fpext reassoc float %x to double141; CHECK: %e = fptrunc reassoc float %x to half142  %e = fptrunc reassoc float %x to half143  ret float %c144}145 146; CHECK: @afn(147define float @afn(float %x, float %y) {148; CHECK: %a = fdiv afn float %x, %y149  %a = fdiv afn float %x, %y150; CHECK: %b = frem afn float %x, %y151  %b = frem afn float %x, %y152; CHECK: %c = call afn float @foo(float %b)153  %c = call afn float @foo(float %b)154  ret float %c155}156 157; CHECK: no_nan_inf158define float @no_nan_inf(float %x, float %y) {159entry:160; CHECK:  %vec = load <3 x float>, ptr @vec161  %vec    = load <3 x float>, ptr @vec162; CHECK:  %select = load i1, ptr @select163  %select = load i1, ptr @select164; CHECK:  %arr = load [3 x float], ptr @arr165  %arr    = load [3 x float], ptr @arr166; CHECK:  %scalable = load <vscale x 3 x float>, ptr @vec167  %scalable = load <vscale x 3 x float>, ptr @vec168 169; CHECK:  %a = fadd nnan ninf float %x, %y170  %a = fadd ninf nnan float %x, %y171; CHECK:  %a_vec = fadd nnan <3 x float> %vec, %vec172  %a_vec = fadd nnan <3 x float> %vec, %vec173; CHECK:  %b = fsub nnan float %x, %y174  %b = fsub nnan float %x, %y175; CHECK:  %b_vec = fsub nnan ninf <3 x float> %vec, %vec176  %b_vec = fsub ninf nnan <3 x float> %vec, %vec177; CHECK:  %c = fmul nnan float %x, %y178  %c = fmul nnan float %x, %y179; CHECK:  %c_vec = fmul nnan <3 x float> %vec, %vec180  %c_vec = fmul nnan <3 x float> %vec, %vec181; CHECK:  %d = fdiv nnan ninf float %x, %y182  %d = fdiv ninf nnan float %x, %y183; CHECK:  %d_vec = fdiv nnan <3 x float> %vec, %vec184  %d_vec = fdiv nnan <3 x float> %vec, %vec185; CHECK:  %e = frem nnan float %x, %y186  %e = frem nnan float %x, %y187; CHECK:  %e_vec = frem nnan ninf <3 x float> %vec, %vec188  %e_vec = frem ninf nnan <3 x float> %vec, %vec189; CHECK: %f = fpext nnan ninf float %x to double190  %f = fpext ninf nnan float %x to double191; CHECK: %f_vec = fpext nnan ninf <3 x float> %vec to <3 x double>192  %f_vec = fpext ninf nnan <3 x float> %vec to <3 x double>193; CHECK: %f_scalable = fpext nnan ninf <vscale x 3 x float> %scalable to <vscale x 3 x double>194  %f_scalable = fpext ninf nnan <vscale x 3 x float> %scalable to <vscale x 3 x double>195; CHECK: %g = fptrunc nnan ninf float %x to half196  %g = fptrunc ninf nnan float %x to half197; CHECK: %g_vec = fptrunc nnan ninf <3 x float> %vec to <3 x half>198  %g_vec = fptrunc ninf nnan <3 x float> %vec to <3 x half>199; CHECK: %g_scalable = fptrunc nnan ninf <vscale x 3 x float> %scalable to <vscale x 3 x half>200  %g_scalable = fptrunc ninf nnan <vscale x 3 x float> %scalable to <vscale x 3 x half>201; CHECK:  ret float %e202  ret float %e203}204 205; CHECK: mixed_flags206define float @mixed_flags(float %x, float %y) {207entry:208; CHECK:  %vec = load <3 x float>, ptr @vec209  %vec    = load <3 x float>, ptr @vec210; CHECK:  %select = load i1, ptr @select211  %select = load i1, ptr @select212; CHECK:  %arr = load [3 x float], ptr @arr213  %arr    = load [3 x float], ptr @arr214 215; CHECK:  %a = fadd nnan ninf afn float %x, %y216  %a = fadd ninf nnan afn float %x, %y217; CHECK:  %a_vec = fadd reassoc nnan <3 x float> %vec, %vec218  %a_vec = fadd reassoc nnan <3 x float> %vec, %vec219; CHECK:  %b = fsub fast float %x, %y220  %b = fsub nnan nsz fast float %x, %y221; CHECK:  %b_vec = fsub nnan <3 x float> %vec, %vec222  %b_vec = fsub nnan <3 x float> %vec, %vec223; CHECK:  %c = fmul fast float %x, %y224  %c = fmul nsz fast arcp float %x, %y225; CHECK:  %c_vec = fmul nsz <3 x float> %vec, %vec226  %c_vec = fmul nsz <3 x float> %vec, %vec227; CHECK:  %d = fdiv nnan ninf arcp float %x, %y228  %d = fdiv arcp ninf nnan float %x, %y229; CHECK:  %d_vec = fdiv fast <3 x float> %vec, %vec230  %d_vec = fdiv fast nnan arcp <3 x float> %vec, %vec231; CHECK:  %e = frem nnan nsz float %x, %y232  %e = frem nnan nsz float %x, %y233; CHECK:  %e_vec = frem nnan <3 x float> %vec, %vec234  %e_vec = frem nnan <3 x float> %vec, %vec235; CHECK:  %f = fneg nnan nsz float %x236  %f = fneg nnan nsz float %x237; CHECK:  %f_vec = fneg fast <3 x float> %vec238  %f_vec = fneg fast <3 x float> %vec239; CHECK:  ret float %f240  ret float %f241}242 243; CHECK: @fmf_calls(244define float @fmf_calls(float %x, float %y) {245entry:246; CHECK:  %vec = load <3 x float>, ptr @vec247  %vec    = load <3 x float>, ptr @vec248; CHECK:  %select = load i1, ptr @select249  %select = load i1, ptr @select250; CHECK:  %arr = load [3 x float], ptr @arr251  %arr    = load [3 x float], ptr @arr252 253; CHECK:  %a = call nnan ninf afn float @extfunc(float %x, float %y)254  %a = call ninf nnan afn float @extfunc(float %x, float %y)255; CHECK:  %a_vec = call reassoc nnan <3 x float> @extfunc_vec(<3 x float> %vec, <3 x float> %vec)256  %a_vec = call reassoc nnan <3 x float> @extfunc_vec(<3 x float> %vec, <3 x float> %vec)257; CHECK:  %b = call nnan ninf afn float (...) @var_extfunc(float %x, float %y)258  %b = call ninf nnan afn float (...) @var_extfunc(float %x, float %y)259; CHECK:  %b_vec = call reassoc nnan <3 x float> (...) @var_extfunc_vec(<3 x float> %vec, <3 x float> %vec)260  %b_vec = call reassoc nnan <3 x float> (...) @var_extfunc_vec(<3 x float> %vec, <3 x float> %vec)261; CHECK:  ret float %a262  ret float %a263}264 265declare float @extfunc(float, float)266declare <3 x float> @extfunc_vec(<3 x float>, <3 x float>)267declare float @var_extfunc(...)268declare <3 x float> @var_extfunc_vec(...)269