1 # RUN: llvm-mc %s -arch=mips -mcpu=mips64 -show-encoding | FileCheck %s -check-prefix=CHECK-64 2 # RUN: llvm-mc %s -arch=mips -mcpu=mips64r2 -show-encoding | FileCheck %s -check-prefix=CHECK-64R 3 # RUN: llvm-mc %s -arch=mips -mcpu=mips64r3 -show-encoding | FileCheck %s -check-prefix=CHECK-64R 4 # RUN: llvm-mc %s -arch=mips -mcpu=mips64r5 -show-encoding | FileCheck %s -check-prefix=CHECK-64R 5 # RUN: llvm-mc %s -arch=mips -mcpu=mips64r6 -show-encoding | FileCheck %s -check-prefix=CHECK-64R 6 7 .text 8 foo: 9 rol $4,$5 10 # CHECK-64: subu $1, $zero, $5 # encoding: [0x00,0x05,0x08,0x23] 11 # CHECK-64: srlv $1, $4, $1 # encoding: [0x00,0x24,0x08,0x06] 12 # CHECK-64: sllv $4, $4, $5 # encoding: [0x00,0xa4,0x20,0x04] 13 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 14 # CHECK-64R: subu $1, $zero, $5 # encoding: [0x00,0x05,0x08,0x23] 15 # CHECK-64R: rotrv $4, $4, $1 # encoding: [0x00,0x24,0x20,0x46] 16 rol $4,$5,$6 17 # CHECK-64: subu $1, $zero, $6 # encoding: [0x00,0x06,0x08,0x23] 18 # CHECK-64: srlv $1, $5, $1 # encoding: [0x00,0x25,0x08,0x06] 19 # CHECK-64: sllv $4, $5, $6 # encoding: [0x00,0xc5,0x20,0x04] 20 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 21 # CHECK-64R: negu $4, $6 # encoding: [0x00,0x06,0x20,0x23] 22 # CHECK-64R: rotrv $4, $5, $4 # encoding: [0x00,0x85,0x20,0x46] 23 rol $4,0 24 # CHECK-64: srl $4, $4, 0 # encoding: [0x00,0x04,0x20,0x02] 25 # CHECK-64R: rotr $4, $4, 0 # encoding: [0x00,0x24,0x20,0x02] 26 rol $4,$5,0 27 # CHECK-64: srl $4, $5, 0 # encoding: [0x00,0x05,0x20,0x02] 28 # CHECK-64R: rotr $4, $5, 0 # encoding: [0x00,0x25,0x20,0x02] 29 rol $4,1 30 # CHECK-64: sll $1, $4, 1 # encoding: [0x00,0x04,0x08,0x40] 31 # CHECK-64: srl $4, $4, 31 # encoding: [0x00,0x04,0x27,0xc2] 32 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 33 # CHECK-64R: rotr $4, $4, 31 # encoding: [0x00,0x24,0x27,0xc2] 34 rol $4,$5,1 35 # CHECK-64: sll $1, $5, 1 # encoding: [0x00,0x05,0x08,0x40] 36 # CHECK-64: srl $4, $5, 31 # encoding: [0x00,0x05,0x27,0xc2] 37 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 38 # CHECK-64R: rotr $4, $5, 31 # encoding: [0x00,0x25,0x27,0xc2] 39 rol $4,2 40 # CHECK-64: sll $1, $4, 2 # encoding: [0x00,0x04,0x08,0x80] 41 # CHECK-64: srl $4, $4, 30 # encoding: [0x00,0x04,0x27,0x82] 42 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 43 # CHECK-64R: rotr $4, $4, 30 # encoding: [0x00,0x24,0x27,0x82] 44 rol $4,$5,2 45 # CHECK-64: sll $1, $5, 2 # encoding: [0x00,0x05,0x08,0x80] 46 # CHECK-64: srl $4, $5, 30 # encoding: [0x00,0x05,0x27,0x82] 47 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 48 # CHECK-64R: rotr $4, $5, 30 # encoding: [0x00,0x25,0x27,0x82] 49 50 ror $4,$5 51 # CHECK-64: subu $1, $zero, $5 # encoding: [0x00,0x05,0x08,0x23] 52 # CHECK-64: sllv $1, $4, $1 # encoding: [0x00,0x24,0x08,0x04] 53 # CHECK-64: srlv $4, $4, $5 # encoding: [0x00,0xa4,0x20,0x06] 54 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 55 # CHECK-64R: rotrv $4, $4, $5 # encoding: [0x00,0xa4,0x20,0x46] 56 ror $4,$5,$6 57 # CHECK-64: subu $1, $zero, $6 # encoding: [0x00,0x06,0x08,0x23] 58 # CHECK-64: sllv $1, $5, $1 # encoding: [0x00,0x25,0x08,0x04] 59 # CHECK-64: srlv $4, $5, $6 # encoding: [0x00,0xc5,0x20,0x06] 60 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 61 # CHECK-64R: rotrv $4, $5, $6 # encoding: [0x00,0xc5,0x20,0x46] 62 ror $4,0 63 # CHECK-64: srl $4, $4, 0 # encoding: [0x00,0x04,0x20,0x02] 64 # CHECK-64R: rotr $4, $4, 0 # encoding: [0x00,0x24,0x20,0x02] 65 ror $4,$5,0 66 # CHECK-64: srl $4, $5, 0 # encoding: [0x00,0x05,0x20,0x02] 67 # CHECK-64R: rotr $4, $5, 0 # encoding: [0x00,0x25,0x20,0x02] 68 ror $4,1 69 # CHECK-64: srl $1, $4, 1 # encoding: [0x00,0x04,0x08,0x42] 70 # CHECK-64: sll $4, $4, 31 # encoding: [0x00,0x04,0x27,0xc0] 71 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 72 # CHECK-64R: rotr $4, $4, 1 # encoding: [0x00,0x24,0x20,0x42] 73 ror $4,$5,1 74 # CHECK-64: srl $1, $5, 1 # encoding: [0x00,0x05,0x08,0x42] 75 # CHECK-64: sll $4, $5, 31 # encoding: [0x00,0x05,0x27,0xc0] 76 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 77 # CHECK-64R: rotr $4, $5, 1 # encoding: [0x00,0x25,0x20,0x42] 78 ror $4,2 79 # CHECK-64: srl $1, $4, 2 # encoding: [0x00,0x04,0x08,0x82] 80 # CHECK-64: sll $4, $4, 30 # encoding: [0x00,0x04,0x27,0x80] 81 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 82 # CHECK-64R: rotr $4, $4, 2 # encoding: [0x00,0x24,0x20,0x82] 83 ror $4,$5,2 84 # CHECK-64: srl $1, $5, 2 # encoding: [0x00,0x05,0x08,0x82] 85 # CHECK-64: sll $4, $5, 30 # encoding: [0x00,0x05,0x27,0x80] 86 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 87 # CHECK-64R: rotr $4, $5, 2 # encoding: [0x00,0x25,0x20,0x82] 88 89 drol $4,$5 90 # CHECK-64: dsubu $1, $zero, $5 # encoding: [0x00,0x05,0x08,0x2f] 91 # CHECK-64: dsrlv $1, $4, $1 # encoding: [0x00,0x24,0x08,0x16] 92 # CHECK-64: dsllv $4, $4, $5 # encoding: [0x00,0xa4,0x20,0x14] 93 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 94 # CHECK-64R: dsubu $1, $zero, $5 # encoding: [0x00,0x05,0x08,0x2f] 95 # CHECK-64R: drotrv $4, $4, $1 # encoding: [0x00,0x24,0x20,0x56] 96 drol $4,$5,$6 97 # CHECK-64: dsubu $1, $zero, $6 # encoding: [0x00,0x06,0x08,0x2f] 98 # CHECK-64: dsrlv $1, $5, $1 # encoding: [0x00,0x25,0x08,0x16] 99 # CHECK-64: dsllv $4, $5, $6 # encoding: [0x00,0xc5,0x20,0x14] 100 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 101 # CHECK-64R: dsubu $4, $zero, $6 # encoding: [0x00,0x06,0x20,0x2f] 102 # CHECK-64R: drotrv $4, $5, $4 # encoding: [0x00,0x85,0x20,0x56] 103 104 drol $4,1 105 # CHECK-64: dsll $1, $4, 1 # encoding: [0x00,0x04,0x08,0x78] 106 # CHECK-64: dsrl32 $4, $4, 31 # encoding: [0x00,0x04,0x27,0xfe] 107 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 108 # CHECK-64R: drotr32 $4, $4, 31 # encoding: [0x00,0x24,0x27,0xfe] 109 drol $4,$5,0 110 # CHECK-64: dsrl $4, $5, 0 # encoding: [0x00,0x05,0x20,0x3a] 111 # CHECK-64R: drotr $4, $5, 0 # encoding: [0x00,0x25,0x20,0x3a] 112 drol $4,$5,1 113 # CHECK-64: dsll $1, $5, 1 # encoding: [0x00,0x05,0x08,0x78] 114 # CHECK-64: dsrl32 $4, $5, 31 # encoding: [0x00,0x05,0x27,0xfe] 115 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 116 # CHECK-64R: drotr32 $4, $5, 31 # encoding: [0x00,0x25,0x27,0xfe] 117 drol $4,$5,31 118 # CHECK-64: dsll $1, $5, 31 # encoding: [0x00,0x05,0x0f,0xf8] 119 # CHECK-64: dsrl32 $4, $5, 1 # encoding: [0x00,0x05,0x20,0x7e] 120 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 121 # CHECK-64R: drotr32 $4, $5, 1 # encoding: [0x00,0x25,0x20,0x7e] 122 drol $4,$5,32 123 # CHECK-64: dsll32 $1, $5, 0 # encoding: [0x00,0x05,0x08,0x3c] 124 # CHECK-64: dsrl32 $4, $5, 0 # encoding: [0x00,0x05,0x20,0x3e] 125 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 126 # CHECK-64R: drotr32 $4, $5, 0 # encoding: [0x00,0x25,0x20,0x3e] 127 drol $4,$5,33 128 # CHECK-64: dsll32 $1, $5, 1 # encoding: [0x00,0x05,0x08,0x7c] 129 # CHECK-64: dsrl $4, $5, 31 # encoding: [0x00,0x05,0x27,0xfa] 130 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 131 # CHECK-64R: drotr $4, $5, 31 # encoding: [0x00,0x25,0x27,0xfa] 132 drol $4,$5,63 133 # CHECK-64: dsll32 $1, $5, 31 # encoding: [0x00,0x05,0x0f,0xfc] 134 # CHECK-64: dsrl $4, $5, 1 # encoding: [0x00,0x05,0x20,0x7a] 135 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 136 # CHECK-64R: drotr $4, $5, 1 # encoding: [0x00,0x25,0x20,0x7a] 137 drol $4,$5,64 138 # CHECK-64: dsrl $4, $5, 0 # encoding: [0x00,0x05,0x20,0x3a] 139 # CHECK-64R: drotr $4, $5, 0 # encoding: [0x00,0x25,0x20,0x3a] 140 drol $4,$5,65 141 # CHECK-64: dsll $1, $5, 1 # encoding: [0x00,0x05,0x08,0x78] 142 # CHECK-64: dsrl32 $4, $5, 31 # encoding: [0x00,0x05,0x27,0xfe] 143 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 144 # CHECK-64R: drotr32 $4, $5, 31 # encoding: [0x00,0x25,0x27,0xfe] 145 drol $4,$5,95 146 # CHECK-64: dsll $1, $5, 31 # encoding: [0x00,0x05,0x0f,0xf8] 147 # CHECK-64: dsrl32 $4, $5, 1 # encoding: [0x00,0x05,0x20,0x7e] 148 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 149 # CHECK-64R: drotr32 $4, $5, 1 # encoding: [0x00,0x25,0x20,0x7e] 150 drol $4,$5,96 151 # CHECK-64: dsll32 $1, $5, 0 # encoding: [0x00,0x05,0x08,0x3c] 152 # CHECK-64: dsrl32 $4, $5, 0 # encoding: [0x00,0x05,0x20,0x3e] 153 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 154 # CHECK-64R: drotr32 $4, $5, 0 # encoding: [0x00,0x25,0x20,0x3e] 155 drol $4,$5,97 156 # CHECK-64: dsll32 $1, $5, 1 # encoding: [0x00,0x05,0x08,0x7c] 157 # CHECK-64: dsrl $4, $5, 31 # encoding: [0x00,0x05,0x27,0xfa] 158 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 159 # CHECK-64R: drotr $4, $5, 31 # encoding: [0x00,0x25,0x27,0xfa] 160 drol $4,$5,127 161 # CHECK-64: dsll32 $1, $5, 31 # encoding: [0x00,0x05,0x0f,0xfc] 162 # CHECK-64: dsrl $4, $5, 1 # encoding: [0x00,0x05,0x20,0x7a] 163 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 164 # CHECK-64R: drotr $4, $5, 1 # encoding: [0x00,0x25,0x20,0x7a] 165 166 dror $4,$5 167 # CHECK-64: dsubu $1, $zero, $5 # encoding: [0x00,0x05,0x08,0x2f] 168 # CHECK-64: dsllv $1, $4, $1 # encoding: [0x00,0x24,0x08,0x14] 169 # CHECK-64: dsrlv $4, $4, $5 # encoding: [0x00,0xa4,0x20,0x16] 170 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 171 # CHECK-64R: drotrv $4, $4, $5 # encoding: [0x00,0xa4,0x20,0x56] 172 dror $4,$5,$6 173 # CHECK-64: dsubu $1, $zero, $6 # encoding: [0x00,0x06,0x08,0x2f] 174 # CHECK-64: dsllv $1, $5, $1 # encoding: [0x00,0x25,0x08,0x14] 175 # CHECK-64: dsrlv $4, $5, $6 # encoding: [0x00,0xc5,0x20,0x16] 176 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 177 # CHECK-64R: drotrv $4, $5, $6 # encoding: [0x00,0xc5,0x20,0x56] 178 dror $4,1 179 # CHECK-64: dsrl $1, $4, 1 # encoding: [0x00,0x04,0x08,0x7a] 180 # CHECK-64: dsll32 $4, $4, 31 # encoding: [0x00,0x04,0x27,0xfc] 181 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 182 # CHECK-64R: drotr $4, $4, 1 # encoding: [0x00,0x24,0x20,0x7a] 183 dror $4,$5,0 184 # CHECK-64: dsrl $4, $5, 0 # encoding: [0x00,0x05,0x20,0x3a] 185 # CHECK-64R: drotr $4, $5, 0 # encoding: [0x00,0x25,0x20,0x3a] 186 dror $4,$5,1 187 # CHECK-64: dsrl $1, $5, 1 # encoding: [0x00,0x05,0x08,0x7a] 188 # CHECK-64: dsll32 $4, $5, 31 # encoding: [0x00,0x05,0x27,0xfc] 189 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 190 # CHECK-64R: drotr $4, $5, 1 # encoding: [0x00,0x25,0x20,0x7a] 191 dror $4,$5,31 192 # CHECK-64: dsrl $1, $5, 31 # encoding: [0x00,0x05,0x0f,0xfa] 193 # CHECK-64: dsll32 $4, $5, 1 # encoding: [0x00,0x05,0x20,0x7c] 194 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 195 # CHECK-64R: drotr $4, $5, 31 # encoding: [0x00,0x25,0x27,0xfa] 196 dror $4,$5,32 197 # CHECK-64: dsrl32 $1, $5, 0 # encoding: [0x00,0x05,0x08,0x3e] 198 # CHECK-64: dsll32 $4, $5, 0 # encoding: [0x00,0x05,0x20,0x3c] 199 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 200 # CHECK-64R: drotr32 $4, $5, 0 # encoding: [0x00,0x25,0x20,0x3e] 201 dror $4,$5,33 202 # CHECK-64: dsrl32 $1, $5, 1 # encoding: [0x00,0x05,0x08,0x7e] 203 # CHECK-64: dsll $4, $5, 31 # encoding: [0x00,0x05,0x27,0xf8] 204 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 205 # CHECK-64R: drotr32 $4, $5, 1 # encoding: [0x00,0x25,0x20,0x7e] 206 dror $4,$5,63 207 # CHECK-64: dsrl32 $1, $5, 31 # encoding: [0x00,0x05,0x0f,0xfe] 208 # CHECK-64: dsll $4, $5, 1 # encoding: [0x00,0x05,0x20,0x78] 209 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 210 # CHECK-64R: drotr32 $4, $5, 31 # encoding: [0x00,0x25,0x27,0xfe] 211 dror $4,$5,64 212 # CHECK-64: dsrl $4, $5, 0 # encoding: [0x00,0x05,0x20,0x3a] 213 # CHECK-64R: drotr $4, $5, 0 # encoding: [0x00,0x25,0x20,0x3a] 214 dror $4,$5,65 215 # CHECK-64: dsrl $1, $5, 1 # encoding: [0x00,0x05,0x08,0x7a] 216 # CHECK-64: dsll32 $4, $5, 31 # encoding: [0x00,0x05,0x27,0xfc] 217 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 218 # CHECK-64R: drotr $4, $5, 1 # encoding: [0x00,0x25,0x20,0x7a] 219 dror $4,$5,95 220 # CHECK-64: dsrl $1, $5, 31 # encoding: [0x00,0x05,0x0f,0xfa] 221 # CHECK-64: dsll32 $4, $5, 1 # encoding: [0x00,0x05,0x20,0x7c] 222 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 223 # CHECK-64R: drotr $4, $5, 31 # encoding: [0x00,0x25,0x27,0xfa] 224 dror $4,$5,96 225 # CHECK-64: dsrl32 $1, $5, 0 # encoding: [0x00,0x05,0x08,0x3e] 226 # CHECK-64: dsll32 $4, $5, 0 # encoding: [0x00,0x05,0x20,0x3c] 227 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 228 # CHECK-64R: drotr32 $4, $5, 0 # encoding: [0x00,0x25,0x20,0x3e] 229 dror $4,$5,97 230 # CHECK-64: dsrl32 $1, $5, 1 # encoding: [0x00,0x05,0x08,0x7e] 231 # CHECK-64: dsll $4, $5, 31 # encoding: [0x00,0x05,0x27,0xf8] 232 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 233 # CHECK-64R: drotr32 $4, $5, 1 # encoding: [0x00,0x25,0x20,0x7e] 234 dror $4,$5,127 235 # CHECK-64: dsrl32 $1, $5, 31 # encoding: [0x00,0x05,0x0f,0xfe] 236 # CHECK-64: dsll $4, $5, 1 # encoding: [0x00,0x05,0x20,0x78] 237 # CHECK-64: or $4, $4, $1 # encoding: [0x00,0x81,0x20,0x25] 238 # CHECK-64R: drotr32 $4, $5, 31 # encoding: [0x00,0x25,0x27,0xfe] 239