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