1; RUN: llvm-as < %s | llvm-dis | FileCheck %s 2; RUN: opt -S < %s | FileCheck %s 3 4@addr = external global i64 5@select = external global i1 6@vec = external global <3 x float> 7@arr = external global [3 x float] 8 9define float @none(float %x, float %y) { 10entry: 11; CHECK: %vec = load <3 x float>* @vec 12 %vec = load <3 x float>* @vec 13; CHECK: %select = load i1* @select 14 %select = load i1* @select 15; CHECK: %arr = load [3 x float]* @arr 16 %arr = load [3 x float]* @arr 17 18; CHECK: %a = fadd float %x, %y 19 %a = fadd float %x, %y 20; CHECK: %a_vec = fadd <3 x float> %vec, %vec 21 %a_vec = fadd <3 x float> %vec, %vec 22; CHECK: %b = fsub float %x, %y 23 %b = fsub float %x, %y 24; CHECK: %b_vec = fsub <3 x float> %vec, %vec 25 %b_vec = fsub <3 x float> %vec, %vec 26; CHECK: %c = fmul float %x, %y 27 %c = fmul float %x, %y 28; CHECK: %c_vec = fmul <3 x float> %vec, %vec 29 %c_vec = fmul <3 x float> %vec, %vec 30; CHECK: %d = fdiv float %x, %y 31 %d = fdiv float %x, %y 32; CHECK: %d_vec = fdiv <3 x float> %vec, %vec 33 %d_vec = fdiv <3 x float> %vec, %vec 34; CHECK: %e = frem float %x, %y 35 %e = frem float %x, %y 36; CHECK: %e_vec = frem <3 x float> %vec, %vec 37 %e_vec = frem <3 x float> %vec, %vec 38; CHECK: ret float %e 39 ret float %e 40} 41 42; CHECK: no_nan 43define float @no_nan(float %x, float %y) { 44entry: 45; CHECK: %vec = load <3 x float>* @vec 46 %vec = load <3 x float>* @vec 47; CHECK: %select = load i1* @select 48 %select = load i1* @select 49; CHECK: %arr = load [3 x float]* @arr 50 %arr = load [3 x float]* @arr 51 52; CHECK: %a = fadd nnan float %x, %y 53 %a = fadd nnan float %x, %y 54; CHECK: %a_vec = fadd nnan <3 x float> %vec, %vec 55 %a_vec = fadd nnan <3 x float> %vec, %vec 56; CHECK: %b = fsub nnan float %x, %y 57 %b = fsub nnan float %x, %y 58; CHECK: %b_vec = fsub nnan <3 x float> %vec, %vec 59 %b_vec = fsub nnan <3 x float> %vec, %vec 60; CHECK: %c = fmul nnan float %x, %y 61 %c = fmul nnan float %x, %y 62; CHECK: %c_vec = fmul nnan <3 x float> %vec, %vec 63 %c_vec = fmul nnan <3 x float> %vec, %vec 64; CHECK: %d = fdiv nnan float %x, %y 65 %d = fdiv nnan float %x, %y 66; CHECK: %d_vec = fdiv nnan <3 x float> %vec, %vec 67 %d_vec = fdiv nnan <3 x float> %vec, %vec 68; CHECK: %e = frem nnan float %x, %y 69 %e = frem nnan float %x, %y 70; CHECK: %e_vec = frem nnan <3 x float> %vec, %vec 71 %e_vec = frem nnan <3 x float> %vec, %vec 72; CHECK: ret float %e 73 ret float %e 74} 75 76; CHECK: no_nan_inf 77define float @no_nan_inf(float %x, float %y) { 78entry: 79; CHECK: %vec = load <3 x float>* @vec 80 %vec = load <3 x float>* @vec 81; CHECK: %select = load i1* @select 82 %select = load i1* @select 83; CHECK: %arr = load [3 x float]* @arr 84 %arr = load [3 x float]* @arr 85 86; CHECK: %a = fadd nnan ninf float %x, %y 87 %a = fadd ninf nnan float %x, %y 88; CHECK: %a_vec = fadd nnan <3 x float> %vec, %vec 89 %a_vec = fadd nnan <3 x float> %vec, %vec 90; CHECK: %b = fsub nnan float %x, %y 91 %b = fsub nnan float %x, %y 92; CHECK: %b_vec = fsub nnan ninf <3 x float> %vec, %vec 93 %b_vec = fsub ninf nnan <3 x float> %vec, %vec 94; CHECK: %c = fmul nnan float %x, %y 95 %c = fmul nnan float %x, %y 96; CHECK: %c_vec = fmul nnan <3 x float> %vec, %vec 97 %c_vec = fmul nnan <3 x float> %vec, %vec 98; CHECK: %d = fdiv nnan ninf float %x, %y 99 %d = fdiv ninf nnan float %x, %y 100; CHECK: %d_vec = fdiv nnan <3 x float> %vec, %vec 101 %d_vec = fdiv nnan <3 x float> %vec, %vec 102; CHECK: %e = frem nnan float %x, %y 103 %e = frem nnan float %x, %y 104; CHECK: %e_vec = frem nnan ninf <3 x float> %vec, %vec 105 %e_vec = frem ninf nnan <3 x float> %vec, %vec 106; CHECK: ret float %e 107 ret float %e 108} 109 110; CHECK: mixed_flags 111define float @mixed_flags(float %x, float %y) { 112entry: 113; CHECK: %vec = load <3 x float>* @vec 114 %vec = load <3 x float>* @vec 115; CHECK: %select = load i1* @select 116 %select = load i1* @select 117; CHECK: %arr = load [3 x float]* @arr 118 %arr = load [3 x float]* @arr 119 120; CHECK: %a = fadd nnan ninf float %x, %y 121 %a = fadd ninf nnan float %x, %y 122; CHECK: %a_vec = fadd nnan <3 x float> %vec, %vec 123 %a_vec = fadd nnan <3 x float> %vec, %vec 124; CHECK: %b = fsub fast float %x, %y 125 %b = fsub nnan nsz fast float %x, %y 126; CHECK: %b_vec = fsub nnan <3 x float> %vec, %vec 127 %b_vec = fsub nnan <3 x float> %vec, %vec 128; CHECK: %c = fmul fast float %x, %y 129 %c = fmul nsz fast arcp float %x, %y 130; CHECK: %c_vec = fmul nsz <3 x float> %vec, %vec 131 %c_vec = fmul nsz <3 x float> %vec, %vec 132; CHECK: %d = fdiv nnan ninf arcp float %x, %y 133 %d = fdiv arcp ninf nnan float %x, %y 134; CHECK: %d_vec = fdiv fast <3 x float> %vec, %vec 135 %d_vec = fdiv fast nnan arcp <3 x float> %vec, %vec 136; CHECK: %e = frem nnan nsz float %x, %y 137 %e = frem nnan nsz float %x, %y 138; CHECK: %e_vec = frem nnan <3 x float> %vec, %vec 139 %e_vec = frem nnan <3 x float> %vec, %vec 140; CHECK: ret float %e 141 ret float %e 142} 143