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