Daniel Sanders | 0d97270 | 2016-06-24 12:23:17 +0000 | [diff] [blame^] | 1 | ; RUN: llc < %s -march=mipsel -mcpu=mips32 -relocation-model=pic | FileCheck %s -check-prefixes=ALL,FCC,32-FCC |
| 2 | ; RUN: llc < %s -march=mipsel -mcpu=mips32r2 -relocation-model=pic | FileCheck %s -check-prefixes=ALL,FCC,32-FCC |
| 3 | ; RUN: llc < %s -march=mipsel -mcpu=mips32r6 -relocation-model=pic | FileCheck %s -check-prefixes=ALL,GPR,32-GPR |
| 4 | ; RUN: llc < %s -march=mips64el -mcpu=mips64 | FileCheck %s -check-prefixes=ALL,FCC,64-FCC |
| 5 | ; RUN: llc < %s -march=mips64el -mcpu=mips64r2 | FileCheck %s -check-prefixes=ALL,FCC,64-FCC |
| 6 | ; RUN: llc < %s -march=mips64el -mcpu=mips64r6 | FileCheck %s -check-prefixes=ALL,GPR,64-GPR |
Akira Hatanaka | a535270 | 2011-03-31 18:26:17 +0000 | [diff] [blame] | 7 | |
| 8 | define void @func0(float %f2, float %f3) nounwind { |
| 9 | entry: |
Daniel Sanders | 3d3ea53 | 2014-06-12 15:00:17 +0000 | [diff] [blame] | 10 | ; ALL-LABEL: func0: |
| 11 | |
| 12 | ; 32-FCC: c.eq.s $f12, $f14 |
| 13 | ; 64-FCC: c.eq.s $f12, $f13 |
Daniel Sanders | 69c6008 | 2015-05-20 14:18:59 +0000 | [diff] [blame] | 14 | ; FCC: bc1f $BB0_2 |
Daniel Sanders | 3d3ea53 | 2014-06-12 15:00:17 +0000 | [diff] [blame] | 15 | |
| 16 | ; 32-GPR: cmp.eq.s $[[FGRCC:f[0-9]+]], $f12, $f14 |
| 17 | ; 64-GPR: cmp.eq.s $[[FGRCC:f[0-9]+]], $f12, $f13 |
| 18 | ; GPR: mfc1 $[[GPRCC:[0-9]+]], $[[FGRCC:f[0-9]+]] |
| 19 | ; FIXME: We ought to be able to transform not+bnez -> beqz |
| 20 | ; GPR: not $[[GPRCC]], $[[GPRCC]] |
Daniel Sanders | e8efff3 | 2016-03-14 16:24:05 +0000 | [diff] [blame] | 21 | ; 32-GPR: bnez $[[GPRCC]], $BB0_2 |
| 22 | ; 64-GPR: bnezc $[[GPRCC]], $BB0_2 |
Daniel Sanders | 3d3ea53 | 2014-06-12 15:00:17 +0000 | [diff] [blame] | 23 | |
Akira Hatanaka | a535270 | 2011-03-31 18:26:17 +0000 | [diff] [blame] | 24 | %cmp = fcmp oeq float %f2, %f3 |
| 25 | br i1 %cmp, label %if.then, label %if.else |
| 26 | |
| 27 | if.then: ; preds = %entry |
David Blaikie | 23af648 | 2015-04-16 23:24:18 +0000 | [diff] [blame] | 28 | tail call void (...) @g0() nounwind |
Akira Hatanaka | a535270 | 2011-03-31 18:26:17 +0000 | [diff] [blame] | 29 | br label %if.end |
| 30 | |
| 31 | if.else: ; preds = %entry |
David Blaikie | 23af648 | 2015-04-16 23:24:18 +0000 | [diff] [blame] | 32 | tail call void (...) @g1() nounwind |
Akira Hatanaka | a535270 | 2011-03-31 18:26:17 +0000 | [diff] [blame] | 33 | br label %if.end |
| 34 | |
| 35 | if.end: ; preds = %if.else, %if.then |
| 36 | ret void |
| 37 | } |
| 38 | |
| 39 | declare void @g0(...) |
| 40 | |
| 41 | declare void @g1(...) |
| 42 | |
| 43 | define void @func1(float %f2, float %f3) nounwind { |
| 44 | entry: |
Daniel Sanders | 3d3ea53 | 2014-06-12 15:00:17 +0000 | [diff] [blame] | 45 | ; ALL-LABEL: func1: |
| 46 | |
| 47 | ; 32-FCC: c.olt.s $f12, $f14 |
| 48 | ; 64-FCC: c.olt.s $f12, $f13 |
Daniel Sanders | 69c6008 | 2015-05-20 14:18:59 +0000 | [diff] [blame] | 49 | ; FCC: bc1f $BB1_2 |
Daniel Sanders | 3d3ea53 | 2014-06-12 15:00:17 +0000 | [diff] [blame] | 50 | |
| 51 | ; 32-GPR: cmp.ule.s $[[FGRCC:f[0-9]+]], $f14, $f12 |
| 52 | ; 64-GPR: cmp.ule.s $[[FGRCC:f[0-9]+]], $f13, $f12 |
| 53 | ; GPR: mfc1 $[[GPRCC:[0-9]+]], $[[FGRCC:f[0-9]+]] |
| 54 | ; GPR-NOT: not $[[GPRCC]], $[[GPRCC]] |
Daniel Sanders | e8efff3 | 2016-03-14 16:24:05 +0000 | [diff] [blame] | 55 | ; 32-GPR: bnez $[[GPRCC]], $BB1_2 |
| 56 | ; 64-GPR: bnezc $[[GPRCC]], $BB1_2 |
Daniel Sanders | 3d3ea53 | 2014-06-12 15:00:17 +0000 | [diff] [blame] | 57 | |
Akira Hatanaka | a535270 | 2011-03-31 18:26:17 +0000 | [diff] [blame] | 58 | %cmp = fcmp olt float %f2, %f3 |
| 59 | br i1 %cmp, label %if.then, label %if.else |
| 60 | |
| 61 | if.then: ; preds = %entry |
David Blaikie | 23af648 | 2015-04-16 23:24:18 +0000 | [diff] [blame] | 62 | tail call void (...) @g0() nounwind |
Akira Hatanaka | a535270 | 2011-03-31 18:26:17 +0000 | [diff] [blame] | 63 | br label %if.end |
| 64 | |
| 65 | if.else: ; preds = %entry |
David Blaikie | 23af648 | 2015-04-16 23:24:18 +0000 | [diff] [blame] | 66 | tail call void (...) @g1() nounwind |
Akira Hatanaka | a535270 | 2011-03-31 18:26:17 +0000 | [diff] [blame] | 67 | br label %if.end |
| 68 | |
| 69 | if.end: ; preds = %if.else, %if.then |
| 70 | ret void |
| 71 | } |
| 72 | |
| 73 | define void @func2(float %f2, float %f3) nounwind { |
| 74 | entry: |
Daniel Sanders | 3d3ea53 | 2014-06-12 15:00:17 +0000 | [diff] [blame] | 75 | ; ALL-LABEL: func2: |
| 76 | |
| 77 | ; 32-FCC: c.ole.s $f12, $f14 |
| 78 | ; 64-FCC: c.ole.s $f12, $f13 |
Daniel Sanders | 69c6008 | 2015-05-20 14:18:59 +0000 | [diff] [blame] | 79 | ; FCC: bc1t $BB2_2 |
Daniel Sanders | 3d3ea53 | 2014-06-12 15:00:17 +0000 | [diff] [blame] | 80 | |
| 81 | ; 32-GPR: cmp.ult.s $[[FGRCC:f[0-9]+]], $f14, $f12 |
| 82 | ; 64-GPR: cmp.ult.s $[[FGRCC:f[0-9]+]], $f13, $f12 |
| 83 | ; GPR: mfc1 $[[GPRCC:[0-9]+]], $[[FGRCC:f[0-9]+]] |
| 84 | ; GPR-NOT: not $[[GPRCC]], $[[GPRCC]] |
Daniel Sanders | e8efff3 | 2016-03-14 16:24:05 +0000 | [diff] [blame] | 85 | ; 32-GPR: beqz $[[GPRCC]], $BB2_2 |
| 86 | ; 64-GPR: beqzc $[[GPRCC]], $BB2_2 |
Daniel Sanders | 3d3ea53 | 2014-06-12 15:00:17 +0000 | [diff] [blame] | 87 | |
Akira Hatanaka | a535270 | 2011-03-31 18:26:17 +0000 | [diff] [blame] | 88 | %cmp = fcmp ugt float %f2, %f3 |
| 89 | br i1 %cmp, label %if.else, label %if.then |
| 90 | |
| 91 | if.then: ; preds = %entry |
David Blaikie | 23af648 | 2015-04-16 23:24:18 +0000 | [diff] [blame] | 92 | tail call void (...) @g0() nounwind |
Akira Hatanaka | a535270 | 2011-03-31 18:26:17 +0000 | [diff] [blame] | 93 | br label %if.end |
| 94 | |
| 95 | if.else: ; preds = %entry |
David Blaikie | 23af648 | 2015-04-16 23:24:18 +0000 | [diff] [blame] | 96 | tail call void (...) @g1() nounwind |
Akira Hatanaka | a535270 | 2011-03-31 18:26:17 +0000 | [diff] [blame] | 97 | br label %if.end |
| 98 | |
| 99 | if.end: ; preds = %if.else, %if.then |
| 100 | ret void |
| 101 | } |
| 102 | |
| 103 | define void @func3(double %f2, double %f3) nounwind { |
| 104 | entry: |
Daniel Sanders | 3d3ea53 | 2014-06-12 15:00:17 +0000 | [diff] [blame] | 105 | ; ALL-LABEL: func3: |
| 106 | |
| 107 | ; 32-FCC: c.eq.d $f12, $f14 |
| 108 | ; 64-FCC: c.eq.d $f12, $f13 |
Daniel Sanders | 69c6008 | 2015-05-20 14:18:59 +0000 | [diff] [blame] | 109 | ; FCC: bc1f $BB3_2 |
Daniel Sanders | 3d3ea53 | 2014-06-12 15:00:17 +0000 | [diff] [blame] | 110 | |
| 111 | ; 32-GPR: cmp.eq.d $[[FGRCC:f[0-9]+]], $f12, $f14 |
| 112 | ; 64-GPR: cmp.eq.d $[[FGRCC:f[0-9]+]], $f12, $f13 |
| 113 | ; GPR: mfc1 $[[GPRCC:[0-9]+]], $[[FGRCC:f[0-9]+]] |
| 114 | ; FIXME: We ought to be able to transform not+bnez -> beqz |
| 115 | ; GPR: not $[[GPRCC]], $[[GPRCC]] |
Daniel Sanders | e8efff3 | 2016-03-14 16:24:05 +0000 | [diff] [blame] | 116 | ; 32-GPR: bnez $[[GPRCC]], $BB3_2 |
| 117 | ; 64-GPR: bnezc $[[GPRCC]], $BB3_2 |
Daniel Sanders | 3d3ea53 | 2014-06-12 15:00:17 +0000 | [diff] [blame] | 118 | |
Akira Hatanaka | a535270 | 2011-03-31 18:26:17 +0000 | [diff] [blame] | 119 | %cmp = fcmp oeq double %f2, %f3 |
| 120 | br i1 %cmp, label %if.then, label %if.else |
| 121 | |
| 122 | if.then: ; preds = %entry |
David Blaikie | 23af648 | 2015-04-16 23:24:18 +0000 | [diff] [blame] | 123 | tail call void (...) @g0() nounwind |
Akira Hatanaka | a535270 | 2011-03-31 18:26:17 +0000 | [diff] [blame] | 124 | br label %if.end |
| 125 | |
| 126 | if.else: ; preds = %entry |
David Blaikie | 23af648 | 2015-04-16 23:24:18 +0000 | [diff] [blame] | 127 | tail call void (...) @g1() nounwind |
Akira Hatanaka | a535270 | 2011-03-31 18:26:17 +0000 | [diff] [blame] | 128 | br label %if.end |
| 129 | |
| 130 | if.end: ; preds = %if.else, %if.then |
| 131 | ret void |
| 132 | } |
| 133 | |
| 134 | define void @func4(double %f2, double %f3) nounwind { |
| 135 | entry: |
Daniel Sanders | 3d3ea53 | 2014-06-12 15:00:17 +0000 | [diff] [blame] | 136 | ; ALL-LABEL: func4: |
| 137 | |
| 138 | ; 32-FCC: c.olt.d $f12, $f14 |
| 139 | ; 64-FCC: c.olt.d $f12, $f13 |
Daniel Sanders | 69c6008 | 2015-05-20 14:18:59 +0000 | [diff] [blame] | 140 | ; FCC: bc1f $BB4_2 |
Daniel Sanders | 3d3ea53 | 2014-06-12 15:00:17 +0000 | [diff] [blame] | 141 | |
| 142 | ; 32-GPR: cmp.ule.d $[[FGRCC:f[0-9]+]], $f14, $f12 |
| 143 | ; 64-GPR: cmp.ule.d $[[FGRCC:f[0-9]+]], $f13, $f12 |
| 144 | ; GPR: mfc1 $[[GPRCC:[0-9]+]], $[[FGRCC:f[0-9]+]] |
| 145 | ; GPR-NOT: not $[[GPRCC]], $[[GPRCC]] |
Daniel Sanders | e8efff3 | 2016-03-14 16:24:05 +0000 | [diff] [blame] | 146 | ; 32-GPR: bnez $[[GPRCC]], $BB4_2 |
| 147 | ; 64-GPR: bnezc $[[GPRCC]], $BB4_2 |
Daniel Sanders | 3d3ea53 | 2014-06-12 15:00:17 +0000 | [diff] [blame] | 148 | |
Akira Hatanaka | a535270 | 2011-03-31 18:26:17 +0000 | [diff] [blame] | 149 | %cmp = fcmp olt double %f2, %f3 |
| 150 | br i1 %cmp, label %if.then, label %if.else |
| 151 | |
| 152 | if.then: ; preds = %entry |
David Blaikie | 23af648 | 2015-04-16 23:24:18 +0000 | [diff] [blame] | 153 | tail call void (...) @g0() nounwind |
Akira Hatanaka | a535270 | 2011-03-31 18:26:17 +0000 | [diff] [blame] | 154 | br label %if.end |
| 155 | |
| 156 | if.else: ; preds = %entry |
David Blaikie | 23af648 | 2015-04-16 23:24:18 +0000 | [diff] [blame] | 157 | tail call void (...) @g1() nounwind |
Akira Hatanaka | a535270 | 2011-03-31 18:26:17 +0000 | [diff] [blame] | 158 | br label %if.end |
| 159 | |
| 160 | if.end: ; preds = %if.else, %if.then |
| 161 | ret void |
| 162 | } |
| 163 | |
| 164 | define void @func5(double %f2, double %f3) nounwind { |
| 165 | entry: |
Daniel Sanders | 3d3ea53 | 2014-06-12 15:00:17 +0000 | [diff] [blame] | 166 | ; ALL-LABEL: func5: |
| 167 | |
| 168 | ; 32-FCC: c.ole.d $f12, $f14 |
| 169 | ; 64-FCC: c.ole.d $f12, $f13 |
Daniel Sanders | 69c6008 | 2015-05-20 14:18:59 +0000 | [diff] [blame] | 170 | ; FCC: bc1t $BB5_2 |
Daniel Sanders | 3d3ea53 | 2014-06-12 15:00:17 +0000 | [diff] [blame] | 171 | |
| 172 | ; 32-GPR: cmp.ult.d $[[FGRCC:f[0-9]+]], $f14, $f12 |
| 173 | ; 64-GPR: cmp.ult.d $[[FGRCC:f[0-9]+]], $f13, $f12 |
| 174 | ; GPR: mfc1 $[[GPRCC:[0-9]+]], $[[FGRCC:f[0-9]+]] |
| 175 | ; GPR-NOT: not $[[GPRCC]], $[[GPRCC]] |
Daniel Sanders | e8efff3 | 2016-03-14 16:24:05 +0000 | [diff] [blame] | 176 | ; 32-GPR: beqz $[[GPRCC]], $BB5_2 |
| 177 | ; 64-GPR: beqzc $[[GPRCC]], $BB5_2 |
Daniel Sanders | 3d3ea53 | 2014-06-12 15:00:17 +0000 | [diff] [blame] | 178 | |
Akira Hatanaka | a535270 | 2011-03-31 18:26:17 +0000 | [diff] [blame] | 179 | %cmp = fcmp ugt double %f2, %f3 |
| 180 | br i1 %cmp, label %if.else, label %if.then |
| 181 | |
| 182 | if.then: ; preds = %entry |
David Blaikie | 23af648 | 2015-04-16 23:24:18 +0000 | [diff] [blame] | 183 | tail call void (...) @g0() nounwind |
Akira Hatanaka | a535270 | 2011-03-31 18:26:17 +0000 | [diff] [blame] | 184 | br label %if.end |
| 185 | |
| 186 | if.else: ; preds = %entry |
David Blaikie | 23af648 | 2015-04-16 23:24:18 +0000 | [diff] [blame] | 187 | tail call void (...) @g1() nounwind |
Akira Hatanaka | a535270 | 2011-03-31 18:26:17 +0000 | [diff] [blame] | 188 | br label %if.end |
| 189 | |
| 190 | if.end: ; preds = %if.else, %if.then |
| 191 | ret void |
| 192 | } |