1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156
|
; RUN: llvm-as < %s | llvm-dis > %t.orig
; RUN: llvm-as < %s | llvm-c-test --echo > %t.echo
; RUN: diff -w %t.orig %t.echo
;
source_filename = "/test/Bindings/float_ops.ll"
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
define float @float_ops_f32(float %a, float %b) {
%1 = fneg float %a
%2 = fadd float %a, %b
%3 = fsub float %a, %b
%4 = fmul float %a, %b
%5 = fdiv float %a, %b
%6 = frem float %a, %b
ret float %1
}
define double @float_ops_f64(double %a, double %b) {
%1 = fneg double %a
%2 = fadd double %a, %b
%3 = fsub double %a, %b
%4 = fmul double %a, %b
%5 = fdiv double %a, %b
%6 = frem double %a, %b
ret double %1
}
define void @float_cmp_f32(float %a, float %b) {
%1 = fcmp oeq float %a, %b
%2 = fcmp ogt float %a, %b
%3 = fcmp olt float %a, %b
%4 = fcmp ole float %a, %b
%5 = fcmp one float %a, %b
%6 = fcmp ueq float %a, %b
%7 = fcmp ugt float %a, %b
%8 = fcmp ult float %a, %b
%9 = fcmp ule float %a, %b
%10 = fcmp une float %a, %b
%11 = fcmp ord float %a, %b
%12 = fcmp false float %a, %b
%13 = fcmp true float %a, %b
ret void
}
define void @float_cmp_f64(double %a, double %b) {
%1 = fcmp oeq double %a, %b
%2 = fcmp ogt double %a, %b
%3 = fcmp olt double %a, %b
%4 = fcmp ole double %a, %b
%5 = fcmp one double %a, %b
%6 = fcmp ueq double %a, %b
%7 = fcmp ugt double %a, %b
%8 = fcmp ult double %a, %b
%9 = fcmp ule double %a, %b
%10 = fcmp une double %a, %b
%11 = fcmp ord double %a, %b
%12 = fcmp false double %a, %b
%13 = fcmp true double %a, %b
ret void
}
define void @float_cmp_fast_f32(float %a, float %b) {
%1 = fcmp fast oeq float %a, %b
%2 = fcmp nsz ogt float %a, %b
%3 = fcmp nsz nnan olt float %a, %b
%4 = fcmp contract ole float %a, %b
%5 = fcmp nnan one float %a, %b
%6 = fcmp nnan ninf nsz ueq float %a, %b
%7 = fcmp arcp ugt float %a, %b
%8 = fcmp fast ult float %a, %b
%9 = fcmp fast ule float %a, %b
%10 = fcmp fast une float %a, %b
%11 = fcmp fast ord float %a, %b
%12 = fcmp nnan ninf false float %a, %b
%13 = fcmp nnan ninf true float %a, %b
ret void
}
define void @float_cmp_fast_f64(double %a, double %b) {
%1 = fcmp fast oeq double %a, %b
%2 = fcmp nsz ogt double %a, %b
%3 = fcmp nsz nnan olt double %a, %b
%4 = fcmp contract ole double %a, %b
%5 = fcmp nnan one double %a, %b
%6 = fcmp nnan ninf nsz ueq double %a, %b
%7 = fcmp arcp ugt double %a, %b
%8 = fcmp fast ult double %a, %b
%9 = fcmp fast ule double %a, %b
%10 = fcmp fast une double %a, %b
%11 = fcmp fast ord double %a, %b
%12 = fcmp nnan ninf false double %a, %b
%13 = fcmp nnan ninf true double %a, %b
ret void
}
define float @float_ops_fast_f32(float %a, float %b) {
%1 = fneg nnan float %a
%2 = fadd ninf float %a, %b
%3 = fsub nsz float %a, %b
%4 = fmul arcp float %a, %b
%5 = fdiv contract float %a, %b
%6 = frem afn float %a, %b
%7 = fadd reassoc float %a, %b
%8 = fadd reassoc float %7, %b
%9 = fadd fast float %a, %b
%10 = fadd nnan nsz float %a, %b
%11 = frem nnan nsz float %a, %b
%12 = fdiv nnan nsz arcp float %a, %b
%13 = fmul nnan nsz ninf contract float %a, %b
%14 = fmul nnan nsz ninf arcp contract afn reassoc float %a, %b
ret float %1
}
define double @float_ops_fast_f64(double %a, double %b) {
%1 = fneg nnan double %a
%2 = fadd ninf double %a, %b
%3 = fsub nsz double %a, %b
%4 = fmul arcp double %a, %b
%5 = fdiv contract double %a, %b
%6 = frem afn double %a, %b
%7 = fadd reassoc double %a, %b
%8 = fadd reassoc double %7, %b
%9 = fadd fast double %a, %b
%10 = fadd nnan nsz double %a, %b
%11 = frem nnan nsz double %a, %b
%12 = fdiv nnan nsz arcp double %a, %b
%13 = fmul nnan nsz ninf contract double %a, %b
%14 = fmul nnan nsz ninf arcp contract afn reassoc double %a, %b
ret double %1
}
|